UNPKG

shubhadownloader

Version:

There is large amount of information available in market place. The markets are always in sync. In today's world investors find it very difficult to make effective use of information available to them. Shubha Downloader is great tool which resolves this problem and helps investor to increase his productivity and stay focused on decision making. Shubha Downloader enable end user to download market data from available sources and organize it. Shubha Downloader is Open source & FREE utility for end users. Shubha Downloader have main features as follows End of the day market data from web to your favorite charting application . Fundamental market data from web to your favorite charting application. Market reports from web to your favorite charting application.

203 lines (170 loc) 5.78 kB
/** * @class Ext.ux.DataView.Draggable * @extends Object * @author Ed Spencer * <pre><code> Ext.create('Ext.view.View', { mixins: { draggable: 'Ext.ux.DataView.Draggable' }, initComponent: function() { this.mixins.draggable.init(this, { ddConfig: { ddGroup: 'someGroup' } }); this.callParent(arguments); } }); </code></pre> * */ Ext.define('Ext.ux.DataView.Draggable', { requires: 'Ext.dd.DragZone', /** * @cfg {String} ghostCls The CSS class added to the outermost element of the created ghost proxy * (defaults to 'x-dataview-draggable-ghost') */ ghostCls: 'x-dataview-draggable-ghost', /** * @cfg {Ext.XTemplate/Array} ghostTpl The template used in the ghost DataView */ ghostTpl: [ '<tpl for=".">', '{title}', '</tpl>' ], /** * @cfg {Object} ddConfig Config object that is applied to the internally created DragZone */ /** * @cfg {String} ghostConfig Config object that is used to configure the internally created DataView */ init: function(dataview, config) { /** * @property dataview * @type Ext.view.View * The Ext.view.View instance that this DragZone is attached to */ 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 }); }, /** * @private * Called when the attached DataView is rendered. Sets up the internal DragZone */ 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 }); /** * @property dragZone * @type Ext.dd.DragZone * The attached DragZone instane */ 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() { // console.log('test'); }, afterRepair: function() { this.dragging = false; var nodes = this.dragData.nodes, length = nodes.length, i; //FIXME: Ext.fly does not work here for some reason, only frames the last node for (i = 0; i < length; i++) { Ext.get(nodes[i]).frame('#8db2e3', 1); } }, /** * @private * Returns the x and y co-ordinates that the dragged item should be animated back to if it was dropped on an * invalid drop target. If we're dragging more than one item we don't animate back and just allow afterRepair * to frame each dropped item. */ getRepairXY: function(e) { if (this.dragData.multi) { return false; } else { var repairEl = Ext.get(this.dragData.ddel), repairXY = repairEl.getXY(); //take the item's margins and padding into account to make the repair animation line up perfectly repairXY[0] += repairEl.getPadding('t') + repairEl.getMargin('t'); repairXY[1] += repairEl.getPadding('l') + repairEl.getMargin('l'); return repairXY; } }, /** * Updates the internal ghost DataView by ensuring it is rendered and contains the correct records * @param {Array} records The set of records that is currently selected in the parent DataView * @return {Ext.view.View} The Ghost DataView */ prepareGhost: function(records) { var ghost = this.createGhost(records), store = ghost.store; store.removeAll(); store.add(records); return ghost.getEl(); }, /** * @private * Creates the 'ghost' DataView that follows the mouse cursor during the drag operation. This div is usually a * lighter-weight representation of just the nodes that are selected in the parent DataView. */ 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; } });