@jaxolotl/wdclib
Version:
Required Library to bridge javascript with Tableau. Use the scripts below to create the combined shim library. i.e. npm run-script build_and_copy
477 lines (476 loc) • 17.1 kB
HTML
<html lang="en">
<head>
<title>Code coverage report for tableauwdc.js</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="prettify.css" />
<link rel="stylesheet" href="base.css" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1>
<a href="index.html">All files</a> tableauwdc.js
</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Statements</span>
<span class='fraction'>0/37</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/8</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/5</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Lines</span>
<span class='fraction'>0/37</span>
</div>
</div>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138</td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/* globals require, qt */
<span class="cstat-no" title="statement not covered" >import { copyFunctions, linkObjectProperties, tableauProperties } from './Utilities';</span>
<span class="cstat-no" title="statement not covered" >import Shared from './Shared';</span>
<span class="cstat-no" title="statement not covered" >import NativeDispatcher from './NativeDispatcher';</span>
<span class="cstat-no" title="statement not covered" >import SimulatorDispatcher from './SimulatorDispatcher';</span>
<span class="cstat-no" title="statement not covered" >import { getBuildNumber } from './DevUtils/BuildNumber';</span>
<span class="cstat-no" title="statement not covered" >import { ENUMS_DICTIONARY } from './Enums';</span>
let qwebchannel = <span class="cstat-no" title="statement not covered" >require('qwebchannel');</span>
const BUILD_NUMBER = <span class="cstat-no" title="statement not covered" >getBuildNumber();</span>
/**
* ShimLibrary - This module defines the WDC's shim library
* which is used to bridge the gap between the javascript code of the WDC and the driving context
* of the WDC (Tableau desktop, the simulator, etc.)
*/
/**
* This function should be called once bootstrapping has been completed and the dispatcher and shared WDC objects are both created and available
*
* @param {Object} _dispatcher
* @param {Object} _shared
*
* @returns {Undefined}
*/
function <span class="fstat-no" title="function not covered" >bootstrappingFinished (_dispatcher, _shared) {</span>
<span class="cstat-no" title="statement not covered" > copyFunctions(_dispatcher.publicInterface, window.tableau);</span>
<span class="cstat-no" title="statement not covered" > copyFunctions(_dispatcher.privateInterface, window._tableau);</span>
<span class="cstat-no" title="statement not covered" > _shared.init();</span>
}
/**
* Check to see if the tableauVersionBootstrap is defined as a global object. If so,
* we are running in the Tableau desktop/server context. If not, we're running in the simulator
* @returns {Boolean}
*/
function <span class="fstat-no" title="function not covered" >runningOnTableau () {</span>
<span class="cstat-no" title="statement not covered" > return !!window.tableauVersionBootstrap;</span>
}
/**
* Initializes the wdc shim library. You must call this before doing anything with WDC
*
* @returns {Undefined}
*/
export function <span class="fstat-no" title="function not covered" >init () {</span>
/**
* The initial code here is the only place in our module which should have global
* knowledge of how all the WDC components are glued together. This is the only place
* which will know about the window object or other global objects. This code will be run
* immediately when the shim library loads and is responsible for determining the context
* which it is running it and setup a communications channel between the js & running code
*/
let dispatcher = <span class="cstat-no" title="statement not covered" >null;</span>
let shared = <span class="cstat-no" title="statement not covered" >null;</span>
// Always define the private _tableau object at the start
<span class="cstat-no" title="statement not covered" > window._tableau = {};</span>
<span class="cstat-no" title="statement not covered" > console.log(`Initializing tableauwdc version number ${BUILD_NUMBER}`);</span>
/**
* Check to see if the tableauVersionBootstrap is defined as a global object. If so,
* we are running in the Tableau desktop/server context. If not, we're running in the simulator
*/
<span class="cstat-no" title="statement not covered" > if (runningOnTableau()) {</span>
// Running on Tableau
// We have the tableau object defined
<span class="cstat-no" title="statement not covered" > console.log(`Initializing NativeDispatcher, Reporting version number`);</span>
<span class="cstat-no" title="statement not covered" > window.tableauVersionBootstrap.ReportVersionNumber(BUILD_NUMBER);</span>
<span class="cstat-no" title="statement not covered" > dispatcher = new NativeDispatcher(window);</span>
} else <span class="cstat-no" title="statement not covered" >if (!!window.qt && !!window.qt.webChannelTransport) {</span>
// qwebchannel
<span class="cstat-no" title="statement not covered" > console.log('Initializing NativeDispatcher for qwebchannel');</span>
<span class="cstat-no" title="statement not covered" > window.tableau = {};</span>
// We're running in a context where the webChannelTransport is available. This means QWebEngine is in use
<span class="cstat-no" title="statement not covered" > window.channel = new qwebchannel.QWebChannel(qt.webChannelTransport, <span class="fstat-no" title="function not covered" >function (</span>channel) {</span>
<span class="cstat-no" title="statement not covered" > console.log('QWebChannel created successfully');</span>
/**
* Define the function which tableau will call after it has inserted all the required objects into the javascript frame
* @returns {Undefined}
*/
<span class="cstat-no" title="statement not covered" > window._tableau._nativeSetupCompleted = <span class="fstat-no" title="function not covered" >function () </span>{</span>
// Once the native code tells us everything here is done, we should have all the expected objects inserted into js
<span class="cstat-no" title="statement not covered" > dispatcher = new NativeDispatcher(channel.objects);</span>
<span class="cstat-no" title="statement not covered" > linkObjectProperties(channel.objects.tableau, window.tableau, tableauProperties);</span>
<span class="cstat-no" title="statement not covered" > shared.changeTableauApiObj(window.tableau);</span>
<span class="cstat-no" title="statement not covered" > bootstrappingFinished(dispatcher, shared);</span>
};
// Actually call into the version bootstrapper to report our version number
<span class="cstat-no" title="statement not covered" > channel.objects.tableauVersionBootstrap.ReportVersionNumber(BUILD_NUMBER);</span>
});
} else {
// Running on Simulator
<span class="cstat-no" title="statement not covered" > console.log('Version Bootstrap is not defined, Initializing SimulatorDispatcher');</span>
<span class="cstat-no" title="statement not covered" > window.tableau = {};</span>
<span class="cstat-no" title="statement not covered" > dispatcher = new SimulatorDispatcher(window);</span>
}
// Initialize the shared WDC object and add in our enum values
<span class="cstat-no" title="statement not covered" > shared = new Shared(window.tableau, window._tableau, window);</span>
/**
* Check to see if the dispatcher is already defined and immediately call the
* callback if so
*/
<span class="cstat-no" title="statement not covered" > if (dispatcher) {</span>
<span class="cstat-no" title="statement not covered" > bootstrappingFinished(dispatcher, shared);</span>
}
}
// named exports
export { ENUMS_DICTIONARY };
// default export
export default init;
</pre></td></tr>
</table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage
generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Fri Dec 14 2018 15:27:18 GMT-0300 (Argentina Standard Time)
</div>
</div>
<script src="prettify.js"></script>
<script>
window.onload = function () {
if (typeof prettyPrint === 'function') {
prettyPrint();
}
};
</script>
<script src="sorter.js"></script>
</body>
</html>