とりあえず、Widgetの使い方が今ひとつ理解できていないので、
割り勘ソフト(GoDutch)を作ってみることにする。
WebOSアプリは小さい画面で以下に情報を詰めるか。
これが肝になるが、Widgetを上手く使うことで、スマートかつ情報入力を適切に出来るはず。
そして、この画面構成がもっとも気を使うのだろうと思う。
メイン画面:割り勘する支払金額入力、人数入力、リスト[メンバー名(任意)、負担比率、負担金額]
- リストは人数入力によって行を作成。
- または、リスト最下行+Add...ボタンで追加→人数カウントを増やす。
メンバー入力ダイアログ:デフォルトではmenber-1、負担比率は人数等分となるようにしておく。負担比率をメンバー増やしてもロックしたい場合があるので、ロックボタンもつける。負担金額の入力も出来るようにする。
金額入力、負担比率はテンキー方式で表示できると良いかな。
負担比率(デフォルト)(%)=100/メンバー数
ロックされた比率がある場合の負担比率(%)=(100-(ロックされている比率合計))/ロックしていないメンバー数
負担金額=(支払金額-(ロックされている支払金額合計))×負担比率(%)/100
ということだから、
totalPayment //整数、まぁ、100万円位までで良いかな?初期値は0
numOfMember //整数、1~20人ぐらい、初期値は1
memeber[].name //str、defaultはmember x(xはリスト順)
member[].rate //整数、端数切り上げ、1~100(%)
member[].lockedRate //整数、1~100(%)、FlagOfLockedRateがFalseの場合には、rateを代入。Trueの場合には、lockedRateをrateに代入。初期値は0。
member[].payment //整数、端数切り上げ
member[].lockedPayment //整数、1~100(%)、FlagOfLockedPaymentがFalseの場合には、Paymentを代入。Trueの場合には、lockedPaymentをpaymentに代入。初期値は0。
member[].flagOfLockedRate //論理値、true || false
member[].flagOfLockedPayment //論理値、true || false
numOfLockedMember //整数、0~numOfMember, lockedRate== "true" となる数をカウント
member[].rate
// flagOfLockedRate=="false"
=(100-[flagOfLockedRate=="true"となっているlockedRateを合計])/(numOfMember-numOfLockedMember)
// flagOfLockedRate=="true"
=lockedRate
member[].payment
// flagOfLockedPayment=="false"
=(totalPayment-[flagOfLockedPayment=="true"となっているPaymentを合計])*member[].rate/100
// flagOfLockedPayment=="true"
=lockedPayment
あとはリスト数字が動くイベントの都度、フラグの確認とrate, paymentを算出すれば良いかな?
メイン画面はリスト外:totalPaymentとnumOfMemberが、リスト内:name、rate、payment