У меня есть веб-приложение с данными в сетке. Пользователь может изменить порядок столбцов, а сервер может изменить существующие столбцы. Я хотел бы сохранить порядок столбцов пользователя в файле cookie и восстановить его при загрузке страницы.
Говоря более формально, у меня есть два массива уникальных идентификаторов (строк) с именами user_columns
и server_columns
. Я хотел бы изменить порядок server_columns
таким образом, чтобы соблюдать всю информацию о заказе от user_columns
и как можно больше от server_columns
. Как мне это сделать? Каково разумное формальное определение «насколько это возможно»?
Мой анализ на данный момент:
Один аспект проблемы тривиален: если сервер удаляет некоторые столбцы, удалите соответствующие записи из user_columns
. Любая информация о порядке столбцов, которых больше нет, является спорной. Тогда проблема становится одной из проблем слияния двух потенциально конфликтующих наборов информации о заказе.
Это соответствует семейству задач теории голосования: для заданного набора бюллетеней, каждый из которых содержит частичный порядок кандидатов, создать полный порядок кандидатов, который в некотором смысле отражает бюллетени.
Это заставляет меня думать, что я мог бы получить работоспособное решение, применив, например, метод Шульце или ранжированные пары в достаточно сфальсифицированном наборе бюллетеней на основе user_columns
и server_columns
. По соображениям UX мне кажется хорошей идеей разрывать связи, вставляя новые столбцы последними (справа).
Это звучит так, как будто это на правильном пути?
Заметьте также, что мы можем рассмотреть три вида сравнений: A и B оба находятся в user_columns
, одно из них или ни одно из них. Первый и последний виды легко разрешаются (см. user_columns
и server_columns
соответственно); тот, что посередине, и его взаимодействие с последним - сложные части.
user_columns
, иserver_columns
являются массивами, и сервер может изменить порядок столбцов, т. е. если A и B встречаются вserver_columns
при двух последовательных загрузках страницы, они могут встречаться в двух разных порядках. Я думаю, что более интересным свойством является то, чтоuser_columns
иserver_columns
могут не совпадать при загрузке одной страницы, но в любом случае я думаю, что ответ положительный :) - person Jonas Kölker   schedule 22.03.2014server_columns
и полностью учитывающийuser_columns
(ноль инверсий относительноuser_columns
)? Потому что так я интерпретирую вопрос. - person Niklas B.   schedule 22.03.2014