View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
370 | RackTables | default | public | 2010-09-21 03:09 | 2012-07-28 23:29 |
Reporter | f0urtyfive | Assigned To | adoom42 | ||
Priority | normal | Severity | feature | Reproducibility | N/A |
Status | closed | Resolution | fixed | ||
Product Version | 0.18.4 | ||||
Target Version | 0.20.0 | Fixed in Version | 0.20.0 | ||
Summary | 370: Sort Row manually | ||||
Description | I'm not sure if this should go here as a previous ticket about the same thing (0000354) was closed however I've written the necessary code/sql to add a order_key value to the Racks table in order to manually sort a row with a numerical value (in ascending order). Please let me know if you'd prefer this done in a different manner as I was fumbling around the code a bit. SQL and diff will be attached. | ||||
Tags | No tags attached. | ||||
Attached Files | racksort.diff (4,888 bytes)
diff -rupN RackTables-0.18.4/inc/database.php rt-racksort-branch/inc/database.php --- RackTables-0.18.4/inc/database.php 2010-09-18 19:35:58.000000000 -0400 +++ rt-racksort-branch/inc/database.php 2010-09-20 22:48:44.000000000 -0400 @@ -119,10 +119,11 @@ $SQLSchema = array 'height' => 'height', 'comment' => 'comment', 'row_id' => 'row_id', + 'order_key' => 'order_key', 'row_name' => '(select name from RackRow where RackRow.id = row_id)', ), 'keycolumn' => 'id', - 'ordcolumns' => array ('row_name', 'Rack.name'), + 'ordcolumns' => array ('row_name', 'Rack.order_key', 'Rack.name'), 'pidcolumn' => 'row_id', ), ); @@ -644,7 +645,7 @@ function commitDeleteRack($rack_id) return TRUE; } -function commitUpdateRack ($rack_id, $new_name, $new_height, $new_row_id, $new_comment) +function commitUpdateRack ($rack_id, $new_name, $new_height, $new_row_id, $new_comment, $new_order_key) { // Can't shrink a rack if rows being deleted contain mounted objects $check_result = usePreparedSelectBlade ('SELECT COUNT(*) AS count FROM RackSpace WHERE rack_id = ? AND unit_no > ?', array ($rack_id, $new_height)); @@ -655,13 +656,14 @@ function commitUpdateRack ($rack_id, $ne usePreparedExecuteBlade ( - 'UPDATE Rack SET name=?, height=?, comment=?, row_id=? WHERE id=?', + 'UPDATE Rack SET name=?, height=?, comment=?, row_id=?, order_key=? WHERE id=?', array ( $new_name, $new_height, $new_comment, $new_row_id, + $new_order_key, $rack_id, ) ); diff -rupN RackTables-0.18.4/inc/interface.php rt-racksort-branch/inc/interface.php --- RackTables-0.18.4/inc/interface.php 2010-07-09 11:07:24.000000000 -0400 +++ rt-racksort-branch/inc/interface.php 2010-09-20 22:56:42.000000000 -0400 @@ -717,6 +717,7 @@ function renderEditRackForm ($rack_id) echo "<tr><th class=tdright>Name (required):</th><td class=tdleft><input type=text name=rack_name value='${rack['name']}'></td></tr>\n"; echo "<tr><th class=tdright>Height (required):</th><td class=tdleft><input type=text name=rack_height value='${rack['height']}'></td></tr>\n"; echo "<tr><th class=tdright>Comment:</th><td class=tdleft><input type=text name=rack_comment value='${rack['comment']}'></td></tr>\n"; + echo "<tr><th class=tdright>Order Key:</th><td class=tdleft><input type=text name=rack_order_key value='${rack['order_key']}'></td></tr>\n"; if (count ($rack['mountedObjects']) == 0) { echo "<tr><th class=tdright>Actions:</th><td class=tdleft><a href='". @@ -1928,11 +1929,11 @@ function renderHistory ($object_type, $o break; case 'rack': $query = - "select ctime, user_name, rh.name, rr.name as name, rh.height, rh.comment " . + "select ctime, user_name, rh.name, rr.name as name, rh.height, rh.comment, rh.order_key " . "from RackHistory as rh left join RackRow as rr on rh.row_id = rr.id " . "where rh.id = ? order by ctime"; - $header = '<tr><th>change time</th><th>author</th><th>rack name</th><th>rack row name</th><th>rack height</th><th>rack comment</th></tr>'; - $extra = 5; + $header = '<tr><th>change time</th><th>author</th><th>rack name</th><th>rack row name</th><th>rack height</th><th>rack comment</th><th>rack orderkey</th></tr>'; + $extra = 6; break; case 'object': $query = diff -rupN RackTables-0.18.4/inc/ophandlers.php rt-racksort-branch/inc/ophandlers.php --- RackTables-0.18.4/inc/ophandlers.php 2010-09-18 19:35:26.000000000 -0400 +++ rt-racksort-branch/inc/ophandlers.php 2010-09-20 23:03:53.000000000 -0400 @@ -1700,7 +1700,7 @@ function addRack () assertUIntArg ('rack_height1'); assertStringArg ('rack_comment', TRUE); - if (commitAddRack ($_REQUEST['rack_name'], $_REQUEST['rack_height1'], $_REQUEST['row_id'], $_REQUEST['rack_comment'], $taglist) === TRUE) + if (commitAddRack ($_REQUEST['rack_name'], $_REQUEST['rack_height1'], $_REQUEST['row_id'], $_REQUEST['rack_comment'], 1, $taglist) === TRUE) return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['rack_name'])); else return buildRedirectURL (__FUNCTION__, 'ERR1', array ($_REQUEST['rack_name'])); @@ -1757,11 +1757,12 @@ function updateRack () assertUIntArg ('rack_id'); assertUIntArg ('rack_row_id'); assertUIntArg ('rack_height'); + assertUIntArg ('rack_order_key'); assertStringArg ('rack_name'); assertStringArg ('rack_comment', TRUE); resetThumbCache ($_REQUEST['rack_id']); - if (TRUE === commitUpdateRack ($_REQUEST['rack_id'], $_REQUEST['rack_name'], $_REQUEST['rack_height'], $_REQUEST['rack_row_id'], $_REQUEST['rack_comment'])) + if (TRUE === commitUpdateRack ($_REQUEST['rack_id'], $_REQUEST['rack_name'], $_REQUEST['rack_height'], $_REQUEST['rack_row_id'], $_REQUEST['rack_comment'], $_REQUEST['rack_order_key'])) return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['rack_name'])); else return buildRedirectURL (__FUNCTION__, 'ERR'); | ||||
Please consider this: https://sourceforge.net/apps/mediawiki/racktables/index.php?title=FAQ#how_do_I_reoder_racks_in_a_row.3F |
|
I will consider this again. | |
There are some points in the submitted patch, which should be fixed against current trunk codebase: 1. "order key" column must accept NULL values (and this must be its default value) 2. user form must not enforce a default value for order key 3. there should be a KEY for the column, as soon as it's used in the ORDER BY clause 4. ALTER TABLE statements should be placed in inc/upgrade.php, and inc/install.php should list Rack and RackHistory tables updated. |
|
Starting with version 0.20, rows are stored in the DB in a different way. Work on this issue should only apply to >= 0.20. | |
I added the ability to manually sort racks to 0.20. | |
Date Modified | Username | Field | Change |
---|---|---|---|
2010-09-21 03:09 | f0urtyfive | New Issue | |
2010-09-21 03:10 | f0urtyfive | File Added: racksort.diff | |
2010-09-21 03:11 | f0urtyfive | File Added: racksort.sql | |
2010-11-20 18:15 | infrastation | Note Added: 0000183 | |
2010-11-20 18:15 | infrastation | Assigned To | => infrastation |
2010-11-20 18:15 | infrastation | Status | new => closed |
2010-11-20 18:15 | infrastation | Resolution | open => won't fix |
2011-02-15 09:07 | infrastation | Note Added: 0000249 | |
2011-02-15 09:07 | infrastation | Status | closed => new |
2011-02-21 15:55 | infrastation | Status | new => acknowledged |
2011-03-16 12:27 | infrastation | Note Added: 0000303 | |
2012-01-07 11:59 | infrastation | Assigned To | infrastation => |
2012-01-07 11:59 | infrastation | Resolution | won't fix => open |
2012-01-07 11:59 | infrastation | Target Version | => 0.19.12 |
2012-01-30 01:34 | adoom42 | Note Added: 0000555 | |
2012-01-30 01:34 | adoom42 | Target Version | 0.19.12 => 0.20.0 |
2012-07-27 19:00 | adoom42 | Relationship added | has duplicate 587 |
2012-07-28 23:29 | adoom42 | Note Added: 0000717 | |
2012-07-28 23:29 | adoom42 | Assigned To | => adoom42 |
2012-07-28 23:29 | adoom42 | Status | acknowledged => closed |
2012-07-28 23:29 | adoom42 | Resolution | open => fixed |
2012-07-28 23:29 | adoom42 | Fixed in Version | => 0.20.0 |