|
48 | 48 | var search_info = JSON.parse(tableau.connectionData); |
49 | 49 | tableau.reportProgress("Getting Schema from LNT."); |
50 | 50 |
|
| 51 | + var field_info = getValue(ts_url + "/fields/"); |
| 52 | + var fields = field_info.fields; |
| 53 | + |
51 | 54 | // Lookup machines of interest, and gather run fields. |
52 | | - var machine_names = get_matching_machines(search_info.machine_regexp); |
53 | | - if (machine_names.length === 0) { |
| 55 | + // Detect schema of the run_infos by grabbing them. |
| 56 | + var run_info_cols = new Set(); |
| 57 | + var machine_infos = get_matching_machines(search_info.machine_regexp); |
| 58 | + if (machine_infos.length === 0) { |
54 | 59 | tableau.abortWithError("Did not match any machine names matching: " + |
55 | 60 | search_info.machine_regexp); |
56 | 61 | } |
57 | 62 |
|
58 | | - var field_info = getValue(ts_url + "/fields/"); |
| 63 | + machine_infos.forEach(function (machine) { |
| 64 | + var machines_run_data = getValue(ts_url + "/machines/" + machine.id) |
| 65 | + // Grab the last run_info. |
| 66 | + // If fields were added over time, it should have the most. |
| 67 | + var final_run_info = machines_run_data.runs[machines_run_data.runs.length - 1]; |
| 68 | + for (const [key, value] of Object.entries(final_run_info)) { |
| 69 | + run_info_cols.add(key); |
| 70 | + } |
| 71 | + }); |
| 72 | + // These will be imported differently. |
| 73 | + run_info_cols.delete('id'); |
| 74 | + run_info_cols.delete('order_id'); |
59 | 75 |
|
60 | | - var fields = field_info.fields; |
61 | 76 | var sample_cols = []; |
62 | 77 | var run_cols = []; |
63 | 78 |
|
|
92 | 107 | alias: "Run DateTime", |
93 | 108 | dataType: tableau.dataTypeEnum.datetime |
94 | 109 | }); |
| 110 | + |
| 111 | + run_info_cols.forEach(function(key) { |
| 112 | + run_cols.push({ |
| 113 | + id: key, |
| 114 | + alias: key, |
| 115 | + // It seems like these are all strings, no matter the type. |
| 116 | + // At least I have not found a counter example. |
| 117 | + dataType: tableau.dataTypeEnum.string |
| 118 | + }); |
| 119 | + }); |
| 120 | + |
95 | 121 | sample_cols.push({ |
96 | 122 | id: "test_name", |
97 | 123 | alias: "Test", |
|
106 | 132 | }); |
107 | 133 | }); |
108 | 134 |
|
109 | | - var measurementsSchema = { |
110 | | - id: "measurement_data", |
111 | | - alias: "Measurement Data", |
112 | | - columns: sample_cols, |
113 | | - incrementColumnId: "run_id", |
114 | | - joinOnly: true |
115 | | - }; |
116 | | - |
117 | | - var runSchema = { |
118 | | - id: "run_information", |
119 | | - alias: "Run Information", |
120 | | - columns: run_cols, |
121 | | - incrementColumnId: "run_id" |
122 | | - }; |
| 135 | + var measurementsSchema = { |
| 136 | + id: "measurement_data", |
| 137 | + alias: "Measurement Data", |
| 138 | + columns: sample_cols, |
| 139 | + incrementColumnId: "run_id", |
| 140 | + joinOnly: true |
| 141 | + }; |
| 142 | + |
| 143 | + var runSchema = { |
| 144 | + id: "run_information", |
| 145 | + alias: "Run Information", |
| 146 | + columns: run_cols, |
| 147 | + incrementColumnId: "run_id" |
| 148 | + }; |
123 | 149 |
|
124 | 150 | var standardConnection = { |
125 | 151 | "alias": "Measurements with Run Info", |
|
181 | 207 |
|
182 | 208 | var date_str = run_info.end_time; |
183 | 209 | var run_date = new Date(date_str); |
184 | | - tableData.push({run_id: run_info.id, |
| 210 | + var base_run_data = {run_id: run_info.id, |
185 | 211 | machine_name: machines_run_data.machine.name, |
186 | 212 | run_order: run_info[run_info.order_by], |
187 | | - run_date: run_date}); |
| 213 | + run_date: run_date}; |
| 214 | + Object.assign(base_run_data, run_info); |
| 215 | + tableData.push(base_run_data); |
188 | 216 |
|
189 | 217 | if (total_fetched % submission_batch_size == 0) { |
190 | 218 | table.appendRows(tableData); |
|
0 commit comments