Orbeon builder collapses sections after a certain number of input fields - builder

I'm having difficulties with Orbeon builder. Maybe it's a bug, but anyway... When I create a large form, after a certain number of input fields/rows Orbeon builder automatically collapses all sections except the first one. This is visible only when I reenter the form and from then on. To better illustrate this behavior
see the attached video
The form itself on frontend isn't collapsed and looks as it is intended. The same goes for the "Test" view. Just to mention that it doesn't matter how I set the "Collapsible" option for each section, they always get collapsed. It's very important to us to have the look/behavior in the Orbeon builder match the one on the frontend and test view. Thank you in advance for your reply.

As very large forms were making Form Builder slower, we collapse sections past a certain numbers of controls. You can configure this with this property:
<property
as="xs:integer"
name="oxf.fb.section.close"
value="100"/>
You can try increasing that value to a larger number.
However, this should not impact the Test view. If the Test view is impacted, it is a bug.

Related

Cypress - Clicking overlapping elements

I'm migrating all module tests of a React Redux Web Application from WebDriverIo to Cypress and found this weird scenario.
I have a table with a series of elements. Clicking on one of them opens a window on the side showing more detailed data. The test I am trying to migrate is one that checks that the window with detailed data remains visible and without altering its data despite any changes I make to the table's search filters. Even if that means discarding the item whose detailed data is currently visible.
Problem? The detail view covers the filters and Cypress doesn't seem to like this and gives me trouble detecting the selectors. For example, imagine this is my table and the black square is the place the detail view will take. (The photo was taken from Internet).
I did several tests with those filters so I know the way I'm doing to access the selectors is the correct one. But, as it keeps behind Cypress is having trouble finding them.
I tried to access filters after closing the detail view and, of course, it worked. Also tried adding the param {force:true} in the .click() action but it also failed.
Somebody has ever faced a similar scenario? Thanks in advance

BIRT: Fit to whole page in report design?

I have a report and want to fix it to 1 page (A4) regardless of the number of rows in the table. Usually it's 10 rows but can be more in some cases.
Anyway I need to use BIRT in a fixed context (3rd party application), eg. no option to adjust the BIRT viewer or url params. Therefore how can I add this option to my report design so that it is applied automatically?
I don't think it is possible to force a render option from the report-design. If it was it would probably achieved by using this code fragment from "beforeRender" script of the report:
importPackage(Packages.org.eclipse.birt.report.engine.api);
reportContext.getRenderOption().setOption(IPDFRenderOption.PAGE_OVERFLOW,IPDFRenderOption.FIT_TO_PAGE_SIZE);
I tried it, it appears at this stage the BIRT task has already applied render options and therefore this new value is ignored.
If you have access to the source code of this third party app it is quite easy to add a "Fit to" PDF render option.
Otherwise you will have to change the report-design and make it a little bit more dynamic: there are many design tips allowing to fit a report in a single page, one of them is to change the height of some items by script depending on the number of rows of the table.

Dynamic Text Control begins on new page when total data for the control exceeds an entire page

BIRT 3.71v20110905
One of my data fields is a CLOB with html tags. I'm using the Dynamic Text Control in my report. This specifically happens when:
The Dynamic Text Control content type is to HTML or Automatic
in my case since I have html tags in the data. (Problem does not occur if I set the content type to Plain, but then the HTML tags show up in the report output as text.)
and
The total amount of data to be displayed by the control is more than one full page on its own
(without taking into account spacing used by other controls). If the
total amount of data to be displayed by the control is less than one
full page but can't all fit on the current page, it works as expected (meaning it displays what it
can on the current page and wraps the rest correctly onto the next
page.)
Is this a bug in the calculation for the DTC pagination?
Additional notes - I encountered this while trying to use a sample report that inserts a page break as needed between groups for duplex printing. It works great under most circumstances, but not when this DTC pagination issue rears up. ( GroupAlwaysStartsOnOddPage.rptdesign )
Sorry to disappoint, but this is a known issue and has not yet been resolved. At least not in the version of BIRT that Maximo is using.
What I tend to do is break the dynamic text where possible, experiment until I get the largest possible part on one page and put the rest into another dynamic text field.
This is obviously only a work around, but as far as I know there is not much else that you can do.
We ran into this problem with a dynamic text field containing HTML content coming from IBM Maximo long description fields. The report was designed in BIRT 3.7.1 Designer.
We were able to work around the duplication bug by changing the layout from Fixed to Auto. With Auto layout, it is also not necessary to change the Display setting of the field to "inline" (which we previously had to do to allow it to flow between pages without creating an initial page break).
In our case, changing the layout to Auto did not have negative effects on the appearance or geometry of our report.

AngularJS performance with many custom directives

For this specific project, my team and I are thinking of leveraging the power of AngularJS directives and use them to build custom elements specific to our project, and use them like they were real HTML components.
For instance...
Say we have this table where each row is composed with a bunch of information that we get from a request, each row will be repeated with ng-repeat. Inside each row we will have multiple custom buttons with the same custom behavior. This button will also be used across different modules/pages on the website and not only on this specific table.
Our first thought was to use 2 directives, one for the table row and one for the button. The idea is that these are custom components/elements with custom attributes to define the custom behavior of the element. This would allow us to have a really nice modular application where each component is developed and unit-tested individually. Our HTML would also be easy to ready and understand.
Does this sound good?
Now, what about performance issues? Could we encounter big issues with this approach if, say we have a table with 100 of those rows and 5 of those buttons per row. Could this be big a problem if those rows/buttons had a couple of bindings to update information each X seconds?
The father of Angular Misko Hevery has this to say about performance and data-binding:
How does data binding work in AngularJS?
But in short like he says as long as you dont have more than 2000 data-bound items per page performance wont be an issue...

People Picker for MVC3

I am looking for People Picker Control similar to SharePoint one for MVC3 applications.
Can you please suggest if there are any such controls available?
What is the best approach to pick the people from AD in MVC3?
Requirement: On one of the Views, I need to select a user from AD.
I was thinking about People Picker kind of control.
Thanks
Arun
I know this is quite old so I doubt you still need this answered but perhaps it will be useful to someone else.
Just last week I had to build a control like does this for us. It's basically two main parts, a JSON service that accepts partial text and returns a list of suggestions and the HTML/CSS/jQuery+UI control.
The service is pretty straightforward so we'll skip over that here.
I'm in the process of doing a write-up on the web side but basically we wrapped the jQuery autocomplete with some custom CSS to make an input that is similar to the address line in GMail. This was done by styling a container div to look like a long input field. The actual input field is within that container and styled to be essentially invisible. Clicking in the container moves focus to the input box. Upon selecting a suggested name, I create a new container to insert before the 'cloaked' autocomplete input which contains the user name and a hidden input with our desired value to send along when the form is submitted. I had to do some other overloads on the autocomplete to get it to act consistently but essentially this is all there was to it.
The control looks at the container for a data-input-name attribute to figure out what 'name' to set the hidden inputs to when they are created with each user pick. When the form is submitted the default model binder rolls all the users of a particular picker (since you can have multiple on a page) into string arrays of the values - assuming your model has string array properties with the same name as used by the input controls - which we can then process on the server side.
By far the hardest part was figuring out the right HTML + CSS to get the look and feel right. I'm not a very strong UI person so this took me forever and still falls down in Chrome which seems to add an accent around input boxes even with (or because of?) styles which make it blend into the parent control.
For our purposes it's been working great over the last week.
UPDATE: It's now on GitHub with a Demo.

Resources