2011/08/02からのアクセス回数 6988
QUnitの調査を進めた結果、データベースの時刻が20秒ほど前後する現象の原因が、 Ti.App.fireEventで送った時にDateの時刻がずれることが分かりました。 また、QUnit.equalsでDate型が正しく処理できないこともあり、recordのatの型 Date型からString型に変更することにしました。
ソースの修正箇所は、
record_db_test.js
this.setRows = function (rows) { var res = []; if ( rows.getRowCount() > 0 ) { Ti.API.debug('Found: ' + rows.getRowCount() ); for (i =0; rows.isValidRow(); i++) { var record = {}; record.id = rows.fieldByName('id'); record.weight = rows.fieldByName('weight'); var time = rows.fieldByName('at', Titanium.Database.FIELD_TYPE_DOUBLE) var at = new Date().setTime(time); record.at = at.toDateString(); res.push(record); rows.next(); } } return res; }; this.update = function(record) { this.open(); var at = new Date(record.at); var res = this.db.execute( 'UPDATE records SET weight=?, at=? WHERE id=?', record.weight, at.getTime(), record.id ); Ti.API.debug('Update DB'); this.close(); return true; }; this.insert = function(record) { this.open(); var at = new Date(record.at); var res = this.db.execute( 'INSERT INTO records (weight, at) VALUES(?,?)', record.weight, at.getTime() ); Ti.API.debug('Insert into DB'); this.close(); };
table_view.js
function updateRecord (records) { のdateLabelの設定部分 var dateLabel = Ti.UI.createLabel({ width: 290, height: 'auto', left: 5, top: 5, fontSize: 6, textAlign: 'right' } ); dateLabel.text = record.at; row.add(dateLabel);
record_window.js
saveButton.addEventListener( 'click', function () { var record = {}; record.id = win.record.id; record.weight = weightField.value; record.at = new Date(dateField.value).toDateString(); Ti.App.fireEvent(win.func, record); win.close(); });
皆様のご意見、ご希望をお待ちしております。