in ui-modules/utils/persistence-importer/persistence-importer.js [58:127]
function link(scope, element, attrs) {
let div = document.createElement('div');
if ((('draggable' in div) || ('ondragstart' in div && 'ondrop' in div)) && 'FormData' in window && 'FileReader' in window) {
element.addClass('br-has-drag-upload');
}
element.append($compile(template)(scope));
let counter = 0;
element.bind('drag dragstart dragend dragover dragenter dragleave drop', (event)=> {
event.preventDefault();
event.stopPropagation();
}).bind('drag dragstart dragover dragenter', (event)=> {
event.dataTransfer.dropEffect = 'copy';
element.addClass('br-drag-active');
}).bind('dragenter', ()=> {
counter++;
}).bind('dragleave', (event)=> {
counter--;
if (counter === 0) {
element.removeClass('br-drag-active');
}
}).bind('drop', (event)=> {
scope.upload(event.dataTransfer.files);
});
let field = attrs.brooklynPersistenceImporter;
if (angular.isDefined(field)) {
scope.$on(field, ()=> {
counter++;
element.addClass('br-drag-active');
});
}
scope.selectedFiles = [];
scope.close = ()=> {
counter--;
element.removeClass('br-drag-active');
};
scope.filesChanged = (event)=> {
scope.upload(event.target.files);
};
scope.upload = (files)=> {
for (let i = 0; i < files.length; i++) {
let file = files[i];
brooklynPersistenceImporter.upload(file).then((data)=> {
file.result = data;
}).catch((error)=> {
file.error = error;
}).finally(()=> {
scope.$applyAsync();
});
scope.selectedFiles.unshift(file);
scope.$apply();
}
};
scope.getPersistenceItemUrl = (item)=> {
let itemTraits = item.tags? item.tags.find(item => item.hasOwnProperty("traits")) : {"traits":[]};
return (item.supertypes ? item.supertypes : itemTraits.traits)
.includes('org.apache.brooklyn.api.location.Location')
? `/brooklyn-ui-location-manager/#!/location?symbolicName=${item.symbolicName}&version=${item.version}`
: `/brooklyn-ui-persistence/#!/bundles/${item.containingBundle.split(':')[0]}/${item.containingBundle.split(':')[1]}/types/${item.symbolicName}/${item.version}`;
};
}