X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/2e847cf21b8ab9d15fa167b315ca5b2fa92638fc..6a7e4474cba9d8be4b2ec445e10f1691f7277c50:/examples/tasks/classes.js diff --git a/examples/tasks/classes.js b/examples/tasks/classes.js index 0ba600d8..cd0ead51 100644 --- a/examples/tasks/classes.js +++ b/examples/tasks/classes.js @@ -1,162 +1,162 @@ /*! - * Ext JS Library 3.1.1 - * Copyright(c) 2006-2010 Ext JS, LLC + * Ext JS Library 3.2.0 + * Copyright(c) 2006-2010 Ext JS, Inc. * licensing@extjs.com * http://www.extjs.com/license */ -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); - }); - } - }); +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