mirror of
https://github.com/openstf/stf
synced 2025-10-05 10:39:25 +02:00
66 lines
1.7 KiB
JavaScript
66 lines
1.7 KiB
JavaScript
var _ = require('lodash')
|
|
|
|
module.exports = function angularPackeryDirective(PackeryService,
|
|
DraggabillyService, $timeout, $parse) {
|
|
|
|
return {
|
|
restrict: 'AE',
|
|
link: function(scope, element, attrs) {
|
|
var container = element[0]
|
|
var parsedAttrs = $parse(attrs.angularPackery)()
|
|
if (typeof parsedAttrs !== 'object') {
|
|
parsedAttrs = {}
|
|
}
|
|
|
|
var options = angular.extend({
|
|
isInitLayout: false,
|
|
itemSelector: '.packery-item',
|
|
columnWidth: '.packery-item',
|
|
transitionDuration: '300ms'
|
|
}, parsedAttrs)
|
|
|
|
var pckry = new PackeryService(container, options)
|
|
pckry.on('layoutComplete', onLayoutComplete)
|
|
pckry.bindResize()
|
|
bindDraggable()
|
|
|
|
$timeout(function() {
|
|
pckry.layout()
|
|
}, 0)
|
|
$timeout(function() {
|
|
pckry.layout()
|
|
}, 100)
|
|
|
|
function bindDraggable() {
|
|
if (options.draggable) {
|
|
var draggableOptions = {}
|
|
if (options.draggableHandle) {
|
|
draggableOptions.handle = options.draggableHandle
|
|
}
|
|
var itemElems = pckry.getItemElements()
|
|
for (var i = 0, len = itemElems.length; i < len; ++i) {
|
|
var elem = itemElems[i]
|
|
var draggie = new DraggabillyService(elem, draggableOptions)
|
|
pckry.bindDraggabillyEvents(draggie)
|
|
}
|
|
}
|
|
}
|
|
|
|
function onLayoutComplete() {
|
|
return true
|
|
}
|
|
|
|
function onPanelsResized() {
|
|
pckry.layout()
|
|
}
|
|
|
|
scope.$on('panelsResized', _.throttle(onPanelsResized, 300))
|
|
|
|
scope.$on('$destroy', function() {
|
|
pckry.unbindResize()
|
|
pckry.off('layoutComplete', onLayoutComplete)
|
|
pckry.destroy()
|
|
})
|
|
}
|
|
}
|
|
}
|