| @@ -42,8 +42,16 @@ | ||
| 42 | 42 | this.editPermissions = this.editPermissions.bind( this ); |
| 43 | 43 | this.readUploadedFile = this.readUploadedFile.bind( this ); |
| 44 | 44 | this.editURL = this.editURL.bind( this ); |
| 45 | 45 | this.editSchedule = this.editSchedule.bind( this ); |
| 46 | + this.editJSONSchedule = this.editJSONSchedule.bind( this ); | |
| 47 | + this.editJSONURL = this.editJSONURL.bind( this ); | |
| 48 | + this.editJSONHeaders = this.editJSONHeaders.bind( this ); | |
| 49 | + this.editJSONRoot = this.editJSONRoot.bind( this ); | |
| 50 | + this.editJSONPaging = this.editJSONPaging.bind( this ); | |
| 51 | + this.JSONImportData = this.JSONImportData.bind( this ); | |
| 52 | + this.editDatabaseSchedule = this.editDatabaseSchedule.bind( this ); | |
| 53 | + this.databaseImportData = this.databaseImportData.bind( this ); | |
| 46 | 54 | this.uploadData = this.uploadData.bind( this ); |
| 47 | 55 | this.getChartData = this.getChartData.bind( this ); |
| 48 | 56 | this.editChartData = this.editChartData.bind( this ); |
| 49 | 57 | this.updateChart = this.updateChart.bind( this ); |
| @@ -138,11 +146,83 @@ | ||
| 138 | 146 | |
| 139 | 147 | editSchedule( schedule ) { |
| 140 | 148 | let chart = { ...this.state.chart }; |
| 141 | 149 | chart['visualizer-chart-schedule'] = schedule; |
| 150 | + this.setState({ | |
| 151 | + chart, | |
| 152 | + isModified: true | |
| 153 | + }); | |
| 154 | + } | |
| 155 | + | |
| 156 | + editJSONSchedule( schedule ) { | |
| 157 | + let chart = { ...this.state.chart }; | |
| 158 | + chart['visualizer-json-schedule'] = schedule; | |
| 159 | + this.setState({ | |
| 160 | + chart, | |
| 161 | + isModified: true | |
| 162 | + }); | |
| 163 | + } | |
| 164 | + | |
| 165 | + editJSONURL( url ) { | |
| 166 | + let chart = { ...this.state.chart }; | |
| 167 | + chart['visualizer-json-url'] = url; | |
| 142 | 168 | this.setState({ chart }); |
| 143 | 169 | } |
| 144 | 170 | |
| 171 | + editJSONHeaders( headers ) { | |
| 172 | + let chart = { ...this.state.chart }; | |
| 173 | + delete headers.username; | |
| 174 | + delete headers.password; | |
| 175 | + chart['visualizer-json-headers'] = headers; | |
| 176 | + this.setState({ chart }); | |
| 177 | + } | |
| 178 | + | |
| 179 | + editJSONRoot( root ) { | |
| 180 | + let chart = { ...this.state.chart }; | |
| 181 | + chart['visualizer-json-root'] = root; | |
| 182 | + this.setState({ chart }); | |
| 183 | + } | |
| 184 | + | |
| 185 | + editJSONPaging( root ) { | |
| 186 | + let chart = { ...this.state.chart }; | |
| 187 | + chart['visualizer-json-paging'] = root; | |
| 188 | + this.setState({ chart }); | |
| 189 | + } | |
| 190 | + | |
| 191 | + JSONImportData( name, series, data ) { | |
| 192 | + let chart = { ...this.state.chart }; | |
| 193 | + chart['visualizer-source'] = name; | |
| 194 | + chart['visualizer-default-data'] = 0; | |
| 195 | + chart['visualizer-series'] = series; | |
| 196 | + chart['visualizer-data'] = data; | |
| 197 | + this.setState({ | |
| 198 | + chart, | |
| 199 | + isModified: true | |
| 200 | + }); | |
| 201 | + } | |
| 202 | + | |
| 203 | + editDatabaseSchedule( schedule ) { | |
| 204 | + let chart = { ...this.state.chart }; | |
| 205 | + chart['visualizer-db-schedule'] = schedule; | |
| 206 | + this.setState({ | |
| 207 | + chart, | |
| 208 | + isModified: true | |
| 209 | + }); | |
| 210 | + } | |
| 211 | + | |
| 212 | + databaseImportData( query, name, series, data ) { | |
| 213 | + let chart = { ...this.state.chart }; | |
| 214 | + chart['visualizer-source'] = name; | |
| 215 | + chart['visualizer-default-data'] = 0; | |
| 216 | + chart['visualizer-series'] = series; | |
| 217 | + chart['visualizer-data'] = data; | |
| 218 | + chart['visualizer-db-query'] = query; | |
| 219 | + this.setState({ | |
| 220 | + chart, | |
| 221 | + isModified: true | |
| 222 | + }); | |
| 223 | + } | |
| 224 | + | |
| 145 | 225 | uploadData( scheduled = false ) { |
| 146 | 226 | this.setState({ |
| 147 | 227 | isLoading: 'uploadData', |
| 148 | 228 | isScheduled: scheduled |
| @@ -234,9 +314,8 @@ | ||
| 234 | 314 | editChartData( chartData, type ) { |
| 235 | 315 | let chart = { ...this.state.chart }; |
| 236 | 316 | let series = []; |
| 237 | 317 | let settings = { ...chart['visualizer-settings'] }; |
| 238 | - | |
| 239 | 318 | chartData[0].map( ( i, index ) => { |
| 240 | 319 | series[index] = { |
| 241 | 320 | label: i, |
| 242 | 321 | type: chartData[1][index] |
| @@ -309,9 +388,9 @@ | ||
| 309 | 388 | } |
| 310 | 389 | } |
| 311 | 390 | ); |
| 312 | 391 | |
| 313 | - apiRequest({ path: `/visualizer/v1/update-chart?id=${this.props.attributes.id}`, method: 'POST', data: data }).then( | |
| 392 | + apiRequest({ path: `/visualizer/v1/update-chart?id=${ this.props.attributes.id }`, method: 'POST', data: data }).then( | |
| 314 | 393 | ( data ) => { |
| 315 | 394 | |
| 316 | 395 | this.setState({ |
| 317 | 396 | isLoading: false, |
| @@ -329,8 +408,9 @@ | ||
| 329 | 408 | render() { |
| 330 | 409 | if ( 'renderChart' === this.state.route && null !== this.state.chart ) { |
| 331 | 410 | return ( |
| 332 | 411 | <ChartRender |
| 412 | + id={ this.props.attributes.id } | |
| 333 | 413 | chart={ this.state.chart } |
| 334 | 414 | className={ this.props.className } |
| 335 | 415 | editChart={ this.editChart } |
| 336 | 416 | /> |
| @@ -348,24 +428,29 @@ | ||
| 348 | 428 | </div> |
| 349 | 429 | |
| 350 | 430 | { 'home' === this.state.route && ( |
| 351 | 431 | <div className="visualizer-settings__content"> |
| 352 | - | |
| 353 | 432 | <div className="visualizer-settings__content-description"> |
| 354 | 433 | { __( 'Make a new chart or display an existing one?' ) } |
| 355 | 434 | </div> |
| 356 | 435 | |
| 357 | - <div className="visualizer-settings__content-option locked"> | |
| 436 | + { /* You can apply "locked" class to lock any of the following list items. */ } | |
| 358 | 437 | |
| 438 | + <a | |
| 439 | + href={ visualizerLocalize.adminPage } | |
| 440 | + target="_blank" | |
| 441 | + className="visualizer-settings__content-option" | |
| 442 | + > | |
| 443 | + | |
| 359 | 444 | <span className="visualizer-settings__content-option-title"> |
| 360 | - { __( 'Create a new chart (coming soon)' ) } | |
| 445 | + { __( 'Create a new chart' ) } | |
| 361 | 446 | </span> |
| 362 | 447 | |
| 363 | 448 | <div className="visualizer-settings__content-option-icon"> |
| 364 | - <Dashicon icon="lock" /> | |
| 449 | + <Dashicon icon="arrow-right-alt2" /> | |
| 365 | 450 | </div> |
| 366 | 451 | |
| 367 | - </div> | |
| 452 | + </a> | |
| 368 | 453 | |
| 369 | 454 | <div |
| 370 | 455 | className="visualizer-settings__content-option" |
| 371 | 456 | onClick={ () => { |
| @@ -396,8 +481,9 @@ | ||
| 396 | 481 | { ( 'showCharts' === this.state.route && false === this.state.isLoading ) && <Charts getChart={ this.getChart }/> } |
| 397 | 482 | |
| 398 | 483 | { ( 'chartSelect' === this.state.route && null !== this.state.chart ) && |
| 399 | 484 | <ChartSelect |
| 485 | + id={ this.props.attributes.id } | |
| 400 | 486 | chart={ this.state.chart } |
| 401 | 487 | editSettings={ this.editSettings } |
| 402 | 488 | editPermissions={ this.editPermissions } |
| 403 | 489 | url={ this.state.url } |
| @@ -403,8 +489,16 @@ | ||
| 403 | 489 | url={ this.state.url } |
| 404 | 490 | readUploadedFile={ this.readUploadedFile } |
| 405 | 491 | editURL={ this.editURL } |
| 406 | 492 | editSchedule={ this.editSchedule } |
| 493 | + editJSONURL={ this.editJSONURL } | |
| 494 | + editJSONHeaders={ this.editJSONHeaders } | |
| 495 | + editJSONSchedule={ this.editJSONSchedule } | |
| 496 | + editJSONRoot={ this.editJSONRoot } | |
| 497 | + editJSONPaging={ this.editJSONPaging } | |
| 498 | + JSONImportData={ this.JSONImportData } | |
| 499 | + editDatabaseSchedule={ this.editDatabaseSchedule } | |
| 500 | + databaseImportData={ this.databaseImportData } | |
| 407 | 501 | uploadData={ this.uploadData } |
| 408 | 502 | getChartData={ this.getChartData } |
| 409 | 503 | editChartData={ this.editChartData } |
| 410 | 504 | isLoading={ this.state.isLoading } |