Hi again!
So i want my tableview to fetch new data from my database when new data is added or changed.
it`s named 'highscore' because I used it in another project.
here is my code:(so sorry for the swe/eng comments)
highscore.js
var win = Ti.UI.currentWindow;
Ti.include('app_functions.js'); Ti.include('db_funcs.js');
win.backgroundColor = '#E7FBFF';
var navBar = Ti.UI.createImageView({ top: 0, left: 0, width: '100%', height: '12%', backgroundColor: '#0191b0' });
win.add(navBar);
var btnMenu = Ti.UI.createButton({ top: '5%', left: '5%', title: 'Menu', borderRadius : 4, borderColor : '#fff', width: '50', height: '30', font: fonts[14]['normal'], color: '#fff',
});
btnMenu.addEventListener('click', function() { win.close();
});
win.add(btnMenu);
var btnDelete = Ti.UI.createButton({ top: '5%', right: '5%', font: fonts[14]['normal'], title: 'X', borderRadius : 4, borderColor : '#fff', width: '50', height: '30', color: '#fff',
}); win.add(btnDelete); btnDelete.addEventListener('click', deleteHighscores);
/** UI **/
var textFieldTeam = Ti.UI.createTextField({ borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED, color: '#336699', bottom: '10%', right: '10%', width: '39%', height: '8%', font: fonts[14]['normal'], hintText : 'Antal lag:' });
win.add(textFieldTeam);
var textFieldPersons = Ti.UI.createTextField({ borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED, color: '#336699', bottom: '10%', left: '10%', width: '39%', height: '8%', font: fonts[14]['normal'], hintText : 'Antal i varje lag:' });
win.add(textFieldPersons);
var RandomizeBtn = Ti.UI.createButton({ bottom: '0%', width: '100%', height: '8%', color: '#fff', backgroundColor: '#0191b0', font: fonts[14]['normal'], title: 'Randomize Teams'
});
win.add(RandomizeBtn);
var textField = Ti.UI.createTextField({ borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED, color: '#336699', top: '15%', left: '10%', width: '45%', height: '8%', font: fonts[14]['normal'], hintText : 'Name:' });
win.add(textField);
var saveBtn = Ti.UI.createButton({ top: '15%', right: '10%', width: '22%', height: '8%', color: '#fff', backgroundColor: '#0191b0', font: fonts[14]['normal'], title: 'Add name'
});
win.add(saveBtn);
var savedLabel = Ti.UI.createLabel({ top: '90%', text: '' });
var teamsLabel = Ti.UI.createLabel({ top: '90%', text: '' });
RandomizeBtn.addEventListener('click',function(){ teamsLabel.text = textFieldTeam.value; var antalLag = textFieldTeam.value; Ti.API.info("Antal lag: " + antalLag); Ti.API.info("Antal i varje lag: " + tableRows.length/antalLag); });
saveBtn.addEventListener('click',function(){ savedLabel.text = textField.value; loadHighscores(callback);
saveHighscore({
name: textField.value,
score: 2
});
});
var theTableView = Ti.UI.createTableView({ top: '25%', bottom: '20%', backgroundColor:'#E7FBFF', editable: true
});
win.add(theTableView);
var tableRows = []; function makeRow(name, score) { var row = Ti.UI.createTableViewRow({ height: dp(44) }); if (OS_is_iOS){ row.selectionStyle = Ti.UI.iPhone.TableViewCellSelectionStyle.NONE; }
row.nameLbl = Ti.UI.createLabel({
text: name,//'Name',
color: blackFontColor,
font: fonts[14]['normal'],
left: dp(15)
});
row.add(row.nameLbl);
row.scoreLbl = Ti.UI.createLabel({
text: score,//'Team Nr:',
color: blackFontColor,
font: fonts[14]['normal'],
right: dp(15)
});
row.add(row.scoreLbl);
tableRows.push(row);
}
function makeAllRows(whichDiff) { tableRows = [];
makeRow('Name', "Team NR:");
for (var i = 0; i < allHighscores.length; i++){
if (whichDiff == 6){
makeRow(allHighscores[i].name, allHighscores[i].score);
}else{
makeRow(allHighscores[i].name, allHighscores[i].score);
}
}
theTableView.setData(tableRows);
}
loadHighscores(makeAllRows);
db_funcs.js
var allHighscores = [];
var db = Ti.Database.open('gamedata');
if (OS_is_iOS){ //ingen iCloud backup db.file.remoteBackup = false; }
var delete_database = false;//!!TODO, ska vara false i skarp version if (delete_database){
db.execute('DROP TABLE IF EXISTS highscores');
}
db.execute('CREATE TABLE IF NOT EXISTS highscores (name TEXT, score INTEGER)');
db.close();
function saveHighscore(highscoreData) {
var db = Ti.Database.open('gamedata');
if (OS_is_iOS){
//ingen iCloud backup
db.file.remoteBackup = false;
}
Ti.API.info('INSERT INTO highscores VALUES("'+highscoreData.name+'", '+ highscoreData.score+')');
db.execute('INSERT INTO highscores VALUES("'+highscoreData.name+'", '+ highscoreData.score+')');
//stäng db
db.close();
}
function loadHighscores(callback){
allHighscores = [];
var db = Ti.Database.open('gamedata');
if (OS_is_iOS){
//ingen iCloud backup
db.file.remoteBackup = false;
}
var dbRows = db.execute('SELECT * FROM highscores ORDER BY score DESC');
while (dbRows.isValidRow()) {
var highscoreData = {
name: dbRows.fieldByName('name'),//'Micke',
score: dbRows.fieldByName('score')
};
Ti.API.info(highscoreData);
allHighscores.push(highscoreData);
dbRows.next();
}
dbRows.close();
db.close();
if (callback){
callback();
}
}
function deleteHighscores() { var db = Ti.Database.open('gamedata');
if (OS_is_iOS){
//ingen iCloud backup
db.file.remoteBackup = false;
}
db.execute('DELETE FROM highscores');
db.close();
}