Помогите, я начал работать недавно c EXT v2.2 . Встал вопрос о загрузке сайта в PANEL .Сайт должен быть рабочим, с выполнением скриптов, естественно с отображением HTML элементов! ЕЩЕ в панели должна работать функция DragSelector для выделения элементов и выводить в грид выделенные элементы(теги, координаты). Я посмотрел пример dataview в библиотеке, немного его переделал! выводит но не так как хочется, там ведь загрузка данных, а не рабочего сайта, выводит только элементы HTML. ЕЩЕ не понимаю как работает сам селектор! КАК можно загрузить сайт в панель? или этого сделать нельзя? объясните как работает селектор? вот мои наработки без выведения результатов в грид : | Код | Ext.onReady(function(){ Ext.DataView.DragSelector = function(cfg){ //Функци для выделения элементов cfg = cfg || {}; var view, regions, proxy, tracker; var rs, bodyRegion, dragRegion = new Ext.lib.Region(0,0,0,0); var dragSafe = cfg.dragSafe === true; this.init = function(dataView){ view = dataView; view.on('render', onRender); };
function fillRegions(){ rs = []; view.all.each(function(el){ rs[rs.length] = el.getRegion(); }); bodyRegion = view.el.getRegion(); }
function cancelClick(){ return false; }
function onBeforeStart(e){ return !dragSafe || e.target == view.el.dom; }
function onStart(e){ view.on('containerclick', cancelClick, view, {single:true}); if(!proxy){ proxy = view.el.createChild({cls:'x-view-selector'}); }else{ proxy.setDisplayed('block'); } fillRegions(); view.clearSelections(); }
function onDrag(e){ var startXY = tracker.startXY; var xy = tracker.getXY();
var x = Math.min(startXY[0], xy[0]); var y = Math.min(startXY[1], xy[1]); var w = Math.abs(startXY[0] - xy[0]); var h = Math.abs(startXY[1] - xy[1]);
dragRegion.left = x; dragRegion.top = y; dragRegion.right = x+w; dragRegion.bottom = y+h;
dragRegion.constrainTo(bodyRegion); proxy.setRegion(dragRegion);
for(var i = 0, len = rs.length; i < len; i++){ var r = rs[i], sel = dragRegion.intersect(r); if(sel && !r.selected){ r.selected = true; view.select(i, true); }else if(!sel && r.selected){ r.selected = false; view.deselect(i); } } }
function onEnd(e){ if(proxy){ var isd = Ext.get('ds').select('*').getCount(); // хрень для нахождения элементов //var X=Ext.get('ds').select('*').item(t).getX(); //var Y = Ext.get('ds').select('*').item(t).getY(); var kx=0; var m = {color:'#f01717'} var kxy = 0; var earth = new Array(isd); for(var t=1;t<isd;t++){earth[t]=false}; for(var t=1;t<isd;t++){ var Xs=Ext.get('ds').select('*').item(t).getX(); var Ys = Ext.get('ds').select('*').item(t).getY(); if(Xs>=dragRegion.left&&Xs<=dragRegion.right){ if(Ys>=dragRegion.top&&Ys<=dragRegion.bottom){kxy++;earth[t]=true} }} alert('you selected ===> '+kxy+"elements"); proxy.setDisplayed(false); } } function onRender(view){ tracker = new Ext.dd.DragTracker({ onBeforeStart: onBeforeStart, onStart: onStart, onDrag: onDrag, onEnd :onEnd }); //tre= new Ext.dd.DragTracker({onEnd:onEnd}); //tre.initEl(view.el); tracker.initEl(view.el); } };
var store = new Ext.data.JsonStore({ url: 'get-images.php', // тут идет откр. файла с помощю php и передает сайт как строку root: 'images', fields: ['HTML'] }); store.load();
var tpl = new Ext.XTemplate( загрузка строки '<tpl for=".">', '<div id="ds" class="thumb-wrap">', '{HTML}', //загрузка строки '</div>', '</tpl>' ); var view = new Ext.DataView({ // тут собирается плагин и сам сайт,его HTML версия, store: store, tpl: tpl, autoHeight:true, multiSelect: true, overClass:'x-view-over', itemSelector:'div.thumb-wrap', emptyText: 'No images to display', plugins: new Ext.DataView.DragSelector(), listeners: { selectionchange: { fn: function(dv,nodes){ var l = nodes.length; var s = l != 1 ? 's' : ''; panel.setTitle('Simple DataView ('+l+' item'+s+' selected)'); } } } }) Ext.QuickTips.init(); var form1 = new Ext.ux.GoodForm({ // тут я попробывал создать новую чуть расширенную панель с кнопками id:'images-view', renderTo:'form1', frame:true, width:535, title:'Simple DataView (0 items selected)', items:view });
});
|
Добавлено через 7 минут и 30 секунд  HELP
|