FR.components.gridStore = Ext.extend(Ext.data.Store, { loadParams: {}, initialSort: false, constructor: function(config) { var cols = [ {name: 'uniqid', mapping: 'id'}, {name: 'isFolder', mapping: 'dir'}, {name: 'filename', mapping: 'n', sortFunction: function(r1, r2) { return compareAlphaNum(r1.get('filename').toLowerCase(), r2.get('filename').toLowerCase()); }}, {name: 'trash_deleted_from', mapping: 'tdf'}, {name: 'filesize', mapping: 's'}, {name: 'nice_filesize', mapping: 'ns', sortFunction: function(r1, r2) { var v1 = Ext.data.SortTypes.asInt(r1.get('filesize')); var v2 = Ext.data.SortTypes.asInt(r2.get('filesize')); return (v1 > v2 ? 1 : (v1 < v2 ? -1 : 0)); }}, {name: 'icon', mapping: 'i'}, {name: 'type', mapping: 't'}, {name: 'thumb', mapping: 'th'}, {name: 'filetype', mapping: 'ft'}, {name: 'meta_filetype', mapping: 'mf'}, {name: 'modified', mapping: 'm', type:'date', dateFormat:'m/d/Y h:i'}, {name: 'modifiedHuman', mapping: 'mh'}, {name: 'created', mapping: 'c', type:'date', dateFormat:'m/d/Y h:i'}, {name: 'createdHuman', mapping: 'ch'}, {name: 'deleted', mapping: 'd', type:'date', dateFormat:'m/d/Y h:i'}, {name: 'deletedHuman', mapping: 'dh'}, {name: 'taken', mapping: 'dt', type: 'int'}, {name: 'isNew', mapping: 'new'}, {name: 'hasWebLink', mapping: 'hW'}, {name: 'share', mapping: 'sh'}, {name: 'notInfo', mapping: 'fn'}, {name: 'comments', mapping: 'cc'}, {name: 'label', mapping: 'l', convert: function(v, r) { if (!v) {return false;} var s = v.split('|'); return { color: s[1], text: s[0], html: '
'+s[0]+'
' }; }, sortFunction: function(r1, r2) { var l1 = r1.get('label'), l2 = r2.get('label'); if (!l1) {return -1;} if (!l2) {return 1;} return compareAlphaNum(l2.text.toLowerCase(), l1.text.toLowerCase()); }}, {name: 'tags', mapping: 'tg'}, {name: 'rating', mapping: 'r'}, {name: 'star', mapping: 'st'}, {name: 'path', mapping: 'p', convert: function(v, r) {return v || FR.currentPath+'/'+r.n;}}, {name: 'lockInfo', mapping: 'lI'}, {name: 'version', mapping: 'v'}, {name: 'random', convert: function(v, r) {return Math.floor(Math.random() * 1000);}} ]; Ext.each(FR.UI.grid.customColumns, function(col) { cols.push({name: col.dataIndex}); }, this); config = Ext.apply({ proxy: new Ext.data.HttpProxy({url: FR.getBaseURL + '&page=grid'}), reader: new Ext.data.JsonReader({root: 'files', totalProperty: 'count', id: 'id'}, cols) }, config); FR.components.gridStore.superclass.constructor.call(this, config); }, loadByPath: function(path) { path = Ext.value(path, FR.currentPath); var url = FR.baseURL; var sendPath = true; if (path == '/ROOT/TRASH') { url += '/?module=trash§ion=ajax&page=grid'; sendPath = false; } else if (path == '/ROOT/STARRED') { url += '/?module=stars&page=grid'; sendPath = false; } else if (path.indexOf('/ROOT/Photos') == 0) { url += '/?module=photos&page=grid'; } else if (path.indexOf('/ROOT/Music') == 0) { url += '/?module=music'; } else if (path == '/ROOT/WLINKED') { url += '/?module=weblinks§ion=ajax&page=grid'; sendPath = false; } else if (path == '/ROOT/SHARES') { url += '/?module=share§ion=ajax&page=grid'; sendPath = false; } else if (path == '/ROOT/RECENT') { url += '/?module=filelog&page=recent'; sendPath = false; } else if (path.indexOf('/ROOT/SEARCH') == 0) { url += '/?module=search§ion=ajax&page=grid'; sendPath = false; } else { url = FR.getBaseURL + '&page=grid'; } this.proxy.conn.url = url; if (sendPath) { this.loadParams.path = encodeURIComponent(path); } else { delete this.loadParams.path; } this.load({params: this.loadParams}); }, applySort: function() { if (!this.sortInfo) {this.sortInfo = {field: 'filename', direction: 'ASC'};} if (this.initialSort) { this.sortInfo = this.initialSort; this.initialSort = false; } this.multiSortInfo = { sorters: [ {field: 'isFolder', direction: 'DESC'} ], direction: 'DESC' }; this.hasMultiSort = true; if (this.sortInfo == 'server') { this.sortInfo = false; } else { this.multiSortInfo.sorters.push({field: this.sortInfo.field, direction: this.sortInfo.direction}); this.multiSortInfo.direction = this.sortInfo.direction; } FR.components.gridStore.superclass.applySort.apply(this, arguments); } });