[Mobo-dev] 月表示の構成

Back to archive index

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}") %>&amp;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 ) %>&amp;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) %>&amp;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}") %>&amp;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}") %>&amp;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) %>&amp;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}") %>&amp;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 ) %>&amp;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*****>


Mobo-dev メーリングリストの案内
Back to archive index