Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to save the sort order?

I have created Demo by using packery and draggabilly where I have five grids.I can sort them using the draggable.After I make my sort.I need to save the sorted grid.Here the grids are not moving when I inspect in dev only the position is changing not the grid exactly.

As I've passed ids,but of no use.Due to the issue mentioned above.

Is there any way of saving the sort order ? I don't want to use localStorage

My code follows

HTML

<h1>Image sort</h1>
<div class="packery">
  <div class="item w2 h2 i1" tabindex="0">A</div>
  <div class="item w2 h2 i2" tabindex="1">B</div>
  <div class="item w2 h2 i3" tabindex="2">C</div>
  <div class="item w2 h2 i4" tabindex="3">D</div>
  <div class="item w2 h2 i5" tabindex="4">E</div>
</div>

JS

// http://packery.metafizzy.co/packery.pkgd.js and 
// http://draggabilly.desandro.com/draggabilly.pkgd.js added as external resource

// ----- text helper ----- //

$(function() {

  var $container = $('.packery').packery({
    columnWidth: 100,
    rowHeight: 180,
    // disable initial layout
    isInitLayout: false
  });

  var pckry = $container.data('packery');


  // ----- packery setup ----- //

  // trigger initial layout
  $container.packery();

  var itemElems = $container.packery('getItemElements');
  // for each item element
  $( itemElems ).each( function( i, itemElem ) {
    // make element draggable with Draggabilly
    var draggie = new Draggabilly( itemElem );
    // bind Draggabilly events to Packery
    $container.packery( 'bindDraggabillyEvents', draggie );
  });   

CSS

* {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}

body { font-family: sans-serif; }

.packery {
  background: #FDD;
  background: hsla(45, 100%, 40%, 0.2);
  max-width: 460px;
}

/* clearfix */
.packery:after {
  content: ' ';
  display: block;
  clear: both;
}

.item {
  width: 240px;
  height: 140px;
  float: left;
  background: #C09;
  border: 4px solid #333;
  border-color: hsla(0, 0%, 0%, 0.3);
  font-size: 20px;
  color: white;
  padding: 10px;
}

.item:hover {
  border-color: white;
  cursor: move;
}


.item.w2 { width:   400px;  }
.item.h2 { height:  140px;  }

.item.w2.i1 { background: #ffff00; }
.item.w2.i2 { background: #ff6633; }
.item.w2.i3 { background: #00c6d7; }
.item.w2.i4 { background: #990099; }
.item.w2.i5 { background: #EEEEEE; }

.item.is-dragging,
.item.is-positioning-post-drag {
  border-color: white;
  background: #09F;
  z-index: 2;
}
like image 611
Raviteja Avatar asked Feb 04 '16 07:02

Raviteja


People also ask

How do I save a sort?

After sorting a list, please click File > Options (or Office button > Excel Options) to open the Excel Options dialog box. 4. Click the OK button in the Excel Options dialog box. So far the custom sort criteria/order has been saved as a custom list in the Microsoft Excel program.


1 Answers

Well 'save' can mean two things.

  • Saving the values temporarily like localStorage/Cookies as you mentioned in the question. The thing is that, it will solve your problem of saving the order in the client, even if the user refreshes the page and comes back, he/she can check these values and reorder them accordingly. Disadvantage is that, if the user deletes his/her cache and history, the data might not be there when he/she revisits the page.
  • And the other alternative would be to use traditional approach, that is, to use a Ajax call and send data to a back-end script(PHP or Nodejs) that will save the values to a DB. This way, if there exists a login system of sorts, you can just post the values to a database and proceed in that manner.

Here is a simple code to give you an idea (using PHP):

JS

$.ajax({
    url: 'test.php',
    type: 'POST',
    data: {order : sortOrder},
    success: function(result){
          // do something
       }
 });

test.php

$order = $_REQUEST['order'];
echo $order;
// Do something here that will store the values to the database

For Nodejs, you can do something similar to this: How to send array of ids correctly in express

Hope it helps...

like image 127
dvenkatsagar Avatar answered Sep 19 '22 19:09

dvenkatsagar