- fix Indexdb: 1) InsertTodo OK

This commit is contained in:
Paolo Arena
2019-02-02 21:16:49 +01:00
parent 3c6b2c7bef
commit 185bd2657d
7 changed files with 51 additions and 30 deletions

View File

@@ -363,21 +363,21 @@ export default class Todo extends Vue {
this.todo = '' this.todo = ''
} }
cmdToSyncAndDb(cmd, table, method, itemOrId, msg: String) { async cmdToSyncAndDb(cmd, table, method, item: ITodo, id, msg: String) {
// Send to Server to Sync // Send to Server to Sync
console.log('cmdToSyncAndDb', cmd, table, method, itemOrId, msg) console.log('cmdToSyncAndDb', cmd, table, method, item, id, msg)
const mythis = this const mythis = this
if ('serviceWorker' in navigator && 'SyncManager' in window) { if ('serviceWorker' in navigator && 'SyncManager' in window) {
navigator.serviceWorker.ready await navigator.serviceWorker.ready
.then(function (sw) { .then(function (sw) {
// _id: new Date().toISOString(), // _id: new Date().toISOString(),
console.log('---------------------- navigator.serviceWorker.ready') console.log('---------------------- navigator.serviceWorker.ready')
// mythis.sendMessageToSW(item, method) // mythis.sendMessageToSW(item, method)
globalroutines(mythis, 'write', table, itemOrId) globalroutines(mythis, 'write', table, item, id)
.then(function (id) { .then(function (id) {
console.log('id', id) console.log('id', id)
const sep = '|' const sep = '|'
@@ -396,19 +396,19 @@ export default class Todo extends Vue {
}) })
} else { } else {
if (cmd === rescodes.DB.CMD_SYNC_TODOS) if (cmd === rescodes.DB.CMD_SYNC_TODOS)
Todos.actions.dbSaveTodo(itemOrId) Todos.actions.dbSaveTodo(item)
else if (cmd === rescodes.DB.CMD_DELETE_TODOS) else if (cmd === rescodes.DB.CMD_DELETE_TODOS)
Todos.actions.dbDeleteTodo(itemOrId) Todos.actions.dbDeleteTodo(id)
} }
} }
saveItemToSyncAndDb(table: String, method, item: ITodo) { saveItemToSyncAndDb(table: String, method, item: ITodo) {
return this.cmdToSyncAndDb(rescodes.DB.CMD_SYNC_TODOS, table, method, item, 'Your Post was saved for syncing!') return this.cmdToSyncAndDb(rescodes.DB.CMD_SYNC_TODOS, table, method, item, 0, 'Your Post was saved for syncing!')
} }
deleteItemToSyncAndDb(table: String, id: String) { deleteItemToSyncAndDb(table: String, id) {
return this.cmdToSyncAndDb(rescodes.DB.CMD_DELETE_TODOS, table, 'DELETE', id, 'Your Post was canceled for syncing!') return this.cmdToSyncAndDb(rescodes.DB.CMD_DELETE_TODOS, table, 'DELETE', null, id, 'Your Post was canceled for syncing!')
} }
/* /*
@@ -464,7 +464,7 @@ export default class Todo extends Vue {
const mythis = this const mythis = this
// Delete item // Delete item
await globalroutines(this, 'delete', 'todos', id) await globalroutines(this, 'delete', 'todos', null, id)
.then((ris) => { .then((ris) => {
console.log('UpdateTable', ris) console.log('UpdateTable', ris)
mythis.updatetable() mythis.updatetable()
@@ -633,7 +633,7 @@ export default class Todo extends Vue {
async modify(myobj: ITodo, update: boolean) { async modify(myobj: ITodo, update: boolean) {
await globalroutines(this, 'read', 'todos', myobj._id) await globalroutines(this, 'read', 'todos', null, myobj._id)
.then(miorec => { .then(miorec => {
console.log('ArrTodos: ', myobj.descr, '[', myobj._id, ']') console.log('ArrTodos: ', myobj.descr, '[', myobj._id, ']')

View File

@@ -1,6 +1,6 @@
import indexdb from './indexdb' import indexdb from './indexdb'
export default async (context, cmd, table, data = null) => { export default async (context, cmd, table, data, id = '') => {
console.log('globalroutines', cmd, table, data) console.log('globalroutines', cmd, table, data, id)
return await indexdb(context, cmd, table, data) return await indexdb(context, cmd, table, data, id)
} }

View File

@@ -39,7 +39,7 @@ async function readfromIndexDbToStateTodos(context) {
} }
export default async (context, cmd, table, datakey) => { export default async (context, cmd, table, datakey, id) => {
if (cmd === 'loadapp') { if (cmd === 'loadapp') {
// ****** LOAD APP AL CARICAMENTO ! ******* // ****** LOAD APP AL CARICAMENTO ! *******
return saveConfigIndexDb(context, datakey) return saveConfigIndexDb(context, datakey)
@@ -56,8 +56,8 @@ export default async (context, cmd, table, datakey) => {
} else if (cmd === 'readall') { } else if (cmd === 'readall') {
return await storage.getalldata(table) return await storage.getalldata(table)
} else if (cmd === 'read') { } else if (cmd === 'read') {
return await storage.getdata(table, datakey) return await storage.getdata(table, id)
} else if (cmd === 'delete') { } else if (cmd === 'delete') {
return await storage.deletedata(table, datakey) return await storage.deletedata(table, id)
} }
} }

View File

@@ -1,4 +1,3 @@
import { rescodes } from "../store/Modules/rescodes";
export let idbKeyval = (() => { export let idbKeyval = (() => {
let db; let db;
@@ -49,6 +48,7 @@ export let idbKeyval = (() => {
}, },
async getdata(table, key) { async getdata(table, key) {
let req; let req;
await withStore('readonly', table, store => { await withStore('readonly', table, store => {
console.log('store', store, 'key', key) console.log('store', store, 'key', key)
req = store.get(key); req = store.get(key);
@@ -70,9 +70,11 @@ export let idbKeyval = (() => {
}, },
async setdata(table, valuekey) { async setdata(table, valuekey) {
// set only the ID, because it need to delete it
let value = [] let value = []
if (table === rescodes.DB.CMD_DELETE_TODOS) { if (table === 'delete_todos') {
value['_id'] = valuekey value['_id'] = valuekey
value['value'] = valuekey
}else { }else {
value = valuekey value = valuekey
} }

View File

@@ -3,7 +3,7 @@ let idbKeyval = (() => {
function getDB() { function getDB() {
if (!db) { if (!db) {
console.log('CREO DB STATICS!') console.log('CREO DB STORAGE JS !')
db = new Promise((resolve, reject) => { db = new Promise((resolve, reject) => {
const openreq = indexedDB.open('mydb3', 11); const openreq = indexedDB.open('mydb3', 11);
@@ -40,11 +40,20 @@ let idbKeyval = (() => {
return { return {
async get(key) { async get(key) {
let req; let req;
await withStore('readonly', store => { await withStore('readonly', 'keyval', store => {
req = store.get(key); req = store.get(key);
}); });
return req.result; return req.result;
}, },
async getdata(table, key) {
let req;
await withStore('readonly', table, store => {
console.log('store', store, 'key', key)
req = store.get(key);
});
console.log('RISFINALE!', req.result)
return req.result;
},
async getalldata(table) { async getalldata(table) {
let req; let req;
await withStore('readonly', table, store => { await withStore('readonly', table, store => {
@@ -52,18 +61,28 @@ let idbKeyval = (() => {
}); });
return req.result; return req.result;
}, },
set(key, value) { async set(key, value) {
return withStore('readwrite', 'keyval', store => { return await withStore('readwrite', 'keyval', store => {
store.put(value, key); store.put(value, key);
}); });
}, },
setdata(table, value) { async setdata(table, valuekey) {
return withStore('readwrite', table, store => {
let value = []
if (table === 'delete_todos') {
value['_id'] = valuekey
}else {
value = valuekey
}
console.log('setdata', table, value)
return await withStore('readwrite', table, store => {
store.put(value); store.put(value);
}); });
}, },
delete(key) { async delete(key) {
return withStore('readwrite', 'keyval', store => { return await withStore('readwrite', 'keyval', store => {
store.delete(key); store.delete(key);
}); });
}, },

View File

@@ -28,8 +28,8 @@ export const rescodes = {
DB: { DB: {
CMD_SYNC_TODOS: 'sync-new-todos', CMD_SYNC_TODOS: 'sync-new-todos',
CMD_DELETE_TODOS: 'sync-delete-todos', CMD_DELETE_TODOS: 'sync-delete-todos',
TABLE_SYNC_TODOS : 'sync_todos,', TABLE_SYNC_TODOS : 'sync_todos',
TABLE_DELETE_TODOS : 'delete_todos,' TABLE_DELETE_TODOS : 'delete_todos'
}, },
MenuAction: { MenuAction: {

View File

@@ -119,7 +119,7 @@ export default class Signin extends Vue {
.then((riscode) => { .then((riscode) => {
if (riscode === rescodes.OK) { if (riscode === rescodes.OK) {
router.push('/signin') router.push('/signin')
globalroutines(this, 'loadapp', null) globalroutines(this, 'loadapp', '')
} }
this.checkErrors(riscode) this.checkErrors(riscode)
this.$q.loading.hide() this.$q.loading.hide()