169 похожих чатов

Друзья, натолкните на мысль. Есть todo доска, использую vue draggable.

Мне нужно сохранить порядок карточек после обновления страницы. На текущий момент бэк отдает мне карточки сортируя по важности, т.е. сначала сверху красные, потом зеленые. При изменении порядка элемента в массиве я знаю его старый и новый индекс. Теоретически, мне бы следовало завести новое значение index в БД для модели задачи и сортировать по нему. Однако возникает следующая проблема : я сделаю patch запрос и изменю Index карточки на новый, например 10. Однако в БД уже будет карточка с индексом 10, хотя по факту она или 9 или 11 ( в зависимости от того, с какой стороны дропнул). Делать patch на каждый из элементов массива выглядит тупой идеей. Что тут можно изящного изобрести?

13 ответов

12 просмотров

Индекс записи в БД и индекс как порядковый номер записи в массиве js - это разные индексы в принципе и они не должны пересекаться

Nikita- Автор вопроса
Master Craftsman
Индекс записи в БД и индекс как порядковый номер з...

я ничего и не говорю про пересечение id записи в бд и некого абстрактного индекса в массиве на фронтенде

так круто

Nikita- Автор вопроса
Master Craftsman
Тогда я немного не понял суть. Уточни

Сейчас бекэнд отдает мне задачи в следующем порядке '-priority'. Затем большой массив из api сортируется на 4 массива на фронте, и каждая карточка встает на свою колонку. При изменении порядка внутри колонки до обновления страницы все ок. После обновления бэк, естественно, отдает все в изначальном виде. Мне надо что-то выдумать, чтобы при обновлении страницы порядок карточек оставался.

Nikita- Автор вопроса
Master Craftsman
Тогда я немного не понял суть. Уточни

Если у модели Task завести еще одно поле, допустим columnIndex и патчить его исходя из нового индекса внутри массива фронта, то спустя какое-то время все элементы в бд могут быть с одним columnIndex и бэк, сортируя по этому полю снова выдаст какую-нибудь ерунду

Nikita
Если у модели Task завести еще одно поле, допустим...

Бек не выдаёт ерунду. Бек выдаёт правильно. Это тебе в принципе надо ещё одну подсортировку по доп полю делать, которое будет учитывать твои изменения. На каком основании ты передвинул элемент в колонке выше или ниже? Как ты это событие зафиксировал для бека?

Nikita- Автор вопроса
Nikita
screenshot Сейчас бекэнд отдает мне задачи в следующем порядк...

Передвинул карточку внутри столбца, поймал старый-новый индекс. Может к индексу добавлять таймштамп, и сотрировать по двум полям, сначала по Index по убыванию, потом таймштамп по возрастанию? Тогда новый элемент с Index 10 будет иметь более "свежий" таймштамп, чем старый элемент с фактически таким же index ? Хорошая мысля, кстати

Nikita
screenshot Передвинул карточку внутри столбца, поймал старый-...

Я подумал о времени, но тогда самое позднее время будет либо всегда первым, либо всегда последним

Nikita- Автор вопроса
Master Craftsman
Бек не выдаёт ерунду. Бек выдаёт правильно. Это те...

сотрировку внутри одной колонки пока для бэка никак не обозначаю. Только при перемещении между колонками патчу конкретную задачу, присваивая ей state новой колонки

Nikita- Автор вопроса
Master Craftsman
Я подумал о времени, но тогда самое позднее время ...

Так сначала отсортирует по index, в случае совпадения наверх поставит самый новый

Nikita- Автор вопроса
Master Craftsman
Я подумал о времени, но тогда самое позднее время ...

Уоттакуот, например. Должно ж работать по идее?

Nikita
screenshot Уоттакуот, например. Должно ж работать по идее?

Ну такое... Тебе придётся сделать отдельно механизм консистентности, иначе будут разрывы в индексах по полю column_index при перемещениях элементов между колонками.

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта