http://wiki.bitel.ru/index.php?title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D0%B5_%D0%BE%D1%82%D1%87%D1%91%D1%82%D1%8B_%D0%B2_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%BC_%D0%BA%D0%BE%D0%B4%D0%B5&feed=atom&action=history
Табличные отчёты в динамическом коде - История изменений
2024-03-28T08:32:35Z
История изменений этой страницы в вики
MediaWiki 1.15.1
http://wiki.bitel.ru/index.php?title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D0%B5_%D0%BE%D1%82%D1%87%D1%91%D1%82%D1%8B_%D0%B2_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%BC_%D0%BA%D0%BE%D0%B4%D0%B5&diff=5775&oldid=prev
DimOn в 11:49, 30 января 2014
2014-01-30T11:49:34Z
<p></p>
<table style="background-color: white; color:black;">
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">← Предыдущая</td>
<td colspan='2' style="background-color: white; color:black;">Версия 11:49, 30 января 2014</td>
</tr>
<tr><td colspan="2" class="diff-lineno">Строка 10:</td>
<td colspan="2" class="diff-lineno">Строка 10:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div> <textField name="size" title="Размер" textBefore="сторона" textAfter="единиц"/></div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div> <textField name="size" title="Размер" textBefore="сторона" textAfter="единиц"/></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div></report></source></div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div></report></source></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Динамический класс должен реализовывать интерфейс "bitel.billing.server.reports.BGCSVReport.CSVFillerDataFields" или "bitel.billing.server.reports.BGCSVReport.CSVFillerData" в зависимости от того, хотите ли вы задавать столбцы в классе или в файле-описании.</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Динамический класс package ru.bitel.bgbilling.modules.reports.ShapeReport;</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Динамический класс package ru.bitel.bgbilling.modules.reports.ShapeReport;</div></td></tr>
<!-- diff generator: internal 2024-03-28 08:32:35 -->
</table>
DimOn
http://wiki.bitel.ru/index.php?title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D0%B5_%D0%BE%D1%82%D1%87%D1%91%D1%82%D1%8B_%D0%B2_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%BC_%D0%BA%D0%BE%D0%B4%D0%B5&diff=5774&oldid=prev
DimOn: Новая страница: «Перепишем отчёт, приведённый в статье "Табличные отчёты с динамическими столбцами" в ви…»
2014-01-30T11:47:46Z
<p>Новая страница: «Перепишем отчёт, приведённый в статье "<a href="/index.php/%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D0%B5_%D0%BE%D1%82%D1%87%D1%91%D1%82%D1%8B_%D1%81_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%BC%D0%B8_%D1%81%D1%82%D0%BE%D0%BB%D0%B1%D1%86%D0%B0%D0%BC%D0%B8" title="Табличные отчёты с динамическими столбцами">Табличные отчёты с динамическими столбцами</a>" в ви…»</p>
<p><b>Новая страница</b></p><div>Перепишем отчёт, приведённый в статье "[[Табличные отчёты с динамическими столбцами]]" в виде динамического кода вместо классического использования BGBS в файле "*.java".<br />
<br />
kernel_test_anycolumn_dyncode.rep.xml<br />
<source lang="xml"><?xml version="1.0" encoding="UTF-8"?><br />
<report title="Произвольно столбцов на динамическом коде" dyn_class="ru.bitel.bgbilling.modules.reports.ShapeReport" type="java"><br />
<combo name="mode" title="Фигура"><br />
<item id="1" title="Квадрат"/><br />
<item id="2" title="Круг"/><br />
</combo><br />
<textField name="size" title="Размер" textBefore="сторона" textAfter="единиц"/><br />
</report></source><br />
<br />
Динамический класс package ru.bitel.bgbilling.modules.reports.ShapeReport;<br />
<br />
<source lang="java">package ru.bitel.bgbilling.modules.reports;<br />
<br />
import java.sql.Connection;<br />
import java.util.ArrayList;<br />
import java.util.HashMap;<br />
import java.util.List;<br />
import java.util.Map;<br />
<br />
import bitel.billing.server.admin.reports.BGReportFilter;<br />
import bitel.billing.server.reports.BGCSVReport.ReportResult;<br />
<br />
/**<br />
* Готовый тестовый класс для отчёта "Произвольно столбцов на динамическом коде" (kernel_test_anycolumn_dyncode.rep.xml)<br />
* По аналогии с отчётом kernel_test_anycolumn_java<br />
* @author dimon<br />
*/<br />
public class ShapeReport<br />
implements bitel.billing.server.reports.BGCSVReport.CSVFillerDataFields<br />
{<br />
@Override<br />
public void fillReport( Connection con, BGReportFilter filter, ReportResult result, Map<String, String> fields )<br />
{<br />
int mode = filter.getIntParam( "mode", 1 );<br />
int size = filter.getIntParam( "size", 13 );<br />
<br />
List<Map<String, String>> data = new ArrayList<Map<String, String>>( 1000 );<br />
<br />
// формируем данные для самой таблицы<br />
for(int row=0; row<size; row++)<br />
{<br />
Map<String, String> map = new HashMap<String, String>();<br />
for(int col=0; col<size; col++)<br />
{<br />
if( mode == 1 || iscircleable(row, col, size) ) // если квадрат или точка внутри круга<br />
{<br />
map.put( "c"+col, String.valueOf( row+1 ) + "/" + String.valueOf( col+1 ) );<br />
}<br />
} <br />
data.add( map );<br />
}<br />
<br />
result.setData( data );<br />
<br />
// формируем данные о столбцах<br />
for(int col=0; col<size; col++)<br />
{<br />
String colid = "c"+col;<br />
String colname = String.valueOf( col+1 );<br />
int colwidth = 24 + col;<br />
fields.put( colid, colname +"##" + String.valueOf( colwidth ) );<br />
}<br />
}<br />
<br />
public static boolean iscircleable(int row, int col, int size)<br />
{<br />
double r = size/2.0d;<br />
double x = col - r;<br />
double y = row - r;<br />
return Math.sqrt(x*x+y*y)<=r;<br />
}<br />
}</source><br />
<br />
{{Актуальность Версии|версия=6.1}}</div>
DimOn