View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
1497 | RackTables | default | public | 2015-07-28 13:07 | 2020-05-02 15:12 |
Reporter | marlowesoft | Assigned To | |||
Priority | normal | Severity | feature | Reproducibility | N/A |
Status | acknowledged | Resolution | open | ||
Summary | 1497: Print temaplate / css for rack prints | ||||
Description | Hi, It would be nice to be able to select a rack to print and have just the rack and the contents displayed. Currently to print out a rack, you need to select the rack from 'rackspace' but you get all the headers and summary, this can cause a rack diagram to print over 2 pages. It would be nice to be able to just print the rack diagram so it can be used as a reference when in the data centre and have it print on a single sheet, if this makes sense? Matt | ||||
Tags | No tags attached. | ||||
Dear Matt, I've written a plugin some time ago to create a one page overview that prints quite well in (non IE browsers). Put the following file in the plugins directory and it will show up as a tab in the reports: https://gitlab.science.ru.nl/bram/racktables/snippets/81 Bests, Bram |
|
I agree this would be a useful feature. | |
Hi Bram, I dont have an access to link to get the file, can you help me attaching the same here ? https://gitlab.science.ru.nl/bram/racktables/snippets/81 |
|
Sorry, I must have cleaned up the repository. Here it is! Bests, Bram racks.php (3,568 bytes)
<?php $tabhandler['reports']['racks'] = 'renderRacksReport'; // register a report rendering function $tab['reports']['racks'] = 'Racks'; // title of the report tab function renderRacksReport() { $racks = scanRealmByText ('rack'); $i = 0; $prevRow = 0; foreach($racks as $rack_id => $rack) { // insert page break every 3 racks or when changing to a new rack if ($i > 0 and ($i % 3 == 0 or $prevRow != $rack['row_id'])) { pageBreak(); $i = 0; } $i++; echo "<div style='float:left; padding: 0 20px 0 0;'>"; renderMyRack ($rack_id); echo "</div>"; $prevRow = $rack['row_id']; } } function pageBreak() { echo '<div style="page-break-after: always; visibility:hidden; height:1px !important; margin:0;"></div>'; echo '<br style="clear:both"/>'; } // This function renders rack as HTML table. function renderMyRack ($rack_id, $hl_obj_id = 0) { $rackData = spotEntity ('rack', $rack_id); amplifyCell ($rackData); markAllSpans ($rackData); if ($hl_obj_id > 0) highlightObject ($rackData, $hl_obj_id); $prev_id = getPrevIDforRack ($rackData['row_id'], $rack_id); $next_id = getNextIDforRack ($rackData['row_id'], $rack_id); echo '<h2>' . mkA($rackData['location_name'], 'location', $rackData['location_id']); echo ' / '; echo mkA($rackData['row_name'], 'row', $rackData['row_id']); echo ' / '; echo mkA ($rackData['name'], 'rack', $rackData['id']); echo '</h2>'; echo "<table class=rack border=0 cellspacing=0 cellpadding=1>\n"; echo '<caption style="caption-side:bottom;text-align:left; font-size:80%;font-weight:normal;">' . $rackData['comment'] . '</caption>'; echo "<tr><th width='10%'> </th><th width='20%'>Front</th>"; echo "<th width='50%'>Interior</th><th width='20%'>Back</th></tr>\n"; for ($i = $rackData['height']; $i > 0; $i--) { echo "<tr><th>" . inverseRackUnit ($i, $rackData) . "</th>"; for ($locidx = 0; $locidx < 3; $locidx++) { if (isset ($rackData[$i][$locidx]['skipped'])) continue; $state = $rackData[$i][$locidx]['state']; echo "<td class='atom state_${state}"; if (isset ($rackData[$i][$locidx]['hl'])) echo $rackData[$i][$locidx]['hl']; echo "'"; if (isset ($rackData[$i][$locidx]['colspan'])) echo ' colspan=' . $rackData[$i][$locidx]['colspan']; if (isset ($rackData[$i][$locidx]['rowspan'])) echo ' rowspan=' . $rackData[$i][$locidx]['rowspan']; echo ">"; switch ($state) { case 'T': printObjectDetailsForRenderRack ($rackData[$i][$locidx]['object_id'], $hl_obj_id); break; case 'A': echo '<div title="This rackspace does not exist"> </div>'; break; case 'F': echo '<div title="Free rackspace"> </div>'; break; case 'U': echo '<div title="Problematic rackspace, you CAN\'T mount here"> </div>'; break; default: echo '<div title="No data"> </div>'; break; } echo '</td>'; } echo "</tr>\n"; } echo "</table>\n"; // Get a list of all of objects Zero-U mounted to this rack $zeroUObjects = getEntityRelatives('children', 'rack', $rack_id); if (count ($zeroUObjects) > 0) { echo "<br><table width='75%' class=rack border=0 cellspacing=0 cellpadding=1>\n"; echo "<tr><th>Zero-U:</th></tr>\n"; foreach ($zeroUObjects as $zeroUObject) { $state = ($zeroUObject['entity_id'] == $hl_obj_id) ? 'Th' : 'T'; echo "<tr><td class='atom state_${state}'>"; printObjectDetailsForRenderRack($zeroUObject['entity_id']); echo "</td></tr>\n"; } echo "</table>\n"; } echo "</center>\n"; } |
|
Date Modified | Username | Field | Change |
---|---|---|---|
2015-07-28 13:07 | marlowesoft | New Issue | |
2016-12-05 10:57 | bram | Note Added: 0003521 | |
2017-02-08 18:47 | infrastation | Note Added: 0003533 | |
2017-02-08 18:47 | infrastation | Status | new => acknowledged |
2020-05-02 13:32 | venkatra0 | Note Added: 0004061 | |
2020-05-02 15:12 | bram | Note Added: 0004063 | |
2020-05-02 15:12 | bram | File Added: racks.php |