私は、mdx でフィルターとして使用するために、ディメンションのメンバーを含む複数選択フィルター ウィジェットを持っています。これは、mdx で @{filter) を使用すると正常に機能します。フィルターがユーザーごとに一意であるかのように、フィルターをデータベースに保存し、ユーザーがログインした場合にロードします。これは正常に機能し、フィルターを JSON オブジェクトとして取得します。
データ = [{ "サービス番号": [{ "名前": "+31880440723", "uniquename": "[Inkomend nummer].[Inkomend nummer].[Number].&[76]&[2308]" }、 { "名前": "+31880440747", "uniquename": "[Inkomend nummer].[Inkomend nummer].[Number].&[76]&[2329]" }、 { "名前": "+31880440758", "uniquename": "[Inkomend nummer].[Inkomend nummer].[Number].&[76]&[3670]" }、 { "名前": "+31880440727", "uniquename": "[Inkomend nummer].[Inkomend nummer].[Number].&[76]&[2312]" }] }]
私のjavascriptコードには、実際にフィルターを設定するための「fireEvent」イベントがあります。コード:
関数 consumerEvent( コンテキスト、イベント ) { var $report = context.$report; var fireEvent = context.fireEvent.bind(context); ... いくつかのコード ... fireEvent('filter',buildEvent(data)); }
関数 buildEvent(sel) { 戻る { fireMdxByDefault: false, isGlobalFilter_: 真、 classID: viz.event.SetSelectionEvent, コンストラクター: 関数 w(A,B,z){x.call(this,B,z);this.classID="viz.event.SetSelectionEvent";this.selection=A}, キャプション: 関数 (){if(this.selection&&this.selection.length>0){return ic3.asMdxSet(this.selection,"name",false,true)}else{return""}}, asMdx: 関数 (){if(this.selection&&this.selection.length>0){return ic3.asMdxSet(this.selection,"uniqueName")}else{return null}}, asFilterInitialSelection: function (){if(this.selection&&this.selection.length>0){return ic3.arrayProps(this.selection,"uniqueName")}else{return""}}, getSelectedItems: function (){return this.selection}, isSelectionEvent: function (){return true}, isGlobalFilter: function (){return this.isGlobalFilter_}, isEmptyEvent: function (){return false}, 値: 関数 (){return this.asMdx()}, asSet: function (){return this.asMdx().replace(/^\(/,"{").replace(/\)$/,"}")}, asDefaultValue: function (){return this.asFilterInitialSelection()}, asReportParam: function (){var H={};H.rpe=1;if(this.isEmptyEvent()){H.nil=true}else{var A=this.caption();if(A!== null){H.dft=A}var D=this.value();if(D!==null){H.val=D}var z=this.asMdx();if(z!==null) {H.mdx=z}var x=this.asFilterInitialSelection();if(x!==null){H.fis=x}if(this.isSelectionEvent()){var B=this.getSelectedItems();if (B!==null){H.sel=B}}}return H}, 選択: sel.servicenumbers }; }
MDX @{filter} で「フィルター」を使用すると、フィルターがクエリに適用されます。しかし、フィルターウィジェットで「do set Selection」として使用すると、選択が適用されず、何も選択されません。
誰かがこれを機能させる方法を提案していますか?