スマフォアプリ作成27:複数タスク登録_2 | Hello, Stupid World!

Hello, Stupid World!

いろいろとメモ代わりに書いていきます。

以前のダイアログでは新規追加を一覧上に出力する予定でしたが
既存のタスクとの区別が分かりづらくなってしまうのでボタンに
して一覧に表示しないようにしました。

まずはそこら辺を。

[calendar.html]

<div id="dialog">
 <div id="dialog_task"></div>
 <input type="button" id="back" class="css_btn_class" value="戻る"
  style="display: inline; float: left; width: 15%;"/>
 <input type="button" id="regist" class="css_btn_class" value="登録" ・・・①
  style="display: inline; float: right; width: 15%;"/>
</div>



[calendar.js]

//各クラスにイベントリスナを追加
view.addEvents = function (){
 view.addClassEvents('day', 'click', ctr.onClickDay);
 view.addClassEvents('holiday', 'click', ctr.onClickDay);
 ById('regist').addEventListener('click', ctr.onClickRegistButton, false); ・・・②
};

//登録ボタンのクリック処理 ・・・③
ctr. onClickRegistButton = function (event){
 location.href='content.html';
};


[解説]
①登録ボタンを定義しています。float:rightで右寄せに。
②登録ボタンにイベントリスナを追加。登録ボタンは一つなのでIDを指定して
 追加すること(addClassEventsは使用しない)
③登録ボタン押下時の処理です。単純に詳細画面に遷移するだけ。


$Hello, Stupid World!-ダイアログ変更


こんな感じです。
次にダイアログ内の処理で変更した箇所の説明です。

[calendar.js]

//ダイアログをオープン
view.dialog.open = function (day){ ・・・④
 view.disabledEvents();
 ById('dialog').style.display = "block";
 view.dialog.setCenter();
 view.dialog.addTask(day);
 model.app.setArg(day);  ・・・⑤
 view.dialog.addEvent();
};

//ダイアログにタスク項目を追加
view.dialog.addContent = function (day, no, display){
 var val = day + ":" + no  ・・・⑥
 var dialog_task = ById('dialog_task');
 var element = document.createElement('div');
 element.setAttribute("class", "task dialog_blk");
 element.setAttribute("id", val);
 element.setAttribute("value", val);
 element.innerHTML = display;
 dialog_task.appendChild(element);
};

//ダイアログにタスク項目を追加
view.dialog.addTask = function (day){ ・・・⑦
 var taskList = model.app.getTaskOfDay(day);
 for (var i = 0; i < taskList.length; i++) {
  view.dialog.addContent(taskList[i].day, taskList[i].no, taskList[i].title);
 }
};

//タスクがあればダイアログ、無ければ詳細画面に遷移
view.nextViewOrDialog = function (val){
 if (model.app.getTaskCountOfDay(val) === 0) { ・・・⑧
  location.href='content.html';
  model.app.setArg(val);
 } else {
  view.dialog.open (val);
 }
};

[解説]
④今まではタスクを引数としてましたが複数タスク化に伴って
 日付を渡すように変更。
⑤一旦日付を詳細画面パラメータ用のWebストレージにセットします。
 これは登録ボタンが押された場合に使用する為です。
⑥ダイアログ内の項目に存在するid,valueに日付+":"+Noを登録するよう
 変更しています。これも番号が増えたことに伴う変更です。
⑦指定日のタスクを全て列挙するように修正しています。
⑧わずかな修正ですが、複数タスク化に伴う修正です。


ここまでで詳細画面に遷移する所までは作成できました。
次回は詳細画面の修正箇所です。

ちなみに修正部分を後で見返す際にはTortoiseSVNが役立ちます。


$Hello, Stupid World!-TortoiseSVN_比較