編集中
Web Storage | Key-Value ストア HTML5 標準 |
Web SQL | SQLite。頓挫 |
Indexed Database API | NoSQL。仕様未確定。非互換多し(2014現在) |
// @require @packageOverrides
Ext.Loader.setConfig({
});
Ext.application({
models: [
'MdlTask'
],
stores: [
'StrTask'
],
name: 'ToDo_List'
});
Ext.define('ToDo_List.model.MdlTask', {
extend: 'Ext.data.Model',
requires: [
'Ext.data.Field'
],
config: {
idProperty: 'id',
identifier: {
type: 'uuid'
},
fields: [
{
name: 'id',
type: 'auto'
},
{
name: 'name',
type: 'string'
},
{
name: 'description',
type: 'string'
},
{
name: 'created',
type: 'date'
},
{
name: 'completed',
type: 'date'
},
{
name: 'priority',
type: 'int'
},
{
name: 'isComplete',
type: 'boolean'
}
]
}
});
Ext.define('ToDo_List.store.StrTask', {
extend: 'Ext.data.Store',
requires: [
'ToDo_List.model.MdlTask',
'Ext.data.proxy.LocalStorage'
],
config: {
model: 'ToDo_List.model.MdlTask',
storeId: 'StrTask',
proxy: {
type: 'localstorage',
id: 'TaskLocalStorageProxy'
}
}
});
Ext.define('ToDo_List.store.StrTask', {
extend: 'Ext.data.Store',
requires: [
'ToDo_List.model.MdlTask',
'Ext.data.proxy.LocalStorage',
'Ext.util.Filter'
],
config: {
model: 'ToDo_List.model.MdlTask',
storeId: 'StrTask',
proxy: {
type: 'localstorage',
id: 'TaskLocalStorageProxy'
},
filters: {
filterFn: function(item) {
console.log(item);
return !(item.data.isComplete);
}
}
}
});
Ext.define('ToDo_List.store.StrCompleted', {
extend: 'Ext.data.Store',
requires: [
'ToDo_List.model.MdlTask',
'Ext.data.proxy.LocalStorage',
'Ext.util.Filter'
],
config: {
model: 'ToDo_List.model.MdlTask',
storeId: 'StrCompleted',
proxy: {
type: 'localstorage',
id: 'TaskLocalStorageProxy'
},
filters: {
filterFn: function(item) {
return item.data.isComplete;
}
}
}
});
// @require @packageOverrides
Ext.Loader.setConfig({
});
Ext.application({
models: [
'MdlTask'
],
stores: [
'StrTask',
'StrCompleted'
],
name: 'ToDo_List',
launch: function() {
var strTask = Ext.data.StoreManager.lookup('StrTask');
var strCompleted = Ext.data.StoreManager.lookup('StrCompleted');
var today = new Date();
if (0 === strTask.getCount() && 0 === strCompleted.getCount()){
console.log('we have no record. create dummy records.');
strTask.add({
name:'タスクはこちら',
description:'以下の実施完了ボタンを押すとタスクを完了にできます。',
priority:1,
created:today,
completed:'',
isComplete:false});
strTask.add({
name:'タスクの編集方法',
description:'以下の編集ボタンを押すとタスクを編集できます。',
priority:2,
created:today,
completed:'',
isComplete:false});
strTask.add({
name:'タスクの追加方法',
description:'右上隅の追加ボタンを押すとタスクを追加できます。',
priority:3,
created:today,
completed:'',
isComplete:false});
strTask.sync();
}
}
});
モデル名 | PK1,PK2,PK3 |
モデル名-PK1 | PK1 に対応する Model の内容 (JSON文字列) |
モデル名-PK2 | PK2 に対応する Model の内容 (JSON文字列) |
モデル名-PK3 | PK3 に対応する Model の内容 (JSON文字列) |