javascript:prometheus
差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
javascript:prometheus [2012/01/19 22:17] – 作成 dgbadmin | javascript:prometheus [2012/04/16 21:45] (現在) – 0.2.0 dgbadmin | ||
---|---|---|---|
行 1: | 行 1: | ||
====== Titanium Mobileに神の火を! - Prometheus.js ====== | ====== Titanium Mobileに神の火を! - Prometheus.js ====== | ||
+ | |||
+ | コメントと更新履歴は[[http:// | ||
{{: | {{: | ||
行 64: | 行 66: | ||
=== パラメータの共通の初期値を指定できる === | === パラメータの共通の初期値を指定できる === | ||
+ | |||
+ | 見た目のデザイン等を後から一括して変えたい時に便利 | ||
<code javascript> | <code javascript> | ||
行 81: | 行 85: | ||
var view = Ti.UI.createView({layout:" | var view = Ti.UI.createView({layout:" | ||
win.add(view); | win.add(view); | ||
- | view.add(Ti.UI.createLabel({text:" | + | view.add(Ti.UI.createLabel({text:" |
- | view.add(Ti.UI.createLabel({text:" | + | view.add(Ti.UI.createLabel({text:" |
var button = Ti.UI.createButton({title:" | var button = Ti.UI.createButton({title:" | ||
button.addEventListener(" | button.addEventListener(" | ||
行 91: | 行 95: | ||
// Prometheus.jsの場合 | // Prometheus.jsの場合 | ||
var win = Pr.win(); | var win = Pr.win(); | ||
+ | Pr.params.label.fontWeight = " | ||
win.add(Pr.view({}, | win.add(Pr.view({}, | ||
- | win.add(Pr.button(" | + | win.add(Pr.button(" |
+ | | ||
+ | })); | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== DBにアクセスする ==== | ||
+ | |||
+ | ローカルのSQLiteに簡単にアクセスできる\\ | ||
+ | DatabaseやResultsetのclose()もしてくれるので楽ちん | ||
+ | |||
+ | <code javascript> | ||
+ | var db = Pr.db(" | ||
+ | |||
+ | // テーブル生成(該当のテーブルが既にある場合は無視される) | ||
+ | db.table(" | ||
+ | |||
+ | // SELECT(パラメータは、取得列、テーブル名、取得条件、その他) | ||
+ | var rows = db.select(" | ||
+ | // 戻り値はResultsetオブジェクトではなく配列なので扱いやすい | ||
+ | for (var i = 0; i < rows; i++) { | ||
+ | var id = rows[i][" | ||
+ | } | ||
+ | |||
+ | // INSERT(パラメータは、テーブル名、登録データ。戻り値は(あれば)連番のキー値) | ||
+ | var id = db.insert(" | ||
+ | |||
+ | // UPDATE(パラメータは、テーブル名、更新値、更新条件。戻り値は更新レコード数) | ||
+ | var count = db.update(" | ||
+ | |||
+ | // DELETE(パラメータは、テーブル名、削除条件。戻り値は削除レコード数) | ||
+ | var count = db.remove(" | ||
+ | // メソッド名が" | ||
+ | |||
+ | // その他のSQLを実行したい場合はTi.Database# | ||
+ | var results = db.execute(sql, | ||
+ | while(rows.isValidRow()){ | ||
+ | var something = rows.field(0); | ||
+ | // 略 | ||
+ | rows.next(); | ||
+ | } | ||
+ | // この場合は勝手にclose()してくれないので注意 | ||
+ | results.close(); | ||
</ | </ | ||
行 126: | 行 173: | ||
* | * | ||
* @see | * @see | ||
- | * @version | + | * @version |
* @copyright 2012 dgbadmin@gmail.com | * @copyright 2012 dgbadmin@gmail.com | ||
* @license | * @license | ||
* | * | ||
- | * See also | + | * See also the references of Titanium Mobile |
* @see http:// | * @see http:// | ||
* @see http:// | * @see http:// | ||
行 142: | 行 189: | ||
/ | / | ||
- | * The utility functions | + | * The wrapper object of Ti.Database |
| | ||
/** | /** | ||
- | * Get the opened | + | * Get a wrapper of a database |
* @param String dbName | * @param String dbName | ||
* @return Object | * @return Object | ||
*/ | */ | ||
Pr.db = function(dbName) { | Pr.db = function(dbName) { | ||
- | return Ti.Database.open(dbName); | + | var wrapper = {dbName: |
+ | |||
+ | /** | ||
+ | * Execute SQL (It is the wrapper of Ti.Database.execute()) | ||
+ | * @param String sql | ||
+ | * @param Object (Optional) value(s) of place holder(s) | ||
+ | * @return Object Ti.Database.Resultset or something Ti.Database.execute() returns | ||
+ | */ | ||
+ | wrapper.execute = function() { | ||
+ | if (!this.db) { | ||
+ | this.db = Ti.Database.open(this.dbName); | ||
+ | this.db.execute.apply = Function.prototype.apply; | ||
+ | } | ||
+ | |||
+ | return this.db.execute.apply(this.db, | ||
+ | }; | ||
+ | /** | ||
+ | * Close the database | ||
+ | */ | ||
+ | wrapper.close = function() { | ||
+ | this.db.close(); | ||
+ | this.db = null; | ||
+ | }; | ||
+ | /** | ||
+ | * Create a table, if it does not exist | ||
+ | * @param String sql SQL to create a table | ||
+ | */ | ||
+ | wrapper.table = function(sql) { | ||
+ | this.execute(' | ||
+ | this.close(); | ||
+ | }; | ||
+ | /** | ||
+ | * Select columns | ||
+ | * @param String columns Columns to select | ||
+ | * @param String from Name of a table | ||
+ | * @param Hash where (Optional) Conditions to select | ||
+ | * @param String ohters (Optional) SQL after WHERE | ||
+ | * @return Array Results | ||
+ | */ | ||
+ | wrapper.select = function(columns, | ||
+ | var params = this._where(where || {}); | ||
+ | params[0] = " | ||
+ | var arr = this.rows2arr(this.execute.apply(this, | ||
+ | this.close(); | ||
+ | return arr; | ||
+ | }; | ||
+ | /** | ||
+ | * Insert a row | ||
+ | * @param String table Name of a table | ||
+ | * @param Hash values Values to insert | ||
+ | * @return Number ID of the last inserted row | ||
+ | */ | ||
+ | wrapper.insert = function(table, | ||
+ | var cols = []; | ||
+ | var vals = []; | ||
+ | var params = ["" | ||
+ | |||
+ | for (var col in values) { | ||
+ | cols.push(col); | ||
+ | vals.push("?" | ||
+ | params.push(values[col]); | ||
+ | } | ||
+ | |||
+ | params[0] = " | ||
+ | this.execute.apply(this, | ||
+ | var rowId = this.db.lastInsertRowId; | ||
+ | this.close(); | ||
+ | return rowId; | ||
+ | }; | ||
+ | /** | ||
+ | * Update colulmns | ||
+ | * @param String table Name of a table | ||
+ | * @param Hash set Values to update | ||
+ | * @param Hash where (Optional) Conditions to update | ||
+ | * @return Number the number of the updated rows | ||
+ | */ | ||
+ | wrapper.update = function(table, | ||
+ | var sets = []; | ||
+ | var params = ["" | ||
+ | |||
+ | for (var col in set) { | ||
+ | sets.push(col + " = ?"); | ||
+ | params.push(set[col]); | ||
+ | } | ||
+ | |||
+ | var cond = this._where(where || {}); | ||
+ | params[0] = " | ||
+ | this.execute.apply(this, | ||
+ | var affected = this.db.rowsAffected; | ||
+ | this.close(); | ||
+ | return affected; | ||
+ | }; | ||
+ | /** | ||
+ | * Delete rows | ||
+ | * @param String table Name of a table | ||
+ | * @param Hash where (Optional) Conditions to delete | ||
+ | * @return Number The number of the deleted rows | ||
+ | */ | ||
+ | wrapper.remove = function(table, | ||
+ | var params = this._where(where || {}); | ||
+ | params[0] = " | ||
+ | this.execute.apply(this, | ||
+ | var affected = this.db.rowsAffected; | ||
+ | this.close(); | ||
+ | return affected; | ||
+ | }; | ||
+ | /** | ||
+ | * Build a SQL of " | ||
+ | * @param Hash hash | ||
+ | * @return Array SQL and values of placeholders | ||
+ | */ | ||
+ | wrapper._where = function(hash) { | ||
+ | var sql = []; | ||
+ | var arr = ["" | ||
+ | |||
+ | for (var key in hash) { | ||
+ | sql.push(key + " = ?"); | ||
+ | arr.push(hash[key]); | ||
+ | } | ||
+ | |||
+ | if (sql.length) { | ||
+ | arr[0] = " WHERE " + sql.join(" | ||
+ | } | ||
+ | |||
+ | return arr; | ||
+ | }; | ||
+ | /** | ||
+ | * Convert a Ti.Database.Resultset to an array | ||
+ | */ | ||
+ | wrapper.rows2arr = function(rows) { | ||
+ | var arr = []; | ||
+ | |||
+ | while(rows.isValidRow()){ | ||
+ | var row = {} | ||
+ | |||
+ | for (var i = 0, cnt = rows.fieldCount; | ||
+ | row[rows.fieldName(i)] = rows.field(i); | ||
+ | } | ||
+ | |||
+ | arr.push(row); | ||
+ | rows.next(); | ||
+ | } | ||
+ | |||
+ | rows.close(); | ||
+ | return arr; | ||
+ | }; | ||
+ | |||
+ | return wrapper; | ||
}; | }; | ||
+ | |||
+ | / | ||
+ | * The utility functions | ||
+ | | ||
/** | /** | ||
- | * Send the HTTP request and get the response | + | * Send a HTTP request and get a response |
* @param String httpMethod " | * @param String httpMethod " | ||
* @param String url | * @param String url | ||
行 183: | 行 381: | ||
}; | }; | ||
/** | /** | ||
- | * Get the width of the display | + | * Get width of the display |
* @return Number | * @return Number | ||
*/ | */ | ||
行 190: | 行 388: | ||
}; | }; | ||
/** | /** | ||
- | * Get the height of the display | + | * Get height of the display |
* @return Number | * @return Number | ||
*/ | */ | ||
行 197: | 行 395: | ||
}; | }; | ||
/** | /** | ||
- | * Merge the hashes | + | * Merge hashes |
* @param Hash data1 | * @param Hash data1 | ||
* @param Hash data2 | * @param Hash data2 | ||
行 220: | 行 418: | ||
}; | }; | ||
/** | /** | ||
- | * Add the click listener | + | * Add a click listener |
* @param Object obj | * @param Object obj | ||
* @param Function onclick | * @param Function onclick | ||
行 547: | 行 745: | ||
* Create a view | * Create a view | ||
* @param Hash params | * @param Hash params | ||
- | * @param Object or Array children (Optional) | + | * @param Object or Array children (Optional) Children of a webView |
* @return Object | * @return Object | ||
*/ | */ |
javascript/prometheus.txt · 最終更新: 2012/04/16 21:45 by dgbadmin