class Twb::Analysis::SheetFiltersAnalyzer

Attributes

localEmit[RW]

Public Class Methods

new(**args) click to toggle source
# File lib/twb/analysis/Sheets/sheetfiltersanalyzer.rb, line 28
def initialize(**args)
  @args      = args
  # puts "@args: #{@args}"
  @recordDir = !@args.nil? && @args[:recordDir] == true
  @ttdocdir  = @args[:ttdocdir]
  @csvAdd    = args[:csvMode] == :add
  @csvMode   = @csvAdd ? 'a' : 'w'
  init
  @funcdoc   = {:class=>self.class, :blurb=>'Analyze Worksheet Filters', :description=>'Documents Quick Filters and the values they employ, if any. Work in progess.',}
  #--
  docFileName      = docFile('WorksheetFilters.csv')
  @sheetFieldsCSV  = CSV.open( docFileName,@csvMode)
  unless @csvAdd
    if @recordDir
      @sheetFieldsCSV  << ['Rec #','Workbook','Workbook Modified','Worksheet','Filter Type','Operation','Data Source','Field','Value','Alias', 'Alias?','Operation Mode','Include Null?','Kind','Workbook Dir']
    else
      @sheetFieldsCSV  << ['Rec #','Workbook','Workbook Modified','Worksheet','Filter Type','Operation','Data Source','Field','Value','Alias', 'Alias?','Operation Mode','Include Null?','Kind']
    end
  end
  addDocFile @sheetFieldsCSV, docFileName, "Workbooks, Worksheets and the sheets' Quick Filters"
  #--
  @sheetCount  = 0
  @filterCount = 0
  @recNum      = 0
end

Public Instance Methods

metrics() click to toggle source
# File lib/twb/analysis/Sheets/sheetfiltersanalyzer.rb, line 54
def metrics
  {
    '# of Worksheets'        => @sheetCount,
    '# of Worksheet Filters' => @filterCount
  }
end
parseFilters() click to toggle source
# File lib/twb/analysis/Sheets/sheetfiltersanalyzer.rb, line 71
def parseFilters
  @worksheets  = @twb.worksheets
  @worksheets.each do |sheet|
    emit "\n\nSHEET: #{sheet.name}"
    filters = sheet.filters
    filters.each do |filter|
      filter.emit "-----------------------------\nWORKSHEET:: #{sheet.name}\n-----------------------------"
      if filter.values.empty?
      # @sheetFieldsCSV  << ['Workbook','Worksheet','Filter Type','Operation'     ,'Data Source','Field','Value','Alias', 'Alias?']
        recordCSV [@twbName, @modTime, sheet.name, filter.type, filter.inexclude, filter.dataSource.uiname, filter.uiname, nil,   nil,    nil,  filter.inexMode, filter.includeNull, filter.kind]
      end
      filter.values.each do |valueMap|
        value  = valueMap[:value]
        valias = valueMap[:alias]
        same   = value.eql? valias
        emit "RECORDING FILTER VALUES:  %-35s  --  %-25s  same? %s " % [value,valias,same]
        recordCSV [@twbName, @modTime, sheet.name, filter.type, filter.inexclude, filter.dataSource.uiname, filter.uiname, value, valias, same, filter.inexMode, filter.includeNull, filter.kind]
      end
    end
  end
end
processTWB(twb) click to toggle source
# File lib/twb/analysis/Sheets/sheetfiltersanalyzer.rb, line 61
def processTWB twb
   @twb     = twb
   @twbName = @twb.name
   @twbDir  = @twb.dir
   @modTime = @twb.modtime
   emit "   -- #{@twbName}"
   @twbDomainsLoaded = false
   parseFilters
end

Private Instance Methods

recordCSV(record) click to toggle source
# File lib/twb/analysis/Sheets/sheetfiltersanalyzer.rb, line 95
def recordCSV record
  numberedRec = [@recNum+=1] + record
  if @recordDir
    @sheetFieldsCSV  << numberedRec.push(@twbDir)
  else
    @sheetFieldsCSV  << numberedRec
  end
end