Hi guys! We have issue with CaseRatingFeedbackPage - in page we have just 2 radio button, 1 text area and 1 submit button. But page performance is so slow.


its how page looks:



 

Like 1

Like

8 comments
Best reply

and it loads a lot of js files:

and it loads a lot of js files:

Hello!

Thank you for sharing the details. Based on the provided information, here are a few key theories about what could be causing the performance issues on the CaseRatingFeedbackPage:
 

  1. Number of Requests:
    A high number of requests being triggered when the page loads or during user interaction can significantly impact performance. This could be related to customizations or additional scripts implemented on the page, which might introduce extra requests.
     
  2. Network Speed or Connection Issues:
    The fact that a small file (e.g., 33 KB) takes 2 seconds to load strongly indicates potential problems with the internet connection or network conditions. This delay could result from low bandwidth, high latency, or temporary connectivity issues.

    Recommended Next Steps:
     
  3. Analyze Requests and Customizations: Use a network monitoring tool (e.g., Chrome DevTools) to identify unnecessary or excessive requests. Pay particular attention to requests introduced by custom scripts or third-party dependencies.
     
  4. Check Network Conditions: Test the page performance under different network conditions to confirm if the issue persists with stable and high-speed internet.

    Best regards,
    Anton

Anton Starikov,

Hi Anton, thanks for response. There is no any network/speed issue. In the network I see a lot of JS loading which initiator is "error-list-dialog.js". 
here is the added code to this page:
 

Kamran Mammadov,

The fact that the files are taking so long to download indicates a network problem. Could you please check this also?
Is the result the same with other networks?

Anton Starikov,

Yes, it comes as issue from business, so it tested in different environments/networks

For what it's worth, the CaseRatingFeedbackPage always loads horribly slow for me as well, even without customization to it. Even for cases with Creatio in their success portal, often the page doesn't even completely load.

Ryan

Yep, 

A couple pages still needs some code optimization for performance. In general, load time is also very very sensitive to wifi quality I noticed, a whole much more than any other of our web apps we use.  

Lots of improvements happened last year, hopefully this trend of performance improvements will continue :). 

 

Thanks to all!

Show all comments

Hi guys! 
question is about how to properly set variable inside esq classic ui:
getAccountId:function(callback, scope){

var caseId = this.get("MasterRecordId");

  var accountId = "";


 

  // GET ACCOUNT ID

  var esqCase = this.Ext.create("Terrasoft.EntitySchemaQuery", {

      rootSchemaName: "Case"

  });

  esqCase.addColumn("Account.Id","AccountId");

  esqCase.filters.add("AccountFiilter", Terrasoft.createColumnFilterWithParameter(

      Terrasoft.ComparisonType.EQUAL, "Id", caseId));

    esqCase.getEntityCollection(function(result) {

      if (result.success) {

          result.collection.each(function(item) {

              accountId = item.get("AccountId");

              callback.call(scope || this, accountId);

          });

      }

  }, this);

  // GET ACCOUNT ID

}


 

openBillingLineLookup: function() {

    var Terrasoft = this.Terrasoft;

    var caseId = this.get("MasterRecordId");

    var accountId = "";


 

       this.getAccountId(function(recordValue) {

        accountId  =  recordValue;

        console.log("account id",accountId);

    }, this);


 

  console.log("accountId after new func",accountId);// here is empty to due to async

}

 

Like 0

Like

2 comments

Hello Kamran,

 

Can you try rewriting the code and adding the Terrasoft.chain usage in it? As described here - https://community.creatio.com/articles/getentity-schema-works-asynchron….

Hi Kamran, 
What are you trying to achieve? 

If you just put the whole logic into the callback function, it'll work. 
Also you can wrap the esq call into a promise.

Show all comments

Dear colleagues,

 

I have a problem when deleting records in a detail, when the deletion is one by one we can manage it, but when the user selects several records and deletes them, the deleted record trigger is not activated.

 

  1. How can this kind of massive deletion event be detected?
  2. Is it possible to remove from the detail menu the option to select multiple records?

 

Thanks in advance

Like 1

Like

4 comments
Best reply

Julio.Falcon_Nodos,


Hello,
 

The button is added in the addGridOperationsMenuItems method of the BaseGridDetailV2 schema, depending on the value of getSwitchGridModeMenuItem.


To remove the button, simply override this method in the desired detail with the following value:


methods: {
   getSwitchGridModeMenuItem: function() {
       return false;
   },
}
 





However, it’s important to note that removing the button does not disable the ability to select multiple records, for example, using the "Ctrl + Click" combination. Unfortunately, disabling multi-selection entirely is not possible for Classic UI details.

Best regards,
Pavlo

Hello,
 

Creatio does not have a separate event for multi-delete event; each delete operation will be processed separately.
 

I was unable to reproduce the behavior where logic tied to the deletion event of records fails to execute in case of multi deletion.

 Could you please provide more details about your mechanism's configuration?
 

Regarding the possibility of removing multi-select in a detail, in Freedom UI, you can configure this in the page designer by unchecking the "Multiselect" parameter. 


Unfortunately, this is not possible in Classic UI.
 

Best regards,
Pavlo!

Pavlo Sokil,

Thanks Pablo, of course is for a classic ui detail..

 

I think it's possible to solve, you can see some approach on the last comment in the article on https://community.creatio.com/questions/hide-delete-button-condition

 

The problem is there not enough documentation, but I think I'm on right way, at this time didn't know how to continue to hide, from the detail menu, the select all records option.

 

Regarding to detect, in a process a massive delete, no idea if it's possible :-(

Julio.Falcon_Nodos,


Hello,
 

The button is added in the addGridOperationsMenuItems method of the BaseGridDetailV2 schema, depending on the value of getSwitchGridModeMenuItem.


To remove the button, simply override this method in the desired detail with the following value:


methods: {
   getSwitchGridModeMenuItem: function() {
       return false;
   },
}
 





However, it’s important to note that removing the button does not disable the ability to select multiple records, for example, using the "Ctrl + Click" combination. Unfortunately, disabling multi-selection entirely is not possible for Classic UI details.

Best regards,
Pavlo

Thanks Pavlo! it works

Show all comments

Hi Team,

 

Could anyone please help me achieving the things below?

 

I have added two custom attributes in the client module.

 

One of lookup type and the other for text. As soon as the user selects the value in the Title Dropdown, the Description text field should be auto-populated with the corresponding value of description being fetched from a data source of Title.

 

The source lookup is as follows:

 

attributes: {

 "UsrTitle": {
         dataValueType: Terrasoft.DataValueType.LOOKUP,
         type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                  isSimpleLookup: true,

                   referenceSchemaName: "UsrTitle",

                   isRequired: true,
       },

          "UsrDescription": {
         dataValueType: Terrasoft.DataValueType.MAXSIZE_TEXT,
         type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN, 
         value: ""
       }

}

 

    diff: [
                
                {
                    "operation": "insert",
                    "name": "MyMenu",
                    "propertyName": "items",
                    "values": {
                        "generateId": false,
                        "itemType": Terrasoft.ViewItemType.CONTAINER,
                        "items": []
                    }
                },
      
              {
         "operation": "insert",
         "parentName": "MyMenu", // The container where the input box will be added
         "propertyName": "items",
         "name": "UsrTitle",
         "values": {
           "bindTo": "UsrTitle", 
           "labelConfig": {
             "caption": "Title"
           },
         },
           "bindTo": "UsrTitle",
                    
                "enabled": true,
                    
                "contentType": 3
       },
                  
            {
         "operation": "insert",
         "parentName": "MyMenu", 
         "propertyName": "items",
         "name": "UsrDescription",
         "values": {
           "bindTo": "UsrDescription", 
           "labelConfig": {
             "caption": "Description"
           },
            "contentType": 0,
        "layout": {
            "column": 4,
            "row": 5,
            "colSpan": 20,
            "rowSpan": 4
        },
           "controlConfig": {
             "placeholder": "Enter your text here"
           },
           "classes": {
             "wrapClassName": ["custom-input-box-class"]
           }
         }
       },
         {
       "operation": "insert",
       "parentName": "MyMenu",
       "propertyName": "items",
       "name": "MainContactButton",
      
       "values": {
      
           "itemType": Terrasoft.ViewItemType.BUTTON,
         
           "caption":"Create Ticket",
           
           "enabled": true
       }
   },
 ]

 

 

Please note that this is a custom client module which does not belong to a section, hence not able to achieve this using the OOTB business rules. Kindly help!

 

Thanks,

Sarika

Like 0

Like

2 comments
Best reply

First of all, you'll need to have a change event for when the lookup attribute it selected, add something like this to the lookuip attribute: 

"UsrTitle": {
    dataValueType: Terrasoft.DataValueType.LOOKUP,
    type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
    isSimpleLookup: true,
    referenceSchemaName: "UsrTitle",
    isRequired: true,
    onChange: "getTitleDescription"
}

Then, add the getTitleDescription method to the methods. When a value is selected this will get called and you can go retrieve the description via an EntitySchemaQuery to set in the other attribute:

getTitleDescription: function() {
    var title = this.get("UsrTitle");
    // now do an esq to get the description using title.value and then set in the description attribute
}

You could try adding the Description to the lookup attribute's lookupListConfig to avoid the esq, but I am not sure if that works for a virtual lookup attribute. However, doing an esq there would work fine.

Ryan

First of all, you'll need to have a change event for when the lookup attribute it selected, add something like this to the lookuip attribute: 

"UsrTitle": {
    dataValueType: Terrasoft.DataValueType.LOOKUP,
    type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
    isSimpleLookup: true,
    referenceSchemaName: "UsrTitle",
    isRequired: true,
    onChange: "getTitleDescription"
}

Then, add the getTitleDescription method to the methods. When a value is selected this will get called and you can go retrieve the description via an EntitySchemaQuery to set in the other attribute:

getTitleDescription: function() {
    var title = this.get("UsrTitle");
    // now do an esq to get the description using title.value and then set in the description attribute
}

You could try adding the Description to the lookup attribute's lookupListConfig to avoid the esq, but I am not sure if that works for a virtual lookup attribute. However, doing an esq there would work fine.

Ryan

Ryan Farley,

 

Thanks. it worked.

Show all comments

In All List Pages, there are default buttons once a record is clicked. OPEN COPY DELETE. I need to remove the COPY button from the Cases section, but the section wizard does not contain these elements. Where can this be done?

Like 0

Like

0 comments
Show all comments

is there a way to rename the "Save"  button on a record page ?

regards, 

Like 1

Like

4 comments
Best reply

I assume you're referring to the caption? You can change the caption for the button by opening the edit page schema (for example, AccountPageV2) and find the localizable string (on the left side) "SaveButtonCaption" then give it a new value.

Ryan

I assume you're referring to the caption? You can change the caption for the button by opening the edit page schema (for example, AccountPageV2) and find the localizable string (on the left side) "SaveButtonCaption" then give it a new value.

Ryan

Ryan Farley,

Thanks Ryan, that worked when creating a new record. When I click New to add a new record the save button became Submit, but when editing the existing record the button appeared to be "Save" again. How to make it Submit on adding and editing a record.

Thanks in advance

You also need to change the "SaveRecordButtonCaption" string in the associated section (such as AccountSectionV2)

Ryan Farley,

Worked ! Many thanks Ryan. 

Show all comments

I'm having a scenario where I need to add two custom columns in attachment detail and need to edit that.So I have overridden the LinkPageV2 and added those two columns in diff.Now the fields are displaying in the required section attachment detail.However other section showing error in console stating that the columns are not found in that sectionFile Object

Is there a way to dynamically load diff based on the condition/for a particular section only?


Thanks,
Sivaranjani

Like 0

Like

2 comments

No, diff cannot be loaded based on conditions (only properties like visible or enabled can be changed using conditions, but not blocks of code).

The best approach is to add a boolean attribute on the LinkPageV2

attributes: {
	"IsForAccount": {
		dataValueType: Terrasoft.DataValueType.BOOLEAN,
		columnType: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
		value: false
	}
}

Then bind it to the visible property of the element in the diff

{ //...
    "visible": { "bindTo": "IsForAccount" }
}

On the page init check what the entity type is for the page and set the boolean: 

init: function() {
	this.callParent(arguments);
	this.set("IsForAccount", this.get("entitySchemaName") === "AccountFile");
}

Using this approach will work since the value will never get submitted when saved.

Ryan

Show all comments

Hi, 

 

I hope someone can help me, I am exploring the Idea of Moving our system from Classic UI to Freedom UI. I am experiencing Cyclic Chain issues after updating our Dev system when I save the Freedom UI Account Form Page.

 

I've not worked with Cyclic Dependencies previously and the help from Creatio Support didn't help me achieve a fix. 

If someone could explain step by step how to fix these dependencies (image attached) I would be very grateful.

 

Many Thanks

 

Tom

 

 

Like 0

Like

1 comments

Hi Tom,

 

What's happening here is that the Account Form page needs to access items that are located in your Custom folder, but because of the hierarchy, it's unable to do so. 



If you move the Freedom UI Account Form page to the custom folder, you can test saving the page and see if that works. If it does, the above is indeed the issue. 



Harry

Show all comments

Hi 

 

I want to make a column as a hyperlink in datagrid of the detail. I have tried the instructions as in the link : https://community.creatio.com/questions/convert-text-field-hyperlink. But it applied only to the edit page of the detail not the data grid. Is there any way to do this.

 

Regards

Rakshith

Like 0

Like

1 comments

Hello!

 

As we see, you already created a separate case for the Support team with this question, so we will provide you with the answer in a case.

 

Have a nice day!

Show all comments

Hello community,

 

I need to show a pop-up message with options Yes or No in the Classic UI of the mobile application. How can we achieve this?

 

Thanks in advance

Yasaswini

 

Like 0

Like

1 comments

Hello!



We recommend using the push notification in the business process to add notifications to the mobile app.

More details about pop-up messages can be found in the article: https://academy.creatio.com/docs/user/bpm_tools/bpm_process_examples/ne…

Probably, you find the articles useful for your business tasks:

https://community.creatio.com/questions/mobile-show-confirmation-dialog

https://community.creatio.com/questions/how-can-i-show-information-dialog-mobile

Show all comments