From 515f69dd55bc9468b70f8917564f32667a48e5c0 Mon Sep 17 00:00:00 2001 From: MuJianNan Date: Tue, 28 Apr 2020 22:32:21 +0800 Subject: [PATCH] implement multiple select, but it was too ugly, next try bootstrap --- src/managers/selectorManager.ts | 39 +++++++++++++++++++-------------- src/visual/visual.ts | 2 +- webpack.statistics.dev.html | 4 ++-- 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/src/managers/selectorManager.ts b/src/managers/selectorManager.ts index 7e5e950..63c019e 100644 --- a/src/managers/selectorManager.ts +++ b/src/managers/selectorManager.ts @@ -60,52 +60,56 @@ abstract class Selector implements ISelector{ this.manager=manager; this.createView(); } - protected view:Selection; protected abstract createView(); - public dispose(){ - this.view?.remove(); - } + public abstract dispose(); protected readonly manager:ISelectorManager; public abstract update(categories: powerbi.DataViewCategoryColumn, defaultSelect: powerbi.DataViewValueColumn, defaultStart: powerbi.DataViewValueColumn, defaultEnd: powerbi.DataViewValueColumn); } class DropDownSelector extends Selector{ + private dropDown:Selection; protected createView() { console.debug('dropDownViewManager','createView start'); - this.view=this.manager.selectorContainer.append("select").classed("dropDown-selector",true).classed("selector",true); + this.dropDown=this.manager.selectorContainer.append("select").classed("dropDown-selector",true).classed("selector",true).attr("multiple",true); console.debug('dropDownViewManager','createView end'); } + public dispose(){ + this.dropDown.remove(); + } public update(categories: powerbi.DataViewCategoryColumn, defaultSelect: powerbi.DataViewValueColumn, defaultStart: powerbi.DataViewValueColumn, defaultEnd: powerbi.DataViewValueColumn) { console.debug('dropDownViewManager','update start'); - let appending=this.view.selectAll("option").data(categories.values); - appending.enter().append("option").text(function(d){return d.toString();}); - appending.exit().remove(); - console.debug("appending:",appending); + let options=this.dropDown.selectAll("option").data(categories.values,function(d){return d.toString();});//map data + options.enter().append("option").text(function(d){return d.toString();});//add + options.exit().remove();//delete + console.debug("dropDown:",this.dropDown); let filterManager:IFilterManager=this.manager.filterManager; - (>this.view).on("input change",function(){ + this.dropDown.on("input change",function(){ console.debug('DropDownSelector:',"input change"); console.debug('this',this); console.debug('filterManager:',filterManager); - let selection:string[]=[]; + let selectedValues:string[]=[]; for(let i=0;i - Webpack Bundle Analyzer [27 Apr 2020 at 23:07] + Webpack Bundle Analyzer [28 Apr 2020 at 21:26]