カスタムインタラクティブフィルターの例
管理者は、カスタムのインタラクティブ フィルター ウィジェットを作成して、ダッシュボードに高度なフィルター オプションを提供することができます。
ユースケース
この例では、タスクテーブルまたはその子テーブルのレポートをフィルタリングするカスタムフィルターを作成する方法について詳しく説明します。フィルターでは、現在のユーザーが発信者であるレコードのみが表示されます。フィルターにより、2 つのボタンがユーザーに公開されます。1 つはフィルターを追加するボタンで、1 つはフィルターを削除するボタンです。
カスタムインタラクティブフィルターウィジェットの作成
ダッシュボードに高度なフィルタリングオプションを提供するカスタムインタラクティブフィルターウィジェットを作成します。
始める前に
必要なロール:admin
手順
次のタスク
フィルタリングロジックを定義します。
カスタム日付/時刻フィルターオプションの作成
標準的な日付/時刻フィルターオプションの選択がニーズを満たさない場合は、カスタムオプションを作成できます。
始める前に
次の手順に従って、ダッシュボードで使用する日付/時刻ベースのインタラクティブフィルターに含めることができるカスタム日付/時刻フィルターオプションを作成します。この例では、2 週間 2 週間の期間のフィルターオプションを作成します。
必要なロール:admin。
手順
フィルタリングロジックの定義 - 例
インタラクティブフィルターを作成したら、フィルタリングロジックを追加します。
始める前に
必要なロール: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>