X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/ee06f37b0f6f6d94cd05a6ffae556660f7c4a2bc..c930e9176a5a85509c5b0230e2bff5c22a591432:/docs/source/classes.html?ds=sidebyside diff --git a/docs/source/classes.html b/docs/source/classes.html new file mode 100644 index 00000000..f62440c5 --- /dev/null +++ b/docs/source/classes.html @@ -0,0 +1,165 @@ + +
+Ext.BLANK_IMAGE_URL = 'images/s.gif'; + +Task = Ext.data.Record.create([ + {name: 'taskId', type:'string'}, + {name: 'title', type:'string'}, + {name: 'category', type:'string'}, + {name: 'description', type:'string'}, + {name: 'dueDate', type:'date', dateFormat: 'Y-m-d H:i:s'}, + {name: 'completed', type:'boolean'} +]); + +Task.nextId = function(){ + // if the time isn't unique enough, the addition + // of random chars should be + var t = String(new Date().getTime()).substr(4); + var s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + for(var i = 0; i < 4; i++){ + t += s.charAt(Math.floor(Math.random()*26)); + } + return t; +} + +// The main grid's store +TaskStore = function(conn){ + TaskStore.superclass.constructor.call(this, { + sortInfo:{field: 'dueDate', direction: "ASC"}, + groupField:'dueDate', + taskFilter: 'all', + reader: new Ext.data.JsonReader({ + idProperty: 'taskId' + }, Task) + }); + + this.proxy = new Ext.data.SqlDB.Proxy(conn, 'task', 'taskId', this); + + if(window.google){ // google needs the table created + this.proxy.on('beforeload', this.prepareTable, conn); + } + + this.addEvents({newcategory: true}); +}; + +Ext.extend(TaskStore, Ext.data.GroupingStore, { + applyFilter : function(filter){ + if(filter !== undefined){ + this.taskFilter = filter; + } + var value = this.taskFilter; + if(value == 'all'){ + return this.clearFilter(); + } + return this.filterBy(function(item){ + return item.data.completed === value; + }); + }, + + addTask : function(data){ + this.suspendEvents(); + this.clearFilter(); + this.resumeEvents(); + this.loadData([data], true); + this.suspendEvents(); + this.applyFilter(); + this.applyGrouping(true); + this.resumeEvents(); + this.fireEvent('datachanged', this); + this.fireEvent('newcategory', data.category); + }, + + prepareTable : function(){ + try{ + this.createTable({ + name: 'task', + key: 'taskId', + fields: Task.prototype.fields + }); + }catch(e){console.log(e)} + } +}); + +// The store for Categories +CategoryStore = function(){ + CategoryStore.superclass.constructor.call(this, { + expandData: true, + data: [], + fields:[{name: 'text', type:'string'}], + sortInfo:{field:'text', direction:'ASC'}, + id: 0 + }); +} + +Ext.extend(CategoryStore, Ext.data.ArrayStore, { + init : function(store){ + var cats = store.collect('category', false, true); + this.loadData(cats); + }, + + addCategory : function(cat){ + if(cat && this.indexOfId(cat) === -1){ + this.clearFilter(true); + this.loadData([cat], true); + this.applySort(); + } + } +}); + +// Grid column plugin that does the complete/active button in the left-most column +CompleteColumn = function(){ + var grid; + + function getRecord(t){ + var index = grid.getView().findRowIndex(t); + return grid.store.getAt(index); + } + + function onMouseDown(e, t){ + if(Ext.fly(t).hasClass('task-check')){ + e.stopEvent(); + var record = getRecord(t); + record.set('completed', !record.data.completed); + grid.store.applyFilter(); + } + } + + function onMouseOver(e, t){ + if(Ext.fly(t).hasClass('task-check')){ + Ext.fly(t.parentNode).addClass('task-check-over'); + } + } + + function onMouseOut(e, t){ + if(Ext.fly(t).hasClass('task-check')){ + Ext.fly(t.parentNode).removeClass('task-check-over'); + } + } + + Ext.apply(this, { + width: 22, + header: '', + menuDisabled:true, + fixed: true, + id: 'task-col', + renderer: function(){ + return ''; + }, + init : function(xg){ + grid = xg; + grid.on('render', function(){ + var view = grid.getView(); + view.mainBody.on('mousedown', onMouseDown); + view.mainBody.on('mouseover', onMouseOver); + view.mainBody.on('mouseout', onMouseOut); + }); + } + }); +};+ + \ No newline at end of file