class Twb::Worksheet
Attributes
colFields[R]
datasourceFields[R]
datasourcenames[R]
datasources[R]
encodedFields[R]
fields[R]
filters[R]
name[R]
node[R]
pageFields[R]
paneFields[R]
panesCount[R]
rowFields[R]
slicesFields[R]
tooltip[R]
visible[RW]
Public Class Methods
new(sheetNode, twb)
click to toggle source
# File lib/twb/worksheet.rb, line 36 def initialize sheetNode, twb @twb = twb @node = sheetNode @name = @node['name'] emit "########################## Worksheet initialize name: #{@name}" loadDataSources loadFields return self end
Public Instance Methods
addDSFields(fields, usage)
click to toggle source
# File lib/twb/worksheet.rb, line 91 def addDSFields fields, usage fields.each do end end
datasource(name)
click to toggle source
# File lib/twb/worksheet.rb, line 58 def datasource name @datasources[name] end
id()
click to toggle source
# File lib/twb/worksheet.rb, line 46 def id @id ||= @name.hash end
workbook()
click to toggle source
# File lib/twb/worksheet.rb, line 50 def workbook @workbook ||= @node.at_xpath('/').root end
Private Instance Methods
loadDataSources()
click to toggle source
# File lib/twb/worksheet.rb, line 160 def loadDataSources @datasources = {} dsNodes = @node.xpath('.//datasource') dsNodes.each do |dsn| ds = WorksheetDataSource.new dsn @datasources[ds.name] = ds end end
loadFieldEncodings()
click to toggle source
# File lib/twb/worksheet.rb, line 210 def loadFieldEncodings @encodedFields = Hash.new { |h,k| h[k] = [] } enodes = @node.xpath('.//table/panes/pane/encodings') enodes.each do |enode| enode.children.each do |child| unless child['column'].nil? @encodedFields[child.name] << CodedField.new(child['column']) end end end @encodedFields.each do |type, fields| @fields[type] = fields end end
loadFields()
click to toggle source
def resolveHidden
xpath = "//windows/window[@name=\"#{@name}\"]" emit true, "resolveHidden: #{xpath}" windowNode = @node.at_xpath(xpath) @hidden = !windowNode.nil? && 'true' == windowNode['hidden']
end
# File lib/twb/worksheet.rb, line 121 def loadFields # puts "WORKSHEET loadFields" @fields = {} @datasourceFields = {} dsNodes = @node.xpath('.//datasource-dependencies') dsNodes.each do |dsn| dsName = dsn.attribute('datasource').text dsFields = @datasourceFields[dsName] = Set.new fieldNodes = dsn.xpath('./column') fieldNodes.each do |fn| dsFields.add WorksheetField.new fn, dsName end end @fields[:dsfields] = @datasourceFields # <rows>([DATA Connection (copy 2)].[none:JIRA HARVEST Correspondence Name:nk] / [DATA Connection (copy 2)].[none:CreatedDate (Issue) (DAY):ok])</rows> # <cols>[DATA Connection (copy 2)].[:Measure Names]</cols> @rowFields ||= loadRowColFields(:rows) # returns map of data source => (Set of) field names @fields[:rows] = @rowFields @colFields ||= loadRowColFields(:cols) # returns map of data source => (Set of) field names @fields[:cols] = @colFields loadFieldEncodings end
loadFilters()
click to toggle source
# File lib/twb/worksheet.rb, line 149 def loadFilters emit ""########################## loadFilters" @filters = [] filterNodes = @node.xpath('./table/view//filter[@column]') filterNodes.each do |fnode| filter = QuickFilter.new(fnode,@twb) @filters << filter end return @filters end
loadPaneFields()
click to toggle source
# File lib/twb/worksheet.rb, line 144 def loadPaneFields @paneFields = Set.new panes = @node.xpath('.//pane') end
loadRowColFields(type)
click to toggle source
# File lib/twb/worksheet.rb, line 169 def loadRowColFields(type) fields = [] xpath = case type when :rows then './table/rows' when :cols then './table/cols' end return fields if xpath.nil? node = @node.at_xpath(xpath) emit "def loadRowColFields:: type: #{type} \t node: #{node.class} \t path: #{node.nil? ? '<<nil>>' : node.path }" emit "node : #{node.inspect}" nodeFields = RowsColsSplitter.new(node).fields emit "nodeFields: #{nodeFields}" nodeFields.each do |fcode| fields << CodedField.new(fcode) end return fields end
loadSlicesFields()
click to toggle source
# File lib/twb/worksheet.rb, line 200 def loadSlicesFields @slicesFields = [] nodes = @node.xpath('./table/view/slices//column') nodes.each do |node| # puts "Slice field: #{node.text}" @slicesFields << CodedField.new(node.text) end return @slicesFields end
loadTooltip()
click to toggle source
# File lib/twb/worksheet.rb, line 187 def loadTooltip @tooltip = @node.xpath('./table/panes/pane/customized-tooltip') end
loadpageFields()
click to toggle source
# File lib/twb/worksheet.rb, line 191 def loadpageFields @pageFields = [] # { |h,k| h[k] = [] } nodes = @node.xpath('.//table/pages/column') nodes.each do |node| @pageFields << CodedField.new(node.text) end return @pageFields end