期限日のフィルタについて

276 views
Skip to first unread message

sat

unread,
Oct 22, 2008, 12:25:31 AM10/22/08
to Redmine Users (japanese)
はじめまして。よろしくお願いします。

redmineのフィルタを使用して気づいたのですが
例えば「更新日」であれば問題ないことが「期限日」だと動作がおかしいようです。

「残日数がこれより多い」と「残過日数がこれより少ない」が逆の"ような”動きだったり
「今日」の結果がが明日だったり、「日前」+「1」が今日だったり・・・

このような現象は私だけでしょうか?

ubuntu 8.04
ruby 1.8.6
redmine v0.7.3 r1921

fmkt

unread,
Oct 22, 2008, 1:29:26 AM10/22/08
to Redmine Users (japanese)
こんにちは。

動作の確認だけしてみました。

たしかに 残日数がこれより多い がおかしい気がします。
2008/10/24 が期限なのに残数7日 でフィルタに引っかかってました。

テストパターンは少ないですが、"今日" に関してはこちらでは正しいようでした。

ちなみにRedmineが動作しているマシンの時計は正しいでしょうか?
関係あるのかわかりませんがタイムゾーンの設定とか。

これからソースを確認してみます。
何かあればまた報告します。

では。

sat

unread,
Oct 22, 2008, 1:52:17 AM10/22/08
to Redmine Users (japanese)
さっそくのレスポンスありがとうございます。

私も最初サーバーの時間かなと思ったのですが、dateの結果は問題ないようです。
$ date
2008年 10月 22日 水曜日 14:35:41 JST

先も書きましたが、「更新日」のフィルタは『今日』も問題ありません。
今ふと気づいて、redmine.jpのデモサイトで確認したところ
私と違い「期限日」の『今日』は問題ないようですが、
「日前」+「1」はやはり期限が今日の一覧が出ます。

どうやら『今日』の結果がおかしいのは私だけのようなので再度また確認します。
それでは、よろしくお願いします。

fmkt

unread,
Oct 22, 2008, 1:55:17 AM10/22/08
to Redmine Users (japanese)
またまたこんにちは。

発行されるSQLのクエリとか調べて確かにおかしいよなあと思っていろいろ調べてたら、
ここがおかしいのではないでしょうか。

lang/ja.yml

label_in_less_than: 残日数がこれより多い
label_in_more_than: 残日数がこれより少ない

訳が逆のような気がします。
更新日では残日数のフィルタがないため正常なのだと思います。

一応おかしい調べたクエリとかを記載。
残日数がこれより多い 7日
(issues.due_date BETWEEN '2008-10-22 00:00:00' AND '2008-10-30
00:00:00')
post_param: "due_date"=>"<t+"

残日数がこれより少ない 7日
(issues.due_date >= '2008-10-29 00:00:00')
post_param: "due_date"=>">t+"

残日数 7日
(issues.due_date BETWEEN '2008-10-29 00:00:00' AND '2008-10-30
00:00:00')
post_param: "due_date"=>"t+"

今日
(issues.due_date BETWEEN '2008-10-22 00:00:00' AND '2008-10-23
00:00:00')
post_param: "due_date"=>"t"

では。


On 10月22日, 午後2:29, fmkt <fmkt.ne...@gmail.com> wrote:
> > redmine v0.7.3 r1921- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

fmkt

unread,
Oct 22, 2008, 2:06:48 AM10/22/08
to Redmine Users (japanese)
よくよく見ると。

> 今日
> (issues.due_date BETWEEN '2008-10-22 00:00:00' AND '2008-10-23
> 00:00:00')
> post_param: "due_date"=>"t"

"今日" は今日から明日までのを探していますね。
こちらの運用環境でたまたま明日が期限になってるチケットがないから出てこなかっただけっぽいですね。

気になるならQuery#statement の
case operator_for field
で、クエリを指定しているので変更しては如何でしょうか?

"今日" を 今日だけ にするならこんな感じに
# 動作確認してないので本当にこれでいいのか確証がありませんが(ぉ

Index: app/models/query.rb
===================================================================
--- app/models/query.rb (リビジョン 1941)
+++ app/models/query.rb (作業コピー)
@@ -341,7 +341,7 @@
when "t+"
sql = sql + "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" %
[connection.quoted_date((Date.today + v.first.to_i).to_time),
connection.quoted_date((Date.today + v.first.to_i + 1).to_time)]
when "t"
- sql = sql + "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" %
[connection.quoted_date(Date.today.to_time),
connection.quoted_date((Date.today+1).to_time)]
+ sql = sql + "#{db_table}.#{db_field} = '%s' " %
[connection.quoted_date(Date.today.to_time)]
when "w"
from = l(:general_first_day_of_week) == '7' ?
# week starts on sunday


では。

sat

unread,
Oct 22, 2008, 7:49:12 AM10/22/08
to Redmine Users (japanese)
いろいろわからないながら見てみたのですが
調べていただいたクエリの「残日数~」ですがquery.rbを見ると

"<t+" => :label_in_less_than,
">t+" => :label_in_more_than,
~略~
when ">t+" sql = sql + "#{db_table}.#{db_field} >= '%s'"
% connection.quoted_date((Date.today + v.first.to_i).to_time)
when "<t+" sql = sql + "#{db_table}.#{db_field} BETWEEN
'%s' AND '%s'" % [connection.quoted_date(Date.today.to_time),
connection.quoted_date((Date.today + v.first.to_i + 1).to_time)]

となっています。なにかが逆になっているような気がして混乱しています。

また、「残日数がこれより少ない」を使用すると今日締め切り分が出ないのですが
どのようにすればよいでしょうか?
query.rb を、いじってみたのですが上手くいかなくて。
(いじっているところが見当違いなのかもしれませんが・・・orz)

質問ばかりですいません。
よろしくお願いします。

coral_re...@yahoo.co.jp

unread,
Oct 29, 2008, 6:03:24 AM10/29/08
to redmine-...@googlegroups.com
横からすみません。
fmktさんの修正で、「期限日」に関するフィルタ結果はよくな
りました。

ただし、
「作成日」や「更新日」の「今日」と、
カスタムフィールドで定義した「発見日」の「今日」
のデータについてはフィルタ表示されないままでした。
(修正前のソースでも表示されません)

これらは、また違った箇所の修正が必要なのでしょうか?

ご存知の方がいらっしゃいましたら教えていただけないでしょ
うか?

fmkt

unread,
Oct 29, 2008, 6:43:10 AM10/29/08
to Redmine Users (japanese)
こんばんは。

原因とかはわかりませんが、とりあえず報告。

> 「作成日」や「更新日」の「今日」と、
> カスタムフィールドで定義した「発見日」の「今日」
> のデータについてはフィルタ表示されないままでした。
> (修正前のソースでも表示されません)
カスタムフィールドのは試していませんが、更新日と作成日に関しては
修正前のソースで表示されました。

表示されないときのログとかあれば、出せる範囲で教えていただけますか?

では。

coral_re...@yahoo.co.jp

unread,
Oct 29, 2008, 9:13:42 PM10/29/08
to redmine-...@googlegroups.com
おはようございます。
さっそくコメントありがとうございます。

> > 「作成日」や「更新日」の「今日」と、
> > カスタムフィールドで定義した「発見日」の「今日」
> > のデータについてはフィルタ表示されないままでした。
> > (修正前のソースでも表示されません)
> カスタムフィールドのは試していませんが、更新日と作成日
に関しては
> 修正前のソースで表示されました。

について、確認いたしました。
当方の確認の過程で間違えがあり、修正前のソースで表示され
ました。

お手数おかけしてしまい、すみませんでした。

Reply all
Reply to author
Forward
0 new messages