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