編集中
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文字列) |