Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Oct 30 21:49
    Flowman74 starred qooxdoo/qooxdoo
  • Oct 30 07:50
    CanadianHusky closed #10057
  • Oct 30 07:50
    CanadianHusky commented #10057
  • Oct 29 20:19
    cboulanger commented #10057
  • Oct 29 14:55
    CanadianHusky opened #10057
  • Oct 26 20:30
    level420 commented #10056
  • Oct 26 20:30

    level420 on master

    Fix a typo in readme (#10056) … (compare)

  • Oct 26 20:30
    level420 closed #10056
  • Oct 25 22:22
    bonzai review_requested #10056
  • Oct 25 22:22
    bonzai review_requested #10056
  • Oct 25 22:22
    bonzai review_requested #10056
  • Oct 25 22:22
    bonzai review_requested #10056
  • Oct 25 22:22
    bonzai review_requested #10056
  • Oct 25 22:22
    bonzai review_requested #10056
  • Oct 25 22:22
    bonzai review_requested #10056
  • Oct 25 22:22
    bonzai opened #10056
  • Oct 25 22:19
  • Oct 22 18:17

    lucapivato on lucapivato-patch-1

    Allow native InputTypes By add… (compare)

  • Oct 22 08:32

    hkollmann on master

    qx.ui.form.DateField: focus the… (compare)

  • Oct 22 08:32
    hkollmann closed #10055
Derrell Lipman
@derrell
@david.sauvage_gitlab There is no (standardized) way to style native scrollbars, so you need to make sure that qooxdoo is using its own scrollbar implementation rather than native ones. In the playground, native ones are being used, it appears. The choice of whether to use native or own-implementation scrollbars is determined by the qooxdoo environment variable qx.nativeScrollBars which from my search of the source, should be false by default. Maybe the playground intentionally sets it to true. Regardless, you can override that as shown in this example where I create my own list class, and override the _createScrollBar method. You'll still have to play with theming to get the button arrows to the right place, but this gives you the idea. https://tinyurl.com/yy4sg3g4
tobscada
@tobscada
Thanks for your reply @derrell. Could you please suggest me some small example job link about HTTP req/res by Qooxdoo 6 via mini web server that run with "qx serve" CLI? Thanks in advance.
Derrell Lipman
@derrell
Ah. The webserver that is run by qx serve is not a general-purpose webserver for production use. Rather, it is for the developer to use while developing a qooxdoo application, to avoid having to upload code to an external web server. Maybe if you describe what your goals are, I or others can offer suggestions.
@tobscada ^^^
@johnspackman Is there any expectation of the qx serve server being used more broadly than for this purpose? I don't think so, right?
Christian Boulanger
@cboulanger
@derrell As you say, ATM, qx serve is not meant to serve "real applications". I don't think that should be a goal, since it would be difficult to create an API that is "general purpose" enough to fit every use case. What seems reasonable is to make it more featureful for development.
Henner Kollmann
@hkollmann
qx serve has the beforeStart and afterStart events to extend it for development purpose in your compile.js. I use this to start an express server.
Sam McGraw
@cayusedev_gitlab
Not sure if this is right forum -- is there documentation / anyone using qooxdoo for MS 360 development or Windows desktop developmentf?
nxproject
@nxproject

Is there an example of file upload? The documentation for qx.io.remote.Request has fileUpload, but it is a boolean without any reference to how to setup the other properties.

Looking at the documentation PDF, the language reads:

fileUpload: Indicate that the request will be used for a file upload. The request will be used for a file
upload. This switches the concrete implementation that is used for sending the request from qx.io.remote.
transport.XmlHttp to qx.io.remote.IFrameTransport, because only the latter can handle file
uploads.

The first and second sentences are repetitive and the rest is the sausage making details, which is fine as a heads up, but of little use otherwise.

As part of this, how do you include one or more files when submitting a form? Is there a qx.ui.form widget or should I be looking elsewhere?

nxproject
@nxproject
@cayusedev_gitlab - Look at https://qooxdoo.readthedocs.io/en/latest/pages/desktop/develop_how_to.html. Keep in mind that you are not creating a MS Windows executable. Personally, my needs do not allow to create MS Windows app, so I am not using or even tested this desktop mode.
Derrell Lipman
@derrell
@nxproject I recommend @johnspackman's UploadMgr (https://github.com/johnspackman/UploadMgr) for the client side. On the server side of that, I've used the node package multer in the past. John has an example on that site. I've never used his server that I'm sure the demo uses.
rommni
@rommni

Hi all 2 questions about qooxdoo table.

  • Is there an easy way to center (horizontally) the content of the header cells of the table (I currently found a way, however i override the headerCellRenderer for that an i was lookin for a faster way)
  • Is there a dataCellRenderer or an option which allow to use multiple line string, I tested with the StringRenderer and the DefaultRenderer, each time my string is transformed to be on a single line.

Thank you in advance ;)

nxproject
@nxproject

@derrell @oetiker - Thank you both. Q: Does anybody keep track of third party code like this upload button? So far I have found qooxdoo to be a great piece of work with the one exception (and it is not limited to qooxdoo) of documentation, especially examples.

In the couple of months of working with qooxdoo, I have been able to replicate much of the core of the work I had done with ExtJS and in many areas, far surpassed it, to the point where it is not a rewrite but an entirely new product. However, things like theming, where I wanted simple changes, became a challenge. What I had to actually do was simple, but since I did not know where to look for the entries that I needed to override and the meaning of each entry, it took a bit of searching. This is but one example.

And to end in a positive note, and admitting that the project is running internally, everything loads extremely fast, at least four times faster than ExtJS, making the system available in 2.01 seconds versus 9.86. And that is with the ExtJS code minified and the qooxdoo code not. I expect that the final load time will be close to one second. I also can tell that the time to render new window objects is much faster, however, I do not have true equivalents to compare.

And thanks to all that have helped on the way.

Derrell Lipman
@derrell
@nxproject There used to be a repository of "contributions" but it was difficult to keep up to date, and therefore it didn't stay up to date, and therefore wasn't of much use. With 6.0, there is a new repository, npm-based. @cboulanger is probably the best person to give you details on it.
Christian Boulanger
@cboulanger
@nxproject @derrell It's called the qooxdoo package system https://qooxdoo.org/documentation/#/development/cli/packages and we have a special viewer for it http://qooxdoo.org/qxl.packagebrowser
(@derrell no NPM involved :smile: - it's all GitHub-based)
Christian Boulanger
@cboulanger
@nxproject Great to hear about your positive experiences with Qooxdoo - thanks for sharing them ! Consider showcasing your app in our portfolio (https://qooxdoo.org/portfolio.html) - here's how: https://github.com/qooxdoo/website#adding-to-the-portfolio
Derrell Lipman
@derrell

(@derrell no NPM involved :smile: - it's all GitHub-based)

@cboulanger Doh! I know that. Thanks for the gentle correction.

csfahey
@csfahey
@rommni This is related to his question on qooxdoo tables. How can I data bind to a nested element. For instance, if my row contains this data:
Sorry, this data: [ { a: { aa: 1, ab: 2 }, b: { ba: 1, bb: 2 }}, ... ] how can I specify the data binding for the elements at the column/cell level in a setColumns call to a SimpleTableModel?
Wouldn't it be something like "a.aa", "b.ba"? But this doesn't work. I don't get an error but nothing seems bound either.
Henner Kollmann
@hkollmann
@csfahey Sorry data binding do not work for tables. The tables are much older then data binding.
csfahey
@csfahey
@hkollmann Perhaps a more specific example:
    this._tableModel = new qx.ui.table.model.Simple( );
    // table model
    this._tableModel.setColumns
    (
            [ this.tr("Created"), this.tr("Subject"),  this.tr("Address"), this.tr("Sent"), this.tr("Bounced"),  this.tr("Unsubscribe") ],
            [ "delivery.created", "delivery.subject", "deliveryPart.sentTo", "deliveryPart.dateSent", "deliveryPart.bounced", "deliveryPart.unsubscribed" ]
    );
        var table = new qx.ui.table.Table( this._tableModel );this._tableModel.setDataAsMapArray( data, true );
this._tableModel.setDataAsMapArray( data, true );
Pat Buxton
@rad-pat
@csfahey , your map data would then be [{"delivery.created": "CreatedRow1", "delivery.subject": "SubjectRow1", "deliveryPart.sentTo": "AddressRow1" ....}, {"delivery.created": "CreatedRow2", "delivery.subject": "SubjectRow2", "deliveryPart.sentTo": "AddressRow2" ....}....] ?
Pat Buxton
@rad-pat
Christian Boulanger
@cboulanger
@csfahey What you could do for small tables is to create a data model that you bind other values to, and update the data to the table on a value change. The model must have event bubbling turned on. The bubbled change event then contains information on what has changed, this could be used to change the table data in the event handler. See the details here: https://qooxdoo.org/documentation/#/core/data_binding/data_binding?id=bubbling-events
This probably doesn't scale well. It will be very slow for very large data sets which need to be marshalled into qx objects. But I have never tried it, so I'd be curious what you find out if you want to try this.
It would be a great contribution, btw - to have databinding support for the table via a model-to-table transformer, i.e. a TableController class-
csfahey
@csfahey
@cboulanger @rad-pat thanks guys. That is what i thought so I am not sure why it isn't working for me. You used my code as the example after all.
csfahey
@csfahey
@cboulanger @rad-pat Oh wait. I see the difference now. You guys flattened the structure. I guess it is not possible to work off this structure then:
[
{
"delivery": { "created" : "today", "subject", "my problem" },
"deliveryPart" : { "sentTo" : "my email address", "bounced" : "yes" }
}
]
Pat Buxton
@rad-pat
@csfahey, you can just create a map to how you want the data for the table: https://tinyurl.com/y279fv44
Derrell Lipman
@derrell
But beware, @csfahey , that the mapping that @rad-pat proposes could be a slow operation if you have many items in your table.
csfahey
@csfahey
@derrell @rad-pat Yes, I see that. Thanks. I will just flatten the structure at the server.
Adrian Haarbach
@adrelino
How can I get the qxl.demobrowser compiled and published on my own fork of qooxdoo to provide a demo for a pull request?
Pat Buxton
@rad-pat
I think you just need to amend the "libraries" entry in the compile.json to point to your qooxdoo fork
Sorry, add a libraries entry, it doesn't exist already
Here's my libraries entry in compile.json from my own qxl.demobrowser clone:
    }],
  "libraries": [
    "../qooxdoo-pat/framework",
    "."
  ],
Pat Buxton
@rad-pat
Alternatively, you could the library path via qx config set qx.library "/path/to/my/qooxdoo/framework"
Pat Buxton
@rad-pat
Does anybody have any idea why the cell focus box would be drawn vertically offset in a zoomed-in Firefox? It seems ok in Chrome. Zoom in browser on this example and mouseover the rows in the lower half of the table to see the effect. https://tinyurl.com/y3k2pder
Derrell Lipman
@derrell
@rad-pat I'd guess it has to do with this code in qx.ui.table.pane.FocusIndicator.js:
```
          var decoKey = this.getDecorator();
          if (decoKey) {
            var deco=qx.theme.manager.Decoration.getInstance().resolve(decoKey);
            if (deco) {
              wt = deco.getWidthTop();
              wr = deco.getWidthRight();
              wb = deco.getWidthBottom();
              wl = deco.getWidthLeft();
            }
          }
          this.setUserBounds(
              paneModel.getColumnLeft(col) - (wt - 1) ,
              (row - firstRow) * rowHeight - (wr - 1),
              columnModel.getColumnWidth(col) + (wt+wb-3),
              rowHeight + (wl+wr-2)
          );
It looks like it uses fixed values from the theme rather than looking at current values as rendered.
(I've seen a number of things in the past, that don't look right when zooming, in various browsers.)
And it uses rowHeight = table.getRowHeight() which may not be correct when zoomed
Pat Buxton
@rad-pat
@derrell, thanks for the pointer, I'll see if I can figure it out because I have a similar issue where calculating the row from pointermove is out similarly in Firefox (which was my initial concern). Perhaps that is also that the getRowHeight() may not be correct on zoom.
Pat Buxton
@rad-pat
image.png
It seems that it's down to firefox displaying the 1px bottom-border at a different size.