...
Expand | ||
---|---|---|
| ||
For most of the scenarios, the answer is No. It is not required to redistribute the App. Canvas uses a unique modeling concept that allows for the UI configuration information to be updated seamlessly into the App without having the need to repackage the App. Having said that, there are few situations like changes to skins, images, logic written through Canvas extensions that would require a repackage. |
Encryption
Expand | ||
---|---|---|
Expand | ||
|
Code Block | ||
---|---|---|
| ||
.CT_CARD_SUMMARY_WGT .table-wrapper-container
{
overflow-x: scroll;
}
/* where CT_CARD_SUMMARY_WGT is the widget ID. */ |
title | How to hide the column headers and filter bar of a grid widget? |
---|
You can hide the column headers of a grid widget through CSS. Let's consider a grid widget shown in the following screen shot taken from the sample application, ModelHouse.
Assume that the ModelHouse application is using the Market theme and the corresponding CSS file is: D:\Canvas\apache-tomcat-7.0.67\webapps\ctmodelhouse\css\style\market\jqtbs\market-jqtbs-ltr.css.
To hide the column headers and the filter bar of a grid widget, perform the following:
Open the market-jqtbs-ltr.css file and add the following code in it:Code Block | ||
---|---|---|
| ||
/* The following CSS code snippet is for hiding the column headers of a grid. */
.CT_CARD_SUMMARY_WGT .table-wrapper-container thead
{
display: none;
}
/* The following CSS code snippet is for hiding the filter bar of a grid. */
.CT_CARD_SUMMARY_WGT .ct-padding-filter-container
{
display: none;
}
/* Here, CT_CARD_SUMMARY_WGT is the widget ID. */
|
title | How to hide a specific column header in a grid, such as plus icon column header in Grouped Grid? |
---|
You can hide a specific column header in a grid, such as plus icon header column in Grouped Grid through CSS. Let's consider a grid widget shown in the following screen shot taken from the sample application, ModelHouse.
Assume that the ModelHouse application is using the Market theme and the corresponding CSS file is: D:\Canvas\apache-tomcat-7.0.67\webapps\ctmodelhouse\css\style\market\jqtbs\market-jqtbs-ltr.css.
To hide hide a specific column header in a grid, perform the following:
Open the market-jqtbs-ltr.css file and add the following code in it.Code Block | ||
---|---|---|
| ||
.CT_ACC_SUMMARY_WGT table tr th:first-child .ct-row-expand
{
display: none;
}
/* where CT_ACC_SUMMARY_WGT is the widget ID. */ |
title | How to hide the forms title in a form wizard? |
---|
You can hide the forms title in form wizard through CSS. Let's consider a form wizard shown in the following screen shot taken from the sample application, ModelHouse.
Assume that the ModelHouse application is using the Market theme and the corresponding CSS file is: D:\Canvas\apache-tomcat-7.0.67\webapps\ctmodelhouse\css\style\market\jqtbs\market-jqtbs-ltr.css.
To hide the forms title in a form wizard, perform the following:
Open the market-jqtbs-ltr.css file and add the following code in it:Code Block | ||
---|---|---|
| ||
[data-item-id="FORM_TRANSFER"] [data-wizard-id="progress-steps-FORM_TRANSFER"] span.ct-tab__txtspan
{
display: none;
}
/* where FORM_TRANSFER is the form wizard ID. */ |
title | How to hide a specific form's title in a form wizard? |
---|
You can hide a specific form's title in a form wizard through CSS. Let's consider a form wizard shown in the following screen shot taken from the sample application, ModelHouse.
Assume that the ModelHouse application is using the Market theme and the corresponding CSS file is: D:\Canvas\apache-tomcat-7.0.67\webapps\ctmodelhouse\css\style\market\jqtbs\market-jqtbs-ltr.css. Consider that in the form wizard shown in the screen shot you want to hide the "Add Payee" title alone.
To hide a specific form's title in a form wizard, perform the following:
Open the market-jqtbs-ltr.css file and add the following code in it.Code Block | ||
---|---|---|
| ||
[class*=wizard-view-] .PAYEE_FORM_tabItem span.ct-tab__txtspan
{
display: none;
}
/* where PAYEE_FORM is the "Add Payee" form ID. */ |
title | How to adjust the width of the tab panels in a form wizard? |
---|
You can adjust the width of the tab panels in a form wizard through CSS. Let's consider a form wizard shown in the following screen shot taken from the sample application, ModelHouse.
Assume that the ModelHouse application is using the Market theme and the corresponding CSS file is: D:\Canvas\apache-tomcat-7.0.67\webapps\ctmodelhouse\css\style\market\jqtbs\market-jqtbs-ltr.css.
To adjust the width of the tab panels in a form wizard, perform the following:
Open the market-jqtbs-ltr.css file and add the following code in it.Code Block | ||
---|---|---|
| ||
[data-item-id="FORM_TRANSFER"] [class*=wizard-view-]{
display: inherit;
}
[data-item-id="FORM_TRANSFER"] [class*=wizard-view-].nav-tabs li {
width: 250px;
}
/* where, FORM_TRANSFER is the form wizard ID. */ |
title | How to insert icons for form item labels? |
---|
You can insert icons for form item labels through CSS. Let's consider a form shown in the following screen shot taken from the sample application, ModelHouse.
Assume that the ModelHouse application is using the Market theme and the corresponding CSS file is: D:\Canvas\apache-tomcat-7.0.67\webapps\ctmodelhouse\css\style\market\jqtbs\market-jqtbs-ltr.css.
To insert icons for the form item labels, perform the following:
Open the market-jqtbs-ltr.css file and add the following code in it.Code Block | ||
---|---|---|
| ||
[data-item-id="FORM_CREDITCARD"] .CITY-bs label.ct-form__label:before
{
font-family: fontAwesome;
content: '\f1ad';
}
[data-item-id="FORM_CREDITCARD"] .DOB-bs label.ct-form__label:before
{
font-family: fontAwesome;
content: '\f073';
}
[data-item-id="FORM_CREDITCARD"] .INCOME-bs label.ct-form__label:before
{
font-family: fontAwesome;
content: '\f0b1';
}
[data-item-id="FORM_CREDITCARD"] .EMAIL-bs label.ct-form__label:before
{
font-family: fontAwesome;
content: '\f1fa';
}
[data-item-id="FORM_CREDITCARD"] .MOBILE-bs label.ct-form__label:before
{
font-family: fontAwesome;
content: '\f1ac';
}
/* Here, FORM_CREDITCARD is the form ID.
* CITY, DOB, INCOME, EMAIL, and MOBILE are the respective form item IDs.
*/ |
title | Unable to deploy application due to SASS compilation failure |
---|
Canvas Technology platform supports SASS from 19.1 version. While SASS compiles successfully on Windows servers, in some non-Windows systems (e.g. HP Unix or iOS) SASS compilation fails during deploying the application. In these cases, you must copy the CSS files from the correctly deployed development or testing environment (Windows) and store those in the failed environment (non-Windows). You must then remove the SASS references in the CSSConfig.xml file and use plain CSS instead to successfully deploy the application on non-Windows environments.
Perform the following steps:
Replace the SASS file name to CSS in the CSSConfig.xml of CTRIAFramework in the application WAR.
Info |
---|
For example, in Tomcat server, the CSSConfig.xml is located in the following location:
|
language | xml |
---|
title | How to enable encryption of business data, request and response between client and server in the application built using Canvas? |
---|
You can enable encryption for the application built using Canvas by setting the 'ENCRYPT_SERVER_CALLS' property to 'Y' in the 'systempreferences.properties' file.
Note |
---|
When you enable encryption, Canvas will encrypt all requests coming to your application including log out. |
A sample 'systempreferences.properties' file is available in CTModelHouseResource.jar in the Model House application that comes as part of the Canvas platform package.
Note that you must stop and start your application server to enable this feature. After the application server is restarted, access the widgets in the application and check the Network tab in the browser console to verify the encryption.
CSS
| |||||
Check for the following pattern in the error logs:
Solution: Check if any of the configuration in canvas-default-alertschdlrquartz.properties file is updated by comparing with the values in the original file in the CT platform release. If the value of the key org.quartz.jobStore.dataSource is changed, ensure that there is a datasource in that name. |
Expand | |||||
---|---|---|---|---|---|
| |||||
Check for the following pattern in the error logs:
Solution: Include the CTReadyApps.jar from the CT release to the application's dependencies folder. |
Expand | ||
---|---|---|
| ||
Check the following:
|
Expand | ||
---|---|---|
| ||
Scenario: The error message, “We were not able to complete your request due to a system error. As a result, no action is taken. Please contact Customer Support for further assistance. Reference id : be2fa6ca-c84f-4a8d-b7a7-1462cd0f2267” is displayed in a pop up when performing an action in the end application. Solution: Check the network tab of the browser console to verify the parameters passed for the request. Copy the reference number from the pop up and search for it in all the “.log” files within the work folder path to find the reason for the server side exception. |
Expand | ||
---|---|---|
| ||
Refer Adding a New Language in your Application - from Canvas 18.1 onwards. |
Expand | ||
---|---|---|
| ||
Refer Enabling Custom Load Mask. |
Data Rendering or Data Submission
Expand | |||||
---|---|---|---|---|---|
| |||||
Check for the following error pattern in the log file:
Solution: If such date format mismatch occurs, then change the value of the date field to the user-preferred format. |
Expand | |||||
---|---|---|---|---|---|
| |||||
Check for the following error pattern in the log file:
Solution: Request Modeler assigns a random and unique reference number for each request, which needs to be stored in the REFERENCE column in OD_AUDIT table in CT schema. Check in your code if the request data is modified to make the value of REFERENCE_NO column to null. If so, modify the code to make it not null because Request Modeler needs the reference number for internal processing. If you need to use or process a reference for functional logic, use a different column/variable to capture it. |
Expand | |||||
---|---|---|---|---|---|
| |||||
Scenarios:
For above scenarios, check for the following pattern in the error logs:
Solution: For any exception of the above pattern, check the ctdblogs to find the SQL ID of the query that is failing. If the query is related to functional database/schema, fix the query. If the query is within CT or includes a CT table, check if all the incremental scripts were applied properly. Even then if not resolved, inform the CT Platform support team. |
Expand | |||||
---|---|---|---|---|---|
| |||||
Check for the following pattern in the error logs:
Solution: Check if the connectivity to the functional DB is working. |
Expand | |||||
---|---|---|---|---|---|
| |||||
Check for the following pattern in the error logs:
Solution: For any exception of the above pattern, check the ctdblogs to find the SQL ID of the batch insert query that is failing. |
Expand | |||||
---|---|---|---|---|---|
| |||||
Check for the following pattern in the error logs:
Solution: Check if the JNDI is configured as a datasource in the server. |
Expand | |||||
---|---|---|---|---|---|
| |||||
Check for the following pattern in the error logs:
Solution: Check the data passed through the request modeler. It is advised to configure a unique key as the BUSINESS_KEY while creating the request modeler in Studio. The value passed must not be more than 256 characters. |
Expand | ||
---|---|---|
| ||
Refer Amount page for more information. |
Expand | |||||
---|---|---|---|---|---|
| |||||
Check for the following pattern in the error logs:
Solution:
|
Expand | |||||
---|---|---|---|---|---|
| |||||
Check for the following pattern in the error logs:
Solution: Check the stack trace to find the details of the web service that did not return the success response. |
Expand | ||
---|---|---|
| ||
Scenario: Data persistence is sometimes required at every page while moving to next page as end-users of the application can quit the application at any stage and come back to resume the work. Solution: CT Platform does not maintain the state of each form or page. Implementation team must write code to handle persist data across pages or forms for the required functional behaviour in the application. |
Expand | ||
---|---|---|
| ||
Refer Custom Publisher. |
Expand | ||
---|---|---|
| ||
Refer Additional Ready-made Activities supported by Request Modeler. |
Encryption
Expand | ||
---|---|---|
| ||
You can enable encryption for the application built using Canvas by setting the 'ENCRYPT_SERVER_CALLS' property to 'Y' in the 'systempreferences.properties' file.
A sample 'systempreferences.properties' file is available in CTModelHouseResource.jar in the Model House application that comes as part of the Canvas platform package. Note that you must stop and start your application server to enable this feature. After the application server is restarted, access the widgets in the application and check the Network tab in the browser console to verify the encryption. |
Expand | |||||
---|---|---|---|---|---|
| |||||
Check for following error pattern in the log file:
Solution: If such error pattern occurs (line numbers 1, 2, 4, 7-9) in the logs, then check the following:
|
CSS
Expand | |||||
---|---|---|---|---|---|
| |||||
You can explicitly enable horizontal scroll bar for a widget through CSS. Let's consider a grid widget shown in the following screen shot taken from the sample application, ModelHouse. Assume that the ModelHouse application is using the Market theme and the corresponding CSS file is: D:\Canvas\apache-tomcat-7.0.67\webapps\ctmodelhouse\css\style\market\jqtbs\market-jqtbs-ltr.css. To enable horizontal scroll bar for the grid widget, perform the following:
|
Expand | |||||
---|---|---|---|---|---|
| |||||
You can hide the column headers of a grid widget through CSS. Let's consider a grid widget shown in the following screen shot taken from the sample application, ModelHouse. Assume that the ModelHouse application is using the Market theme and the corresponding CSS file is: D:\Canvas\apache-tomcat-7.0.67\webapps\ctmodelhouse\css\style\market\jqtbs\market-jqtbs-ltr.css. To hide the column headers and the filter bar of a grid widget, perform the following:
|
Expand | |||||
---|---|---|---|---|---|
| |||||
You can hide a specific column header in a grid, such as plus icon header column in Grouped Grid through CSS. Let's consider a grid widget shown in the following screen shot taken from the sample application, ModelHouse. Assume that the ModelHouse application is using the Market theme and the corresponding CSS file is: D:\Canvas\apache-tomcat-7.0.67\webapps\ctmodelhouse\css\style\market\jqtbs\market-jqtbs-ltr.css. To hide hide a specific column header in a grid, perform the following:
|
Expand | |||||
---|---|---|---|---|---|
| |||||
You can hide the forms title in form wizard through CSS. Let's consider a form wizard shown in the following screen shot taken from the sample application, ModelHouse. Assume that the ModelHouse application is using the Market theme and the corresponding CSS file is: D:\Canvas\apache-tomcat-7.0.67\webapps\ctmodelhouse\css\style\market\jqtbs\market-jqtbs-ltr.css. To hide the forms title in a form wizard, perform the following:
|
Expand | |||||
---|---|---|---|---|---|
| |||||
You can hide a specific form's title in a form wizard through CSS. Let's consider a form wizard shown in the following screen shot taken from the sample application, ModelHouse. Assume that the ModelHouse application is using the Market theme and the corresponding CSS file is: D:\Canvas\apache-tomcat-7.0.67\webapps\ctmodelhouse\css\style\market\jqtbs\market-jqtbs-ltr.css. Consider that in the form wizard shown in the screen shot you want to hide the "Add Payee" title alone. To hide a specific form's title in a form wizard, perform the following:
|
Expand | |||||
---|---|---|---|---|---|
| |||||
You can adjust the width of the tab panels in a form wizard through CSS. Let's consider a form wizard shown in the following screen shot taken from the sample application, ModelHouse. Assume that the ModelHouse application is using the Market theme and the corresponding CSS file is: D:\Canvas\apache-tomcat-7.0.67\webapps\ctmodelhouse\css\style\market\jqtbs\market-jqtbs-ltr.css. To adjust the width of the tab panels in a form wizard, perform the following:
|
Expand | |||||
---|---|---|---|---|---|
| |||||
You can insert icons for form item labels through CSS. Let's consider a form shown in the following screen shot taken from the sample application, ModelHouse. Assume that the ModelHouse application is using the Market theme and the corresponding CSS file is: D:\Canvas\apache-tomcat-7.0.67\webapps\ctmodelhouse\css\style\market\jqtbs\market-jqtbs-ltr.css. To insert icons for the form item labels, perform the following:
|
Expand | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||
Canvas Technology platform supports SASS from 19.1 version. While SASS compiles successfully on Windows servers, in some non-Windows systems (e.g. HP Unix or iOS) SASS compilation fails during deploying the application. In these cases, you must copy the CSS files from the correctly deployed development or testing environment (Windows) and store those in the failed environment (non-Windows). You must then remove the SASS references in the CSSConfig.xml file and use plain CSS instead to successfully deploy the application on non-Windows environments. Perform the following steps:
|
...
|
Forms
Expand | ||
---|---|---|
| ||
To insert a form in another form, perform the following steps:
|
Expand | ||
---|---|---|
| ||
To insert a grid in a form, perform the following steps:
|
Expand | ||
---|---|---|
| ||
To insert a form in another form, perform the following steps:
| ||
Expand | ||
| ||
| ||
The mechanism to change the placeholder for displaying error messages for each form field is supported at the application-level, meaning the placeholder can be set for all form items globally across the whole application. By default, Canvas displays the error message for a form field on hovering over the error icon that is adjacent to the form item. However, you can change it to display the error message below the form items. For details of this mechanism, refer Displaying Error Messages below the Form Items. |
Expand | ||
---|---|---|
| ||
Yes. Define filesets in the ondemandjsfile.xml grouping the JS files needed. Use canvas.core.downloadManager object's requireScripts API to fetch this fileset before loading the form. |
Expand | ||
---|---|---|
| ||
Expand | ||
---|---|---|
| ||
The mechanism to change the placeholder for displaying error messages for each form field is supported at the application-level, meaning the placeholder can be set for all form items globally across the whole application. By default, Canvas displays the error message for a form field on hovering over the error icon that is adjacent to the form item. However, you can change it to display the error message below the form items. For details of this mechanism, refer Displaying Error Messages below the Form Items. |
Expand | ||
---|---|---|
| ||
Yes. Define filesets in the ondemandjsfile.xml grouping the JS files needed. Use canvas.core.downloadManager object's requireScripts API to fetch this fileset before loading the form. |
Expand | ||
---|---|---|
| ||
| ||
Refer Configuring Request Modeler Actions for Self-Designed Forms. |
Expand | ||
---|---|---|
| ||
Refer Form Items Event Wiring. |
Expand | ||
---|---|---|
| ||
Refer Form and Form Item APIs. |
Expand | |||||||
---|---|---|---|---|---|---|---|
| |||||||
Use the following syntax to use the performance timer:
|
Database
Expand | ||
---|---|---|
| ||
Data can be fetched using Instruction classes (Java class) in Canvas. Canvas uses iBatis library for database access. Callable statements can be used to access Stored Procedures and Functions to get the data.
|
...
Expand | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Whenever you modify any CTTPL files that comes with CT framework, it is necessary to ensure that the updated template (CTTPL) files are loaded correctly. To load the updated CT framework templates files using etag, add the following code snippet in the CT_Home.jsp page of Canvas Studio:
|
...
Expand | ||
---|---|---|
| ||
To enable columns sorting and filtering, and pagination on grid apps that display data from web services, it is necessary to enable the data cache option. Let’s assume that the ACCOUNT DETAILS classic grid app (widget), with a web service data source is already created in Canvas Studio. In App Designer, click the View Config tab and then proceed to select the Caching option.Click the Enable Data Cache toggle and select the App Instance option in Caching Scope. To apply data filters, click the Filtericon. In Sort & Filter, configure the parameters, as shown in the following screen shot: Proceed to save the app. Let’s assume that the ACCOUNT DETAILS app is mapped to the ACCOUNT SUMMARY workspace. The data of the ACCOUNT DETAILS app, fetched from the web service is displayed in the functional application, Modelhouse: Click the Filtericon on the right side of the app, select the Account_ID column and click Contains. In the Account_ID contains search box, enter the appropriate value and press Enter. The data matching the search criteria provided for ACCOUNT_ID column appear in the grid.
|
Grids
Expand | ||
---|---|---|
| ||
To enable columns sorting and filtering, and pagination on grid apps that display data from web services, it is necessary to enable the data cache option. Let’s assume that the ACCOUNT DETAILS classic grid app (widget), with a web service data source is already created in Canvas Studio.
|
Expand | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
To add new set of records for the Live Scroll Grid with Cache or Paging Grid widgets, perform the following steps:
|
Cookies
Expand | ||
---|---|---|
| ||
By default, in the HTTP response header, the SameSite attribute in the Set-Cookie header element prevents the cookies from being sent to the server in the hybrid mobile apps. For instanceexample, if the SameSite attribute has been specified as "SameSite=Strict", ensure that you nullify the SameSite attribute with "None", for instance, "SameSite=None", thereby removing the SameSite attribute from the Set-Cookie header element in the HTTP response.
|
...