Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Expand
titleCT Server error occurs in logs

Check for the following pattern in the error logs:

Code Block
linenumberstrue
[com.intellectdesign.canvas.cache.handler.LocalCacheHandlerProxy][ERROR] {[CTCAC00033]:Could not load 'com.intellectdesign.canvas.cache.entitlement.EntitlementCacheBuilder'.

Solution: Include the CTReadyApps.jar from the CT release to the application's dependencies folder.

Data Rendering or Data Submission 


Scenarios:

  • Data fetch from DB table throws error in logs
  • Upgrading to latest CT binaries throws error in logs
For above scenarios, check for the following pattern in the error logs
Expand
Expand
titleData fetch from DB table throws error
titleGrid widget has date column configured in Studio, but it is not rendering in end application

Check for the following error pattern in the log file:

Code Block
linenumberstrue
[com.intellectdesign.canvas.data.conversion.util.JSONToHashMapConverter][ERROR]
			 {[CTBAS00014]:The String is either not in proper date format or is not a date: Format: dd/mm/yyyy , Value:  31-12-2030

Solution: If such date format mismatch occurs, then change the value of the date field to the user-preferred format.

Expand
titleData submit to database via Request Modeler flow is failing

Check for the following error pattern in the log file:

Code Block
linenumberstrue
{[CTAUD00155]:AuditHandlerInstruction.logException() - Encountered exception.
				 Exception message : An SQLException occurred while executing the insert operation.

Solution: Check if the request data has been modified to make the value of REFERENCE_NO column to null. If so, then the insert to the REFERENCE column in the OD_AUDIT table will fail.

Application shows blank page after log-in

Check the following:

  • Any errors in the browser console.
  • Any network call failing
  • Check if users' entitlements have changed
  • Any errors in the CT server logs. If so, share it to CT Support team via Jira.


Expand
titleGetting system error message in application.

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
titleHow to add new language in the end application?

Refer Adding a New Language in your Application - from Canvas 18.1 onwards.


Expand
titleHow to add a custom load mask in the application?

Refer Enabling Custom Load Mask.


Data Rendering or Data Submission

Expand
titleGrid widget has date column configured in Studio, but it is not rendering in end application

Check for the following error pattern in the log file:

Code Block
linenumberstrue
Cause: java.sql.SQLSyntaxErrorException
Cause: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
Cause: java.sql.SQLSyntaxErrorException: Unknown column
Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax;
Cause: java.sql.SQLSyntaxErrorException: ORA-00904: "COLUMN_NAME": invalid identifier
java.sql.BatchUpdateException: ORA-00904: "COLUMN_NAME": invalid identifier

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
titleCouldn't connect to functional DB

Check for the following pattern in the error logs:

Code Block
linenumberstrue
[com.intellectdesign.canvas.database.IBatisDatabaseAccess][ERROR]
			 {[CTDBL00088]:An SQLException occurred while executing the select operation}
java.sql.SQLException: The Network Adapter could not establish the connection

Solution: Check if the connectivity to the functional DB is working.

Expand
titleCouldn't save data on DB

Check for the following pattern in the error logs:

Code Block
linenumberstrue
[com.intellectdesign.canvas.database.IBatisDatabaseAccess][ERROR]
			 {[CTDBL00105]:An SQLException occurred while executing the Batch Insert operation}[com.intellectdesign.canvas.data.conversion.util.JSONToHashMapConverter][ERROR]
			 {[CTBAS00014]:The String is either not in proper date format or is not a date: Format: dd/mm/yyyy , Value:  31-12-2030

Solution: If such date format mismatch occurs, then change the value of the date field to the user-preferred format.


Expand
titleData submit to database via Request Modeler flow is failing

Check for the following error pattern in the log file:

Code Block
linenumberstrue
{[CTAUD00155]:AuditHandlerInstruction.logException() - Encountered exception.
				 Exception message : An SQLException occurred while executing the insert operation.

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.


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
titleData fetch from DB table throws error

Scenarios:

  • Data fetch from DB table throws error in logs
  • Upgrading to latest CT binaries throws error in logs

For above scenarios, check for the following pattern in the error logs:

Code Block
linenumberstrue
Cause: java.sql.SQLSyntaxErrorException
Cause: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
Cause: java.sql.SQLSyntaxErrorException: Unknown column
Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax;
Cause: java.sql.SQLSyntaxErrorException: ORA-00904: "COLUMN_NAME": invalid identifier
java.sql.BatchUpdateException: ORA-00904: "COLUMN_NAME": invalid identifier

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
titleCouldn't save data on DB

Check for the following pattern in the error logs:

Code Block


Expand
titleCouldn't connect to functional DB

Check for the following pattern in the error logs:

Code Block
linenumberstrue
[ccom.iintellectdesign.ccanvas.ddatabase.TransactionManagerIBatisDatabaseAccess][ERROR]
			 {[CTDBL00003CTDBL00088]:Caught exception in getTransaction(USER_TXN_NAME)}
Solution: Check if the JNDI is configured as a datasource in the server
An SQLException occurred while executing the select operation}
java.sql.SQLException: The Network Adapter could not establish the connection

Solution: Check if the connectivity to the functional DB is working.


Expand
titleRequest Modeler save is not workingCouldn't save data on DB

Check for the following pattern in the error logs:

Code Block
linenumberstrue
Cause: [com.mysqlintellectdesign.cjcanvas.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'BUSINESS_KEY' at row 1

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.

Encryption

Expand
titleHow 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.

Image Removed

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.

Image Removed

Expand
titleEncryption is enabled, but not working
Check for following error pattern in the log file
database.IBatisDatabaseAccess][ERROR]
			 {[CTDBL00105]:An SQLException occurred while executing the Batch Insert operation}

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
titleCouldn't save data on DB

Check for the following pattern in the error logs:

Code Block
linenumberstrue
[c.i.c.d.TransactionManager][ERROR]
			 {[CTDBL00003]:Caught exception in getTransaction(USER_TXN_NAME)}

Solution: Check if the JNDI is configured as a datasource in the server.


Expand
titleRequest Modeler save is not working

Check for the following pattern in the error logs:

Code Block
linenumberstrue
[c.i.c.s.e.EncryptionUtils][ERROR] {[CTCOM00155]:Error occured in the decrypt JWT method : {}}
com.intellectdesign.canvas.servercomm.encryption.DecryptionException: no_error_message
	at com.intellectdesign.canvas.servercomm.encryption.AESEngine.decrypt
Caused by: javax.crypto.IllegalBlockSizeException: last block incomplete in decryption
	at org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(Unknown Source) 

Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'BUSINESS_KEY' at row 1

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
titleHow to display currency symbol for amount fields?

Refer Amount page for more information.


Expand
titleCouldn't get data from DB for an app

Check for the following pattern in the error logs:

Code Block
linenumberstrue
[com.intellectdesign.canvas.servercommviewdefinition.encryption.PublicKeyImplSimpleViewDefinitionInstruction][ERROR]

				 {[CTRND00412CTVDF00386]:Database Exception occurred in thefetchData() Encryptionwhile andretrieving decryptionthe ofView Req/Resdata :for {}}
javax.crypto.BadPaddingException: unknown block type

Solution:

If such error pattern occurs (line numbers 1, 2, 4, 7-9) in the logs, then check the following:

  1. Java version must be higher than 1.8.251.
  2. If the CT version is lower than 19.1.7.6_17307, then the bcprov-jdk16-1.46.jar file must be present.
  3. If the CT version is above 19.1.7.6_17307, then the bcprov-ext-jdk15to18-169.jar must be present.
  4. If the CT version is lower than 19.1.1.0, then the bcprov-ext-jdk15on-150.jar must be present.

CSS

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.

Image Removed

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:

Open the market-jqtbs-ltr.css file and add the following code in it:
Expand
titleHow to enable horizontal scroll bar for a widget?
Code Block
languagecss
.CT_CARD_SUMMARY_WGT .table-wrapper-container 
{
	overflow-x: scroll;
}

/* where CT_CARD_SUMMARY_WGT is the widget ID. */
  • Save the changes to market-jqtbs-ltr.css file.
  • Refresh the browser and verify if the horizontal scroll bar appears on the widget as shown in the following screenshot:
    Image Removed Expand
    titleHow 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.

    Image Removed

    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
    languagecss
    /* 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. */
    
    
  • Save the changes to market-jqtbs-ltr.css file.
  • Refresh the browser and verify if the column headers and filter bar of the widget are hidden as shown in the following screenshot:
    Image Removed Expand
    titleHow 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
    the view id : SOME_VIEW_ID}

    Solution:

    • Check the app's datasource and the its response.
    • At the end of the stack trace, check the root cause mentioned in the "Caused by:" section.


    Expand
    titleCouldn't get data from Web Service for an app

    Check for the following pattern in the error logs:

    Code Block
    linenumberstrue
    [com.intellectdesign.canvas.connectors.camel.DefaultRoute][ERROR]
    			 {[CTVDF00933]:Caught Exception while making a web service call {}}

    Solution: Check the stack trace to find the details of the web service that did not return the success response.


    Expand
    titleDoes CT Platform support data persistancy across pages or forms in wizard?

    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
    titleHow to create a custom publisher for Request Modeler?

    Refer Custom Publisher.


    Expand
    titleHow to update functional data saved through Request Modeler instead of inserting new or deleting data?

    Refer Additional Ready-made Activities supported by Request Modeler.


    Encryption

    Expand
    titleHow 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.

    Image Added

    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.

    Image Added


    Expand
    titleEncryption is enabled, but not working

    Check for following error pattern in the log file:

    Code Block
    linenumberstrue
    [c.i.c.s.e.EncryptionUtils][ERROR] {[CTCOM00155]:Error occured in the decrypt JWT method : {}}
    com.intellectdesign.canvas.servercomm.encryption.DecryptionException: no_error_message
    	at com.intellectdesign.canvas.servercomm.encryption.AESEngine.decrypt
    Caused by: javax.crypto.IllegalBlockSizeException: last block incomplete in decryption
    	at org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(Unknown Source) 
    
    [com.intellectdesign.canvas.servercomm.encryption.PublicKeyImpl][ERROR] 
    		{[CTRND00412]:Exception occurred in the Encryption and decryption of Req/Res : {}}
    javax.crypto.BadPaddingException: unknown block type

    Solution:

    If such error pattern occurs (line numbers 1, 2, 4, 7-9) in the logs, then check the following:

    1. Java version must be higher than 1.8.251.
    2. If the CT version is lower than 19.1.7.6_17307, then the bcprov-jdk16-1.46.jar file must be present.
    3. If the CT version is above 19.1.7.6_17307, then the bcprov-ext-jdk15to18-169.jar must be present.
    4. If the CT version is lower than 19.1.1.0, then the bcprov-ext-jdk15on-150.jar must be present.


    CSS

    Expand
    titleHow to enable horizontal scroll bar for a widget?

    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.

    Image RemovedImage Added

    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 gridenable horizontal scroll bar for the grid widget, perform the following:

    1. Open the market-jqtbs-ltr.css file and add the following code in it.:

      Code Block
      languagecss
      .CT_ACCCARD_SUMMARY_WGT table tr th:first-child .ct-row-expand
      {
          display: none.table-wrapper-container 
      {
      	overflow-x: scroll;
      }
      
      /* where CT_ACCCARD_SUMMARY_WGT is the widget ID. */


    2. Save the changes to market-jqtbs-ltr.css file.
    3. Refresh the browser and verify if the specific column header (plus icon in this example) is hidden horizontal scroll bar appears on the widget as shown in the following screenshot.:
    Image Removed

    1. Image Added



    Expand
    titleHow to hide the forms title in a form wizardcolumn headers and filter bar of a grid widget?

    You can hide the forms title in form wizard column headers of a grid widget through CSS. Let's consider a form wizard grid widget shown in the following screen shot taken from the sample application, ModelHouse.

    Image RemovedImage Added

    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 wizardthe column headers and the filter bar of a grid widget, perform the following:

    1. Open the market-jqtbs-ltr.css file and add the following code in it:

      Code Block
      languagecss
      [data-item-id="FORM_TRANSFER"] [data-wizard-id="progress-steps-FORM_TRANSFER"] span.ct-tab__txtspan
      {
          /* The following CSS code snippet is for hiding the column headers of a grid. */
      .CT_CARD_SUMMARY_WGT .table-wrapper-container thead
      {
      	display: none;
      }
      
      
      /* where FORM_TRANSFER isThe following CSS code snippet is for hiding the form wizard ID. */
      Save 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. */
      
      


    2. Save the changes to market-jqtbs-ltr.css file.
    3. Refresh the browser and verify if the forms title column headers and filter bar of the widget are hidden as shown in the following screenshot:
    Image Removed

    1. Image Added


    Expand
    titleHow to hide a specific form's title in a form wizardcolumn header in a grid, such as plus icon column header in Grouped Grid?

    You can hide a specific form's title in a form wizard column header in a grid, such as plus icon header column in Grouped Grid through CSS. Let's consider a form wizard grid widget shown in the following screen shot taken from the sample application, ModelHouse.

    Image RemovedImage Added

    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 hide a specific form's title column header in a form wizardgrid, perform the following:

    1. Open the market-jqtbs-ltr.css file and add the following code in it.

      Code Block
      languagecss
      [class*=wizard-view-] .PAYEE_FORM_tabItem span.ct-tab__txtspan 
      {
          .CT_ACC_SUMMARY_WGT table tr th:first-child .ct-row-expand
      {
          display: none;
      }
      
      /* where PAYEE_FORMCT_ACC_SUMMARY_WGT is the "Add Payee" form widget ID. */


    2. Save the changes to market-jqtbs-ltr.css file.
    3. Refresh the browser and verify if the specific form's title ('Add Payee' column header (plus icon in this example) is hidden as shown in the following screenshot:.

    Image RemovedImage Added


    Expand
    titleHow to adjust the width of the tab panels hide the forms title in a form wizard?

    You can adjust the width of the tab panels in a 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.

    Image RemovedImage Added

    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 hide the forms title in a form wizard, perform the following:

    1. Open the market-jqtbs-ltr.css file and add the following code in it.:

      Code Block
      languagecss
      [data-item-id="FORM_TRANSFER"] [class*=wizard-view-]{
          display: inherit;
      }
      [data-item-id="FORMdata-wizard-id="progress-steps-FORM_TRANSFER"] [class*=wizard-view-].nav-tabs li span.ct-tab__txtspan
      {
           widthdisplay: 250pxnone;
      }
      
      /* where, FORM_TRANSFER is the form wizard ID. */


    2. Save the changes to market-jqtbs-ltr.css file.
    3. Refresh the browser and verify if the tab panels' width are adjusted forms title are hidden as shown in the following screenshot:

    Image RemovedImage Added


    Expand
    titleHow to insert icons for form item labelshide a specific form's title in a form wizard?

    You can insert icons for form item labels 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.

    Image RemovedImage Added

    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 labelsConsider 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:

    1. Open the market-jqtbs-ltr.css file and add the following code in it.

      Code Block
      languagecss
      [data-item-id="FORM_CREDITCARD"] .CITY-bs label.ct-form__label:beforeclass*=wizard-view-] .PAYEE_FORM_tabItem span.ct-tab__txtspan 
      {
          font-familydisplay: fontAwesomenone;
      }
      
      /* where PAYEE_FORM 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';
      }
      is the "Add Payee" form ID. */


    2. Save the changes to market-jqtbs-ltr.css file.
    3. Refresh the browser and verify if the specific form's title ('Add Payee' in this example) is hidden as shown in the following screenshot:

    Image Added


    Expand
    titleHow 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.

    Image Added

    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:

    1. Open the market-jqtbs-ltr.css file and add the following code in it.

      Code Block
      languagecss
      [data-item-id="FORM_TRANSFER"] [class*=wizard-view-]{
          display: inherit;
      }
      [data-item-id="FORM_CREDITCARDTRANSFER"] .MOBILE-bs label.ct-form__label:before
      {
          font-family: fontAwesome;[class*=wizard-view-].nav-tabs li {
      
          contentwidth: '\f1ac'250px;
      }
      
      /* Herewhere, FORM_CREDITCARDTRANSFER is the form wizard ID. 
      *  CITY, DOB, INCOME, EMAIL, and MOBILE are the respective form item IDs. 
      */
      Save the changes
      */


    2. Save the changes to market-jqtbs-ltr.css file.
    3. Refresh the browser and verify that the icons are appearing on the left side of the form item labels if the tab panels' width are adjusted as shown in the following screenshot:

    Image RemovedImage Added


    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:

  • Copy the CSS files from the correctly deployed Windows environment.
  • Store the CSS files to the specific location on the non-Windows environment.
  • Replace the SASS file name to CSS in the CSSConfig.xml of CTRIAFramework in the application WAR.

    Expand
    titleUnable to deploy application due to SASS compilation failure
    Info

    For example, in Tomcat server, the CSSConfig.xml is located in the following location:

    • ..\apache-tomcat-7.0.67\webapps\ctmodelhouse\CTRIAFramework\UIArena\theme\system\cssconfig.xml (here, ctmodelhouse is the application)
    Code Block
    languagexml
    <?xml version="1.0" encoding="UTF-8"?>
    <themeConfig>
    	<!-- * * Copyright 2014. Intellect Design Arena Limited. All rights reserved. * -->
    	<theme id="structure" name="Structure Theme" folderRef="">
    		<framework name="jqtbs" folderRef="/CTRIAFramework/UIArena/theme/system/jqtbs/structure/">
    			<direction mode="ltr" folderRef="/CTRIAFramework/UIArena/theme/system/jqtbs/structure/" minifiedPattern="">
    				<css name="structure-jqtbs.css" /> <!-- rename all .scss files to .css -->
    			</direction>
    		</framework>
    	</theme>
    </themeConfig>

    If suppose any custom themes were created using the Theme Designer in Canvas Studio, remove its entry from the THEME_MASTER table. Then, copy the custom theme's CSS files from the correctly deployed Windows environment and store in the non-Windows environment. Then specify the path to the custom theme's CSS file in the application's CSSConfig.xml in the application WAR.

    Info

    For example, in Tomcat server, the application's CSSConfig.xml is located in the following location:

    • ..\apache-tomcat-7.0.67\webapps\ctmodelhouse\css\style\cssconfig.xml (here, ctmodelhouse is the application)
    Code Block
    languagexml
    <?xml version="1.0" encoding="UTF-8" standalone="no"?> <themeConfig> <theme id="CustomRed" name="Custom Red Theme" folderRef=""> <!-- ID and name of the custom theme --> <framework name="jqtbs" folderRef="/CTRIAFramework/UIArena/theme/system/jqtbs/structure/"> <direction mode="ltr" folderRef="/CTRIAFramework/UIArena/theme/system/jqtbs/structure/" minifiedPattern=""> <css name="custom-red-jqtbs.css" /> <!-- CSS file of custom
    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.

    Image Added

    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:

    1. Open the market-jqtbs-ltr.css file and add the following code in it.

      Code Block
      languagecss
      [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. 
      */


    2. Save the changes to market-jqtbs-ltr.css file.
    3. Refresh the browser and verify that the icons are appearing on the left side of the form item labels as shown in the following screenshot:

    Image Added


    Expand
    titleUnable 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:

    1. Copy the CSS files from the correctly deployed Windows environment.
    2. Store the CSS files to the specific location on the non-Windows environment.
    3. 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:

      • ..\apache-tomcat-7.0.67\webapps\ctmodelhouse\CTRIAFramework\UIArena\theme\system\cssconfig.xml (here, ctmodelhouse is the application)


      Code Block
      languagexml
      <?xml version="1.0" encoding="UTF-8"?>
      <themeConfig>
      	<!-- * * Copyright 2014. Intellect Design Arena Limited. All rights reserved. * -->
      	<theme id="structure" name="Structure Theme" folderRef="">
      		<framework name="jqtbs" folderRef="/CTRIAFramework/UIArena/theme/system/jqtbs/structure/">
      			<direction mode="ltr" folderRef="/CTRIAFramework/UIArena/theme/system/jqtbs/structure/" minifiedPattern="">
      				<css name="structure-jqtbs.css" /> <!-- rename all .scss files to .css -->
      			</direction>
      		</framework>
      	</theme>
      </themeConfig>


    4. If suppose any custom themes were created using the Theme Designer in Canvas Studio, remove its entry from the THEME_MASTER table. Then, copy the custom theme's CSS files from the correctly deployed Windows environment and store in the non-Windows environment. Then specify the path to the custom theme's CSS file in the application's CSSConfig.xml in the application WAR.

      Info

      For example, in Tomcat server, the application's CSSConfig.xml is located in the following location:

      • ..\apache-tomcat-7.0.67\webapps\ctmodelhouse\css\style\cssconfig.xml (here, ctmodelhouse is the application)


      Code Block
      languagexml
      <?xml version="1.0" encoding="UTF-8" standalone="no"?>
      <themeConfig>
      	<theme id="CustomRed" name="Custom Red Theme" folderRef=""> <!-- ID and name of the custom theme -->
      		<framework name="jqtbs" folderRef="/CTRIAFramework/UIArena/theme/system/jqtbs/structure/">
      			<direction mode="ltr" folderRef="/CTRIAFramework/UIArena/theme/system/jqtbs/structure/" minifiedPattern="">
      				<css name="custom-red-jqtbs.css" /> <!-- CSS file of custom theme -->
      			</direction>
      			<direction mode="rtl" folderRef="/CTRIAFramework/UIArena/theme/system/jqtbs/structure/" minifiedPattern=""/UIArena/theme/system/jqtbs/structure/" minifiedPattern="">
      				<css name="custom-red-jqtbs.css" /> <!-- CSS file of custom theme -->
      				<css name="custom-red-jqtbs-rtl.css" /> <!-- CSS file of custom theme -->
      				<css name="custom-red-jqtbs-rtl.css" /> <!-- CSS file of custom theme -->
      			</direction>
      		</frame
      </themeConfig>

    ...

    1. 	</direction>
      		</frame
      </themeConfig>


    Forms

    Expand
    titleHow to insert a form in another form using Form Designer?

    To insert a form in another form, perform the following steps:

    1. In Canvas Studio, click Create > Form. The Form Designer displays.
    2. In the left pane of Form Designer, click Containers & More.
    3. In Component category, click Form.
    4. From the list of existing forms, select a form and click Save. Selected form will be inserted in the form design area.


    Expand
    titleHow to insert a form grid in another a form using Form Designer?

    To insert a form grid in another a form, perform the following steps:

    1. In Canvas Studio, click Create > Form. The The Form Designer displays.
    2. In the left pane of Form Designer, click Containers & More.
    3. In Component category, click Form Widget.
    4. From the list of existing formswidgets, select a form widget and click Save. Selected form widget will be inserted in the form design area.


    Expand
    titleHow to insert a grid in a form using Form Designer?

    To insert a grid in a form, perform the following steps:

    1. In Canvas Studio, click Create > Form. The Form Designer displays.
    2. In the left pane of Form Designer, click Containers & More.
    3. In Component category, click Widget.
    4. From the list of existing widgets, select a widget and click Save. Selected widget will be inserted in the form design area.
    Expand
    titleHow to change the placeholder for error message for each form field?

    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
    titleOn-demand loading of form listeners is at workspace-level, can it be done at form-loading level?

    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.

    Refer Posting Data using the POST Method.
    Expand
    titleSample code for form data submission to a web service.
    change the placeholder for error message for each form field?

    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
    titleOn-demand loading of form listeners is at workspace-level, can it be done at form-loading level?

    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
    titleSample code for form data submission to a web service.

    Refer Posting Data using the POST Method.


    Expand
    titleHow to map request model ID to an existing form designed in Studio?

    Refer Configuring Request Modeler Actions for Self-Designed Forms.


    Expand
    titleHow to configure event wiring for form items?

    Refer Form Items Event Wiring.


    Expand
    titleWhat are the APIs available from CT Platform for forms and form items?

    Refer Form and Form Item APIs.


    Expand
    titleHow to use the performance timer?

    Use the following syntax to use the performance timer:

    Code Block
    languagejava
    linenumberstrue
    PerformanceTimer performanceTimer = new PerformanceTimer(); performanceTimer.startTimer("MyClassName.myMethodName");
    // write your logic here 
    performanceTimer.endTimer();



    Database

    Expand
    titleHow to get information from stored procedures or functions with parameters, such as log-in user ID, language, in datasource?

    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.


    Login ID, Language etc. will be passed as parameters by Canvas which can be used to filter data accordingly.

    ...