Поведение для ручной сортировки моделей

Выкладываем свои наработки
Ответить
Аватара пользователя
Shaleny
Сообщения: 28
Зарегистрирован: 2011.02.24, 18:50

Поведение для ручной сортировки моделей

Сообщение Shaleny »

Спрашиваю, потому что подобного не нашел, значит, либо у каждого свои велосипеды, либо оно никому не нужно(мне нужно довольно часто :)) А расширение еще сырое.
В поведение передается имя поля для сортировки, в CGridView добавляется колонка специального класса, в контроллер добавляется одно действие - класс. Работает на Ajax. Есть возможность устанавливать поле-категорию, для ситуаций, когда записи раскинуты по категориям. Получается что то вроде этого:
Изображение
Изображение
Планирую добавить установщик, который добавит колонку в таблицу в бд и заполнит ее. Еще по идее связи можно брать автоматически из relations().
Так же есть код на ci для перемещения записи в начало или конец, но не уверен что это нужно.

UPD
Добавил архив с файлами расширения.
Пример установки:
Распаковываем в папку protected/extensions
Контроллер:

Код: Выделить всё

    public function actions()
    {
        return array(
            'move'=>'ext.SSortableBehavior.SSortableAction',
        );
    } 
Модель:

Код: Выделить всё

    public function behaviors()
    {
        return array(
            'SSortableBehavior' => array(
                'class' => 'ext.SSortableBehavior.SSortableBehavior',
            ),
        );

    } 
В поведении можно настроить 2 параметра:

Код: Выделить всё

public $sortField = 'sort_order';
public $categoryField = 'category_id'; 
если categoryField будет null или false, то перемещение не будет учитывать категории, по идее :) .
Отображение(нужно добавить колонку):

Код: Выделить всё

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'product-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        array(
            'name'=>'sort_order',
            'filter'=>false
        ),
        array(
            'class'=>'ext.SSortableBehavior.SSortableColumn',
        ),
    ),
)); 
Вложения
SSortableBehavior.rar
(8.79 КБ) 310 скачиваний
Последний раз редактировалось Shaleny 2011.04.13, 18:39, всего редактировалось 4 раза.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Нужно ли поведение для ручной сортировки моделей?

Сообщение slavcodev »

Нужно. Мне тоже часто нужно сортировка, но времени пока не было, сделать это.
Каждый раз переношу на потом.

ЗЫ: только сегодня на хабре топик в тему )
http://habrahabr.ru/blogs/algorithm/117200/
и еще
http://www.sorting-algorithms.com/
Жду Yii 3!
SpiLLeR
Сообщения: 350
Зарегистрирован: 2009.09.17, 16:47
Откуда: Санкт-Петербург
Контактная информация:

Re: Нужно ли поведение для ручной сортировки моделей?

Сообщение SpiLLeR »

а не проще через drag&drop?
Предупрежден - значит вооружен.
devKP.ru
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Нужно ли поведение для ручной сортировки моделей?

Сообщение slavcodev »

SpiLLeR писал(а):а не проще через drag&drop?
Это отдельный виджет должен быть.
Жду Yii 3!
Аватара пользователя
Shaleny
Сообщения: 28
Зарегистрирован: 2011.02.24, 18:50

Re: Нужно ли поведение для ручной сортировки моделей?

Сообщение Shaleny »

mc-bear
Ссылки интересные, но это немного не то, там описывают алгоритмы сортировки массива данных, мы же просто меняем порядок.
SpiLLeR
Усложнится алгоритм сортировки, что не проблема, конечно. Но если будет такая ситуация, когда есть постраничная разбивка и запись нужно переместить на предыдущую/следующую страницу, опять же это решаемо добавлением стрелок на первую/последнюю запись. Мне кажется, это неоправданное усложнение системы.
Аватара пользователя
RSol
Сообщения: 325
Зарегистрирован: 2010.05.07, 08:36
Откуда: Северодонецк, Украина
Контактная информация:

Re: Нужно ли поведение для ручной сортировки моделей?

Сообщение RSol »

Shaleny писал(а):Спрашиваю, потому что подобного не нашел, значит, либо у каждого свои велосипеды, либо оно никому не нужно(мне нужно довольно часто :)) А расширение еще сырое.
Нужно, выкладывай, вместе доработаем. :-)
Аватара пользователя
Shaleny
Сообщения: 28
Зарегистрирован: 2011.02.24, 18:50

Re: Поведение для ручной сортировки моделей

Сообщение Shaleny »

Добавил архив с расширением и пример установки в 1-м сообщении
Аватара пользователя
BuCeFaL
Сообщения: 447
Зарегистрирован: 2010.03.17, 21:22
Откуда: Kiev
Контактная информация:

Re: Поведение для ручной сортировки моделей

Сообщение BuCeFaL »

Результат сбрасываться после обновления страницы ?
Аватара пользователя
Shaleny
Сообщения: 28
Зарегистрирован: 2011.02.24, 18:50

Re: Поведение для ручной сортировки моделей

Сообщение Shaleny »

Результат чего?
Аватара пользователя
BuCeFaL
Сообщения: 447
Зарегистрирован: 2010.03.17, 21:22
Откуда: Kiev
Контактная информация:

Re: Поведение для ручной сортировки моделей

Сообщение BuCeFaL »

Сортировки, конечно же. Если я отсортирую и обновлю, то таблица будет отсортирована так же как и была до моей сортировки или с учетом моей ? Или же данные передаются на какой то url (ajax) и я в ручную корректирую базу ?
Аватара пользователя
Shaleny
Сообщения: 28
Зарегистрирован: 2011.02.24, 18:50

Re: Поведение для ручной сортировки моделей

Сообщение Shaleny »

Конечно с учетом, иначе какой смысл?(Или я что то не допонял). Выглядит это так:
Нажимаем на стрелку, идет ajax запрос на подключенный экшн, после того как пришел ответ - обновляется табличка(визуально запись меняет свою позицию). Можно повторять сколь угодно раз.
lexust4
Сообщения: 4
Зарегистрирован: 2013.08.11, 06:45

Re: Поведение для ручной сортировки моделей

Сообщение lexust4 »

Добрый день, во-первых спасибо вам за данное расширение, штука которая часто мне нужна, но реализовать ее грамотно на yii пока не могу. Скажите пожалуйста приведенный пример полностью рабочий?
smith7
Сообщения: 1
Зарегистрирован: 2013.08.24, 10:37

Re: Поведение для ручной сортировки моделей

Сообщение smith7 »

Нет это какой-то высер!
аватрка у него говорящая, спасибо тебе дорой друг!
Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Поведение для ручной сортировки моделей

Сообщение nizsheanez »

Вот тут много старых наработак по сортировке
https://github.com/ostapetc/Yii-CMS-2.0 ... s/sortable
Ответить