Hello community,

Is it possible to refresh a dashboard widget in an AccountPageV2 schema, without reloading the whole entity?

Thank you,

Sasori

Like 0

Like

2 comments

HI community,

Any update regarding this question?

Sasori

Hello,

 

We have checked this and unfortunately it is not possible to set this up in the system using basic tools. However, we already registered this idea for our R&D team and such functionality may appear in future releases.

Show all comments

Hi Team,

I have created a simple Dasboard Widget on AccountPageV2 (printscreen from Section Wizard) on Environement 1.

However when i deploy the package, the created dashboard widget doesnt appear in the Environment 2.

I open the section wizard from Environment 2  and the dashboard looks like this:

 

 

Form Console I get:

How can I fix this ?

Sasori

Like 0

Like

2 comments

Hi community!

Any update on this issue ?

Sasori

Hello Sasori,

When dashboards are added to an edit page, the corresponding records are created in SysWidgetDashboard and SysWidgetDashboardLcz tables.

If a dashboard is added not to an edit page but to the "Dashboards" tab, then records will be added in the SysDashboard and SysDashboardLcz tables, respectively.
.
Also, there is also a corresponding binding of these data to the package which was set as a current package when the dashboards were created.

The thing is that dashboards are localizable system objects. When a dashboard is created, records are created in two tables:
- a record about a dashboard created in the localization, which corresponds to the base culture of the system, is created in the [SysWidgetDashboard]/[SysDashboard] table;
-records about dashboards of all other localizations are created in the [SysWidgetDashboardLcz]/[SysDashboardLcz] table and are linked to a record in the [SysWidgetDashboard]/[SysDashboard] table by the [RecordId] column.

So basically, all you need to do is to prepare a package which will contain all the needed data bindings and SQL scenarios which will perform the records' entry to the tables mentioned above.

More information on data binding is on our academy.
Also, knowledge of SQL might be needed in order to find the needed dashboard in the database, although you can always create a lookup and search via UI. 

Show all comments
Question

Hello. In my case, I need to add the ability to upload to excel from pivot tables. As far as I understand, this is a possible corrective version of the "PivotTableViewConfig" module, but as far as I know, modules cannot be loaded into their own package.

Like 0

Like

1 comments

Hello Roman,

You can export pivot table data to Excel from the dashboard only in Freedom UI.

Please find more information here.

Show all comments
Question
Hello!

I'm making a custom widget and ran into a problem, I can't get the pop up out of it.

Like 0

Like

1 comments

Hello,

 

You need to debug the code to find out why this error is returned. Here is the article regarding the client-side debugging.

 

Best regards,

Oscar

Show all comments

Hi Community,

 

We are trying to integrate the Zadarma Widget with Creatio. Our main objective is to load this widget every time we press the "Phone" button (marked with red square in the following image).

In order to achieve this, we need to call the necessary dependencies, so it's possible to execute the "zadarmaWidgetFn" function, as you can see on the next image.

require.config({
	paths: {
		loader_phone_lib: '//my.zadarma.com/webphoneWebRTCWidget/v8/js/loader-phone-lib.js?sub_v=62',
		loader_phone_fn: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/loader-phone-fn.js?sub_v=62"
	},
});
 
define("CtiPanel", ["ServiceHelper", "loader_phone_lib", "loader_phone_fn"], function(ServiceHelper) {
	return {
		messages: {},
		mixins: {},
		attributes: {},
		methods: {
			callPhoneNumber: function (){
				var number = this.get("PhoneNumber");
				window.console.log(number);
 
				var sipValue = "SIP";
 
				var payload = {
					sip: sipValue
				};
 
				ServiceHelper.callService("ImdZadarmaWebHookService", "ZadarmaWebRTCKey", function(response) {
					var result = JSON.parse(response.ZadarmaWebRTCKeyResult);
					window.console.log(result.key);
					zadarmaWidgetFn(result.key, 'SIP', 'square', 'en', true, "{left:'10px',top:'5px'}");
				}, payload, this);
			}
		},
		diff: []
	};
});

However, we are getting the following error while loading these dependencies, because one of the files "loader_phone_lib" (https://my.zadarma.com/webphoneWebRTCWidget/v8/js/loader-phone-lib.js?s…) has other dependencies that are called through <script> tags.

We would like to know, how can we load these dependencies, that are inside the "loader_phone_lib" file, without getting this error?

 

Thanks in Advance.

 

Best Regards,

Pedro Pinheiro

Like 3

Like

4 comments

Hi Pedro,

 

According to https://requirejs.org/docs/errors.html#mismatch there should be the anonymous define() method inside the script HTML tag in one of the dependencies that are loaded. So to fix the error you need to check all the steps described in the requirejs.org document.

 

Best regards,

Oscar

Hi Oscar,

 

Thank you for the response.

 

Yes, some of the scripts have the anonymous define() method inside, so by following the documentation you provided, I removed the dependencies from the "loader_phone_lib" script and added them using the code bellow:

....
require.config({
	paths: {
		zadarmaSocket: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/socket.io",
		zadarmaDetectWebRTC: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/detectWebRTC.min",
		zadarmaJssip: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/jssip.min",
		zadarmaMd5: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/md5.min",
		zadarmaWidgetAPI: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/widget-api.min.js?sub_v=62",
		zadarmaWidget: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/widget.min.js?sub_v=62",
		loader_phone_fn: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/loader-phone-fn.js?sub_v=62"
	}
});
 
define("CtiPanel", ["ServiceHelper", "zadarmaSocket", "zadarmaDetectWebRTC", "zadarmaJssip", "zadarmaMd5", "zadarmaWidgetAPI", "zadarmaWidget", "loader_phone_fn"], function(ServiceHelper) {
	return {
		messages: {},
		mixins: {},
		attributes: {},
		methods: {
			callPhoneNumber: function (){
				var number = this.get("PhoneNumber");
				window.console.log(number);
 
				var sipValue = "SIP";
 
				var payload = {
					sip: sipValue
				};
 
				ServiceHelper.callService("ImdZadarmaWebHookService", "ZadarmaWebRTCKey", function(response) {
					var result = JSON.parse(response.ZadarmaWebRTCKeyResult);
					window.console.log(result.key);
					zadarmaWidgetFn(result.key, 'SIP', 'square', 'en', true, "{left:'10px',top:'5px'}");
				}, payload, this);
			}
		},
		diff: []
	};
});

This piece of code manage to "fix" the previous error. However, I'm getting a new error, which is related to the Socket.Io (zadarmaSocket), as you can see on the next image:

I think this error is caused by the fact that one of the dependencies cannot reach specific functions/vars from other dependencies. I've tried to use the "shim" attribute, in order to create a sequence for loading the dependencies and it didn't work.

 

Thanks in Advance.

 

Best Regards,

Pedro Pinheiro

 

Pedro Pinheiro,

 

Hello,

 

The new code returns another error message on my side, but it happens since there is no ImdZadarmaWebHookService service and ZadarmaWebRTCKey method in my app. Can you please also share the code of this part?

 

Thank you!

 

Best regards,

Oscar

Hello Oscar Dylan,

 

The ZadarmaWebRTCKey method is responsible for requesting the WebRTC key from a specific "Client Key", "Client Secret" and SIP Number. I use this key to start the communication between the widget and Zadarma.

 

ImdZadarmaWebHookService.cs

 /* The custom namespace. */
namespace Terrasoft.Configuration.ImdZadarmaWebHookServiceNamespace
{
    using System;
    using System.ServiceModel;
    using System.ServiceModel.Web;
    using System.ServiceModel.Activation;
    using Terrasoft.Core;
    using Terrasoft.Web.Common;
    using Terrasoft.Core.Entities; 
	using System.Web;
	using System.Collections.Generic;
	using Terrasoft.Configuration.ImdZadarmaAPI;
	using System.Net.Http;
 
    [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    public class ImdZadarmaWebHookService: BaseService
    {
        [OperationContract]
       	[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
		public string ZadarmaWebRTCKey(string sip){
 
            //ZadarmaApi is a class that contains all the methods to work with Zadarma API
			var zadarma = new ZadarmaApi("KEY", "SECRET");
 
 
			SortedDictionary&lt;string, string&gt; parameters = new SortedDictionary&lt;string, string&gt;();			
			parameters.Add("sip", sip);
 
            var response = zadarma.Call("/v1/webrtc/get_key/", parameters, HttpMethod.Get);
            string str = (string) response.Content.ReadAsStringAsync().Result;
            return str;
		}
    }   
}

The code for ZadarmaApi class can be found here:

https://github.com/zadarma/user-api-cs-v1/blob/master/ZadarmaAPI/ZadarmaApi.cs

 

Best Regards,

Pedro Pinheiro

Show all comments

Hello,

 

I just want to know how can I display sales by country and inside this country, the sales by cities by the map widget which is present on the marketplace?

 

Thanks a lot!

Like 0

Like

5 comments

Hello Marvyn,

 

the add-on supports only sales by country. A feature of sales by cities is not included in the add-on.

Irina Lazorenko,

 Do you have any widget that can do this thing by cities?

Thanks a lot for your previous answer.

Marvyn,

 

Dev Labs team doesn't have such a widget. Try to use basic widgets to setup sales by cities (for example, charts).

This will be a good to have feature for dashboards.

Hi Marvyn,

 

You can install a mapping tool for Creatio called Mapsly where you can display your leads on the map and filter them by city or country.

Show all comments

Hi Community,

I have created a Widget, which data is already populating. Any idea how I can filter data and put header labels on the grid and add action buttons on each record in the list.

 

Like 0

Like

1 comments

Dear Fulgen,

You can add filtration an captions in the configuration of your custom widget, in case you have created it via new module. In case you use the basic system functionality of List, there is a second tab when configuring the List. where you can apply needed filtration:

In any case you can find the needed widget in the SysDashboard table. In the "Items" column you can find the configuration of your widget. Here you can indicate column captions as well as filtration ("caption". "filterData"). Dashboard configuration looks like this:

{"DashboardGrid":{"parameters":{"caption":"Top emails by audience","sectionBindingColumn":"Id","sectionId":"9de4f21c-e418-4172-9c3a-1bf1ae366b92","entitySchemaName":"BulkEmail","filterData":"{\"className\":\"Terrasoft.FilterGroup\",\"items\":{\"d357f339-ce45-4586-b832-7f2d90808db5\":{\"className\":\"Terrasoft.InFilter\",\"filterType\":4,\"comparisonType\":3,\"isEnabled\":true,\"trimDateTimeParameterToDate\":false,\"leftExpression\":{\"className\":\"Terrasoft.ColumnExpression\",\"expressionType\":0,\"columnPath\":\"Status\"},\"isAggregative\":false,\"key\":\"d357f339-ce45-4586-b832-7f2d90808db5\",\"dataValueType\":10,\"leftExpressionCaption\":\"Status\",\"referenceSchemaName\":\"BulkEmailStatus\",\"rightExpressions\":[{\"className\":\"Terrasoft.ParameterExpression\",\"expressionType\":2,\"parameter\":{\"className\":\"Terrasoft.Parameter\",\"dataValueType\":10,\"value\":{\"Name\":\"Completed\",\"Id\":\"42328932-9ad6-4512-9950-662ffba2c53c\",\"value\":\"42328932-9ad6-4512-9950-662ffba2c53c\",\"displayValue\":\"Completed\"}}},{\"className\":\"Terrasoft.ParameterExpression\",\"expressionType\":2,\"parameter\":{\"className\":\"Terrasoft.Parameter\",\"dataValueType\":10,\"value\":{\"Name\":\"Starting\",\"Id\":\"c6e21ad8-e243-4656-aafc-1312f97c4521\",\"value\":\"c6e21ad8-e243-4656-aafc-1312f97c4521\",\"displayValue\":\"Starting\"}}},{\"className\":\"Terrasoft.ParameterExpression\",\"expressionType\":2,\"parameter\":{\"className\":\"Terrasoft.Parameter\",\"dataValueType\":10,\"value\":{\"Name\":\"In progress\",\"Id\":\"7789ac0c-450b-40a3-b341-3d6b799649b4\",\"value\":\"7789ac0c-450b-40a3-b341-3d6b799649b4\",\"displayValue\":\"In progress\"}}}]}},\"logicalOperation\":0,\"isEnabled\":true,\"filterType\":6,\"rootSchemaName\":\"BulkEmail\",\"key\":\"\"}","style":"widget-navy","orderDirection":2,"orderColumn":"SendCount","rowCount":5,"gridConfig":{"items":[{"bindTo":"Name","caption":"Name","type":"link","position":{"column":0,"colSpan":16,"row":1},"aggregationType":"","metaCaptionPath":"Name","metaPath":"Name","path":"Name","serializedFilter":"{\"className\":\"Terrasoft.FilterGroup\",\"items\":{},\"logicalOperation\":0,\"isEnabled\":true,\"filterType\":6,\"key\":\"\"}"},{"bindTo":"SendStartDate","caption":"Sent on","type":"text","position":{"column":17,"colSpan":5,"row":1},"dataValueType":7,"aggregationType":"","metaCaptionPath":"Started on","metaPath":"SendStartDate","path":"SendStartDate","serializedFilter":"{\"className\":\"Terrasoft.FilterGroup\",\"items\":{},\"logicalOperation\":0,\"isEnabled\":true,\"filterType\":6,\"key\":\"\"}"},{"bindTo":"SendCount","caption":"Sent","position":{"column":22,"colSpan":2,"row":1},"dataValueType":4,"metaPath":"SendCount","path":"SendCount","orderDirection":2,"orderPosition":1}]}},"widgetType":"DashboardGrid"},"DashboardGrid1":{"parameters":{"caption":"Links by number of clicks","sectionBindingColumn":"BulkEmail","sectionId":"9de4f21c-e418-4172-9c3a-1bf1ae366b92","entitySchemaName":"BulkEmailHyperlink","style":"widget-turquoise","orderDirection":2,"orderColumn":"ClicksCount","rowCount":5,"gridConfig":{"items":[{"bindTo":"Url","caption":"URL","type":"link","position":{"column":0,"colSpan":20,"row":1},"dataValueType":1,"aggregationType":"","metaCaptionPath":"URL","metaPath":"Url","path":"Url","serializedFilter":"{\"className\":\"Terrasoft.FilterGroup\",\"items\":{},\"logicalOperation\":0,\"isEnabled\":true,\"filterType\":6,\"key\":\"\"}"},{"bindTo":"ClicksCount","caption":"No. of clicks","position":{"column":20,"colSpan":4,"row":1},"dataValueType":4,"metaPath":"ClicksCount","path":"ClicksCount","orderDirection":2,"orderPosition":1}]}},"widgetType":"DashboardGrid"}

Regards,

Anastasia

Show all comments

Hi,

 

Is it possible to have custom dynamic content block of dashboard.

Just like for example, Latest Product with image and other detail like price and availability?

Image should show on right side and other detail on right side

Any help will be highly appreciable.

 

Regards 

Like 0

Like

2 comments

Hello Muhammad!

It a pretty ambitious task, unfortunately there is no instruction how to achieve it. 
You may try to create dashboard by yourself using the out of the box ones as example. Also you may try to add the iframe to the desired page, and implement functionality in iframe. 

Best regards,
Alex

Alex_Tim,

I also thought for adding a html page on iframe but I need to show data from db on that html page

Show all comments