|
[ZEN Reports] Как настроить формат чисел по оси Y
|
|||
---|---|---|---|
#18+
Имеем ось 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2015, 14:11 |
|
[ZEN Reports] Как настроить формат чисел по оси Y
|
|||
---|---|---|---|
#18+
О-О-О, а можно выложить 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, отнаследоваться и параметризовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2015, 15:23 |
|
[ZEN Reports] Как настроить формат чисел по оси Y
|
|||
---|---|---|---|
#18+
О-О-О , Решение обеих проблем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 } } ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2015, 16:55 |
|
[ZEN Reports] Как настроить формат чисел по оси Y
|
|||
---|---|---|---|
#18+
servit, может в getSeriesNameY, все таки лучше воспользоваться $fnumber или $justify, они и ноль впереди добавят, и отформатируют нормально число, и округление будет, при необходимости. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2015, 17:18 |
|
[ZEN Reports] Как настроить формат чисел по оси Y
|
|||
---|---|---|---|
#18+
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) } ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2015, 18:02 |
|
[ZEN Reports] Как настроить формат чисел по оси Y
|
|||
---|---|---|---|
#18+
servit, Попробовал ваш вариант. Вроде работает, но наполовину. Привожу снимок, что было, что получилось и что получается при генерации на других графиках. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2015, 19:32 |
|
[ZEN Reports] Как настроить формат чисел по оси Y
|
|||
---|---|---|---|
#18+
DAiMorservit, может в getSeriesNameY, все таки лучше воспользоваться $fnumber или $justify, они и ноль впереди добавят, и отформатируют нормально число, и округление будет, при необходимости. Выдаёт ошибку. Вот что написал Вместо Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2015, 19:38 |
|
[ZEN Reports] Как настроить формат чисел по оси Y
|
|||
---|---|---|---|
#18+
выражение "$justify" ни к чему не приводит. Также нет нуля перед десятичным знаком и так же нет нолей после цифр. Команда "$fnumber " так же ни к чему не приводит. Также нет нуля перед десятичным знаком и так же нет нолей после цифр. Проверил только что. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2015, 19:43 |
|
[ZEN Reports] Как настроить формат чисел по оси Y
|
|||
---|---|---|---|
#18+
servit, Спасибо. Честно говоря, я понял только треть из вашего кода. Код: plsql 1. 2. 3. 4. 5.
Но результат тот что нужно. Перед точкой стоит ноль, а после ноля три знака после запятой (правда я добавил по одной решётке еще, иначе было всего два знака после запятой). Еще раз спасибо. Вот что получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2015, 19:54 |
|
[ZEN Reports] Как настроить формат чисел по оси Y
|
|||
---|---|---|---|
#18+
Кстати, если не водить строчку кода Код: plsql 1.
в код (тело кода) создания графиков Код: plsql 1. 2. 3. 4. 5. 6.
то ноль у нас будет просто нулём - "0" а если ввести Код: plsql 1.
то получим на графиках "0.000" Что придаёт некоторый шарм в виде зрительного выделения нулевой линии по оси Y Всем большое спасибо и особенно Servit из г. Кишинёв. Проблема решена. . ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2015, 20:01 |
|
|
start [/forum/topic.php?fid=39&msg=39010580&tid=1556615]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 141ms |
0 / 0 |