Динамически устанавливать интервалы для виджета "Шкала" на странице
Каким образом можно динамически устанавливать интервалы для виджета "Шкала" на странице?
Например, в зависимости от клиента (его предыдущей истории покупок) должны рассчитываться его интервалы (красный, желтый, зелёный)
Нравится
Владимир, существующая реализация компонента 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.