Continuing on my experimentation with Oracle JET in Fluid UI, I will demo how we can use KnockoutJS available as part of Oracle JET for data binding. This demonstration is based on the following Oracle JET MOOC - Lesson 1, Part 4: Data Binding.
Development Environment: HCM 9.2 PUM Image 17 - PeopleTools 8.55.03
Step 1: Create a Fluid Page
Let us create a simple Fluid page - CSK_KO_DATA_BIND - using PSL_APPS_CONTENT layout. And add a couple of group boxes for creating a flex layout (oj-flex and oj-flex-item). Adding the flex layout is optional but you can refer to Fluid UI - Oracle JET - Using Oracle Alta UI and Flex Layouts for more details.
Further, let us add the following page field elements (group box, edit box - input field and edit box - display only):
Group Box Properties:
Edit Box (Input Field):
Edit Box (Display Only):
Step 2: Add KnockoutJS path to requireJS configuration
Next, we need to update our global requireJS configuration to include the path for knockout.
For complete javascript code, refer jsFiddle link: CSK_REQUIRE_CFG_JS
For more details on using requireJS refer:PeopleTools 8.55+ - Using Oracle JET (JQuery, JQueryUI, requireJS and more) - Part 1, Part 2, Part 3, Part 4.
Step 3: Add data binding to the View (Page HTML)
In our infrastructure (PeopleSoft - Pure Internet Architecture), the "View" is the page (CSK_KO_DATA_BIND) which generates the HTML. As a next step, we can write some PageActivate PeopleCode to add the data-bind attributes to the Fluid page fields using the Field Class HtmlAttributes property.
PeopleCode for Reference:
/* Setting the data-binds in the "View" */
CSK_OJ_WRK.DESCR1.HtmlAttributes = "data-bind='value: userText'";
CSK_OJ_WRK.DESCR2.HtmlAttributes = "data-bind='value: userTextCaps'";
Step 4: Apply the KnockOut Bindings to the ViewModel
Let us update the PageActivate PeopleCode to include a javascript object (CSK_KO_MAIN_JS) on page load. This javascript will serve the same purpose as a traditional 'main.js' in the javascript/Oracle JET architecture.
JavaScript: CSK_KO_MAIN_JS
- As you can see, we added the requireJS configuration path to the "ViewModel" javascript in the main (CSK_KO_MAIN_JS), instead of using the global requireJS configuration in Step 2 (while setting up Knockout JS path). This is because we do not want this app (page) specific path to clutter our global requireJS configuration.
- In the require block, we injected the Alta CSS to enable the oj-flex and oj-flex-item styling that we used in Step 1.
- Finally, the Knockout binding is applied to the "ViewModel" which resides in CSK_KO_VIEWMODEL_JS.
Step 5: Create ViewModel JavaScript Object - CSK_KO_VIEWMODEL_JS
JavaScript: CSK_KO_VIEWMODEL_JS
The ViewModel has the define block as described in the Oracle JET MOOC lesson example.
Results:
Development Environment: HCM 9.2 PUM Image 17 - PeopleTools 8.55.03
Step 1: Create a Fluid Page
Let us create a simple Fluid page - CSK_KO_DATA_BIND - using PSL_APPS_CONTENT layout. And add a couple of group boxes for creating a flex layout (oj-flex and oj-flex-item). Adding the flex layout is optional but you can refer to Fluid UI - Oracle JET - Using Oracle Alta UI and Flex Layouts for more details.
Further, let us add the following page field elements (group box, edit box - input field and edit box - display only):
Group Box Properties:
Edit Box (Input Field):
Edit Box (Display Only):
Step 2: Add KnockoutJS path to requireJS configuration
Next, we need to update our global requireJS configuration to include the path for knockout.
For complete javascript code, refer jsFiddle link: CSK_REQUIRE_CFG_JS
For more details on using requireJS refer:PeopleTools 8.55+ - Using Oracle JET (JQuery, JQueryUI, requireJS and more) - Part 1, Part 2, Part 3, Part 4.
Step 3: Add data binding to the View (Page HTML)
In our infrastructure (PeopleSoft - Pure Internet Architecture), the "View" is the page (CSK_KO_DATA_BIND) which generates the HTML. As a next step, we can write some PageActivate PeopleCode to add the data-bind attributes to the Fluid page fields using the Field Class HtmlAttributes property.
PeopleCode for Reference:
/* Setting the data-binds in the "View" */
CSK_OJ_WRK.DESCR1.HtmlAttributes = "data-bind='value: userText'";
CSK_OJ_WRK.DESCR2.HtmlAttributes = "data-bind='value: userTextCaps'";
Step 4: Apply the KnockOut Bindings to the ViewModel
Let us update the PageActivate PeopleCode to include a javascript object (CSK_KO_MAIN_JS) on page load. This javascript will serve the same purpose as a traditional 'main.js' in the javascript/Oracle JET architecture.
JavaScript: CSK_KO_MAIN_JS
- As you can see, we added the requireJS configuration path to the "ViewModel" javascript in the main (CSK_KO_MAIN_JS), instead of using the global requireJS configuration in Step 2 (while setting up Knockout JS path). This is because we do not want this app (page) specific path to clutter our global requireJS configuration.
- In the require block, we injected the Alta CSS to enable the oj-flex and oj-flex-item styling that we used in Step 1.
- Finally, the Knockout binding is applied to the "ViewModel" which resides in CSK_KO_VIEWMODEL_JS.
Step 5: Create ViewModel JavaScript Object - CSK_KO_VIEWMODEL_JS
JavaScript: CSK_KO_VIEWMODEL_JS
The ViewModel has the define block as described in the Oracle JET MOOC lesson example.
Results:
No comments:
Post a Comment