Hello, is there a way to filter an activity dashboard metric by distinct values? 

Like 0

Like

2 comments

Hello!

Thank you for your question.

It sounds like you are referring to adding a dashboard to a record page, and having it filter data based on the current record (e.g., showing only activities related to the specific record you are viewing).

Yes, this is possible in Creatio.

To do this, you need to add a filter to the dashboard widget, so that it displays only data related to the current record.

 We’ve attached a screenshot that shows where and how you can configure this filter.

Please let us know if this answers your questions!

Valeriia Ripnevska,

Hello, thank you for the response.

I'm actually referring to the Classic UI. What you suggested will filter for a specific record but that isn't what I'm after. 

In Classic UI if I select the Activities section, there is a dashboards tab within that section.  Inside one of these dashboards I want to use the metric widget to count unique values. 

For instance, it may show one client name multiple times because many activities exist for that client (phone calls, emails, texts etc), however I want it to count the client only once as a unique value. I can filter the type of activity to only (phone call) for example but there still could be many phone calls for one client so I will see the client appear in the count multiple times.

 Another way to think about it, is that in excel I would use =unique - https://support.microsoft.com/en-us/office/unique-function-c5ab87fd-30a3-4ce9-9d1a-40204fb85e1e or conditional formatting to remove duplicate values, I want to apply the same logic to a creato metric widget in a dashboard.

Show all comments

How to configure use freedom mini page for creating object and classic page for editing in classic ui section?

Like 0

Like

1 comments


Hello, 

 

Currently, this is the expected system behavior. If the modal/mini page for adding records is configured in Freedom UI, but you have Classic UI enabled, the mini-page will not open. Current mini pages (modal) only work for the shell and Freedom UI pages. However, we already have a task registered in our R&D team to consider and add support for modal/mini page details in Classic UI. 

 

 

Show all comments

Hello,

 

Our code, that opens a page in Classic UI in v8.0.4, doesn't work in 8.2.1

this.openCardInChain({
   schemaName: "UsrCustomSectionVisaPageV2",
   operation: ConfigurationEnums.CardStateV2.EDIT,
   id: this.get("Id"),
   renderTo: "centerPanel"
});

 

In 8.2.1 we get only BodyMask (blank page). Sometimes after browser refresh page is open.

What can be a reason of such behavior?

 

Thank you

Like 1

Like

2 comments

Hello Vladimir,

The code looks correct, according to the screenshot. To obtain more information about why the logic stopped working, I recommend debugging the system.

One of the possible solutions is to add the Enums to the Module:

define("UsrCustomSectionVisaPageV2", ["ConfigurationEnums"],
  function(ConfigurationEnums) {//....}

Best regards, Anhelina!

Nothing has helped with openCardInChain.

We have used OpenCard instead - it works

 

Kind regards,

Vladimir

Show all comments

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