Добрый день!

Есть задача: показать в итогах динамику изменения запросов по услугам (которых более 40). Выводить все 40 слишком глупо, а хардкодить какие-то 5 не правильно.

Поэтому возникла идея - реализовать фильтрацию непосредственно на графике, чтобы пользователь мог по нажатию на кнопку выбрать 1-5 сервиса из всех и построились бы эти самые 1-5 графиков.

Пока я вижу нюансы:
1) надо реализовать новый график с кнопкой

2) надо реализовать автодобавление серий в графике

Если кто-то решал хотя бы одну из этих задач - был бы признателен за помощь в реализации

Нравится

1 комментарий

Настройки графиков хранятся в таблице 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 (вероятно, и остальные будут там же). Теоретически, можно программно формировать этот текст и добавлять или удалять серии. А как дать каждому свои графики, можно попробовать раздавать права доступа на записи в этой таблице и каждому показывать только свою.

Показать все комментарии