123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- Ext.define('Ext.ux.DataView.Draggable', {
- requires: 'Ext.dd.DragZone',
-
- ghostCls: 'x-dataview-draggable-ghost',
-
- ghostTpl: [
- '<tpl for=".">',
- '{title}',
- '</tpl>'
- ],
-
-
- init: function(dataview, config) {
-
- this.dataview = dataview;
- dataview.on('render', this.onRender, this);
- Ext.apply(this, {
- itemSelector: dataview.itemSelector,
- ghostConfig : {}
- }, config || {});
- Ext.applyIf(this.ghostConfig, {
- itemSelector: 'img',
- cls: this.ghostCls,
- tpl: this.ghostTpl
- });
- },
-
- onRender: function() {
- var config = Ext.apply({}, this.ddConfig || {}, {
- dvDraggable: this,
- dataview : this.dataview,
- getDragData: this.getDragData,
- getTreeNode: this.getTreeNode,
- afterRepair: this.afterRepair,
- getRepairXY: this.getRepairXY
- });
-
- this.dragZone = Ext.create('Ext.dd.DragZone', this.dataview.getEl(), config);
- },
- getDragData: function(e) {
- var draggable = this.dvDraggable,
- dataview = this.dataview,
- selModel = dataview.getSelectionModel(),
- target = e.getTarget(draggable.itemSelector),
- selected, dragData;
- if (target) {
- if (!dataview.isSelected(target)) {
- selModel.select(dataview.getRecord(target));
- }
- selected = dataview.getSelectedNodes();
- dragData = {
- copy: true,
- nodes: selected,
- records: selModel.getSelection(),
- item: true
- };
- if (selected.length == 1) {
- dragData.single = true;
- dragData.ddel = target;
- } else {
- dragData.multi = true;
- dragData.ddel = draggable.prepareGhost(selModel.getSelection()).dom;
- }
- return dragData;
- }
- return false;
- },
- getTreeNode: function() {
-
- },
- afterRepair: function() {
- this.dragging = false;
- var nodes = this.dragData.nodes,
- length = nodes.length,
- i;
-
- for (i = 0; i < length; i++) {
- Ext.get(nodes[i]).frame('#8db2e3', 1);
- }
- },
-
- getRepairXY: function(e) {
- if (this.dragData.multi) {
- return false;
- } else {
- var repairEl = Ext.get(this.dragData.ddel),
- repairXY = repairEl.getXY();
-
- repairXY[0] += repairEl.getPadding('t') + repairEl.getMargin('t');
- repairXY[1] += repairEl.getPadding('l') + repairEl.getMargin('l');
- return repairXY;
- }
- },
-
- prepareGhost: function(records) {
- var ghost = this.createGhost(records),
- store = ghost.store;
- store.removeAll();
- store.add(records);
- return ghost.getEl();
- },
-
- createGhost: function(records) {
- if (!this.ghost) {
- var ghostConfig = Ext.apply({}, this.ghostConfig, {
- store: Ext.create('Ext.data.Store', {
- model: records[0].modelName
- })
- });
- this.ghost = Ext.create('Ext.view.View', ghostConfig);
- this.ghost.render(document.createElement('div'));
- }
- return this.ghost;
- }
- });
|