├── .dockerignore
├── Simulator
├── tests
│ ├── end-to-end
│ │ ├── config.js
│ │ ├── earthquakeUSGS.js
│ │ ├── earthquakeMultitable.js
│ │ ├── StandardConnectionsExample.js
│ │ ├── incrementalRefreshConnector.js
│ │ └── GeneralSimulator.js
│ └── unit
│ │ ├── misc.js
│ │ ├── validation.js
│ │ ├── simulator_thunks.js
│ │ ├── simulator_actions.js
│ │ ├── reducers.js
│ │ └── messaging_thunks.js
├── tableau_logo.png
├── utils
│ ├── misc.js
│ ├── canvas_helper.js
│ ├── validation.js
│ └── consts.js
├── custom.js
├── components
│ ├── StandardConnectionValidator.jsx
│ ├── GatherDataFrame.jsx
│ ├── SimulatorNavbar.jsx
│ ├── CollapsibleTable.jsx
│ ├── AddressBar.jsx
│ ├── JoinViz.jsx
│ ├── StartConnectorGroup.jsx
│ ├── DataTables.jsx
│ ├── StandardConnections.jsx
│ ├── SimulatorAttributes.jsx
│ ├── JoinFilter.jsx
│ ├── App.jsx
│ └── TablePreview.jsx
├── vis.css
├── store
│ └── store.js
├── index.html
├── reducers
│ └── reducers.js
├── static
│ ├── toastr.min.js
│ └── toastr.min.css
└── actions
│ ├── simulator_actions.js
│ └── messaging_actions.js
├── src
├── static
│ ├── favicon.ico
│ ├── fa-brands-400.ttf
│ ├── fa-solid-900.ttf
│ ├── fa-solid-900.woff
│ ├── handmadepaper.png
│ ├── fa-brands-400.woff
│ ├── fa-brands-400.woff2
│ ├── fa-solid-900.woff2
│ ├── 4iCv6KVjbNBYlgoC1CzjsGyNPYZvgw.woff2
│ ├── 4iCv6KVjbNBYlgoC1Czjs2yNPYZvg7UI.woff2
│ ├── 4iCv6KVjbNBYlgoC1CzjtGyNPYZvg7UI.woff2
│ ├── 4iCv6KVjbNBYlgoC1CzjvGyNPYZvg7UI.woff2
│ ├── 4iCv6KVjbNBYlgoC1CzjvWyNPYZvg7UI.woff2
│ ├── 4iCv6KVjbNBYlgoC1CzjvmyNPYZvg7UI.woff2
│ ├── css_family_Ubuntu_300
│ └── promise-7.0.4.min.js
├── img
│ └── logo_splunk_2color_K.png
├── common.css
├── common.js
├── splunk-wdc.html
└── splunkConnector.js
├── screenshots
├── 4-wdc-link-page-preview.png
├── 8-ssl-certificate-invalid.png
├── 9-ssl-certificate-valid.png
├── 1-test-splunk-connectivity.png
├── 7-wdc-simulator-browser-console.png
├── 5-wdc-simulator-tables-with-columns.png
├── 6-wdc-simulator-fetched-table-data.png
├── 2-select-search-and-generate-wdc-link.png
└── 3-wdc-simulator-to-test-data-retrieved.png
├── .gitignore
├── package.json
├── Dockerfile
├── app.js
└── LICENSE
/.dockerignore:
--------------------------------------------------------------------------------
1 | node_module
2 | npm-debug.log
3 |
--------------------------------------------------------------------------------
/Simulator/tests/end-to-end/config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | 'port': 8333
3 | }
--------------------------------------------------------------------------------
/src/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/src/static/favicon.ico
--------------------------------------------------------------------------------
/Simulator/tableau_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/Simulator/tableau_logo.png
--------------------------------------------------------------------------------
/src/static/fa-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/src/static/fa-brands-400.ttf
--------------------------------------------------------------------------------
/src/static/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/src/static/fa-solid-900.ttf
--------------------------------------------------------------------------------
/src/static/fa-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/src/static/fa-solid-900.woff
--------------------------------------------------------------------------------
/src/static/handmadepaper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/src/static/handmadepaper.png
--------------------------------------------------------------------------------
/src/static/fa-brands-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/src/static/fa-brands-400.woff
--------------------------------------------------------------------------------
/src/static/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/src/static/fa-brands-400.woff2
--------------------------------------------------------------------------------
/src/static/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/src/static/fa-solid-900.woff2
--------------------------------------------------------------------------------
/src/img/logo_splunk_2color_K.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/src/img/logo_splunk_2color_K.png
--------------------------------------------------------------------------------
/screenshots/4-wdc-link-page-preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/screenshots/4-wdc-link-page-preview.png
--------------------------------------------------------------------------------
/screenshots/8-ssl-certificate-invalid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/screenshots/8-ssl-certificate-invalid.png
--------------------------------------------------------------------------------
/screenshots/9-ssl-certificate-valid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/screenshots/9-ssl-certificate-valid.png
--------------------------------------------------------------------------------
/screenshots/1-test-splunk-connectivity.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/screenshots/1-test-splunk-connectivity.png
--------------------------------------------------------------------------------
/screenshots/7-wdc-simulator-browser-console.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/screenshots/7-wdc-simulator-browser-console.png
--------------------------------------------------------------------------------
/src/static/4iCv6KVjbNBYlgoC1CzjsGyNPYZvgw.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/src/static/4iCv6KVjbNBYlgoC1CzjsGyNPYZvgw.woff2
--------------------------------------------------------------------------------
/screenshots/5-wdc-simulator-tables-with-columns.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/screenshots/5-wdc-simulator-tables-with-columns.png
--------------------------------------------------------------------------------
/screenshots/6-wdc-simulator-fetched-table-data.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/screenshots/6-wdc-simulator-fetched-table-data.png
--------------------------------------------------------------------------------
/src/static/4iCv6KVjbNBYlgoC1Czjs2yNPYZvg7UI.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/src/static/4iCv6KVjbNBYlgoC1Czjs2yNPYZvg7UI.woff2
--------------------------------------------------------------------------------
/src/static/4iCv6KVjbNBYlgoC1CzjtGyNPYZvg7UI.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/src/static/4iCv6KVjbNBYlgoC1CzjtGyNPYZvg7UI.woff2
--------------------------------------------------------------------------------
/src/static/4iCv6KVjbNBYlgoC1CzjvGyNPYZvg7UI.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/src/static/4iCv6KVjbNBYlgoC1CzjvGyNPYZvg7UI.woff2
--------------------------------------------------------------------------------
/src/static/4iCv6KVjbNBYlgoC1CzjvWyNPYZvg7UI.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/src/static/4iCv6KVjbNBYlgoC1CzjvWyNPYZvg7UI.woff2
--------------------------------------------------------------------------------
/src/static/4iCv6KVjbNBYlgoC1CzjvmyNPYZvg7UI.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/src/static/4iCv6KVjbNBYlgoC1CzjvmyNPYZvg7UI.woff2
--------------------------------------------------------------------------------
/screenshots/2-select-search-and-generate-wdc-link.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/screenshots/2-select-search-and-generate-wdc-link.png
--------------------------------------------------------------------------------
/screenshots/3-wdc-simulator-to-test-data-retrieved.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/splunk/splunk-tableau-wdc/HEAD/screenshots/3-wdc-simulator-to-test-data-retrieved.png
--------------------------------------------------------------------------------
/Simulator/utils/misc.js:
--------------------------------------------------------------------------------
1 | export function cleanUrl(url) {
2 | const regex = /^http|^https|^\/|^\.\/|^\.\.\//i;
3 | return regex.test(url) ? url : `http://${url}`;
4 | }
5 |
--------------------------------------------------------------------------------
/Simulator/custom.js:
--------------------------------------------------------------------------------
1 | $( document ).ready(function() {
2 | setTimeout(() => {
3 | $("#address-input").val("");
4 | $(".data-gather-properties").attr("style","visibility: hidden;");
5 | $("#interactive-btn").html("Initialize Connector");
6 |
7 | }, 100);
8 | });
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Dependency directories & file
15 | node_modules/
16 | jspm_packages/
17 | package-lock.json
18 |
19 | # Code Snippets
20 | code_snippets
21 |
22 | # Local files
23 | identify_lan_ip.html
24 |
--------------------------------------------------------------------------------
/Simulator/utils/canvas_helper.js:
--------------------------------------------------------------------------------
1 | export function node(params, alias, data, displayDiv) {
2 | // Traditional DOM manipulation is used here as a
3 | // hacky way to not have to force partial redraws
4 | const div = displayDiv;
5 | div.innerHTML = '';
6 | for (const j of params.edges) {
7 | for (const i of data.edges) {
8 | if (i.id === j) {
9 | div.innerHTML += `${i.joinValue}
`;
10 | }
11 | }
12 | }
13 | }
14 |
15 | export function edge(params, alias, data, displayDiv) {
16 | const div = displayDiv;
17 | if (params.nodes.length === 0) {
18 | for (const i of data.edges) {
19 | if (i.id === params.edges[0]) {
20 | div.innerHTML = i.joinValue;
21 | }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Simulator/components/StandardConnectionValidator.jsx:
--------------------------------------------------------------------------------
1 | import React, { Component, PropTypes } from 'react';
2 |
3 | class Validator extends Component {
4 | constructor(props) {
5 | super(props);
6 | this.errors = props.errors;
7 | }
8 |
9 | render() {
10 | return (
11 |
27 | To get data from Splunk, follow steps...
30 | 31 |
102 | Join Filtering is a v2.2+ WDC feature that allows a WDC to optimize fetching data
103 | for connections with two or more joined tables. In Tableau, if a WDC table A is
104 | filterable (as defined in WDC metadata), then when table B is joined to table A, the
105 | getData method for table B will be passed additional data when called.
106 | This additional data is a list of all distinct primary keys that were fetched in the
107 | getData method of table A. Using these keys, table B's getData method is able to
108 | only fetch records having foreign keys matching one of the input primary keys.
109 |
110 | This is simulated by allowing you to selected filters in this menu and then run a
111 | "Filtered Fetch". Example: if you click "Filtered Fetch" with the above parameters,
112 | the getData method of the {this.props.tableId}
113 | table will be called. In the table parameter of getData, table.isJoinFiltered
114 | will be true. The list of primary keys passed will be available in
115 | table.filterValues, and will be an array the unique values
116 | the {this.props.filterInfo.selectedColumn} column of
117 | the {this.props.filterInfo.selectedTable} table.
118 | The {this.props.filterInfo.selectedFK} represents
119 | the key on which the {this.props.tableId} table is being
120 | joined to the {this.props.filterInfo.selectedTable}
121 | table.
122 |
128 | You can only filter on tables which have data already fetched in the simulator. 129 |
130 |{tableInfo.description}
58 | : null 59 | } 60 | { 61 | tableInfo.incrementColumnId ? 62 |{`Incremental Refresh Column: ${incColumn}`}
63 | : null 64 | } 65 |