Koichiro Ohba
koich****@meado*****
2004年 1月 28日 (水) 15:53:20 JST
大場です。 MoBo いつも便利に利用させてもらってます。ありがとうございます。 いくつか要望が溜まってきたので、フィードバックしていきたいと思います。 まず、現状の月表示のページ構成について要望があります。サンプルでもそう であるように仮想口座は、利用しているユーザー個人の総計であることが多い と思います。したがって常に注意を払いたい項目となっているのですが、各口 座の残高に埋もれて見難いです。すぐ上にある口座の合計ともリンクしないの に並べてあるために余計に混乱しやすいと思います。仮想口座は別枠にしたほ うがよいのではないでしょうか。 また、頻繁に見る項目について考えると私の場合は、仮想口座>各口座の残高 >支出合計>収入合計の順番です。支出合計、収入合計は月末にチェックする 程度の使い方をしています。UIの観点から見ると左上から右下に向かって視線 を動かすのが自然なので、前述のような順番で配置すると嬉しいのですがいか がでしょうか。 もうひとつ入力フォームの配置場所について。現状では月の収支履歴の後に入 力フォームがありますが、月末など履歴がたまってくると履歴の表示に時間が かかり入力フォームがなかなか表示されないため、連続入力するときのユーザ ビリティを落としているように思います。また、入力のたびにスクロールを強 要されるために労力が増えて入力するモチベーション維持の弊害にもなってい ます。そこで履歴の前に入力フォームを表示するのが良いと思います。 参考までに上記変更をしたパッチを添付します。入力フォームを上にもってく ることでかなり軽快に入力できるようになりました。検討よろしくお願いしま す。 -------------- next part -------------- Index: skel/month.rhtml =================================================================== RCS file: /cvsroot/mobo/mobo/skel/month.rhtml,v retrieving revision 1.24 diff -c -r1.24 month.rhtml *** skel/month.rhtml 9 Nov 2003 05:52:56 -0000 1.24 --- skel/month.rhtml 28 Jan 2004 06:45:22 -0000 *************** *** 2,17 **** <table> <tr valign="top"> <td> <table class="total"> ! <caption class="total"><%= "#{year}/#{month}" %>?????????</caption> <tr> ! <th></th><th>(??????)</th><th>(??????)</th> </tr> ! <% t1 = 0; t2 = 0; genre_expense.each do |genre| %> <tr> ! <th class="diary"><a href="<%=****@conf***** %>?genre=<%= CGI::escape("e:#{genre}") %>&date=<%= year + month %>"><%= genre %></a></th> ! <td class="diary" align="right"><% p = -genre_total( year + month, "e:#{genre}", nil, account ); t1 += p %><%= p.to_disp_str %></td> ! <td class="diary" align="right"><% p = -genre_total( year + month, "e:#{genre}", 1, account ); t2 += p %><%= p.to_disp_str %></td> </tr> <% end %> <tr> --- 2,34 ---- <table> <tr valign="top"> <td> + <% if vaccount_name.length > 0 %> + <table class="total"> + <caption class="total">?????????????????????</caption> + <tr> + <th>????????????</th><th>(??????)</th><th>(?????????)</th> + </tr> + <% vaccount_name.each do |vaccount| %> + <tr> + <th class="diary"><a href="<%=****@conf***** %>?account=<%= CGI::escape( vaccount ) %>&date=<%= year + month %>"><%= vaccount %></a></th> + <td class="diary" align="right"><%= balance( Time.now.strftime( '%Y%m%d' ), vaccount ).to_disp_str %></td> + <td class="diary" align="right"><%= grand_total( vaccount ).to_disp_str %></td> + </tr> + <% end %> + </table> + <% end %> + </td> + <td> <table class="total"> ! <caption class="total">??????????????????</caption> <tr> ! <th></th><th>(??????)</th><th>(?????????)</th> </tr> ! <% t1 = 0; t2 = 0; account_list.each do |account| %> <tr> ! <th class="diary"><a href="<%=****@conf***** %>?account=<%= CGI::escape(account) %>&date=<%= year + month %>"><%= account %></a></th> ! <td class="diary" align="right"><% p = balance( Time.now.strftime( '%Y%m%d' ), account ); t1 += p %><%= p.to_disp_str %></td> ! <td class="diary" align="right"><% p = grand_total( account_regexp( account ) ); t2 += p %><%= p.to_disp_str %></td> </tr> <% end %> <tr> *************** *** 23,37 **** </td> <td> <table class="total"> ! <caption class="total"><%= "#{year}/#{month}" %>?????????</caption> <tr> <th></th><th>(??????)</th><th>(??????)</th> </tr> ! <% t1 = 0; t2 = 0; genre_income.each do |genre| %> <tr> ! <th class="diary"><a href="<%=****@conf***** %>?genre=<%= CGI::escape("i:#{genre}") %>&date=<%= year + month %>"><%= genre %></a></th> ! <td class="diary" align="right"><% p = genre_total( year + month, "i:#{genre}", nil, account ); t1 += p %><%= p.to_disp_str %></td> ! <td class="diary" align="right"><% p = genre_total( year + month, "i:#{genre}", 1, account ); t2 += p %><%= p.to_disp_str %></td> </tr> <% end %> <tr> --- 40,54 ---- </td> <td> <table class="total"> ! <caption class="total"><%= "#{year}/#{month}" %>?????????</caption> <tr> <th></th><th>(??????)</th><th>(??????)</th> </tr> ! <% t1 = 0; t2 = 0; genre_expense.each do |genre| %> <tr> ! <th class="diary"><a href="<%=****@conf***** %>?genre=<%= CGI::escape("e:#{genre}") %>&date=<%= year + month %>"><%= genre %></a></th> ! <td class="diary" align="right"><% p = -genre_total( year + month, "e:#{genre}", nil, account ); t1 += p %><%= p.to_disp_str %></td> ! <td class="diary" align="right"><% p = -genre_total( year + month, "e:#{genre}", 1, account ); t2 += p %><%= p.to_disp_str %></td> </tr> <% end %> <tr> *************** *** 43,57 **** </td> <td> <table class="total"> ! <caption class="total">??????????????????</caption> <tr> ! <th></th><th>(??????)</th><th>(?????????)</th> </tr> ! <% t1 = 0; t2 = 0; account_list.each do |account| %> <tr> ! <th class="diary"><a href="<%=****@conf***** %>?account=<%= CGI::escape(account) %>&date=<%= year + month %>"><%= account %></a></th> ! <td class="diary" align="right"><% p = balance( Time.now.strftime( '%Y%m%d' ), account ); t1 += p %><%= p.to_disp_str %></td> ! <td class="diary" align="right"><% p = grand_total( account_regexp( account ) ); t2 += p %><%= p.to_disp_str %></td> </tr> <% end %> <tr> --- 60,74 ---- </td> <td> <table class="total"> ! <caption class="total"><%= "#{year}/#{month}" %>?????????</caption> <tr> ! <th></th><th>(??????)</th><th>(??????)</th> </tr> ! <% t1 = 0; t2 = 0; genre_income.each do |genre| %> <tr> ! <th class="diary"><a href="<%=****@conf***** %>?genre=<%= CGI::escape("i:#{genre}") %>&date=<%= year + month %>"><%= genre %></a></th> ! <td class="diary" align="right"><% p = genre_total( year + month, "i:#{genre}", nil, account ); t1 += p %><%= p.to_disp_str %></td> ! <td class="diary" align="right"><% p = genre_total( year + month, "i:#{genre}", 1, account ); t2 += p %><%= p.to_disp_str %></td> </tr> <% end %> <tr> *************** *** 59,121 **** <td class="diary" align="right"><%= t1.to_disp_str %></td> <td class="diary" align="right"><%= t2.to_disp_str %></td> </tr> - <% if vaccount_name.length > 0 %> - <tr> - <th>????????????</th><th>(??????)</th><th>(?????????)</th> - </tr> - <% vaccount_name.each do |vaccount| %> - <tr> - <th class="diary"><a href="<%=****@conf***** %>?account=<%= CGI::escape( vaccount ) %>&date=<%= year + month %>"><%= vaccount %></a></th> - <td class="diary" align="right"><%= balance( Time.now.strftime( '%Y%m%d' ), vaccount ).to_disp_str %></td> - <td class="diary" align="right"><%= grand_total( vaccount ).to_disp_str %></td> - </tr> - <% end %> - <% end %> </table> </td> </tr> </table> ! <div class="day"> ! <h2><span class="date"><%= "#{year}/#{month}" %>?????????</span></h2> ! <div class="body"> ! <div class="section"> ! <h3><span class="sanchor">_</span>???????????????</h3> ! <table class="diary"> ! <tr><th>???</th><th>??????</th><th>?????????</th><th>?????????</th><th>??????</th><th>??????</th><th>?????????</th></tr> ! <% monthly( year + month ).each_notmove_item( 'account' => account_regexp( account ), 'genre' => genre ) do |item| %> ! <tr> ! <td class="diary"><%= item.date %></td> ! <td class="diary"><%= CGI::escapeHTML(item.genre) %></td> ! <td class="diary" align="right"><%= item.price > 0 ? item.price.to_disp_str : '' %></td> ! <td class="diary" align="right"><%= item.price < 0 ? (-item.price).to_disp_str : '' %></td> ! <td class="diary"><%= CGI::escapeHTML(item.account) %></td> ! <td class="diary"><%= CGI::escapeHTML(item.note) %></td> ! <td class="diary"><%= item.special %></td> ! </tr> ! <% end %> ! </table> ! </div> ! <div class="section"> ! <h3><span class="sanchor">_</span>??????</h3> ! <table class="diary"> ! <tr><th>???</th><th>??????</th><th>?????????</th><th>?????????</th><th>??????</th><th>??????</th><th>?????????</th></tr> ! <% monthly( year + month ).each_move_item( 'account' => account_regexp( account ), 'genre' => genre ) do |item| %> ! <tr> ! <td class="diary"><%= item.date %></td> ! <td class="diary"><%= CGI::escapeHTML(item.genre) %></td> ! <td class="diary" align="right"><%= item.price > 0 ? item.price.to_disp_str : '' %></td> ! <td class="diary" align="right"><%= item.price < 0 ? (-item.price).to_disp_str : '' %></td> ! <td class="diary"><%= CGI::escapeHTML(item.account) %></td> ! <td class="diary"><%= CGI::escapeHTML(item.note) %></td> ! <td class="diary"><%= item.special %></td> ! </tr> ! <% end %> ! </table> ! </div> ! </div> ! <div class="referer"> ! </div> ! </div> <% d = month == (Time.now + (@conf.hour_offset * 3600).to_i).strftime( '%m' ) ? (Time.now + (@conf.hour_offset * 3600).to_i).strftime( '%d' ) : '' %> <form method="POST" action="<%=****@conf***** %>"> --- 76,87 ---- <td class="diary" align="right"><%= t1.to_disp_str %></td> <td class="diary" align="right"><%= t2.to_disp_str %></td> </tr> </table> </td> </tr> </table> ! ! <!-- input form --> <% d = month == (Time.now + (@conf.hour_offset * 3600).to_i).strftime( '%m' ) ? (Time.now + (@conf.hour_offset * 3600).to_i).strftime( '%d' ) : '' %> <form method="POST" action="<%=****@conf***** %>"> *************** *** 213,217 **** --- 179,227 ---- <input type="submit" value=" ?????? "> </p> </form> + + <!-- description --> + <div class="day"> + <h2><span class="date"><%= "#{year}/#{month}" %>?????????</span></h2> + <div class="body"> + <div class="section"> + <h3><span class="sanchor">_</span>???????????????</h3> + <table class="diary"> + <tr><th>???</th><th>??????</th><th>?????????</th><th>?????????</th><th>??????</th><th>??????</th><th>?????????</th></tr> + <% monthly( year + month ).each_notmove_item( 'account' => account_regexp( account ), 'genre' => genre ) do |item| %> + <tr> + <td class="diary"><%= item.date %></td> + <td class="diary"><%= CGI::escapeHTML(item.genre) %></td> + <td class="diary" align="right"><%= item.price > 0 ? item.price.to_disp_str : '' %></td> + <td class="diary" align="right"><%= item.price < 0 ? (-item.price).to_disp_str : '' %></td> + <td class="diary"><%= CGI::escapeHTML(item.account) %></td> + <td class="diary"><%= CGI::escapeHTML(item.note) %></td> + <td class="diary"><%= item.special %></td> + </tr> + <% end %> + </table> + </div> + <div class="section"> + <h3><span class="sanchor">_</span>??????</h3> + <table class="diary"> + <tr><th>???</th><th>??????</th><th>?????????</th><th>?????????</th><th>??????</th><th>??????</th><th>?????????</th></tr> + <% monthly( year + month ).each_move_item( 'account' => account_regexp( account ), 'genre' => genre ) do |item| %> + <tr> + <td class="diary"><%= item.date %></td> + <td class="diary"><%= CGI::escapeHTML(item.genre) %></td> + <td class="diary" align="right"><%= item.price > 0 ? item.price.to_disp_str : '' %></td> + <td class="diary" align="right"><%= item.price < 0 ? (-item.price).to_disp_str : '' %></td> + <td class="diary"><%= CGI::escapeHTML(item.account) %></td> + <td class="diary"><%= CGI::escapeHTML(item.note) %></td> + <td class="diary"><%= item.special %></td> + </tr> + <% end %> + </table> + </div> + </div> + <div class="referer"> + </div> + </div> + <hr class="sep"> <%=****@conf***** %> -------------- next part -------------- -- koichiro <koich****@meado*****>