Commit a9d86eaa15ef550ab21e7c72013af896e202d8c3
1 parent
4a7023e8
Exists in
master
and in
55 other branches
Fix zoom / unzoom
Showing
1 changed file
with
63 additions
and
89 deletions
Show diff stats
src/InputOutput/IHMImpl/Params/PlotImpl/IHMInputOutputParamsPlotClass.php
@@ -47,7 +47,7 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | @@ -47,7 +47,7 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | ||
47 | $postProcessCmd = ""; | 47 | $postProcessCmd = ""; |
48 | 48 | ||
49 | if ($forceTimeZoomReset) | 49 | if ($forceTimeZoomReset) |
50 | - $this->resetZoomListForTab($input->{'tab-index'}, $forceTimeZoomReset); | 50 | + $this->resetZoomList(PLOT_RESULT_FILE_KEY."_".$input->{'tab-index'}, $forceTimeZoomReset); |
51 | 51 | ||
52 | $requestNode = $this->paramsData->addRequestNode(); | 52 | $requestNode = $this->paramsData->addRequestNode(); |
53 | $outputsNode = $requestNode->getOutputsNode(); | 53 | $outputsNode = $requestNode->getOutputsNode(); |
@@ -1465,6 +1465,26 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | @@ -1465,6 +1465,26 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | ||
1465 | return NULL; | 1465 | return NULL; |
1466 | return json_decode(file_get_contents($path)); | 1466 | return json_decode(file_get_contents($path)); |
1467 | } | 1467 | } |
1468 | + | ||
1469 | + | ||
1470 | + | ||
1471 | + private function loadZoomList($interactiveId) | ||
1472 | + { | ||
1473 | + $path = $this->getWorkingPath()."zoom.list.".$interactiveId; | ||
1474 | + if (!file_exists($path)) | ||
1475 | + return NULL; | ||
1476 | + return json_decode(file_get_contents($path)); | ||
1477 | + } | ||
1478 | + | ||
1479 | + private function saveZoomList($interactiveId, $zoomList) | ||
1480 | + { | ||
1481 | + $path = $this->getWorkingPath()."zoom.list.".$interactiveId; | ||
1482 | + if (!is_dir($this->getWorkingPath())) | ||
1483 | + mkdir($this->getWorkingPath(),0777); | ||
1484 | + $file = fopen($path, 'w'); | ||
1485 | + fwrite($file, json_encode($zoomList)); | ||
1486 | + fclose($file); | ||
1487 | + } | ||
1468 | 1488 | ||
1469 | private function unmarshallActionRequest($input) | 1489 | private function unmarshallActionRequest($input) |
1470 | { | 1490 | { |
@@ -1502,34 +1522,27 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | @@ -1502,34 +1522,27 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | ||
1502 | //if $isInterval == true, $minOrFileIndex is the min and $maxOrInetrvalIndex is the max | 1522 | //if $isInterval == true, $minOrFileIndex is the min and $maxOrInetrvalIndex is the max |
1503 | //if $isInterval == false, $minOrFileIndex is the fileIndex and $maxOrInetrvalIndex is the intervalIndex | 1523 | //if $isInterval == false, $minOrFileIndex is the fileIndex and $maxOrInetrvalIndex is the intervalIndex |
1504 | 1524 | ||
1505 | - $zoomList = $this->loadZoomList(); | 1525 | + $zoomList = $this->loadZoomList($input->interactiveId); |
1506 | 1526 | ||
1507 | - if (!isset($zoomList->tabs)) | 1527 | + if (!isset($zoomList)) |
1508 | { | 1528 | { |
1509 | //Init zoom list | 1529 | //Init zoom list |
1510 | $zoomList = (Object)array( | 1530 | $zoomList = (Object)array( |
1511 | - 'tabs' => (Object)array() | ||
1512 | - ); | ||
1513 | - } | ||
1514 | - | ||
1515 | - if (!isset($zoomList->tabs->{$input->{'tabId'}})) | ||
1516 | - { | ||
1517 | - $zoomList->tabs->{$input->{'tabId'}} = (Object)array( | ||
1518 | - 'times' => array(), | ||
1519 | - 'panels' => (Object)array() | 1531 | + 'times' => array(), |
1532 | + 'panels' => (Object)array() | ||
1520 | ); | 1533 | ); |
1521 | } | 1534 | } |
1522 | 1535 | ||
1523 | if ($input->{'axeId'} == 'timeAxis') | 1536 | if ($input->{'axeId'} == 'timeAxis') |
1524 | { | 1537 | { |
1525 | if ($isInterval) | 1538 | if ($isInterval) |
1526 | - array_push ($zoomList->tabs->{$input->{'tabId'}}->times, (Object)array( | 1539 | + array_push ($zoomList->times, (Object)array( |
1527 | 'isInterval' => true, | 1540 | 'isInterval' => true, |
1528 | 'min' => $minOrFileIndex, | 1541 | 'min' => $minOrFileIndex, |
1529 | 'max' => $maxOrIntervalIndex | 1542 | 'max' => $maxOrIntervalIndex |
1530 | )); | 1543 | )); |
1531 | else | 1544 | else |
1532 | - array_push ($zoomList->tabs->{$input->{'tabId'}}->times, (Object)array( | 1545 | + array_push ($zoomList->times, (Object)array( |
1533 | 'isInterval' => false, | 1546 | 'isInterval' => false, |
1534 | 'ttFileIndex' => $minOrFileIndex, | 1547 | 'ttFileIndex' => $minOrFileIndex, |
1535 | 'intIndex' => $maxOrIntervalIndex | 1548 | 'intIndex' => $maxOrIntervalIndex |
@@ -1537,141 +1550,103 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | @@ -1537,141 +1550,103 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | ||
1537 | } | 1550 | } |
1538 | else | 1551 | else |
1539 | { | 1552 | { |
1540 | - if (!isset($zoomList->tabs->{$input->{'tabId'}}->panels->{$input->{'panelId'}})) | 1553 | + if (!isset($zoomList->panels->{$input->{'panelId'}})) |
1541 | { | 1554 | { |
1542 | - $zoomList->tabs->{$input->{'tabId'}}->panels->{$input->{'panelId'}} = (Object) array( | 1555 | + $zoomList->panels->{$input->{'panelId'}} = (Object) array( |
1543 | 'axes' => (Object)array() | 1556 | 'axes' => (Object)array() |
1544 | ); | 1557 | ); |
1545 | } | 1558 | } |
1546 | 1559 | ||
1547 | - if (!isset($zoomList->tabs->{$input->{'tabId'}}->panels->{$input->{'panelId'}}->axes->{$input->{'axeId'}})) | 1560 | + if (!isset($zoomList->panels->{$input->{'panelId'}}->axes->{$input->{'axeId'}})) |
1548 | { | 1561 | { |
1549 | - $zoomList->tabs->{$input->{'tabId'}}->panels->{$input->{'panelId'}}->axes->{$input->{'axeId'}} = array(); | 1562 | + $zoomList->panels->{$input->{'panelId'}}->axes->{$input->{'axeId'}} = array(); |
1550 | } | 1563 | } |
1551 | 1564 | ||
1552 | - array_push ($zoomList->tabs->{$input->{'tabId'}}->panels->{$input->{'panelId'}}->axes->{$input->{'axeId'}}, (Object)array( | 1565 | + array_push ($zoomList->panels->{$input->{'panelId'}}->axes->{$input->{'axeId'}}, (Object)array( |
1553 | 'min' => $minOrFileIndex, | 1566 | 'min' => $minOrFileIndex, |
1554 | 'max' => $maxOrIntervalIndex | 1567 | 'max' => $maxOrIntervalIndex |
1555 | )); | 1568 | )); |
1556 | } | 1569 | } |
1557 | 1570 | ||
1558 | - //save zoom list | ||
1559 | - $path = $this->getWorkingPath()."zoom.list"; | ||
1560 | - if (!is_dir($this->getWorkingPath())) | ||
1561 | - mkdir($this->getWorkingPath(),0777); | ||
1562 | - $file = fopen($path, 'w'); | ||
1563 | - fwrite($file, json_encode($zoomList)); | ||
1564 | - fclose($file); | ||
1565 | - } | ||
1566 | - | ||
1567 | - private function loadZoomList() | ||
1568 | - { | ||
1569 | - $path = $this->getWorkingPath()."zoom.list"; | ||
1570 | - if (!file_exists($path)) | ||
1571 | - return NULL; | ||
1572 | - return json_decode(file_get_contents($path)); | 1571 | + $this->saveZoomList($input->interactiveId, $zoomList); |
1573 | } | 1572 | } |
1574 | 1573 | ||
1575 | - private function resetZoomListForTab($tabId, $resetOnlyTimeZoom = false) | 1574 | + private function resetZoomList($interactiveId, $resetOnlyTimeZoom = false) |
1576 | { | 1575 | { |
1577 | - $zoomList = $this->loadZoomList(); | ||
1578 | - | ||
1579 | - if (isset($zoomList->tabs) && isset($zoomList->tabs->{PLOT_RESULT_FILE_KEY."_".$tabId})) | ||
1580 | - { | ||
1581 | - if (!$resetOnlyTimeZoom) | ||
1582 | - unset($zoomList->tabs->{PLOT_RESULT_FILE_KEY."_".$tabId}); | ||
1583 | - else | ||
1584 | - $zoomList->tabs->{PLOT_RESULT_FILE_KEY."_".$tabId}->times = array(); | 1576 | + if (!$resetOnlyTimeZoom) { |
1577 | + $zoomList = (Object)array( | ||
1578 | + 'times' => array(), | ||
1579 | + 'panels' => (Object)array() | ||
1580 | + ); | ||
1585 | } | 1581 | } |
1586 | - | ||
1587 | - $path = $this->getWorkingPath()."zoom.list"; | ||
1588 | - if (!is_dir($this->getWorkingPath())) | ||
1589 | - mkdir($this->getWorkingPath(),0777); | ||
1590 | - $file = fopen($path, 'w'); | ||
1591 | - fwrite($file, json_encode($zoomList)); | ||
1592 | - fclose($file); | 1582 | + else { |
1583 | + $zoomList = $this->loadZoomList($interactiveId); | ||
1584 | + $zoomList->times = array(); | ||
1585 | + } | ||
1586 | + | ||
1587 | + $this->saveZoomList($interactiveId, $zoomList); | ||
1593 | } | 1588 | } |
1594 | 1589 | ||
1595 | private function undoZoomInList($input) | 1590 | private function undoZoomInList($input) |
1596 | { | 1591 | { |
1597 | - $zoomList = $this->loadZoomList(); | 1592 | + $zoomList = $this->loadZoomList($input->interactiveId); |
1598 | 1593 | ||
1599 | $result = NULL; | 1594 | $result = NULL; |
1600 | - if (isset($zoomList->tabs) && isset($zoomList->tabs->{$input->{'tabId'}})) | 1595 | + if ($zoomList) |
1601 | { | 1596 | { |
1602 | if ($input->{'axeId'} == 'timeAxis') | 1597 | if ($input->{'axeId'} == 'timeAxis') |
1603 | { | 1598 | { |
1604 | - if (count($zoomList->tabs->{$input->{'tabId'}}->times) <= 0) | 1599 | + if (count($zoomList->times) <= 0) |
1605 | return NULL; | 1600 | return NULL; |
1606 | - $result = array_pop($zoomList->tabs->{$input->{'tabId'}}->times); | 1601 | + $result = array_pop($zoomList->times); |
1607 | } | 1602 | } |
1608 | else | 1603 | else |
1609 | { | 1604 | { |
1610 | - if (!isset($zoomList->tabs->{$input->{'tabId'}}->panels->{$input->{'panelId'}})) | 1605 | + if (!isset($zoomList->panels->{$input->{'panelId'}})) |
1611 | return NULL; | 1606 | return NULL; |
1612 | 1607 | ||
1613 | - if (!isset($zoomList->tabs->{$input->{'tabId'}}->panels->{$input->{'panelId'}}->axes->{$input->{'axeId'}})) | 1608 | + if (!isset($zoomList->panels->{$input->{'panelId'}}->axes->{$input->{'axeId'}})) |
1614 | return NULL; | 1609 | return NULL; |
1615 | 1610 | ||
1616 | - $result = array_pop($zoomList->tabs->{$input->{'tabId'}}->panels->{$input->{'panelId'}}->axes->{$input->{'axeId'}}); | 1611 | + $result = array_pop($zoomList->panels->{$input->{'panelId'}}->axes->{$input->{'axeId'}}); |
1617 | } | 1612 | } |
1618 | } | 1613 | } |
1619 | else | 1614 | else |
1620 | return NULL; | 1615 | return NULL; |
1621 | 1616 | ||
1622 | - $path = $this->getWorkingPath()."zoom.list"; | ||
1623 | - if (!is_dir($this->getWorkingPath())) | ||
1624 | - mkdir($this->getWorkingPath(),0777); | ||
1625 | - $file = fopen($path, 'w'); | ||
1626 | - fwrite($file, json_encode($zoomList)); | ||
1627 | - fclose($file); | 1617 | + $this->saveZoomList($input->interactiveId, $zoomList); |
1628 | 1618 | ||
1629 | return $result; | 1619 | return $result; |
1630 | } | 1620 | } |
1631 | 1621 | ||
1632 | private function unmarshallZoom($input, $plotInput, $isUndo = false) | 1622 | private function unmarshallZoom($input, $plotInput, $isUndo = false) |
1633 | { | 1623 | { |
1634 | - //Find current tab | ||
1635 | - $crtTab = NULL; | ||
1636 | - foreach ($plotInput->{'tabs'} as $tab) | ||
1637 | - { | ||
1638 | - if ($input->{'tabId'} == PLOT_RESULT_FILE_KEY."_".$tab->{'id'}) | ||
1639 | - { | ||
1640 | - $crtTab = $tab; | ||
1641 | - break; | ||
1642 | - } | ||
1643 | - } | ||
1644 | - | ||
1645 | - if (!$crtTab) | ||
1646 | - throw new Exception('Cannot retrieve plot tab for navigation action.'); | ||
1647 | - | ||
1648 | if ($input->{'axeId'} == 'timeAxis') | 1624 | if ($input->{'axeId'} == 'timeAxis') |
1649 | { | 1625 | { |
1650 | //Zoom on Time Axis | 1626 | //Zoom on Time Axis |
1651 | - if ($crtTab->{'timesrc'} != 'Interval') | 1627 | + if ($plotInput->{'timesrc'} != 'Interval') |
1652 | { | 1628 | { |
1653 | - $crtTab->{'timesrc'} = 'Interval'; | 1629 | + $plotInput->{'timesrc'} = 'Interval'; |
1654 | if (!$isUndo) | 1630 | if (!$isUndo) |
1655 | $this->addZoomInList($input,false, | 1631 | $this->addZoomInList($input,false, |
1656 | - isset($crtTab->{'ttFileIndex'}) ? $crtTab->{'ttFileIndex'} : 0, | ||
1657 | - isset($crtTab->{'intIndex'}) ? $crtTab->{'intIndex'} : 0); | 1632 | + isset($plotInput->{'ttFileIndex'}) ? $plotInput->{'ttFileIndex'} : 0, |
1633 | + isset($plotInput->{'intIndex'}) ? $plotInput->{'intIndex'} : 0); | ||
1658 | } | 1634 | } |
1659 | else | 1635 | else |
1660 | { | 1636 | { |
1661 | if (!$isUndo) | 1637 | if (!$isUndo) |
1662 | - $this->addZoomInList($input,true,$crtTab->{'startDate'},$crtTab->{'stopDate'}); | 1638 | + $this->addZoomInList($input,true,$plotInput->{'startDate'},$plotInput->{'stopDate'}); |
1663 | } | 1639 | } |
1664 | - $crtTab->{'startDate'} = $input->{'min'}; | ||
1665 | - $crtTab->{'stopDate'} = $input->{'max'}; | 1640 | + $plotInput->{'startDate'} = $input->{'min'}; |
1641 | + $plotInput->{'stopDate'} = $input->{'max'}; | ||
1666 | 1642 | ||
1667 | - $plotInput->{'last-plotted-tab'} = $crtTab->{'id'}; | ||
1668 | $plotInput->{'force-time-zoom-reset'} = false; | 1643 | $plotInput->{'force-time-zoom-reset'} = false; |
1669 | - $this->saveIHMRequest($plotInput); | 1644 | + $this->saveIHMRequest($input->interactiveId, $plotInput); |
1670 | return $plotInput; | 1645 | return $plotInput; |
1671 | } | 1646 | } |
1672 | 1647 | ||
1673 | //Digital axis zoom | 1648 | //Digital axis zoom |
1674 | - foreach ($crtTab->{'panels'} as $panel) | 1649 | + foreach ($plotInput->{'panels'} as $panel) |
1675 | { | 1650 | { |
1676 | if ($input->{'panelId'} == $panel->{'id'}) | 1651 | if ($input->{'panelId'} == $panel->{'id'}) |
1677 | { | 1652 | { |
@@ -1684,8 +1659,7 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | @@ -1684,8 +1659,7 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | ||
1684 | $oldMax = $axis->{'axis-range-max'}; | 1659 | $oldMax = $axis->{'axis-range-max'}; |
1685 | $axis->{'axis-range-min'} = $input->{'min'}; | 1660 | $axis->{'axis-range-min'} = $input->{'min'}; |
1686 | $axis->{'axis-range-max'} = $input->{'max'}; | 1661 | $axis->{'axis-range-max'} = $input->{'max'}; |
1687 | - $plotInput->{'last-plotted-tab'} = $crtTab->{'id'}; | ||
1688 | - $this->saveIHMRequest($plotInput); | 1662 | + $this->saveIHMRequest($input->interactiveId, $plotInput); |
1689 | //Do not save 'force-single-replot' in request file! | 1663 | //Do not save 'force-single-replot' in request file! |
1690 | $plotInput->{'force-single-replot'} = true; | 1664 | $plotInput->{'force-single-replot'} = true; |
1691 | $plotInput->{'force-time-zoom-reset'} = false; | 1665 | $plotInput->{'force-time-zoom-reset'} = false; |