Last active
December 29, 2015 13:49
-
-
Save MotiurRahman/7680203 to your computer and use it in GitHub Desktop.
Android and IOS: Remote database synchronization with CommonJS Module. Insert update delete locally as well as remotely
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Insert Update Delete for ACS Here | |
var Cloud = require('ti.cloud'); | |
exports.add = function(text, details, callback) { | |
Cloud.Objects.create({ | |
classname : 'info', | |
fields : { | |
title : text, | |
description : details | |
} | |
}, function(e) { | |
if (e.success) { | |
var info = e.info[0]; | |
//alert('Successfully add data to the remote ACS'); | |
callback(info.id); | |
} else { | |
alert('Error:\n' + ((e.error && e.message) || JSON.stringify(e))); | |
} | |
}); | |
}; | |
exports.update = function(text, details, id) { | |
Cloud.Objects.update({ | |
classname : 'info', | |
id : id, | |
fields : { | |
title : text, | |
description : details | |
} | |
}, function(e) { | |
if (e.success) { | |
var info = e.info[0]; | |
//alert('Successfully update data to the remote ACS'); | |
} else { | |
alert('Error:\n' + ((e.error && e.message) || JSON.stringify(e))); | |
} | |
}); | |
}; | |
exports.remove = function(cu_id) { | |
Cloud.Objects.remove({ | |
classname : 'info', | |
id : cu_id | |
}, function(e) { | |
if (e.success) { | |
//alert('Successfully delete data to the remote ACS'); | |
} else { | |
alert('Error:\n' + ((e.error && e.message) || JSON.stringify(e))); | |
} | |
}); | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*1. I Create a simple apps | |
2. Here a simple database table with 3 fields [id, title and descriptions] | |
3. In root window will display data from database | |
4. Here Added edit and delete options in each row, user’s can edit/delete data from database table | |
5. Add database synchronizer to remote web server (such as ACS) We can create user and insert | |
data, update data, delete data to the Wev server as well as local database. | |
6. When user’s close this apps, local database will synchronize with remote database */ | |
var Cloud = require('ti.cloud'); | |
Cloud.Users.create({ | |
email :'[email protected]', | |
first_name :'motiur', | |
last_name : 'rahman', | |
password : '1234', | |
password_confirmation : '1234', | |
}, function(e) { | |
if (e.success) { | |
var user = e.users[0]; | |
// alert('Successfully created User to te Remote ACS'); | |
} else { | |
alert('Error:\n' + ((e.error && e.message) || JSON.stringify(e))); | |
} | |
}); | |
Cloud.Users.login({ | |
login : '[email protected]', | |
password : '1234' | |
}, function(e) { | |
if (e.success) { | |
var user = e.users[0]; | |
var MasterView = require('ui/common/MasterView'); | |
var masterView = MasterView(); | |
masterView.open(); | |
} else { | |
alert('Error:\n' + ((e.error && e.message) || JSON.stringify(e))); | |
} | |
}); | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// update database work create here | |
exports.edit = function(title, details, id) { | |
var mainView = Ti.UI.createView({ | |
width : Ti.UI.FILL, | |
height : 200, | |
layout : 'vertical' | |
}); | |
var titleData = Ti.UI.createTextField({ | |
right : 10, | |
left : 10, | |
top : 5, | |
height : Ti.UI.SIZE, | |
softKeyboardOnFocus : Ti.UI.Android.SOFT_KEYBOARD_DEFAULT_ON_FOCUS, // Android only | |
keyboardType : Titanium.UI.KEYBOARD_ASCII, | |
returnKeyType : Ti.UI.RETURNKEY_NEXT, | |
borderStyle : Ti.UI.INPUT_BORDERSTYLE_ROUNDED | |
}); | |
mainView.add(titleData); | |
var description = Ti.UI.createTextField({ | |
top : 10, | |
right : 10, | |
left : 10, | |
bottom : 5, | |
height : Ti.UI.SIZE, | |
softKeyboardOnFocus : Ti.UI.Android.SOFT_KEYBOARD_DEFAULT_ON_FOCUS, // Android only | |
keyboardType : Titanium.UI.KEYBOARD_ASCII, | |
returnKeyType : Ti.UI.RETURNKEY_NEXT, | |
borderStyle : Ti.UI.INPUT_BORDERSTYLE_ROUNDED | |
}); | |
mainView.add(description); | |
var dialog = Ti.UI.createAlertDialog({ | |
title : 'Information Update', | |
buttonNames : ['Update', "Cancel"], | |
androidView : mainView | |
}); | |
titleData.setValue(title); | |
description.setValue(details); | |
dialog.addEventListener('click', function(e) { | |
if (e.index == 0) { | |
var db = require('lib/db'); | |
var ACS = require('lib/acs'); | |
ACS.update(titleData.value, description.value, id); | |
db.updateinfo(titleData.value, description.value, id); | |
Ti.App.fireEvent('tableUpdate'); | |
} | |
}); | |
dialog.show(); | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Insert Update Delete in Database create here | |
var db = Ti.Database.open('people'); | |
db.execute('CREATE TABLE IF NOT EXISTS customer(id integer PRIMARY KEY autoincrement not null,customer_id TEXT,title TEXT,description TEXT)'); | |
db.close(); | |
exports.add = function(customer_id,title, description) { | |
var db = Ti.Database.open('people'); | |
db.execute('INSERT INTO customer (customer_id,title,description) VALUES(?,?,?)', customer_id,title,description); | |
db.close(); | |
}; | |
exports.getinfo = function() { | |
var customerInfo = []; | |
var db = Ti.Database.open('people'); | |
var result = db.execute('select * from customer'); | |
while (result.isValidRow()) { | |
customerInfo.push({ | |
id : result.fieldByName('id'), | |
title : result.fieldByName('title'), | |
description:result.fieldByName('description'), | |
customer_id:result.fieldByName('customer_id'), | |
}); | |
result.next(); | |
} | |
result.close(); | |
db.close(); | |
//Ti.API.info('stuInfo'+ stuInfo); | |
return customerInfo; | |
}; | |
exports.updateinfo = function(title,description,customer_id) { | |
var db = Ti.Database.open('people'); | |
db.execute('UPDATE customer set title=?,description=? where customer_id=?', title,description,customer_id); | |
db.close(); | |
}; | |
exports.deletinfo = function(customer_id) { | |
var db = Ti.Database.open('people'); | |
db.execute('DELETE FROM customer where customer_id=?', customer_id); | |
db.close(); | |
}; | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// This is the main View of show Table data from database. | |
function MasterView() { | |
var win = Ti.UI.createWindow({ | |
backgroundImage : "/image/green.jpg", | |
layout : 'vertical', | |
navBarHidden : true, | |
fullscreen : true | |
}); | |
var Cloud = require('ti.cloud'); | |
//Top View | |
var view = Ti.UI.createView({ | |
backgroundColor : 'red', | |
width : Titanium.UI.FILL, | |
height : 50, | |
top : 0, | |
layout : 'horizontal' | |
}); | |
win.add(view); | |
var textName = Ti.UI.createLabel({ | |
text : 'Database Synchronization', | |
color : '#FFF', | |
font : { | |
fontSize : 25, | |
fontFamily : 'AlexBrush-Regular' | |
}, | |
left : 5 | |
}); | |
view.add(textName); | |
//Button Bar View | |
var saveView = Ti.UI.createView({ | |
width : Titanium.UI.FILL, | |
height : Titanium.UI.SIZE, | |
top : 0 | |
}); | |
// Create a Button. | |
var save = Ti.UI.createButton({ | |
title : 'save', | |
height : 60, | |
width : 90, | |
left : 10 | |
}); | |
saveView.add(save); | |
var textArea = Ti.UI.createTextArea({ | |
height : Titanium.UI.SIZE, | |
top : 0, | |
color : 'red', | |
width : Titanium.UI.FILL, | |
hintText : 'Add Title', | |
softKeyboardOnFocus : Ti.UI.Android.SOFT_KEYBOARD_DEFAULT_ON_FOCUS, // Android only | |
keyboardType : Ti.UI.KEYBOARD_DEFAULT, | |
returnKeyType : Ti.UI.RETURNKEY_DEFAULT, | |
borderStyle : Ti.UI.INPUT_BORDERSTYLE_ROUNDED | |
}); | |
win.add(textArea); | |
var details = Ti.UI.createTextArea({ | |
height : Titanium.UI.SIZE, | |
top : 10, | |
color : 'red', | |
width : Titanium.UI.FILL, | |
hintText : 'Add Description', | |
softKeyboardOnFocus : Ti.UI.Android.SOFT_KEYBOARD_DEFAULT_ON_FOCUS, // Android only | |
keyboardType : Ti.UI.KEYBOARD_DEFAULT, | |
returnKeyType : Ti.UI.RETURNKEY_DEFAULT, | |
borderStyle : Ti.UI.INPUT_BORDERSTYLE_ROUNDED | |
}); | |
win.add(details); | |
//Listener for save | |
save.addEventListener('click', function() { | |
if (textArea.value == '') { | |
alert('please write something'); | |
} else { | |
var title = textArea.value; | |
var detailsValue = details.value; | |
var DB = require('lib/db'); | |
textArea.setValue(''); | |
details.setValue(''); | |
var ACS = require('lib/acs'); | |
ACS.add(title, detailsValue, function(callback) { | |
//Ti.App.Properties.setString('customer_id', callback); | |
DB.add(callback, title, detailsValue); | |
Ti.App.fireEvent('tableUpdate'); | |
}); | |
} | |
textArea.blur(); | |
}); | |
win.add(saveView); | |
// Create a TableView. | |
var tableData = []; | |
var tableView = Ti.UI.createTableView({ | |
data : tableData, | |
top : 0, | |
}); | |
Ti.App.addEventListener('tableUpdate', refresh); | |
refresh(); | |
function refresh() { | |
tableData = []; | |
var db = require('lib/db'); | |
var infoData = db.getinfo(); | |
for (var i = 0; i < infoData.length; i++) { | |
var row = Ti.UI.createTableViewRow({ | |
className : 'forumEvent', // used to improve table performance | |
selectedBackgroundColor : 'white', | |
rowIndex : i, // custom property, useful for determining the row during events | |
height : 'auto', | |
title : infoData[i].title, | |
id : infoData[i].id, | |
details : infoData[i].description, | |
customer_id : infoData[i].customer_id | |
}); | |
//alert(infoData[i].id); | |
var id = Ti.UI.createLabel({ | |
color : 'red', | |
text : infoData[i].id, | |
font : { | |
fontSize : 25, | |
}, | |
top : 2, | |
left : 10, | |
right : 75 | |
}); | |
row.add(id); | |
var title = Ti.UI.createLabel({ | |
color : 'red', | |
font : { | |
fontFamily : 'Arial', | |
fontSize : 25, | |
fontWeight : 'normal' | |
}, | |
text : infoData[i].title, | |
top : 30, | |
left : 10, | |
right : 75 | |
}); | |
row.add(title); | |
var discription = Ti.UI.createLabel({ | |
color : 'red', | |
font : { | |
fontFamily : 'Arial', | |
fontSize : 25, | |
fontWeight : 'normal' | |
}, | |
text : infoData[i].description, | |
top : 60, | |
left : 10, | |
right : 60 | |
}); | |
row.add(discription); | |
var del = Ti.UI.createButton({ | |
title : 'Del', | |
right : 2, | |
height : 40, | |
id : "delrow", | |
width : 50, | |
myrow : row | |
}); | |
row.add(del); | |
tableData.push(row); | |
} | |
tableView.setData(tableData); | |
} | |
tableView.addEventListener('click', function(e) { | |
// Working Here for Delete date | |
if (e.source.id == "delrow") { | |
var customer_id = e.rowData.customer_id; | |
Ti.App.Properties.setString('customer_id', customer_id); | |
//alert('id='+newData); | |
var dialog = Ti.UI.createAlertDialog({ | |
cancel : 1, | |
buttonNames : ['Confirm', 'Cancel'], | |
message : 'Would you like to delete the file?', | |
title : 'Warning' | |
}); | |
dialog.addEventListener('click', function(e) { | |
if (e.index === e.source.cancel) { | |
} else { | |
// tableView.deleteRow(e.source.myrow); | |
var db = require('lib/db'); | |
//alert(e.source); | |
var cu_id = Ti.App.Properties.getString('customer_id'); | |
db.deletinfo(cu_id); | |
Ti.App.fireEvent('tableUpdate'); | |
var ACS = require('lib/acs'); | |
ACS.remove(cu_id); | |
} | |
}); | |
dialog.show(); | |
} | |
// working here for update data | |
else { | |
var dataEditt = require('ui/common/dataEdit'); | |
dataEditt.edit(e.rowData.title, e.rowData.details, e.rowData.customer_id); | |
} | |
}); | |
win.add(tableView); | |
return win; | |
} | |
module.exports = MasterView; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment