QA #747
未完了
親チケットに表示する子チケットの進捗パーセンテージを小数点以下切り捨てで表示して欲しい
Shibasaki Rieko さんが6年以上前に追加.
6年以上前に更新.
説明
■現象/要望
一つの親チケットに対して沢山の子チケットを登録している時に、子チケットが大方完了して
全体の進捗率が99.5%になると、親チケットの進捗が100%と表示されて
あたかも作業が全て終了したかの様に見えてしまいます。
小数点以下を四捨五入で計算している様なのですが、切り捨ての方がありがたいです。
対応方法はありますか。
残件あるのに100%と表示するのは誤認招きますね。(子チケットで200件超える場合ですが)
進捗率は親チケット自体にintで持っており(done_ratio 100%->100 )、
チケット編集保存に再計算されます。
下記箇所を変更すれば良いかと思います。(動作確認はしていません)
下記変更後に、親チケットを編集等で再計算させないと反映されません。
app/model/issue.rb
def recalculate_attributes_for(issue_id)
..
progress = done / (average * children.count)
p.done_ratio = progress.round
最後のround(四捨五入)を、floor(小さい方の整数へ変換)に変更
この変更により、進捗が0.5%以上1%未満の場合の表示が 1%→0%に変わりますが、
0.5%未満は従来から0ですし、問題は少ないでしょう。(数値が変わること以外)
これが問題になる場合には、progressの範囲により丸め処理を変更すれば良いこと。
見積時間を利用している場合、
浮動小数点演算が途中に入っているため、
算出した値が100になるべきところ、誤差で99.999999999 の様になる可能性があります。
この場合、roundで四捨五入していれば100%になりますが、floorで切り捨てすると99%になります。
(進捗率は%単位の整数値で保持している)
ということで
progress = done / (average * children.count)
p.done_ratio = (progress+0.000001).floor
の様に処理する方が良さそうです。
他の形式にエクスポート: Atom
PDF