classes.js
资源名称:ext-3.0.0.zip [点击查看]
上传用户:shuoshiled
上传日期:2018-01-28
资源大小:10124k
文件大小:4k
源码类别:
中间件编程
开发平台:
JavaScript
- /*! * Ext JS Library 3.0.0 * Copyright(c) 2006-2009 Ext JS, LLC * 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: '<div class="task-col-hd"></div>',
- menuDisabled:true,
- fixed: true,
- id: 'task-col',
- renderer: function(){
- return '<div class="task-check"></div>';
- },
- 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);
- });
- }
- });
- };