Сетка с категориями перетаскивания и сортировки - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь создать приложение, которое позволяет пользователям выполнять сопоставление историй.Небольшое примечание к тому, что это: у вас есть куча заметок, и вы делаете карту всех пользовательских задач и целей, размещая ее на доске.

Мне нужно настроить что-то, что позволяет это.Предпочтительно независимая сетка, которая может размещать элементы и сортировать их, а также позволяет изменять размер сетки.

То, что я сделал до сих пор:

Я использовал библиотеки jQuery UI с возможностью перетаскивания и сортировки.Я могу сортировать списки, связывать списки, динамически отображать представление из базы данных.Все в значительной степени функционально.

Вот ссылка на JSFiddle

HTML

<!-- <div style="margin: 30px;"> -->
<div class="container" style="display: table;">
  <div class="row" style="display: table-row; ">
    <div class="sort-me-header" style="display: table-cell;">
      <div class="sticky" style="background-color: orange;">
        <b>Card Header</b> Put any text in here.
      </div>
    </div>
    <div class="sort-me-header" style="display: table-cell;">
      <div class="sticky" style="background-color: orange;">
        <b>Card Header</b> Put any text in here.
      </div>
    </div>
    <div class="sort-me-header" style="display: table-cell;">
      <div class="sticky" style="background-color: orange;">
        <b>Card Header</b> Put any text in here.
      </div>
    </div>
    <div class="sort-me-header" style="display: table-cell;">
      <div class="sticky" style="background-color: orange;">
        <b>Card Header</b> Put any text in here.
      </div>
    </div>
  </div>
  <div class="row" style="display: table-row;">
    <div class="sort-me-header" style="display: table-cell;">
      <div class="sticky" style="background-color: pink;">
        <b>Card Header</b> Put any text in here.
      </div>
    </div>
    <div class="sort-me-header" style="display: table-cell;">
      <div class="sticky" style="background-color: pink;">
        <b>Card Header</b> Put any text in here.
      </div>
    </div>
    <div class="sort-me-header" style="display: table-cell;">
    </div>
    <div class="sort-me-header" style="display: table-cell;">
      <div class="sticky" style="background-color: pink;">
        <b>Card Header</b> Put any text in here.
      </div>
    </div>
  </div>
  <hr>
  <div class="row" style="display: table-row;">
    <div class="sort-me-alpha" style="display: table-cell;">
      <div class="sticky">
        <b>Card 1</b> Put any text in here.
      </div>
      <div class="sticky">
        <b>Card 2</b> Put any text in here.
      </div>
    </div>
    <div class="sort-me-beta" style="display: table-cell;">
      <div class="sticky">
        <b>Card n</b> Put any text in here.
      </div>
    </div>
    <div class="sort-me-gamma" style="display: table-cell;">
      <div class="sticky">
        <b>Card 3</b> Put any text in here.
      </div>
      <div class="sticky">
        <b>Card 4</b> Put any text in here.
      </div>
      <div class="sticky">
        <b>Card 5</b> Put any text in here.
      </div>
    </div>
  </div>
</div>

Javascript / jQuery

  $(document).ready(function () {

$('.sort-me-alpha').sortable({
  connectWith: '.sort-me-gamma, .sort-me-beta, .sort-me-header',
  placeholder: "testclass",
  forcePlaceholderSize: true
});

$('.sort-me-beta').sortable({
  connectWith: '.sort-me-gamma, .sort-me-alpha, .sort-me-header',
  placeholder: "testclass",
  forcePlaceholderSize: true
});

$('.sort-me-gamma').sortable({
  placeholder: "testclass",
  forcePlaceholderSize: true,
  connectWith: '.sort-me-alpha, .sort-me-beta, .sort-me-header'
});

$('.sort-me-header').sortable({
  placeholder: "testclass",
  forcePlaceholderSize: true,
  connectWith: '.sort-me-alpha, .sort-me-beta, .sort-me-gamma, .sort-me-header',
  receive: function (event, ui) {
    var $list = $(this);

    if ($list.children().length > 1) {
      $(ui.sender).sortable('cancel');
    }
  }
});
});

В примере первые две строки (оранжевая и розовая) являются моими заголовками.Каждая карта помещается в отдельный сортируемый список.Эти списки занимают только одну карту.Я сделал это, потому что если вы посмотрите на желтые карточки, они представляют собой списки со связями, и если я переместу одну карточку из середины, появятся карточки внизу и автоматически займут ее место.Я знаю, что это встроенное поведение, и я хочу переопределить его.Я попробовал это с другим пользователем stackoverflow и добился успеха, представив пустую открытую карту.Но это не совсем элегантно для того, чего я хочу достичь.Другое ограничение заключается в том, что я не могу отсортировать две верхние строки.Они могут принимать только карту, а карта может оставить только этот заполнитель.Таким образом, чтобы вызвать определенное поведение, я компрометирую другое.

Может ли кто-нибудь направить меня сюда ИЛИ лучше, но при этом направить меня к API / библиотеке, которая лучше соответствует моим потребностям и обслуживает моитребования?

...