neko
tеam neko
определяемый пользователем порядок записей в таблице
есть такая задача, выводить таблицу в порядке определямом пользователем
т.е. дать возможность пользователю менять видимый порядок записей
применения я думаю понятны
вобщем мы тут чуть-чуть пообсуждали и пришли к 2ум приемлемым вариантам, которые оба сводятся к тому, чтобы завести еще один столбец для сортировки (предположим он называется x).
первый вариант, для интерфейсов где есть операции "выше"/"ниже". при вставке записи делать x = max(x) + 1, а при передвижении просто менять местями значения x. в принципе это терпимый вариант, до тех пор пока пользователь не начинает "вставлять" записи (например посредством drag'n'drop)
второй вариант использовать числа с плавающей точкой.
x, точно так же = max(x) + N для новых записей.
чтобы вставить c между a и b: c.x = a.x + (b.x - a.x)/2.
т.е. вставляем по середине.
поскольку через некоторое время тут могут возникнуть проблемы с точностью, разность (b.x - a.x) служит индикатором того, когда столбец x надо заново заполнить.
и сооответственно N устанавливается от в зависимости от объема перемещений и кол-ва записей.
все это будет работать но в целом не слишком красиво.
хотелось бы услышать какие еще есть идеи
есть такая задача, выводить таблицу в порядке определямом пользователем
т.е. дать возможность пользователю менять видимый порядок записей
применения я думаю понятны
вобщем мы тут чуть-чуть пообсуждали и пришли к 2ум приемлемым вариантам, которые оба сводятся к тому, чтобы завести еще один столбец для сортировки (предположим он называется x).
первый вариант, для интерфейсов где есть операции "выше"/"ниже". при вставке записи делать x = max(x) + 1, а при передвижении просто менять местями значения x. в принципе это терпимый вариант, до тех пор пока пользователь не начинает "вставлять" записи (например посредством drag'n'drop)
второй вариант использовать числа с плавающей точкой.
x, точно так же = max(x) + N для новых записей.
чтобы вставить c между a и b: c.x = a.x + (b.x - a.x)/2.
т.е. вставляем по середине.
поскольку через некоторое время тут могут возникнуть проблемы с точностью, разность (b.x - a.x) служит индикатором того, когда столбец x надо заново заполнить.
и сооответственно N устанавливается от в зависимости от объема перемещений и кол-ва записей.
все это будет работать но в целом не слишком красиво.
хотелось бы услышать какие еще есть идеи