= チケットクエリ = #TracTicketQueries
[[TracGuideToc]]

[wiki:TracReports レポート] に加えて、 Trac は ''カスタムチケットクエリ'' があります。 ''カスタムチケットクエリ'' は、ある一定の基準を満たすチケットのリストを表示するのに使用されます。

カスタムクエリを設定・実行するために、ナビゲーションバーの ''チケットを見る'' (英語版では ''View tickets'') モジュールに切り替え、 ''カスタムクエリ'' (英語版では ''Custom Query'') のリンクを選択します。

== フィルタ == #Filters

最初にクエリのページを開くと、デフォルトのフィルタが適用され、自分に関連するチケットの一覧が表示されます:
 * ログインしている場合、自分が担当者 ("assigned to") になっている、オープンチケットが表示されます
 * ログインしていない場合でも、個人設定 ("Prefernces") で名前やメールアドレスを設定している場合は、自分が設定した名前やメールアドレスが、関係者 ("CC") に含まれているオープンチケットが表示されます
 * ログインしておらず、個人設定も保存していない場合、すべてのオープンチケットが表示されます

現在のフィルタは検索条件の左側にある "-" (マイナス) のラベルのボタンをクリックすることにより削除することができます。新しいフィルタは、フィルタボックスの下にあるプルダウンリストから追加することができます ('And' 条件は左側に、 'Or' 条件は右側に配置されています)。テキストボックスやオプションのプルダウンメニューのフィルタを ''or'' 条件として、いくつでも追加することができます。

フィルタボックスの下のフィールドを使用することによって、結果をフィールドごとにグループ化したり、各チケットの完全な説明を表示することができます。

一度フィルタを編集したら、 ''更新'' (英語版では ''Update'') ボタンで結果を更新することができます。

== チケットナビゲーション == #NavigatingTickets
クエリの結果の一つをクリックすると、そのチケットが表示されます。メインメニューバーの ''次のチケット'' (英語版では ''Next Ticket'') または ''前のチケット'' (英語版では ''Previous Ticket'') というリンクをクリックすることによって、クエリの結果を行き来することができます。 ''クエリに戻る'' (英語版では ''Back to Query'') というリンクをクリックすると、クエリのページに戻ります。

あなたは安全にチケットの編集をすることができ、編集を保存した後に ''次のチケット/前のチケット/クエリに戻る'' の各リンクを使用して、結果を行き来することができます。クエリに戻ったとき、 ''編集済みのチケット'' はイタリックのテキストで表示されます。チケットの 1 つが編集され、 [[html(<span style="color: grey">クエリの基準を満たさなくなった</span>)]] 場合、テキストはグレーで表示されます。 '''クエリの基準を満たす新しいチケットが登録される''' と、テキストが太字で表示されます。

クエリの結果は ''更新'' ボタンを押すごとにステータスがクリアされリフレッシュされます。

== クエリを保存する == #SavingQueries

Trac ではクエリをレポートモジュールからアクセスできる名前付きクエリとして保存することができます。クエリを保存するには ''更新'' (英語版では ''Update'') ボタンで表示を更新してから、画面の下の方にある ''このクエリを保存'' (英語版では ''Save query'') ボタンを押下します。
また、下記の方法で Wiki のコンテンツとしてクエリへの参照を保存することもできます。

''Note:'' 下記の方法で使用するクエリを簡単に組み立てるには、カスタムクエリモジュールでクエリを組み立ててテストしてから、 ''このクエリを保存'' を押下します。すると、すでに組み立てられたクエリ文字列が得られるので、余計な改行文字を削除すると、そのまま使うことができます。

''Note:'' 保存したクエリをレポートのリストに組み込むには '''REPORT_CREATE''' 権限が必要です。この権限が与えられたユーザのみ ''このクエリを保存'' ボタンを押下することができます。レポートを作成する権限を持っていない場合は、以下の方法でクエリを保存することができます。


=== TracLinks を使用する === #UsingTracLinks

クエリを保存しておくと、後から保存したクエリを再度実行できます。保存は Wiki ページにクエリへのリンクを作成することで行います。
{{{
[query:status=new|assigned|reopened&version=1.0 1.0 での未解決のチケット]
}}}

表示内容:
  [query:status=new|assigned|reopened&version=1.0 1.0 での未解決のチケット]

ここでは、検索内容を特定するとても単純なクエリ言語が使用されています。 ([wiki:TracQuery#QueryLanguage クエリ言語] 参照)

あるいは、クエリを実行した画面の URL をコピーし、 `?` 以降の文字列 (訳注: URL のパラメータ部) を Wiki リンクに貼り付けることができます:
{{{
[query:?status=new&status=assigned&status=reopened&group=owner 担当者別着手済みチケット]
}}}

表示内容:
  [query:?status=new&status=assigned&status=reopened&group=owner 担当者別着手済みチケット]

=== `[[TicketQuery]]` マクロを使用する === #UsingtheTicketQueryMacro

[trac:TicketQuery TicketQuery] マクロは条件にマッチするチケットの一覧を表示します。 WikiFormatting が使用できるいずれの場所でも使用できます。

例:
{{{
[[TicketQuery(version=0.6|0.7&resolution=duplicate)]]
}}}

表示内容:
  [[TicketQuery(version=0.6|0.7&resolution=duplicate)]]

[wiki:TracQuery#UsingTracLinks query: Wiki リンク] 同様、このマクロのパラメータは [wiki:TracQuery#QueryLanguage クエリ言語] に規定されるルールに基づいたクエリ文字列で記述しなければなりません。単一チケットのリンクや説明文を表示させることもできます。
{{{
[[TicketQuery(id=123)]]
}}}

表示内容:
  [[TicketQuery(id=123)]]

チケットのサマリを表示しないよりコンパクトな表示も利用可能です:
{{{
[[TicketQuery(version=0.6|0.7&resolution=duplicate, compact)]]
}}}

表示内容:
  [[TicketQuery(version=0.6|0.7&resolution=duplicate, compact)]]

クエリにマッチした件数だけを取得したいのならば、 ``count`` パラメータを使用してください。

{{{
[[TicketQuery(version=0.6|0.7&resolution=duplicate, count)]]
}}}

表示内容:
  [[TicketQuery(version=0.6|0.7&resolution=duplicate, count)]]

=== ''table'' 形式でカスタマイズする === #Customizingthetableformat
table 形式 (''format=table'') では、 ''col=<field>'' を使用することで列の表示をカスタマイズすることができます。複数のフィールドを指定したい場合、表示する順に列をパイプ (`|`) 区切りで指定します:

{{{
[[TicketQuery(max=3,status=closed,order=id,desc=1,format=table,col=resolution|summary|owner|reporter)]]
}}}

表示内容:
[[TicketQuery(max=3,status=closed,order=id,desc=1,format=table,col=resolution|summary|owner|reporter)]]

==== 全行表示 ==== #Fullrows
''table'' 形式では、以下の例のように ''rows=<field>'' を使用することで、全行表示を行うことができます:

{{{
[[TicketQuery(max=3,status=closed,order=id,desc=1,format=table,col=resolution|summary|owner|reporter,rows=description)]]
}}}

表示内容:
[[TicketQuery(max=3,status=closed,order=id,desc=1,format=table,col=resolution|summary|owner|reporter,rows=description)]]


=== クエリ言語 === #QueryLanguage

`query:` TracLinks と `[[TicketQuery]]` マクロは、いずれもクエリのフィルタを特定するために小さな "クエリ言語" を使用します。基本的に、フィルタはアンパサンド (`&`) で区切られます。それぞれのフィルタはチケットの各フィールドの名前、オペレータ、1つ以上の値で構成されています。値が複数ある場合はパイプ (`|`) で区切り、フィルタがいずれかの値にマッチすればいいことを意味しています。 `&` や `|` の文字そのものを値に含めたい場合、バックスラッシュ (`\`, 環境によっては円マーク) でエスケープしてください。

オペレータ一覧:
|| '''`=`''' || フィールドの内容はいずれかの値と完全に一致する ||
|| '''`~=`''' || フィールドの内容は1つ以上の値を含む ||
|| '''`^=`''' || フィールドの内容が値の一つで始まる ||
|| '''`$=`''' || フィールドの内容が値の一つで終了する ||

これらのオペレータは否定の意味があります:
|| '''`!=`''' || フィールドの内容がいずれの値にも一致しない ||
|| '''`!~=`''' || フィールドの内容がいずれの値も含んでいない ||
|| '''`!^=`''' || フィールドの内容がいずれの値でも始まらない ||
|| '''`!$=`''' || フィールドの内容がいずれの値でも終わらない ||

日付フィールドである `登録日` (英語版では `created`) と `更新日` (英語版では `modified`) は `=` オペレータに二つの日付を、二つのドット (`..`) で区切って指定することができます。日付の範囲の片方が空の場合、空の方向には条件を指定しないことを意味します。また、日付パーサは自然言語に似た構文を解釈できます。たとえば "3 weeks ago", "last month", "now" などです。 Bugzilla スタイルの "1d", "2w", "3m", "4y" なども、それぞれ1日、2週間、3ヶ月、4年と解釈できます。クエリ文字列に指定する場合、これらの構文からは空白文字を除外して指定してください。
|| '''`created=2007-01-01..2008-01-01`''' || 2007年に登録されたチケットへのクエリ ||
|| '''`created=lastmonth..thismonth`''' || 前月に登録されたチケットへのクエリ ||
|| '''`modified=1weekago..`''' || 1週間以内に更新されたチケットへのクエリ ||
|| '''`modified=..30daysago`''' || 30日間更新されていないチケットへのクエリ ||

----
See also: TracTickets, TracReports, TracGuide
