In the classic version we can communicate between modules, for example from page to detail or vice versa using messages.

I have case in my form page there is a modal page, when the modal page is closed it will send data to the form page to do something.
How to implementation in freedom?

Thank you

Like 2

Like

1 comments

It would likely work to use requests with the correct scopes set for message exchange like how sandbox worked, but I've not really tried to implement that across different pages. It might also work to just use Javascript's built-in Broadcast Channel API for that as well. It exists for purposes like this, messaging between different contexts. See details here: https://developer.mozilla.org/en-US/docs/Web/API/Broadcast_Channel_API

Ryan

Show all comments

Hi community,

In the classic UI we 'controlled' the Save event in business rules, with the field 'Created On' (is filled in). 

I dont see the same behaviour in FreedomUI. The 'Created On' field is filled in even though the record is not saved yet. 

Any workaround for this, especially with Business Rules?

Sasor

Like 0

Like

4 comments

Hi,

 

The field is filled in, but until you save the entry, the event will not be executed. Please clarify what business task is so necessary?

Hi, 

Scenario : Show a specific field only when the record is created.

Which Business Rule should we use?

Thanks

Sasor

Sasori Oshigaki,


Greetings!

 

Thank you for reaching out. I looked into possible solutions and came across the idea that you could rely on the Resolution time field or find similar fields that are not created until you press Save. Unfortunately, I don’t see any other viable options in your case.



 

As in my case:

 

Regards,
Orkhan

Orkhan,

we have also solved requests like this by using fields that will be filled after the record was saved.

However, it would be great if you could add something like a "mode" to the business rules conditions that would have values like "new" and "update".

 

BR

Show all comments

Hello Community,

The scenario is very simple. 

We are in the Account form page. The account form page has three lookup fields (Type, Category, Primary Contact) We want to filter the Primary Contact based on the (Type and Category). How can this be achieved in freedomUI. Any code example?

Greetings

Sasor

Like 0

Like

1 comments
Best reply

If the lookup is a dropdown lookup (not opening the selection window) this approach can be used to filter it via code: https://customerfx.com/article/dynamically-filtering-a-lookup-on-a-creatio-freedom-ui-page/

For filtering a lookup as a selection window, use the approach here (see response from Harvey): https://community.creatio.com/questions/crtloaddatarequest-does-not-seem-trigger

Note, since that post, the "crt.OpenLookupPageRequest" request has been replaced by the new request "crt.OpenSelectionWindowRequest", so use this new request name instead of what is listed in that post)

Ryan

If the lookup is a dropdown lookup (not opening the selection window) this approach can be used to filter it via code: https://customerfx.com/article/dynamically-filtering-a-lookup-on-a-creatio-freedom-ui-page/

For filtering a lookup as a selection window, use the approach here (see response from Harvey): https://community.creatio.com/questions/crtloaddatarequest-does-not-seem-trigger

Note, since that post, the "crt.OpenLookupPageRequest" request has been replaced by the new request "crt.OpenSelectionWindowRequest", so use this new request name instead of what is listed in that post)

Ryan

Show all comments

Hi Community,

 

Any idea what went wrong on how i am passing "Collection type" Parameter from Client Code to Business Process.

Client Code:



Below is my payload and it seems fine:


{"schemaName":"UsrWEKAddFacRoute","parameterValues":[{"name":"RouteId","value":"3706a818-cab1-43b0-9a46-58115bb5026c"},{"name":"Facilities","value":[{"FacilityId":"449373f8-3091-4537-a79f-42645bdac2a9"},{"FacilityId":"6d06008f-71d0-4633-b5bb-a395e775a26f"}]}]}

Here is my Business Process input parameters:


However, I am getting this error

 

Like 0

Like

7 comments

Hi.

 

Please upgrade your app to 8.2.1 and use the option to run the process upon clicking the button upon selecting specific records in some specific list (I used banking details list for tests):

I've checked OOB - works properly and the collection of Ids is passed to the process. Here is the part of the code that triggers the process upon button click:

 

You can see an article on the approach mentioned by Oleg here https://customerfx.com/article/launching-a-process-for-multiple-records-in-a-creatio-list/

Note, this is only available in 8.1.3 and higher.

Ryan

Ryan Farley,

The OOB approach above is static, it passing only 1 paramater which is the recod Id. I need to pass, record Id and data from the detail grid (2 parameters), that's is why i shifted to coding.

Fulgen Ninofranco,

 

You can use the "Read data" element and calling a sub-process to get the data from the passed collection of Ids and then pass this data to the sub-process for additional processing.

Oleg Drobina,


Hi thanks for your reply. But the grid actually grid actaully does not have direct relationship to the record id the reason i cannot use read element as well.

 

I really need to pass 2 parameters

1. RecordId paramater
2. Collection type parameter

This is 100% possible in calssic ui. What is the counterpart in freedom ui? 

Fulgen Ninofranco,

 

I don't understand how it's impossible to retrieve needed data from the list records using their IDs that are passed when clicking the button using no-code tools. Please study the approach described.

Oleg Drobina,

 

 

Hi Oleg, thank you for your reply. The data on the grid is not linked to the record. It is a grid data coming from external source. Therefore I could not use read process element from buisness process.

I need pass the all parameters from client side. In Classic UI this is posible, we are able to manage to pass 1 or more input paramaters from client code to business process, including Guid or Collection Type.    

Show all comments

How to hide/remove the below mentioned icons in the freedom UI

 

Like 1

Like

4 comments

Hello!

To remove the "+" and process buttons please, follow the instructions:
1) Add and enable the feature "AllowCreateAngularSchema"
2) Relogging to the app
3) In the configuration, replace the MainShell schema with the additional menu item "Angular replacing view model":

 image.png

Parent object - "Main shell layout with vertical navigation":
image.png

4) Fill the new MainShell with the following code and save the module:

 define("MainShell", /**SCHEMA_DEPS*/["@creatio-devkit/common", "css!CardSchemaViewModule", "css!MainShellCSS"]/**SCHEMA_DEPS*/, function/**SCHEMA_ARGS*/(devkit)/**SCHEMA_ARGS*/ {
    return {
        viewConfigDiff: /**SCHEMA_VIEW_CONFIG_DIFF*/[
            {
                "operation": "merge",
                "name": "ShellHeaderToolbar",
                "values": {
                    "runProcessButtonVisible": false,
                    "quickAddMenuButtonVisible": false,
                    "helpMenuButtonVisible": true
                }
            }
        ]/**SCHEMA_VIEW_CONFIG_DIFF*/,
        viewModelConfig: /**SCHEMA_VIEW_MODEL_CONFIG*/{}/**SCHEMA_VIEW_MODEL_CONFIG*/,
        modelConfig: /**SCHEMA_MODEL_CONFIG*/{}/**SCHEMA_MODEL_CONFIG*/,
        handlers: /**SCHEMA_HANDLERS*/[]/**SCHEMA_HANDLERS*/,
        converters: /**SCHEMA_CONVERTERS*/{}/**SCHEMA_CONVERTERS*/,
        validators: /**SCHEMA_VALIDATORS*/{}/**SCHEMA_VALIDATORS*/
    };
});

5) Relogging to the app and check the result:

image.png

 

As for the Global Search - see this post https://community.creatio.com/questions/global-search-field

In your case if you need to hide it for all users - specify the "All employees" and "All external users" in the GlobalSearchInputVisible operation permission.

You can use this marketplace addon to hide UI elements without any additional code: https://marketplace.creatio.com/app/experceo-ui-wizard-creatio
 

Mohamed Ouederni,

 

It's an option, but we faced several tickets when 2 first DCM stages are not displayed in the UI on all Freedom UI pages when this addon is installed. So better hiding the elements using examples we shared above.

Show all comments

I am trying to add a filter on the lookup owner based on the account field, but the filter is not working. Does anyone have an idea why?

Thanks!

handlers: /**SCHEMA_HANDLERS*/[
        {
            request: "crt.LoadDataRequest",
            handler: async (request, next) => {
                // filter the contact lookup for the account
                             
                if(request.dataSourceName !== "LookupAttribute_85sj3qr_List_DS") {
                    return await next?.handle(request);
                }
         
                // get the account                  
                const account = await request.$context.Parameter_q8l08xk;
                if (account) {
                    const filter = new sdk.FilterGroup();
                    await filter.addSchemaColumnFilterWithParameter(sdk.ComparisonType.Equal, "Account", account.value);
         
                    
                    const newFilter = Object.assign({}, filter);
                    newFilter.items = filter.items;
         
                    request.parameters.push({
                        type: "filter",
                        value: newFilter
                    });
                }
                             
                return await next?.handle(request);
            }
        }
            
        ]/**SCHEMA_HANDLERS*/,

Like 0

Like

2 comments

First, enable debug mode by executing the following in the browser console:

See https://customerfx.com/article/debugging-client-side-code-in-creatio-fo…

Once enabled, open the code for the page and set some breakpoints. Is a dataSourceName for "LookupAttribute_85sj3qr_List_DS" getting triggered? Maybe the name is wrong?

Is request.$context.Parameter_q8l08xk correctly retrieving the account?

Ryan

Everything looks Correct , and the issue was that I forgot to add the SDK "@creatio-devkit/common" to the page .
Thank You 

Show all comments

Dears colleagues, 

 

I want to show a message to users when Creatio is working on some process and hide it when the process ends, is there something similar to Toast dialogs/messages but to implement in a Freedom UI page?

 

I have also seen Ryan Farley's post (https://customerfx.com/article/displaying-toast-message-popups-from-cre…), but in both cases we need to specify a duration and I need the message to be visible until the process finishes. Sometimes it takes a few seconds and when there are more registrations, it could be several minutes and I want the user to know that Creatio is working ...

 

Thanks

Julio

Like 1

Like

5 comments
Best reply

We had a workaround to display the same toast message again but with a very short duration, since only 1 toast can display at a time, the new one replaces the original and then disappears. Not great and it would be nice to be able to hide toast messages on demand - ideally with reference to a specific message, so if we got back some ID from starting the toast notification.

You can also add a duration and awaitResponse to the request. Using awaitResponse will have it appear until acknowledged by the user.

request.$context.executeRequest({
    type: "crt.NotificationRequest",
    message: "This is my toast message!",
    awaitResponse: true
});

However, i don't believe there is anyway to have it display until you tell it to close (after the process completes)

thank Ryan,

 

I tried 

request.$context.executeRequest({
	type: "crt.NotificationRequest", 
	message: "Validando carga Excel...", 
	duration: 60000, 
	awaitResponse: true });

 

But in this case if the process ends before the 60seconds, need to user to close the message.... 

 

Is there another way to implement something similar?

 

Thanks again

Julio

We had a workaround to display the same toast message again but with a very short duration, since only 1 toast can display at a time, the new one replaces the original and then disappears. Not great and it would be nice to be able to hide toast messages on demand - ideally with reference to a specific message, so if we got back some ID from starting the toast notification.

Julio.Falcon_Nodos,

Harvey's idea could work, display the first toast with awaitResponse, then when the process ends display another toast without the awaitResponse and it should take the place of the first one.

Ryan

Harvey Adcock,

Thanks, great idea! I'll try it

Show all comments

Hello,

 

Is it possible to change the working hours of the calendar component in the Freedom UI? If so, is it customizable per user so each one can have different hours based on their needs (e.g. changing the time zone in the user profile).

 

On the other hand, in the default calendar page there is a custom action to show/hide the weekends

 

Is it possible to include that custom action in a new page manually?

 

Regards

Like 2

Like

2 comments

Hi!

 

Unfortunately, there is no possibility of changing the working hours in the calendar using the basic tools.

I want to assure you that I have created a request for our development team to implement this functionality in future versions of our application.

Regarding the show/hide weekends button, this logic was implemented via code in the Calendar_ListPage schema in the CrtProductivityApp package. So you can find the logic here and implement it in the same way on your page.

 

Best regards,

Kate

 

Hi Alejandro, 

Great idea ! 

Damien

 

Show all comments

Hi everyone,

I am trying to add a button to the record page of the Contacts section on Freedom UI in the Mobile app.

This is what I tried adding to the viewConfigDiff on the client module MobileFUIContactRecordPageSettingsDefaultWorkplace:

{\"operation\": \"insert\", \"name\": \"MyButton\", \"parentName\": \"profileColumnSet\", \"propertyName\":\"items\", \"index\": 3, \"values\":{\"type\": \"crt.Button\", \"clicked\": {\"request\": \"crt.TestRequest\"}, \"icon\": \"webforms-button-icon\", \"caption\": \"Test\", \"color\": \"primary\", \"size\": \"medium\", \"iconPosition\": \"left-icon\"}},

I followed the below community article:

https://community.creatio.com/questions/how-add-custom-button-mobile-creatio-freedom-ui-inside-edit-pagerecord-page

However, the button isn't getting added to the page. Am I missing something? How can I identify different elements I can possible use for the parentName and the associated propertyName in the mobile application? 

Alternatively, is there a way to override an existing button on the mobile app in freedom UI?

Regards,

Ramya


 

Like 0

Like

0 comments
Show all comments

Hello Community,
Here is the scenario Im truing to solve.

We Have Opportunity (parent page) in freedomUI and Contact In Opportunity in Classic UI.

We want to capture the following event. When we click Close in 'Contact in opportunity', we want to capture this event, in the Opportunity Form Page. 

The scope behind this is to perform a list reload of the Contacts(have already tried Enable live update in the entities-doesnt work)

How can this be achieved?

Sasor

Like 0

Like

9 comments

++++

Hello,
 

You can implement the following code to reload the data source when you get to the Freedom UI page on the crt.HandleViewModelInitRequest.
 

Sample implementation for “Opportunities_FormPage”

define("Opportunities_FormPage", /**SCHEMA_DEPS*/["@creatio-devkit/common"]/**SCHEMA_DEPS*/, function/**SCHEMA_ARGS*/(sdk)/**SCHEMA_ARGS*/ {
...
        handlers: /**SCHEMA_HANDLERS*/[
              {
        // Load data grids
      request: 'crt.HandleViewModelInitRequest',
      handler: async (request, next) => {
          console.log("You returned to FreedomUI page");
            const result = await next?.handle(request);
            const handlerChain = sdk.HandlerChainService.instance;
            await handlerChain.process({
                type: 'crt.LoadDataRequest',
                $context: request.$context,
                config: {
                    loadType: "reload"
                },
                dataSourceName: "ContactRolesListDS"
            });
            return result;
      }
  }

Serhii Parfentiev,

Hello Serhii,

Have you actually tried it ? HandleViewModelInitRequest is not even triggered when you close the classic ui page (nothing in the console log)

Sasor

++++

++++

++++

++++

+++++++

Hi Community,

Is there any idea about this topic?

Sasor

Show all comments