drag and drop not working and a feature...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2017-06-17 06:43:43 +03:00
parent 82fa9d290b
commit 7a065d7778
4 changed files with 107 additions and 70 deletions

View File

@ -37,6 +37,7 @@ require('features/ui-status')
require('features/ui-ranges') require('features/ui-ranges')
require('features/ui-widgets') require('features/ui-widgets')
require('features/ui-slideshow') require('features/ui-slideshow')
require('features/ui-drag-n-drop')
require('features/external-editor') require('features/external-editor')
require('features/metadata') require('features/metadata')
require('features/meta') require('features/meta')

View File

@ -108,6 +108,7 @@ core.ImageGridFeatures.Feature('viewer-testing', [
'url-history', 'url-history',
'external-editor', 'external-editor',
'ui-drag-n-drop',
'ui-preview-filters', 'ui-preview-filters',

View File

@ -0,0 +1,105 @@
/**********************************************************************
*
*
*
**********************************************************************/
((typeof define)[0]=='u'?function(f){module.exports=f(require)}:define)
(function(require){ var module={} // make module AMD/node compatible...
/*********************************************************************/
var actions = require('lib/actions')
var features = require('lib/features')
var core = require('features/core')
/*********************************************************************/
var DragAndDrop =
module.DragAndDrop = core.ImageGridFeatures.Feature({
title: '',
doc: '',
tag: 'ui-drag-n-drop',
depends: [
'ui',
],
handlers: [
// XXX would be nice to load a directory tree as ribbons...
// XXX HACK-ish...
['start', function(){
var that = this
function handleDrop(evt){
event.stopPropagation()
event.preventDefault()
var files = event.dataTransfer.files
var lst = {}
var paths = []
// files is a FileList of File objects. List some properties.
var output = []
for (var i = 0, f; f = files[i]; i++) {
// only images...
if (!f.type.match('image.*')) {
continue
}
if(f.path){
paths.push(f.path)
} else {
// XXX get the metadata...
lst[f.name] = {}
var reader = new FileReader()
reader.onload = (function(f){
return function(e){
// update the data and reload...
var gid = lst[f.name].gid
that.images[gid].path = e.target.result
that.ribbons.updateImage(gid)
} })(f)
reader.readAsDataURL(f)
}
}
if(paths.length > 0){
that.loadURLs(paths)
} else {
that.loadURLs(Object.keys(lst))
// add the generated stuff to the list -- this will help us id the
// images when they are loaded later...
that.images.forEach(function(gid, img){
lst[img.path].gid = gid
img.name = img.path
})
}
}
function handleDragOver(evt) {
evt.stopPropagation()
evt.preventDefault()
// Explicitly show this is a copy...
evt.dataTransfer.dropEffect = 'copy'
}
// handle drop events...
this.ribbons.viewer[0]
.addEventListener('dragover', handleDragOver, false);
this.ribbons.viewer[0]
.addEventListener('drop', handleDrop, false)
}]
],
})
/**********************************************************************
* vim:set ts=4 sw=4 : */ return module })

View File

@ -96,69 +96,6 @@ var viewer = require('imagegrid/viewer')
/*********************************************************************/ /*********************************************************************/
// XXX would be nice to load a directory tree as ribbons...
// XXX get the real URLs from node/nw version...
// XXX HACK-ish...
function handleDrop(evt){
event.stopPropagation()
event.preventDefault()
var files = event.dataTransfer.files
var lst = {}
var paths = []
// files is a FileList of File objects. List some properties.
var output = []
for (var i = 0, f; f = files[i]; i++) {
// only images...
if (!f.type.match('image.*')) {
continue
}
if(f.path){
paths.push(f.path)
} else {
// XXX get the metadata...
lst[f.name] = {}
var reader = new FileReader()
reader.onload = (function(f){
return function(e){
// update the data and reload...
var gid = lst[f.name].gid
ig.images[gid].path = e.target.result
ig.ribbons.updateImage(gid)
} })(f)
reader.readAsDataURL(f)
}
}
if(paths.length > 0){
ig.loadURLs(paths)
} else {
ig.loadURLs(Object.keys(lst))
// add the generated stuff to the list -- this will help us id the
// images when they are loaded later...
ig.images.forEach(function(gid, img){
lst[img.path].gid = gid
img.name = img.path
})
}
}
function handleDragOver(evt) {
evt.stopPropagation()
evt.preventDefault()
// Explicitly show this is a copy...
evt.dataTransfer.dropEffect = 'copy'
}
/*********************************************************************/ /*********************************************************************/
$(function(){ $(function(){
@ -277,13 +214,6 @@ $(function(){
} }
// XXX drop files...
$('.viewer')[0]
.addEventListener('dragover', handleDragOver, false);
$('.viewer')[0]
.addEventListener('drop', handleDrop, false)
// setup the viewer... // setup the viewer...
ig ig
.load({ viewer: $('.viewer') }) .load({ viewer: $('.viewer') })