refine rack unit number inversion
authorDenis Ovsienko <denis@ovsienko.info>
Fri, 2 Nov 2018 11:08:21 +0000 (11:08 +0000)
committerDenis Ovsienko <denis@ovsienko.info>
Fri, 2 Nov 2018 11:08:21 +0000 (11:08 +0000)
* inverseRackUnit(): let the calling function see if the rack needs its
  unit numbers reversed as this property is the same for each unit; this
  eliminates excess calls to considerConfiguredConstraint() and amounts
  of data from the signature
* renderRack(): update to accommodate the change above
* renderMolecule(): idem
* renderAtomGrid(): idem

wwwroot/inc/functions.php
wwwroot/inc/interface.php

index 74d14d0..40cf88b 100644 (file)
@@ -6299,13 +6299,11 @@ function formatEntityName ($entity)
        return $ret;
 }
 
-// returns reversed (top-to-bottom) $unit_no if $rack_cell is configured to be reversed,
-// or unchanged $unit_no otherwise.
-function inverseRackUnit ($unit_no, $rack_cell)
+// Returns reversed (top-to-bottom) $unit_no if the rack is configured to be
+// that way (the calling function tells this), or unchanged $unit_no otherwise.
+function inverseRackUnit ($height, $unit_no, $reverse)
 {
-       if (considerConfiguredConstraint ($rack_cell, 'REVERSED_RACKS_LISTSRC'))
-               $unit_no = $rack_cell['height'] - $unit_no + 1;
-       return $unit_no;
+       return $reverse ? ($height - $unit_no + 1) : $unit_no;
 }
 
 // returns true either if given domains are the same
index 2adc53f..4e5ab08 100644 (file)
@@ -969,9 +969,10 @@ function renderRack ($rack_id, $hl_obj_id = 0)
        echo "<table class=rack border=0 cellspacing=0 cellpadding=1>\n";
        echo "<tr><th width='10%'>&nbsp;</th><th width='20%'>Front</th>";
        echo "<th width='50%'>Interior</th><th width='20%'>Back</th></tr>\n";
+       $reverse = considerConfiguredConstraint ($rackData, 'REVERSED_RACKS_LISTSRC');
        for ($i = $rackData['height']; $i > 0; $i--)
        {
-               echo "<tr><th>" . inverseRackUnit ($i, $rackData) . "</th>";
+               echo '<tr><th>' . inverseRackUnit ($rackData['height'], $i, $reverse) . '</th>';
                for ($locidx = 0; $locidx < 3; $locidx++)
                {
                        if (isset ($rackData[$i][$locidx]['skipped']))
@@ -2316,9 +2317,10 @@ function renderMolecule ($mdata, $object_id)
                echo "<table class=molecule cellspacing=0>\n";
                echo "<caption>${rackData['name']}</caption>\n";
                echo "<tr><th width='10%'>&nbsp;</th><th width='20%'>Front</th><th width='50%'>Interior</th><th width='20%'>Back</th></tr>\n";
+               $reverse = considerConfiguredConstraint ($rackData, 'REVERSED_RACKS_LISTSRC');
                for ($i = $rackData['height']; $i > 0; $i--)
                {
-                       echo "<tr><th>" . inverseRackUnit ($i, $rackData) . "</th>";
+                       echo '<tr><th>' . inverseRackUnit ($rackData['height'], $i, $reverse) . '</th>';
                        for ($locidx = 0; $locidx < 3; $locidx++)
                        {
                                $state = $rackData[$i][$locidx]['state'];
@@ -3940,10 +3942,12 @@ function renderSearchResults ($terms, $summary)
 function renderAtomGrid ($data, $is_ro=FALSE)
 {
        $rack_id = $data['id'];
+       $reverse = considerConfiguredConstraint ($data, 'REVERSED_RACKS_LISTSRC');
        addJS ('js/racktables.js');
        for ($unit_no = $data['height']; $unit_no > 0; $unit_no--)
        {
-               echo "<tr><th><a href='javascript:;' onclick=\"toggleRowOfAtoms('${rack_id}','${unit_no}')\">" . inverseRackUnit ($unit_no, $data) . "</a></th>";
+               $unit_label = inverseRackUnit ($data['height'], $unit_no, $reverse);
+               echo "<tr><th><a href='javascript:;' onclick=\"toggleRowOfAtoms('${rack_id}','${unit_no}')\">${unit_label}</a></th>";
                for ($locidx = 0; $locidx < 3; $locidx++)
                {
                        $name = "atom_${rack_id}_${unit_no}_${locidx}";