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