Class: Birt::Core::RptDesign
- Inherits:
-
Object
- Object
- Birt::Core::RptDesign
- Defined in:
- lib/birt/core/rpt_design.rb
Instance Attribute Summary collapse
-
#data_sets ⇒ Object
数据集.
-
#data_sources ⇒ Object
数据源.
-
#display_name(root = nil) ⇒ Object
报表的名字.
-
#reports ⇒ Object
图表.
-
#rpt_design_path ⇒ Object
design文件路径.
Instance Method Summary collapse
-
#initialize(rpt_design_path) ⇒ RptDesign
constructor
A new instance of RptDesign.
-
#parse_rpt ⇒ Object
解析文件.
Constructor Details
#initialize(rpt_design_path) ⇒ RptDesign
Returns a new instance of RptDesign.
19 20 21 22 23 |
# File 'lib/birt/core/rpt_design.rb', line 19 def initialize(rpt_design_path) self.rpt_design_path = rpt_design_path @data_sources, @data_sets = {}, {} @reports = {tables: {}, line_charts: {}} end |
Instance Attribute Details
#data_sets ⇒ Object
数据集
13 14 15 |
# File 'lib/birt/core/rpt_design.rb', line 13 def data_sets @data_sets end |
#data_sources ⇒ Object
数据源
10 11 12 |
# File 'lib/birt/core/rpt_design.rb', line 10 def data_sources @data_sources end |
#display_name(root = nil) ⇒ Object
报表的名字
7 8 9 |
# File 'lib/birt/core/rpt_design.rb', line 7 def display_name @display_name end |
#reports ⇒ Object
图表
16 17 18 |
# File 'lib/birt/core/rpt_design.rb', line 16 def reports @reports end |
#rpt_design_path ⇒ Object
design文件路径
4 5 6 |
# File 'lib/birt/core/rpt_design.rb', line 4 def rpt_design_path @rpt_design_path end |
Instance Method Details
#parse_rpt ⇒ Object
解析文件
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/birt/core/rpt_design.rb', line 35 def parse_rpt _root = REXML::Document.new(File.read(self.rpt_design_path)).root #报表名称 @display_name = self.display_name(_root) #数据源 _root.each_element(xpath = '/report/data-sources/oda-data-source') do |item| @data_sources[item.attribute(:name).value] = Birt::Core::DataSource.new(item) end #数据集 _root.each_element(xpath='/report/data-sets/oda-data-set') do |item| @data_sets[item.attribute(:name).value] = Birt::Core::DataSet.new(item) do |data_set| data_set.data_source = @data_sources[item.get_elements("property[@name='dataSource']")[0].text] end end #table报表 _root.each_element(xpath='/report/body/table') do |item| @reports[:tables]["#{item.attribute(:id).value}"] = Birt::Core::TableReport.new(item) do |report| report.data_set = @data_sets[item.get_elements("property[@name='dataSet']")[0].text] end end #Chart报表 _root.each_element(xpath="/report/body/extended-item[@extensionName='Chart']") do |item| item_data = REXML::Document.new(item.get_elements("xml-property[@name='xmlRepresentation']")[0].text).root #线性报表 if item_data.get_elements("Type")[0].text=='Line Chart' @reports[:line_charts]["#{item.attribute(:id).value}"] = Birt::Core::LineChartReport.new(item_data) do |report| report.id = item.attribute(:id).value report.data_set = @data_sets[item.get_elements("property[@name='dataSet']")[0].text] end @reports[:line_charts]["#{item.attribute(:id).value}"].json end end end |