twb 0.0.33 → 0.0.34

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.
data/lib/twb/workbook.rb CHANGED
@@ -31,7 +31,6 @@ module Twb
31
31
  # The Workbook's file name
32
32
  #
33
33
  def initialize twbWithDir
34
- file = File.new(twbWithDir)
35
34
  @name = File.basename(twbWithDir)
36
35
  @dir = File.dirname(File.expand_path(twbWithDir))
37
36
  @modtime = File.new(twbWithDir).mtime
@@ -156,13 +155,21 @@ module Twb
156
155
  end
157
156
  end
158
157
 
158
+ def ensureWindowsNodeExists
159
+ if @windowsnode.nil?
160
+ @windowsnode = Nokogiri::XML::Node.new "windows", @ndoc
161
+ @dataSources.add_next_sibling(@windowsnode)
162
+ end
163
+ end
164
+
159
165
  # Add a new Documentation Dashboard to the TWB.
160
166
  # Ensure that the TWB has a <dashboards> node (it may not).
161
167
  # Make sure that the new Doc Dashboard's name doesn't conflict with an existing Dashboard - increment the incoming name if necessary.
162
168
  # Add Doc Dashboard's <dashboard> and <window> nodes to the TWB; there's always a <windows> node in the TWB.
163
169
  def addDocDashboard docDashboard
164
170
  ensureDashboardsNodeExists
165
- title = getNewDashboardTitle(docDashboard.title)
171
+ ensureWindowsNodeExists
172
+ title = getNewDashboardTitle(docDashboard.title)
166
173
  docDashboard.title=(title) unless title == docDashboard.title
167
174
  @dashesNode.add_child(docDashboard.dashnode)
168
175
  @windowsnode.add_child(docDashboard.winnode)
@@ -0,0 +1,49 @@
1
+ # testTwbGem.rb - this Ruby script Copyright 2013, 2014 Christopher Gerrard
2
+
3
+ require 'nokogiri'
4
+
5
+ #require 'twb'
6
+ require 'C:\tech\Tableau\tools\Ruby\gems\twb\lib\twb.rb'
7
+ require "test/unit"
8
+
9
+ system "cls"
10
+
11
+ class TestDashboardXRays < Test::Unit::TestCase
12
+
13
+ def test_create
14
+ print "\n\n\n == #{'Web Page Dashboards.twb'}"
15
+ twb = Twb::Workbook.new('Web Page Dashboards.twb')
16
+ puts " name :: #{twb.name}"
17
+ puts " class :: #{twb.class}"
18
+ puts " workbook?:: #{twb.instance_of?(Twb::Workbook)}"
19
+ xrayer = Twb::DashboardXRayer.new(twb)
20
+ assert(!xrayer.nil?)
21
+ puts "xrayer.methods\n=============\n#{xrayer.methods}"
22
+ xrays = xrayer.xray
23
+ assert(!xrays.nil?)
24
+ puts "\n\nDashboards:: #{xrays.keys}"
25
+ xrays.each do |dash, html|
26
+ htmlfilename = twb.name + '.' + dash.to_s
27
+ saveHTML(htmlfilename, html)
28
+ end
29
+ end
30
+
31
+ def saveHTML(htmlfilename, html)
32
+ begin
33
+ puts "\n\n htmlfilename :: #{htmlfilename}"
34
+ htmlfile = File.open(htmlfilename + '.html', 'w')
35
+ htmlfile.puts html
36
+ htmlfile.close
37
+ rescue
38
+ cleanfilename = sanitize(htmlfilename) + '.html'
39
+ puts " :: #{cleanfilename} \n\n"
40
+ saveHTML(cleanfilename, html)
41
+ end
42
+ end
43
+
44
+ def sanitize(str)
45
+ puts " Sanitize :: #{str}"
46
+ cleanStr = str.gsub(/[^a-z0-9\-]+/i, ' ')
47
+ end
48
+
49
+ end
@@ -43,7 +43,6 @@ class TestDocDash < Test::Unit::TestCase
43
43
  end
44
44
 
45
45
  def do_injection(dash, twbName)
46
- print "\ninjecting into: #{twbName}"
47
46
  twb = Twb::Workbook.new(twbName)
48
47
  assert(!twb.nil?)
49
48
  twb.addDocDashboard dash
data/test/testHTMLList.rb CHANGED
@@ -8,6 +8,8 @@ class TestHTMLList < Test::Unit::TestCase
8
8
  def test_create
9
9
  struct = {'a' => {'eh?'=>nil},
10
10
  'b' => ['bee', 'be'],
11
+ 'empty array' => [],
12
+ 'nil value' => [],
11
13
  'c' => {'sea'=>['ocean','mer'],
12
14
  'see'=>['vision','sight','lookers']
13
15
  },
@@ -17,7 +19,7 @@ class TestHTMLList < Test::Unit::TestCase
17
19
  }
18
20
  doc = Twb::HTMLListCollapsible.new(struct)
19
21
  doc.title="Important Stuff to See"
20
- doc.write('Special Documentation.html')
22
+ doc.write('test.html')
21
23
  end
22
24
 
23
25
  end
@@ -6,9 +6,11 @@ require 'nokogiri'
6
6
  require 'C:\tech\Tableau\tools\Ruby\gems\twb\lib\twb.rb'
7
7
 
8
8
  def processTWB twbWithDir
9
- print "\n\n\n== #{twbWithDir}"
9
+ print "\n\n\n == #{twbWithDir}"
10
10
  twb = Twb::Workbook.new twbWithDir
11
- puts " :: #{twb.name}"
11
+ puts " name :: #{twb.name}"
12
+ puts " class :: #{twb.class}"
13
+ puts " workbook?:: #{twb.instance_of?(Twb::Workbook)}"
12
14
  twb.writeAppend '.Documented'
13
15
  twb.writeAppend '....MultiLeadingPeriods'
14
16
  end
data/twb-0.0.33.gem ADDED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.33
4
+ version: 0.0.34
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -34,28 +34,23 @@ files:
34
34
  - lib/twb/util/hashtohtml.rb
35
35
  - lib/twb/util/htmllistcollapsible.rb
36
36
  - lib/twb/util/UpLeftArrowsNav.png
37
+ - lib/twb/util/xraydashboards.rb
37
38
  - lib/twb/window.rb
38
39
  - lib/twb/workbook.rb
39
40
  - lib/twb/worksheet.rb
40
41
  - lib/twb.rb
41
42
  - LICENSE.txt
42
43
  - README.txt
43
- - test/collapsibleList.html
44
- - test/No Content.injected.twb
45
44
  - test/No Content.twb
46
- - test/No Dashboards.injected.twb
47
45
  - test/No Dashboards.twb
48
- - test/Special Documentation.html
49
- - test/TableauDocInlineCSS.html
46
+ - test/testDashboardXRay.rb
50
47
  - test/testDocDashboard.rb
51
48
  - test/testDocDashboardCreate.rb
52
49
  - test/testHTMLList.rb
53
50
  - test/testTwbGem.rb
51
+ - test/testTwbWrite.rb
54
52
  - test/UpLeftArrowsNav.png
55
- - test/Web Page Dashboards.injected.twb
56
53
  - test/Web Page Dashboards.twb
57
- - testTwbGem.rb
58
- - testTwbWrite.rb
59
54
  - twb-0.0.32.gem
60
55
  - twb-0.0.33.gem
61
56
  - twb.gemspec
@@ -1,82 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <workbook xmlns:user="http://www.tableausoftware.com/xml/user" source-platform="win" version="8.3">
3
- <!-- build 8300.15.0219.2230 -->
4
- <preferences>
5
- </preferences>
6
- <datasources>
7
- </datasources><dashboards><dashboard name="Injected Documentation Dashboard">
8
- <style/>
9
- <zones>
10
- <zone h="100000" id="3" param="vert" type="layout-flow" w="100000" x="0" y="0">
11
- <zone h="6221" id="1" type="title" w="100000" x="0" y="0"/>
12
- <zone h="93157" id="4" param="horz" type="layout-flow" w="100000" x="0" y="6221">
13
- <zone forceUpdate="" h="93157" id="6" param="http://localhost:8808/doc_root/nokogiri-1.5.5-x86-mingw32/rdoc/Nokogiri/XML/Node.html#method-i-add_next_sibling" type="web" w="99655" x="0" y="6221"/>
14
- </zone>
15
- </zone>
16
- </zones>
17
- </dashboard></dashboards>
18
- <worksheets>
19
- <worksheet name="Sheet 1">
20
- <table>
21
- <view>
22
- <datasources>
23
- </datasources>
24
- <aggregation value="true"/>
25
- </view>
26
- <style>
27
- </style>
28
- <panes>
29
- <pane>
30
- <view>
31
- <breakdown value="auto"/>
32
- </view>
33
- <mark class="Automatic"/>
34
- </pane>
35
- </panes>
36
- <rows/>
37
- <cols/>
38
- </table>
39
- </worksheet>
40
- </worksheets>
41
- <windows>
42
- <window class="schema" source-height="-1"/>
43
- <window auto-hidden="0" class="worksheet" maximized="1" name="Sheet 1">
44
- <cards>
45
- <edge name="left">
46
- <strip size="160">
47
- <card type="pages"/>
48
- <card type="filters"/>
49
- <card type="marks"/>
50
- </strip>
51
- </edge>
52
- <edge name="top">
53
- <strip size="31">
54
- <card type="columns"/>
55
- </strip>
56
- <strip size="31">
57
- <card type="rows"/>
58
- </strip>
59
- </edge>
60
- </cards>
61
- </window>
62
- <window auto-hidden="0" class="dashboard" maximized="1" name="Injected Documentation Dashboard">
63
- <zones>
64
- <zone h="6221" id="1" name="" type="title" w="100000" x="0" y="0"/>
65
- <zone forceUpdate="" h="93157" id="5" name="" param="http://localhost:8808/doc_root/nokogiri-1.5.5-x86-mingw32/rdoc/Nokogiri/XML/Node.html#method-i-add_next_sibling" type="web" w="50000" x="50000" y="6221"/>
66
- </zones>
67
- </window></windows>
68
- <thumbnails>
69
- <thumbnail height="144" name="Sheet 1" width="174">
70
- iVBORw0KGgoAAAANSUhEUgAAAK4AAACQCAYAAACRfFAzAAAACXBIWXMAAA7DAAAOwwHHb6hk
71
- AAABmUlEQVR4nO3SQQ0AIBDAMMC/58MDH7KkVbDH9szMgpjzOwBeGJck45JkXJKMS5JxSTIu
72
- ScYlybgkGZck45JkXJKMS5JxSTIuScYlybgkGZck45JkXJKMS5JxSTIuScYlybgkGZck45Jk
73
- XJKMS5JxSTIuScYlybgkGZck45JkXJKMS5JxSTIuScYlybgkGZck45JkXJKMS5JxSTIuScYl
74
- ybgkGZck45JkXJKMS5JxSTIuScYlybgkGZck45JkXJKMS5JxSTIuScYlybgkGZck45JkXJKM
75
- S5JxSTIuScYlybgkGZck45JkXJKMS5JxSTIuScYlybgkGZck45JkXJKMS5JxSTIuScYlybgk
76
- GZck45JkXJKMS5JxSTIuScYlybgkGZck45JkXJKMS5JxSTIuScYlybgkGZck45JkXJKMS5Jx
77
- STIuScYlybgkGZck45JkXJKMS5JxSTIuScYlybgkGZck45JkXJKMS5JxSTIuScYlybgkGZck
78
- 45JkXJKMS5JxSTIuScYlybgkGZck45JkXJKMS5JxSTIuSRePYgUc7kJNEQAAAABJRU5ErkJg
79
- gg==
80
- </thumbnail>
81
- </thumbnails>
82
- </workbook>
@@ -1,618 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <workbook xmlns:user="http://www.tableausoftware.com/xml/user" source-platform="win" version="8.3">
3
- <!-- build 8300.15.0219.2230 -->
4
- <preferences>
5
- </preferences>
6
- <datasources>
7
- <datasource inline="true" name="Sample - Coffee Chain (Access)" version="8.3">
8
- <connection authentication="no" class="msaccess" driver="" filename="C:\Users\CTG\Documents\My Tableau Repository\Datasources\Sample - Coffee Chain.mdb" mdwpath="" tablename="factTable">
9
- <relation join="inner" type="join">
10
- <clause type="join">
11
- <expression op="=">
12
- <expression op="[factTable].[ProductId]">
13
- </expression>
14
- <expression op="[Product].[ProductId]">
15
- </expression>
16
- </expression>
17
- </clause>
18
- <relation join="inner" type="join">
19
- <clause type="join">
20
- <expression op="=">
21
- <expression op="[factTable].[Area Code]">
22
- </expression>
23
- <expression op="[Location].[Area Code]">
24
- </expression>
25
- </expression>
26
- </clause>
27
- <relation name="factTable" table="[factTable]" type="table"/>
28
- <relation name="Location" table="[Location]" type="table"/>
29
- </relation>
30
- <relation name="Product" table="[Product]" type="table"/>
31
- </relation>
32
- <cols>
33
- <map key="[Area Code]" value="[factTable].[Area Code]"/>
34
- <map key="[Budget COGS]" value="[factTable].[Budget COGS]"/>
35
- <map key="[Budget Margin]" value="[factTable].[Budget Margin]"/>
36
- <map key="[Budget Profit]" value="[factTable].[Budget Profit]"/>
37
- <map key="[Budget Sales]" value="[factTable].[Budget Sales]"/>
38
- <map key="[COGS]" value="[factTable].[COGS]"/>
39
- <map key="[Date]" value="[factTable].[Date]"/>
40
- <map key="[Inventory]" value="[factTable].[Inventory]"/>
41
- <map key="[Location_Area Code]" value="[Location].[Area Code]"/>
42
- <map key="[Margin]" value="[factTable].[Margin]"/>
43
- <map key="[Market Size]" value="[Location].[Market Size]"/>
44
- <map key="[Market]" value="[Location].[Market]"/>
45
- <map key="[Marketing]" value="[factTable].[Marketing]"/>
46
- <map key="[Product Line]" value="[Product].[Product Line]"/>
47
- <map key="[Product Type]" value="[Product].[Product Type]"/>
48
- <map key="[ProductId]" value="[factTable].[ProductId]"/>
49
- <map key="[Product]" value="[Product].[Product]"/>
50
- <map key="[Product_ProductId]" value="[Product].[ProductId]"/>
51
- <map key="[Profit]" value="[factTable].[Profit]"/>
52
- <map key="[Sales]" value="[factTable].[Sales]"/>
53
- <map key="[State]" value="[Location].[State]"/>
54
- <map key="[Total Expenses]" value="[factTable].[Total Expenses]"/>
55
- <map key="[Type]" value="[Product].[Type]"/>
56
- </cols>
57
- <metadata-records>
58
- <metadata-record class="column">
59
- <remote-name>Area Code</remote-name>
60
- <remote-type>2</remote-type>
61
- <local-name>[Area Code]</local-name>
62
- <parent-name>[factTable]</parent-name>
63
- <remote-alias>Area Code</remote-alias>
64
- <ordinal>12</ordinal>
65
- <local-type>integer</local-type>
66
- <aggregation>Sum</aggregation>
67
- <precision>5</precision>
68
- <contains-null>true</contains-null>
69
- <attributes>
70
- <attribute datatype="string" name="DebugRemoteType">"I2"</attribute>
71
- </attributes>
72
- </metadata-record>
73
- <metadata-record class="column">
74
- <remote-name>Budget COGS</remote-name>
75
- <remote-type>5</remote-type>
76
- <local-name>[Budget COGS]</local-name>
77
- <parent-name>[factTable]</parent-name>
78
- <remote-alias>Budget COGS</remote-alias>
79
- <ordinal>9</ordinal>
80
- <local-type>real</local-type>
81
- <aggregation>Sum</aggregation>
82
- <precision>15</precision>
83
- <contains-null>true</contains-null>
84
- <attributes>
85
- <attribute datatype="string" name="DebugRemoteType">"R8"</attribute>
86
- </attributes>
87
- </metadata-record>
88
- <metadata-record class="column">
89
- <remote-name>Budget Margin</remote-name>
90
- <remote-type>5</remote-type>
91
- <local-name>[Budget Margin]</local-name>
92
- <parent-name>[factTable]</parent-name>
93
- <remote-alias>Budget Margin</remote-alias>
94
- <ordinal>10</ordinal>
95
- <local-type>real</local-type>
96
- <aggregation>Sum</aggregation>
97
- <precision>15</precision>
98
- <contains-null>true</contains-null>
99
- <attributes>
100
- <attribute datatype="string" name="DebugRemoteType">"R8"</attribute>
101
- </attributes>
102
- </metadata-record>
103
- <metadata-record class="column">
104
- <remote-name>Budget Profit</remote-name>
105
- <remote-type>5</remote-type>
106
- <local-name>[Budget Profit]</local-name>
107
- <parent-name>[factTable]</parent-name>
108
- <remote-alias>Budget Profit</remote-alias>
109
- <ordinal>8</ordinal>
110
- <local-type>real</local-type>
111
- <aggregation>Sum</aggregation>
112
- <precision>15</precision>
113
- <contains-null>true</contains-null>
114
- <attributes>
115
- <attribute datatype="string" name="DebugRemoteType">"R8"</attribute>
116
- </attributes>
117
- </metadata-record>
118
- <metadata-record class="column">
119
- <remote-name>Budget Sales</remote-name>
120
- <remote-type>5</remote-type>
121
- <local-name>[Budget Sales]</local-name>
122
- <parent-name>[factTable]</parent-name>
123
- <remote-alias>Budget Sales</remote-alias>
124
- <ordinal>11</ordinal>
125
- <local-type>real</local-type>
126
- <aggregation>Sum</aggregation>
127
- <precision>15</precision>
128
- <contains-null>true</contains-null>
129
- <attributes>
130
- <attribute datatype="string" name="DebugRemoteType">"R8"</attribute>
131
- </attributes>
132
- </metadata-record>
133
- <metadata-record class="column">
134
- <remote-name>COGS</remote-name>
135
- <remote-type>5</remote-type>
136
- <local-name>[COGS]</local-name>
137
- <parent-name>[factTable]</parent-name>
138
- <remote-alias>COGS</remote-alias>
139
- <ordinal>4</ordinal>
140
- <local-type>real</local-type>
141
- <aggregation>Sum</aggregation>
142
- <precision>15</precision>
143
- <contains-null>true</contains-null>
144
- <attributes>
145
- <attribute datatype="string" name="DebugRemoteType">"R8"</attribute>
146
- </attributes>
147
- </metadata-record>
148
- <metadata-record class="column">
149
- <remote-name>Date</remote-name>
150
- <remote-type>7</remote-type>
151
- <local-name>[Date]</local-name>
152
- <parent-name>[factTable]</parent-name>
153
- <remote-alias>Date</remote-alias>
154
- <ordinal>14</ordinal>
155
- <local-type>datetime</local-type>
156
- <aggregation>Year</aggregation>
157
- <contains-null>true</contains-null>
158
- <attributes>
159
- <attribute datatype="string" name="DebugRemoteType">"DATE"</attribute>
160
- </attributes>
161
- </metadata-record>
162
- <metadata-record class="column">
163
- <remote-name>Inventory</remote-name>
164
- <remote-type>3</remote-type>
165
- <local-name>[Inventory]</local-name>
166
- <parent-name>[factTable]</parent-name>
167
- <remote-alias>Inventory</remote-alias>
168
- <ordinal>7</ordinal>
169
- <local-type>integer</local-type>
170
- <aggregation>Sum</aggregation>
171
- <precision>10</precision>
172
- <contains-null>true</contains-null>
173
- <attributes>
174
- <attribute datatype="string" name="DebugRemoteType">"I4"</attribute>
175
- </attributes>
176
- </metadata-record>
177
- <metadata-record class="column">
178
- <remote-name>Margin</remote-name>
179
- <remote-type>5</remote-type>
180
- <local-name>[Margin]</local-name>
181
- <parent-name>[factTable]</parent-name>
182
- <remote-alias>Margin</remote-alias>
183
- <ordinal>2</ordinal>
184
- <local-type>real</local-type>
185
- <aggregation>Sum</aggregation>
186
- <precision>15</precision>
187
- <contains-null>true</contains-null>
188
- <attributes>
189
- <attribute datatype="string" name="DebugRemoteType">"R8"</attribute>
190
- </attributes>
191
- </metadata-record>
192
- <metadata-record class="column">
193
- <remote-name>Marketing</remote-name>
194
- <remote-type>5</remote-type>
195
- <local-name>[Marketing]</local-name>
196
- <parent-name>[factTable]</parent-name>
197
- <remote-alias>Marketing</remote-alias>
198
- <ordinal>6</ordinal>
199
- <local-type>real</local-type>
200
- <aggregation>Sum</aggregation>
201
- <precision>15</precision>
202
- <contains-null>true</contains-null>
203
- <attributes>
204
- <attribute datatype="string" name="DebugRemoteType">"R8"</attribute>
205
- </attributes>
206
- </metadata-record>
207
- <metadata-record class="column">
208
- <remote-name>ProductId</remote-name>
209
- <remote-type>2</remote-type>
210
- <local-name>[ProductId]</local-name>
211
- <parent-name>[factTable]</parent-name>
212
- <remote-alias>ProductId</remote-alias>
213
- <ordinal>13</ordinal>
214
- <local-type>integer</local-type>
215
- <aggregation>Sum</aggregation>
216
- <precision>5</precision>
217
- <contains-null>true</contains-null>
218
- <attributes>
219
- <attribute datatype="string" name="DebugRemoteType">"I2"</attribute>
220
- </attributes>
221
- </metadata-record>
222
- <metadata-record class="column">
223
- <remote-name>Profit</remote-name>
224
- <remote-type>5</remote-type>
225
- <local-name>[Profit]</local-name>
226
- <parent-name>[factTable]</parent-name>
227
- <remote-alias>Profit</remote-alias>
228
- <ordinal>1</ordinal>
229
- <local-type>real</local-type>
230
- <aggregation>Sum</aggregation>
231
- <precision>15</precision>
232
- <contains-null>true</contains-null>
233
- <attributes>
234
- <attribute datatype="string" name="DebugRemoteType">"R8"</attribute>
235
- </attributes>
236
- </metadata-record>
237
- <metadata-record class="column">
238
- <remote-name>Sales</remote-name>
239
- <remote-type>5</remote-type>
240
- <local-name>[Sales]</local-name>
241
- <parent-name>[factTable]</parent-name>
242
- <remote-alias>Sales</remote-alias>
243
- <ordinal>3</ordinal>
244
- <local-type>real</local-type>
245
- <aggregation>Sum</aggregation>
246
- <precision>15</precision>
247
- <contains-null>true</contains-null>
248
- <attributes>
249
- <attribute datatype="string" name="DebugRemoteType">"R8"</attribute>
250
- </attributes>
251
- </metadata-record>
252
- <metadata-record class="column">
253
- <remote-name>Total Expenses</remote-name>
254
- <remote-type>5</remote-type>
255
- <local-name>[Total Expenses]</local-name>
256
- <parent-name>[factTable]</parent-name>
257
- <remote-alias>Total Expenses</remote-alias>
258
- <ordinal>5</ordinal>
259
- <local-type>real</local-type>
260
- <aggregation>Sum</aggregation>
261
- <precision>15</precision>
262
- <contains-null>true</contains-null>
263
- <attributes>
264
- <attribute datatype="string" name="DebugRemoteType">"R8"</attribute>
265
- </attributes>
266
- </metadata-record>
267
- <metadata-record class="column">
268
- <remote-name>Area Code</remote-name>
269
- <remote-type>2</remote-type>
270
- <local-name>[Location_Area Code]</local-name>
271
- <parent-name>[Location]</parent-name>
272
- <remote-alias>Area Code</remote-alias>
273
- <ordinal>17</ordinal>
274
- <local-type>integer</local-type>
275
- <aggregation>Sum</aggregation>
276
- <precision>5</precision>
277
- <contains-null>true</contains-null>
278
- <attributes>
279
- <attribute datatype="string" name="DebugRemoteType">"I2"</attribute>
280
- </attributes>
281
- </metadata-record>
282
- <metadata-record class="column">
283
- <remote-name>Market</remote-name>
284
- <remote-type>130</remote-type>
285
- <local-name>[Market]</local-name>
286
- <parent-name>[Location]</parent-name>
287
- <remote-alias>Market</remote-alias>
288
- <ordinal>19</ordinal>
289
- <local-type>string</local-type>
290
- <aggregation>Count</aggregation>
291
- <width>255</width>
292
- <contains-null>true</contains-null>
293
- <attributes>
294
- <attribute datatype="string" name="DebugRemoteType">"WSTR"</attribute>
295
- </attributes>
296
- </metadata-record>
297
- <metadata-record class="column">
298
- <remote-name>Market Size</remote-name>
299
- <remote-type>130</remote-type>
300
- <local-name>[Market Size]</local-name>
301
- <parent-name>[Location]</parent-name>
302
- <remote-alias>Market Size</remote-alias>
303
- <ordinal>20</ordinal>
304
- <local-type>string</local-type>
305
- <aggregation>Count</aggregation>
306
- <width>255</width>
307
- <contains-null>true</contains-null>
308
- <attributes>
309
- <attribute datatype="string" name="DebugRemoteType">"WSTR"</attribute>
310
- </attributes>
311
- </metadata-record>
312
- <metadata-record class="column">
313
- <remote-name>State</remote-name>
314
- <remote-type>130</remote-type>
315
- <local-name>[State]</local-name>
316
- <parent-name>[Location]</parent-name>
317
- <remote-alias>State</remote-alias>
318
- <ordinal>18</ordinal>
319
- <local-type>string</local-type>
320
- <aggregation>Count</aggregation>
321
- <width>255</width>
322
- <contains-null>true</contains-null>
323
- <attributes>
324
- <attribute datatype="string" name="DebugRemoteType">"WSTR"</attribute>
325
- </attributes>
326
- </metadata-record>
327
- <metadata-record class="column">
328
- <remote-name>Product</remote-name>
329
- <remote-type>130</remote-type>
330
- <local-name>[Product]</local-name>
331
- <parent-name>[Product]</parent-name>
332
- <remote-alias>Product</remote-alias>
333
- <ordinal>23</ordinal>
334
- <local-type>string</local-type>
335
- <aggregation>Count</aggregation>
336
- <width>255</width>
337
- <contains-null>true</contains-null>
338
- <attributes>
339
- <attribute datatype="string" name="DebugRemoteType">"WSTR"</attribute>
340
- </attributes>
341
- </metadata-record>
342
- <metadata-record class="column">
343
- <remote-name>Product Line</remote-name>
344
- <remote-type>130</remote-type>
345
- <local-name>[Product Line]</local-name>
346
- <parent-name>[Product]</parent-name>
347
- <remote-alias>Product Line</remote-alias>
348
- <ordinal>21</ordinal>
349
- <local-type>string</local-type>
350
- <aggregation>Count</aggregation>
351
- <width>255</width>
352
- <contains-null>true</contains-null>
353
- <attributes>
354
- <attribute datatype="string" name="DebugRemoteType">"WSTR"</attribute>
355
- </attributes>
356
- </metadata-record>
357
- <metadata-record class="column">
358
- <remote-name>Product Type</remote-name>
359
- <remote-type>130</remote-type>
360
- <local-name>[Product Type]</local-name>
361
- <parent-name>[Product]</parent-name>
362
- <remote-alias>Product Type</remote-alias>
363
- <ordinal>22</ordinal>
364
- <local-type>string</local-type>
365
- <aggregation>Count</aggregation>
366
- <width>255</width>
367
- <contains-null>true</contains-null>
368
- <attributes>
369
- <attribute datatype="string" name="DebugRemoteType">"WSTR"</attribute>
370
- </attributes>
371
- </metadata-record>
372
- <metadata-record class="column">
373
- <remote-name>ProductId</remote-name>
374
- <remote-type>2</remote-type>
375
- <local-name>[Product_ProductId]</local-name>
376
- <parent-name>[Product]</parent-name>
377
- <remote-alias>ProductId</remote-alias>
378
- <ordinal>24</ordinal>
379
- <local-type>integer</local-type>
380
- <aggregation>Sum</aggregation>
381
- <precision>5</precision>
382
- <contains-null>true</contains-null>
383
- <attributes>
384
- <attribute datatype="string" name="DebugRemoteType">"I2"</attribute>
385
- </attributes>
386
- </metadata-record>
387
- <metadata-record class="column">
388
- <remote-name>Type</remote-name>
389
- <remote-type>130</remote-type>
390
- <local-name>[Type]</local-name>
391
- <parent-name>[Product]</parent-name>
392
- <remote-alias>Type</remote-alias>
393
- <ordinal>25</ordinal>
394
- <local-type>string</local-type>
395
- <aggregation>Count</aggregation>
396
- <width>255</width>
397
- <contains-null>true</contains-null>
398
- <attributes>
399
- <attribute datatype="string" name="DebugRemoteType">"WSTR"</attribute>
400
- </attributes>
401
- </metadata-record>
402
- </metadata-records>
403
- </connection>
404
- <column aggregation="Sum" datatype="integer" name="[Area Code]" role="dimension" semantic-role="[AreaCode].[Name]" type="ordinal">
405
- </column>
406
- <column datatype="real" default-format="c&quot;$&quot;#,##0;(&quot;$&quot;#,##0)" name="[Budget COGS]" role="measure" type="quantitative">
407
- </column>
408
- <column datatype="real" default-format="c&quot;$&quot;#,##0;(&quot;$&quot;#,##0)" name="[Budget Margin]" role="measure" type="quantitative">
409
- </column>
410
- <column datatype="real" default-format="c&quot;$&quot;#,##0;(&quot;$&quot;#,##0)" name="[Budget Profit]" role="measure" type="quantitative">
411
- </column>
412
- <column datatype="real" default-format="c&quot;$&quot;#,##0;(&quot;$&quot;#,##0)" name="[Budget Sales]" role="measure" type="quantitative">
413
- </column>
414
- <column datatype="real" default-format="c&quot;$&quot;#,##0;(&quot;$&quot;#,##0)" name="[COGS]" role="measure" type="quantitative">
415
- </column>
416
- <column datatype="date" datatype-customized="true" name="[Date]" role="dimension" type="ordinal">
417
- </column>
418
- <column aggregation="Avg" datatype="integer" default-format="n#,##0;-#,##0" name="[Inventory]" role="measure" type="quantitative">
419
- </column>
420
- <column aggregation="Sum" datatype="integer" default-format="*000" hidden="true" name="[Location_Area Code]" role="dimension" semantic-role="[AreaCode].[Name]" type="ordinal">
421
- </column>
422
- <column datatype="real" default-format="c&quot;$&quot;#,##0;(&quot;$&quot;#,##0)" name="[Margin]" role="measure" type="quantitative">
423
- </column>
424
- <column datatype="real" default-format="c&quot;$&quot;#,##0;(&quot;$&quot;#,##0)" name="[Marketing]" role="measure" type="quantitative">
425
- </column>
426
- <column datatype="integer" name="[Number of Records]" role="measure" type="quantitative" user:auto-column="numrec">
427
- <calculation class="tableau" formula="1"/>
428
- </column>
429
- <column datatype="integer" hidden="true" name="[ProductId]" role="measure" type="quantitative">
430
- </column>
431
- <column datatype="integer" hidden="true" name="[Product_ProductId]" role="measure" type="quantitative">
432
- </column>
433
- <column datatype="real" default-format="c&quot;$&quot;#,##0;(&quot;$&quot;#,##0)" name="[Profit]" role="measure" type="quantitative">
434
- </column>
435
- <column datatype="real" default-format="c&quot;$&quot;#,##0;(&quot;$&quot;#,##0)" name="[Sales]" role="measure" type="quantitative">
436
- </column>
437
- <column datatype="string" name="[State]" role="dimension" semantic-role="[State].[Name]" type="nominal">
438
- </column>
439
- <column datatype="real" default-format="c&quot;$&quot;#,##0;(&quot;$&quot;#,##0)" name="[Total Expenses]" role="measure" type="quantitative">
440
- </column>
441
- <folder name="Actuals" role="measures">
442
- <folder-item name="[COGS]" type="field"/>
443
- <folder-item name="[Inventory]" type="field"/>
444
- <folder-item name="[Margin]" type="field"/>
445
- <folder-item name="[Marketing]" type="field"/>
446
- <folder-item name="[Profit]" type="field"/>
447
- <folder-item name="[Sales]" type="field"/>
448
- <folder-item name="[Total Expenses]" type="field"/>
449
- </folder>
450
- <folder name="Budget" role="measures">
451
- <folder-item name="[Budget COGS]" type="field"/>
452
- <folder-item name="[Budget Margin]" type="field"/>
453
- <folder-item name="[Budget Profit]" type="field"/>
454
- <folder-item name="[Budget Sales]" type="field"/>
455
- </folder>
456
- <layout dim-ordering="alphabetic" dim-percentage="0.5" measure-ordering="alphabetic" measure-percentage="0.4" show-structure="false"/>
457
- <semantic-values>
458
- <semantic-value key="[Country].[Name]" value="&quot;UNITED STATES&quot;"/>
459
- </semantic-values>
460
- </datasource>
461
- </datasources><dashboards><dashboard name="Collapsible List of Workook Contents">
462
- <style/>
463
- <zones>
464
- <zone h="100000" id="3" param="vert" type="layout-flow" w="100000" x="0" y="0">
465
- <zone h="6221" id="1" type="title" w="100000" x="0" y="0"/>
466
- <zone h="93157" id="4" param="horz" type="layout-flow" w="100000" x="0" y="6221">
467
- <zone forceUpdate="" h="93157" id="6" param="file:///C:/tech/misc/expandable_tree_view/TableauDocInlineCSS.html" type="web" w="99655" x="0" y="6221"/>
468
- </zone>
469
- </zone>
470
- </zones>
471
- </dashboard></dashboards>
472
- <worksheets>
473
- <worksheet name="Sheet 1">
474
- <table>
475
- <view>
476
- <datasources>
477
- <datasource name="Sample - Coffee Chain (Access)"/>
478
- </datasources>
479
- <datasource-dependencies datasource="Sample - Coffee Chain (Access)">
480
- <column datatype="real" default-format="c&quot;$&quot;#,##0;(&quot;$&quot;#,##0)" name="[Profit]" role="measure" type="quantitative">
481
- </column>
482
- <column datatype="real" default-format="c&quot;$&quot;#,##0;(&quot;$&quot;#,##0)" name="[Sales]" role="measure" type="quantitative">
483
- </column>
484
- <column-instance column="[Profit]" derivation="Sum" name="[sum:Profit:qk]" pivot="key" type="quantitative"/>
485
- <column-instance column="[Sales]" derivation="Sum" name="[sum:Sales:qk]" pivot="key" type="quantitative"/>
486
- </datasource-dependencies>
487
- <aggregation value="true"/>
488
- </view>
489
- <style>
490
- </style>
491
- <panes>
492
- <pane>
493
- <view>
494
- <breakdown value="auto"/>
495
- </view>
496
- <mark class="Automatic"/>
497
- </pane>
498
- </panes>
499
- <rows>[Sample - Coffee Chain (Access)].[sum:Sales:qk]</rows>
500
- <cols>[Sample - Coffee Chain (Access)].[sum:Profit:qk]</cols>
501
- </table>
502
- </worksheet>
503
- </worksheets>
504
- <windows>
505
- <window class="schema" source-height="-1"/>
506
- <window auto-hidden="0" class="worksheet" maximized="1" name="Sheet 1">
507
- <cards>
508
- <edge name="left">
509
- <strip size="160">
510
- <card type="pages"/>
511
- <card type="filters"/>
512
- <card type="marks"/>
513
- </strip>
514
- </edge>
515
- <edge name="top">
516
- <strip size="31">
517
- <card type="columns"/>
518
- </strip>
519
- <strip size="31">
520
- <card type="rows"/>
521
- </strip>
522
- </edge>
523
- </cards>
524
- </window>
525
- <window auto-hidden="0" class="dashboard" maximized="1" name="Collapsible List of Workook Contents">
526
- <zones>
527
- <zone h="6221" id="1" name="" type="title" w="100000" x="0" y="0"/>
528
- <zone forceUpdate="" h="93157" id="5" name="" param="file:///C:/tech/misc/expandable_tree_view/TableauDocInlineCSS.html" type="web" w="50000" x="50000" y="6221"/>
529
- </zones>
530
- </window></windows>
531
- <thumbnails>
532
- <thumbnail height="192" name="Sheet 1" width="192">
533
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- RYZPBUil8kRnRolvJbjxze+hZ2MsLG8wMTFDMrnNdPQMuzsxpudf4Nxk5DiOQ4hD6boAjmWB
553
- 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
- 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
- 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
- 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
- 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
- FEAoTQoglCYFEEqTAgilSQGE0rqeUvndmz+nqAWZCGrUPUN4rAKZdI7AyBiNzC4XXvkRWvIB
559
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- nKTZbKLres9H4lyurvsv+V+SfMuyDjcT3KxVKLdsBgM+Gi0bn1vHbHbw97mpmi06lRLekdPY
576
- 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
- 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
- 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
- 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
- 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
- +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
- +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
- S26DCqVJAYTSpABCaVIAoTQpgFCaFEAoTQoglCYFEEqTAgilSQGE0qQAQmlSAKE0KYBQmhRA
584
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- sbyyzZXLZ/AHI1iWQ9VsMD4coNMxiEQGe73EZ5KcAb4kSrkc/qEhtLZJsWrRqubwhoZw2nWs
615
- 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
616
- </thumbnail>
617
- </thumbnails>
618
- </workbook>