MuK IT GmbH
6 years ago
4 changed files with 153 additions and 1 deletions
-
2muk_web_utils/__manifest__.py
-
99muk_web_utils/static/src/js/core/dropzone.js
-
51muk_web_utils/static/src/js/libs/jquery.js
-
2muk_web_utils/template/assets.xml
@ -0,0 +1,99 @@ |
|||
/********************************************************************************** |
|||
* |
|||
* Copyright (C) 2017 MuK IT GmbH |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License as |
|||
* published by the Free Software Foundation, either version 3 of the |
|||
* License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Affero General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Affero General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
**********************************************************************************/ |
|||
|
|||
odoo.define('muk_web_utils.dropzone', function (require) { |
|||
"use strict"; |
|||
|
|||
var core = require('web.core'); |
|||
|
|||
var _t = core._t; |
|||
var QWeb = core.qweb; |
|||
|
|||
var DropzoneMixin = { |
|||
_checkDropzoneEvent: function(event) { |
|||
return true; |
|||
}, |
|||
_renderDropzone: function($dropzone) { |
|||
this.$dropzone = $dropzone; |
|||
this.$dropzone.dndHover().on({ |
|||
'dndHoverStart': this._hoverDropzoneEnter.bind(this), |
|||
'dndHoverEnd': this._hoverDropzoneLeave.bind(this), |
|||
}); |
|||
|
|||
}, |
|||
_toggleDropzone: function(state) { |
|||
this.$dropzone.toggleClass('mk_dropzone', state); |
|||
}, |
|||
_hoverDropzoneEnter: function(event) { |
|||
if(this._checkDropzoneEvent(event)) { |
|||
this._toggleDropzone(true); |
|||
event.preventDefault(); |
|||
return false; |
|||
} |
|||
}, |
|||
_hoverDropzoneLeave: function(event) { |
|||
this._toggleDropzone(false); |
|||
event.stopPropagation(); |
|||
event.preventDefault(); |
|||
return false; |
|||
}, |
|||
_handleDrag: function(event) { |
|||
}, |
|||
_handleDrop: function(event) { |
|||
}, |
|||
_dragenterDropzone: function(event) { |
|||
if(this._checkDropzoneEvent(event)) { |
|||
event.preventDefault(); |
|||
} |
|||
}, |
|||
_dragoverDropzone: function(event) { |
|||
if(this._checkDropzoneEvent(event)) { |
|||
event.preventDefault(); |
|||
this._handleDrag(); |
|||
} |
|||
}, |
|||
_dragleaveDropzone: function(event) { |
|||
if(this._checkDropzoneEvent(event)) { |
|||
event.preventDefault(); |
|||
} |
|||
}, |
|||
_dropDropzone: function(event) { |
|||
if(this._checkDropzoneEvent(event)) { |
|||
event.preventDefault(); |
|||
event.stopPropagation(); |
|||
this._handleDrop(); |
|||
} |
|||
} |
|||
}; |
|||
|
|||
var FileDropzoneMixin = { |
|||
_checkDropzoneEvent: function(event) { |
|||
return window.File && window.FileReader && window.FileList && window.Blob; |
|||
}, |
|||
_handleDrag: function(event) { |
|||
event.originalEvent.dataTransfer.dropEffect = 'copy'; |
|||
}, |
|||
}; |
|||
|
|||
return { |
|||
DropzoneMixin: DropzoneMixin, |
|||
FileDropzoneMixin: FileDropzoneMixin, |
|||
}; |
|||
|
|||
}); |
@ -0,0 +1,51 @@ |
|||
/********************************************************************************** |
|||
* |
|||
* Copyright (C) 2018 MuK IT GmbH |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License as |
|||
* published by the Free Software Foundation, either version 3 of the |
|||
* License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Affero General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Affero General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
**********************************************************************************/ |
|||
|
|||
$.fn.textWidth = function(text, font) { |
|||
if (!$.fn.textWidth.fakeEl) $.fn.textWidth.fakeEl = $('<span>').hide().appendTo(document.body); |
|||
$.fn.textWidth.fakeEl.text(text || this.val() || this.text()).css('font', font || this.css('font')); |
|||
return $.fn.textWidth.fakeEl.width(); |
|||
}; |
|||
|
|||
$.fn.dndHover = function(options) { |
|||
return this.each(function() { |
|||
var self = $(this); |
|||
var collection = $(); |
|||
self.on('dragenter', function(event) { |
|||
if (collection.size() === 0) { |
|||
self.trigger('dndHoverStart'); |
|||
} |
|||
collection = collection.add(event.target); |
|||
}); |
|||
self.on('dragleave', function(event) { |
|||
setTimeout(function() { |
|||
collection = collection.not(event.target); |
|||
if (collection.size() === 0) { |
|||
self.trigger('dndHoverEnd'); |
|||
} |
|||
}, 1); |
|||
}); |
|||
self.on('drop', function(event) { |
|||
setTimeout(function() { |
|||
collection = $(); |
|||
self.trigger('dndHoverEnd'); |
|||
}, 1); |
|||
}); |
|||
}); |
|||
}; |
Write
Preview
Loading…
Cancel
Save
Reference in new issue