2011-06-24 9 views
2

jQueryのソート可能なプラグインを使用して行を並べ替えることができるテーブル(アイテムのキューを表す)があります。ユーザーはキューを並べ替えることができ、更新された順序でサーバーを正常に保存できます。サーバとブラウザの間でキューの同期を維持するにはどうすればよいですか?

私が直面している課題は、サーバーが定期的にキューの一番上にあるアイテムを取り出して処理し、それをキューの一番下に移動することです。このような状況が発生した場合、ブラウザで表示される順序は古くなり、順序を変更しようとするとインデックスがすべて乱されます。

私はこの問題を解決するためにいくつかの解決策を考え出しましたが、どのようなやりとりがユーザビリティの観点から意味をなさかはわかりません。私はUIでドラッグイベントを検出し、最初にサーバー上の更新をチェックすることを検討しましたが、私がページをリフレッシュすると、ユーザーが途中であったドラッグが中断されます。

私はこの情報をポーリングしてから、更新が発生する数秒前にドラッグ機能をロックし、次に注文を更新してドラッグ機能をロック解除すると考えました。

これまで誰かが同様の問題を解決したのか不思議です。どんなアイデアや指導も大歓迎です。

答えて

1

この問題の通常の方法は、Ajaxを使用してページを部分的にリフレッシュすることです(約10秒程度)。クライアントの状態が古くなった場合は、ユーザーに通知して、サーバーの状態と同期させるためにクライアントの状態を回復する必要があります。回復は複数の方法で達成できます。最も簡単なのは、クライアントの変更を拒否し、サーバーの状態で更新することです。より難しいのは、クライアントの状態をサーバーとマージしようとすることです。これは、より使いやすい方法です。

+0

良いアイデア。私はこの方向に行くと思う。私はAjaxコールでテーブルの順序を更新するために定期的にポーリングを行い、次にリオーダでドラッグを終了したときにクライアントの状態がサーバーと同期していないかどうかを確認します。同期がとれていない場合は、注文が変更されてからサーバー上で注文が変更されたことを示す警告が表示されます。変更を破棄し、サーバーの注文に合わせてブラウザを再同期します。ありがとう! –

1

定期的なページングが必要ですが、何も変更されていない場合は、おそらくテーブルの更新をしたくないと付け加えたいと思います。おそらくあなたのレコードに "最後に更新された"フィールドを保存し、最後に更新されたページの最後の試行が解決策であるかどうかを確認します。

関連する問題