2012-01-18 19 views
1

レポート生成の進捗状況を示すプログレスバーを実装する必要があります。問題は、世代によって生成されたイベントに基づいてレポートの進行の割合を表す必要があります。イベントの総量、レポートの生成には次のイベント(フェーズ)を送る例えばので、この例では、合計3タスクと6つのイベントであり、私はタスクの総数を知らないイベントに基づいて進行の割合を計算する

- Starting Report generation 
- Start Query execution 
- End Query execution 
- Start Report Rendering 
- End Report Rendering 
- End Report Generation 

しかし、私はイベントの総数が2回のタスクの数を尊重していることを知っています。

どのイベントが存在し、どれくらいがであるのかわかりませんが、プログレスバーを使ってプログレッションを0から100までの数字で表す必要があります。

どのように計算できますか?どのような進行を表すための最良の方法は?

+2

あなたは基本的に何も知らず、進歩率を得たいと思っています。プログレスバーの使用を本当に理解していますか?それはあなたがすでに何かを知っていることを意味します –

+0

おそらく数学の数式を使って進行を表すことができますが、それは簡単ではないことは分かっていますが、もし簡単だったら、ここでStackOverflowで質問していないでしょう:) – aleroot

+0

できません。 10のイベントがある場合はどうなりますか? 12のイベントがある場合はどうなりますか?プログレスバーを使用するには、決定的な数値が必要ではありません。 –

答えて

3

おそらくあなたができることは、実際の進捗バ​​ーのアイデアを放棄し、代わりに不確定な進捗インジケータを訴えることです。デスクトップシステムでは、このシナリオでは通常、「マーキー」または「バウンス」プログレスバーが使用されます。

もう1つの選択肢 - 進歩的なものを実際に表示したい場合は、ヒューリスティックを採用し、部分的に偽装することです。あなたは本当にここに多くの情報を持っていないので、かなり賢明でなければならず、実際のケースで多くのテストが必要です。ここにいくつかの提案があります:

  • 現在処理中のタスクのネストレベルに基づいて進捗を増やしてください。基本的には、タスクが細かくなればなるほど、全体的な進歩に寄与することが少ないという考え方です。タスクネストというのは、もちろん、あなたのStartEndメッセージのブラケッティングから暗示された階層を意味します。

  • 予想できる最大タスク数を把握し、完了までにどれくらい時間がかかったかに基づいて進行速度を調整します。たとえば、500を超えないタスクを想定していて、300を処理したがすでに80%の進捗状況が表示されている場合は、それ以上の増加を真剣に遅らせる必要があります。同様に、遅れている場合は、進捗を段階的に拡大することが適切です。

  • 大きなジャンプを避ける。あなたが急速に追いつく必要がある場合でも、前のポイントで説明したように、徐々に時間をかけて行います。具体的な例を挙げると、10%ずつインクリメントしてから10秒間静止させるのではなく、10秒間に1%ずつ10ずつインクリメントします。

多分あなたが使用しようとする可能性のあるテクニックがもっとあります。過度に、それは非常に興味深いUXと数学に関連する問題ですが、あなたはその上での認知努力を費やすことが面倒であるかどうかを検討するべきです。私は、ほとんどの場合、不確定な進歩は絶対にうまくいくと考えています。

1

基本的に進行状況バーが必要なのは、基本的に追跡を進めようとしていないためです。あなたができることは、マーキープログレスバー(無期限に進むプログレスバー)を使用して、アプリケーションがまだ進行中であるかどうか、そして上または下にあることをユーザに示すことです。上記のタスクには編集できないテキストボックスがあります。 。

+0

あなたは最初にタスクの総数がわからない場合、進行の割合を計算することは不可能であると言いますか? – aleroot

+2

@aleroot私はそれを見ている方法...それは100/x =いくつかの具体的な価値のようなことをしたいと思うようであり、xは知られていません...私はそれが行われるとは思わない。おそらくあなたができることは、タスクの量が高くなることができず、いつもあなたがそれをする最悪のシナリオを考え出すことです。したがって、最悪の場合のシナリオでタスクの量が8であり、決して8を超えることはできないと確信している場合は、その値を使用して全体の進行状況を追跡できます。 – npinti