Лишние данные на круговой диаграмме. Не выбрать цвет для ряда. Не работают гиперссылки.

Обсуждение Stimulsoft Dashboards.WEB
Ответить
MiXaiL
Сообщения: 60
Зарегистрирован: 09 янв 2019, 00:14

Лишние данные на круговой диаграмме. Не выбрать цвет для ряда. Не работают гиперссылки.

Сообщение MiXaiL »

Пример: https://cloud.mail.ru/public/5LPa/4XMCJMJTn
Прежде, чем объяснить суть проблемы нужно описать данные таблицы в примере, иначе будет не понятно зачем и что я делаю:
В таблице хранятся статусы документов, ExecutionState это ИД статуса, ExecutionStateText их текстовое представление, в CntState собственно количество документов с этим статусом, а HyperLink ссылка на деталировку, она условная чисто для примера.
1. Для того чтоб отобразить все эти статусы на круговой диаграмме, мне требуется, чтоб каждый статус был всегда определённого цвета, т.е. Просроченные - красным, Остальные - зелёным, На текущей неделе - синим. Я нашёл один способ указать "Условия" для каждого ряда, но он работает как-то странно, в отличии от стандартных форм Stimulsoft, где это отлично работает. В Dashboard можно установить "Условия" только для поле "Значение". Я решил эту проблему, тем что в поле значение я вставил колонку ExecutionState и в зависимости от условия указал цвет, но это не работает, пример выше. Подскажите пожалуйста что мне нужно сделать для того чтоб каждый ряд в зависимости от значения ExecutionState имел свой цвет?
2. Эта форма будет отображаться на странице ASP.NET WebForms на странице aspx, вот скрипт настройки StiWebViewer:
<cc1:StiWebViewer ID="StiWebViewer1" runat="server" Width="100%" Height="100%" Localization="~/Localization/ru.xml" />
На стороне cs кода никаких дополнительных настроек нет, там только поиск файла отчёта и установка подключения к нему. Проблема заключается в том, что гиперссылка не хочет работать на такой странице, в отличие от версии в редакторе графиков, где такой проблемы нет. Если подставить в формуле выражения ячейку из таблицы, то при переходе на неё откроется следующий адрес: http://localhost/WebFasca/Pages/%7BIIF( ... %22%22)%7D, но мы обнаружили, что ссылки работают без каких-либо проблем, если не указывать какое-то поле, а указать одно из предлагаемых значений, т.е. Аргумент, Значение или же Название ряда. Поэтому мы в поле Аргумент подставили Лист.HyperLink, возможно есть более правильное решение, которое позволит нам не использовать разного рода костыли, для того чтоб это работало без проблем.
3. Для того, чтоб нам всё таки вывести название статусов в легенду мы в поле ряды указали поле ExecutionStateText, а для того чтоб корректно отображалось значение, в поле выражение указали CntState. Но после всех этих манипуляций у нас появилось куча лишних цифр на круговой диаграмме, пример выше. Мы выяснили, что избавиться от лишних значений можно если убрать например Аргумент, но мы не можем так поступить, т.к. в этом поле у нас хранится ссылка деталировку. Подскажите пожалуйста как нам поступить правильно и добиться того чтоб на графике отображались для каждого статуса своё одно правильное значение.
И ещё пару вопросов, не столь важных как перечисленные выше, скорее связанные с визуальным оформлением круговой диаграммы. Можно ли в Dashboard сделать отступ для рядов? Такое свойство есть в стандартных отчётах, при его установке ряды как бы выдвигаются за рамки круга, красивый эффект нам бы очень хотелось его повторить и на панели индикаторов. Вот как на этом скрине: https://cloud.mail.ru/public/cE5G/5HgcrXCUa
И ещё один эффект который можно увидеть на примере изображении с отступами рядов, который мы бы хотели получить это выделение значений при наведении на ряд, оно почему-то не работает для WebForms aspx, может нужно добавить какую настройку для StiWebViewer, чтоб получить такой эффект?
Извините, много получилось вопросов, просто они связаны между собой, поэтому решил их все сразу написать.
MiXaiL
Сообщения: 60
Зарегистрирован: 09 янв 2019, 00:14

Re: Лишние данные на круговой диаграмме. Не выбрать цвет для ряда. Не работают гиперссылки.

Сообщение MiXaiL »

В общем буду сейчас делиться костылями со страдальцами как и я, о том как обойти все выше перечисленные проблемы. Объяснять буду на примерах со статусами из проблемы выше.
Сначала о ссылках на рядах. Сначала, о так себе способе, который я собирался реализовать, если вам лень читать, перейдите к следующему абзацу. Как я и писал выше, в web версии ссылки работают криво, они не могут использовать выражения, и всё что вам доступно в них это 3 значения Аргумент, Серия (имя ряда) и Значение. Если подставить туда какое-то из этих значений, то у вас откроется страница, в начале будет идти относительный путь до вашего отчёта, что позволит вам создать метод в контроле и передать в него какое-то из доступных значений, после чего сделать переадресацию на корректную страницу, возможно так и задумывался этот функционал, но есть проблема... скорее всего, почти 99% случаев у вас в значениях будут разного рода числа, а в аргументах название, по которому вы считаете эти числа, и скорее всего вы захотите передать таким образом именно аргумент, который будет представлять собой что-то из разряда "Рога и Копыта", "Австралия" и т.п. вещи, это хорошо что у меня эти данные статичны и я могу передать это название и в зависимости от его значения выбрать ту ссылку, которая мне нужна, но если бы их было много это бы не прокатило. Есть более правильно решение этой проблемы, но перед тем как его объяснить нужно решить проблему с "лишними данными на круговой диаграмме".
Лишние данные на круговой диаграмме. Я разобрался с лишними данными на диаграмме и понял, что они возникают из-за добавление "Рядов", я так и не понял в чём отличие "Рядов" и "Аргумента", но не суть, важно, что от них нужно как-то избавиться. В поле "Значения" можно закидывать множество полей из вашей таблицы, по началу мне казалось это бесполезным, но потом мне пришла идея закинуть туда не одно значение, которое считает кол-во документов в разрезе по статусам, а столько сколько их есть, в моём случае потребовалось добавить туда 3 заранее посчитанных сумм по статусам. Получается у меня была всего одна строка в выборке со всеми мне необходимыми данными, а для того чтоб сразу подтянулись имена колонок я прям в выборке изменил названия столбцов на [На этой неделе], [Просроченно], [Остальные], таким образом в легенде у меня отображались названия этих столбцов и это работает идеально (если не хотите использовать русскоязычные имена столбцов в sql, то просто переименуйте ряды в блоке со значениями). После этого мне нужны были ряды, где хранились названия статусов и проблема с лишними данными была решена.
Более правильное решение с ссылками в рядах. После того как мы создали колонки с суммами и добавили их в Значения графика, мы можем добавить ссылки в поле "Аргумент", но вся проблема, в том что она теперь ведёт всегда на одну страницу, т.к. строка у нас осталась одна... Есть обходной путь, на графике не отображаются нулевые значения, а это значит мы можем для каждого статуса рассчитать свою сумму, а для остальных оставить значение ноль, в моём случае это было сделано следующим образом:
SELECT DISTINCT ExecutionState,
SUM(case when ExecutionState = 0 then 1 else 0 end) OVER(PARTITION BY ExecutionState) as [Остальные],
SUM(case when ExecutionState = 1 then 1 else 0 end) OVER(PARTITION BY ExecutionState) as [Просрочено],
SUM(case when ExecutionState = 2 then 1 else 0 end) OVER(PARTITION BY ExecutionState) as [На этой неделе]
FROM @ResultsList

После этого, вы можете для каждой строки сделать свою ссылку и она будет рабочей, если вы подставите её как аргумент в графике и в Взаимодействиях выберете пункт Args
Выбрать цвет для каждого ряда. Как оказалось это было самое сложное из всего, сейчас объясню почему. Во-первых, вы можете указать "Цвета серий", но вся проблема заключается, в том что если у вас какой-то статус будет отсутствовать, то последующий за ним подхватит его цвет, а я напомню, что цвета должны всегда быть для каждого статуса свои. Во-вторых, в "Условии" вы пишете условие ТОЛЬКО для первого пункта в списке ваших значений и не важно, что там их может быть несколько и какое-то из них может удовлетворять условию, например изначально я выбрал каждый свой статус в списке условий и указал, что если значение больше нуля, то покажи вот такой цвет и это мне кажется было бы логичным решением, но нет, только первое в списке... К сожалению, я могу предложить лишь вариант, который сработал для меня, и к сожалению не могу объяснить почему он работает. Я добавил в "Условие" один из статусов и он начал работать как следует, для остальных двух я добавил цвета в "Цвета серий", после чего у меня удивительным образом всё начало работать корректно, если отсутствовал один из статусов, то остальные подхватывали свой цвет, даже если оставался один статус, то он всё равно подхватывает, то что нужно, в общем этот момент для меня остался загадкой, но я рад что это заработало.
Надеюсь это кому-нибудь поможет.
MiXaiL
Сообщения: 60
Зарегистрирован: 09 янв 2019, 00:14

Re: Лишние данные на круговой диаграмме. Не выбрать цвет для ряда. Не работают гиперссылки.

Сообщение MiXaiL »

Ещё остались пункты связанные с визуальными эффектами, которые во-первых бы выделяли бы ряды при наведении и добавляли бы отступ между рядами, но как я понял, что это сделать не возможно, т.к. я детально разобрал API графика и ничего подобного не нашёл.
Aleksey
Сообщения: 2907
Зарегистрирован: 22 апр 2010, 06:57

Re: Лишние данные на круговой диаграмме. Не выбрать цвет для ряда. Не работают гиперссылки.

Сообщение Aleksey »

Здравствуйте,

Нашли несколько проблем с сериями и условиями, исправим к следующему билду.
Условия можно добавлять по всем значениям добавленым в чарт - значение, аргумент, серия.


> Ещё остались пункты связанные с визуальными эффектами, которые во-первых бы выделяли бы ряды при наведении и добавляли бы отступ между рядами, но как я понял, что это сделать не возможно, т.к. я детально разобрал API графика и ничего подобного не нашёл.

Добавили на рассмотрение в список дел. Возможно, добавим данный функционал в будущем.

Спасибо.
Вложения
image_2020-08-27_10-19-16.png
image_2020-08-27_10-19-16.png (45.84 КБ) 8692 просмотра
image_2020-08-27_10-20-23.png
image_2020-08-27_10-20-23.png (103.17 КБ) 8692 просмотра
Artem Cherniavsky
Сообщения: 49
Зарегистрирован: 08 окт 2012, 17:34

Re: Лишние данные на круговой диаграмме. Не выбрать цвет для ряда. Не работают гиперссылки.

Сообщение Artem Cherniavsky »

Здравствуйте.
Мы сделали небольшие доработки в работе "Условий" для Pie диаграммы.
В следующем релизе ваша диаграмме при данных условиях (как на картинке) будет данного вида:
Вложения
Pie.png
Pie.png (78.13 КБ) 8690 просмотров
MiXaiL
Сообщения: 60
Зарегистрирован: 09 янв 2019, 00:14

Re: Лишние данные на круговой диаграмме. Не выбрать цвет для ряда. Не работают гиперссылки.

Сообщение MiXaiL »

Спасибо! И добавьте пожалуйста эффект наведения на ряд и отступ для них как в стандартных диаграммах в версии для отчётов :)
Если будет время, то сделайте для кольцевой диаграммы возможность отображать значения за пределами рядов, знаю я уже перегибаю, но очень хочется :)
Artem Cherniavsky
Сообщения: 49
Зарегистрирован: 08 окт 2012, 17:34

Re: Лишние данные на круговой диаграмме. Не выбрать цвет для ряда. Не работают гиперссылки.

Сообщение Artem Cherniavsky »

1. Мы стараемся аккуратно переносить функционал из отчетов и постепенно его добавляем.
2. Для кольцевых диаграмм это немного спорный момент. Не очень понятно как отображать лейблы за пределами кольца, когда их более одного.

Спасибо.
MiXaiL
Сообщения: 60
Зарегистрирован: 09 янв 2019, 00:14

Re: Лишние данные на круговой диаграмме. Не выбрать цвет для ряда. Не работают гиперссылки.

Сообщение MiXaiL »

Вот так можно отображать значения для кольцевых диаграммах: https://cloud.mail.ru/public/4rht/eyUHpLVrd
Не совсем понимаю разницу между кольцевой и круглой.
Artem Cherniavsky
Сообщения: 49
Зарегистрирован: 08 окт 2012, 17:34

Re: Лишние данные на круговой диаграмме. Не выбрать цвет для ряда. Не работают гиперссылки.

Сообщение Artem Cherniavsky »

Здравствуйте.

Когда более одной серии, круговая отображается как на картинке. И тогда выносные лейблы будут пересекать кольца и отображение будет так себе.

Спасибо.
Вложения
1.png
1.png (42.86 КБ) 8665 просмотров
Ответить