SpagoBI新需要改造:tableChartsレポートの実現
9513 ワード
バージョン:spagobi 4.2
要求:1)tableはextjsで、ページを分けることができて、濾過することができます;
2)tableの1行をクリックすると、chartと連動し、chartはhighchartを使用します.
知識の蓄積:
動的にcolumnを作成するには:
var GroupRecord = Ext.data.Record.create([
{name: 'title', type: 'string'},
{name: 'icon', type: 'string'},
{name: 'samples', type: 'string'}
]);
一、使用可能なページ要素
ページ:1)WEB-INF/jsp/commons/importSbiJS.jspf(必要なjsファイルがたくさん導入されています)
2)/WEB-INF/jsp/analiticalmodel/documentbrowser/userDocumentBrowser.jsp
2)/WEB-INF/jsp/engines/chart/highchart.jsp(chartはこのページでレンダリングされます);
jsファイル:/web-content/js/src/ext/sbi/engines/chart/HighchartsPanel.js
/web-content/js/src/ext/sbi/execution/DocumentExecutionPage.js
バックグラウンドからhighchartを読み込むには:
1)sbi_からbinary_contents studioから渡された構成テンプレートを読み込む
SpagoBIChartInternalEngineのgetTemplate(String documentId)メソッドでのクエリー//
この方法は2つのことをします.
1.1)クエリーテンプレート.
ObjTemplate template = DAOFactory.getObjTemplateDAO().getBIObjectActiveTemplate(Integer.valueOf(documentId));
1.2)データベースから読み込まれたテンプレートをSourceBeanに変換する.(中の注釈など無駄なものは抜きにしました)
String contentStr = new String(contentBytes);
SourceBean content = SourceBean.fromXMLString(contentStr);
2//xmlファイルオブジェクトsourceBeanをhighchartのconfigで認識できるjsonオブジェクトフォーマットに変換します.
//converts the template from xml to json format
JSONTemplateUtils.getJSONTemplateFromXml(SourceBean xmlTemplate, JSONArray parsJSON)//73
3)responseはフロントエンドに応答する.publisherNameで指定した論理ビューに基づいて戻るページを見つけるには
要求:1)tableはextjsで、ページを分けることができて、濾過することができます;
2)tableの1行をクリックすると、chartと連動し、chartはhighchartを使用します.
知識の蓄積:
動的にcolumnを作成するには:
var GroupRecord = Ext.data.Record.create([
{name: 'title', type: 'string'},
{name: 'icon', type: 'string'},
{name: 'samples', type: 'string'}
]);
一、使用可能なページ要素
ページ:1)WEB-INF/jsp/commons/importSbiJS.jspf(必要なjsファイルがたくさん導入されています)
2)/WEB-INF/jsp/analiticalmodel/documentbrowser/userDocumentBrowser.jsp
2)/WEB-INF/jsp/engines/chart/highchart.jsp(chartはこのページでレンダリングされます);
jsファイル:/web-content/js/src/ext/sbi/engines/chart/HighchartsPanel.js
/web-content/js/src/ext/sbi/execution/DocumentExecutionPage.js
バックグラウンドからhighchartを読み込むには:
1)sbi_からbinary_contents studioから渡された構成テンプレートを読み込む
SpagoBIChartInternalEngineのgetTemplate(String documentId)メソッドでのクエリー//
この方法は2つのことをします.
1.1)クエリーテンプレート.
ObjTemplate template = DAOFactory.getObjTemplateDAO().getBIObjectActiveTemplate(Integer.valueOf(documentId));
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- see highcharts' documentation to view all possible options (http://www.highcharts.com/ref) -->
<HIGHCHART width="100%" height="100%" >
<CHART type="waterfall" zoomType='xy'/>
<TITLE text="$F{ANAG} Trend" color="#325072"/>
<SUBTITLE text= "Year: 2012 - State: $P{state}" />
<COLORS_LIST>
<COLORS color="#123a9c" upColor="#90ee90" downColor="#b30f00" sumColor="#66b266 "/>
</COLORS_LIST>
<LEGEND enabled='false'/>
<X_AXIS alias='name' type='category' >
<TITLE text= "" />
</X_AXIS>
<Y_AXIS_LIST>
<Y_AXIS min="0" lineWidth="1" alias='VALUE' >
<TITLE text= "" />
<!--LABELS formatter='userFunction(this.value + " $")' /-->
</Y_AXIS>
</Y_AXIS_LIST>
<PLOT_OPTIONS>
<WATERFALL enableMouseTracking='true'>
<DATA_LABELS enabled='true' formatter='numberFormat(0,",",".")' inside='false'>
<STYLE color='black' fontSize='12px'/>
</DATA_LABELS>
</WATERFALL>
</PLOT_OPTIONS>
<SERIES_LIST>
<SERIES alias="NAME,VALUE" isIntSumAlias="ISINTSUM" isSumAlias="ISSUM" colorAlias="color" />
</SERIES_LIST>
<!-- tooltip object properties
<TOOLTIP enabled='true' shadow='true' formatter='x_y'>
<STYLE color='#26783f' fontSize='12px' padding='2px' />
</TOOLTIP> -->
<!--TOOLTIP backgroundColor='#FCFFC5' enabled='true' shadow='true' formatter='userFunction(this.point.x + "</b> : <b>"+ this.point.y +"</b>M </b> eur")' >
<STYLE color='#4572A7' fontSize='12px' padding='2px' />
</TOOLTIP-->
<!--TOOLTIP backgroundColor='#FCFFC5' enabled='true' shadow='true' text=' {CATEGORY} : {SERIE}'>
<STYLE color='#4572A7' fontSize='12px' padding='2px' />
</TOOLTIP-->
<TOOLTIP backgroundColor='#FCFFC5' enabled='true' shadow='true' pointFormat=":{point.y}</b><br/>" valueDecimals="0" valuePrefix='' valueSuffix=' $' shared="true" >
<STYLE color='#4572A7' fontSize='12px' padding='2px' />
</TOOLTIP>
</HIGHCHART>
1.2)データベースから読み込まれたテンプレートをSourceBeanに変換する.(中の注釈など無駄なものは抜きにしました)
String contentStr = new String(contentBytes);
SourceBean content = SourceBean.fromXMLString(contentStr);
<?xml version="1.0" encoding="ISO-8859-1"?>
<HIGHCHART height="100%" width="100%">
<CHART type="waterfall" zoomType="xy"/>
<TITLE color="#325072" text="$F{ANAG} Trend"/>
<SUBTITLE text="Year: 2012 - State: $P{state}"/>
<COLORS_LIST>
<COLORS color="#123a9c" downColor="#b30f00" sumColor="#66b266 " upColor="#90ee90"/>
</COLORS_LIST>
<LEGEND enabled="false"/>
<X_AXIS alias="name" type="category">
<TITLE text=""/>
</X_AXIS>
<Y_AXIS_LIST>
<Y_AXIS alias="VALUE" lineWidth="1" min="0">
<TITLE text=""/>
</Y_AXIS>
</Y_AXIS_LIST>
<PLOT_OPTIONS>
<WATERFALL enableMouseTracking="true">
<DATA_LABELS enabled="true" formatter="numberFormat(0,",",".")" inside="false">
<STYLE color="black" fontSize="12px"/>
</DATA_LABELS>
</WATERFALL>
</PLOT_OPTIONS>
<SERIES_LIST>
<SERIES alias="NAME,VALUE" colorAlias="color" isIntSumAlias="ISINTSUM" isSumAlias="ISSUM"/>
</SERIES_LIST>
<TOOLTIP backgroundColor="#FCFFC5" enabled="true" pointFormat=":{point.y}</b><br/>" shadow="true" shared="true" valueDecimals="0" valuePrefix="" valueSuffix=" $">
<STYLE color="#4572A7" fontSize="12px" padding="2px"/>
</TOOLTIP>
</HIGHCHART>
2//xmlファイルオブジェクトsourceBeanをhighchartのconfigで認識できるjsonオブジェクトフォーマットに変換します.
//converts the template from xml to json format
JSONTemplateUtils.getJSONTemplateFromXml(SourceBean xmlTemplate, JSONArray parsJSON)//73
{
chart: {
type: 'waterfall'
, zoomType: 'xy'
}
, title: {
text: '$F{ANAG} Trend'
, color: '#325072'
}
, subtitle: {
text: 'Year: 2012 - State: AL '
}
, colors: [
{
color: '#123a9c'
, upColor: '#90ee90'
, downColor: '#b30f00'
, sumColor: '#66b266 '
}
]
, legend: {
enabled: false
}
, xAxis: {
alias: 'name'
, type: 'category'
, title: {
text: ''
}
}
, yAxis: [
{
min: 0.0
, lineWidth: 1.0
, alias: 'VALUE'
, title: {
text: ''
}
}
]
, plotOptions: {
waterfall: {
enableMouseTracking: true
, dataLabels: {
enabled: true
, formatter: 'numberFormat(0,",",".")'
, inside: false
, style: {
color: 'black'
, fontSize: '12px'
}
}
}
}
, series: [
{
alias: 'NAME,VALUE'
, isIntSumAlias: 'ISINTSUM'
, isSumAlias: 'ISSUM'
, colorAlias: 'color'
}
]
, tooltip: {
backgroundColor: '#FCFFC5'
, enabled: true
, shadow: true
, pointFormat: ':{point.y}</b><br/>'
, valueDecimals: 0.0
, valuePrefix: ''
, valueSuffix: ' $'
, shared: true
, style: {
color: '#4572A7'
, fontSize: '12px'
, padding: '2px'
}
}
}
3)responseはフロントエンドに応答する.publisherNameで指定した論理ビューに基づいて戻るページを見つけるには