[SSE] В контекстное меню добавлена возможность фильтрации ячеек.
This commit is contained in:
		
							parent
							
								
									503ee98e6a
								
							
						
					
					
						commit
						041d617b26
					
				| 
						 | 
					@ -152,6 +152,8 @@ define([
 | 
				
			||||||
            view.pmiInsertCells.menu.on('item:click',           _.bind(me.onInsertCells, me));
 | 
					            view.pmiInsertCells.menu.on('item:click',           _.bind(me.onInsertCells, me));
 | 
				
			||||||
            view.pmiDeleteCells.menu.on('item:click',           _.bind(me.onDeleteCells, me));
 | 
					            view.pmiDeleteCells.menu.on('item:click',           _.bind(me.onDeleteCells, me));
 | 
				
			||||||
            view.pmiSortCells.menu.on('item:click',             _.bind(me.onSortCells, me));
 | 
					            view.pmiSortCells.menu.on('item:click',             _.bind(me.onSortCells, me));
 | 
				
			||||||
 | 
					            view.pmiFilterCells.menu.on('item:click',           _.bind(me.onFilterCells, me));
 | 
				
			||||||
 | 
					            view.pmiReapply.menu.on('item:click',               _.bind(me.onReapply, me));
 | 
				
			||||||
            view.pmiClear.menu.on('item:click',                 _.bind(me.onClear, me));
 | 
					            view.pmiClear.menu.on('item:click',                 _.bind(me.onClear, me));
 | 
				
			||||||
            view.pmiSelectTable.menu.on('item:click',           _.bind(me.onSelectTable, me));
 | 
					            view.pmiSelectTable.menu.on('item:click',           _.bind(me.onSelectTable, me));
 | 
				
			||||||
            view.pmiInsertTable.menu.on('item:click',           _.bind(me.onInsertTable, me));
 | 
					            view.pmiInsertTable.menu.on('item:click',           _.bind(me.onInsertTable, me));
 | 
				
			||||||
| 
						 | 
					@ -343,6 +345,41 @@ define([
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        onFilterCells: function(menu, item) {
 | 
				
			||||||
 | 
					            if (this.api) {
 | 
				
			||||||
 | 
					                var autoFilterObject = new Asc.AutoFiltersOptions(),
 | 
				
			||||||
 | 
					                    filterObj = new Asc.AutoFilterObj();
 | 
				
			||||||
 | 
					                if (item.value>0) {
 | 
				
			||||||
 | 
					                    filterObj.asc_setFilter(new Asc.ColorFilter());
 | 
				
			||||||
 | 
					                    filterObj.asc_setType(Asc.c_oAscAutoFilterTypes.ColorFilter);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    var colorFilter = filterObj.asc_getFilter();
 | 
				
			||||||
 | 
					                    colorFilter.asc_setCellColor((item.value==1) ? null : false);
 | 
				
			||||||
 | 
					                    colorFilter.asc_setCColor((item.value==1) ? this.documentHolder.ssMenu.cellColor : this.documentHolder.ssMenu.fontColor);
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    filterObj.asc_setFilter(new Asc.CustomFilters());
 | 
				
			||||||
 | 
					                    filterObj.asc_setType(Asc.c_oAscAutoFilterTypes.CustomFilters);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    var customFilter = filterObj.asc_getFilter();
 | 
				
			||||||
 | 
					                    customFilter.asc_setCustomFilters([new Asc.CustomFilter()]);
 | 
				
			||||||
 | 
					                    customFilter.asc_setAnd(true);
 | 
				
			||||||
 | 
					                    var customFilters = customFilter.asc_getCustomFilters();
 | 
				
			||||||
 | 
					                    customFilters[0].asc_setOperator(Asc.c_oAscCustomAutoFilter.equals);
 | 
				
			||||||
 | 
					//                    customFilters[0].asc_setVal('');
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                autoFilterObject.asc_setFilterObj(filterObj);
 | 
				
			||||||
 | 
					                this.api.asc_applyAutoFilterByType(autoFilterObject);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                Common.NotificationCenter.trigger('edit:complete', this.documentHolder);
 | 
				
			||||||
 | 
					                Common.component.Analytics.trackEvent('DocumentHolder', 'Filter Cells');
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        onReapply: function() {
 | 
				
			||||||
 | 
					            this.api.asc_applyAutoFilter(new Asc.AutoFiltersOptions());
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        onClear: function(menu, item) {
 | 
					        onClear: function(menu, item) {
 | 
				
			||||||
            if (this.api) {
 | 
					            if (this.api) {
 | 
				
			||||||
                this.api.asc_emptyCells(item.value);
 | 
					                this.api.asc_emptyCells(item.value);
 | 
				
			||||||
| 
						 | 
					@ -1181,6 +1218,8 @@ define([
 | 
				
			||||||
                    formatTableInfo = cellinfo.asc_getFormatTableInfo(),
 | 
					                    formatTableInfo = cellinfo.asc_getFormatTableInfo(),
 | 
				
			||||||
                    isintable = (formatTableInfo !== null);
 | 
					                    isintable = (formatTableInfo !== null);
 | 
				
			||||||
                documentHolder.ssMenu.formatTableName = (isintable) ? formatTableInfo.asc_getTableName() : null;
 | 
					                documentHolder.ssMenu.formatTableName = (isintable) ? formatTableInfo.asc_getTableName() : null;
 | 
				
			||||||
 | 
					                documentHolder.ssMenu.cellColor = cellinfo.asc_getFill().asc_getColor();
 | 
				
			||||||
 | 
					                documentHolder.ssMenu.fontColor = cellinfo.asc_getFont().asc_getColor();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                documentHolder.pmiInsertEntire.setVisible(isrowmenu||iscolmenu);
 | 
					                documentHolder.pmiInsertEntire.setVisible(isrowmenu||iscolmenu);
 | 
				
			||||||
                documentHolder.pmiInsertEntire.setCaption((isrowmenu) ? this.textInsertTop : this.textInsertLeft);
 | 
					                documentHolder.pmiInsertEntire.setCaption((isrowmenu) ? this.textInsertTop : this.textInsertLeft);
 | 
				
			||||||
| 
						 | 
					@ -1190,7 +1229,10 @@ define([
 | 
				
			||||||
                documentHolder.pmiSelectTable.setVisible(iscellmenu && !iscelledit && isintable);
 | 
					                documentHolder.pmiSelectTable.setVisible(iscellmenu && !iscelledit && isintable);
 | 
				
			||||||
                documentHolder.pmiInsertTable.setVisible(iscellmenu && !iscelledit && isintable);
 | 
					                documentHolder.pmiInsertTable.setVisible(iscellmenu && !iscelledit && isintable);
 | 
				
			||||||
                documentHolder.pmiDeleteTable.setVisible(iscellmenu && !iscelledit && isintable);
 | 
					                documentHolder.pmiDeleteTable.setVisible(iscellmenu && !iscelledit && isintable);
 | 
				
			||||||
                documentHolder.pmiSortCells.setVisible((iscellmenu||isallmenu||cansort) && !iscelledit && !isintable);
 | 
					                documentHolder.pmiSortCells.setVisible((iscellmenu||isallmenu||cansort) && !iscelledit);
 | 
				
			||||||
 | 
					                documentHolder.pmiFilterCells.setVisible((iscellmenu||cansort) && !iscelledit);
 | 
				
			||||||
 | 
					                documentHolder.pmiReapply.setVisible((iscellmenu||isallmenu||cansort) && !iscelledit);
 | 
				
			||||||
 | 
					                documentHolder.ssMenu.items[12].setVisible((iscellmenu||isallmenu||cansort) && !iscelledit);
 | 
				
			||||||
                documentHolder.pmiInsFunction.setVisible(iscellmenu||insfunc);
 | 
					                documentHolder.pmiInsFunction.setVisible(iscellmenu||insfunc);
 | 
				
			||||||
                documentHolder.pmiAddNamedRange.setVisible(iscellmenu && !iscelledit);
 | 
					                documentHolder.pmiAddNamedRange.setVisible(iscellmenu && !iscelledit);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1218,7 +1260,7 @@ define([
 | 
				
			||||||
                documentHolder.pmiFreezePanes.setCaption(this.api.asc_getSheetViewSettings().asc_getIsFreezePane() ? documentHolder.textUnFreezePanes : documentHolder.textFreezePanes);
 | 
					                documentHolder.pmiFreezePanes.setCaption(this.api.asc_getSheetViewSettings().asc_getIsFreezePane() ? documentHolder.textUnFreezePanes : documentHolder.textFreezePanes);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                /** coauthoring begin **/
 | 
					                /** coauthoring begin **/
 | 
				
			||||||
                documentHolder.ssMenu.items[13].setVisible(iscellmenu && !iscelledit && this.permissions.canCoAuthoring && this.permissions.canComments);
 | 
					                documentHolder.ssMenu.items[16].setVisible(iscellmenu && !iscelledit && this.permissions.canCoAuthoring && this.permissions.canComments);
 | 
				
			||||||
                documentHolder.pmiAddComment.setVisible(iscellmenu && !iscelledit && this.permissions.canCoAuthoring && this.permissions.canComments);
 | 
					                documentHolder.pmiAddComment.setVisible(iscellmenu && !iscelledit && this.permissions.canCoAuthoring && this.permissions.canComments);
 | 
				
			||||||
                /** coauthoring end **/
 | 
					                /** coauthoring end **/
 | 
				
			||||||
                documentHolder.pmiCellMenuSeparator.setVisible(iscellmenu || isrowmenu || iscolmenu || isallmenu || insfunc);
 | 
					                documentHolder.pmiCellMenuSeparator.setVisible(iscellmenu || isrowmenu || iscolmenu || isallmenu || insfunc);
 | 
				
			||||||
| 
						 | 
					@ -1236,17 +1278,19 @@ define([
 | 
				
			||||||
                documentHolder.pmiClear.menu.items[3].setVisible(!this.permissions.isEditDiagram);
 | 
					                documentHolder.pmiClear.menu.items[3].setVisible(!this.permissions.isEditDiagram);
 | 
				
			||||||
                documentHolder.pmiClear.menu.items[4].setVisible(!this.permissions.isEditDiagram);
 | 
					                documentHolder.pmiClear.menu.items[4].setVisible(!this.permissions.isEditDiagram);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                var filterInfo = cellinfo.asc_getAutoFilterInfo();
 | 
					                var filterInfo = cellinfo.asc_getAutoFilterInfo(),
 | 
				
			||||||
                filterInfo = (filterInfo) ? filterInfo.asc_getIsApplyAutoFilter() : false;
 | 
					                    isApplyAutoFilter = (filterInfo) ? filterInfo.asc_getIsApplyAutoFilter() : false;
 | 
				
			||||||
                documentHolder.pmiInsertCells.menu.items[0].setDisabled(filterInfo);
 | 
					                filterInfo = (filterInfo) ? filterInfo.asc_getIsAutoFilter() : null;
 | 
				
			||||||
                documentHolder.pmiDeleteCells.menu.items[0].setDisabled(filterInfo);
 | 
					                documentHolder.pmiInsertCells.menu.items[0].setDisabled(isApplyAutoFilter);
 | 
				
			||||||
                documentHolder.pmiInsertCells.menu.items[1].setDisabled(filterInfo);
 | 
					                documentHolder.pmiDeleteCells.menu.items[0].setDisabled(isApplyAutoFilter);
 | 
				
			||||||
                documentHolder.pmiDeleteCells.menu.items[1].setDisabled(filterInfo);
 | 
					                documentHolder.pmiInsertCells.menu.items[1].setDisabled(isApplyAutoFilter);
 | 
				
			||||||
 | 
					                documentHolder.pmiDeleteCells.menu.items[1].setDisabled(isApplyAutoFilter);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                _.each(documentHolder.ssMenu.items, function(item) {
 | 
					                _.each(documentHolder.ssMenu.items, function(item) {
 | 
				
			||||||
                    item.setDisabled(isCellLocked);
 | 
					                    item.setDisabled(isCellLocked);
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
                documentHolder.pmiCopy.setDisabled(false);
 | 
					                documentHolder.pmiCopy.setDisabled(false);
 | 
				
			||||||
 | 
					                documentHolder.pmiSortCells.setDisabled(isCellLocked || (filterInfo==null));
 | 
				
			||||||
                if (showMenu) this.showPopupMenu(documentHolder.ssMenu, {}, event);
 | 
					                if (showMenu) this.showPopupMenu(documentHolder.ssMenu, {}, event);
 | 
				
			||||||
            } else if (this.permissions.isEditDiagram && seltype == Asc.c_oAscSelectionType.RangeChartText) {
 | 
					            } else if (this.permissions.isEditDiagram && seltype == Asc.c_oAscSelectionType.RangeChartText) {
 | 
				
			||||||
                if (!showMenu && !documentHolder.textInShapeMenu.isVisible()) return;
 | 
					                if (!showMenu && !documentHolder.textInShapeMenu.isVisible()) return;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -677,8 +677,8 @@ define([
 | 
				
			||||||
                    this.miTextFilter,
 | 
					                    this.miTextFilter,
 | 
				
			||||||
                    this.miFilterCellColor,
 | 
					                    this.miFilterCellColor,
 | 
				
			||||||
                    this.miFilterFontColor,
 | 
					                    this.miFilterFontColor,
 | 
				
			||||||
                    {caption     : '--'},
 | 
					 | 
				
			||||||
                    this.miClear,
 | 
					                    this.miClear,
 | 
				
			||||||
 | 
					                    {caption     : '--'},
 | 
				
			||||||
                    this.miReapply
 | 
					                    this.miReapply
 | 
				
			||||||
                ]
 | 
					                ]
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -239,6 +239,29 @@ define([
 | 
				
			||||||
                })
 | 
					                })
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            me.pmiFilterCells = new Common.UI.MenuItem({
 | 
				
			||||||
 | 
					                caption     : me.txtFilter,
 | 
				
			||||||
 | 
					                menu        : new Common.UI.Menu({
 | 
				
			||||||
 | 
					                    menuAlign   : 'tl-tr',
 | 
				
			||||||
 | 
					                    items: [
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            caption : me.txtFilterValue,
 | 
				
			||||||
 | 
					                            value   : 0
 | 
				
			||||||
 | 
					                        },{
 | 
				
			||||||
 | 
					                            caption : me.txtFilterCellColor,
 | 
				
			||||||
 | 
					                            value   : 1
 | 
				
			||||||
 | 
					                        },{
 | 
				
			||||||
 | 
					                            caption : me.txtFilterFontColor,
 | 
				
			||||||
 | 
					                            value   : 2
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    ]
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            me.pmiReapply = new Common.UI.MenuItem({
 | 
				
			||||||
 | 
					                caption     : me.txtReapply
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            me.pmiInsFunction = new Common.UI.MenuItem({
 | 
					            me.pmiInsFunction = new Common.UI.MenuItem({
 | 
				
			||||||
                caption     : me.txtFormula
 | 
					                caption     : me.txtFormula
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
| 
						 | 
					@ -319,7 +342,10 @@ define([
 | 
				
			||||||
                    me.pmiDeleteCells,
 | 
					                    me.pmiDeleteCells,
 | 
				
			||||||
                    me.pmiDeleteTable,
 | 
					                    me.pmiDeleteTable,
 | 
				
			||||||
                    me.pmiClear,
 | 
					                    me.pmiClear,
 | 
				
			||||||
 | 
					                    {caption: '--'},
 | 
				
			||||||
                    me.pmiSortCells,
 | 
					                    me.pmiSortCells,
 | 
				
			||||||
 | 
					                    me.pmiFilterCells,
 | 
				
			||||||
 | 
					                    me.pmiReapply,
 | 
				
			||||||
                    {caption: '--'},
 | 
					                    {caption: '--'},
 | 
				
			||||||
                    me.pmiAddComment,
 | 
					                    me.pmiAddComment,
 | 
				
			||||||
                    me.pmiCellMenuSeparator,
 | 
					                    me.pmiCellMenuSeparator,
 | 
				
			||||||
| 
						 | 
					@ -629,7 +655,12 @@ define([
 | 
				
			||||||
        insertColumnRightText   : 'Insert Column Right',
 | 
					        insertColumnRightText   : 'Insert Column Right',
 | 
				
			||||||
        deleteRowText           : 'Delete Row',
 | 
					        deleteRowText           : 'Delete Row',
 | 
				
			||||||
        deleteColumnText        : 'Delete Column',
 | 
					        deleteColumnText        : 'Delete Column',
 | 
				
			||||||
        deleteTableText         : 'Delete Table'
 | 
					        deleteTableText         : 'Delete Table',
 | 
				
			||||||
 | 
					        txtFilter: 'Filter',
 | 
				
			||||||
 | 
					        txtFilterValue: 'Filter by Selected cell\'s value',
 | 
				
			||||||
 | 
					        txtFilterCellColor: 'Filter by cell\'s color',
 | 
				
			||||||
 | 
					        txtFilterFontColor: 'Filter by font color',
 | 
				
			||||||
 | 
					        txtReapply: 'Reapply'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }, SSE.Views.DocumentHolder || {}));
 | 
					    }, SSE.Views.DocumentHolder || {}));
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
		Loading…
	
		Reference in a new issue