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

Hello, Stupid World!

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

少しの間、自分の復習の為にSVNの説明を行っていましたが
再びスマフォアプリの開発に戻りたいと思います。

今回から複数タスクを登録できるように変更していきます。
その中で前に作ったダイアログを使用していきます。

今回は共通部分です。テストコードが既に作ってあるので
テストコードが正常に動くように作り変えていきます。

テストケースとして足りないものは適宜追加します。

以下、追加したソース


[common.js]

model.task = function(){ ・・・①
 this.day = "";
 this.no = undefined;
 this.title = "";
 this.place = "";
 this.start = "";
 this.end = "";
 this.memo = "";

 return this;
};

//タスクリストから指定日、番号のインデックスを取得 ・・・②
model.app.getTaskIndex = function(day, no){
 for(var i = 0; i < model.taskList.length; i++) {
  if ((model.taskList[i].day === day) && (model.taskList[i].no === no)) {
   return i;
  }
 }
 return null;
};

//タスクリストから指定日、番号のタスクを取得 ・・・③
model.app.getTask = function(day, no){
 index = model.app.getTaskIndex(day, no);
 if(index === null){
  return null;
 }else{
  return model.taskList[index];
 }
};

//タスクリストから指定日のタスクを取得 ・・・④
model.app.getTaskOfDay = function(day){
 var returnList = [];
 var id = 0;
 for(var i = 0; i < model.taskList.length; i++) {
  if (model.taskList[i].day === day) {
   returnList[id++] = model.taskList[i];
  }
 }
 return returnList;
};

//タスクリスト内の指定日のタスク数を取得 ・・・⑤
model.app.getTaskCountOfDay = function(day){
 return model.app.getTaskOfDay(day).length;
};

//タスクリストにタスクを追加     ・・・⑥
//同一日付、番号が存在する場合は更新
model.app.addTask = function(task){
 if (task.no === undefined) {
  task.no = model.app.getTaskCountOfDay(task.day)
 }
 index = model.app.getTaskIndex(task.day, task.no);
 if(index === null){
  model.taskList[model.taskList.length] = task;
 }else{
  model.taskList[index].title = task.title;
  model.taskList[index].place = task.place;
  model.taskList[index].start = task.start;
  model.taskList[index].end = task.end;
  model.taskList[index].memo = task.memo;
 }
};

//タスクリストからタスクを削除 ・・・⑦
model.app.deleteTask = function(day, no){
 for(var i = 0; i < model.taskList.length; i++) {
  if ((model.taskList[i].day === day) && (model.taskList[i].no === no)) {
   model.taskList.splice(i, 1);
   return true;
  }
 }
 return false;
};


[解説]
①taskの属性にnoを追加
②指定日付、番号のものが何番目にあるか取得するメソッドを新規作成
③タスク取得時に日付だけでなくNoを指定するように修正
④指定日のタスクを全て取得するメソッドを新規作成
⑤指定日のタスク数を取得するメソッドを追加
⑥noが指定されてない場合に自動的にセットするようにタスク追加メソッド
 を修正。
 また既に同一日、同一番号のものが登録されている場合には更新するよう
 に修正。
⑦タスク削除メソッドにnoを指定するように修正


次回はviewとcontrollerの変更を行う予定です。