カスタムインタラクティブフィルターの例
アドミニストレーターは、カスタムのインタラクティブフィルターウィジェットを作成して、ダッシュボードに高度なフィルタリングオプションを提供できます。
ユースケース
この例では、タスクテーブルまたはその子テーブルのレポートをフィルタリングするカスタムフィルターを作成する方法について詳しく説明します。フィルターには、現在のユーザーが発信者であるレコードのみが表示されます。フィルターは、2 つのボタン (1 つはフィルターを追加するためのボタン、もう 1 つはフィルターを削除するためのボタン) をユーザーに公開します。
カスタムインタラクティブフィルターウィジェットの作成
カスタムインタラクティブフィルターウィジェットを作成して、ダッシュボードに高度なフィルタリングオプションを提供します。
始める前に
必要なロール:admin
手順
次のタスク
フィルタリングロジックを定義します。
フィルタリングロジックの定義 - 例
インタラクティブフィルターを作成したら、フィルタリングロジックを追加します。
始める前に
必要なロール:admin
手順
タスクの結果
カスタムインタラクティブフィルターは、ダイナミックコンテンツブロックを追加したダッシュボードに表示されます。これは、[ ウィジェットを追加 ] パネルのコンテンツブロックのリストにも表示されます。
カスタム日付/時刻フィルターオプションの作成
日付/時刻フィルターオプションの標準選択がニーズに合わない場合は、カスタムオプションを作成できます。
始める前に
次の手順に従って、ダッシュボードで使用するために日付/時刻ベースのインタラクティブフィルターに含めることができるカスタムの日付/時刻フィルターオプションを作成します。この例では、2 週間、つまり 2 週間の期間のフィルターオプションを作成します。
必要なロール:admin
手順
カスタムインタラクティブフィルターの例 - 複数のレポート
カスタムインタラクティブフィルターを使用して、異なるテーブルを使用して複数のレポートをフィルタリングできます。単一のテーブルまたは複数のテーブルのインタラクティブフィルターを公開するには、2 つの異なる API があります。この例では、カスタムインタラクティブフィルターを使用して、インシデントテーブルと問題テーブルのレポートをアサイン先グループ別にフィルタリングします。
複数テーブルのカスタムインタラクティブフィルターについて
- 1 つのテーブルにのみ適用されるカスタムインタラクティブフィルターは、関数 DashboardMessageHandler.publishFilter() を使用します。
- 複数のテーブルに適用されるカスタムインタラクティブフィルターは、関数 DashboardMessageHandler.publishMessage() を使用します。
- 公開する前に、 SNC.canvas.interactiveFilters.setDefaultValue() 関数へのインタラクティブなフィルター呼び出しが必要です。
- フィルターをリセットする前に、 SNC.canvas.interactiveFilters.removeDefaultValue() 関数または DashboardMessageHandler.removeFilter() 関数のいずれかを呼び出す必要があります。
publishFilter() メソッドを複数回呼び出すカスタムインタラクティブフィルターは、関連するレポートを同じ回数だけリフレッシュします。このメソッドを繰り返し呼び出すと、パフォーマンスの問題が発生する可能性があります。
複数のテーブルにカスタムインタラクティブフィルターを適用する方法
次の例では、インシデント [incident] テーブルと問題 [problem] テーブルのアサイン先グループ別にレポートをフィルタリングします。
DashboardMessageHandler.publishMessage() は、複数のフィルターをアレイとして受け入れます。フィルターアレイをビルドし、DashboardMessageHandler.publishMessage([filters]) を呼び出す DashboardMessageHandler の単一のインスタンスを作成します。このメソッドは、ウィジェットを 1 回だけ更新します。
<?xml version="1.0" encoding="UTF-8"?>
<j:jelly xmlns:j="jelly:core" xmlns:g="glide" xmlns:g2="null" xmlns:j2="null" trim="false">
<script>
var my_dashboardMessageHandler = new DashboardMessageHandler("my_unique_id");
function publishMultipleFilter() {
<!-- Mutliple filters can be passed as an array -->
var finalFilter = [{"table":"incident","filter":"assignment_group=6fcd3b573b331300ad3cc9bb34efc447"}, {"table":"problem","filter":"assignment_group=6fcd3b573b331300ad3cc9bb34efc447"}];
<!-- call setDefaultValue first -->
SNC.canvas.interactiveFilters.setDefaultValue({
id: my_dashboardMessageHandler._unique_id,
filters: finalFilter,
}, false);
<!-- then call Publishmessage to publish filters-->
my_dashboardMessageHandler.publishMessage(finalFilter);
}
function clearFilter() {
SNC.canvas.interactiveFilters.removeDefaultValue(my_dashboardMessageHandler._unique_id, false);
my_dashboardMessageHandler.removeFilter();
}
</script>
Example of a filter that filters incident and problem table where the assignment group is Problem solving
<input id="allTasks" type="button" value="All" onclick="clearFilter();" />
<input id="onlyMine" type="button" value="Assignment group is [Problem solving]" onclick="publishMultipleFilter();" />
</j:jelly>