Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 03.12.2015, 10:42
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 214

Ну а при таком варианте мы просто затираем функциональность метода класса Ext.view.DropZone.

Вот что он делает:
// The mouse is over a View node
    onNodeOver: function(node, dragZone, e, data) {
        var me = this;

        if (!Ext.Array.contains(data.records, me.view.getRecord(node))) {
            me.positionIndicator(node, data, e);
        }
        return me.valid ? me.dropAllowed : me.dropNotAllowed;
    },

То есть вы убрали позиционирование индикатора дропа + валидацию от попыток дропнуть записи на самих себя.
Ответить с цитированием
  #12 (permalink)  
Старый 03.12.2015, 10:46
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 214

Но если перечисленное не критично, тогда конечно вариант.
Ответить с цитированием
  #13 (permalink)  
Старый 03.12.2015, 11:00
Профессор
Отправить личное сообщение для novikov Посмотреть профиль Найти все сообщения от novikov
 
Регистрация: 19.11.2012
Сообщений: 178

Мда, поспешил.
Ответить с цитированием
  #14 (permalink)  
Старый 03.12.2015, 11:09
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 214

В принципе нет ничего невозможного ..как говорится "и зайца можно научить курить" (с).

Можно вот так сделать если хотите без оверрайда:
{
    viewConfig: {
		plugins: {
			ptype: 'gridviewdragdrop',
			dragText: 'Drag and drop to reorganize',
            dropZone : {
                onNodeOver : function (node, dd) {
                    // это вместо callParent()
                    var result = this.self.prototype.onNodeOver.apply(this, arguments);
                    
                    // we allow to drop to nodes having ID > 3
                    var record = dd.view.getRecord(node);
                    var isValid = record && record.getId() > 3;
                    
                    if (!isValid) {
                        return this.dropNotAllowed;
                    }

                    return result;
                }
            }
		}
	}
}
Ответить с цитированием
  #15 (permalink)  
Старый 03.12.2015, 12:34
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

Увы, заяц не закурил.
https://fiddle.sencha.com/#fiddle/120q
Индикатор показывает что дроп запрещен, но де-факто дроп срабатывает, и строки реорганизуются.
Ответить с цитированием
  #16 (permalink)  
Старый 03.12.2015, 13:39
Профессор
Отправить личное сообщение для novikov Посмотреть профиль Найти все сообщения от novikov
 
Регистрация: 19.11.2012
Сообщений: 178

Чтобы дроп не срабатывал, нужно править в другом месте. В событии drop.

Последний раз редактировалось novikov, 03.12.2015 в 13:43.
Ответить с цитированием
  #17 (permalink)  
Старый 03.12.2015, 13:44
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

Это конечно тоже может пригодится в хозяйстве Однако в приоритете именно запрет дропа в неположенных местах. Видимо, никуда мне не деться от грязного хака...
Ответить с цитированием
  #18 (permalink)  
Старый 03.12.2015, 14:05
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

Сообщение от novikov Посмотреть сообщение
Чтобы дроп не срабатывал, нужно править в другом месте. В событии drop.
А не в beforeDrop?

Я конечно и так могу, но получается как-то избыточно. Одна проверка в beforeDrop, другая в onNodeOver, а делают они по сути одно и то же. А вот так чтоб все в одном месте - не выходит, если по правилам писать. В общем, меня несколько разочаровывает эта функциональность.
Ответить с цитированием
  #19 (permalink)  
Старый 03.12.2015, 14:36
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 214

Вы какбы вначале писали что с запретом дропа у вас все уже пучком ..и проблема в том чтоб показывать индикатор как надо.
Ответить с цитированием
  #20 (permalink)  
Старый 03.12.2015, 16:24
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка 'авторизации' DJ_CD Элементы интерфейса 4 18.12.2014 15:19
Проверка встроенной поддержки типа с помощью библиотеки Modernizr viy.li Общие вопросы Javascript 1 16.08.2013 12:02
проверка формы не работает в ie begelme Javascript под браузер 6 13.08.2013 01:00
Проверка встроенной поддержки типа с помощью библиотеки Modernizr viy.li Библиотеки/Тулкиты/Фреймворки 3 15.06.2013 15:48
Проверка сайта AndreyS AJAX и COMET 5 28.07.2011 20:45