twb 4.4.2 → 4.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a2c59fcc8781f04283fe5fbbdec7804483082a9bfabf792b29846c60ad7fe5b2
|
4
|
+
data.tar.gz: 1567f77448271fde58e8db2e8c49ab6beb6b52c23068ef543d2a3c24ec6aecd0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d96aae6accabaffe7abf3986c2e195b630a0fbd236efd51a7c0b1460c67863e84a3b2c6b657ab7d0b1e723fb51db8df533f5c4619353925a7a9207b3f6fac37b
|
7
|
+
data.tar.gz: 48e7fefd8c1ac5529a7bcae218c735bfb4eb86201014d88463840f045b842c5952cf151f449f0931014f4da304b12f2c878a94fd19b171c3332378e92fcb411f
|
data/lib/twb.rb
CHANGED
@@ -26,26 +26,28 @@ module Analysis
|
|
26
26
|
attr_accessor :localEmit
|
27
27
|
|
28
28
|
def initialize(**args)
|
29
|
-
|
30
|
-
@
|
31
|
-
@csvAdd
|
32
|
-
@csvMode
|
33
|
-
# emit "@csvAdd : #{@csvAdd}"
|
34
|
-
# emit "@csvMode: #{@csvMode}"
|
35
|
-
#--
|
29
|
+
@args = args
|
30
|
+
@recordDir = !@args.nil? && @args[:recordDir] == true
|
31
|
+
@csvAdd = args[:csvMode] == :add
|
32
|
+
@csvMode = @csvAdd ? 'a' : 'w'
|
36
33
|
init
|
37
|
-
@funcdoc
|
34
|
+
@funcdoc = {:class=>self.class, :blurb=>'Analyze Dashboard Worksheets', :description=>'Identifies the Worksheets present in Dashboards.',}
|
38
35
|
#--
|
39
36
|
docFileName = docFile('DashboardSheets.csv')
|
40
37
|
@dashSheetsCSV = CSV.open(docFileName,@csvMode)
|
41
38
|
unless @csvAdd
|
42
|
-
@
|
39
|
+
if @recordDir
|
40
|
+
@dashSheetsCSV << ['Workbook','Modified','Dashboard','Worksheet','Hidden','Visible', 'Workbook Dir']
|
41
|
+
else
|
42
|
+
@dashSheetsCSV << ['Workbook','Modified','Dashboard','Worksheet','Hidden','Visible' ]
|
43
|
+
end
|
43
44
|
end
|
44
45
|
addDocFile @dashSheetsCSV, docFileName, "Workbooks, Dashboards, and their Worksheets"
|
45
46
|
#--
|
46
47
|
@twbCount = 0
|
47
48
|
@dashCount = 0
|
48
49
|
@sheetCount = 0
|
50
|
+
@recNum = 0
|
49
51
|
end
|
50
52
|
|
51
53
|
def metrics
|
@@ -75,11 +77,22 @@ module Analysis
|
|
75
77
|
dash.worksheets.each do |sheet|
|
76
78
|
@sheetCount += 1
|
77
79
|
emit "SHEET: #{sheet.name}"
|
78
|
-
|
80
|
+
recordCSV [@twbName, @twbDir, @modTime, dash.name, sheet.name, sheet.hidden, sheet.visible ]
|
79
81
|
end
|
80
82
|
end
|
81
83
|
end
|
82
84
|
|
85
|
+
private
|
86
|
+
|
87
|
+
def recordCSV record
|
88
|
+
numberedRec = [@recNum+=1] + record
|
89
|
+
if @recordDir
|
90
|
+
@dashSheetsCSV << numberedRec.push(@twbDir)
|
91
|
+
else
|
92
|
+
@dashSheetsCSV << numberedRec
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
83
96
|
end #class SheetFieldsAnalyzer
|
84
97
|
|
85
98
|
end # module Analysis
|
@@ -43,18 +43,14 @@ module Analysis
|
|
43
43
|
|
44
44
|
def initialize(**args)
|
45
45
|
@args = args
|
46
|
-
@csvAdd = args[:csvMode] == :add
|
47
46
|
@recordDir = !@args.nil? && @args[:recordDir] == true
|
48
|
-
|
49
|
-
|
50
|
-
# @csvMode = @csvAdd ? 'a' : 'w'
|
51
|
-
# emit true, "@csvAdd : #{@csvAdd}"
|
52
|
-
# emit true, "@csvMode: #{@csvMode}"
|
47
|
+
@csvAdd = args[:csvMode] == :add
|
48
|
+
@csvMode = @csvAdd ? 'a' : 'w'
|
53
49
|
init
|
54
|
-
@funcdoc
|
50
|
+
@funcdoc = {:class=>self.class, :blurb=>'Analyze Worksheet Fields', :description=>nil,}
|
55
51
|
#--
|
56
|
-
docFileName
|
57
|
-
@sheetFieldsCSV = CSV.open(docFileName
|
52
|
+
docFileName = docFile('WorksheetFields.csv')
|
53
|
+
@sheetFieldsCSV = CSV.open(docFileName,@csvMode)
|
58
54
|
unless @csvAdd
|
59
55
|
if @recordDir
|
60
56
|
@sheetFieldsCSV << ['Rec #', 'Workbook','Worksheet','Data Source','Data Source (tech)','Field','Field (tech)','Usage','Usage - code','Workbook Dir']
|
@@ -92,74 +88,30 @@ module Analysis
|
|
92
88
|
def parseSheets
|
93
89
|
@worksheets = @twb.worksheets
|
94
90
|
@worksheets.each do |sheet|
|
95
|
-
@
|
96
|
-
@sheetCnt
|
97
|
-
emit "SHEET: #{@
|
91
|
+
@sheetName = sheet.name
|
92
|
+
@sheetCnt += 1
|
93
|
+
emit "SHEET: #{@sheetName}"
|
98
94
|
showFields sheet unless sheet.datasourceFields.nil?
|
99
95
|
end
|
100
96
|
end
|
101
97
|
|
102
98
|
def showFields sheet
|
99
|
+
@sheetFields = Hash.new { |ds,fields| ds[fields] = Set.new }
|
100
|
+
# recordCSV [@twb.name, @sheetName, nil, nil, nil, nil, nil]
|
101
|
+
puts "Sheet: #{@sheetName}"
|
103
102
|
recordDBFields sheet
|
104
103
|
recordRCFields sheet.rowFields, :row
|
105
104
|
recordRCFields sheet.colFields, :column
|
106
105
|
recordEncodedFields sheet
|
107
106
|
recordFilterFields sheet
|
108
107
|
recordPageFields sheet
|
109
|
-
recordSlicesFields sheet
|
110
108
|
recordDSFilterFields sheet
|
111
|
-
|
112
|
-
|
113
|
-
def recordPageFields sheet
|
114
|
-
sheet.pageFields.each do |pfield|
|
115
|
-
ds = @twb.datasource pfield.dataSource
|
116
|
-
fuiname = ds.fieldUIName pfield.name
|
117
|
-
# if @recordDir
|
118
|
-
# @sheetFieldsCSV << [@recNum+=1, @twb.name, @sheet, ds.uiname, ds.name, fuiname, pfield.name, 'page', ftc('filter'), @twb.dir]
|
119
|
-
# else
|
120
|
-
# @sheetFieldsCSV << [@recNum+=1, @twb.name, @sheet, ds.uiname, ds.name, fuiname, pfield.name, 'page', ftc('filter') ]
|
121
|
-
# end
|
122
|
-
recordCSV [@twb.name, @sheet, ds.uiname, ds.name, fuiname, pfield.name, 'page', ftc('page')]
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
def recordFilterFields sheet
|
127
|
-
filters = sheet.filters
|
128
|
-
filters.each do |filter|
|
129
|
-
dsName = filter.dataSource.name
|
130
|
-
dsUIName = filter.dataSource.uiname
|
131
|
-
# puts "Filter field: #{filter.dataSource.name} ui:'#{}'"
|
132
|
-
# if @recordDir
|
133
|
-
# @sheetFieldsCSV << [@recNum+=1, @twb.name, @sheet, dsUIName, dsName, filter.uiname, filter.name, 'filter', ftc('filter'), @twb.dir]
|
134
|
-
# else
|
135
|
-
# @sheetFieldsCSV << [@recNum+=1, @twb.name, @sheet, dsUIName, dsName, filter.uiname, filter.name, 'filter', ftc('filter') ]
|
136
|
-
# end
|
137
|
-
recordCSV [@twb.name, @sheet, dsUIName, dsName, filter.uiname, filter.name, 'filter', ftc('filter')]
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
def recordDSFilterFields sheet
|
142
|
-
sheet.slicesFields.each do |field|
|
143
|
-
dsName = field.dataSource
|
144
|
-
ds = @twb.datasource dsName
|
145
|
-
dsUIName = ds.uiname
|
146
|
-
ds.filters.each do |filter|
|
147
|
-
recordCSV [@twb.name, @sheet, dsUIName, dsName, filter.uiname, filter.name, 'dsfilter', ftc('dsfilter')]
|
148
|
-
end
|
149
|
-
end
|
109
|
+
recordSlicesFields sheet
|
150
110
|
end
|
151
111
|
|
152
112
|
def recordDBFields sheet
|
153
113
|
fields = sheet.datasourceFields
|
154
114
|
emit "def recordDBFields sheet: #{sheet.name} #FIELDS: #{fields.length}"
|
155
|
-
if fields.nil?
|
156
|
-
# if @recordDir
|
157
|
-
# @sheetFieldsCSV << [@recNum+=1, @twb.name, @sheet, nil, nil, nil, nil, nil, @twb.dir]
|
158
|
-
# else
|
159
|
-
# @sheetFieldsCSV << [@recNum+=1, @twb.name, @sheet, nil, nil, nil, nil, nil]
|
160
|
-
# end
|
161
|
-
recordCSV [@twb.name, @sheet, nil, nil, nil, nil, nil]
|
162
|
-
end
|
163
115
|
fields.each do |dsName, dsfields|
|
164
116
|
ds = @twb.datasource dsName
|
165
117
|
emit " ds: #{dsName}"
|
@@ -170,32 +122,24 @@ module Analysis
|
|
170
122
|
emit " f: #{sheetField}"
|
171
123
|
emit " c: #{sheetField.class}"
|
172
124
|
fuiName = ds.fieldUIName sheetField #Fields[sheetField]
|
173
|
-
|
174
|
-
recordCSV [@twb.name, @sheet, ds.uiname, dsName, sheetField.uiname, sheetField.name, 'DB ref', ftc('DB ref')]
|
175
|
-
# emit true, " : #{dsFields[field].class}"
|
125
|
+
recordCSV [@twb.name, @sheetName, ds.uiname, dsName, sheetField.uiname, sheetField.name, 'DB ref', ftc('DB ref')]
|
176
126
|
end
|
177
127
|
end
|
178
128
|
end
|
179
129
|
|
180
130
|
def recordRCFields fields, usage
|
181
131
|
emit "def recordRCFields #fields: #{fields.length} \t #{fields}"
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
emit " ds: #{dsName}"
|
194
|
-
emit " - #{ds.uiname}"
|
195
|
-
emit " : #{ds.class}"
|
196
|
-
# @sheetFieldsCSV << [@recNum+=1, @twb.name, @sheet, ds.uiname, dsName, fuiName, fldName, usage, ftc(usage)]
|
197
|
-
recordCSV [@twb.name, @sheet, ds.uiname, dsName, fuiName, fldName, usage, ftc(usage)]
|
198
|
-
end
|
132
|
+
fields.each do |cf|
|
133
|
+
emit "coded field: #{cf}"
|
134
|
+
fldName = cf.name
|
135
|
+
dsName = cf.dataSource
|
136
|
+
ds = @twb.datasource dsName
|
137
|
+
emit "DATASOURCE : #{ds.class} " #{ }" #{ds}"
|
138
|
+
fuiName = ds.fieldUIName cf.name
|
139
|
+
emit " ds: #{dsName}"
|
140
|
+
emit " - #{ds.uiname}"
|
141
|
+
emit " : #{ds.class}"
|
142
|
+
recordCSV [@twb.name, @sheetName, ds.uiname, dsName, fuiName, fldName, usage, ftc(usage)]
|
199
143
|
end
|
200
144
|
end
|
201
145
|
|
@@ -206,23 +150,56 @@ module Analysis
|
|
206
150
|
dsName = field.dataSource
|
207
151
|
ds = @twb.datasource dsName
|
208
152
|
fuiName = ds.fieldUIName field.name
|
209
|
-
|
210
|
-
recordCSV [@twb.name, @sheet, ds.uiname, dsName, fuiName, field.name, type, ftc(type)]
|
153
|
+
recordCSV [@twb.name, @sheetName, ds.uiname, dsName, fuiName, field.name, type, ftc(type)]
|
211
154
|
end
|
212
155
|
end
|
213
156
|
end
|
214
157
|
end #def recordEncodedFields
|
215
158
|
|
159
|
+
def recordFilterFields sheet
|
160
|
+
filters = sheet.filters
|
161
|
+
filters.each do |filter|
|
162
|
+
dsName = filter.dataSource.name
|
163
|
+
dsUIName = filter.dataSource.uiname
|
164
|
+
recordCSV [@twb.name, @sheetName, dsUIName, dsName, filter.uiname, filter.name, 'filter', ftc('filter')]
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
def recordPageFields sheet
|
169
|
+
sheet.pageFields.each do |pfield|
|
170
|
+
ds = @twb.datasource pfield.dataSource
|
171
|
+
fuiname = ds.fieldUIName pfield.name
|
172
|
+
recordCSV [@twb.name, @sheetName, ds.uiname, ds.name, fuiname, pfield.name, 'page', ftc('page')]
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
def recordDSFilterFields sheet
|
177
|
+
sheet.slicesFields.each do |field|
|
178
|
+
dsName = field.dataSource
|
179
|
+
ds = @twb.datasource dsName
|
180
|
+
dsUIName = ds.uiname
|
181
|
+
ds.filters.each do |filter|
|
182
|
+
recordCSV [@twb.name, @sheetName, dsUIName, dsName, filter.uiname, filter.name, 'dsfilter', ftc('dsfilter')]
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
216
187
|
def recordSlicesFields sheet
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
188
|
+
sheet.slicesFields.each do |field|
|
189
|
+
dsName = field.dataSource
|
190
|
+
ds = @twb.datasource dsName
|
191
|
+
dsuiname = ds.uiname
|
192
|
+
fuiName = ds.fieldUIName field.name
|
193
|
+
recorded = @sheetFields.key?(dsuiname) && @sheetFields[dsuiname].include?(fuiName)
|
194
|
+
puts " # #{@sheetFields.inspect}"
|
195
|
+
puts " - %-6s %-25s -> %-s" % [recorded, dsuiname, fuiName]
|
196
|
+
unless recorded
|
197
|
+
recordCSV [@twb.name, @sheetName, dsuiname, dsName, fuiName, field.name, 'slice', ftc('slice')]
|
198
|
+
puts " - recorded"
|
224
199
|
end
|
200
|
+
puts "--"
|
225
201
|
end
|
202
|
+
puts "\n "
|
226
203
|
end
|
227
204
|
|
228
205
|
def recordCSV record
|
@@ -232,6 +209,7 @@ module Analysis
|
|
232
209
|
else
|
233
210
|
@sheetFieldsCSV << numberedRec
|
234
211
|
end
|
212
|
+
@sheetFields[record[2]] << record[4]
|
235
213
|
end
|
236
214
|
|
237
215
|
def ftc type # ftc : abbr for fieldTypeCode, for brevity
|
@@ -29,14 +29,12 @@ module Analysis
|
|
29
29
|
@args = args
|
30
30
|
@recordDir = !@args.nil? && @args[:recordDir] == true
|
31
31
|
@csvAdd = args[:csvMode] == :add
|
32
|
-
|
33
|
-
# emit "@csvAdd : #{@csvAdd}"
|
34
|
-
# emit "@csvMode: #{@csvMode}"
|
32
|
+
@csvMode = @csvAdd ? 'a' : 'w'
|
35
33
|
init
|
36
|
-
@funcdoc
|
34
|
+
@funcdoc = {:class=>self.class, :blurb=>'Analyze Worksheet Filters', :description=>'Documents Quick Filters and the values they employ, if any. Work in progess.',}
|
37
35
|
#--
|
38
|
-
docFileName
|
39
|
-
@sheetFieldsCSV = CSV.open( docFileName
|
36
|
+
docFileName = docFile('WorksheetFilters.csv')
|
37
|
+
@sheetFieldsCSV = CSV.open( docFileName,@csvMode)
|
40
38
|
unless @csvAdd
|
41
39
|
if @recordDir
|
42
40
|
@sheetFieldsCSV << ['Rec #','Workbook','Worksheet','Filter Type','Operation','Data Source','Field','Value','Alias', 'Alias?','Operation Mode','Include Null?','Kind','Workbook Dir']
|
@@ -91,14 +89,14 @@ module Analysis
|
|
91
89
|
|
92
90
|
private
|
93
91
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
92
|
+
def recordCSV record
|
93
|
+
numberedRec = [@recNum+=1] + record
|
94
|
+
if @recordDir
|
95
|
+
@sheetFieldsCSV << numberedRec.push(@twbDir)
|
96
|
+
else
|
97
|
+
@sheetFieldsCSV << numberedRec
|
98
|
+
end
|
100
99
|
end
|
101
|
-
end
|
102
100
|
|
103
101
|
end # class SheetFiltersAnalyzerA
|
104
102
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.4.
|
4
|
+
version: 4.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Gerrard
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-02-
|
11
|
+
date: 2019-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: creek
|