Система позволяет сделать некие элементы на страницы перетаскиваемыми (draggable), а другие элементы могут принимать эти элементы (droppable).
Результат перемещения и реакцию системы можно заложить через хранимую процедуру falcon_dragDrop.
Пример работы компонент в демостенде.
Примечание. Не работает на мобильных устройствах Android. Подробнее о поддержке: https://developer.mozilla.org/en-US/docs/Web/API/Document/dragenter_event
1. Определяем разметку с классами as-droppable и as-draggable
2. Описываем логику сохранения состояния в процедуре falcon_dragDrop.
<div class="as-droppable" data-code="cat" data-itemid="1">
<a href="#" class="btn btn-primary btn-xs as-draggable" draggable="true" title="Простое перетаскивание элемента" data-onedrop="0" data-copy="0" data-code="moveType" data-itemid="10">Перемести меня</a>
</div>
<div class="as-droppable" data-code="cat" data-itemid="2">
</div>
Элементы as-droppable являются контейнерами, куда можно класть элементы as-draggable.
У as-droppable и as-draggable мы указываем параметры data-code и data-itemID, которые затем поступают в процедуру falcon_dragDrop для обработки факта переноса элемента.
Дополнительные поля для as-draggable:
Процедура выполняется в момент отпускания элемента draggable в контейнер (элемент droppable)
Пример процедуры:
create PROCEDURE [dbo].[falcon_dragDrop]
@parameters ExtendedDictionaryParameter readonly,
@username nvarchar(256)
AS
BEGIN
declare @elementItemID int, @elementCode nvarchar(128),
@containerItemID int, @containerCode nvarchar(128)
select @elementItemID = try_cast(Value2 as int)
from @parameters where lower([Key])='elementitemid'
select @elementCode= Value2
from @parameters where lower([Key])='elementcode'
select @containerItemID = try_cast(Value2 as int)
from @parameters where lower([Key])='containeritemid'
select @containerCode = Value2
from @parameters where lower([Key])='containercode'
declare @actionType nvarchar(128) = case
when @elementCode= 'copyType' then 'copy'
when @elementCode= 'moveType' then 'move'
when @elementCode= 'deleteType' then 'delete'
when @elementCode= 'backType' then 'back'
end
exec as_print @str=@elementCode
-- SELECT 1
select 1 Result, iif(@elementCode='moveAlert' , 'OK!', '') Msg,
'fa-cogs' icon, 'body' RefreshContainer,
@actionType [action] -- move, back, delete, copy
-- SELECT 2 Outer commands
END
На входе:
На выходе:
SELECT 1 Задает результат:
SELECT 2 Позволяет выполнить Внешние действия.
Примечание: Вы можете обработать через коллбек в JS момент событие после вызова процедуры saveDrop:
as.dragdropcallbacks["saveDrop"] = function(data, el, container){
}