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

Hello, Stupid World!

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

一日に複数タスクを登録できるよう修正していますが、
今回は詳細画面の修正箇所を説明します。

[content.js]

model.content = {
 day : "",
 no : undefined, ・・・①
 title : "",
 place : "",
 start : "",
 end : "",
 memo : ""
};

model.content.setContent = function(task){
 model.content.day = task.day;
 model.content.no = task.no;  ・・・②
 model.content.title = task.title;
 model.content.place = task.place;
 model.content.start = task.start;
 model.content.end = task.end;
 model.content.memo = task.memo;
};

model.content.getContent = function(){
 var task = new model.task();
 task.day = model.content.day;
 task.no = model.content.no;  ・・・③
 task.title = model.content.title;
 task.place = model.content.place;
 task.start = model.content.start;
 task.end = model.content.end;
 task.memo = model.content.memo;
 return task;
};

model.content.loadContent = function(){   ・・・④
 var args = model.app.getArg().split(":");
 if (args.length === 1) {
  model.content.day = args[0];
 } else {
  model.content.setContent(model.app.getTask(args[0], parseInt(args[1])));
 }
 view.update();
};

model.content.deleteContent = function(){
 model.app.deleteTask(model.content.day, model.content.no);
 model.app.noDisplace(model.content.day, model.content.no); ・・・⑤
 model.app.save();
};


[common.js]

//削除時に番号をずらす
model.app.noDisplace = 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[i].no--;
  }
 }
};


[解説]
①taskと同様にno属性を追加しています。
 noは0から始まるので初期値はundefinedをセットします。
②③noが増えているだけです。
④パラメータに:が存在するかどうかでタスクの新規追加か更新か判断しています。
 更新の場合は既存タスクをgetTaskで読込み。
⑤削除時は対象を削除すると伴に、他の番号を前に詰めています。
 追加時に工夫すればここで、このような処理は必要ないんでしょうが
 好きな方で良いと思います。
⑥⑤で呼び出しているメソッドです。
 削除したものと同一日付で番号が大きいもの全てのNoをデクリメントして
 削除した分、前に詰めています。


番号ずらす処理を作成する際に少し悩みましたが単純な形に。
ここまでで複数タスクを登録できるようになりました。


サンプルを置いておきます。
http://trapz.web.fc2.com/blog/20130508/calendar.html