class Twb::Worksheet

Attributes

colFields[R]
datasourceFields[R]
datasourcenames[R]
datasources[R]
encodedFields[R]
fields[R]
filters[R]
hidden[RW]
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