Hii all,

I am developing a reactive web application on Outsystems 11. Actually I am transitioning from traditional web development to reactive web development. In traditional web application, we have an option of enable property in form widget to make the form editable or non editable. But in reactive web application, there is no option for enable property. To make the form non editable, we have to change the enabled property of every widget present in the form. Isn't it better to provide a enabled property to form to make it editable or not at once.  isn't it more efficient? 

Hi Divjanshu,

That is actually a good question. I dropped the question at OutSystems, and ask if there is any reason why for Reactive Web the form widget does not have an enabled property.

When I get feedback, I will share it with you.

Regards,

Daniel

Good question Divyanshu, I have been wondering about this one myself. 

Regards,

Nordin

Divyanshu Pathak wrote:

Hii all,

I am developing a reactive web application on Outsystems 11. Actually I am transitioning from traditional web development to reactive web development. In traditional web application, we have an option of enable property in form widget to make the form editable or non editable. But in reactive web application, there is no option for enable property. To make the form non editable, we have to change the enabled property of every widget present in the form. Isn't it better to provide a enabled property to form to make it editable or not at once.  isn't it more efficient? 

I know isn't the best approach and maybe OS could add the enable property for us, but to bypass this situation you can create a class that disable the elements in the for and add this class programmatically when needed


Good question. Following for Daniel's response.  

Hi,

There are several features that exist either in Web Traditional or Mobile and then you will not find them in Reactive. Even in the same component.

Another example is the aggregates, which in the traditional web they only get from the server side, from the database, only the attributes they need, and when they hide an attribute it doesn't come, in react, it doesn't work like that .. and if you see the query that it manages you can prove it. Regardless of the parameters that it hides, or if it needs 2 or all parameters, the query is always made to everyone, and all the attributes of the tables behind.

Does it make sense to have this attribute ?! Of course it makes sense. It makes sense to have both options, or to place a non-editable form immediately, or go widget to widget to manage it.

Cheers

Hi all,


I think the reason why things are different between traditional and reactive might be as simple as different teams working on different parts of Outsystems, and for each of the application types, the options and parameters available at the lowcode widget level, are to some extend dictated by what is available at the implementation level in the technology being used.  

So I can imagine that for traditional forms, which are implemented as html forms, they made use of the option of being able to enable/disable a complete fieldset, as this is available in HTML.  Maybe in Reactive this isn't available or standard or immediately obvious to do, and so if teams don't actively work towards a unified developer experience for the lowcode developer, this will lead to this kind of differences.


That being said, you could make this yourself, by adding a local boolean FormIsEnabled, and then use this as the enabled property of the form widgets.  (or something more sophisticated, maybe some widgets enablement will depend on more than a single switch, in that case you will get more something like following, where  all enabled conditions end with "and FormIsEnabled"


Employee.ManagerId = GetUserId()
and FormIsEnabled



Dorine

Solution

The response from OutSystems, is:

Although we promoted disabled forms in traditional, they are not a so common pattern (if you want only to show data, a form is not the best way to do it). Of course as a workaround you can set the Enabled property of all widgets (you can ctrl-click several and change the property only once)

As a workaround that avoids to set the enabled/disabled state of inputs individually I suggest the following solution:

  1. Add an HTML element, and set the tag to fieldset.
  2. Move all related inputs that you want to disable/enable insidte the fieldset tag
  3. set an attribute disabled and set the value to "disabled" (or and expression that set is to disabled or empty string).

Regards,

Daniel



Solution

If you want to quickly generate a details screen with display-only data you can also use the excalerator by dropping a GetEntityById aggregate to your screen":

Thank you Daniel. This was helpful.

Thanks Daniël.

I also read about the fieldset workaround here, but thank you for clearing up that it was a design choice by OutSystems.

Regards,

Nordin

Daniël Kuhlmann wrote:

The response from OutSystems, is:

Although we promoted disabled forms in traditional, they are not a so common pattern (if you want only to show data, a form is not the best way to do it). Of course as a workaround you can set the Enabled property of all widgets (you can ctrl-click several and change the property only once)

As a workaround that avoids to set the enabled/disabled state of inputs individually I suggest the following solution:

  1. Add an HTML element, and set the tag to fieldset.
  2. Move all related inputs that you want to disable/enable insidte the fieldset tag
  3. set an attribute disabled and set the value to "disabled" (or and expression that set is to disabled or empty string).

Regards,

Daniel




Thanks for the response Daniel. This was helpful.


Regards,

Divyanshu

Daniël Kuhlmann wrote:

The response from OutSystems, is:

Although we promoted disabled forms in traditional, they are not a so common pattern (if you want only to show data, a form is not the best way to do it). Of course as a workaround you can set the Enabled property of all widgets (you can ctrl-click several and change the property only once)

As a workaround that avoids to set the enabled/disabled state of inputs individually I suggest the following solution:

  1. Add an HTML element, and set the tag to fieldset.
  2. Move all related inputs that you want to disable/enable insidte the fieldset tag
  3. set an attribute disabled and set the value to "disabled" (or and expression that set is to disabled or empty string).

Regards,

Daniel



Thanks for this informations Daniel


Divyanshu Pathak wrote:

Hii all,

I am developing a reactive web application on Outsystems 11. Actually I am transitioning from traditional web development to reactive web development. In traditional web application, we have an option of enable property in form widget to make the form editable or non editable. But in reactive web application, there is no option for enable property. To make the form non editable, we have to change the enabled property of every widget present in the form. Isn't it better to provide a enabled property to form to make it editable or not at once.  isn't it more efficient? 

Hi Divyanshu,

Good question . I have been wondering about same thing.


Regards,

Rajat


Hi Divyanshu,


Good question. Even I also observed the same and was thinking about it. There are lots of things that are different between Traditional and Reactive web app development.

Being a Dot Net developer formerly and with the reference of training course 'Outsystems Platform for .Net developer' I could resemble the similarities between Reactive Web app and .Net application. I think Traditional web forms, which are literally implemented as HTML forms, they made use of the option of being able to enable/disable the Form widget exactly like FIELDSET in HTML, as this is available in HTML. But in the case of Reactive, It is more similar to .Net Programming and in .Net(Asp.net) web forms, we don't have Form's property to enable or disable it. I believe Reactive Web apps are getting converted into .Net code post compilation so they might want it to make it same as .Net compiled code. So it is basically a design approach.


The reason behind not providing enable/disable option in form in .Net or Reactive is simply may be it is not making much sense as you can bind the complete screen with the role and restrict the unauthorized access to it(instead of just disabling the Form in case of Traditional Web form). Which is a good practise. You can always enable/disable any widget in the form.

If you still want to disable all the widgets inside the form, you may use HTML element Fieldset. You can keep all your widgets inside it and disable it.


Hope it may give you some insights for your concern.


Thanks,

Sanjay


Sanjay Kumar Sahu wrote:

Hi Divyanshu,


Good question. Even I also observed the same and was thinking about it. There are lots of things that are different between Traditional and Reactive web app development.

Being a Dot Net developer formerly and with the reference of training course 'Outsystems Platform for .Net developer' I could resemble the similarities between Reactive Web app and .Net application. I think Traditional web forms, which are literally implemented as HTML forms, they made use of the option of being able to enable/disable the Form widget exactly like FIELDSET in HTML, as this is available in HTML. But in the case of Reactive, It is more similar to .Net Programming and in .Net(Asp.net) web forms, we don't have Form's property to enable or disable it. I believe Reactive Web apps are getting converted into .Net code post compilation so they might want it to make it same as .Net compiled code. So it is basically a design approach.


The reason behind not providing enable/disable option in form in .Net or Reactive is simply may be it is not making much sense as you can bind the complete screen with the role and restrict the unauthorized access to it(instead of just disabling the Form in case of Traditional Web form). Which is a good practise. You can always enable/disable any widget in the form.

If you still want to disable all the widgets inside the form, you may use HTML element Fieldset. You can keep all your widgets inside it and disable it.


Hope it may give you some insights for your concern.


Thanks,

Sanjay


To support my words, I re-watched above course videos and verified the same. Now I'm sure about my belief.

 Kindly look into below screenshot taken from course: In 1st screenshot it was explained how .Net code get compiled using Integration Studio and post generation of DLL it gets used in Service Studio. In 2nd screenshot it was explained that OS web apps are hosted in IIS.


Divyanshu, As per my understanding you wanted to disable all the widgets inside the form so that some user(obviously unauthenticated user) can't access it. For which you can bind the screen with a role and restrict the access as I explained in my previous post.

Let us know which approach did you adopt in your app.

Regards,

Sanjay


Hi Sansay,

Reactive web application, server related code (server actions, REST/SOAP api, timers, entities ect.  will be .NET code and SQL server or Oracle tables. Client side not! Client side generated code for Reactive Web applications is using ReactJS libary, so JavasScript HTML and CSS. No .NET dll's.

These pictures you shared say nothing what is generated for Reactive Web, only that they are hosted on IIS.