Динамически устанавливать интервалы для виджета "Шкала" на странице
Каким образом можно динамически устанавливать интервалы для виджета "Шкала" на странице?
Например, в зависимости от клиента (его предыдущей истории покупок) должны рассчитываться его интервалы (красный, желтый, зелёный)![]()
Нравится
Владимир, существующая реализация компонента Gauge отображает изменения только цифры в центре, а 4 других параметра, означающие границы цветов, задаются в настройках и хранятся в json-конфиге в SysDashboard:
"Gauge":{
"parameters":{
"caption":"Closed cases",
"entitySchemaName":"Case",
"filterData":"{\"className\":\"Terrasoft.FilterGroup\",\"items\":{\"12f77c73-1263-4d79-b397-8f55e2f8653e\":{\"className\":\"Terrasoft.CompareFilter\",\"filterType\":1,\"comparisonType\":3,\"isEnabled\":true,\"trimDateTimeParameterToDate\":false,\"leftExpression\":{\"className\":\"Terrasoft.ColumnExpression\",\"expressionType\":0,\"columnPath\":\"Status.IsFinal\"},\"isAggregative\":false,\"key\":\"12f77c73-1263-4d79-b397-8f55e2f8653e\",\"dataValueType\":12,\"leftExpressionCaption\":\"Status.Status is final\",\"rightExpression\":{\"className\":\"Terrasoft.ParameterExpression\",\"expressionType\":2,\"parameter\":{\"className\":\"Terrasoft.Parameter\",\"dataValueType\":12,\"value\":true}}}},\"logicalOperation\":0,\"isEnabled\":true,\"filterType\":6,\"rootSchemaName\":\"Case\",\"key\":\"\"}",
"aggregationType":1,
"style":"widget-navy",
"orderDirection":1,
"min":0,
"middleFrom":5,
"middleTo":8,
"max":10
},
"widgetType":"Gauge"
}А в GaugeDashboardItemData с ними работают:
/// <summary>
/// Returns data for indicator dashboard item.
/// </summary>
public override JObject GetJson() {
JObject itemObject = base.GetJson();
CopyProperties(itemObject);
if (string.IsNullOrEmpty(GetSchemaName())) {
return itemObject;
}
GaugeDashboardItemSelectBuilder selectBuilder = GetSelectBuilder();
object value = GetData(selectBuilder);
itemObject["dataValueType"] = selectBuilder.ColumnDataValueType;
itemObject.Add(new JProperty("data", value));
itemObject["min"] = Parameters.Value<int?>("min");
itemObject["middleFrom"] = Parameters.Value<int?>("middleFrom");
itemObject["middleTo"] = Parameters.Value<int?>("middleTo");
itemObject["max"] = Parameters.Value<int?>("max");
itemObject["orderDirection"] = Parameters.Value<int?>("orderDirection");
return itemObject;
}То есть Вам надо будет делать свои аналоги GaugeDashboardItemData, GaugeModule (отображение в итогах), GaugeDesigner (окно настроек), где с ними работают, Возможно, понадобится ещё что-то изменить или просто скопировать с другим названием GaugeChartJsConfigBuilder.