I want to create a placeholder in Extjs when you drag items from one panel to another panel. Items are dataView records.
Ext.application({
name: 'Fiddle',
launch: function () {
simpsonsStore = Ext.create('Ext.data.Store', {
storeId: 'simpsonsStore',
fields: ['id', 'name', 'email'],
data: [{
name: 'Lisa',
email: 'lisa@simpsons.com',
id: 1
}, {
name: 'Bart',
email: 'bart@simpsons.com',
id: 2
}, {
name: 'Homer',
email: 'homer@simpsons.com',
id: 3
}, {
name: 'Marge',
email: 'marge@simpsons.com',
id: 4
}]
});
Ext.create('Ext.panel.Panel', {
scrollable: 'horizontal',
bodyCls: 'scrollBarOn',
region: 'center',
width: '100%',
height: 800,
layout: 'hbox',
renderTo: Ext.getBody(),
items: [{
xtype: 'panel',
width: 200,
height: 500,
items: [{
xtype: 'dataview',
itemSelector: 'div.detail',
tpl: ['<tpl for=".">',
'<div class="detail">{name}</div>', '</tpl>'
],
margin: '0 0 0 0',
store: simpsonsStore,
scrollable: 'vertical',
focusable: false,
setTemplate: function (template, itemSelector) {
this.tpl = template;
this.itemSelector = itemSelector;
this.refresh();
},
listeners: {
render: function (v) {
var currentRef = this;
new Ext.view.DragZone({ //Create Drag Zone
view: currentRef,
ddGroup: 'kanbanDataviewDrag',
dragText: '1 row selected'
});
new Ext.view.DropZone({ //Create Drop Zone
view: currentRef,
ddGroup: 'kanbanDataviewDrag',
handleNodeDrop: function (data, record,
position) { //When Handle Node Drop
var view = this.view,
store = view.getStore(),
index, records, i, len;
if (data.copy) {
records = data.records;
data.records = [];
for (i = 0, len = records.length; i <
len; i++) {
data.records.push(records[i].copy(
records[i].getId()));
}
} else {
data.view.store.remove(data.records,
data.view === view);
}
index = store.indexOf(record);
if (position !== 'before') {
index++;
}
store.insert(index, data.records);
store.commitChanges();
}
});
}
}
}]
}, {
xtype: 'panel',
width: 200,
height: 500,
items: [{
xtype: 'dataview',
itemSelector: 'div.detail',
tpl: ['<tpl for=".">',
'<div class="detail">{name}</div>', '</tpl>'
],
margin: '0 0 0 0',
store: simpsonsStore,
scrollable: 'vertical',
focusable: false,
setTemplate: function (template, itemSelector) {
this.tpl = template;
this.itemSelector = itemSelector;
this.refresh();
},
listeners: {
render: function (v) {
var currentRef = this;
new Ext.view.DragZone({ //Create Drag Zone
view: currentRef,
ddGroup: 'kanbanDataviewDrag',
dragText: '1 row selected'
});
new Ext.view.DropZone({ //Create Drop Zone
view: currentRef,
ddGroup: 'kanbanDataviewDrag',
handleNodeDrop: function (data, record,
position) { //When Handle Node Drop
var view = this.view,
store = view.getStore(),
index, records, i, len;
if (data.copy) {
records = data.records;
data.records = [];
for (i = 0, len = records.length; i <
len; i++) {
data.records.push(records[i].copy(
records[i].getId()));
}
} else {
data.view.store.remove(data.records,
data.view === view);
}
index = store.indexOf(record);
if (position !== 'before') {
index++;
}
store.insert(index, data.records);
store.commitChanges();
}
});
}
}
}]
}]
});
}
});
Fiddle: https://fiddle.sencha.com/#fiddle/1i2u
I want to create placeholder something like this when you drag any item in this: http://www.bryntum.com/examples/taskboard-latest/examples/kitchensink/index.html#examples/basic