diff --git a/standard_Operations.html b/standard_Operations.html
index f5d17d6..8d75b81 100644
--- a/standard_Operations.html
+++ b/standard_Operations.html
@@ -6835,6 +6835,61 @@
/* FLO Cloud operations to send/request application data*/
const floCloudAPI = {
+ util:{
+ resetData: function(dataSet){
+ try{
+ dataSet = JSON.parse(dataSet);
+ console.log(dataSet)
+ for(vc in dataSet){
+ var message = dataSet[vc].message;
+ if(message.reset){
+ floGlobals.appObjects[message.object] = message.reset
+ floGlobals.vectorClock[message.object] = vc
+ compactIDB.writeData("appObjects", floGlobals.appObjects[message.object], message.object)
+ compactIDB.writeData("vectorClocks", vc, message.object)
+ }
+ }
+ }catch(error){
+ console.error(error)
+ }
+ },
+
+ updateData: function(dataSet){
+ try{
+ dataSet = JSON.parse(dataSet);
+ console.log(dataSet)
+ for(vc in dataSet){
+ var message = dataSet[vc].message;
+ if(message.diff){
+ floGlobals.appObjects[message.object] = mergeDifference(floGlobals.appObjects[message.object], message.diff)
+ compactIDB.writeData("appObjects",floGlobals.appObjects[message.object], message.object)
+ }
+ floGlobals.vectorClock[message.object] = vc
+ compactIDB.writeData("vectorClocks", vc, message.object)
+ }
+ }catch(error){
+ console.error(error)
+ }
+ },
+
+ storeGeneralData: function(event){
+ try{
+ dataSet = JSON.parse(event.dataSet);
+ console.log(dataSet)
+ if(!Array.isArray(floGlobals.generalData[event.filterStr]))
+ floGlobals.generalData[event.filterStr] = []
+ for(vc in dataSet){
+ floGlobals.generalData[event.filterStr].push({sender: dataSet[vc].senderID, vectorClock: vc, message: dataSet[vc].message})
+ compactIDB.writeData("generalData", floGlobals.generalData[event.filterStr], event.filterStr)
+ floGlobals.generalVC[event.filterStr] = vc
+ compactIDB.writeData("generalVC", vc, event.filterStr)
+ }
+ }catch(error){
+ console.error(error)
+ }
+ }
+ },
+
//send Any message to supernode cloud storage
sendApplicationData: function(message, type, options = {}){
return new Promise((resolve,reject) => {
@@ -6876,137 +6931,81 @@
//send General Data
sendGeneralData: function(message, type, options = {}){
- this.sendApplicationData(message, type, options)
- .then(result => reactor.dispatchEvent('logHandle',result))
- .catch(error => reactor.dispatchEvent('errorHandle',error))
+ return new Promise((resolve,reject) => {
+ this.sendApplicationData(message, type, options)
+ .then(result => resolve(result))
+ .catch(error => reject(error))
+ })
},
//request General Data
requestGeneralData: function(type, options = {}){
- var filterStr = JSON.stringify({application: options.application || floGlobals.application, type: type, comment: options.comment})
- options.type = type
- options.lowerVectorClock = options.lowerVectorClock || floGlobals.generalVC[filterStr] + 1
- this.requestApplicationData(options)
- .then(dataSet => reactor.dispatchEvent("storeGeneralData", {filterStr: filterStr, dataSet:dataSet}))
- .catch(error => reactor.dispatchEvent('errorHandle',error))
+ return new Promise((resolve,reject) => {
+ var filterStr = JSON.stringify({application: options.application || floGlobals.application, type: type, comment: options.comment})
+ options.type = type
+ options.lowerVectorClock = options.lowerVectorClock || floGlobals.generalVC[filterStr] + 1
+ this.requestApplicationData(options).then(dataSet => {
+ this.util.storeGeneralData(filterStr, dataSet)
+ resolve('General Data Updated')
+ }).catch(error => reject(error))
+ })
},
//request an object data from supernode cloud
requestObjectData: function(objectName, options = {}){
- var request = {
- receiverID: options.receiverID || floGlobals.adminID,
- senderIDs: (options.senderIDs === false) ? false: options.senderIDs || floGlobals.subAdmins,
- application: options.application || floGlobals.application,
- comment: options.comment,
- type: `${objectName}@Reset`,
- lowerVectorClock: floGlobals.vectorClock[objectName]+1,
- mostRecent: true
- }
- floSupernode.requestData(JSON.stringify(request),request.receiverID).then(resetData => {
- reactor.dispatchEvent('resetData', resetData);
- request.type = `${objectName}@Update`
- request.lowerVectorClock = floGlobals.vectorClock[objectName]+1
- request.mostRecent = false
- floSupernode.requestData(JSON.stringify(request), request.receiverID)
- .then(updateData => reactor.dispatchEvent('updateData', updateData))
- }).catch(error => reactor.dispatchEvent('errorHandle', error))
+ return new Promise((resolve,reject) => {
+ var request = {
+ receiverID: options.receiverID || floGlobals.adminID,
+ senderIDs: (options.senderIDs === false) ? false: options.senderIDs || floGlobals.subAdmins,
+ application: options.application || floGlobals.application,
+ comment: options.comment,
+ type: `${objectName}@Reset`,
+ lowerVectorClock: floGlobals.vectorClock[objectName]+1,
+ mostRecent: true
+ }
+ floSupernode.requestData(JSON.stringify(request),request.receiverID).then(dataSet => {
+ this.util.resetData(filterStr, dataSet)
+ request.type = `${objectName}@Update`
+ request.lowerVectorClock = floGlobals.vectorClock[objectName]+1
+ request.mostRecent = false
+ floSupernode.requestData(JSON.stringify(request), request.receiverID).then(dataSet => {
+ this.util.updateData(filterStr, dataSet)
+ resolve('Object Data Updated')
+ }).catch(error => reject(error))
+ }).catch(error => reject(error))
+ })
},
//reset or initialize an object and send it to cloud
resetObjectData: function(newObject, objectName, options = {}){
- var message = {
- division: options.division || floGlobals.division,
- object: objectName,
- vectorClock: floGlobals.vectorClock[objectName],
- reset: newObject
- }
- this.sendApplicationData(message, `${objectName}@Reset`, options)
- .then(result => reactor.dispatchEvent('logHandle',result))
- .catch(error => reactor.dispatchEvent('errorHandle',error))
+ return new Promise((resolve,reject) => {
+ var message = {
+ division: options.division || floGlobals.division,
+ object: objectName,
+ vectorClock: floGlobals.vectorClock[objectName],
+ reset: newObject
+ }
+ this.sendApplicationData(message, `${objectName}@Reset`, options)
+ .then(result => resolve(result))
+ .catch(error => reject(error))
+ })
},
//update the diff and send it to cloud
updateObjectData: function(oldObject, newObject, objectName, options = {}){
- var message = {
- division: options.division || floGlobals.division,
- object: objectName,
- vectorClock: floGlobals.vectorClock[objectName],
- diff: findDifference(oldObject, newObject)
- }
- this.sendApplicationData(message, `${objectName}@Update`, options)
- .then(result => reactor.dispatchEvent('logHandle',result))
- .catch(error => reactor.dispatchEvent('errorHandle',error))
+ return new Promise((resolve,reject) => {
+ var message = {
+ division: options.division || floGlobals.division,
+ object: objectName,
+ vectorClock: floGlobals.vectorClock[objectName],
+ diff: findDifference(oldObject, newObject)
+ }
+ this.sendApplicationData(message, `${objectName}@Update`, options)
+ .then(result => resolve(result))
+ .catch(error => reject(error))
+ })
}
}
-
- reactor.registerEvent('resetData');
- reactor.addEventListener('resetData', function(dataSet){
- try{
- dataSet = JSON.parse(dataSet);
- console.log(dataSet)
- for(vc in dataSet){
- //if(floGlobals.subAdmins.includes(dataSet[vc].senderID)){
- var message = dataSet[vc].message;
- if(message.reset){
- floGlobals.appObjects[message.object] = message.reset
- floGlobals.vectorClock[message.object] = vc
- compactIDB.writeData("appObjects", floGlobals.appObjects[message.object], message.object)
- compactIDB.writeData("vectorClocks", vc, message.object)
- }
- //}
- }
- }catch(error){
- console.log(error)
- }
- });
-
- reactor.registerEvent('updateData');
- reactor.addEventListener('updateData', function(dataSet){
- try{
- dataSet = JSON.parse(dataSet);
- console.log(dataSet)
- for(vc in dataSet){
- //if(floGlobals.subAdmins.includes(dataSet[vc].senderID)){
- var message = dataSet[vc].message;
- if(message.diff){
- floGlobals.appObjects[message.object] = mergeDifference(floGlobals.appObjects[message.object], message.diff)
- compactIDB.writeData("appObjects",floGlobals.appObjects[message.object], message.object)
- }
- //}
- floGlobals.vectorClock[message.object] = vc
- compactIDB.writeData("vectorClocks", vc, message.object)
- }
- }catch(error){
- console.log(error)
- }
- });
-
- reactor.registerEvent('storeGeneralData');
- reactor.addEventListener('storeGeneralData', function(event){
- try{
- dataSet = JSON.parse(event.dataSet);
- console.log(dataSet)
- if(!Array.isArray(floGlobals.generalData[event.filterStr]))
- floGlobals.generalData[event.filterStr] = []
- for(vc in dataSet){
- floGlobals.generalData[event.filterStr].push({sender: dataSet[vc].senderID, vectorClock: vc, message: dataSet[vc].message})
- compactIDB.writeData("generalData", floGlobals.generalData[event.filterStr], event.filterStr)
- floGlobals.generalVC[event.filterStr] = vc
- compactIDB.writeData("generalVC", vc, event.filterStr)
- }
- }catch(error){
- console.log(error)
- }
- });
-
- reactor.registerEvent('errorHandle');
- reactor.addEventListener('errorHandle', function(event){
- console.log(event)
- });
- reactor.registerEvent('logHandle');
- reactor.addEventListener('logHandle', function(event){
- console.log(event)
- });