📄 grid.js
字号:
/********************************************************************************* * SugarCRM is a customer relationship management program developed by * SugarCRM, Inc. Copyright (C) 2004 - 2007 SugarCRM Inc. * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License version 3 as published by the * Free Software Foundation with the addition of the following permission added * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; if not, see http://www.gnu.org/licenses or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. * * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road, * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU General Public License version 3. * * In accordance with Section 7(b) of the GNU General Public License version 3, * these Appropriate Legal Notices must retain the display of the "Powered by * SugarCRM" logo. If the display of the logo is not reasonably feasible for * technical reasons, the Appropriate Legal Notices must display the words * "Powered by SugarCRM". ********************************************************************************/function gridInit() { if(SUGAR.email2.grid) { SUGAR.email2.grid.destroy(); } e2Grid = { init : function() { // changes "F" to an icon function flaggedIcon(value) { if(value != "") { return "<span style='color: #f00; font-weight:bold;'>!</a>"; } } // changes "A" to replied icon function repliedIcon(value) { if(value != "") { return "<img src='themes/Sugar/images/export.gif' class='image' border='0' width='10' align='absmiddle'>"; } } // example of custom renderer function function humanReadableDate(value) { /*var d = new Date(); var eDate = getDateObject(value); var emailDate = new String(cal_date_format); var today = new String(cal_date_format); var yesterday = new String(cal_date_format); emailDate = emailDate.replace('%Y', eDate.getFullYear()); emailDate = emailDate.replace('%m', strpad(eDate.getMonth() + 1)); emailDate = emailDate.replace('%d', eDate.getDate()); today = today.replace('%Y', d.getFullYear()); today = today.replace('%m', strpad(d.getMonth() + 1)); today = today.replace('%d', d.getDate()); yesterday = yesterday.replace('%Y', d.getFullYear()); yesterday = yesterday.replace('%m', strpad(d.getMonth() + 1)); yesterday = yesterday.replace('%d', d.getDate() - 1); if(today == emailDate) { value = app_strings.LBL_EMAIL_DATE_TODAY; } else if(yesterday == emailDate) { value = app_strings.LBL_EMAIL_DATE_YESTERDAY; }*/ return value; } var colModel = new Ext.grid.DefaultColumnModel( [ { header: " ", width: 15, sortable: true, fixed: true, resizeable: false, renderer: flaggedIcon, dataIndex: 'flagged' }, { header: " ", width: 15, sortable: true, fixed: true, resizeable: false, renderer: repliedIcon, dataIndex: 'status' }, { header: app_strings.LBL_EMAIL_FROM, width: 125, sortable: true, dataIndex: 'from' }, { header: app_strings.LBL_EMAIL_SUBJECT, width: 250, sortable: true, dataIndex: 'subject' }, { header: app_strings.LBL_EMAIL_DATE_RECEIVED, width: 100, sortable: true, renderer: humanReadableDate, dataIndex: 'date' }, { header: 'uid', hidden: true, dataIndex: 'uid' }, { header: 'mbox', hidden: true, dataIndex: 'mbox' }, { header: 'ieId', hidden: true, dataIndex: 'ieId' }, { header: 'site_url', hidden: true, dataIndex: 'site_url' }, { header: 'seen', hidden: true, dataIndex: 'seen' }, { header: 'type', hidden: true, dataIndex: 'type' } ] ); var dataModel = new Ext.data.Store({ // load using HTTP proxy: new Ext.data.HttpProxy({url: urlBase}), //enable sorting on the server accross all data remoteSort: true, // the return will be XML, so lets set up a reader reader: new Ext.data.XmlReader({ record: 'Email', id: 'uid', totalRecords: 'TotalCount' }, ['flagged', 'status', 'from', 'subject', 'date', 'uid', 'mbox', 'ieId', 'site_url', 'seen', 'type', 'AssignedTo']) }); dataModel.baseParams['to_pdf'] = 'true'; dataModel.baseParams['module'] = 'Emails'; dataModel.baseParams['action'] = 'EmailUIAjax'; dataModel.baseParams['emailUIAction'] = 'getMessageListXML'; dataModel.baseParams['mbox'] = 'INBOX'; dataModel.baseParams['ieId'] = ''; dataModel.baseParams['forceRefresh'] = 'false'; dataModel.baseParams['to_pdf'] = 'true'; if(lazyLoadFolder != null) { dataModel.baseParams['mbox'] = lazyLoadFolder.folder; dataModel.baseParams['ieId'] = lazyLoadFolder.ieId; var test = new String(lazyLoadFolder.folder); if(test.match(/SUGAR\./)) { dataModel.baseParams['emailUIAction'] = 'getMessageListSugarFoldersXML'; dataModel.baseParams['mbox'] = test.substr(6); } } //dataModel.initPaging(urlBase, SUGAR.email2.userPrefs.emailSettings.showNumInList); // create the Grid SUGAR.email2.grid = new Ext.grid.Grid('frameList', { selModel: new Ext.grid.RowSelectionModel({singleSelect:false}), enableDrag:true, stripeRows: false, trackMouseOver: false, loadMask: true, ds: dataModel, cm: colModel, ddGroup: 'TreeDD', enableColumnHide: false } ); SUGAR.email2.grid.render(); var gridFoot = SUGAR.email2.grid.getView().getFooterPanel(true); // add a paging toolbar to the grid's footer var paging = new Ext.PagingToolbar(gridFoot, dataModel, { pageSize : parseInt(SUGAR.email2.userPrefs.emailSettings.showNumInList), displayInfo : true, displayMsg : app_strings.LBL_EMAIL_DISPLAY_MSG, emptyMsg : app_strings.LBL_EMAIL_EMPTY_MSG, beforePageText: app_strings.LBL_EMAIL_PAGE_BEFORE, afterPageText : app_strings.LBL_EMAIL_PAGE_AFTER, firstText : app_strings.LBL_EMAIL_TEXT_FIRST, prevText : app_strings.LBL_EMAIL_TEXT_PREV, nextText : app_strings.LBL_EMAIL_TEXT_NEXT, lastText : app_strings.LBL_EMAIL_TEXT_LAST, refreshText : app_strings.LBL_EMAIL_TEXT_REFRESH }); if(lazyLoadFolder != null) { //forcePreview = true; SUGAR.email2.grid.getDataSource().load({params:{start:0, limit:parseInt(SUGAR.email2.userPrefs.emailSettings.showNumInList)}}); //loadPage(1, SUGAR.email2.listView.setEmailListStyles); SUGAR.email2.grid.getSelectionModel().selectFirstRow(); } // EVENT handlers SUGAR.email2.grid.on('dragdrop', SUGAR.email2.listView.handleDrop, SUGAR.email2.grid, false); SUGAR.email2.grid.on('headerclick', SUGAR.email2.listView.boldUnreadRows); SUGAR.email2.grid.on('columnmove', SUGAR.email2.listView.boldUnreadRows); SUGAR.email2.grid.on('rowcontextmenu', SUGAR.email2.contextMenus.showEmailsListMenu); SUGAR.email2.grid.on('rowdblclick', SUGAR.email2.listView.getEmail); dataModel.on('load', SUGAR.email2.listView.setEmailListStyles); SUGAR.email2.grid.getSelectionModel().on('rowselect', SUGAR.email2.listView.handleClick); SUGAR.email2.grid.getDataSource().on('loadexception', SUGAR.email2.listView.loadException); } }; e2Grid.init();};function AddressSearchGridInit() { function moduleIcon(value) { if(value != "") { return "<img src='themes/default/images/" + value + ".gif' class='image' border='0' width='16' align='absmiddle'>"; } }; function selectionCheckBox(value) { if(value != "") { return '<input type="checkbox" onclick="SUGAR.email2.addressBook.grid.toggleSelect(\'' + value + '\', this.checked);">'; } }; var checkHeader = '<input type="checkbox" '; if (SUGAR.email2.util.isIe()) { checkHeader += 'style="top:-5px" '; } checkHeader += 'onclick="SUGAR.email2.addressBook.grid.toggleSelectAll(this.checked);">'; var colModel = new Ext.grid.DefaultColumnModel( [{ header: checkHeader, width: 30, renderer: selectionCheckBox, dataIndex: 'bean_id' }, { header: '', width: 25, renderer: moduleIcon, dataIndex: 'bean_module' }, { header: app_strings.LBL_EMAIL_ADDRESS_BOOK_NAME, width: 200, sortable: false, dataIndex: 'name' }, { header: app_strings.LBL_EMAIL_ADDRESS_BOOK_EMAIL_ADDR, width: 300, sortable: false, dataIndex: 'email' } ] ); var dataModel = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({url: urlBase}), //enable sorting on the server accross all data remoteSort: true, // the return will be XML, so lets set up a reader reader: new Ext.data.XmlReader({ record: 'Person', id: 'bean_id', totalRecords: 'TotalCount' }, ['name', 'email', 'bean_id', 'bean_module']) }); SUGAR.email2.addressBook.addressBookDataModel = dataModel; var reportsDataModel = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({url: urlBase}), //enable sorting on the server accross all data remoteSort: true, // the return will be XML, so lets set up a reader reader: new Ext.data.XmlReader({ record: 'Person', id: 'bean_id', totalRecords: 'TotalCount' }, ['name', 'email', 'bean_id', 'bean_module']) }); reportsDataModel.baseParams['to_pdf'] = 'true'; reportsDataModel.baseParams['reportId'] = ''; reportsDataModel.baseParams['module'] = 'Emails'; reportsDataModel.baseParams['action'] = 'EmailUIAjax'; reportsDataModel.baseParams['emailUIAction'] = 'getReportUsers'; SUGAR.email2.addressBook.reportsDataModel = reportsDataModel; dataModel.baseParams['to_pdf'] = 'true'; dataModel.baseParams['module'] = 'Emails'; dataModel.baseParams['action'] = 'EmailUIAjax'; dataModel.baseParams['emailUIAction'] = 'getAddressSearchResults'; SUGAR.email2.addressBook.grid = new Ext.grid.Grid(Ext.DomHelper.append(document.body, { tag : 'div',id : 'addrSearchGrid'}), { selModel: new Ext.grid.RowSelectionModel({singleSelect:false}), enableDrag: false, stripeRows: false, trackMouseOver: false, loadMask: true, ds: dataModel, cm: colModel, enableColumnHide: false } ); var grid = SUGAR.email2.addressBook.grid; grid.render(); grid.getSelectionModel().on('beforerowselect', function(selModel, rowIndex, keep) { var row = SUGAR.email2.addressBook.grid.getDataSource().getAt(rowIndex) if (!row.data.checked) { return false; } return true; }); grid.getSelectionModel().on('rowdeselect', function(selModel, rowIndex) { var row = SUGAR.email2.addressBook.grid.getDataSource().getAt(rowIndex) if (row.data.checked) { selModel.selectRow(rowIndex, true); } }); grid.toggleSelect = function(id, checked) { var row = SUGAR.email2.addressBook.grid.dataSource.getById(id); row.data.checked = checked; if (checked) { SUGAR.email2.addressBook.grid.getSelectionModel().selectRow(row.store.indexOf(row), true); } else { SUGAR.email2.addressBook.grid.getSelectionModel().deselectRow(row.store.indexOf(row)); } }; grid.toggleSelectAll = function(checked) { rows = SUGAR.email2.addressBook.grid.getDataSource().getRange(0, 25); for (var i = 0; i < rows.length; i++) { var row = rows[i]; row.data.checked = checked; } var checkBoxes = SUGAR.email2.addressBook.grid.getGridEl().dom.getElementsByTagName('input'); for (var i = 0; i < checkBoxes.length; i++) { checkBoxes[i].checked = checked; } if (checked) { SUGAR.email2.addressBook.grid.getSelectionModel().selectAll(); } else { SUGAR.email2.addressBook.grid.getSelectionModel().clearSelections(); } }; /*var layout = Ext.BorderLayout.create({ center: { margins:{left:3,top:3,right:3,bottom:3}, panels: [new Ext.GridPanel(SUGAR.email2.addressBook.grid)] } }, 'adrsrchGridPanel');*/ SUGAR.email2.addressBook.grid.autoSize(); SUGAR.email2.addressBook.grid.render();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -