Dear colleagues,

 

I'm facing an issue with filtering records in a ListPage. I need to implement a cascading lookup relationship between two Quick Filters:

  1. Quick Filter 1 (QF1): Category
  2. Quick Filter 2 (QF2): Subcategory
  3.  

My goal is to dynamically update the options in QF2 based on the selected value in QF1. For instance, if the user chooses "Category A" in QF1, QF2 should only display the subcategories associated with "Category A.", 

 

If user in QF1 selects Category A & C, in QF2, just see SubCategories associated with "Category A & C"

 

Is this functionality possible?

 

Thank you for your help.

 

Julio Falcón

Like 2

Like

1 comments

Hi,

 

We have consulted with the product owners of this feature, and we are sure that this task can only be achieved using development.

Also, we have created a request for our developers to bring this functionality in future releases.

Thank you for this suggestion; it helps make our product better!

Show all comments

Hello Creatio community

 

I have developed a page using Freedom UI. I want to develop some core functions that i want to call in different Freedom UI screens. For example function calculate as shown below.

 

define("ApplicationFormSection_FormPage", /**SCHEMA_DEPS*/["@creatio-devkit/common"]/**SCHEMA_DEPS*/, function/**SCHEMA_ARGS*/(sdk)/**SCHEMA_ARGS*/ {
	function calculate(value1, value2) {
		return value1 + value2;
	}
	return {
		viewConfigDiff: /**SCHEMA_VIEW_CONFIG_DIFF*/[..]/**SCHEMA_VIEW_CONFIG_DIFF*/,
		viewModelConfigDiff: /**SCHEMA_VIEW_MODEL_CONFIG_DIFF*/[..]/**SCHEMA_VIEW_MODEL_CONFIG_DIFF*/,
		modelConfigDiff: /**SCHEMA_MODEL_CONFIG_DIFF*/[..]/**SCHEMA_MODEL_CONFIG_DIFF*/,
		handlers: /**SCHEMA_HANDLERS*/[
			{
				request: "crt.HandleViewModelAttributeChangeRequest",
				handler: async (request, next) => {
					if (request.attributeName === "Field1" && !request.silent) {
						var sum = calculate(1, 2);
					}
					return next?.handle(request);
				}
			},
		 ]
	}

 

This approach doesn't work because every time i change the screen the function is removed automatically. 

 

Is there a way I can develop some core functions in a different module and call this module inside my "ApplicationFormSection_FormPage" freedom UI page?
Can you give an example for my case?

 

Best regards

Like 0

Like

1 comments

Hello,

A better approach is to use modules for page code. I try to add as little code to the page request handlers as possible and move all code to modules/classes. See https://customerfx.com/article/organizing-code-for-creatio-freedom-ui-pages-with-modules/

Ryan

Show all comments

Hi, 

 

I need to set a complex filter for a grid. How do I create a filter in JS and set it to a list in a page in freedom?

 

Best regards, 

 

Javier 

Like 0

Like

1 comments

Have you tried adding a crt.LoadDataRequest handler to dump request.dataSourceName out to the console to see if you can determine the name of the dataSourceName attriubute the list uses - and that it does fire that request? I assume it triggers this request when it get's it's data - similar to how lookups do, see https://customerfx.com/article/dynamically-filtering-a-lookup-on-a-creatio-freedom-ui-page/

Assuming it does and once you know the name of the dataSourceName it uses for the request you could add the conditions.

Alternatively, I believe you can add the filter conditions directly in the datasource in the viewModelConfigDiff, but you'd need to know the attribute name used in that scenario as well. Something like https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/front-end-development/freedom-ui/data-sources/data-processing#title-2438-3

Ryan

Show all comments

Hi, 

Has anyone setup anonymisation to be GDPR compliant on a Freedom UI page ? 

https://marketplace.creatio.com/app/gdpr-compliance-toolkit-accounts-contacts-leads-creatio seems to only work on Classic UI pages. 

Thanks, 

Damien

 

Like 0

Like

1 comments

Hello,

 

The specified marketplace application currently doesn't support Freedom UI. If you want to get additional information regarding this application, feel free to contact support@webrixs.com.

Show all comments

Is there no way to delete a navigation/section from the Freedom UI "navigation and sections" tab? 

 

If there is no way currently, what if a section was linked to the wrong object, or some other setting was incorrect when the section was created? Is there a way to change these setting afterwards?

 

This is what shows on my screen:

 

Like 0

Like

2 comments

Hello!

 

Currently, it is not possible to delete a section from "Navigation and sections" tab.

 

If you want the section not to be visible in the Creatio navigation panel, then we recommend removing such section from a workplace:

Go to the System Designer -> Workplace Setup -> Choose the needed workplace -> Choose a section and delete it.

 

After that the section will not be visible in the Navigation panel, but the Section object will not be removed. It is not recommended to delete Section schemas as they may be connected to other objects and their removal can cause unpredictable errors.

Arsenii Ostapyk,

Okay, thanks for letting me know

Show all comments


Hello, Creatio Community,

I'm seeking a more efficient method for customizing Creatio's appearance. Is there a way to apply a global custom style to all sections of Creatio, eliminating the need for manual CSS adjustments on individual pages?

something like this css but for all pages 

body .crt-data-table-container   .crt-data-table   .crt-data-table-header-cell-container   .crt-header-cell   .crt-header-cell-caption-container   .crt-header-cell-caption {
     color: #000000 !important;
}

body crt-link .crt-link {
   color: #000000;
   border-bottom: none !important;
}

Like 1

Like

1 comments
Best reply

To have the CSS apply in the entire app you can create a replacing view for MainHeaderSchema and add the CSS there. 

Alternatively, you can use this marketplace addon which gives you the ability to add the CSS to a table and it will get applied in the entire app. 

Ryan

To have the CSS apply in the entire app you can create a replacing view for MainHeaderSchema and add the CSS there. 

Alternatively, you can use this marketplace addon which gives you the ability to add the CSS to a table and it will get applied in the entire app. 

Ryan

Show all comments

Hello Community,

I am currently facing an issue with a model page that contains two lookup fields: one for contact and the other for email. My goal is to allow the user to select an email address associated with the selected contact, not just the primary email, but any email linked to that contact. To achieve this, I am using dynamic filtering for ContactCommunication to filter by the current contact and email communication type.

I’ve implemented this logic within the crt.LoadDataRequest handler because the email field is a simple dropdown and does not open a separate selection page.

The problem: 
When a contact is selected, I refresh the email list data source as expected. However, the email list is not properly reloading after a contact is deselected and reselected. In this case, the email filters do not update correctly. The issue is that the email list only reloads and applies the correct filters when I manually reselect the email field.

This behavior is causing a problem where the email dropdown is not correctly filtered based on the newly selected contact. Below is the code I am using for the handler:
 

handlers: /**SCHEMA_HANDLERS*/[
 {
   request: "crt.LoadDataRequest",
   handler: async (request, next) => {
     const emailDataSource = "UsrEntity_004572bDS_UsrEmailAddre_gzbqqxc_List_DS";
     const contactDataSource = "UsrEntity_004572bDS_UsrContact_7esmp6a_List_DS";

     if (request.dataSourceName === emailDataSource) {
       const lookupValue = await request.$context.UsrEntity_004572bDS_UsrContact_7esmp6a;
       console.log("Lookup Value:", lookupValue);

       if (lookupValue) {
         console.log("Filter Hit");
         const filter = new sdk.FilterGroup();
         filter.addSchemaColumnFilterWithParameter(sdk.ComparisonType.Equal, "Contact", lookupValue.value);
         filter.addSchemaColumnFilterWithParameter(sdk.ComparisonType.Equal, "CommunicationType", "EE1C85C3-CFCB-DF11-9B2A-001D60E938C6");

         const newFilter = Object.assign({}, filter);
         newFilter.items = filter.items;
         console.log("Filter created");
         request.parameters.push({
           type: "filter",
           value: newFilter
         });
         console.log("Filter added to request");
       } else {
         console.log("Empty Lookup");
         // request.$context.UsrEntity_004572bDS_UsrEmailAddre_gzbqqxc = null;
         // request.$context.UsrEntity_004572bDS_UsrEmailAddre_gzbqqxc_List_DS = null;
       }
     }

     if (request.dataSourceName === contactDataSource) {
       console.log("Contact Selected, reloading email address list");
       // request.$context.UsrEntity_004572bDS_UsrEmailAddre_gzbqqxc = null;

       await request.$context.executeRequest({
         type: "crt.LoadDataRequest",
         $context: request.$context,
         config: { loadType: "reload", useLastLoadParameters: true },
         dataSourceName: emailDataSource
       });

       console.log("Email list reloaded successfully!");
     }

     return await next?.handle(request);
   }
 }
]/**SCHEMA_HANDLERS*/;
 

I would greatly appreciate it if you could look into this issue and suggest a solution.

Thank you!

Like 1

Like

1 comments

It is hard to tell what the issue is based on the code alone, in this situation, it would be better to run a proper debug to see what exactly went wrong. But, based on your description I can assume that there is something wrong with a refresh. Not with its code but rather with a place it is called. Try to use different approaches to it.

Show all comments

Hi Creatio Community,

I'm currently working on a customization for the Activity page, and I need some help with dynamically showing/hiding tabs based on the activity type. Here’s what I need to achieve:

  1. Hide the "Attachment" tab when the activity type is "Task."
  2. Show the "Case Attachment" tab for tasks related to a specific case only (it should display attachments only for the selected case).
  3. For all other activity types, the "Case Attachment" tab should be hidden, and the regular "Attachment" tab should be visible.

Essentially, I want the tab visibility to switch dynamically based on the activity type and the case involved. I’d appreciate any suggestions on how to implement this, whether through JavaScript handlers, custom logic, or any other method that can meet this requirement.

Thanks in advance

Like 0

Like

1 comments

Hello,
 

This can be easily implemented using business rules such as "Show/hide an element on a Freedom UI page." We recommend exploring this functionality on our academy.
 

https://academy.creatio.com/docs/8.x/no-code-customization/customization-tools/ui-and-business-logic-customization/freedom-ui-business-rules#title-2416-2
 

I hope this helps!

Show all comments

How to hide Attachment tab in task type activity while showing my own case attachment tab or in general how can i programmatically hide a toggle tab in freedom ui .

I want to hide the attachment toggle tab and show case attachment which is created by be , also want to programmatically trigger their visibility , please refer below image for reference 

 

Like 1

Like

1 comments

I was able to achieve this using only DOM. To do this - two buttons were created: clicking the first button will trigger the usr.HideButtonRequest request, clicking the second button will trigger the usr.ShowAttachmentsRequest. Here is the code of schema handlers:

handlers: /**SCHEMA_HANDLERS*/[
          {
            request: "usr.HideButtonRequest",
            handler: async (request, next) => {
              let savedAttachmentsElement = document.querySelectorAll('[data-item-marker="Attachments"]')[0];
              request.$context.AttachmentToggleItem = savedAttachmentsElement;
              request.$context.AttachmentToggleItemParentNode = savedAttachmentsElement.parentNode;
              savedAttachmentsElement.parentNode.removeChild(savedAttachmentsElement);
              return next?.handle(request);
            }
          },
          {
            request: "usr.ShowAttachmentsRequest",
            handler: async (request, next) => {
              let attachmentToggleContainer = request.$context.AttachmentToggleItemParentNode;
              let attachmentsToogleItem = request.$context.AttachmentToggleItem;
              attachmentToggleContainer.appendChild(attachmentsToogleItem);
              return next?.handle(request);
            }
          },
        ]/**SCHEMA_HANDLERS*/,

And also two attributes were added to the viewModelConfig property of the schema (in case you don't have it in the schema - create it):

viewModelConfig: {
          attributes: {
            "AttachmentToggleItem": {},
            "AttachmentToggleItemParentNode": {}
          }
        },

As a result the "Attachments" toggle item is removed when the first button is clicked and then displayed when the second button is clicked. What is left to be done is add and test this approach with handlers like HandleViewModelAttributeChangeRequest.

Show all comments

Hello , 

 

I have been struggling with permissions lately , I have a Freedom UI Details page that shows sections depending on the user role or the user contact specific information .

When I try to create a Business rule I only find User contact But can't Access User Contact informations . 

Any suggestions please ?

Like 0

Like

1 comments

Could you please provide us with more details. For example, which permissions do you have on Contacts object.

Show all comments