Добрый день!
Есть задача: показать в итогах динамику изменения запросов по услугам (которых более 40). Выводить все 40 слишком глупо, а хардкодить какие-то 5 не правильно.
Поэтому возникла идея - реализовать фильтрацию непосредственно на графике, чтобы пользователь мог по нажатию на кнопку выбрать 1-5 сервиса из всех и построились бы эти самые 1-5 графиков.
Пока я вижу нюансы:
1) надо реализовать новый график с кнопкой
2) надо реализовать автодобавление серий в графике
Если кто-то решал хотя бы одну из этих задач - был бы признателен за помощь в реализации
Нравится
Настройки графиков хранятся в таблице SysDashboard, где одна строка соответствует одной вкладке итогов (таких как «Статистика по обращениям за квартал» в разделе «Обращения»).
Расположение графиков сериализированно в текстовом поле ViewConfig, а сами графики и их серии — в Items. Например, графику «Динамика регистрации и закрытия обращений» с двумя сериями «Количество закрытых» и «Количество зарегистрированных» соответствует код:
"Chart2":{ "parameters":{ "seriesConfig":[ { "primaryColumnName":"Id", "yAxisConfig":{ "position":0 }, "schemaName":"Case", "func":1, "type":"line", "xAxisColumn":"RegisteredOn", "XAxisCaption":"", "YAxisCaption":"Количество зарегистрированных", "styleColor":"widget-coral", "filterData":"{\"className\":\"Terrasoft.FilterGroup\",\"items\":{\"5b0dd07d-63de-44e0-9801-b744333e1176\":{\"className\":\"Terrasoft.CompareFilter\",\"filterType\":1,\"comparisonType\":3,\"isEnabled\":true,\"trimDateTimeParameterToDate\":true,\"leftExpression\":{\"className\":\"Terrasoft.ColumnExpression\",\"expressionType\":0,\"columnPath\":\"RegisteredOn\"},\"isAggregative\":false,\"key\":\"5b0dd07d-63de-44e0-9801-b744333e1176\",\"dataValueType\":7,\"leftExpressionCaption\":\"Дата регистрации\",\"rightExpression\":{\"className\":\"Terrasoft.FunctionExpression\",\"expressionType\":1,\"functionType\":1,\"macrosType\":13}}},\"logicalOperation\":0,\"isEnabled\":true,\"filterType\":6,\"rootSchemaName\":\"Case\",\"key\":\"\"}" } ], "orderBy":"GroupByField", "orderDirection":"Ascending", "dateTimeFormat":"Day;Month", "caption":"Динамика регистрации и закрытия обращений", "sectionId":"c97824d9-3952-4d5e-9a5b-c6c468bf555a", "primaryColumnName":"Id", "yAxisConfig":{ "position":0 }, "schemaName":"Case", "func":1, "type":"line", "xAxisColumn":"ClosureDate", "XAxisCaption":"", "YAxisCaption":"Количество закрытых", "styleColor":"widget-dark-turquoise", "filterData":"{\"className\":\"Terrasoft.FilterGroup\",\"items\":{\"da33da51-d43b-4eed-a25c-665dfaeb11ea\":{\"className\":\"Terrasoft.CompareFilter\",\"filterType\":1,\"comparisonType\":3,\"isEnabled\":true,\"trimDateTimeParameterToDate\":true,\"leftExpression\":{\"className\":\"Terrasoft.ColumnExpression\",\"expressionType\":0,\"columnPath\":\"ClosureDate\"},\"isAggregative\":false,\"key\":\"da33da51-d43b-4eed-a25c-665dfaeb11ea\",\"dataValueType\":7,\"leftExpressionCaption\":\"Дата закрытия\",\"rightExpression\":{\"className\":\"Terrasoft.FunctionExpression\",\"expressionType\":1,\"functionType\":1,\"macrosType\":13}}},\"logicalOperation\":0,\"isEnabled\":true,\"filterType\":6,\"rootSchemaName\":\"Case\",\"key\":\"\"}" }, "widgetType":"Chart" },
Как видим, первая серия — в основной части, вторая — в массиве seriesConfig (вероятно, и остальные будут там же). Теоретически, можно программно формировать этот текст и добавлять или удалять серии. А как дать каждому свои графики, можно попробовать раздавать права доступа на записи в этой таблице и каждому показывать только свою.