(data, ctx)
| 462 | } |
| 463 | |
| 464 | function parsePlanData(data, ctx) { |
| 465 | let retPlan = {}; |
| 466 | if(data) { |
| 467 | if ('Plan' in data) { |
| 468 | let plan = parsePlan({ |
| 469 | ...data['Plan'], |
| 470 | xpos: 0, |
| 471 | ypos: 0, |
| 472 | loops: 1, |
| 473 | }, ctx); |
| 474 | retPlan['Plan'] = plan; |
| 475 | retPlan['xpos'] = 0; |
| 476 | retPlan['ypos'] = 0; |
| 477 | retPlan['width'] = plan.width + (xMargin * 2); |
| 478 | retPlan['height'] = plan.height + (yMargin * 4); |
| 479 | } |
| 480 | |
| 481 | retPlan['Statistics'] = { |
| 482 | 'JIT': [], |
| 483 | 'Triggers': [], |
| 484 | 'Summary': {}, |
| 485 | }; |
| 486 | if ('JIT' in data) { |
| 487 | retPlan['Statistics']['JIT'] = retPlan['JIT']; |
| 488 | } |
| 489 | if ('Triggers' in data) { |
| 490 | retPlan['Statistics']['Triggers'] = retPlan['JITriggersT']; |
| 491 | } |
| 492 | if ('Settings' in data) { |
| 493 | retPlan['Statistics']['Settings'] = data['Settings']; |
| 494 | } |
| 495 | let summKeys = ['Planning Time', 'Execution Time'], |
| 496 | summary = {}; |
| 497 | |
| 498 | summKeys.forEach((key)=>{ |
| 499 | if (key in data) { |
| 500 | summary[key] = data[key]; |
| 501 | } |
| 502 | }); |
| 503 | |
| 504 | retPlan['Statistics']['Summary'] = summary; |
| 505 | |
| 506 | parseExplainTableData(retPlan['Plan'], ctx); |
| 507 | } |
| 508 | return retPlan; |
| 509 | } |
| 510 | |
| 511 | export default function Explain({ |
| 512 | plans=[], |
no test coverage detected