powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [ZEN Reports] Как настроить формат чисел по оси Y
10 сообщений из 10, страница 1 из 1
[ZEN Reports] Как настроить формат чисел по оси Y
    #39010456
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеем ось Y. Можно сделать шаг между линиями по Y (0, 5, 10, 15 и т.д). Здесь проблем нет.
Проблема в следующем. Если значения меньше 0, то Cache обрубает 0 и выводит в виде
".3" (без нуля перед точкой), что очень не удобно.
Хочется видеть значение по оси Y в виде формата "0.300". Та же проблема более 100000 (ста тысяч). При этом, если будет даже вилка значений 110-112, он все равно будет выдавать 110.1К 111.7К, что иногда хорошо, а иногда очень неудобно.

Вообще, в этом плане Каше очень непредсказуем.
В одном случае - выводит как надо, а если генерировать отчёт, то может запросто обрезать половину цифр формата по оси Y.
Где эти настройки? Очень неудобно видеть на экране ".3", которое вечно путаешь с "3". Гораздо приятнее видеть "0.300" и тогда всё предельно ясно.
Подозреваю, что это настраивается через изменение класса (предустановок Cache), но пробовал, не нашёл.

Просьба помочь или хотя бы указать направление где искать.

Работаю с графиками.
Вывод графиков через ZEN и PDF отчёты. С DeepSee Не работаю.
Cache версии 2013.2.0.388
...
Рейтинг: 0 / 0
[ZEN Reports] Как настроить формат чисел по оси Y
    #39010469
eduard93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О, а можно выложить xml с классом отчёта (желательно только с осью Y)? В смысле отчёт с одним этим графиком и всё.

Если используете Chart то посмотрите %ZEN.Report.Display.Chart.chart, там свойство:

/// Internal property that references this charts <class>yaxis</class> object.
Property yAxis As %ZEN.Report.Display.Chart.axis(XMLPROJECTION = "none");

В крайнем случае можно посмотреть как генерируется HTML, отнаследоваться и параметризовать.
...
Рейтинг: 0 / 0
[ZEN Reports] Как настроить формат чисел по оси Y
    #39010530
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О ,
Решение обеих проблемClass demo.report Extends %ZEN.Report.reportPage
{

Parameter DEFAULTMODE = "html";

XData ReportDefinition [ XMLNamespace = " http://www.intersystems.com/zen/report/definition"  ]
{
  <report xmlns=" http://www.intersystems.com/zen/report/definition"  name="test" runonce="true">
  </report>
}

XData ReportDisplay [ XMLNamespace = " http://www.intersystems.com/zen/report/display"  ]
{
<report xmlns=" http://www.intersystems.com/zen/report/display"  name="test">
  <document width="8.5in" height="11in" marginLeft="1.25in" marginRight="1.25in" marginTop="1.0in" marginBottom="1.0in" headerHeight="1in"/>
  <body>
    <cbarChart
      width="500"
      height="400"
      ongetData="getChartData0"
      ongetLabelY="getSeriesNameY"
    >
      <yAxis minValue="0.001" maxValue="0.123"/>
    </cbarChart>
    <cbarChart
      width="500"
      height="400"
      ongetData="getChartData100000"
      ongetLabelY="getSeriesNameY"
    >
      <yAxis minValue="100000" maxValue="300000"/>
    </cbarChart>
  </body>
</report>
}

Method getChartData0(
  ByRef data,
  chartObject)
{
  s data(0,0) = 0.1
  s data(0,1) = 0.001
  s data(0,2) = 0.123
}

Method getChartData100000(
  ByRef data,
  chartObject)
{
  s data(0,0) = 100000
  s data(0,1) = 200000
  s data(0,2) = 300000
}

Method getSeriesNameY(
  value,
  yAxisNo,
  chartObject)
{
  q:$e(value,1)="." "0"_value
  q value
}

}
...
Рейтинг: 0 / 0
[ZEN Reports] Как настроить формат чисел по оси Y
    #39010537
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit,

может в getSeriesNameY, все таки лучше воспользоваться $fnumber или $justify, они и ноль впереди добавят, и отформатируют нормально число, и округление будет, при необходимости.
...
Рейтинг: 0 / 0
[ZEN Reports] Как настроить формат чисел по оси Y
    #39010549
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorможет в getSeriesNameY, все таки лучше воспользоваться $fnumber или $justify, они и ноль впереди добавят, и отформатируют нормально число, и округление будет, при необходимости.Тогда лучше воспользоваться параметром valueLabelFormat и уже его учитывать при форматировании:<cbarChart
  width="500"
  height="400"
  ongetData="getChartData0"
  ongetLabelY="getSeriesNameY"
  valueLabelFormat="#.##"
>
  <yAxis minValue="0.001" maxValue="0.123"/>
</cbarChart>
<cbarChart
  width="500"
  height="400"
  ongetData="getChartData100000"
  ongetLabelY="getSeriesNameY"
>
  <yAxis minValue="100000" maxValue="300000"/>
</cbarChart>

Method getSeriesNameY(
  value,
  yAxisNo,
  chartObject)
{
  s format = chartObject.valueLabelFormat
  s format = $s(format'="" : format, 1 : $s(($$$FLOOR(value)'=value):"#,#.##", 1:"#,#"))
  q ##class(%DeepSee.ResultSet).%FormatNumber(value,format)
}
...
Рейтинг: 0 / 0
[ZEN Reports] Как настроить формат чисел по оси Y
    #39010575
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

Попробовал ваш вариант.
Вроде работает, но наполовину.
Привожу снимок, что было, что получилось и что получается при генерации на других графиках.
...
Рейтинг: 0 / 0
[ZEN Reports] Как настроить формат чисел по оси Y
    #39010577
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMorservit,

может в getSeriesNameY, все таки лучше воспользоваться $fnumber или $justify, они и ноль впереди добавят, и отформатируют нормально число, и округление будет, при необходимости.


Выдаёт ошибку.
Вот что написал
Вместо
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Method getSeriesNameY(value, yAxisNo, chartObject)
{
  q:$e(value,1)="." "0"_value
  q value
}


Написал (ввёл) [  $FNUMBER(inumber,format,decimal)  ]:

Method getSeriesNameY(value, yAxisNo, chartObject)
{
  q:$e(value,1)=$FNumber(value,",",3)
  q value
}
...
Рейтинг: 0 / 0
[ZEN Reports] Как настроить формат чисел по оси Y
    #39010580
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
выражение "$justify" ни к чему не приводит. Также нет нуля перед десятичным знаком и так же нет нолей после цифр.

Команда "$fnumber " так же ни к чему не приводит. Также нет нуля перед десятичным знаком и так же нет нолей после цифр. Проверил только что.
...
Рейтинг: 0 / 0
[ZEN Reports] Как настроить формат чисел по оси Y
    #39010587
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit, Спасибо.

Честно говоря, я понял только треть из вашего кода.

Код: plsql
1.
2.
3.
4.
5.
{
  s format = chartObject.valueLabelFormat
  s format = $s(format'="" : format, 1 : $s(($$$FLOOR(value)'=value):"#,#.##", 1:"#,#"))
  q ##class(%DeepSee.ResultSet).%FormatNumber(value,format)
}



Но результат тот что нужно.
Перед точкой стоит ноль, а после ноля три знака после запятой (правда я добавил по одной решётке еще, иначе было всего два знака после запятой).
Еще раз спасибо.
Вот что получилось.
...
Рейтинг: 0 / 0
[ZEN Reports] Как настроить формат чисел по оси Y
    #39010592
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, если не водить строчку кода

Код: plsql
1.
  valueLabelFormat="#.##"



в код (тело кода) создания графиков
Код: plsql
1.
2.
3.
4.
5.
6.
<cbarChart
  width="500"
  height="400"
  ongetData="getChartData0"
  ongetLabelY="getSeriesNameY"
  valueLabelFormat="#.##"



то ноль у нас будет просто нулём - "0"
а если ввести
Код: plsql
1.
valueLabelFormat="#.###" 


то получим на графиках "0.000"
Что придаёт некоторый шарм в виде зрительного выделения нулевой линии по оси Y

Всем большое спасибо и особенно Servit из г. Кишинёв.
Проблема решена.
.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [ZEN Reports] Как настроить формат чисел по оси Y
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]