1.概要
この文書では、Buddyアプリ開発者がスクリーン設計においてJavaScriptプログラムの開発に用いるアプリケーションプログラムインタフェース(API)について述べます。
1.1.JavaScript APIの構成
BuddyのJavaScript APIは、スクリーン設計およびサーバー機能設計に用いられます。
スクリーン設計のJavaScript APIは次の構成要素に大別されます。
a. スクリーンオブジェクト
b. スクリーンモジュール
c. モデルオブジェクト
d. apiオブジェクト
e. データベースAPI
f. イベントAPI
g. フィルタAPI
h. 数式API
一方、サーバー機能設計のJavaScript APIはサーバー側で実行する処理を記述するために用いられます。
2.スクリーンオブジェクト
アプリを構成する個々の画面を表すオブジェクトのことを「スクリーンオブジェクト」と呼びます。基本的に1つのスクリーンオブジェクトは1つの画面に対応します。
2.1.スクリーンプログラム
スクリーン設計においてBuddyアプリ開発者が作成するJavaScriptプログラムのことを「スクリーンプログラム」と呼びます。スクリーンプログラムは以下のテンプレートに基づいて作成します。
module.exports = function(api){
var actions = {
// ここにアクションを記述します
};
var events = {
onLoad: function(){
},
onUnload: function(){
},
onResize: function(){
},
// ここにイベントハンドラを記述します
radioname: {
// ここにラジオボタン群のイベントハンドラを記述します
}
};
var formulas = {
// ここに数式ハンドラを記述します
};
return {
"actions": actions,
"events": events,
"formulas": formulas
};
};
スクリーンプログラムは、全体が1つの関数定義になっています。この関数の形で記述されるオブジェクトを「スクリーンオブジェクト」と呼びます。関数のapi引数には、スクリーンプログラム開発に用いる種々のJavaScriptライブラリへのアクセスを提供する「apiオブジェクト」が渡されます。apiオブジェクトの詳細については【apiオブジェクト】の節を参照してください。
var actions = { ... から始まるブロックにはアクションを記述します。アクションには、スクリーンオブジェクトのプログラム中で繰り返し使うサブルーチンや、スクリーンの外側に公開する関数などがあります。
var events = { ... から始まるブロックにはイベントハンドラを記述します。テンプレートにはonLoad、onUnload、onResizeの3つのイベント(後述)に対するハンドラの雛形があらかじめ用意されています。ボタンやテキストボックスなどのスクリーンモジュールから発生するイベントを受け取るためのイベントハンドラもこのブロックに記述します。イベントハンドラの記述方法については【イベントAPI】の節を参照してください。eventsブロック内のradioname: { ... で始まる部分にはラジオボタン群のイベントハンドラを記述します。詳しくは【ラジオボタン群の操作】の節を参照してください。
var formulas = { ... から始まるブロックには数式ハンドラを記述します。数式ハンドラの記述方法については【数式API】の節を参照してください。
2.2.メソッド
本項ではスクリーンオブジェクトのメソッドについて説明します。
2.2.1.deserialize
deserializeメソッドはスクリーンを構成するすべてのモジュールの現在の状態を復元します。
this.deserialize(data)
data引数には後述のserializeメソッドで得られる文字列を与えます。
2.2.2.emit
emitメソッドはイベントを発出します。
this.emit(name, data)
name引数にはイベント名を文字列で与えます。data引数にはイベントハンドラに渡されるデータ(オブジェクト)を与えます。
2.2.3.getItemDataForDB
getItemDataForDBメソッドはDBテーブル・DBビューのカラムに関連付けられたスクリーンモジュールの値を一括して取得します。このメソッドの呼び出し方法には次の2通りがあります。
this.getItemDataForDB(modelName)
this.getItemDataForDB(cols, modelName)
modelName引数にはDBテーブル・DBビューの名前を与えます。cols引数にはカラム名の配列を与えます。戻り値は {カラム名: 値, …} の形式のオブジェクトです。
このメソッドは対象カラムが配列かどうかを見てスクリーンモジュールの値を次のように処理します。
- カラムが配列の場合
- スクリーンモジュールの値が配列でなければ配列化します(値のチェックは配列要素毎に行います)。
- カラムが配列でない場合
- スクリーンモジュールの値が配列のとき、空配列ならnull、1要素の配列ならその要素、複数要素の配列ならコンマ(,)で連結した文字列に変換します。
このメソッドはスクリーンオブジェクトの【this.radionames.<name>.setTable】および【this.radionames.<name>.setColumn】でラジオボタン群に関連付けられたDBテーブル・DBビューのカラムも処理対象とします。
2.2.4.getScreenInfo
getScreenInfoメソッドはスクリーンに関する情報を返します。
this.getScreenInfo()
戻り値は以下のプロパティから成るオブジェクトです。
- PID
- スクリーンコンテナとボックスの入れ子に対応した名前。
- ScreenName
- スクリーン名。
- ScreenDisplayname
- スクリーンの表示名。
- ScreenType
- スクリーンタイプ("PAGE"または"CONTAINER")。
- ScreenLayout
- スクリーンレイアウトの種別("box"または"grid")。
- ScreenMinWidth
- スクリーンオプションの「モバイル対応幅」の値。
2.2.5.getParams
getParamsメソッドはURLのパラメータ部分を返します。
this.getParams()
戻り値は{変数名: 値, ...}の形式のオブジェクトです。
2.2.6.getQuery
getQueryメソッドはURL末尾のクエリ部分を返します。
this.getQuery()
戻り値は{変数名: 値, ...}の形式のオブジェクトです。
2.2.7.serialize
serializeメソッドはスクリーンを構成するすべてのモジュールの現在の状態をひとつの文字列にまとめます(この処理をシリアライズと呼びます)。
this.serialize()
別のスクリーンに移って戻ってきたときにスクリーンの状態を元に戻すスクリーンプログラムの例を以下に示します。
onUnload: function(){
api.store["serialize"] = this.serialize();
},
onLoad: function(){
var data = api.store["serialize"];
if (data) {
this.deserialize(data);
}
},
onUnload関数(Uploadイベントハンドラ)はスクリーンを閉じるとき(たとえば別のスクリーンへ移るとき)に呼ばれます。この関数の中でserializeメソッドを用いてスクリーンを構成する全モジュールの現在の状態をシリアライズしてapi.storeモジュールのキーバリューストアに保存します。onLoad関数(Loadイベントハンドラ)はスクリーンを開くとき(たとえば別のスクリーンから戻ってきたとき)に呼ばれます。この関数の中でapi.storeモジュールのキーバリューストアを調べて、もしシリアライズの結果が保存されていたら、deserializeメソッドを用いてスクリーンを構成するモジュールの状態を復元します。
2.2.8.setItemDataFromDB
setItemDataFromDBメソッドはDBテーブル・DBビューのカラムに関連付けられたスクリーンモジュールの値を一括して設定します。このメソッドの呼び出し方法には次の2通りがあります。
this.setItemDataFromDB(modelName, data)
this.setItemDataFromDB(cols, data)
modelName引数にはDBテーブル・DBビューの名前を与えます。data引数には設定する値を {カラム名: 値, …} の形式のオブジェクトで与えます。cols引数には以下のプロパティから成るオブジェクトを要素とする配列を与えます。
- name
- スクリーンモジュール名
- source
- data引数のカラム名
このメソッドはスクリーンオブジェクトの【this.radionames.<name>.setTable】および【this.radionames.<name>.setColumn】でラジオボタン群に関連付けられたDBテーブル・DBビューのカラムも処理対象とします。
2.2.9.transitionTo
transitionToメソッドは現在のスクリーンから別のスクリーンへ移行します。
transitionTo(screenName, params, query)
screenName引数にはスクリーン名を文字列で与えます。params引数にはURLの追加パスとしてデータを渡すときに使用するパラメータを与えます。ただし、どのような追加パスを使用するかをあらかじめ設定しておく必要があり、今のところアプリのスクリーンについてこの設定をする手段が用意されていないため使えません。よってparams引数には空のオブジェクト{}を指定してください。query引数にはURLの末尾に「?変数=値&...」の形式でデータを渡すためのクエリを{変数名: 値, ...}の形式のオブジェクトで与えます。params引数とquery引数は省略できます。
2.3.イベント
本項ではスクリーンオブジェクトから発生するイベントについて説明します。
2.3.1.Iterate
Iterateイベントは、スクリーンコンテナモジュールのiterateアクションが実行されたときに生じます。イベントハンドラは次のように定義します。
onIterate: function(data, index){ ... }
data引数にはスクリーンコンテナモジュールのiterateアクションの引数に与えたデータ配列の要素、index引数には何番目の反復かを表す値(最初が0)が渡されます。
2.3.2.Load
Loadイベントはスクリーンが表示されたときに生じます。イベントハンドラは次のように定義します。
onLoad: function(){ ... }
2.3.3.Resize
Resizeイベントはスクリーンが表示されたときと縦横サイズが変更されたときに生じます。イベントハンドラは次のように定義します。
onResize: function(){ ... }
2.3.4.Unload
Unloadイベントはスクリーンが閉じられるときに生じます。イベントハンドラは次のように定義します。
onUnload: function(){ ... }
2.4.プロパティ
本項ではスクリーンオブジェクトのプロパティについて説明します。
2.4.1.items
スクリーンオブジェクトのitemsプロパティ(this.items)は、そのスクリーンを構成するボタンやテキストボックスなどの要素(スクリーンモジュール)へのアクセスを提供するオブジェクトです。たとえば、BUTTON1という名前のボタンモジュールは次のように参照できます。
this.items.BUTTON1
スクリーンモジュールには各種のアクション(後述)が定義されています。たとえばボタンモジュールには値を設定するsetValueアクションが設けられています。このアクションは次のように実行することができます。
this.items.BUTTON1.setValue("apple");
2.4.2.models
スクリーンオブジェクトのmodelsプロパティ(this.models)は、アプリで定義されたテーブルおよびビューの設計情報へのアクセスを提供するオブジェクトです。
2.4.3.radionames
スクリーンオブジェクトのradionamesプロパティ(this.radionames)は、同じradioname属性をもつラジオボタン群について、現在選択されているラジオボタンのアイテム名やキャプション(caption)を得るためのメソッドを提供するオブジェクトです。詳しくは【ラジオボタン群の操作】の節を参照してください。
3.スクリーンモジュール
スクリーンモジュールは、スクリーンを構成する部品を表すオブジェクトです。スクリーンモジュールには、大きく4つの用途別に以下のものがあります。
- レイアウト用モジュール
【横配置ボックス】
【縦配置ボックス】
【自由配置ボックス】
【水平区切り線】
【垂直区切り線】 - データ入力用モジュール
【ボタン】
【データインプット】
【テキストボックス】
【チェックボックス】
【ラジオボタン】
【プルダウンリスト】
【コンボボックス】
【トグルスイッチ】
【スライダー】
【日時選択】
【色選択】
【DBレコードセレクタ】
【タブ】
【メニュー】
【ファイル選択】 - データ表示用モジュール
【画像】
【文字列】
【数式】
【リスト】
【箇条書き】
【テーブル】
【DBテーブル】
【スピン】
【プログレスバー】
【カレンダー】
【タイムテーブル】
【クロス集計】
【地図】
【グラフ】
【キャンバス】 - 埋め込み用モジュール
【スクリーンコンテナ】
【IFrame】 - モジュール名をクリックするとそのスクリーンモジュールの節にジャンプします。
3.1.横配置ボックス
横配置ボックスモジュールは、入れ子になった他のスクリーンモジュール(子モジュール)を横に並べて画面上に配置するレイアウト用のモジュールです。子モジュールは横1列分の幅の合計が横配置ボックスモジュールの幅を超えないように折り返して配置されます。
3.1.1.アクション
本項では横配置ボックスモジュールのアクションについて説明します。
3.1.1.1.setStyle
横配置ボックスのスタイルを設定します。style引数にはスタイルオブジェクトを与えます。
setStyle(style)
たとえば、HORIZONTAL1というモジュール名の横配置ボックスにスタイルを設定するには次のように記述します。
this.items.HORIZONTAL1.setStyle({ width: "300px", height: "400px" });
3.1.2.イベント
本項では横配置ボックスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.1.2.1.Click
Clickイベントはモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.1.2.2.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
3.1.2.3.DoubleClick
DoubleClickイベントはモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.1.2.4.MouseDown
MouseDownイベントはモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
3.1.2.5.MouseUp
MouseUpイベントはモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
3.2.縦配置ボックス
縦配置ボックスモジュールは、入れ子になった他のスクリーンモジュール(子モジュール)を縦に並べて画面上に配置するレイアウト用のモジュールです。前項の横配置ボックスモジュールとは異なり、子モジュールの高さの合計が縦配置ボックスモジュールの高さを超えても折り返しはされません。
3.2.1.アクション
本項では縦配置ボックスモジュールのアクションについて説明します。
3.2.1.1.setStyle
縦配置ボックスのスタイルを設定します。style引数にはスタイルオブジェクトを与えます。
setStyle(style)
たとえば、VERTICAL1というモジュール名の縦配置ボックスにスタイルを設定するには次のように記述します。
this.items.VERTICAL1.setStyle({ width: "300px", height: "400px" });
3.2.2.イベント
本項では縦配置ボックスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.2.2.1.Click
Clickイベントはモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.2.2.2.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.2.2.3.DoubleClick
DoubleClickイベントはモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.2.2.4.MouseDown
MouseDownイベントはモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.2.2.5.MouseUp
MouseUpイベントはモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.3.自由配置ボックス
自由配置ボックスモジュールは、入れ子になった他のスクリーンモジュール(子モジュール)をモジュール枠内の自由な位置に配置できるレイアウト用のモジュールです。
3.3.1.アクション
本項では自由配置ボックスモジュールのアクションについて説明します。
3.3.1.1.setStyle
自由配置ボックスのスタイルを設定します。style引数にはスタイルオブジェクトを与えます。
setStyle(style)
たとえば、FREE1というモジュール名の自由配置ボックスにスタイルを設定するには次のように記述します。
this.items.FREE1.setStyle({ width: "300px", height: "400px" });
3.3.2.イベント
本項では自由配置ボックスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.3.2.1.Click
Clickイベントはモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.3.2.2.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.3.2.3.DoubleClick
DoubleClickイベントはモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.3.2.4.MouseDown
MouseDownイベントはモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.3.2.5.MouseUp
MouseUpイベントはモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.4.水平区切り線
水平区切り線モジュールは、画面を区切る横線を引くレイアウト用のモジュールです。
3.4.1.アクション
本項では水平区切り線モジュールのアクションについて説明します。
3.4.1.1.setStyle
setStyleアクションは、水平区切り線のスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.4.2.イベント
本項では水平区切り線モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.4.2.1.Click
Clickイベントは水平区切り線がクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.4.2.2.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.4.2.3.DoubleClick
DoubleClickイベントは水平区切り線がダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.4.2.4.MouseDown
MouseDownイベントは水平区切り線の上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.4.2.5.MouseUp
MouseUpイベントは水平区切り線の上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.5.垂直区切り線
垂直区切り線モジュール、画面を区切る縦線を引くレイアウト用のモジュールです。
3.5.1.アクション
本項では垂直区切り線モジュールのアクションについて説明します。
3.5.1.1.setStyle
setStyleアクションは、垂直区切り線のスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.5.2.イベント
本項では垂直区切り線モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.5.2.1.Click
Clickイベントは垂直区切り線がクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.5.2.2.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.5.2.3.DoubleClick
DoubleClickイベントは垂直区切り線がダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.5.2.4.MouseDown
MouseDownイベントは垂直区切り線の上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.5.2.5.MouseUp
MouseUpイベントは垂直区切り線の上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.6.ボタン
ボタンモジュールは、画面上にボタンを設けるモジュールです。
3.6.1.アクション
本項ではボタンモジュールのアクションについて説明します。
3.6.1.1.setDisabled
setDisabledアクションは、ボタンを押せない無効状態に設定します。
setDisabled(value)
value引数には真偽値を与えます。valueが真のときは無効状態になり、それ以外のときは無効状態が解除されます。
3.6.1.2.setStyle
setStyleアクションは、ボタンのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.6.1.3.setValue
setValueアクションは、ボタン内に表示されるラベル文字列を設定します。
setValue(value)
value引数にはラベル文字列を与えます。
3.6.2.イベント
本項ではボタンモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.6.2.1.Blur
Blurイベントはボタンから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onBlur: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.6.2.2.Click
Clickイベントはモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.6.2.3.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.6.2.4.DoubleClick
DoubleClickイベントはモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.6.2.5.Focus
Focusイベントはボタンに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onFocus: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.6.2.6.MouseDown
MouseDownイベントはモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.6.2.7.MouseUp
MouseUpイベントはモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.7.データインプット
データインプットモジュールは、DBテーブルのカラムに関連付けれたデータ入力欄を設けるモジュールです。データの入力方法は、カラムの設定に応じてテキストボックス、チェックボックス、プルダウンメニュー、日付選択などの入力方法の中から自動的に選ばれます。
3.7.1.アクション
本項ではデータインプットモジュールのアクションについて説明します。
3.7.1.1.getValue
getValueアクションは、データ入力欄に入っている値を返します。
getValue()
3.7.1.2.setDisabled
setDisabledアクションは、データ入力欄を使用できない無効状態に設定します。
setDisabled(value)
value引数には真偽値を与えます。valueが真のときは無効状態になり、それ以外のときは無効状態が解除されます。
3.7.1.3.setFilter
setFilterアクションは、データ入力欄に適用するフィルタを設定します。
setFilter(filters)
filters引数にはフィルタ名を文字列で与えます。フィルタ名はカンマで区切って複数指定できます。フィルタの詳細については後述の【フィルタAPI】の節を参照してください。
データ入力欄は(1)HTMLのプルダウンメニュー、チェックボックス、画像として表示される場合と(2)テキストボックスとして表示される場合があります。(1)の場合はフィルタ設定の有無による違いはありません。(2)の場合はフィルタを指定すると次のように動作します。
・入力フォーカスがある時はフィルタを適用しません。
・入力フォーカスが外れた時はフィルタを適用します。
・getValue()やsetValue()の値にはフィルタを適用しません。
3.7.1.4.setFocus
setFocusアクションは、データ入力欄に入力フォーカスを移します。
setFocus()
3.7.1.5.setReadOnly
setReadOnlyアクションは、データ入力欄を読み取り専用に設定します。
setReadOnly(value)
value引数には真偽値を与えます。valueが真のときは読み取り専用になり、それ以外のときは読み取り専用状態が解除されます。
3.7.1.6.setStyle
setStyleアクションは、データ入力欄のスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.7.1.7.setValue
setValueアクションは、データ入力欄の値を設定します。
setValue(value)
value引数には設定する値を与えます。データ入力欄の値が変わると後述の【Change】イベントが発生します。
3.7.2.イベント
本項ではデータインプットモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.7.2.1.Blur
Blurイベントはデータ入力欄から入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onBlur: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.7.2.2.Change
Changeイベントはデータ入力欄の値が変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
- evt.cause
- "set"(setValueアクションによる変更)または"user"(ユーザによる変更)
3.7.2.3.Click
Clickイベントはデータ入力欄がクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.7.2.4.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.7.2.5.DoubleClick
DoubleClickイベントはモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.7.2.6.Focus
Focusイベントはデータ入力欄に入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onFocus: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.7.2.7.KeyDown
KeyDownイベントはモジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.7.2.8.KeyPress
KeyPressイベントはモジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyPress: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.7.2.9.KeyUp
KeyUpイベントはモジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.7.2.10.MouseDown
MouseDownイベントはモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.7.2.11.MouseUp
MouseUpイベントはモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.8.テキストボックス
テキストボックスモジュールは、画面上に文字列の入力欄を設けるモジュールです。
3.8.1.アクション
本項ではテキストボックスモジュールのアクションについて説明します。
3.8.1.1.getValue
getValueアクションは、テキストボックスに入っている値を返します。
getValue()
3.8.1.2.setDisabled
setDisabledアクションは、テキストボックスを使用できない無効状態に設定します。
setDisabled(value)
value引数には真偽値を与えます。valueが真のときは無効状態になり、それ以外のときは無効状態が解除されます。
3.8.1.3.setFilter
setFilterアクションは、テキストボックスに適用するフィルタを設定します。
setFilter(filters)
filters引数にはフィルタ名を文字列で与えます。フィルタ名はカンマで区切って複数指定できます。フィルタの詳細については後述の【フィルタAPI】の節を参照してください。
フィルタが設定されたテキストボックスは次のように動作します。
・入力フォーカスがある時はフィルタを適用しません。
・入力フォーカスが外れた時はフィルタを適用します。
・getValue()やsetValue()の値にはフィルタを適用しません。
3.8.1.4.setFocus
setFocusアクションは、テキストボックスに入力フォーカスを移します。
setFocus()
3.8.1.5.setReadOnly
setReadOnlyアクションは、テキストボックスを読み取り専用に設定します。
setReadOnly(value)
value引数には真偽値を与えます。valueが真のときは読み取り専用になり、それ以外のときは読み取り専用状態が解除されます。
3.8.1.6.setStyle
setStyleアクションは、テキストボックスのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.8.1.7.setValue
setValueアクションは、テキストボックスの値を設定します。
setValue(value)
value引数には設定する値を与えます。テキストボックスの値が変わると後述の【Change】イベントが発生します。
3.8.2.イベント
本項ではテキストボックスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.8.2.1.Blur
Blurイベントはテキストボックスから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onBlur: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.8.2.2.Change
Changeイベントはテキストボックスの値が変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
- evt.cause
- "set"(setValueアクションによる変更)または"user"(ユーザによる変更)
3.8.2.3.Click
Clickイベントはテキストボックスがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.8.2.4.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.8.2.5.DoubleClick
DoubleClickイベントはテキストボックスがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.8.2.6.Focus
Focusイベントはテキストボックスに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onFocus: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.8.2.7.KeyDown
KeyDownイベントはテキストボックス上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.8.2.8.KeyPress
KeyPressイベントはテキストボックス上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyPress: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.8.2.9.KeyUp
KeyUpイベントはテキストボックス上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.8.2.10.MouseDown
MouseDownイベントはテキストボックス上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.8.2.11.MouseUp
MouseUpイベントはテキストボックス上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.9.チェックボックス
チェックボックスモジュールは、画面上に真偽値(オン・オフ)の入力欄を設けるモジュールです。
3.9.1.アクション
本項ではチェックボックスモジュールのアクションについて説明します。
3.9.1.1.getChecked
getCheckedアクションは、チェックボックスに入っている値を返します。
getChecked()
3.9.1.2.setCaption
setCaptionアクションは、チェックボックスのラベル文字列(キャプション)値を設定します。
setCaption(text)
text引数には設定するラベル文字列を与えます。
3.9.1.3.setChecked
setCheckedアクションは、チェックボックスの値を設定します。
setChecked(value)
value引数には設定する値(trueまたはfalse)を与えます。チェックボックスの値が変わると後述の【Change】イベントが発生します。
3.9.1.4.setDisabled
setDisabledアクションは、チェックボックスを操作できない無効状態に設定します。
setDisabled(value)
value引数には真偽値を与えます。valueが真のときは無効状態になり、それ以外のときは無効状態が解除されます。
3.9.1.5.setStyle
setStyleアクションは、チェックボックスのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.9.2.イベント
本項ではチェックボックスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.9.2.1.Blur
Blurイベントはチェックボックスから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onBlur: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.9.2.2.Change
Changeイベントはチェックボックスの値が変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
- evt.cause
- "set"(setCheckedアクションによる変更)または"user"(ユーザによる変更)
3.9.2.3.Click
Clickイベントはチェックボックスがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.9.2.4.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.9.2.5.DoubleClick
DoubleClickイベントはチェックボックスがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.9.2.6.Focus
Focusイベントはチェックボックスに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onFocus: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.9.2.7.MouseDown
MouseDownイベントはチェックボックス上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.9.2.8.MouseUp
MouseUpイベントはチェックボックス上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.10.ラジオボタン
ラジオボタンモジュールは、画面上にラジオボタンを設けるモジュールです。複数のラジオボタンに同じradioname属性(ラジオボタン名)を付けて1つのグループにします。同じグループ内のラジオボタンは1つだけが選択された状態(オン)になり残りは選択されていない状態(オフ)になります。グループ単位のラジオボタンの操作については【ラジオボタン群の操作】の節を参照してください。
3.10.1.アクション
本項ではラジオボタンモジュールのアクションについて説明します。
3.10.1.1.getChecked
getCheckedアクションは、ラジオボタンに入っている値を返します。
getChecked()
3.10.1.2.setCaption
setCaptionアクションは、ラジオボタンのラベル文字列(キャプション)値を設定します。
setCaption(text)
text引数には設定するラベル文字列を与えます。
3.10.1.3.setChecked
setCheckedアクションは、ラジオボタンの値を設定します。
setChecked(value)
value引数には設定する値(trueまたはfalse)を与えます。ラジオボタンの値が変わると後述の【Change】イベントが発生します。
3.10.1.4.setStyle
setStyleアクションは、ラジオボタンのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.10.2.イベント
本項ではラジオボタンモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.10.2.1.Blur
Blurイベントはラジオボタンから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onBlur: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.10.2.2.Change
Changeイベントはラジオボタンの値が変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
- evt.cause
- "set"(setCheckedアクションによる変更)または"user"(ユーザによる変更)
3.10.2.3.Click
Clickイベントはラジオボタンがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.10.2.4.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.10.2.5.DoubleClick
DoubleClickイベントはラジオボタンがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.10.2.6.Focus
Focusイベントはラジオボタンに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onFocus: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.10.2.7.MouseDown
MouseDownイベントはラジオボタン上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.10.2.8.MouseUp
MouseUpイベントはラジオボタン上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.10.3.ラジオボタン群の操作
スクリーンオブジェクトのradionamesプロパティ(this.radionames)は、同じradioname属性(ラジオボタン名)を持つラジオボタン群について、現在選択されているラジオボタンのアイテム名やキャプション(caption)を得るためのメソッドを提供します。例えば、radionameがtestのラジオボタン群に関して現在選択されているラジオボタンのキャプションを得るには次のようなスクリプトを記述します。
var caption = this.radionames.test.getCheckedCaption();
また、スクリーンスクリプトのeventsの中に次のようにradioname: {... で始まるオブジェクトの形でradioname単位のonChangeイベントハンドラを記述します。
var events = {
radioname: {
test_onChange: function(){
// ここにradionameがtestのラジオボタン群が変化したときの処理を記述する
},
},
}
同じラジオボタン名(以下、<name>と表記)を持つラジオボタン群について次のメソッドが利用できます。
3.10.3.1.getChecked
getCheckedメソッドは選択されたラジオボタンのアイテム名とキャプションを返します。
this.radionames.<name>.getChecked()
このメソッドは以下のプロパティからなるオブジェクトを返します。
- name
- アイテム名
- caption
- キャプション
3.10.3.2.getCheckedCaption
getCheckedCaptionメソッドは選択されたラジオボタンのキャプションを返します。
this.radionames.<name>.getCheckedCaption()
3.10.3.3.getCheckedName
getCheckedNameメソッドは選択されたラジオボタンのアイテム名を返します。
this.radionames.<name>.getCheckedName()
3.10.3.4.setCheckedCaption
setCheckedCaptionメソッドは指定されたキャプションを持つラジオボタンを選択された状態にします。
this.radionames.<name>.setCheckedCaption(caption)
caption引数には選択状態にするラジオボタンのキャプションを与えます。
3.10.3.5.setColumn
setColumnメソッドはラジオボタン群をDBテーブル・DBビューのカラムに関連付けます。
this.radionames.<name>.setColumn(column)
column引数には後述の【setTable】メソッドで指定したDBテーブル・DBビューのカラムの名前を文字列で与えます。カラムの関連付けを行うと【getItemDataForDB】および【setItemDataFromDB】による処理の対象になります。
3.10.3.6.setTable
setTableメソッドはラジオボタン群をDBテーブル・DBビューに関連付けます。
this.radionames.<name>.setTable(table)
table引数にはDBテーブル・DBビューの名前を文字列で与えます。カラムの関連付けを行うには前述の【setColumn】メソッドを用います。
3.11.プルダウンリスト
プルダウンリストモジュールは、画面上にプルダウン方式の選択肢の入力欄を設けるモジュールです。選択肢は次の2つの方法で指定できます。
a. 選択肢を配列で与える。
b. DBテーブル・ビューのカラムから読んだデータを選択肢とする。
3.11.1.アクション
本項ではプルダウンリストモジュールのアクションについて説明します。
3.11.1.1.getSelectedDBValue
getSelectedDBValueアクションは、プルダウンリストの現在の値に対応するDBテーブル・ビューのデータ行について、指定されたカラムの値を返します。このアクションはプルダウンリストの選択肢をDBテーブル・ビューのカラムから読む場合にのみ利用できます。
getSelectedDBValue(colname)
colname引数にはカラム名を指定します。プルダウンリストの選択肢を表示するためにデータベースから読み込んだデータを再利用するので、アプリケーションとサーバの間でデータをやりとりすることなく高速に動作します。
3.11.1.2.getValue
getValueアクションは、プルダウンリストに入っている値を返します。
getValue()
3.11.1.3.reloadDB
reloadDBアクションは、プルダウンリストの選択肢をDBテーブル・ビューから読み直します。
reloadDB()
3.11.1.4.setDisabled
setDisabledアクションは、プルダウンリストを操作できない無効状態に設定します。
setDisabled(value)
value引数には真偽値を与えます。valueが真のときは無効状態になり、それ以外のときは無効状態が解除されます。
3.11.1.5.setOptions
setOptionsアクションは、プルダウンリストのオプションを設定します。
setOptions(options)
options引数には次の2通りの方法でプルダウンリストのオプションを与えます。
a. 選択肢を配列で与える
次のプロパティからなるオブジェクトの配列をoptionsとして指定します。
name: 表示文字列
value: 値
b. DBテーブル・ビューのカラムから読んだデータを選択肢とする
次のプロパティからなるオブジェクトをoptionsとして指定します。
modelname: DBテーブル・ビュー名
columnname: 次のプロパティからなるオブジェクト
name: 名前のカラム名
value: 値のカラム名
num: 最大件数
useCache: キャッシュ有効
useEmpty: 先頭に空白の選択肢を挿入
3.11.1.6.setReadOnly
setReadOnlyアクションは、プルダウンリストを読み取り専用に設定します。
setReadOnly(value)
value引数には真偽値を与えます。valueが真のときは読み取り専用になり、それ以外のときは読み取り専用状態が解除されます。
3.11.1.7.setStyle
setStyleアクションは、プルダウンリストのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.11.1.8.setValue
setValueアクションは、プルダウンリストの値を設定します。
setValue(value)
value引数には設定する値を与えます。プルダウンリストの値が変わると後述の【Change】イベントが発生します。
3.11.2.イベント
本項ではプルダウンリストモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.11.2.1.Blur
Blurイベントはプルダウンリストから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onBlur: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.11.2.2.Change
Changeイベントは選択された値が変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
- evt.cause
- "set"(setValue/setOptionsアクションによる変更)または"user"(ユーザによる変更)
3.11.2.3.Click
Clickイベントはプルダウンリストがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.11.2.4.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.11.2.5.DoubleClick
DoubleClickイベントはプルダウンリストがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.11.2.6.Focus
Focusイベントはプルダウンリストに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onFocus: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.11.2.7.KeyDown
KeyDownイベントはプルダウンリスト上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.11.2.8.KeyPress
KeyPressイベントはプルダウンリスト上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyPress: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.11.2.9.KeyUp
KeyUpイベントはプルダウンリスト上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.11.2.10.Load
Loadイベントはプルダウンリストの選択肢がDBテーブル・ビューのカラムから読み込まれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onLoad: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティには読み込まれたデータに関する情報が渡されます。
- evt.defaultValue
- 読み込まれた値カラムの最初の値(デフォルト値)。読み込まれた件数が0のときはundefined。
3.11.2.11.MouseDown
MouseDownイベントはプルダウンリスト上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.11.2.12.MouseUp
MouseUpイベントはプルダウンリスト上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.12.コンボボックス
コンボボックスモジュールは、プルダウンリストとテキストボックスの機能を合わせ持つ入力欄を画面上に設けるモジュールです。プルダウンリストモジュールと同様に、選択肢は次の2つの方法で指定できます。
a. 選択肢を配列で与える
b. DBテーブル・ビューのカラムから読んだデータを選択肢とする。
また、選択肢にない文字列をテキストボックスモジュールと同様に自由に入力できます。
3.12.1.アクション
本項ではコンボボックスモジュールのアクションについて説明します。
3.12.1.1.getSelectedDBValue
getSelectedDBValueアクションは、コンボボックスの現在の値に対応するDBテーブル・ビューのデータ行について、指定されたカラムの値を返します。このアクションはコンボボックスの選択肢をDBテーブル・ビューのカラムから読む場合にのみ利用できます。
getSelectedDBValue(colname)
colname引数にはカラム名を指定します。コンボボックスの選択肢を表示するためにデータベースから読み込んだデータを再利用するので、アプリケーションとサーバの間でデータをやりとりすることなく高速に動作します。
3.12.1.2.getValue
getValueアクションは、コンボボックスに入っている値を返します。
getValue()
3.12.1.3.reloadDB
reloadDBアクションは、コンボボックス内のプルダウンリストの選択肢をDBテーブル・ビューから読み直します。
reloadDB()
3.12.1.4.setOptions
setOptionsアクションは、コンボボックス内のプルダウンリストのオプションを設定します。
setOptions(options)
options引数には次の2通りの方法でプルダウンリストのオプションを与えます。
a. 選択肢を配列で与える
次のプロパティからなるオブジェクトの配列をoptionsとして指定します。
name: 表示文字列
value: 値
b. DBテーブル・ビューのカラムから読んだデータを選択肢とする
次のプロパティからなるオブジェクトをoptionsとして指定します。
modelname: DBテーブル・ビュー名
columnname: 次のプロパティからなるオブジェクト
name: 名前のカラム名
value: 値のカラム名
num: 最大件数
useCache: キャッシュ有効
useEmpty: 先頭に空白の選択肢を挿入
3.12.1.5.setReadOnly
setReadOnlyアクションは、コンボボックスを読み取り専用に設定します。
setReadOnly(value)
value引数には真偽値を与えます。valueが真のときは読み取り専用になり、それ以外のときは読み取り専用状態が解除されます。
3.12.1.6.setStyle
setStyleアクションは、コンボボックスモジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.12.1.7.setValue
setValueアクションは、コンボボックスの値を設定します。
setValue(value)
value引数には設定する値を与えます。コンボボックスの値が変わると後述の【Change】イベントが発生します。
3.12.2.イベント
本項ではコンボボックスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.12.2.1.Blur
Blurイベントはコンボボックスから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onBlur: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.12.2.2.Change
Changeイベントはコンボボックスの値が変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
- evt.cause
- "set"(setValue/setOptionsアクションによる変更)または"user"(ユーザによる変更)
3.12.2.3.Click
Clickイベントはコンボボックスがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.12.2.4.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.12.2.5.DoubleClick
DoubleClickイベントはコンボボックスがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.12.2.6.Focus
Focusイベントはコンボボックスに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onFocus: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.12.2.7.KeyDown
KeyDownイベントはコンボボックス上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.12.2.8.KeyPress
KeyPressイベントはコンボボックス上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyPress: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.12.2.9.KeyUp
KeyUpイベントはコンボボックス上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.12.2.10.Load
Loadイベントはコンボボックスの選択肢がDBテーブル・ビューのカラムから読み込まれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onLoad: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティには読み込まれたデータに関する情報が渡されます。
- evt.defaultValue
- 読み込まれた値カラムの最初の値(デフォルト値)。読み込まれた件数が0のときはundefined。
3.12.2.11.MouseDown
MouseDownイベントはコンボボックス上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.12.2.12.MouseUp
MouseUpイベントはコンボボックス上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.13.トグルスイッチ
トグルスイッチモジュールは、押された状態(オン)と押されていない状態(オフ)が交互に切り替わるスイッチを画面上に設けるモジュールです。
3.13.1.アクション
本項ではトグルスイッチモジュールのアクションについて説明します。
3.13.1.1.getValue
getValueアクションは、トグルスイッチの現在の状態を表す真偽値(オンならtrue、オフならfalse)を返します。
getValue()
3.13.1.2.setStyle
setStyleアクションは、トグルスイッチのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.13.1.3.setValue
setValueアクションは、トグルスイッチの状態を設定します。
setValue(value)
value引数には新しい状態を表す真偽値(オンならtrue、オフならfalse)を与えます。トグルスイッチの状態が変わると後述の【Change】イベントが発生します。
3.13.1.4.toggle
toggleアクションは、トグルスイッチの状態を切り替えます。
toggle()
toggleアクションを実行すると後述の【Change】イベントが発生します。
3.13.2.イベント
本項ではトグルスイッチモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.13.2.1.Change
Changeイベントはトグルスイッチの値(状態)が変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
- evt.cause
- "set"(setValueアクションによる変更)または"user"(ユーザによる変更)
3.13.2.2.Click
Clickイベントはトグルスイッチがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.14.スライダー
スライダーモジュールは、画面上にスライド式の数値入力欄を設けるモジュールです。スライダーモジュールでは、入力できる値の範囲(最大値と最小値)を設定できます。
3.14.1.アクション
本項ではスライダーモジュールのアクションについて説明します。
3.14.1.1.getValue
getValueアクションは、スライダーの現在の値を返します。
getValue()
3.14.1.2.setDisabled
setDisabledアクションは、スライダーを操作できない無効状態に設定します。
setDisabled(value)
value引数には真偽値を与えます。valueが真のときは無効状態になり、それ以外のときは無効状態が解除されます。
3.14.1.3.setMax
setMaxアクションは、スライダーで入力できる値の最大値を設定します。
setMax(value)
value引数には新しい最大値を与えます。
3.14.1.4.setMin
setMinアクションは、スライダーで入力できる値の最小値を設定します。
setMin(value)
value引数には新しい最小値を与えます。
3.14.1.5.setReadOnly
setReadOnlyアクションは、スライダーを読み取り専用に設定します。
setReadOnly(value)
value引数には真偽値を与えます。valueが真のときは読み取り専用になり、それ以外のときは読み取り専用状態が解除されます。
3.14.1.6.setStep
setStepアクションは、スライダーの入力値の刻み幅を設定します。
setStep(value)
value引数には新しい刻み幅を与えます。
3.14.1.7.setStyle
setStyleアクションは、スライダーのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.14.1.8.setValue
setValueアクションは、スライダーの値を設定します。
setValue(value)
value引数には新しい値を与えます。スライダーの値が変わると後述の【Change】イベントが発生します。
3.14.2.イベント
本項ではスライダーモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.14.2.1.Blur
Blurイベントはスライダーから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onBlur: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.14.2.2.Change
Changeイベントはスライダーの値が変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
- evt.cause
- "set"(setValueアクションによる変更)または"user"(ユーザによる変更)
3.14.2.3.Click
Clickイベントはスライダーがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.14.2.4.Focus
Focusイベントはスライダーに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onFocus: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.14.2.5.MouseDown
MouseDownイベントはスライダー上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.14.2.6.MouseUp
MouseUpイベントはスライダー上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.15.日時選択
日時選択モジュールは、画面上に日付入力欄と時刻入力欄を設けるモジュールです。
3.15.1.アクション
本項では日時選択モジュールのアクションについて説明します。
3.15.1.1.getValue
getValueアクションは、日時選択モジュールの現在の値を返します。
getValue()
3.15.1.2.setDisabled
setDisabledアクションは、日時選択モジュールを操作できない無効状態に設定します。
setDisabled(value)
value引数には真偽値を与えます。valueが真のときは無効状態になり、それ以外のときは無効状態が解除されます。
3.15.1.3.setFocus
setFocusアクションは、日時選択モジュールに入力フォーカスを移します。
setFocus()
3.15.1.4.setHourOptions
setHourOptionsアクションは、時刻入力欄の時間の選択肢を設定します。
setHourOptions(array)
array引数には時間の選択肢を数値の配列またはカンマ区切りの数値文字列(例:"9,10,11,12,13,14,15,16,17")で与えます。
3.15.1.5.setMaxDate
setMaxDateアクションは、日付入力欄で選択できる範囲の末尾日を設定します。
setMaxDate(date)
date引数には範囲末尾日にセットする日付をDate型オブジェクト(またはDate型に変換できる日付文字列)で与えます。
3.15.1.6.setMinDate
setMinDateアクションは、日付入力欄で選択できる範囲の先頭日を設定します。
setMinDate(date)
date引数には範囲先頭日にセットする日付をDate型オブジェクト(またはDate型に変換できる日付文字列)で与えます。
3.15.1.7.setMinuteOptions
setMinuteOptionsアクションは、時刻入力欄の分の選択肢を設定します。
setMinuteOptions(array)
array引数には分の選択肢を数値の配列またはカンマ区切りの数値文字列(例:"0,15,30,45")で与えます。
3.15.1.8.setReadOnly
setReadOnlyアクションは、日時選択モジュールを読み取り専用に設定します。
setReadOnly(value)
value引数には真偽値を与えます。valueが真のときは読み取り専用になり、それ以外のときは読み取り専用状態が解除されます。
3.15.1.9.setStyle
setStyleアクションは、日時選択モジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.15.1.10.setValue
setValueアクションは、日時選択モジュールの値を設定します。
setValue(value)
value引数には新しい値(日付文字列)を与えます。値として有効な日付文字列については【フィルタAPI】の節(YMDフィルタの項)を参照してください。日時選択モジュールの値が変わると後述の【Change】イベントが発生します。
3.15.1.11.setUseTime
setUseTimeアクションは、日時選択モジュールの時刻入力欄を用いるかどうかを指定します。
setUseTime(value)
value引数には、時刻を用いる場合は以下のいずれかの文字列を与えます。
- hms
- 時分秒を使用
- hm
- 時分のみを使用
時刻入力欄を使用しない場合は空文字列を与えます。
3.15.2.イベント
本項では日時選択モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.15.2.1.Blur
Blurイベントは日時選択モジュールから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onBlur: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.15.2.2.Change
Changeイベントは日時選択モジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
- evt.cause
- "set"(setValueアクションによる変更)または"user"(ユーザによる変更)
3.15.2.3.Focus
Focusイベントは日時選択モジュールに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onFocus: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.16.色選択
色選択モジュールは、画面上に色の入力欄を設けるモジュールです。色は#xxxxxxの形の文字列(xxxxxxは6桁の16進数)で表されます。入力欄をクリックすると色を対話的に選択できるダイアログが開きます。
3.16.1.アクション
本項では色選択モジュールのアクションについて説明します。
3.16.1.1.getValue
getValueアクションは、色選択モジュールの現在の値を返します。
getValue()
3.16.1.2.setDisabled
setDisabledアクションは、色選択モジュールを操作できない無効状態に設定します。
setDisabled(value)
value引数には真偽値を与えます。valueが真のときは無効状態になり、それ以外のときは無効状態が解除されます。
3.16.1.3.setReadOnly
setReadOnlyアクションは、色選択モジュールを読み取り専用に設定します。
setReadOnly(value)
value引数には真偽値を与えます。valueが真のときは読み取り専用になり、それ以外のときは読み取り専用状態が解除されます。
3.16.1.4.setStyle
setStyleアクションは、色選択モジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.16.1.5.setValue
setValueアクションは、色選択モジュールの値を設定します。
setValue(value)
value引数には新しい値を与えます。色選択モジュールの値が変わると後述の【Change】イベントが発生します。
3.16.2.イベント
本項では色選択モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.16.2.1.Blur
Blurイベントは色選択モジュールから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onBlur: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.16.2.2.Change
Changeイベントは色選択モジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
- evt.cause
- "set"(setValueアクションによる変更)または"user"(ユーザによる変更)
3.16.2.3.Click
Clickイベントは色選択モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.16.2.4.Focus
Focusイベントは色選択モジュールに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onFocus: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.17.DBレコードセレクタ
DBレコードセレクタモジュールは、DBテーブルモジュールと連動してDBテーブル・ビューの表示を制御するためのボタン類を画面上に設けるモジュールです。DBレコードセレクタは、DBテーブルモジュールに表示される一連のレコードの最初のレコード番号を値として保持します。
3.17.1.アクション
本項ではDBレコードセレクタモジュールのアクションについて説明します。
3.17.1.1.getValue
getValueアクションは、DBレコードセレクタの現在の値を返します。
getValue()
3.17.1.2.moveFirst
moveFirstアクションは、DBレコードセレクタの値をDBテーブル・ビューの最初のレコードに設定します。
moveFirst()
moveFirstアクションを実行すると後述の【Change】イベントが発生します。
3.17.1.3.moveLast
moveLastアクションは、DBレコードセレクタの値をDBテーブル・ビューの最後のレコードに設定します。
moveLast()
moveLastアクションを実行すると後述の【Change】イベントが発生します。
3.17.1.4.moveNext
moveNextアクションは、DBレコードセレクタの値を次のレコードに設定します。
moveNext()
moveNextアクションを実行すると後述の【Change】イベントが発生します。
3.17.1.5.movePrev
movePrevアクションは、DBレコードセレクタの値を1つ前のレコードに設定します。
movePrev()
movePrevアクションを実行すると後述の【Change】イベントが発生します。
3.17.1.6.searchDone
searchDoneアクションは、DBレコードセレクタのキーワード検索の状態を更新します。
searchDone(offset)
offset引数にはDBテーブルモジュールのSearchDoneイベントを通じてアプリケーション側に渡されてくるキーワード検索結果のレコード番号を与えます。このレコード番号はDBレコードセレクタの検索ボタンを繰り返し押して、キーワードを含むレコードを順次検索するという動作を実現するために用いられます。
3.17.1.7.setMax
setMaxアクションは、DBレコードセレクタの値の最大値(DBテーブル・ビューのレコード数)を設定します。
setMax(max)
max引数には最大レコード番号を与えます。setMaxアクションを実行すると後述の【Change】イベントが発生します。
3.17.1.8.setStyle
setStyleアクションは、DBレコードセレクタモジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.17.1.9.setValue
setValueアクションは、DBレコードセレクタの値を設定します。
setValue(value)
value引数には新しい値を与えます。setValueアクションを実行すると後述の【Change】イベントが発生します。
3.17.1.10.useSearch
useSearchアクションは、DBレコードセレクタのキーワード検索機能を有効または無効にします。
useSearch(value)
value引数には真偽値を与えます。valueが真のときはキーワード検索機能が有効状態になり、キーワード入力欄が表示されます。それ以外のときはキーワード検索機能が無効状態になり、キーワード入力欄が非表示になります。
3.17.2.イベント
本項ではDBレコードセレクタモジュールから発生するイベントについて説明します。
3.17.2.1.Change
ChangeイベントはDBレコードセレクタモジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
- evt.cause
- "set"(setValueアクションによる変更)または"user"(ユーザによる変更)
3.17.2.2.Search
SearchイベントはDBレコードセレクタモジュールの検索ボタンが押されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onSearch: function(data){ ... }
イベントハンドラのdata引数には以下のプロパティから成るオブジェクトが渡されます。
- data.keyword
- 検索キーワード
- data.searchPos
- 検索開始位置(最初のレコードが0)
たとえばDBレコードセレクタモジュールRECORDSELECTOR1とDBテーブルモジュールDATABASETABLE1を連携させてキーワード検索を実現するには以下のようなイベントハンドラを記述します。
RECORDSELECTOR1_onSearch: function(data){
this.items.DATABASETABLE1.search(data.keyword, data.searchPos);
},
DATABASETABLE1_onSearchDone : function(data){
this.items.RECORDSELECTOR1.searchDone(data.offset);
},
検索結果(検索キーワードを含むレコードの番号)はDBテーブルモジュールのSearchDoneイベントを通じてアプリケーション側に返されます。これを受け取ってDBレコードセレクタのsearchDoneアクションに渡します。
3.18.タブ
タブモジュールは、ひとつのスクリーンコンテナで複数のスクリーン(タブ)を切り替えて表示ためのボタン群を画面上に配置するためのモジュールです。
3.18.1.アクション
本項ではタブモジュールのアクションについて説明します。
3.18.1.1.getSelected
getSelectedアクションは現在選択されているタブ名を返します。
getSelected()
3.18.1.2.setItems
setItemsアクションはタブ切り替えボタンに表示される名前(タブ名)を設定します。
setItems(items)
items引数には [{"name": "タブ名1"}, {"name": "タブ名2"}, …] の形式のJSON文字列を与えます。第N要素のnameプロパティの値がN番目のタブ名として用いられます。
3.18.1.3.setSelected
setSelectedアクションは、タブモジュールの表示するタブを設定します。
setSelected(name)
name引数には表示するタブの名前を文字列で与えます。
3.18.1.4.setStyle
setStyleアクションは、タブモジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.18.2.イベント
本項ではタブモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.18.2.1.Change
Changeイベントはタブモジュールの表示するタブが変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.tab
- 選択されたタブを表すオブジェクト
- evt.cause
- "set"(setSelectedアクションによる変更)または"user"(ユーザによる変更)
3.18.2.2.Click
Clickイベントはタブモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evt.tabにはクリックされたタブ切り替えボタンに関する情報を格納した以下のプロパティから成るオブジェクトが渡されます。
evt.tab.name … クリックされたタブ名
タブモジュールTAB1とスクリーンコンテナモジュールSCREENCONTAINER1を連携させて複数のスクリーンを切り替えるには次のようなイベントハンドラを記述します。
TAB1_onClick: function(evt){
var tab = evt.tab;
this.items.SCREENCONTAINER1.setScreen(tab.name);
}
3.19.メニュー
メニューモジュールは、プルダウン方式のメニューを表示するためのメニューボタン群を画面上に配置するためのモジュールです。
3.19.1.アクション
本項ではメニューモジュールのアクションについて説明します。
3.19.1.1.open
openアクションは指定されたメニューを開きます。
open(name)
name引数には開くメニュー名を文字列で与えます。
3.19.1.2.setStyle
setStyleアクションは、メニューモジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.19.2.イベント
本項ではメニューモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.19.2.1.Click
Clickイベントはメニューモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evt.menuにはクリックされたメニューボタンに関する情報を格納した以下のプロパティから成るオブジェクトが渡されます。
evt.menu.name … クリックされたメニュー名
3.20.ファイル選択
ファイル選択モジュールは、サーバにアップロードするファイルを選択するための入力欄を画面上に設けるモジュールです。
3.20.1.アクション
本項ではファイル選択モジュールのアクションについて説明します。
3.20.1.1.clear
clearアクションは、ファイル選択モジュールをファイルが選択されていない状態にします。
clear()
3.20.1.2.getFiles
getFilesアクションは、選択されたファイルの集合を表すFileListオブジェクトを返します。FileListオブジェクトの詳細についてはHTML5 File APIのドキュメントを参照してください。
getFiles()
3.20.1.3.getValue
getValueアクションは、ファイル選択モジュールの現在の値を返します。
getValue()
3.20.1.4.readFile
readFileアクションは、選択されたファイルの内容を読み取ります。
readFile(options, callback)
options引数には以下のプロパティからなるオブジェクトを与えます。
- index
- 選択されたファイルのうち、内容を読み取るファイルの番号(先頭が0)
- encode
- ファイルの文字コード(デフォルトは"UTF-8")
callback引数にはコールバック関数を与えます。ファイル内容の読み取りが失敗した場合、第1引数にエラーメッセージ文字列が渡されます。成功した場合はコールバック関数の第1引数にはnull、第2引数にはファイルの内容が渡されます。
3.20.1.5.setDisabled
setDisabledアクションは、ファイル選択モジュールを操作できない無効状態に設定します。
setDisabled(value)
value引数には真偽値を与えます。valueが真のときは無効状態になり、それ以外のときは無効状態が解除されます。
3.20.1.6.setStyle
setStyleアクションは、ファイル選択モジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.20.1.7.upload
uploadアクションは、選択されたファイルをサーバにアップロードします。
upload(dir, options, callback)
dir引数にはサーバ上の保存先ディレクトリを文字列で与えます。options引数は現在は使用されません(空オブジェクト {} を与えてください)。callback引数にはコールバック関数を与えます。ファイル内容の読み取りが失敗した場合、第1引数にErrorオブジェクトが渡されます。成功した場合はコールバック関数の第1引数にはnull、第2引数にはアップロード結果が渡されます。
3.20.2.イベント
本項ではファイル選択モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.20.2.1.Blur
Blurイベントはファイル選択モジュールから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onBlur: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.20.2.2.Change
Changeイベントはファイル選択モジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
3.20.2.3.Click
Clickイベントはファイル選択モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.20.2.4.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.20.2.5.DoubleClick
DoubleClickイベントはファイル選択モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.20.2.6.Focus
Focusイベントはファイル選択モジュールに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onFocus: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.20.2.7.KeyDown
KeyDownイベントはファイル選択モジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.20.2.8.KeyPress
KeyPressイベントはファイル選択モジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyPress: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.20.2.9.KeyUp
KeyUpイベントはファイル選択モジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.20.2.10.MouseDown
MouseDownイベントはファイル選択モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.20.2.11.MouseUp
MouseUpイベントはファイル選択モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.21.画像
画像モジュールは、画面上に画像を表示するためのモジュールです。
3.21.1.アクション
本項では画像モジュールのアクションについて説明します。
3.21.1.1.getAlt
getAltアクションは、画像モジュールが表示する代替テキストを得ます。
getAlt()
3.21.1.2.getSrc
getSrcアクションは、画像モジュールが表示する画像ファイルのURLを得ます。
getSrc()
3.21.1.3.getValue
getValueアクションは、画像モジュールが表示する画像ファイルのURLを得ます。
getValue()
3.21.1.4.setAlt
setAltアクションは、画像モジュールが表示する代替テキストを設定します。
setAlt(value)
value引数には新しい代替テキストを文字列で与えます。
3.21.1.5.setSrc
setSrcアクションは、画像モジュールが表示する画像ファイルのURLを設定します。
setSrc(value)
value引数には新しい画像ファイルのURLを文字列で与えます。
3.21.1.6.setStyle
setStyleアクションは、画像モジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.21.1.7.setValue
setValueアクションは、画像モジュールが表示する画像ファイルのURLを設定します。
setValue(value)
value引数には新しい画像ファイルのURLを文字列で与えます。
3.21.2.イベント
本項では画像モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.21.2.1.Click
Clickイベントは画像モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.21.2.2.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.21.2.3.DoubleClick
DoubleClickイベントは画像モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.21.2.4.Error
Errorイベントは指定された画像ファイルの読み込みに失敗したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onError: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.21.2.5.MouseDown
MouseDownイベントは画像モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.21.2.6.MouseUp
MouseUpイベントは画像モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.22.文字列
文字列モジュールは、画面上に文字列を表示するためのモジュールです。文字列モジュールは表示している文字列を値として保持します。
3.22.1.アクション
本項では文字列モジュールのアクションについて説明します。
3.22.1.1.getValue
getValueアクションは、文字列モジュールが表示する値(文字列)を返します。
getValue()
3.22.1.2.setFilter
setFilterアクションは、文字列モジュールに適用するフィルタを設定します。
setFilter(filters)
filters引数にはフィルタ名を文字列で与えます。フィルタ名はカンマで区切って複数指定できます。フィルタの詳細については後述の【フィルタAPI】の節を参照してください。リンク表示オプションが有効のときは、フィルタは表示文字列のみに適用され、リンク先のアドレスには適用されません。
3.22.1.3.setStyle
setStyleアクションは、文字列モジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.22.1.4.setValue
setValueアクションは、文字列モジュールが表示する値(文字列)を設定します。
setValue(value)
value引数には新しい値を与えます。文字列モジュールの値が変わると後述の【Change】イベントが発生します。
3.22.2.イベント
本項では文字列モジュールから発生するイベントについて説明します。
3.22.2.1.Change
Changeイベントは文字列モジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
- evt.cause
- "set"(setValueアクションによる変更)または"user"(ユーザによる変更)
3.22.2.2.Click
Clickイベントは文字列モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.22.2.3.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.22.2.4.DoubleClick
DoubleClickイベントは文字列モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.22.2.5.MouseDown
MouseDownイベントは文字列モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.22.2.6.MouseUp
MouseUpイベントは文字列モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.23.数式
数式モジュールは自らの数値データを他のモジュールの数値データから自動的に計算して表示するためのモジュールです。計算内容は数式ハンドラとしてJavaScriptで記述します。数式ハンドラについては【数式API】の章を参照してください。
3.23.1.アクション
本項では数式モジュールのアクションについて説明します。
3.23.1.1.getValue
getValueアクションは数式モジュールの現在の値を返します。
getValue()
3.23.1.2.setStyle
setStyleアクションは、数式モジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.23.2.イベント
本項では数式モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.23.2.1.Change
Changeイベントは数式モジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(){ ... }
3.23.2.2.Click
Clickイベントは数式モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.23.2.3.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.23.2.4.DoubleClick
DoubleClickイベントは数式モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.23.2.5.MouseDown
MouseDownイベントは数式モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.23.2.6.MouseUp
MouseUpイベントは数式モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.24.リスト
リストモジュールは複数の項目を選択できる選択肢入力欄を画面上に設けるモジュールです。
3.24.1.アクション
本項ではリストモジュールのアクションについて説明します。
3.24.1.1.getSelectedDBValue
getSelectedDBValueアクションは、選択されたリスト項目に対応するDBテーブル・ビューのデータ行について、指定されたカラムの値を返します。このアクションはリストモジュールの選択肢をDBテーブル・ビューのカラムから読む場合にのみ利用できます。
getSelectedDBValue(colname)
colname引数にはカラム名を指定します。リストモジュールの選択肢を表示するためにデータベースから読み込んだデータを再利用するので、アプリケーションとサーバの間でデータをやりとりすることなく高速に動作します。
3.24.1.2.getValue
getValueアクションは選択されたリスト項目の値を文字列配列として返します。
getValue()
3.24.1.3.getSelection
getSelectionアクションは選択されたリスト項目の番号(先頭が0)を配列で返します。
getSelection()
3.24.1.4.reloadDB
reloadDBアクションは、リストモジュールの選択肢をDBテーブル・ビューから読み直します。
reloadDB()
3.24.1.5.setOptions
setOptionsアクションはリストモジュールの動作オプションを設定します。
setOptions(options)
options引数には次の2通りの方法でオプションを与えます。
a. 選択肢を配列で与える
次のプロパティからなるオブジェクトの配列をoptionsとして指定します。
name: 表示文字列
value: 値
b. DBテーブル・ビューのカラムから読んだデータを選択肢とする
次のプロパティからなるオブジェクトをoptionsとして指定します。
modelname: DBテーブル・ビュー名
columnname: 次のプロパティからなるオブジェクトの配列
name: 名前のカラム名
value: 値のカラム名
num: 最大件数
setOptionsアクションを実行するとすべてのリスト項目が選択されていない状態になります。
3.24.1.6.setSelection
setSelectionアクションは、リスト項目を選択された状態に設定します。
setSelection(index)
index引数には選択状態にするリスト項目の番号(先頭が0)の配列を与えます。
3.24.1.7.setStyle
setStyleアクションは、リストモジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.24.1.8.setValue
setValueアクションは、リスト項目を選択された状態に設定します。
setValue(value)
value引数には選択状態にするリスト項目の値(文字列または文字列配列)を与えます。
3.24.2.イベント
本項ではリストモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.24.2.1.Change
Changeイベントはリストモジュールの動作オプションの変更により値が変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の選択要素番号の配列
- evt.oldValue
- 変化前の選択要素番号の配列
- evt.cause
- "set"(setOptions、setSelection、setValueのいずれかのアクションによる変更)または"user"(ユーザの要素クリックによる変更)
3.24.2.2.Click
Clickイベントはリストモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティにはクリックされたリスト項目の情報が渡されます。
- evt.index
- クリックされたリスト項目の番号(最初のリスト項目が0)
3.24.2.3.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.24.2.4.DoubleClick
DoubleClickイベントはリストモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.24.2.5.Load
Loadイベントはリストモジュールの選択肢がDBテーブル・ビューのカラムから読み込まれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onLoad: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.24.2.6.MouseDown
MouseDownイベントはリストモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.24.2.7.MouseUp
MouseUpイベントはリストモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.25.箇条書き
箇条書きモジュールは画面上に箇条書きのリストを表示するモジュールです。
3.25.1.アクション
本項では箇条書きモジュールのアクションについて説明します。
3.25.1.1.setItems
setItemsアクションは表示するリスト項目を設定します。
setItems(items)
items引数にはリスト項目を文字列の配列で与えます。
3.25.1.2.setStyle
setStyleアクションは、箇条書きモジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.25.2.イベント
本項では箇条書きモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.25.2.1.Click
Clickイベントは箇条書きモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティにはクリックされたリスト項目の情報が渡されます。
- evt.index
- クリックされたリスト項目の番号(最初のリスト項目が0)
3.26.テーブル
テーブルモジュールは行と列から成る表(テーブル)形式のデータを表示するためのモジュールです。テーブルには列ラベルを示すヘッダ行を付与することができます。
3.26.1.アクション
本項ではテーブルモジュールのアクションについて説明します。
3.26.1.1.setCellStyle
setCellStyleアクションはセル毎にスタイルを設定します。
setCellStyle(func)
func引数には関数を与えます。この関数はテーブルの各セルに対して呼び出されます。関数の呼び出し時には3つの引数が渡されます。関数の引数リストを(rowIndex, colIndex, content)とすると、rowIndex引数はセルの行番号、colIndex引数はセルの列番号、content引数はセルの内容文字列(フィルタ適用前の内容文字列)を表します。行番号と列番号は0から始まります。この関数はスタイルオブジェクトまたは{outer: セルスタイル, inner: 内容スタイル}の形式のオブジェクトを返さなければなりません。
3.26.1.2.setColStyle
setColStyleアクションはカラムのスタイルを設定します。
setColStyle(style)
style引数には(a)スタイルオブジェクト、(b)スタイルオブジェクトの配列、(c){outer: セルスタイル, inner: 内容スタイル}の形式のオブジェクト、または(d)(c)の形式のオブジェクトの配列を与えます。(a)および(c)の場合は全カラムに同じスタイルを適用します。(b)および(d)の場合はN番目の要素で与えられたスタイルがN番目のカラムに適用されます。outerはセル(<td>要素)に、innerはセルの内容に適用されます。
3.26.1.3.setColWidth
setColWidthアクションはテーブルの表示上の列幅を設定します。
setColWidth(width)
width引数には列幅を(a)単独の値、(b)値の配列、(c){outer: セル幅, inner: 内容幅}の形式のオブジェクト、または(d)(c)の形式のオブジェクトの配列で与えます。(a)および(c)の場合は全カラムが同じ列幅になります。(b)および(d)の場合はN番目の要素で与えられた設定がN番目のカラムの列幅となります。outerはセル(<td>要素)に、innerはセルの内容に適用されます。列幅はピクセル数、パーセント値、「auto」を指定できます。パーセント指定は、outerならテーブル幅に対する割合、innerならセル幅に対する割合を意味します。
3.26.1.4.setFilter
setFilterアクションはテーブルのセルの内容に適用するフィルタを指定します。
setFilter(filters)
filters引数にはカラム名とフィルタ名の対を以下の形式のオブジェクトで与えます。フィルタ名はカンマで区切って複数指定できます。
{"カラム名1": フィルタ名1, "カラム名2": フィルタ名2, …}
フィルタの詳細については後述の【フィルタAPI】の節を参照してください。
3.26.1.5.setHeader
setHeaderアクションはヘッダ行を設定します。
setHeader(headers)
headers引数には(a)カラム名文字列の配列、または(b)以下のプロパティから成るオブジェクトの配列を与えます。
name … カラム名
displayName … 表示名
- alignment
- 配置。"left"(左寄せ)、"center"(中央)、"right"(右寄せ)のいずれか
3.26.1.6.setStyle
setStyleアクションは、テーブルモジュールのスタイルを設定します。
setStyle(style)
style引数には(a)スタイルオブジェクト、または(b){outer: アイテムスタイル, inner: テーブルスタイル}を与えます。(a)の場合はアイテム(<table>要素の外側の<div>要素)にスタイルが適用されます。(b)の場合、outerで与えたスタイルはアイテムに、innerで与えたスタイルはテーブル(<table>要素)にそれぞれ適用されます。
3.26.1.7.setTable
setTableアクションはテーブルデータを設定します。
setTable(table)
table引数にはテーブルデータを(a)文字列配列の配列、または(b){カラム名: 値, …}の形式のオブジェクトの配列で与えます。(a)の場合は上述のsetHeaderアクションでヘッダデータを設定しなければヘッダ行は表示されません。また、(b)の場合はsetHeaderアクションでヘッダデータを設定しなければテーブル自体が表示されません。
3.26.2.イベント
3.26.2.1.Click
Clickイベントはテーブルモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティにクリックされたカラムに関する情報が渡されます。
- evt.row
- クリックされた行番号
- evt.col
- クリックされた列番号
- evt.data
- クリックされたレコード(文字列配列または{カラム名: 値, …}の形式のオブジェクト)
3.27.DBテーブル
DBテーブルモジュールはDBテーブルに格納されたデータを画面上に表示するためのモジュールです。
3.27.1.アクション
本項ではDBテーブルモジュールのアクションについて説明します。
3.27.1.1.getCount
getCountアクションは現在設定されている絞り込み条件の下で表示されるレコードの数を問い合わせます。
getCount()
問い合わせ結果のレコード数はChangeCountイベント(後述)を通じてアプリケーション側に返されます。
3.27.1.2.initialize
initializeアクションはDBテーブルモジュールの表示内容を初期化します。
initialize(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- table
- DBテーブル・ビューのモデルオブジェクト(必須)
- headers
- 表示するカラム名の配列。配列要素は文字列または以下のプロパティから成るオブジェクト:
name … カラム名
displayName … 表示名 - alignment
- 配置。"left"(左寄せ)、"center"(中央)、"right"(右寄せ)のいずれか
- where
- 絞り込み条件。後述の【絞り込み条件】の節を参照。
- order
- 並べ替え。後述の【並べ替え】の節を参照。
num … 表示件数 - offset
- 先頭レコード番号(最初のレコードが0)
- useCache
- キャッシュ利用フラグ。真ならキャッシュを用います。
- crossOptions
- クロス集計オプション。クロス集計モジュールのUpdateイベントを通じて渡されてくるcrossOptionsプロパティの値を与えます。後述の【クロス集計オプション】の節を参照。
3.27.1.3.outputData
outputDataアクションはDBテーブルモジュールの表示内容を外部ファイルとして出力します。
outputData(options)
options引数にはデータ出力オプションを以下のプロパティから成るオブジェクトで与えます。
- format
- 出力ファイル形式。現在は "xlsx"(Microsoft Excel形式)のみサポート。
- fileName
- 出力ファイル名。
データ出力が成功した場合はOutputDataCompletedイベント(後述)を通じて出力ファイルをダウンロードするためのURLがアプリケーション側に返されます。出力が失敗した場合はOutputDataFailedイベント(後述)を通じてエラーメッセージが返されます。
3.27.1.4.search
searchアクションはDBテーブル内のデータに対するキーワード検索を実行します。
search(keyword, searchPos)
keyword引数には検索キーワードを文字列で与えます。searchPos引数にはキーワード検索の開始位置となるレコード番号を与えます(最初のレコードが0)。検索結果はSearchDoneイベント(後述)を通じてアプリケーション側に返されます。
3.27.1.5.setCellStyle
setCellStyleアクションはセル毎にスタイルを設定します。
setCellStyle(func)
func引数には関数を与えます。この関数はDBテーブルの各セルに対して呼び出されます。関数の呼び出し時には3つの引数が渡されます。関数の引数リストを(rowIndex, colIndex, content)とすると、rowIndex引数はセルの行番号、colIndex引数はセルの列番号、content引数はセルの内容文字列(フィルタ適用前の内容文字列)を表します。行番号と列番号は0から始まります。この関数はスタイルオブジェクトまたは{outer: セルスタイル, inner: 内容スタイル}の形式のオブジェクトを返さなければなりません。
3.27.1.6.setColStyle
setColStyleアクションはカラムのスタイルを設定します。
setColStyle(style)
style引数には(a)スタイルオブジェクト、(b)スタイルオブジェクトの配列、(c){outer: セルスタイル, inner: 内容スタイル}の形式のオブジェクト、または(d)(c)の形式のオブジェクトの配列を与えます。(a)および(c)の場合は全カラムに同じスタイルを適用します。(b)および(d)の場合はN番目の要素で与えられたスタイルがN番目のカラムに適用されます。outerはセル(<td>要素)に、innerはセルの内容に適用されます。
3.27.1.7.setColWidth
setColWidthアクションはDBテーブルの表示上の列幅を設定します。
setColWidth(width)
width引数には列幅を(a)単独の値、(b)値の配列、(c){outer: セル幅, inner: 内容幅}の形式のオブジェクト、または(d)(c)の形式のオブジェクトの配列で与えます。(a)および(c)の場合は全カラムが同じ列幅になります。(b)および(d)の場合はN番目の要素で与えられた設定がN番目のカラムの列幅となります。outerはセル(<td>要素)に、innerはセルの内容に適用されます。列幅はピクセル数、パーセント値、「auto」を指定できます。パーセント指定は、outerならテーブル幅に対する割合、innerならセル幅に対する割合を意味します。
3.27.1.8.setFilter
setFilterアクションはDBテーブルから読み取ったカラムの値に適用するフィルタを指定します。
setFilter(filters)
filters引数にはカラム名とフィルタ名の対を以下の形式のオブジェクトで与えます。フィルタ名はカンマで区切って複数指定できます。
{"カラム名1": フィルタ名1, "カラム名2": フィルタ名2, …}
フィルタの詳細については後述の【フィルタAPI】の節を参照してください。
3.27.1.9.setNum
setNumアクションは表示するレコードの数を設定します。
setNum(num)
num引数には表示レコード数を与えます。
3.27.1.10.setOffset
setOffsetアクションは先頭レコード番号を設定します。
setOffset(offset)
offset引数にはレコード番号を与えます(最初のレコードが0)。
3.27.1.11.setOrder
setOrderアクションは表示レコードのソート順を設定します。
setOrder(order)
order引数には並べ替えの方法を記述するオブジェクトを与えます。後述の【並べ替え】の節を参照してください。
3.27.1.12.setStyle
setStyleアクションはDBテーブルモジュールのスタイルを設定します。
setStyle(style)
style引数には(a)スタイルオブジェクト、または(b){outer: アイテムスタイル, inner: テーブルスタイル}を与えます。(a)の場合はテーブル(<table>要素)にスタイルが適用されます。(b)の場合、outerで与えたスタイルはアイテム(<table>要素の外側の<div>要素)に、innerで与えたスタイルはテーブルにそれぞれ適用されます。
3.27.1.13.setWhere
setWhereアクションは表示レコードの絞り込み条件を設定します。
setWhere(where)
where引数には絞り込み条件を与えます。後述の【絞り込み条件】の節を参照してください。
3.27.2.イベント
本項ではDBテーブルモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.27.2.1.ChangeCount
ChangeCountは絞り込み条件が変更されたとき、およびgetCountアクションが実行されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChangeCount: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- レコード数
3.27.2.2.Click
ClickイベントはDBテーブルモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティにクリックされたカラムに関する情報が渡されます。
- evt.row
- クリックされた行番号
- evt.col
- クリックされた列番号
- evt.data
- クリックされたレコード({カラム名: 値, …}の形式のオブジェクト)
3.27.2.3.LoadData
LoadDataイベントはDBテーブルから表示データを読み取り終えた終えたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onLoadData: function(){ ... }
3.27.2.4.OutputDataCompleted
OutputDataCompletedイベントはoutputDataアクションによるファイル出力が成功したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onOutputDataCompleted: function(data){ ... }
data引数には出力ファイルに関する情報が以下のプロパティを持つオブジェクトとして渡されます。
- data.url
- 出力ファイルのダウンロードURL
3.27.2.5.OutputDataFailed
OutputDataFailedイベントはoutputDataアクションによるファイル出力が失敗したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onOutputDataFailed: function(error){ ... }
error引数にはエラーに関する情報が以下のプロパティを持つオブジェクトで渡されます。
- error.message
- エラーメッセージ
3.27.2.6.SearchDone
SearchDoneイベントはsearchアクションによるキーワード検索が完了したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onSearchDone: function(data){ ... }
data引数には検索結果に関する情報が以下のプロパティを持つオブジェクトとして渡されます。
- data.offset
- 検索キーワードが見つかったレコードの番号(最初のレコードが0)
DBテーブルモジュールとDBレコードセレクタモジュールの検索機能の連携方法については【DBレコードセレクタ】の節を参照してください。
3.28.スピン
スピンモジュールは、回転する矢印を画面上にアニメーション表示するためのモジュールです。表示と非表示の2つの状態に切り替えられます。表示状態のときは回転アニメーションが繰り返されます。アプリケーションが時間のかかる処理をしている待ち時間などに用います。スピンモジュールは現在の表示状態を示す真偽値(表示中ならtrue、非表示ならfalse)を値として保持します。
3.28.1.アクション
本項ではスピンモジュールのアクションについて説明します。
3.28.1.1.getStatus
getStatusアクションは、スピンモジュールの表示状態を文字列(表示中なら"visible"、非表示なら"hidden")を返します。
getStatus()
3.28.1.2.getValue
getValueアクションは、スピンモジュールの現在の値(表示中ならtrue、非表示ならfalse)を返します。
getValue()
3.28.1.3.hide
hideアクションは、スピンモジュールを非表示にします。
hide()
3.28.1.4.setStyle
setStyleアクションは、スピンモジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.28.1.5.setValue
setValueアクションは、スピンモジュールの値を設定します。
setValue(value)
value引数には新しい値を与えます。
3.28.1.6.show
showアクションは、スピンモジュールを表示します。
show()
3.28.1.7.toggle
toggleアクションは、スピンモジュールの表示・非表示の状態を入れ替えます。
toggle()
3.28.2.イベント
本項ではスピンモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.28.2.1.Click
Clickイベントはスピンモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.29.プログレスバー
プログレスバーモジュールは時間のかかる処理が全体の何パーセントまで進んだか(進捗率)を視覚的に示すためのモジュールです。
3.29.1.アクション
本項ではプログレスバーモジュールのアクションについて説明します。
3.29.1.1.getValue
getValueアクションはプログレスバーの進捗率を返します。
getValue()
3.29.1.2.setStyle
setStyleアクションはプログレスバーのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.29.1.3.setValue
setValueアクションはプログレスバーの進捗率を設定します。
setValue(value)
value引数には進捗率を0~100の数値で与えます。
3.29.2.イベント
本項ではプログレスバーモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.29.2.1.Click
Clickイベントはプログレスバーがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.29.2.2.MouseDown
MouseDownイベントはプログレスバー上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.29.2.3.MouseUp
MouseUpイベントはプログレスバー上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.30.カレンダー
カレンダーモジュールは画面上にカレンダーを表示するモジュールです。カレンダーには日付を指定してテキスト項目を挿入することができます。
3.30.1.アクション
本項ではカレンダーモジュールのアクションについて説明します。
3.30.1.1.addText
addTextアクションはカレンダーにテキスト項目を追加表示します。
addText(date, text)
date引数には挿入先の日付をDate型で与えます。text引数には表示する文字列を指定します。
3.30.1.2.clearText
clearTextアクションは指定の日付に付与されているテキスト項目をすべて削除します。
clearText(date)
date引数には日付をDate型で与えます。
3.30.1.3.delText
delTextアクションは指定の日付に付与されているテキスト項目をひとつ削除します。
delText(date, index)
date引数には日付をDate型で与えます。index引数には削除するテキスト項目の番号を与えます(最初のテキスト項目が0)。
3.30.1.4.setStyle
setStyleアクションは、カレンダーモジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.30.1.5.setYearMonth
setYearMonthアクションはカレンダーの表示年・月を設定します。
setYearMonth(year, month)
year引数とmonth引数には表示する年と月をそれぞれ数値で与えます。setYearMonthアクションを実行すると後述の【Change】イベントが発生します。
3.30.1.6.textLength
textLengthアクションは指定された日付に付与されているテキスト項目の数を返します。
textLength(date)
date引数には日付をDate型で与えます。
3.30.2.イベント
本項ではカレンダーモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.30.2.1.Change
Changeイベントはカレンダーモジュールが表示する年または月が変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(data){ ... }
イベントハンドラの引数dataには以下のプロパティから成るオブジェクトが渡されます。
- data.year
- 変更後の年
- data.month
- 変更後の月
- data.cause
- "set"(setYearMonthアクションによる変更)または"user"(ユーザによる変更)
3.30.2.2.Click
Clickイベントはカレンダーモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、クリックした日付がevt.dateプロパティにDate型で渡されます。
3.31.タイムテーブル
タイムテーブルモジュールは画面上に時間割表を表示するモジュールです。時間割表には開始・終了日時を指定してテキスト項目を挿入することができます。
3.31.1.アクション
本項ではタイムテーブルモジュールのアクションについて説明します。
3.31.1.1.addText
addTextアクションはタイムテーブルにテキスト項目を追加表示します。
addText(start, end, text, bgcolor)
start引数とend引数には開始日時と終了日時をそれぞれDate型オブジェクト(またはDate型に変換できる日時文字列)で与えます。text引数には表示文字列、bgcolor引数には表示文字列の背景色を指定します。text引数は文字列に加えて次の形式のオブジェクトを受け付けます。
{ text: 表示文字列, popup: ポップアップ文字列 }
popupプロパティを省略するとtextプロパティの値がポップアップ文字列として用いられます。このオブジェクトには他のプロパティも自由に含めてよく、Clickイベントハンドラに渡されるevt.textプロパティには上記のオブジェクトがそのまま渡されます。たとえばtext引数の値を
{ id: データ番号, text: 表示文字列, popup: ポップアップ文字列 }
としておけば、Clickイベントハンドラではデータ番号をevt.text.idで受け取れます。テキスト項目の追加が成功したらtrueを、失敗したらfalseを返します。日をまたぐテキスト項目は追加できますが、開始時刻と終了時刻が表示開始時と表示終了時の間にないテキスト項目の追加は失敗します。
3.31.1.2.clearText
clearTextアクションはすべてのテキスト項目を削除します。
clearTex()
3.31.1.3.delText
delTextアクションはテキスト項目をひとつ削除します。
delText(index)
index引数には削除するテキスト項目の番号を与えます(最初のテキスト項目が0)。
3.31.1.4.setDays
setDaysアクションは開始日からの表示日数を設定します。
setDays(days)
days引数には日数を数値で与えます。
3.31.1.5.setStartDate
setStartDateアクションはタイムテーブルの表示開始日を設定します。
setStartDate(startdate)
startdate引数には表示開始日をDate型オブジェクトまたは日付文字列("年/月/日"または"年-月-日")で与えます。
3.31.1.6.setStartEndTime
setStartEndTimeアクションはタイムテーブルの表示開始時・終了時を設定します。
setStartEndTime(start, end)
start引数には表示開始時を、end引数には表示終了時を数値で与えます。表示開始時・終了時の設定が成功したらtrueを、失敗したらfalseを返します。表示データがあるとき、それがはみ出すような設定は失敗します。
3.31.1.7.setStyle
setStyleアクションは、タイムテーブルモジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.31.1.8.textLength
textLengthアクションはテキスト項目の数を返します。
textLength()
3.31.2.イベント
本項ではタイムテーブルモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.31.2.1.Click
Clickイベントはタイムテーブルモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、タイムテーブル内のどこをクリックしたかに応じてevtオブジェクトの以下のプロパティに情報が渡されます。
a. テキスト項目をクリックした場合
- evt.data
- クリックしたデータ項目。以下のプロパティから成るオブジェクト:
- start
- 開始日時(Date型)
- end
- 終了日時(Date型)
- text
- 表示文字列
bgcolor … 色
b. テキスト項目以外をクリックした場合 - evt.datetime
- クリックした日時(Date型)
3.32.クロス集計
クロス集計モジュールはDBテーブル・ビューのクロス集計を行なうための各種オプションを画面上に表示するモジュールです。クロス集計した結果の表示には【DBテーブル】モジュールを用います。
3.32.1.アクション
本項ではクロス集計モジュールのアクションについて説明します。
3.32.1.1.initialize
initializeアクションはクロス集計モジュールを初期化します。
initialize(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- models
- モデル情報オブジェクト(this.models)
- num
- 表示するレコード数
- offset
- 先頭レコード番号(最初のレコードが0)
3.32.1.2.setStyle
setStyleアクションはクロス集計モジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.32.2.イベント
本項ではクロス集計モジュールから発生するイベントについて説明します。
3.32.2.1.Update
Updateイベントはクロス集計モジュールの更新ボタンが押されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onUpdate: function(data){ ... }
data引数には以下のプロパティから成るオブジェクトが渡されます。
- table
- クロス集計するDBテーブル・ビューのモデルオブジェクト
- crossOptions
- クロス集計オプション。後述の【クロス集計オプション】の節を参照してください。
これらのプロパティはDBテーブルモジュールの【initialize】アクションのオプションとして利用できます。たとえばクロス集計モジュールCROSS1から渡されたクロス集計オプションを使ってDBテーブルモジュールDATABASETABLE1の表示内容を初期化するには次のようなイベントハンドラを作成します。
CROSS1_onUpdate: function(data){
var options = {
table: data.table,
crossOptions: data.crossOptions,
};
this.items.DATABASETABLE1.initialize(options);
}
3.33.地図
地図モジュールは画面上に地図を表示するモジュールです。地図上には緯度・経度で指定した地点にマーカーを設けて情報を表示することができます。
3.33.1.アクション
本項では地図モジュールのアクションについて説明します。
3.33.1.1.addMarker
addMarkerアクションは緯度・経度で表された地点にマーカーを追加表示します。マーカーにはポップアップ表示されるマークアップ付きテキスト(HTML)を付与できます。
addMarker(data)
data引数には以下のプロパティから成るオブジェクトを与えます。
- lat
- マーカーを設ける地点の緯度
- lng
- マーカーを設ける地点の経度
- popup
- ポップアップ表示するHTML文字列
3.33.1.2.clearMarkers
clearMarkersアクションはすべてのマーカーを削除します。
clearMarkers()
3.33.1.3.delMarker
delMarkerアクションはマーカーをひとつ削除します。
delMarker(index)
index引数には削除するマーカーの番号を与えます(最初のマーカーが0)。
3.33.1.4.markersLength
markersLengthアクションはマーカーの個数を返します。
markersLength()
3.33.1.5.showMap
showMapアクションは緯度・経度で表された地点を地図モジュールに表示します。
showMap(data)
data引数には以下のプロパティから成るオブジェクトを与えます。
- lat
- 表示する地点の緯度
- lng
- 表示する地点の経度
- zoom
- 表示倍率
3.33.1.6.setStyle
setStyleアクションは、地図モジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.33.2.イベント
本項では地図モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.33.2.1.Click
Clickイベントは地図モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティにクリックされた地点に関する情報が渡されます。
- evt.latlng.lat
- クリックされた地点の緯度
- evt.latlng.lng
- クリックされた地点の経度
3.33.2.2.Move
Moveイベントは地図モジュールの表示地点が変更されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMove: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに新しい表示地点に関する情報が渡されます。
- evt.latlng.lat
- 新しい表示地点の緯度
- evt.latlng.lng
- 新しい表示地点の経度
このイベントはマウスでのドラッグ中には発生せず、ドラッグ操作が完了した時点で発生します。
3.33.2.3.Zoom
Zoomイベントは地図モジュールのスケールが変更されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onZoom: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
evt.zoom … 倍率
3.34.グラフ
グラフモジュールはデータを可視化するグラフを表示するためのモジュールです。
3.34.1.アクション
本項ではグラフモジュールのアクションについて説明します。
3.34.1.1.downloadImage
downloadImageアクションはグラフをPNG画像ファイルとしてダウンロードします。
downloadImage()
3.34.1.2.setData
setDataアクションはグラフ表示に用いるデータを設定します。
setData(data)
data引数には以下のプロパティから成るオブジェクトを与えます。
- type
- グラフのタイプ。以下のタイプのいずれか:
- BarChart
- 積み上げ棒グラフ
GroupedBarChart … 棒グラフ - LineChart
- 折れ線グラフ
AreaChart … 面グラフ
PieChart … 円グラフ - data
- 以下のプロパティから成るデータ系列オブジェクトの配列:
- label
- データ系列のラベル
- values
- データ系列。{x: X値, y: Y値} の形式のオブジェクトの配列
- margin
- 余白の幅を指定する、以下のプロパティから成るオブジェクト:
- top
- 上の余白幅
- bottom
- 下の余白幅
- left
- 左の余白幅
- right
- 右の余白幅
3.34.1.3.setStyle
setStyleアクションは、グラフモジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.35.キャンバス
キャンバスモジュールは、スクリプトにより画面上に図形や文字列を描画するモジュールです。
キャンバスモジュールに図形を描画するには、まず【getContext】アクションで2次元グラフィックスコンテキストを得ます。次に、コンテキストオブジェクトの各種メソッドを呼び出して図形を描画します。例として、CANVAS1という名前のキャンバスモジュールに塗りつぶした矩形を青で、矩形の枠線を赤で描画するスクリプトを以下に示します。
var ctx = this.items.CANVAS1.getContext();
ctx.fillStyle = "blue";
ctx.fillRect(120, 120, 200, 150);
ctx.strokeStyle = "red";
ctx.strokeRect(100, 100, 200, 150);
2次元グラフィックスコンテキストの描画メソッドの詳細についてはHTML5のキャンバス要素に関する解説書やオンラインチュートリアル(例えば下記URL)などを参照してください。
https://developer.mozilla.org/ja/docs/Web/Guide/HTML/Canvas_tutorial/Drawing_shapes
3.35.1.アクション
本項ではキャンバスモジュールのアクションについて説明します。
3.35.1.1.getDOM
getDOMアクションは、HTMLのキャンバス要素を表すDOMノードを返します。
getDOM()
3.35.1.2.getContext
getContextアクションは、2次元グラフィックスコンテキストを返します。
getContext()
3.35.1.3.setCanvasRatio
setCanvasRatioアクションは、キャンバスの表示倍率を設定します。
setCanvasRatio(ratio)
ratio引数にはキャンバス倍率を与えます。
3.35.1.4.setStyle
setStyleアクションは、キャンバスのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.35.2.イベント
本項ではキャンバスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
3.35.2.1.Blur
Blurイベントはキャンバスから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onBlur: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.35.2.2.Click
Clickイベントはキャンバスがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.35.2.3.ContextMenu
ContextMenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onContextMenu: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.35.2.4.DoubleClick
DoubleClickイベントはキャンバスがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onDoubleClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.35.2.5.Focus
Focusイベントはキャンバスに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onFocus: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.35.2.6.KeyDown
KeyDownイベントはキャンバス上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.35.2.7.KeyPress
KeyPressイベントはキャンバス上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyPress: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.35.2.8.KeyUp
KeyUpイベントはキャンバス上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onKeyUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.35.2.9.MouseDown
MouseDownイベントはキャンバス上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseDown: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.35.2.10.MouseUp
MouseUpイベントはキャンバス上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onMouseUp: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.35.2.11.Update
Updateイベントはキャンパスモジュールの再描画が必要なときに生じます。イベントハンドラは次のように定義します。
モジュール名_onUpdate: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
3.36.スクリーンコンテナ
スクリーンコンテナモジュールは、別のスクリーンを画面上に埋め込むためのモジュールです。埋め込まれる側の別スクリーンを「内側」、スクリーンコンテナが設けられたスクリーンを「外側」と呼びます。内側スクリーンの埋め込み方法には次の2つがあります。
a. 1つのスクリーンコンテナ内に1つだけ内側スクリーンを表示する(デフォルト)。
b. 内側スクリーンを0個以上複製して反復表示する。
内側スクリーンの反復表示回数を指定するには後述のsetIterateアクションを用います。デフォルトの反復表示回数は1です。
3.36.1.アクション
本項ではスクリーンコンテナモジュールのアクションについて説明します。
3.36.1.1.iterate
iterateアクションは、内側スクリーンの反復表示の際に個々の内側スクリーンに渡されるデータを設定します。
iterate(data)
data引数には反復回数と同じ要素数の配列を与えます。配列の要素についてはデータ構造の規定はなくアプリケーションごとに自由に決められます。与えられたデータは後述のIterateイベントを介して内側スクリーンへ渡されます。
3.36.1.2.screens
screensアクションは、内側スクリーンのスクリーンオブジェクトを外側スクリーンから参照するための関数です。
screens(index)
index引数には参照する内側スクリーンの番号を与えます。たとえばスクリーンコンテナSCREENCONTAINER1の中に反復表示されたi番目の内側スクリーンの中のテキストボックスTEXTBOX1の値を得るには次のようにします。
var val = this.items.SCREENCONTAINER1.screens(i).items.TEXTBOX1.getValue();
3.36.1.3.setIterate
setIterateアクションは、内側スクリーンの反復表示回数を設定します(デフォルトは1)。
setIterate(iterate);
iterate引数にはスクリーンの反復表示回数を整数値で与えます。
3.36.1.4.setScreen
setScreenアクションは、スクリーンコンテナ内に表示する別スクリーンを変更します。
setScreen(screen)
screen引数には新しい内側スクリーンの名前を文字列で与えます。
3.36.1.5.setStyle
setStyleアクションは、スクリーンコンテナモジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
3.36.2.イベント
本項ではスクリーンコンテナから発生するイベントについて説明します。
3.36.2.1.Iterate
Iterateイベントは、スクリーンコンテナのiterateアクションが実行されたときに発生して内側スクリーンに伝播します。このイベントを内側スクリーンで受け取るにはイベントハンドラを次のように定義します。
onIterate: function(data){ ... }
イベントハンドラの引数dataにはiterateアクションの引数として与えられたデータ配列の要素(i番目の反復表示スクリーンに対してi番目の配列要素)が渡されます。
3.37.IFrame
IFrameモジュールはHTMLの<iframe>タグを用いて画面内にネット上のコンテンツ(ウェブページなど)を埋め込むためのモジュールです。
3.37.1.アクション
本項ではIFrameモジュールのアクションについて説明します。
3.37.1.1.setSrc
setSrcアクションはIFrameモジュール内に表示するコンテンツのURLを設定します。
setSrc(src)
src引数には表示するURLを文字列で与えます。
3.37.1.2.setStyle
setStyleアクションは、IFrameモジュールのスタイルを設定します。
setStyle(style)
style引数にはスタイルオブジェクトを与えます。
4.モデルオブジェクト
DBテーブル設計で定義されるテーブルおよびDBビュー設計で定義されるビューをまとめて「モデル」と呼び、モデルの設計情報を表すオブジェクトのことを「モデルオブジェクト」と呼びます。Buddyアプリを構成するモデルは、スクリーンプログラムにおいてthis.modelsで参照できます。たとえばShohinテーブルの設計情報は次のように参照できます。
this.models.Shohin
モデルの設計情報は、テーブルの場合はModelTableクラス、ビューの場合はModelViewクラスで表されます。
4.1.ModelTable
ModelTableはDBテーブルのモデル情報とレコード操作のためのメソッドを提供するクラスです。
4.1.1.プロパティ
4.1.1.1.modelType
modelTypeプロパティの値は文字列 "table" です。モデルオブジェクトがDBテーブルかどうかを調べるのに用います。
4.1.1.2.conf
confプロパティの値はテーブルの設計情報オブジェクトです。設計情報オブジェクトは以下のプロパティから成ります。
- TableDbname
- DB上のテーブル名(英数_)
- TableDisplayname
- 表示上のテーブル名(日本語可)
- TableType
- テーブルタイプ(STOCK または FLOW)
- TableFlags
- テーブルフラグの配列
- TableMemo
- 備考(開発上のメモ)
- TableColumns
- 次のカラム情報オブジェクトの配列
- ColumnDbname
- DB上のカラム名(英数_)
- ColumnDisplayname
- 表示上のカラム名(日本語可)
- ColumnCategory
- データ型のカテゴリ
- ColumnClass
- データ型のクラス
ColumnType … データ型 - ColumnDefaultvalue
- デフォルト値
- ColumnOrder
- カラムの順序(整数値)
- ColumnFlags
- カラムフラグの配列
- ColumnChoices
- 選択肢の配列
- ColumnRange
- 範囲選択肢(「最小値:最大値:刻み値」)
- ColumnMemo
- 備考(開発上のメモ)
- TablePrimaryKeyColumns
- Primary Key指定するカラム名の配列
- TableIndexes
- 次のインデックス情報オブジェクトの配列
- IndexDbname
- DB上のインデックス名(英数_)
- IndexDisplayname
- 表示上のインデックス名(日本語可)
- IndexUnique
- Uniqueかどうか(trueまたはfalse)
- IndexColumnsOrExpressions
- カラム名または式の配列
- TableRules
- 次のルール情報オブジェクトの配列
- RuleDbname
- DB上の制約名(英数_)
- RuleDisplayname
- 表示上のルール名(日本語可)
RuleCheck … 検査式
※特殊な指定として、「カラム名 NOT NULL」「UNIQUE(カラム名,…)」 - TableOrders
- 次の順序情報オブジェクトの配列
- OrderName
- 順序名(英数_)
- OrderDisplayname
- 表示上の順序名(日本語可)
- OrderDefault
- デフォルト順序かどうか(trueまたはfalse)
- OrderSpecs
- 次の順序カラム指定オブジェクトの配列
OrderColumn … カラム名 - OrderDirection
- ASC または DESC
- TableAuth
- アクセス制御オブジェクト
4.1.1.3.name
nameプロパティの値はテーブルのDB名を表します。この値はconf.TableDbnameプロパティと同一です。
4.1.1.4.header
headerプロパティの値はテーブルのカラムを表すオブジェクトの配列です。各要素は以下のプロパティから成ります。
- name
- カラムDB名
- displayName
- カラム表示名
配列のi番目の要素はconf.TableColumnsプロパティのi番目の要素に対応しています。
4.1.2.メソッド
本節ではModelTableクラスのメソッドについて説明します。
4.1.2.1.as
asメソッドは後述の【select】メソッドで作成するサブクエリオブジェクトに別名を与えます。
as(name)
name引数にはサブクエリの別名を文字列で与えます。asメソッドは戻り値としてModelTableオブジェクトを返します。この戻り値を使ってさらにselectメソッドを呼び出せます。以下に例を示します。
var tableName = "weather";
var subquery = this.tables[tableName].as('t').select(["max(t.temp_lo)"], {});
var options = {
where: {"temp_lo": {op: "=", ref: subquery}},
};
this.tables[tableName].readData(options, (function(error, data) {
...
});
4.1.2.2.crossJoin
crossJoinメソッドはDBテーブルと別のDBテーブル・ビューまたはサブクエリの交差結合(cross join)を生成します。
crossJoin(table, asname)
table引数には別のDBテーブル・ビュー名、ModelTableオブジェクト、ModelViewオブジェクト、または【サブクエリ】オブジェクトを与えます。asname引数はtable引数に与えた結合対象の別名を指定します。別名はtable引数がサブクエリの場合は必須、それ以外の場合は省略可能です。crossJoinメソッドはModelTableオブジェクトを返します。
4.1.2.3.deleteRecord
deleteRecordメソッドはDBテーブルに格納されたレコードを削除します。
deleteRecord(options, callback)
options引数には以下のプロパティから成るオブジェクトを与えます。
- where
- 削除するレコードを選択する絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- details
- 明細テーブルのレコード削除操作を指定するオブジェクトの配列(後述)。明細テーブルが無ければ省略可
detailsプロパティの配列要素には次のプロパティから成るオブジェクトを与えます。
- name
- 明細テーブル名
- baseColumn
- ベーステーブルの参照元カラム名
- detailColumn
- 明細テーブルの参照先カラム名
- returning
- 結果オブジェクト(後述)として値を得たいカラム名の配列
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数には以下のプロパティから成るオブジェクトが渡されます。
- body
- 本テーブルに対する結果オブジェクト
- details
- 明細テーブル(options引数のdetailsプロパティの配列要素)と1対1に対応する要素から成る配列。この配列の要素は、次のプロパティから成るオブジェクトの配列
- body
- 明細テーブルの操作(削除)の結果オブジェクト
- err
- 上記の操作が成功のときはnull、失敗のときはErrorオブジェクト
ここで結果オブジェクトは以下のプロパティから成るオブジェクトです。
- command
- 本テーブル、明細テーブル共に"DELETE"
- rowCount
- レコード数
- rows
- レコードの配列。各レコードは {カラム名: 値, …} の形式のオブジェクト
なお、options引数に与えるオブジェクトにはreturningプロパティはありません。ベーステーブルの結果オブジェクトには削除されたレコードのすべてのカラムが含まれます。
4.1.2.4.expression
expressionメソッドは後述の【updateRecord】メソッドでカラム値を更新するためのSQL式を表すオブジェクトを生成します。
expression(expr, ...)
引数にはSQL式を文字列で与えます。複数の引数が与えられたら、すべてを空白でつないで1つのSQL式とみなします。戻り値はSQL式を表すオブジェクトです。このオブジェクトはupdateRecordメソッドのoptions引数のdataプロパティに与えるカラム値として指定できます。例えばSQL式を用いてテーブルtable1のカラムnumの値を1増やすには次のように記述します。
var tableName = "table1";
var table = this.models[tableName];
var options = {
data: {
num: table.expression('num + 1'),
},
};
table.updateRecord(options, function (err, res) {
...
});
4.1.2.5.findNext
findNextメソッドはDBテーブルのレコードについてキーワード検索を実行します。
findNext(options, callback)
options引数には以下のプロパティから成るオブジェクトを与えます。
- where
- キーワード検索の対象となるレコードを選択する絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- order
- 並べ替え。後述の【並べ替え】の節を参照してください。
- keyword
- 検索キーワード。後述の【パタン文字列】の節を参照してください。
- searchPos
- キーワード検索の開始レコード番号(最初のレコードが0)。
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。キーワード検索に成功した場合、コールバック関数の第1引数にはnull、第2引数にはsearchPos以降のレコードの中で検索キーワードが含まれる最初のレコードの番号が渡されます。検索キーワードが見つからなかった場合には-1が渡されます。
4.1.2.6.fullOuterJoin
fullOuterJoinメソッドはDBテーブルと別のDBテーブル・ビューまたはサブクエリの完全外部結合(full outer join)を生成します。
fullOuterJoin(table, asname)
table引数には別のDBテーブル・ビュー名、ModelTableオブジェクト、ModelViewオブジェクト、または【サブクエリ】オブジェクトを与えます。asname引数はtable引数に与えた結合対象の別名を指定します。別名はtable引数がサブクエリの場合は必須、それ以外の場合は省略可能です。後述のonメソッドまたはusingメソッドで結合条件を指定できます。いずれも指定しない場合は自然結合(natural join)となります。fullOuterJoinメソッドはModelTableオブジェクトを返します。
4.1.2.7.getCount
getCountメソッドは与えられた絞り込み条件を満たすレコードの数を返します。
getCount(options, callback)
options引数にはデータ読み込みのオプションを指定する、以下のプロパティから成るオブジェクトを与えます。
- where
- 絞り込み条件。後述の【絞り込み条件】の節を参照してください。
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数にはレコード数が数値で渡されます。
4.1.2.8.innerJoin
innerJoinメソッドはDBテーブルと別のDBテーブル・ビューまたはサブクエリの内部結合(inner join)を生成します。
innerJoin(table, asname)
table引数には別のDBテーブル・ビュー名、ModelTableオブジェクト、ModelViewオブジェクト、または【サブクエリ】オブジェクトを与えます。asname引数はtable引数に与えた結合対象の別名を指定します。別名はtable引数がサブクエリの場合は必須、それ以外の場合は省略可能です。後述のonメソッドまたはusingメソッドで結合条件を指定できます。いずれも指定しない場合は自然結合(natural join)となります。innerJoinメソッドはModelTableオブジェクトを返します。次の例のようにonメソッドやreadDataメソッドなどを続けて記述できます。
this.models['shain']
.innerJoin('busho').on('shain.busho_ID', 'busho.ID')
.readData({}, function (err, res) {...})
4.1.2.9.insertRecord
insertRecordメソッドはDBテーブルに新しいレコードを追加(挿入)します。
insertRecord(options, callback)
options引数には以下のプロパティから成るオブジェクトを与えます。
- data
- 新しいレコードを表す {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクト
- details
- 明細テーブルへのレコード追加(挿入)操作を指定するオブジェクトの配列(後述)。明細テーブルが無ければ省略可
detailsプロパティの配列要素には次のプロパティから成るオブジェクトを与えます。
- name
- 明細テーブル名
- baseColumn
- ベーステーブルの参照元カラム名
- detailColumn
- 明細テーブルの参照先カラム名
- data
- 新しいレコードの配列。各レコードは {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクト
- returning
- 結果オブジェクト(後述)として値を得たいカラム名の配列
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数には以下のプロパティから成るオブジェクトが渡されます。
- body
- 本テーブルに対する結果オブジェクト
- details
- 明細テーブル(options引数のdetailsプロパティの配列要素)と1対1に対応する要素から成る配列。この配列の要素は、次のプロパティから成るオブジェクトの配列
- body
- 明細テーブルの操作(削除および挿入)の結果オブジェクト
- err
- 上記の操作が成功のときはnull、失敗のときはErrorオブジェクト
ここで結果オブジェクトは以下のプロパティから成るオブジェクトです。
- command
- 本テーブルの場合は"INSERT"、明細テーブルの場合は"DELETE"または"INSERT"
- rowCount
- レコード数
- rows
- レコードの配列。各レコードは {カラム名: 値, …} の形式のオブジェクト
なお、options引数に与えるオブジェクトにはreturningプロパティはありません。ベーステーブルの結果オブジェクトには挿入されたレコードのすべてのカラムが含まれます。
4.1.2.10.leftOuterJoin
leftOuterJoinメソッドはDBテーブルと別のDBテーブル・ビューまたはサブクエリの左外部結合(left outer join)を生成します。
leftOuterJoin(table, asname)
table引数には別のDBテーブル・ビュー名、ModelTableオブジェクト、ModelViewオブジェクト、または【サブクエリ】オブジェクトを与えます。asname引数はtable引数に与えた結合対象の別名を指定します。別名はtable引数がサブクエリの場合は必須、それ以外の場合は省略可能です。後述のonメソッドまたはusingメソッドで結合条件を指定できます。いずれも指定しない場合は自然結合(natural join)となります。leftOuterJoinメソッドはModelTableオブジェクトを返します。
4.1.2.11.on
onメソッドは結合条件(JOIN ON節)を指定します。
on(leftColumn, rightColumn, options)
leftColumn引数とrightColumn引数には結合する2つのDBテーブル・ビューまたはサブクエリのカラム名を指定します。optionsには以下のプロパティから成るオブジェクトを与えます。
- op
- 結合条件の比較演算子(デフォルトは '=')
options引数は省略でき、その場合は比較演算子として = が用いられます。onメソッドはModelTableオブジェクトを返します。
4.1.2.12.outputCrossData
outputCrossDataメソッドはDBテーブルにクロス集計を適用して得られたレコードをファイルに書き出します。
outputCrossData(options, callback)
options引数には以下のプロパティから成るオブジェクトを与えます。
- crossOptions
- クロス集計オプション。後述の【クロス集計オプション】の節を参照してください。
- filters
- 出力フィルタ。カラム名とフィルタ名の対を {"カラム名1": フィルタ名1, "カラム名2": フィルタ名2, …} の形式のオブジェクトで与えます。フィルタについては後述の【フィルタAPI】の節を参照してください。
- format
- 出力ファイル形式。現在は "xlsx"(Excelファイル)のみサポートしています。
- fileName
- 出力ファイル名。省略するとDBテーブル名がファイル名として用いられます。
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ出力が成功した場合、コールバック関数の第1引数にはnull、第2引数には以下のプロパティから成る結果オブジェクトが渡されます。
- fileName
- 出力ファイル名
- url
- 出力ファイルのダウンロードURL
4.1.2.13.outputData
outputDataメソッドはDBテーブルのレコードをファイルに書き出します。
outputData(options, callback)
options引数には以下のプロパティから成るオブジェクトを与えます。
- columns
- カラムの並び。出力対象のカラム名を文字列配列で与えます。省略するとDBテーブルのすべてのカラムが出力されます。
- where
- 絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- order
- 並べ替え。後述の【並べ替え】の節を参照してください。
- num
- 読み込み件数。
- offset
- 先頭レコード番号(最初のレコードが0)。
- filters
- 出力フィルタ。カラム名とフィルタ名の対を {"カラム名1": フィルタ名1, "カラム名2": フィルタ名2, …} の形式のオブジェクトで与えます。フィルタについては後述の【フィルタAPI】の節を参照してください。
- format
- 出力ファイル形式。現在は "xlsx"(Excelファイル)のみサポートしています。
- fileName
- 出力ファイル名。省略するとDBテーブル名がファイル名として用いられます。
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ出力が成功した場合、コールバック関数の第1引数にはnull、第2引数には以下のプロパティから成る結果オブジェクトが渡されます。
- fileName
- 出力ファイル名
- url
- 出力ファイルのダウンロードURL
4.1.2.14.readCrossData
readCrossDataメソッドはDBテーブルにクロス集計を適用して得られたレコードを返します。
readCrossData(crossOptions, callback)
crossOptions引数にはクロス集計オプションを与えます。クロス集計オプションについては後述の【クロス集計オプション】の節を参照してください。callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数にはレコードの配列が渡されます。各レコードは {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクトです。
4.1.2.15.readCrossGraphData
readCrossGraphDataメソッドはDBテーブルにクロス集計を適用して得られたレコードをグラフモジュール向けに整形して返します。
readCrossGraphData(options, callback)
crossOptions引数にはクロス集計オプションを与えます。クロス集計オプションについては後述の【クロス集計オプション】の節を参照してください。callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数にはグラフモジュール向けに整形されたレコードの配列が渡されます。グラフモジュール向けのレコードの構成については【グラフ】の節を参照してください。
4.1.2.16.readData
readDataメソッドはDBテーブルからデータ行を読み込みます。
readData(options, callback)
options引数にはデータ読み込みのオプションを以下のプロパティから成るオブジェクトで与えます。
- where
- 絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- order
- 並べ替え。後述の【並べ替え】の節を参照してください。
- num
- 読み込み件数。
- offset
- 先頭レコード番号(最初のレコードが0)。
- useCache
- キャッシュ利用フラグ。真ならキャッシュを用います。
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数には得られたレコードの配列が渡されます。各レコードはカラム名と値の対から成る {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクトで表されます。
4.1.2.17.rightOuterJoin
rightOuterJoinメソッドはDBテーブルと別のDBテーブル・ビューまたはサブクエリの右外部結合(right outer join)を生成します。
rightOuterJoin(table, asname)
table引数には別のDBテーブル・ビュー名、ModelTableオブジェクト、ModelViewオブジェクト、または【サブクエリ】オブジェクトを与えます。asname引数はtable引数に与えた結合対象の別名を指定します。別名はtable引数がサブクエリの場合は必須、それ以外の場合は省略可能です。前述のonメソッドまたは後述のusingメソッドで結合条件を指定できます。いずれも指定しない場合は自然結合(natural join)となります。rightOuterJoinメソッドはModelTableオブジェクトを返します。
4.1.2.18.select
selectメソッドは絞り込み条件および結合に用いられる【サブクエリ】オブジェクトを作成します。
select(columns, options)
columns引数にはカラム式の並びを表す配列を与えます。配列の要素はカラム式の文字列または以下のプロパティからなるオブジェクトです。exprにはカラム式(カラム名や任意のSQL式)、asには別名を与えます。
expr … カラム式
as … AS名
options引数には上述の【readData】メソッドのoptions引数と同じ構造のオプションオブジェクトを与えます。selectメソッドは戻り値としてサブクエリオブジェクトを返します。サブクエリオブジェクトの利用方法については【サブクエリ】の節を参照してください。
- この機能は今のところサーバー機能設定では利用できません。将来利用できるように改善する予定です。
4.1.2.19.updateRecord
updateRecordメソッドはDBテーブルに格納された既存レコードを更新します。
updateRecord(options, callback)
options引数には以下のプロパティから成るオブジェクトを与えます。
- where
- 更新するレコードを選択する絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- data
- 更新されるカラムと新しい値の対を表す {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクト。値には数値、文字列などのリテラル値に加えて前述の【expression】メソッドで作成したSQL式を表すオブジェクトが指定できます。
- details
- 明細テーブルのレコード更新操作を指定するオブジェクトの配列(後述)。明細テーブルが無ければ省略可
detailsプロパティの配列要素には次のプロパティから成るオブジェクトを与えます。
- name
- 明細テーブル名
- baseColumn
- ベーステーブルの参照元カラム名
- detailColumn
- 明細テーブルの参照先カラム名
- data
- 新しいレコードの配列。各レコードは {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクト
- returning
- 結果オブジェクト(後述)として値を得たいカラム名の配列
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数には以下のプロパティから成るオブジェクトが渡されます。
- body
- 本テーブルに対する結果オブジェクト
- details
- 明細テーブル(options引数のdetailsプロパティの配列要素)と1対1に対応する要素から成る配列。この配列の要素は、次のプロパティから成るオブジェクトの配列
- body
- 明細テーブルの操作(削除および挿入)の結果オブジェクト
- err
- 上記の操作が成功のときはnull、失敗のときはErrorオブジェクト
ここで結果オブジェクトは以下のプロパティから成るオブジェクトです。
- command
- 本テーブルの場合は"UPDATE"、明細テーブルの場合は"DELETE"または"INSERT"
- rowCount
- レコード数
- rows
- レコードの配列。各レコードは {カラム名: 値, …} の形式のオブジェクト
なお、options引数に与えるオブジェクトにはreturningプロパティはありません。ベーステーブルの結果オブジェクトには更新されたレコードのすべてのカラムが含まれます。また、ベーステーブルについてはoptions引数のdataプロパティで値が与えられたカラムのみが更新され、dataプロパティで指定されていないカラムについては何の操作も行いません。一方、明細テーブルはベーステーブルのレコードに関連付けられたすべてのレコードを削除してからdetails.dataプロパティで与えられたレコードを挿入するという手順で更新されます。そのためdetails.dataプロパティで指定されていないカラムの値はNULL(または当該カラムのデフォルト値)になります。
4.1.2.20.upsertRecord
upsertRecordメソッドはレコードの更新を試みて成功したら処理を終えます。もし更新するレコードが無ければ新規レコードの挿入を行ないます。
upsertRecord(options, callback)
options引数には以下のプロパティから成るオブジェクトを与えます。
- where
- 更新するレコードを選択する絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- data
- 更新・挿入されるレコードのカラムと値の対を表す {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクト。
- details
- 明細テーブルのレコード更新操作を指定するオブジェクトの配列(後述)。明細テーブルが無ければ省略可
detailsプロパティの配列要素には次のプロパティから成るオブジェクトを与えます。
- name
- 明細テーブル名
- baseColumn
- ベーステーブルの参照元カラム名
- detailColumn
- 明細テーブルの参照先カラム名
- data
- 新しいレコードの配列。各レコードは {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクト
- returning
- 結果オブジェクト(後述)として値を得たいカラム名の配列
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数には以下のプロパティから成るオブジェクトが渡されます。
- body
- 本テーブルに対する結果オブジェクト
- details
- 明細テーブル(options引数のdetailsプロパティの配列要素)と1対1に対応する要素から成る配列。この配列の要素は、次のプロパティから成るオブジェクトの配列
- body
- 明細テーブルの操作(削除および挿入)の結果オブジェクト
- err
- 上記の操作が成功のときはnull、失敗のときはErrorオブジェクト
ここで結果オブジェクトは以下のプロパティから成るオブジェクトです。
- command
- 本テーブルの場合は"INSERT"または"UPDATE"、明細テーブルの場合は"DELETE"または"INSERT"
- rowCount
- レコード数
- rows
- レコードの配列。各レコードは {カラム名: 値, …} の形式のオブジェクト
なお、options引数に与えるオブジェクトにはreturningプロパティはありません。ベーステーブルの結果オブジェクトには更新されたレコードのすべてのカラムが含まれます。また、ベーステーブルについてはoptions引数のdataプロパティで値が与えられたカラムについて値が挿入または更新されます。dataプロパティで指定されていないカラムについては、挿入の場合はNULL(または当該カラムのデフォルト値)が挿入され、更新の場合は何の操作も行いません。一方、明細テーブルはベーステーブルのレコードに関連付けられたすべてのレコードを削除してからdetails.dataプロパティで与えられたレコードを挿入するという手順で更新されます。そのためdetails.dataプロパティで指定されていないカラムの値はNULL(または当該カラムのデフォルト値)になります。
4.1.2.21.using
usingメソッドは結合条件(JOIN USING節)を指定します。
using(column1, column2, ...)
引数には結合条件となるカラム名を1つ以上与えます。usingメソッドはModelTableオブジェクトを返します。
4.1.3.データ型
テーブルカラムの型には以下の5つがあります。
・数値
・真偽値
・文字列
・日付・時間
・ファイル
それぞれの型に属する型の詳細および対応するPostgreSQLのデータ型を以下に示します。
数値型の詳細(括弧内は有効な範囲):
- ・数値
- numeric(小数点より上は131072桁まで、小数点より下は16383桁まで)
- ・自動連番
- serial8(1から9223372036854775807まで)
- ・整数
- int8(-9223372036854775808から+9223372036854775807まで)
- ・小数点
- float8(15桁精度、およそ1E-307から1E+308まで)
- ・金額
- money(-92233720368547758.08 から +92233720368547758.07まで)
真偽値型の詳細:
・真偽値 … bool
文字列型の詳細:
・フリー … text
・英数字 … text
・ひらがな … text
・全角カナ … text
・半角カナ … text
・郵便番号 … text
・メールアドレス … text
日付・時間型の詳細(括弧内は有効な範囲): - ・日時
- timestamp with time zone(紀元前4713年から294276年まで)
- ・日付
- date(紀元前4713年から5874897年まで)
- ・時間
- time(00:00:00から24:00:00まで)
- ・時間間隔
- interval(-178000000年から178000000年まで)
ファイル型の詳細:
・フリー … text
・PDF … text
・WORD … text
・EXCEL … text
・画像 … text
文字列型のうち、フリーの場合は任意の文字列が有効です。その他の型の詳細は以下の正規表現にマッチする文字列のみが有効です。
- 英数字
- ^[A-Za-z0-9_]*$
- ひらがな
- ^[\u3041-\u309f\u30a0\u30fb\u30fc]*$
- 全角カナ
- ^[\u30a0-\u30ff\u3099-\u309c]*$
- 半角カナ
- ^[\uff65-\uff9f]*$
- 郵便番号
- ^\d{3}-?\d{4}$
メールアドレス - ^([A-Za-z0-9._%+-]+@([A-Za-z0-9]+(-[A-Za-z0-9]+)*.)+[A-Za-z]{2,})?$
一方、JavaScriptでは整数も実数もすべて国際規格IEEE 754に基づく倍精度浮動小数点数で表されます。したがってJavaScriptで正しく扱える整数は-9007199254740991から9007199254740991まで(絶対値が2の53乗未満の数)です。JavaScriptで扱える実数の範囲はPostgreSQLのfloat8と同じです。
4.1.4.型キャスト
文字列以外のデータ型の定数は、文字列と型キャストを組み合わせた以下の形式のSQL式で記述します。
'string'::type
'string'には文字列、typeにはPostgreSQLのデータ型の名前を与えます(前節の【データ型】の項を参照してください)。型キャストの用例を以下に示します。
'123'::int8 … 整数
'123.45'::float8 … 小数点
't'::bool … 真偽値
'2016-12-25 12:34:56 +0900'::timestamp with time zone … 日時
'2016-12-25'::date … 日付
'12:34:56'::time … 時間
'1 year 2 months 3 days'::interval … 時間間隔
型キャストはSQL式の結果を別のデータ型に変換するのにも用いられます。以下に例を示します。
- AGE("birthday")::text
- 時間間隔から文字列へ
("date" || ' ' || "time")::timestamp … 文字列から日時へ - NULL::text
- 文字列型のNULLへ
4.2.ModelView
ModelViewはDBビューのモデル情報とレコード操作のためのメソッドを提供するクラスです。
4.2.1.プロパティ
4.2.1.1.modelType
modelTypeプロパティの値は文字列 "view" です。モデルオブジェクトがDBビューかどうかを調べるのに用います。
4.2.1.2.conf
confプロパティの値はビューの設計情報オブジェクトです。設計情報オブジェクトは以下のプロパティから成ります。
- ViewType
- ビューの型(LIST、SUM、CROSS)
- ViewDbname
- DB上のビュー名(英数_)
- ViewDisplayname
- 表示上のビュー名(日本語可)
- ViewMemo
- 備考(開発上のメモ)
- ViewColumns
- 次のカラム情報オブジェクトの配列
- ColumnAsname
- DB上のAS名(英数_)
- ColumnDisplayname
- 表示上のカラム名(日本語可)
- ColumnExpression
- カラム内容の式
- ColumnSumType
- 集計型(GROUP、SUM、COUNT、MAX、MIN、AVG、NONE)
- ColumnOrder
- カラムの順序(整数値)
- ColumnMemo
- 備考(開発上のメモ)
- ViewFrom
- テーブル/ビュー名 または次のオブジェクト(入れ子可)
- FromLeft
- 左側のテーブル/ビュー名 またはViewFromオブジェクト
- FromLeftAsname
- 左側のテーブル/ビューのAS名
- FromRight
- 右側のテーブル/ビュー名 またはViewFromオブジェクト
- FromRightAsname
- 右側のテーブル/ビューのAS名
- JoinType
- JOIN指定(JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN)
- JoinOn
- 次のJOIN ON条件式オブジェクトの配列
- ColumnLeft
- 左側のテーブル/ビューのカラム名
- ColumnRight
- 右側のテーブル/ビューのカラム名
- Operator
- 演算子(=、!=)
- ViewWhere
- ビューのWHERE式
- ViewHaving
- ビューのHAVING式
- ViewOrderBy
- 次のビューORDER BY指定オブジェクトの配列
OrderColumn … カラム名 - OrderDirection
- ソート順序(ASC、DESC、NONE)
- ViewCross
- クロス集計(CROSS)型ビューのオプション
- CrossColumns
- 列ラベルカラムのDB名の配列
- CrossRows
- 行ラベルカラムのDB名の配列
- CrossValues
- 値カラムのDB名の配列
- CrossFunc
- 集計関数(SUM、COUNT、MAX、MIN、AVG)
- ViewAuth
- アクセス制御オブジェクト
4.2.1.3.name
nameプロパティの値はビューのDB名を表します。この値はconf.ViewDbnameプロパティと同一です。
4.2.1.4.header
headerプロパティの値はビューのカラムを表すオブジェクトの配列です。各要素は以下のプロパティから成ります。
- name
- カラムDB名
- displayName
- カラム表示名
配列のi番目の要素はconf.ViewColumnsプロパティのi番目の要素に対応しています。
4.2.2.メソッド
4.2.2.1.as
asメソッドは後述の【select】メソッドで作成するサブクエリオブジェクトに別名を与えます。
as(name)
name引数にはサブクエリの別名を文字列で与えます。asメソッドは戻り値としてModelViewオブジェクトを返します。この戻り値を使ってさらにselectメソッドを呼び出せます。
4.2.2.2.crossJoin
crossJoinメソッドはDBビューと別のDBテーブル・ビューまたはサブクエリの交差結合(cross join)を生成します。
crossJoin(table, asname)
table引数には別のDBテーブル・ビュー名、ModelTableオブジェクト、ModelViewオブジェクト、または【サブクエリ】オブジェクトを与えます。asname引数はtable引数に与えた結合対象の別名を指定します。別名はtable引数がサブクエリの場合は必須、それ以外の場合は省略可能です。crossJoinメソッドはModelViewオブジェクトを返します。
4.2.2.3.findNext
findNextメソッドはDBビューのレコードについてキーワード検索を実行します。
findNext(options, callback)
options引数には以下のプロパティから成るオブジェクトを与えます。
- where
- キーワード検索の対象となるレコードを選択する絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- order
- 並べ替え。後述の【並べ替え】の節を参照してください。
- keyword
- 検索キーワード。後述の【パタン文字列】の節を参照してください。
- searchPos
- キーワード検索の開始レコード番号(最初のレコードが0)。
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。キーワード検索に成功した場合、コールバック関数の第1引数にはnull、第2引数にはsearchPos以降のレコードの中で検索キーワードが含まれる最初のレコードの番号が渡されます。検索キーワードが見つからなかった場合には-1が渡されます。
4.2.2.4.fullOuterJoin
fullOuterJoinメソッドはDBビューと別のDBテーブル・ビューまたはサブクエリの完全外部結合(full outer join)を生成します。
fullOuterJoin(table, asname)
table引数には別のDBテーブル・ビュー名、ModelTableオブジェクト、ModelViewオブジェクト、または【サブクエリ】オブジェクトを与えます。asname引数はtable引数に与えた結合対象の別名を指定します。別名はtable引数がサブクエリの場合は必須、それ以外の場合は省略可能です。後述のonメソッドまたはusingメソッドで結合条件を指定できます。いずれも指定しない場合は自然結合(natural join)となります。fullOuterJoinメソッドはModelViewオブジェクトを返します。
4.2.2.5.getCount
getCountメソッドは与えられた絞り込み条件を満たすレコードの数を返します。
getCount(options, callback)
options引数にはデータ読み込みのオプションを指定する、以下のプロパティから成るオブジェクトを与えます。
- where
- 絞り込み条件。後述の【絞り込み条件】の節を参照してください。
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数にはレコード数が数値で渡されます。
4.2.2.6.innerJoin
innerJoinメソッドはDBビューと別のDBテーブル・ビューまたはサブクエリの内部結合(inner join)を生成します。
innerJoin(table, asname)
table引数には別のDBテーブル・ビュー名、ModelTableオブジェクト、ModelViewオブジェクト、または【サブクエリ】オブジェクトを与えます。asname引数はtable引数に与えた結合対象の別名を指定します。別名はtable引数がサブクエリの場合は必須、それ以外の場合は省略可能です。後述のonメソッドまたはusingメソッドで結合条件を指定できます。いずれも指定しない場合は自然結合(natural join)となります。innerJoinメソッドはModelViewオブジェクトを返します。
4.2.2.7.leftOuterJoin
leftOuterJoinメソッドはDBビューと別のDBテーブル・ビューまたはサブクエリの左外部結合(left outer join)を生成します。
leftOuterJoin(table, asname)
table引数には別のDBテーブル・ビュー名、ModelTableオブジェクト、ModelViewオブジェクト、または【サブクエリ】オブジェクトを与えます。asname引数はtable引数に与えた結合対象の別名を指定します。別名はtable引数がサブクエリの場合は必須、それ以外の場合は省略可能です。後述のonメソッドまたはusingメソッドで結合条件を指定できます。いずれも指定しない場合は自然結合(natural join)となります。leftOuterJoinメソッドはModelViewオブジェクトを返します。
4.2.2.8.on
onメソッドは結合条件(JOIN ON節)を指定します。
on(leftColumn, rightColumn, options)
leftColumn引数とrightColumn引数には結合する2つのDBテーブル・ビューまたはサブクエリのカラム名を指定します。optionsには以下のプロパティから成るオブジェクトを与えます。
- op
- 結合条件の比較演算子(デフォルトは '=')
options引数は省略でき、その場合は比較演算子として = が用いられます。onメソッドはModelViewオブジェクトを返します。
4.2.2.9.outputCrossData
outputCrossDataメソッドはDBビューにクロス集計を適用して得られたレコードをファイルに書き出します。
outputCrossData(options, callback)
options引数には以下のプロパティから成るオブジェクトを与えます。
- crossOptions
- クロス集計オプション。後述の【クロス集計オプション】の節を参照してください。
- filters
- 出力フィルタ。カラム名とフィルタ名の対を {"カラム名1": フィルタ名1, "カラム名2": フィルタ名2, …} の形式のオブジェクトで与えます。フィルタについては後述の【フィルタAPI】の節を参照してください。
- format
- 出力ファイル形式。現在は "xlsx"(Excelファイル)のみサポートしています。
- fileName
- 出力ファイル名。省略するとDBテーブル名がファイル名として用いられます。
4.2.2.10.outputData
outputDataメソッドはDBビューのレコードをファイルに書き出します。
outputData(options, callback)
options引数には以下のプロパティから成るオブジェクトを与えます。
- columns
- カラムの並び。出力対象のカラム名を文字列配列で与えます。省略するとDBビューのすべてのカラムが出力されます。
- where
- 絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- order
- 並べ替え。後述の【並べ替え】の節を参照してください。
- num
- 読み込み件数。
- offset
- 先頭レコード番号(最初のレコードが0)。
- filters
- 出力フィルタ。カラム名とフィルタ名の対を {"カラム名1": フィルタ名1, "カラム名2": フィルタ名2, …} の形式のオブジェクトで与えます。フィルタについては後述の【フィルタAPI】の節を参照してください。
- format
- 出力ファイル形式。現在は "xlsx"(Excelファイル)のみサポートしています。
- fileName
- 出力ファイル名。省略するとDBビュー名がファイル名として用いられます。
4.2.2.11.readCrossData
readCrossDataメソッドはDBビューにクロス集計を適用して得られたレコードを返します。
readCrossData(crossOptions, callback)
crossOptions引数にはクロス集計オプションを与えます。クロス集計オプションについては後述の【クロス集計オプション】の節を参照してください。callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数にはレコードの配列が渡されます。各レコードは {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクトです。
4.2.2.12.readCrossGraphData
readCrossGraphDataメソッドはDBビューにクロス集計を適用して得られたレコードをグラフモジュール向けに整形して返します。
readCrossGraphData(options, callback)
crossOptions引数にはクロス集計オプションを与えます。クロス集計オプションについては後述の【クロス集計オプション】の節を参照してください。callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数にはグラフモジュール向けに整形されたレコードの配列が渡されます。グラフモジュール向けのレコードの構成については【グラフ】の節を参照してください。
4.2.2.13.readData
readDataメソッドはDBビューからデータ行を読み込みます。
readData(options, callback)
options引数にはデータ読み込みのオプションを以下のプロパティから成るオブジェクトで与えます。
- where
- 絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- order
- 並べ替え。後述の【並べ替え】の節を参照してください。
- num
- 読み込み件数。
- offset
- 先頭レコード番号(最初のレコードが0)。
- useCache
- キャッシュ利用フラグ。真ならキャッシュを用います。
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数には得られたレコードの配列が渡されます。各レコードはカラム名と値の対から成る {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクトで表されます。
4.2.2.14.rightOuterJoin
rightOuterJoinメソッドはDBビューと別のDBテーブル・ビューまたはサブクエリの右外部結合(right outer join)を生成します。
rightOuterJoin(table, asname)
table引数には別のDBテーブル・ビュー名、ModelTableオブジェクト、ModelViewオブジェクト、または【サブクエリ】オブジェクトを与えます。asname引数はtable引数に与えた結合対象の別名を指定します。別名はtable引数がサブクエリの場合は必須、それ以外の場合は省略可能です。前述のonメソッドまたは後述のusingメソッドで結合条件を指定できます。いずれも指定しない場合は自然結合(natural join)となります。rightOuterJoinメソッドはModelViewオブジェクトを返します。
4.2.2.15.select
selectメソッドは絞り込み条件および結合に用いられる【サブクエリ】オブジェクトを作成します。
select(columns, options)
columns引数にはカラム式の並びを表す配列を与えます。配列の要素はカラム式の文字列または以下のプロパティからなるオブジェクトです。exprにはカラム式(カラム名や任意のSQL式)、asには別名を与えます。
expr … カラム式
as … AS名
options引数には上述の【readData】メソッドのoptions引数と同じ構造のオプションオブジェクトを与えます。selectメソッドは戻り値としてサブクエリオブジェクトを返します。サブクエリオブジェクトの利用方法については【サブクエリ】の節を参照してください。
- この機能は今のところサーバー機能設定では利用できません。将来利用できるように改善する予定です。
4.2.3.カラム式
カラム内容の式にはSQLの式を自由に記述できます。本節では、ビューエディタのカラムの式編集ダイアログで選択して入力できるSQL式について説明します。
4.2.3.1.ABS(絶対値)
ABS関数は、与えられた値の絶対値を返します。
ABS(number)
引数numberには値が数値型となる式(たとえば数値リテラルや数値型のカラム名)を与えます。戻り値のデータ型は入力値と同じです。たとえばABS(-34.5)は34.5を返します。
4.2.3.2.AGE(日または日時の差)
AGE関数は、日付や日時の差を求めます。
AGE(timestamp1, timestamp2)
AGE(timestamp1)
引数timestamp1およびtimestamp2には値が日付型または日時型となる式(たとえば日付リテラルや日時型のカラム名)を与えます。戻り値のデータ型は時間間隔型です。引数が2つの場合、2つの日付または日時の差を返します。たとえばAGE('2017-06-15'::timestamp, '1980-01-01'::timestamp)は37 years 5 mons 14 daysを返します。引数が1つの場合、現在の日付と与えられた値との差を返します。たとえば現在の日付が2017年6月20日のとき、AGE('1 Jan 2017'::date)は5 mons 19 daysを返します。これはAGE(CURRENT_DATE, '1 Jan 2017'::date)と書くのと同義です。
4.2.3.3.ARRAY_AGG(該当レコードの値を集約して配列化)
ARRAY_AGG関数は、与えられたレコードの値を集約して配列にします。
ARRAY_AGG(column)
column引数には複数の値を返す式(たとえばカラム名)を与えます。戻り値は入力値と同じデータ型の配列です。
4.2.3.4.ARRAY_TO_STRING(配列から文字列に変換)
ARRAY_TO_STRING関数は配列を文字列に変換します。
ARRAY_TO_STRING(array, text1)
ARRAY_TO_STRING(array, text1, text2)
array引数には値が配列の式(たとえば配列リテラルや配列型のカラム名)、text1引数には区切り文字列を与えます。text2引数は省略可能で、与えられたときは配列中のNULL値を表す文字列として用いられます。たとえばARRAY_TO_STRING(ARRAY[-2, 1, NULL, 1, 2], ',', '')は-2,-1,,1,2を返します。
4.2.3.5.CASE(条件式)
CASE式は、条件の真偽に応じて別の値を返します。
CASE
WHEN <condition> THEN <value1>
ELSE <value2>
END
conditionには条件式を与えます。また、value1とvalue2には条件が真のときと偽のときに返される値をそれぞれ指定します。条件式はWHEN … THEN … の部分は2つ以上繰り返し記述することで複数指定できます。このときvalue2はすべての条件式が偽のときに返される値となります。ELSE … の部分は省略できます。ELSE句がなく、どの条件も真でないとき、CASE式の結果はNULLです。
4.2.3.6.COALESCE(NULLでない最初の値)
COALESCE関数は、与えられた引数のうち最初のNULLでない値を返します。すべての引数がNULLのときは結果はNULLです。
COALESCE(value1, value2, ...)
以下に用例を示します。
COALESCE(display_name, user_id, '<unknown>')
この式はdisplay_nameがNULLでなければをその値を返します。そうでない場合(値がNULLのとき)は、user_idがNULLでなければその値を返します。さもなければ<unknown>が返されます。
4.2.3.7.CONCAT(文字列結合)
CONCAT関数は、すべての引数を文字列化して結合した結果を返します。値がNULLの引数は無視されます。
CONCAT(value1, value2, ...)
引数には任意のデータ型の式(たとえば文字列リテラルやカラム名)を与えます。戻り値のデータ型は文字列型です。
4.2.3.8.DATE_PART(年切出)
この式はDATE_PART関数を用いて日時型の値から年を取り出します。
DATE_PART('year', timestamp)
timestamp引数には値が日付型の式(たとえば日時型のカラム名)を与えます。第1引数に以下のフィールド名を与えることで日時の成分を取り出せます。
century … 世紀
day … 日
- decade
- 年を10で割った値
- dow
- 日曜日(0)から土曜日(6)までの曜日
- doy
- 年内の通算日数(1~366)
- epoch
- 1970年1月1日からの経過秒数
hour … 時 - isodow
- 月曜日(1)から日曜日(7)までの曜日
- isoyear
- ISO 8601週番号年
- microseconds
- マイクロ秒(端数を含む秒に1,000,000を乗じた値)
- millennium
- ミレニアム(1千年期間)
- milliseconds
- ミリ秒(端数を含む秒に1,000を乗じた値)
minute … 分
month … 月 - quarter
- 四半期(1~4)
second … 秒 - timezone
- UTCからの時間帯オフセット(秒単位)
- timezone_hour
- 時間帯オフセットの時の成分
- timezone_minute
- 時間帯オフセットの分の成分
- week
- ISO 8601週番号
year … 年
日時フィールド名の詳細についてはPostgreSQLマニュアルのDATE_PART関数の節を参照してください。
https://www.postgresql.jp/document/9.4/html/functions-datetime.html
4.2.3.9.FLOOR(切り捨て)
FLOOR関数は、与えられた引数より大きくない最大の整数を返します。
FLOOR(number)
引数numberには値が数値型となる式(たとえば数値リテラルや数値型のカラム名)を与えます。戻り値のデータ型は入力値と同じです。たとえばFLOOR(-45.6)は-46を返します。
4.2.3.10.FORMAT(書式設定された文字列)
FORMAT関数は、C言語のsprintf関数と同様の方法で整形された文字列を生成します。
FORMAT(format, value, ...)
format引数には第2引数以降の値の出力書式を決めるフォーマット文字列(フォーマット指定子を含む文字列)を与えます。戻り値のデータ型は文字列型です。フォーマット指定子は%で始まる以下の形式の文字列です。
%[position][flags][width]type
positionはn$の形式の文字列で、nは出力する引数の番号です(format引数のあとの最初の引数が1)。flagsに-を指定すると左詰めになります。widthには出力する最小の文字幅を与えます。widthに*を指定すると次の引数が文字幅として用いられ、*n$を指定するとn番目の引数が文字幅として用いられます。
position、flags、widthは省略できます。typeにはフォーマット変換の形を指定します。以下の型が利用できます。
- s
- 文字列に変換して出力します。NULL値は空文字列になります。
- I
- 必要なら二重引用符で囲まれたSQL識別子に変換して出力します。NULL値はエラーになります。
- L
- 引用符で囲まれたリテラルに変換して出力します。NULL値は引用符なしでNULLと出力されます。
また、フォーマット指定子の特別な場合として、%%は文字%を出力します。FORMAT関数の用例を以下に示します。
FORMAT('%s, %s', 'foo', 'bar')
結果:foo, bar
FORMAT('%s-%s-%s', 1, 2, 3)
結果:1-2-3
FORMAT('%3$s-%2$s-%1$s', 1, 2, 3)
結果:3-2-1
FORMAT('%s%%', 12.3)
結果:12.3%
FORMAT('|%5s|', 'foo')
結果:| foo|
FORMAT('|%-5s|', 'foo')
結果:|foo |
FORMAT('|%*s|', 5, 'foo')
結果:| foo|
FORMAT('|%*2$s|', 'foo', 5, 'bar')
結果:| bar|
FORMAT('|%1$*2$s|', 'foo', 5, 'bar')
結果:| foo|
format('%I', 'foo');
結果:foo
format('%I', '123');
結果:"123"
format('%L', 'foo');
結果:'foo'
format('%L', NULL);
結果:NULL
フォーマット指定子の詳細についてはPostgreSQLマニュアルのformat関数の節を参照してください。
https://www.postgresql.jp/document/9.4/html/functions-string.html
4.2.3.11.INTERVAL(一日後)
このSQL式は、与えられた日付の一日後の日付を返します。
<date> + '1 day'::INTERVAL
<date>の部分には値が日付型の式(たとえば日付型のカラム名)を与えます。このSQL式のデータ型は<date>の式と同じです。また、'1 day'::INTERVALの部分には別の時間間隔型リテラルを指定できます。いくつかの例とその意味を以下に示します。
'1 year 2 mons 3 days 04:05:06'::INTERVAL … 1年2ヶ月3日4時間5分6秒
'1 year 2 months 3 days 4 hours 5 minutes 6 seconds'::INTERVAL … 同上
'2 weeks'::INTERVAL … 14日
- '1.5 year'::INTERVAL
- 1年6ヶ月
- '1.5 month'::INTERVAL
- 1ヶ月15日(1ヶ月=30日で換算されます)
- '1.5 week'::INTERVAL
- 10日12時間
- '1.5 day'::INTERVAL
- 1日12時間
- '1.5 hour'::INTERVAL
- 1時間30分
- '1.5 minute'::INTERVAL
- 1分30秒
時間間隔型リテラルの詳細についてはPostgreSQLマニュアルの時間間隔入力の節を参照してください。
https://www.postgresql.jp/document/9.4/html/datatype-datetime.html
4.2.3.12.LEFT(先頭の文字列)
LEFT関数は、文字列の先頭(左)から指定文字数分の部分文字列を返します。
LEFT(text, number)
text引数には値が文字列型の式(たとえば文字列リテラルや文字列型のカラム名)を与えます。number引数には文字数を指定します。文字数が負の値のときは、その値の絶対値に等しい文字数の分だけ文字列の末尾を除いた部分文字列を返します。
4.2.3.13.LOWER(小文字変換)
LOWER関数は、与えられた文字列を小文字に変換します。
LOWER(text)
text引数には値が文字列型の式(たとえば文字列型のカラム名)を与えます。戻り値のデータ型は文字列型です。
4.2.3.14.NULLIF(条件下でNULL)
NULLIF関数は、与えられた2つの値が等しければNULLを返します。
NULLIF(value1, value2)
引数value1とvalue2には任意のデータ型の式(たとえばカラム名やリテラル値)を与えます。2つの値が等しければ結果はNULLです。そうでなければvalue1が返されます。このとき、戻り値のデータ型はvalue1と同じです。以下にNULLIF関数を用いてゼロ除算を避ける例を示します。
column1 / NULLIF(column2, 0)
この式の結果は、column2が0のときはNULL、そうでなければcolumn1/column2です。
COALESCE(column1 / NULLIF(column2, 0), 0)
この例では上述のCOALESCE関数を併用してcolumn2が0のときの結果を0としています。
4.2.3.15.RIGHT(末尾の文字列)
RIGHT関数は、文字列の末尾(右)から指定文字数分の部分文字列を返します。
RIGHT( <text>, <number>)
text引数には値が文字列型の式(たとえば文字列リテラルや文字列型のカラム名)を与えます。number引数には文字数を指定します。文字数が負の値のときは、その値の絶対値に等しい文字数の分だけ文字列の先頭を除いた部分文字列を返します。
4.2.3.16.ROUND(四捨五入)
ROUND関数は、与えられた数値を四捨五入して返します。
ROUND(number)
引数には値が数値型の式(たとえば数値リテラルや数値型のカラム名)を与えます。戻り値のデータ型は入力値と同じです。たとえばROUND(23.4)は23を返します。
4.2.3.17.SUBSTR(文字列切出)
SUBSTR関数は、与えられた文字列の部分文字列を返します。
SUBSTR(text, number1, number2)
text引数には値が文字列型の式(たとえば文字列リテラルや文字列型のカラム名)を与えます。number1引数には部分文字列の開始位置(文字列の先頭が0)、number2引数には部分文字列の文字数を整数で与えます。
4.2.3.18.TO_CHAR(文字列化)
TO_CHAR関数は、種々のデータ型の値を整形された文字列に変換します。
TO_CHAR(value, text)
value引数には整形される値を与えます。text引数には出力書式を定義するテンプレートを文字列で与えます。TO_CHAR関数の用例を以下に示します。
TO_CHAR('Dec 25 2016'::date, 'YYYY-MM-DD')
結果:'2016-12-25'
TO_CHAR('2016-12-25'::date, 'Dy, Mon DD YYYY')
結果:'Sun, Dec 25 2016'
TO_CHAR('12 hours 34 minutes 56 seconds'::interval, 'HH24:MI:SS');
結果:'12:34:56'
TO_CHAR(123, '9999')
結果:' 123'
TO_CHAR(123, '0000')
結果:' 0123'
TO_CHAR(-123, '9999')
結果:' -123'
TO_CHAR(-123, '0000')
結果:'-0123'
TO_CHAR(-123, 'FM99999')
結果:'-123'
TO_CHAR(123, '9999.9')
結果:' 123.0'
TO_CHAR(123, 'FM9999.9')
結果:'123.'
TO_CHAR(12.3, '999.999')
結果:' 12.300'
TO_CHAR(12.3, 'FM999.999')
結果:'12.3'
TO_CHAR(1234, '99')
結果:' ##'
TO_CHAR(-1234, '99')
結果:'-##'
書式テンプレートの詳細についてはPostgreSQLマニュアルのデータ型書式設定関数の節を参照してください。
https://www.postgresql.jp/document/9.4/html/functions-formatting.html
4.2.3.19.UPPER(大文字変換)
UPPER関数は、与えられた文字列を大文字に変換します。
UPPER(text)
text引数には値が文字列型の式(たとえば文字列型のカラム名)を与えます。戻り値のデータ型は文字列型です。
5.apiオブジェクト
apiオブジェクトは、スクリーン設計のJavaScriptプログラム開発に用いられる各種APIモジュールへのアクセスを提供するオブジェクトです。apiオブジェクトの構成要素は以下のとおりです。
- api.constants
- api.request
- api.dbrequest
- api.cookie
- api.filter
- api.outputDialog
- api.dialog
- api.store
- api.KeyValueStore
- api.serverFunction
- api.TextSearch
- api.lib.async
- api.lib.objectAssign
- api.lib.superagent
- api.lib.EventEmitter
- api.lib.Decimal
- api.lib.xml2js
5.1.api.constants
- constantsモジュールはアプリケーション名や運用時のURLなどアプリケーション固有の情報を提供するモジュールです。このモジュールが提供する情報はすべてアプリケーションのビルド時に決まる固定値(定数)です。
5.1.1.プロパティ
- constantsモジュールには以下のプロパティがあります。
- apiVersion
- APIのバージョン番号文字列。現在は "1.0" のみ
- AppDisplayname
- アプリケーションの表示名
- appName
- アプリケーション名
- conf
- サーバ設定。以下のプロパティから成るオブジェクト
- port
- サーバのポート番号
- host
- サーバのホスト名
- companyName
- 契約名(会社名など)【TBC】
- fileRoot
- ルートURL中のファイル名のルートディレクトリ【TBC】
- first_screen
- 最初のスクリーン
- target
- ビルド対象("debug" または "release")
- urlRoot
- アプリケーション運用時のルートURL
5.2.api.request
- requestモジュールはBuddyサーバに対して種々の処理要求を送るためのAPI関数を提供するモジュールです。
5.2.1.関数
5.2.1.1.customLog
customLog関数はカスタムログファイルに文字列を書き込みます。
api.request.customLog(text, callback)
引数:
- text
- カスタムログファイルに書き込む文字列
- callback
- コールバック関数
text引数に与えた文字列は、関数呼び出し時のタイムスタンプ、実行ユーザの名前と共に日付別のカスタムログファイルに書き込まれます。カスタムログファイルは開発画面のログ閲覧機能により閲覧できます。実行結果はコールバック関数を通じて返されます。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したらコールバック関数の第1引数にはnullが渡されます。第2引数は今のところ使用されません。
5.2.1.2.deleteFile
deleteFile関数はアプリケーション用のファイルシステム上のファイルを削除します。
api.request.deleteFile(appName, dir, file, callback)
引数:
- appName
- アプリケーション名
- dir
- ディレクトリ名
- file
- ファイル名
- callback
- コールバック関数
dir引数に与えるディレクトリ名はappName引数で与えるアプリケーションのファイルシステム上の絶対パスです。実行結果はコールバック関数を通じて返されます。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したらコールバック関数の第1引数にはnullが渡されます。第2引数は今のところ使用されません。
5.2.1.3.getFileList
getFileList関数はアプリケーション用のファイルシステム上のファイルの一覧を得ます。
api.request.getFileList(appName, dir, callback)
- appName
- アプリケーション名
- dir
- ディレクトリ名
- callback
- コールバック関数
dir引数に与えるディレクトリ名はappName引数で与えるアプリケーションのファイルシステム上の絶対パスです。実行結果はコールバック関数を通じて返されます。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したら第1引数にはnull、第2引数にdirディレクトリ内の各ファイルおよびディレクトリの情報を表すオブジェクトの配列が返されます。配列の要素は次のプロパティから成るオブジェクトです。
- name
- ファイル名またはディレクトリ名
- path
- 当該ファイルまたはディレクトリを指す完全なパス名
- dir
- ディレクトリなら真、ファイルなら偽
5.2.1.4.getHoliday
getHoliday関数は1年分の祝日の一覧を得ます。
api.request.getHoliday(year, callback)
引数:
- year
- 年(西暦)
- callback
- コールバック関数
year引数には年を整数値で与えます。実行結果はコールバック関数を通じて返されます。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したらコールバック関数の第1引数にはnull、第2引数には以下のプロパティから成るオブジェクトの配列が渡されます。
- year
- 年(西暦)
month … 月
day … 日 - name
- 祝日の名前
5.2.1.5.getLatLngAddress
getLatLngAddress関数は住所から緯度・経度で表された位置情報を得ます。
api.request.getLatLngAddress(address, options, callback)
引数:
address … 住所
- options
- オプション
- callback
- コールバック関数
address引数には検索する住所を文字列で与えます。options引数は今のところ無視されます。実行結果はコールバック関数を通じて返されます。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したらコールバック関数の第1引数にはnull、第2引数には以下のプロパティから成るオブジェクトが渡されます。
lat … 緯度
lng … 経度
5.2.1.6.getUserInfo
getUserInfo関数はユーザ情報を得ます。
api.request.getUserInfo(callback)
引数:
- callback
- コールバック関数
実行結果はコールバック関数を通じて返されます。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したらコールバック関数の第1引数にはnull、第2引数には以下のプロパティから成るオブジェクトが渡されます。
- user_id
- ユーザID
name … ユーザ名 - group
- 権限グループ名
- user_group
- 所属するグループ名の配列
- guest
- ゲストユーザなら真
権限グループ名は以下のいずれかです。
- admin
- 運用管理・開発者
- operator
- 運用管理者
developer … 開発者
user … 一般
trial … お試し
support … サポート
5.2.1.7.getZipAddress
getZipAddress関数は郵便番号から住所を検索します。
api.request.getZipAddress(zip, options, callback)
引数:
zip … 郵便番号
- options
- 検索オプション。
- callback
- コールバック関数
zip引数に与える郵便番号が%で始まるときは前方一致検索、%で終わる時は後方一致検索を行ないます。options引数には以下のプロパティから成るオブジェクトを与えます。
- mode
- 検索モード。'SIMPLE' または 'FULL' のどちらか。
- offset
- 先頭レコード番号(最初のレコードが0)。デフォルト値は0。
- num
- 読み込み件数。デフォルト値は20。
実行結果はコールバック関数を通じて返されます。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したらコールバック関数の第1引数にはnull、第2引数にはoptions.modeの値に応じて以下のプロパティから成るオブジェクトが渡されます。
(a)options.modeが'SIMPLE'の場合
address … 住所
- kana
- 住所のフリガナ
- zip
- 郵便番号(7桁)
(b)options.modeが'FULL'の場合
build … ビル名 - build_kana
- ビル名のフリガナ
- city
- regionから市名を抜き出したもの
- city_kana
- 市名のフリガナ
- district
- regionから郡名を抜き出したもの
- district_kana
- 郡名のフリガナ
floor … ビルの階 - has_chome
- 丁目を有する町域なら真、そうでなければ偽
- has_koaza_banchi
- 小字毎に番地が起番されている町域なら真、そうでなければ偽
- has_subtown
- 小字、丁目、番地,号があれば真、そうでなければ偽
- is_multi_town
- 1つの郵便番号が2つ以上の町域を表す場合は真、そうでなければ偽
- is_multi_zip
- 1つの町域が2つ以上の郵便番号で表される場合は真、そうでなければ偽
- old_zip
- 旧郵便番号(5桁)
- pref
- 都道府県名
- pref_kana
- 都道府県名のフリガナ
- region
- 市区町村名
- region_id
- 全国地方公共団体コード(JIS X0401、X0402)を表す数値
- region_kana
- 市区町村名のフリガナ
- subtown
- 小字、丁目、番地,号等
- subtown_kana
- 小字、丁目、番地,号等のフリガナ
town … 町域名 - town_kana
- 町域名のフリガナ
- update_reason
- 更新の表示。0なら変更なし、1なら変更あり、2なら廃止
- update_status
- 変更理由。0は変更なし、1は市政・区政・町政・分区・政令指定都市施行、2は住居表示の実施、3は区画整理、4は郵便区調整等、5は訂正、6は廃止
- ward
- regionから区名を抜き出したもの
- ward_kana
- 区名のフリガナ
- zip
- 郵便番号(7桁)
5.2.1.8.keyValueStore
keyValueStore関数はアプリケーション固有のキーバリューストアに対する操作を実行します。
api.request.keyValueStore(method, key, value, callback)
引数:
- method
- キーバリューストアに対する操作。"set"、"get"、"del"のいずれか
key … キー
value … 値 - callback
- コールバック関数
method引数が"set"のときはkey引数で与えるキーの値をvalueで与える値に更新します。method引数が"get"のときはkey引数で与えるキーの値を読み出します(value引数は無視されます)。method引数が"del"のときはkey引数で指定したキーを削除します(value引数は無視されます)。実行結果はコールバック関数を通じて返されます。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したらコールバック関数の第1引数にはnull、第2引数には読み出した値が渡されます。
5.2.1.9.logout
logout関数はログアウト処理を実行します。
api.request.logout(callback)
引数:
- callback
- コールバック関数
実行結果はコールバック関数を通じて返されます。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したら第1引数にはnullが渡されます。第2引数は今のところ使用されません。
5.2.1.10.outputReport
outputReport関数はレポート出力を実行します。
api.request.outputReport(appName, outputName, target, param, callback)
引数:
- appName
- アプリケーション名
- outputName
- レポート名
- target
- レポート出力の対象。"debug"または"release"
- param
- レポートの制御パラメタ
- callback
- コールバック関数
param引数には以下のプロパティから成るオブジェクトを与えます。
- where
- 絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- order
- 並べ替え。後述の【並べ替え】の節を参照してください。
- offset
- 先頭レコード番号(最初のレコードが0)。
- num
- 出力件数。
- download
- trueならダウンロードを強制します。falseならブラウザの設定に従います(デフォルト値true)。
これら以外のプロパティも指定可で、レポート中で「this.param.プロパティ名」で参照できます。
複数のdbi:データソースを含むレポートでは、どのデータソースに対するオプション指定かを区別するために、srcnameparamという特殊な指定ができます。各データソースの名前を、 PDFレポートでは領域の属性「データソース名」で、Excelレポートでは、<repeat>の属性に「srcname="…"」として指定します。そして、レポート出力時のオプション指定で次の例のようにします。
var report = "…"; // レポート名
var param = { // オプションパラメータ
where: {…}, // データソース名のない領域やrepeatに対するもの
srcnameparam: {
foo: { // データソース名が「foo」の領域やrepeatに対するもの
where: {…},
order: "…",
}
}
};
api.outputDialog.open(report, param);
実行結果はコールバック関数を通じて返されます。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したら第1引数にはnull、第2引数にはレポート出力プロセスのIDが渡されます。
5.2.1.11.renameFile
renameFile関数はアプリケーション用のファイルシステム上のファイルの名前を変更します。
api.request.renameFile(appName, dir, src, dst, callback)
引数:
- appName
- アプリケーション名
- dir
- ディレクトリ名
- src
- 元のファイル名
- dst
- 新しいファイル名
- callback
- コールバック関数
dir引数に与えるディレクトリ名はappName引数で与えるアプリケーションのファイルシステム上の絶対パスです。実行結果はコールバック関数を通じて返されます。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したら第1引数にはnullが渡されます。第2引数は今のところ使用されません。
5.2.1.12.resizeImage
resizeImage関数は画像の縦横サイズを変換します。
api.request.resizeImage(options, callback)
引数:
- options
- オプション
- callback
- コールバック関数
options引数には以下のプロパティから成るオブジェクトを与えます。
- format
- 画像フォーマット(gif, jpg, png等)
- src
- 変換元ファイル名
- dst
- 変換先ファイル名
- width
- 横ピクセル数
- height
- 縦ピクセル数
- ignoreAspectRatio
- 真なら元の縦横比を無視する
実行結果はコールバック関数を通じて返されます。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したら第1引数にはnullが渡されます。第2引数は今のところ使用されません。
5.2.1.13.sendMail
sendMail関数はサーバを通じてメールを送信します。
api.request.sendMail(maildata, callback)
引数:
- maildata
- メールデータ(後述)
- callback
- コールバック関数
maildata引数には以下のプロパティから成るオブジェクトを与えます。
- type
- メール本文の形式。"text"または"html"
- from
- 送信元メールアドレス(省略するとBuddyサーバの設定ファイルで指定された送信元メールアドレスを使用)
- to
- 宛先メールアドレス(カンマ区切りで複数指定可)
- cc
- CCメールアドレス(カンマ区切りで複数指定可)
- bcc
- BCCメールアドレス(カンマ区切りで複数指定可)
subject … 表題
body … 本文 - attachments
- 添付ファイルパス(filesディレクトリからの相対パス)の配列
- smtpserver
- SMTPサーバのホスト名またはIPアドレス(省略するとBuddyサーバの設定ファイルで指定されたSMTPサーバを使用)
実行結果はコールバック関数を通じて返されます。コールバック関数をcallback(err, res)とすると、メールの送信に失敗した場合にはコールバック関数の第1引数にErrorオブジェクト(err.response.textにエラー内容)が渡されます。メールの送信に成功した場合は、第1引数にはnull、第2引数には以下のプロパティから成るSMTP応答オブジェクトが渡されます。
- envelope
- エンベロープオブジェクト
- accepted
- SMTPサーバによって受理されたメールアドレスの配列
- rejected
- SMTPサーバによって拒否されたメールアドレスの配列
- response
- SMTPサーバからの応答メッセージ文字列
少なくとも1つのメールアドレスがSMTPサーバにより受理されたら送信成功として扱われます。
5.2.1.14.sendMessage
sendMessage関数はサーバを通じてメッセージを送信します。
api.request.sendMessage(messagedata, callback)
引数:
- messagedata
- メッセージデータ(後述)
- callback
- コールバック関数
messagedata引数には以下のプロパティから成るオブジェクトを与えます。
- type
- メッセージの形式。文字列 "long_message" を与えます。
- to
- 宛先。1つ以上の宛先をカンマ区切りの文字列で与えます。各宛先は以下のいずれかです。
- ・ユーザーID
- 個別ユーザー
- ・:ALL
- 全ユーザー
- ・:ONLINE
- 全オンラインユーザー
- ・:GROUP(グループ名)
- グループに属する全ユーザー
- title
- 表題。文字列で与えます。
- body
- 本文。文字列で与えます。
- option
- オプション。以下のプロパティから成るオブジェクトを与えます。
- offlineuser
- 文字列 "sendmail" を与えると、相手がオフラインの場合はメールで送信します。
実行結果はコールバック関数を通じて返されます。コールバック関数をcallback(err, res)とすると、メッセージの送信に失敗した場合にはコールバック関数の第1引数にErrorオブジェクト(err.response.textにエラー内容)が渡されます。メッセージの送信に成功した場合は、コールバック関数の第1引数にはnull、第2引数には各宛先への送信結果の配列が渡されます。送信結果は以下のいずれかです。
- ・オンラインで送信した場合
- "ユーザーID:socket"
- ・メールで送信した場合
- "ユーザーID:mailto:メールアドレス"
- ・メール送信に失敗した場合
- "ユーザーID:sendmail error:エラー内容"
- ・相手がオフラインで送信しなかった場合
- "ユーザーID:noop"
5.2.1.15.upload
upload関数はアプリケーション用のファイルシステム上にファイルをアップロードします。
api.request.upload(appName, dir, files, callback)
引数:
- appName
- アプリケーション名
- dir
- ディレクトリ名
- files
- ファイルリスト
- callback
- コールバック関数
dir引数に与えるディレクトリ名はappName引数で与えるアプリケーションのファイルシステム上の絶対パスです。files引数にはHTML5のFileListオブジェクトを与えます(※注:Internet Explorer 11ではFileListオブジェクトは利用できません)。実行結果はコールバック関数を通じて返されます。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したら第1引数にはnull、第2引数にはアップロードされたフェイルのパス名が渡されます。
5.3.api.dbrequest
- dbrequestモジュールはBuddyサーバに対してデータベース処理要求を送るためのAPI関数を提供するモジュールです。
5.3.1.関数
5.3.1.1.addListener
addListener関数はDBテーブルのテーブルトリガに関するメッセージを受け取るリスナー関数を追加します。
api.dbrequest.addListener(appName, tableName, listener, callback)
引数:
- appName
- アプリケーション名
- tableName
- DBテーブル名
- listener
- リスナー関数
- callback
- コールバック関数
listener引数にはリスナーとなる関数オブジェクトを与えます。リスナー関数の第1引数にはテーブルトリガに関するメッセージが渡されます。メッセージは以下のプロパティから成るオブジェクトです。
- type
- "dbi"
- api
- "notify"
- payload
- メッセージの本体(ペイロード)。以下のプロパティから成るオブジェクト
- NEW
- 新レコード
- OLD
- 旧レコード
TG_NAME … トリガ名 - TG_WHEN
- トリガ実行タイミング。"BEFORE"(データ操作実行前)、"AFTER"(データ操作実行後)のいずれか。
- TG_LEVEL
- トリガ実行レベル。"ROW"(行単位)、"STATEMENT"(文単位)のいずれか
- TG_OP
- データ操作名。"INSERT"、"UPDATE"、"DELETE"、"TRUNCATE"のいずれか
- TG_RELID
- DBテーブルのOID
- TG_TABLE_NAME
- DBテーブル名
- TG_TABLE_SCHEMA
- スキーマ名
- from
- メッセージの送信元
- time
- タイムスタンプ
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したら第1引数にはnullが渡されます。第2引数は今のところ使用されません。
5.3.1.2.clearCache
clearCache関数は後述のreadCachedData関数で用いるキャッシュの内容を破棄します。
api.dbrequest.clearCache()
5.3.1.3.deleteRecord
deleteRecord関数はDBテーブルに格納されたレコードを削除します。
api.dbrequest.deleteRecord(appName, target, tableName, where, callback)
引数:
- appName
- アプリケーション名
- target
- ビルド対象("debug"または"release")
- tableName
- DBテーブル名
- where
- 絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- callback
- コールバック関数
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数には以下のプロパティから成るオブジェクトが渡されます。
- body
- 削除されたレコードの配列。各レコードは {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクト。
5.3.1.4.findNext
findNext関数はDBテーブル・ビューのレコードについてキーワード検索を実行します。
api.dbrequest.findNext(appName, target, tableName, where, order, keyword, searchPos, callback)
引数:
- appName
- アプリケーション名
- target
- ビルド対象("debug"または"release")
- tableName
- DBテーブル・ビュー名
- where
- 絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- order
- 並べ替え。後述の【並べ替え】の節を参照してください。
- keyword
- 検索キーワード。後述の【パタン文字列】の節を参照してください。
- searchPos
- キーワード検索の開始レコード番号(最初のレコードが0)。
- callback
- コールバック関数
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。キーワード検索に成功した場合、コールバック関数の第1引数にはnull、第2引数にはsearchPos以降のレコードの中で検索キーワードが含まれる最初のレコードの番号が渡されます。検索キーワードが見つからなかった場合には-1が渡されます。
5.3.1.5.getColumns
getColumns関数はDBテーブル・ビューのカラムに関する情報を得ます。
api.dbrequest.getColumns(appName, target, tableName, callback)
引数:
- appName
- アプリケーション名
- target
- ビルド対象("debug"または"release")
- tableName
- DBテーブル・ビュー名
- callback
- コールバック関数
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功した場合、コールバック関数の第1引数にはnull、第2引数には以下のプロパティから成るオブジェクトの配列が渡されます。
a. DBテーブルの場合
ColumnDbname … カラム名
- ColumnDisplayname
- カラム表示名
- ColumnCategory
- データ型のカテゴリ
- ColumnClass
- データ型のクラス
ColumnType … データ型 - ColumnDefaultvalue
- デフォルト値
- ColumnOrder
- カラムの順序
- ColumnFlags
- カラムフラグの配列
- ColumnChoices
- 選択肢の配列
- ColumnRange
- 範囲選択肢
ColumnMemo … メモ
b. DBビューの場合 - ColumnAsname
- カラムAS名
- ColumnDisplayname
- カラム表示名
- ColumnExpression
- カラム内容の式
- ColumnSumType
- 集計型(GROUP、SUM、COUNT、MAX、MIN、AVG、NONE)
- ColumnOrder
- カラムの順序
ColumnMemo … メモ
5.3.1.6.getCount
getCount関数は与えられた絞り込み条件を満たすレコードの数を返します。
api.dbrequest.getCount(appName, target, tableName, where, callback)
引数:
- appName
- アプリケーション名
- target
- ビルド対象("debug"または"release")
- tableName
- DBテーブル・ビュー名
- where
- 絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- callback
- コールバック関数
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数にはレコード数が数値で渡されます。
5.3.1.7.getCrossColumns
getCrossColumns関数はDBテーブル・ビューのクロス集計結果(一時テーブル)を構成するカラムの情報を得ます。
api.dbrequest.getCrossColumns(appName, target, crossOptions, callback)
引数:
- appName
- アプリケーション名
- target
- ビルド対象("debug"または"release")
- crossOptions
- クロス集計オプション。後述の【クロス集計オプション】の節を参照してください。
- callback
- コールバック関数
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功した場合、コールバック関数の第1引数にはnull、第2引数には以下のプロパティから成るオブジェクトの配列が渡されます。
ColumnAsname … カラム名
- ColumnDisplayname
- カラム表示名
- ColumnExpression
- カラム内容の式
- ColumnValue
- 値カラムのカラム名(列ラベルの場合のみ)
- ColumnSumType
- 集計タイプ。"GROUP"(行ラベルの場合)、または"SUM"、"COUNT"、"MAX"、"MIN"、"AVG"のいずれか(列ラベルの場合)
- ColumnCategory
- カテゴリ階層(列ラベルの場合のみ)。以下のプロパティから成るオブジェクトの配列
- CatExpression
- ひとつのカテゴリ階層を定義するSQL条件式
- CatValues
- 列カラムの値(上記のSQL条件式に現れるリテラル)
5.3.1.8.insertRecord
insertRecord関数はDBテーブルに新しいレコードを追加(挿入)します。
api.dbrequest.insertRecord(appName, target, tableName, data, callback)
引数:
- appName
- アプリケーション名
- target
- ビルド対象("debug"または"release")
- tableName
- DBテーブル名
- data
- 新しいレコードを表す {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクト
- callback
- コールバック関数
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数には以下のプロパティから成るオブジェクトが渡されます。
- body
- 更新されたレコードの配列。各レコードは {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクト。
5.3.1.9.outputCrossData
outputCrossData関数はDBテーブル・ビューにクロス集計を適用して得られたレコードをファイルに書き出します。
api.dbrequest.outputCrossData(appName, target, crossOptions, filters, format, fileName, callback)
引数:
- appName
- アプリケーション名
- target
- ビルド対象("debug"または"release")
- crossOptions
- クロス集計オプション。後述の【クロス集計オプション】の節を参照してください。
- filters
- 出力フィルタ。カラム名とフィルタ名の対を {"カラム名1": フィルタ名1, "カラム名2": フィルタ名2, …} の形式のオブジェクトで与えます。フィルタについては後述の【フィルタAPI】の節を参照してください。
- format
- 出力ファイル形式。現在は "xlsx"(Excelファイル)のみサポートしています。
- fileName
- 出力ファイル名。省略するとDBテーブル・ビュー名がファイル名として用いられます。
- callback
- コールバック関数
5.3.1.10.outputData
outputData関数はDBテーブル・ビューのレコードをファイルに書き出します。
api.dbrequest.outputData(appName, target, tableName, columns, where, offset, num, order, filters, format, fileName, callback)
引数:
- appName
- アプリケーション名
- target
- ビルド対象("debug"または"release")
- tableName
- DBテーブル・ビュー名
- where
- 絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- offset
- 先頭レコード番号(最初のレコードが0)。
- num
- 読み込み件数。
- order
- 並べ替え。後述の【並べ替え】の節を参照してください。
- filters
- 出力フィルタ。カラム名とフィルタ名の対を {"カラム名1": フィルタ名1, "カラム名2": フィルタ名2, …} の形式のオブジェクトで与えます。フィルタについては後述の【フィルタAPI】の節を参照してください。
- format
- 出力ファイル形式。現在は "xlsx"(Excelファイル)のみサポートしています。
- fileName
- 出力ファイル名。省略するとDBテーブル・ビュー名がファイル名として用いられます。
- callback
- コールバック関数
5.3.1.11.readCachedData
readCachedData関数はキャッシュを用いてDBテーブル・ビューからデータ行を読み込みます。以前に読み込んだデータ行がキャッシュに残っていたらそれを実行結果として返します。この場合、サーバへのデータベース処理要求が省略されるので実行が比較的短時間で完了します。
api.dbrequest.readCachedData(appName, target, tableName, where, offset, num, order, callback)
引数:
- appName
- アプリケーション名
- target
- ビルド対象("debug"または"release")
- tableName
- DBテーブル・ビュー名
- where
- 絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- order
- 並べ替え。後述の【並べ替え】の節を参照してください。
- callback
- コールバック関数
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数には得られたレコードの配列が渡されます。各レコードはカラム名と値の対から成る {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクトで表されます。
5.3.1.12.readCrossData
readCrossData関数はDBテーブル・ビューにクロス集計を適用して得られたレコードを返します。
api.dbrequest.readCrossData(appName, target, crossOptions, callback)
引数:
- appName
- アプリケーション名
- target
- ビルド対象("debug"または"release")
- crossOptions
- クロス集計オプション。後述の【クロス集計オプション】の節を参照してください。
- callback
- コールバック関数
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数には得られたレコードの配列が渡されます。各レコードはカラム名と値の対から成る {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクトで表されます。
5.3.1.13.readData
readData関数はDBテーブル・ビューからデータ行を読み込みます。
api.dbrequest.readData(appName, target, tableName, where, offset, num, order, callback)
引数:
- appName
- アプリケーション名
- target
- ビルド対象("debug"または"release")
- tableName
- DBテーブル・ビュー名
- where
- 絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- offset
- 先頭レコード番号(最初のレコードが0)。
- num
- 読み込み件数。
- order
- 並べ替え。後述の【並べ替え】の節を参照してください。
- callback
- コールバック関数
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数には得られたレコードの配列が渡されます。各レコードはカラム名と値の対から成る {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクトで表されます。
5.3.1.14.removeListener
removeListener関数は前述のaddListener関数で追加したリスナーを削除します。
api.dbrequest.removeListener(appName, tableName, listener, callback)
引数:
- appName
- アプリケーション名
- tableName
- DBテーブル名
- listener
- リスナー関数
- callback
- コールバック関数
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したら第1引数にはnullが渡されます。第2引数は今のところ使用されません。
5.3.1.15.setCacheOptions
setCacheOptions関数は前述のreadCachedData関数で用いるキャッシュのオプションを設定します。
api.dbrequest.setCacheOptions(options)
引数:
- options
- キャッシュオプション。以下のプロパティから成るオブジェクトを与えます。
- size
- キャッシュに保存するreadCachedData関数の実行結果の最大数
5.3.1.16.updateRecord
updateRecord関数はDBテーブルに格納された既存レコードを更新します。
api.dbrequest.updateRecord(appName, target, tableName, where, data, callback)
引数:
- appName
- アプリケーション名
- target
- ビルド対象("debug"または"release")
- tableName
- DBテーブル名
- where
- 絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- data
- 更新されるカラムと新しい値の対を表す {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクト。
- callback
- コールバック関数
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数には以下のプロパティから成るオブジェクトが渡されます。
- body
- 更新されたレコードの配列。各レコードは {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクト。
5.3.1.17.upsertRecord
upsertRecord関数はレコードの更新を試みて成功したら処理を終えます。もし更新するレコードが無ければ新規レコードの挿入を行ないます。
api.dbrequest.upsertRecord(appName, target, tableName, where, data, callback)
引数:
- appName
- アプリケーション名
- target
- ビルド対象("debug"または"release")
- tableName
- DBテーブル名
- where
- 絞り込み条件。後述の【絞り込み条件】の節を参照してください。
- data
- 更新・挿入されるレコードのカラムと値の対を表す {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクト。
- callback
- コールバック関数
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。データ操作が成功した場合、コールバック関数の第1引数にはnull、第2引数には以下のプロパティから成るオブジェクトが渡されます。
- body
- 更新・挿入されたレコードの配列。各レコードは {カラム名1: 値1, カラム名2: 値2, ...} の形式のオブジェクト。
5.4.api.cookie
- cookieモジュールはアプリケーションに関連付けられたクッキーを参照するためのモジュールです。クッキーはキーと値の対の並びとして表されます。
5.4.1.プロパティ
- cookieモジュールはクッキーの各々のキーをプロパティ名、キーの値をプロパティの値とするオブジェクトです。キーに含まれる空白文字はプロパティ名からは取り除かれます(たとえば "foo bar" というキーは "foobar" というプロパティになります)。
5.5.api.filter
- filterモジュールはBuddyのフィルタ機能をJavaScriptコードから利用するためのAPI関数を提供するモジュールです。
5.5.1.関数
5.5.1.1.apply
apply関数は与えられたデータにフィルタを適用した結果を返します。
api.filter.apply(filterName, data)
引数:
- filterName
- フィルタ名
- data
- フィルタ適用対象のデータ(文字列など)
filterName引き数には適用するフィルタの名前を文字列で与えます。利用できるフィルタ名については【フィルタAPI】の節を参照してください。
5.5.1.2.exists
exists関数は与えられた名前のフィルタが存在するかどうかを返します。
api.filter.exists(filterName)
引数:
- filterName
- フィルタ名
filterName引数で与えた名前のフィルタが存在するならば真を、それ以外の場合は偽を返します。
5.5.1.3.set
set関数は新しいフィルタを登録します。
api.filter.set(filterName, func)
引数:
- filterName
- フィルタ名
- func
- 関数オブジェクト
filterName引数には新しいフィルタ名を、func引数にはフィルタを実装する関数オブジェクトを与えます。
5.6.api.outputDialog
- outputDialogモジュールはレポート出力を実行してレポートをダウンロードするためのダイアログを表示するモジュールです。
5.6.1.関数
5.6.1.1.open
open関数はレポート出力ダイアログを開きます。
api.outputDialog.open(outputName, param)
引数:
- outputName
- レポート名
- param
- レポートの制御パラメタ
outputName引数にはレポート設計で定義したレポート名を与えます。param引数にはレポート制御パラメタを与えます。指定したパラメタはapi.request.outputReport関数のparam引数に渡されます。パラメタの詳細については【outputReport】の節を参照してください。
5.7.api.dialog
- dialogモジュールは各種のダイアログウィンドウを表示するためのAPI関数を提供するモジュールです。
5.7.1.関数
5.7.1.1.alert
alert関数はメッセージを警告用ダイアログで表示します。
api.dialog.alert(message, callback)
引数:
- message
- メッセージ文字列
- callback
- コールバック関数
message引数にはダイアログ内に表示するメッセージを文字列で与えます。このダイアログは閉じられるまでJavaScriptコードの実行をブロックします。コールバック関数はダイアログが閉じられた後に呼び出されます。
5.7.1.2.closeDialog
closeDialog関数は後述のshowModal関数で開いたダイアログを閉じます。
api.dialog.closeDialog(code, value)
引数:
- code
- 終了コード
- value
- ダイアログの戻り値
code引数にはダイアログの閉じ方を示す任意の値を与えます。value引数にはダイアログからスクリーンプログラムに渡す戻り値を与えます。code引数とvalue引数の値はそれぞれshowModal関数で開いたコールバック関数の第1引数、第2引数に渡されます。
5.7.1.3.confirm
confirm関数はメッセージを確認用ダイアログで表示します。ダイアログウィンドウにはOKボタンとキャンセルボタンが表示されます。
api.dialog.confirm(message, callback)
引数:
- message
- メッセージ
- callback
- コールバック関数
message引数にはダイアログ内に表示するメッセージを文字列で与えます。このダイアログは閉じられるまでJavaScriptコードの実行をブロックします。コールバック関数はダイアログが閉じられた後に呼び出されます。コールバック関数の引数には、OKボタンが押されたらtrue、キャンセルボタンが押されたらfalseが渡されます。
5.7.1.4.message
messageはメッセージをアプリケーション内のダイアログで表示します。
api.dialog.message(message, style, callback)
引数:
- message
- メッセージ文字列
- style
- スタイルオブジェクト
- callback
- コールバック関数
message引数にはダイアログ内に表示するメッセージを文字列で与えます。style引数にはスタイルオブジェクトを与えます。このダイアログはJavaScriptコードの実行をブロックしません。ダイアログが閉じられたらコールバック関数が呼び出されます。
5.7.1.5.openFile
openFile関数はアプリケーションのファイルシステム内のファイルをブラウザの別ウィンドウに表示します。
api.dialog.openFile(path, target)
引数:
- path
- ファイル名
- target
- ウィンドウ名
path引数にはファイル名を/filesディレクトリからの相対パスで指定します。target引数にはブラウザのウィンドウ名を与えます。指定した名前のウィンドウがあればそのウィンドウが用いられ、なければその名前の新しいウィンドウが開かれます。target引数に"_blank"を指定すると常に新しいウィンドウが開かれます。target引数を省略すると"_blank"を指定したと見なされます。
5.7.1.6.openUrl
openUrl関数はURLで指定されるリソース(ウェブページなど)をブラウザの別ウィンドウに表示します。
api.dialog.openUrl(url, target)
引数:
- url
- リソースのURL
- target
- ウィンドウ名
url引数には表示するリソースのURLを文字列で与えます。target引数にはブラウザのウィンドウ名を与えます。指定した名前のウィンドウがあればそのウィンドウが用いられ、なければその名前の新しいウィンドウが開かれます。target引数に"_blank"を指定すると常に新しいウィンドウが開かれます。target引数を省略すると"_blank"を指定したと見なされます。
5.7.1.7.show
show関数はコンテナ型のスクリーンをアプリケーション内のダイアログに埋め込んで表示します。
api.dialog.show(screen, style, callback)
引数:
- screen
- スクリーン名
- style
- スタイルオブジェクト
- callback
- コールバック関数
screen引数にはダイアログに埋め込むスクリーンの名前を与えます。指定するスクリーンはコンテナ型でなければなりません。style引数にはスタイルオブジェクトを与えます。このダイアログはJavaScriptコードの実行をブロックしません。show関数で開いたダイアログは、埋め込みスクリーンのスクリーンプログラムの中で前述のcloseDialog関数を呼び出すか、ダイアログ右上のXボタンまたはダイアログの外側をクリックすれば閉じることができます。ダイアログが閉じられたらコールバック関数が呼び出されます。コールバック関数の引数にはダイアログの閉じ方に応じて以下の値が渡されます。
a. closeDialog関数によりダイアログを閉じたとき
closeDialog関数のcode引数、value引数に与えた値がそれぞれコールバック関数の第1引数、第2引数に渡されます。
b. ダイアログ右上のXボタンまたはダイアログの外側をクリックして閉じたとき
コールバック関数の第1引数にはnullが渡されます。第2引数の値は未定義です。
5.7.1.8.showDateSelector
showDateSelectorは日付選択ダイアログを表示します。
api.dialog.showDateSelector(options, callback)
引数:
- options
- オプション
- callback
- コールバック関数
options引数には以下のプロパティから成るオブジェクトを与えます。
- date
- 日付選択の初期値(Date型オブジェクトまたはDate型に変換できる日付文字列)
- style
- スタイルオブジェクト
このダイアログはJavaScriptコードの実行をブロックしません。ダイアログが閉じられたらコールバック関数が呼び出されます。コールバック関数の引数には選択された日付がDate型で渡されます。ダイアログの外側をクリックしてダイアログを閉じた場合、コールバック関数に渡される日付は未定義になります。
5.7.1.9.showFileSelector
showFileSelectorはファイル選択ダイアログを表示します。
api.dialog.showFileSelector(options, callback)
引数:
- options
- オプション
- callback
- コールバック関数
options引数には以下のプロパティから成るオブジェクトを与えます。
- defaultValue
- ファイル名入力欄のデフォルト値
- deletable
- 真ならファイルの削除を許可する
- downloadable
- 真ならファイルのダウンロードを許可する
- filterList
- ファイル名フィルタの配列。各要素は {name: 名前, format: ファイル名の正規表現} の形式のオブジェクト
- movable
- 真ならファイルの移動を許可する
- multiple
- 真ならファイルの複数選択を許可する(デフォルトは偽)
- rootDir
- ルートディレクトリ(デフォルトはfiles)
- rootURL
- ルートURL(デフォルトは/develop/アプリケーション名/files)
- uploadable
- 真ならファイルのアップロードを許可する
このダイアログはJavaScriptコードの実行をブロックしません。ダイアログが閉じられたらコールバック関数が呼び出されます。コールバック関数の引数には選択されたファイル名(multipleオプションが真ならファイル名の配列)が渡されます。ダイアログの外側をクリックしてダイアログを閉じた場合、コールバック関数に渡されるファイル名は未定義になります。filterListオプションにはファイル名フィルタの配列を与えます。ファイル名フィルタのnameプロパティはフィルタ選択メニューの表示に用いられ、formatプロパティは指定した正規表現にマッチするファイル名のみを表示するために用いられます。filterListオプションを省略すると [{name: "すべて", format: ".*"}] が与えられたと見なされます。rootDirオプションは指定されたディレクトリ配下からのみファイル名を選択できるようにするために用います。rootURLオプションにはファイルをダウンロードするときのルートURLを与えます。
5.7.1.10.showModal
showModal関数はコンテナ型のスクリーンをアプリケーション内のダイアログに埋め込んで表示します。
api.dialog.showModal(screen, style, callback)
引数:
- screen
- スクリーン名
- style
- スタイルオブジェクト
- callback
- コールバック関数
screen引数にはダイアログに埋め込むスクリーンの名前を与えます。指定するスクリーンはコンテナ型でなければなりません。style引数にはスタイルオブジェクトを与えます。このダイアログはJavaScriptコードの実行をブロックしません。showModal関数で開いたダイアログは、埋め込みスクリーンのスクリーンプログラムの中で前述のcloseDialog関数を呼び出すことで閉じることができます。ダイアログが閉じられたらコールバック関数が呼び出され、closeDialog関数のcode引数、value引数に与えた値がそれぞれコールバック関数の第1引数、第2引数に渡されます。
5.7.1.11.showQuestion
showQuestion関数は質問ダイアログを表示します。
api.dialog.showQuestion(options, callback)
引数:
- options
- オプション
- callback
- コールバック関数
options引数には以下のプロパティから成るオブジェクトを与えます。
- choices
- 選択肢の配列。各要素は {label: ラベル, value: 値} の形式のオブジェクト。
- message
- メッセージ文字列
- style
- スタイルオブジェクト
このダイアログはJavaScriptコードの実行をブロックしません。ダイアログが閉じられたらコールバック関数が呼び出されます。コールバック関数の引数には選択されたoptions.choicesの要素のvalueプロパティの値が渡されます。ダイアログの外側をクリックしてダイアログを閉じた場合、コールバック関数に渡される値は未定義になります。
5.8.api.store
- storeモジュールはスクリーン間でデータを共有する仕組みを提供するモジュールです。api.storeモジュールの実体は空のオブジェクトです。このオブジェクトはスクリーン間でデータを共有するためのキーバリューストアとして自由に利用できます。
たとえば、api.storeモジュールとスクリーンオブジェクトのserializeメソッドおよびdeserializeメソッドを組み合わせて、別のスクリーンに移って戻ってきたときにスクリーンの状態を復元する機能を実現することができます。この機能のプログラム例については【serialize】の節を参照してください。
- storeモジュールに保存されたデータには永続性はなく、ブラウザを閉じたりアプリケーションをリロードしたりすると失われます。永続性が必要な場合は次節のapi.KeyValueStoreモジュールを利用してください。
5.9.api.KeyValueStore
- KeyValueStoreモジュールは永続性のあるキーバリューストアを提供するモジュールです。デバッグ用アプリとリリース用アプリはそれぞれ別のキーバリューストアを有します。
5.9.1.関数
5.9.1.1.data
data関数はキーバリューストア内のすべてのデータを取得します。
api.KeyValueStore.data(callback)
引数:
- callback
- コールバック関数
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したらコールバック関数の第1引数にはnull、第2引数にはキーバリューストア内の全データがオブジェクトとして渡されます。
5.9.1.2.del
del関数はキーバリューストアから指定のキーを削除します。
api.KeyValueStore.del(key, callback)
引数:
key … キー
- callback
- コールバック関数
key引数にはキーを与えます。callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err)とすると、実行が失敗したらerr引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したらコールバック関数のerr引数にはnullが渡されます。
5.9.1.3.get
get関数はキーバリューストアからキーの値を取得します。
api.KeyValueStore.get(key, callback)
引数:
key … キー
- callback
- コールバック関数
key引数にはキーを与えます。callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したらコールバック関数の第1引数にはnull、第2引数にはキーの値が渡されます。
5.9.1.4.keys
keys関数はキーバリューストア内のすべてのキーを取得します。
api.KeyValueStore.keys(callback)
引数:
- callback
- コールバック関数
callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したらコールバック関数の第1引数にはnull、第2引数にはキーバリューストア内のすべてのキーが配列として渡されます。
5.9.1.5.set
set関数はキーバリューストアに新しいキーと値の対を追加、または既存のキーの値を変更します。
api.KeyValueStore.set(key, value, callback)
引数:
key … キー
value … 値
- callback
- コールバック関数
key引数にはキー、value引数にはそのキーの値を与えます。callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。実行が成功したらコールバック関数の第1引数にはnull、第2引数にはキーの値が渡されます。
5.10.api.serverFunction
- serverFunctionモジュールはサーバー機能設計で定義した関数(これをサーバー関数と呼びます)を実行するための仕組みを提供するモジュールです。
5.10.1.関数
5.10.1.1.execute
execute関数はサーバー関数を同期実行します。サーバー側の関数実行プロセスは関数の実行完了までブロックします。
execute(funcName, options, callback)
引数:
funcName … 関数名
- options
- オプション
- callback
- コールバック関数
funcName引数には実行するサーバー関数の名前を与えます。options引数にはサーバー関数のオプションを与えます。オプションはそのままサーバー関数に渡されます。オプションのデータ構造はサーバー関数の都合に応じて自由に決めることができます。callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。サーバー関数の実行が成功したらコールバック関数の第1引数にはnull、第2引数にはサーバー関数からの戻り値が渡されます。
5.10.1.2.executeAsync
executeAsync関数はサーバー関数を非同期実行します。サーバー側の関数実行プロセスは関数の実行完了を待たずに処理を継続します。
executeAsync(funcName, options, callback)
引数:
funcName … 関数名
- options
- オプション
- callback
- コールバック関数
funcName引数には実行するサーバー関数の名前を与えます。options引数にはサーバー関数のオプションを与えます。オプションはそのままサーバー関数に渡されます。オプションのデータ構造はサーバー関数の都合に応じて自由に決めることができます。callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。サーバー関数の実行が成功したらコールバック関数の第1引数にはnull、第2引数にはサーバー関数からの戻り値が渡されます。
5.11.api.TextSearch
-
TextSearchクラスはデータベースの全文検索に用いる絞り込み条件をより直感的で平易な検索式から構築します。たとえば、addressカラムに「東京」または「大阪」を含むレコードを得るための絞り込み条件は
{ "OR": [
{ "address": { op: "LIKE", value: "東京" } },
{ "address": { op: "LIKE", value: "大阪" } } ] }
のように記述する必要があります。これに対してapi.TextSearchモジュールでは
東京 OR 大阪
という検索式を与えれば前掲の絞り込み条件に相当するオブジェクトが作成できます。例:
var textsearch = new api.TextSearch();
textsearch.parse("東京 AND 大阪");
var where = textsearch.createWhere(["address"]);
このコード例の処理内容は次のとおりです。まず1行目でTextSearchオブジェクト(TextSearchクラスのインスタンス)を作成します。次に2行目で検索式の構成が正しいかどうかをチェックします。最後に3行目でカラム名を与えて絞り込み条件のオブジェクトを作成します。
5.11.1.メソッド
5.11.1.1.parse
parseメソッドは検索式の構成を検証します。
TextSearch.parse(expr)
引数:
- expr
- 検索式(後述)
与えられた検索式が正しいときはtrue、そうでなければfalseを返します。parseメソッドは内部では構文解析器を用いて検索式を構文木に変換します。得られた構文木はTextSearchオブジェクト内で保存されてcreateWhereメソッドの呼び出し時に絞り込み条件オブジェクトを作成するのに用いられます。
5.11.1.2.createWhere
createWhereメソッドは検証済みの検索式から絞り込み条件のオブジェクトを作成します。このメソッドはparseメソッドで検索式を検証してから呼び出さなければなりません。
TextSearch.createWhere(columns)
引数:
- columns
- DBテーブル・ビューのカラム情報の配列
columns引数には以下のいずれかの形式のカラム情報を要素とする配列を与えます。
a. カラム名文字列
b. ModelTable.conf.TableColumns配列の要素※
c. ModelView.conf.ViewColumns配列の要素※
※【ModelTable】の節を参照
※【ModelView】の節を参照
5.12.api.lib.async
-
lib.asyncモジュールは非同期処理の実行順序を制御するための機能を提供するモジュールです。本節ではasyncモジュールの中で特に多用される関数について説明します。asyncモジュールの網羅的なドキュメントは下記URLで提供されています。
http://caolan.github.io/async/docs.html
5.12.1.parallel
parallel関数は、複数の関数を並行して実行します。
api.lib.async.parallel(tasks, [callback])
引数:
- tasks
- タスク関数の配列
- callback
- コールバック関数
tasksには関数の配列を与えます(これらの関数をタスク関数と呼びます)。これらのタスク関数は、他のタスク関数が実行中かどうかに関わらず並行して順不同で実行されます。各タスク関数にはコールバック関数が引数として渡されます。タスク関数の実行終了時にはこのコールバック関数を呼び出さなければなりません。実行が成功ならコールバック関数の第1引数にはnull、第2引数には実行結果を与え、実行が失敗なら第1引数にエラーオブジェクトを与えます。いずれかのタスク関数の実行が失敗したら、parallel関数のcallback引数に与えたコールバック関数がただちに呼び出され、その引数にはタスク関数から返されたエラーオブジェクトが渡されます。すべてのタスク関数の実行が成功したら、parallel関数のコールバック関数の第1引数にはnull、第2引数にはタスク関数から返された実行結果の配列が渡されます。
api.lib.async.parallel([
function(callback){
// 何らかの処理を実行する
callback(null, 'one');
},
function(callback){
// 並行して何らかの処理を実行する
callback(null, 'two');
}
],
// コールバック関数(省略可)
function(err, results){
// results引数の値は ['one', 'two']
});
5.12.2.series
series関数は、1つ前の関数の実行が終わるのを待って次の関数の実行に移るという形で複数の関数を逐次実行します。
api.lib.async.series(tasks, [callback])
引数:
- tasks
- タスク関数の配列
- callback
- コールバック関数
tasksには関数の配列を与えます(これらの関数をタスク関数と呼びます)。これらのタスク関数は、1つ前のタスク関数の実行が終わってから次のタスク関数の実行に移るという形で実行されます。各タスク関数にはコールバック関数が引数として渡されます。タスク関数の実行終了時にはこのコールバック関数を呼び出さなければなりません。実行が成功ならコールバック関数の第1引数にはnull、第2引数には実行結果を与え、実行が失敗なら第1引数にエラーオブジェクトを与えます。いずれかのタスク関数にエラーが渡されたら、それ以降のタスク関数は実行されず、callback引数に与えたコールバック関数がただちに実行されます。このコールバック関数の第1引数にはタスク関数からのエラーオブジェクトが渡されます。すべてのタスク関数が正常終了したら、callback引数で与えられたコールバック関数の第1引数にはnull、第2引数にはタスク関数からの実行結果の配列が渡されます。
api.lib.async.series([
function(callback){
// 何らかの処理を実行する
callback(null, 'one');
},
function(callback){
// さらに何らかの処理を実行する
callback(null, 'two');
}
],
// コールバック関数(省略可)
function(err, results){
// results引数の値は ['one', 'two']
});
5.12.3.waterfall
waterfall関数は、1つ前の関数の実行結果を次の関数の入力値として渡すという形で複数の関数を逐次実行します。
api.lib.async.waterfall(tasks, [callback])
引数:
- tasks
- タスク関数の配列
- callback
- コールバック関数
tasksには関数の配列を与えます(これらの関数をタスク関数と呼びます)。これらのタスク関数は、1つ前のタスク関数の実行結果が次のタスク関数の入力値として渡される形で逐次実行されます。各タスク関数にはコールバック関数が引数として渡されます。タスク関数の実行終了時にはこのコールバック関数を呼び出さなければなりません。実行が成功ならコールバック関数の第1引数にはnull、第2引数以降には実行結果を与え、実行が失敗なら第1引数にエラーオブジェクトを与えます。いずれかのタスク関数にエラーが渡されたら、それ以降のタスク関数は実行されず、callback引数に与えたコールバック関数がただちに実行されます。このコールバック関数の第1引数にはタスク関数からのエラーオブジェクトが渡されます。すべてのタスク関数が正常終了したら、callback引数で与えられたコールバック関数の第1引数にはnull、第2引数には最後のタスク関数の実行結果が渡されます。
api.lib.async.waterfall([
function(callback) {
callback(null, 'one', 'two');
},
function(arg1, arg2, callback) {
// arg1引数の値は 'one'、arg2引数の値は 'two'
callback(null, 'three');
},
function(arg1, callback) {
// arg1引数の値は 'three'
callback(null, 'done');
}
], function (err, result) {
// result引数の値は 'done'
});
5.13.api.lib.objectAssign
-
lib.objectAssign関数は対象オブジェクトに別のオブジェクトのプロパティを代入して新しいオブジェクトを返します。
api.lib.objectAssign(target, source, [source, ...])
target引数には対象オブジェクト、source引数には別のオブジェクトを与えます。source引数を複数与えた場合、同名のプロパティは後から与えたsource引数のオブジェクトのプロパティ値で上書きされます。
5.14.api.lib.superagent
-
lib.superagentモジュールはHTTPクライアントを簡便に作成するためのAPIを提供するモジュールです。本節ではsuperagentモジュールの中で特に多用されるAPI関数について説明します。superagentモジュールの網羅的なドキュメントは下記URLで提供されています。
http://visionmedia.github.io/superagent/
たとえばGETメソッドでリソースURL /search の内容を得るには以下のようにします。
api.lib.superagent
.get('/search')
.end(function(err, res){
if (err || !res.ok) {
alert('エラー');
} else {
alert('結果:' + JSON.stringify(res.body));
}
});
5.14.1.関数
5.14.1.1.end
end関数はリクエストを送信します。引数にはレスポンスを処理するコールバック関数を与えます。次の例ではGETリクエストをend関数で送信して、引数に与えたコールバック関数でレスポンスを受け取ります。
api.lib.superagent
.get('/search')
.end(function(err, res){
// ここにレスポンスの処理を記述する
});
5.14.1.2.get
get関数はGETリクエストの作成を開始します。引数にはリソースURLを文字列で与えます。次の例ではget関数でリソースURL /search へのGETリクエストの作成を開始しています。
api.lib.superagent
.get('/search')
.end(callback);
5.14.1.3.head
head関数はHEADリクエストの作成を開始します。引数にはリソースURLを文字列で与えます。次の例ではhead関数でリソースURL /favicon.ico へのHEADリクエストの作成を開始しています。
api.lib.superagent
.head('/favicon.ico')
.end(callback);
5.14.1.4.post
post関数はPOSTリクエストの作成を開始します。引数にはリソースURLを文字列で与えます。次の例ではpost関数でリソースURL /user/add へのPOSTリクエストの作成を開始しています。
api.lib.superagent
.post('/user/add')
.send({ name: 'john', age: 20 })
.end(callback);
5.14.1.5.query
query関数はリクエストのURLにクエリを追加します。引数にはクエリをオブジェクトまたは文字列で与えます。次の例ではGETリクエストのURLにクエリを追加して /search?q=test&order=desc にします。
api.lib.superagent
.get('/search')
.query({'q': 'test', 'order', 'desc'})
.end(callback);
query関数は複数回に分けて呼び出すこともできます。
api.lib.superagent
.get('/search')
.query({'q': 'test'})
.query({'order', 'desc'})
.end(callback);
クエリは文字列でも指定できます。
api.lib.superagent
.get('/search')
.query('q=test&order=desc')
.end(callback);
文字列の場合も複数に分けて与えることができます。
api.lib.superagent
.get('/search')
.query('q=test')
.query('order=desc')
.end(callback);
5.14.1.6.send
send関数は作成中のリクエストにデータを追加します。次の例ではsend関数でPOSTリクエストにデータを追加しています。
api.lib.superagent
.post('/user/add')
.send({ name: 'john', age: 20 })
.end(callback);
send関数は複数回に分けて呼び出すこともできます。
api.lib.superagent
.post('/user/add')
.send({ name: 'john' })
.send({ age: 20 })
.end(callback);
データの型を示すContent-Type:ヘッダフィールドのデフォルト値はsend関数の引数によって決まります。
a. 引数がオブジェクトの場合:application/json
b. 引数が文字列の場合:application/x-www-form-urlencoded
Content-Type:ヘッダフィールドの値を設定するにはset関数を用います。次の例は上述の最初の例と同等です。
api.lib.superagent
.post('/user/add')
.set('Content-Type', 'application/json')
.send({ name: 'john', age: 20 })
.end(callback);
5.14.1.7.set
set関数は作成中のリクエストにヘッダフィールドを追加します。次の例ではGETリクエストに Accept: application/json というヘッダフィールドを追加します。
api.lib.superagent
.get('/search')
.set('Accept', 'application/json')
.end(callback);
5.15.api.lib.EventEmitter
-
lib.EventEmitterクラスはNode.jsでイベント駆動型のアプリケーションを開発するためのイベントAPIを提供するクラスです。本節ではEventEmitterの主な機能について説明します。EventEmitterの網羅的なドキュメントは下記URLで提供されています。
https://nodejs.org/api/events.html
EventEmitterは以下の例のようにインスタンスを作成して利用します。
var ev = new api.lib.EventEmitter();
イベントはEventEmitterのemitメソッドを実行することで発生します。EventEmitterのアプリケーションプログラムは、イベント発生の通知を受け取るためにEventEmitterのonメソッドでリスナー関数を登録します。次の例では、まずonメソッドでdoneイベントのリスナー関数を登録しています。次に、emitメソッドでdoneイベントを生成しています。emit呼び出し時の第2引数以降はリスナー関数に引数として渡されます。
var ev = new api.lib.EventEmitter();
ev.on('done', function (arg1, arg2) {
console.log(arg1, arg2);
});
ev.emit('done', 123, 'abc');
// コンソールに 123 abc と表示される
イベントは時間のかかる処理の完了を待って別の処理を続けたいときに多用されます。次の例では、doneイベントの発生に5000ミリ秒かかります。doneイベントのリスナー関数はイベント発生まで待機します。
var ev = new api.lib.EventEmitter();
setTimeout(function () {
ev.emit('done', 123, 'abc');
}, 5000);
ev.on('done', function (arg1, arg2) {
console.log(arg1, arg2);
});
onメソッドで登録されたリスナー関数はイベントが発生するたびに繰り返し実行されます。一度だけ実行されるリスナー関数を登録するにはonceメソッドを用います。例:
var ev = new api.lib.EventEmitter();
ev.once('data, function (result) {
console.log('start');
});
ev.on('data, function (result) {
console.log(result);
});
ev.emit('data', 123);
// コンソールに start と表示される
// コンソールに 123 と表示される
ev.emit('data', 'abc');
// コンソールに abc と表示される
5.15.1.メソッド
本節ではEventEmitterクラスの主なメソッドについて説明します。
5.15.1.1.addListener
addListenerメソッドは指定されたイベントに対するリスナー関数を登録します。このメソッドはEventEmitterインスタンス自身を返します。
addListener(event, listener)
event引数にはイベント名、listener引数には登録するリスナー関数を与えます。
5.15.1.2.emit
emitメソッドは指定されたイベントに対して登録されているリスナー関数を実行します。リスナー関数があればtrue、そうでなければfalseを返します。
emit(event[, arg1[, arg2[, ...]]])
event引数にはイベント名を与えます。追加の引数arg1、arg2、…(省略可)はリスナー関数に渡されます。
5.15.1.3.listeners
listenersメソッドは指定されたイベントに対して登録されているのリスナー関数を配列で返します。
listeners(event)
event引数にはイベント名を与えます。
5.15.1.4.on
onメソッドは前述のaddListenerメソッドの別名です。詳しくは【addListener】の節を参照してください。
on(event, listener)
5.15.1.5.once
onceメソッドは一度だけ実行されるリスナー関数を登録します。このメソッドはEventEmitterインスタンス自身を返します。
once(event, listener)
event引数にはイベント名、listener引数には登録するリスナー関数を与えます。
5.15.1.6.removeAllListeners
removeAllListenersメソッドはすべてのリスナー関数、または指定されたイベントのすべてのリスナー関数の登録を解除します。このメソッドはEventEmitterインスタンス自身を返します。
removeAllListeners([event])
event引数にはイベント名を与えます(省略可)。
5.15.1.7.removeListener
removeListenerメソッドは指定されたイベントに対するリスナー関数の登録を解除します。このメソッドはEventEmitterインスタンス自身を返します。
removeListener(event, listener)
event引数にはイベント名、listener引数には登録解除するリスナー関数を与えます。
5.16.api.lib.Decimal
-
lib.Decimalモジュールは誤差のない10進数演算を行なうためのAPIを提供します。JavaScriptの数値(Numberオブジェクト)には誤差が含まれることがあるのに対して、Decimalオブジェクトは誤差のない四則演算を実現できます。次の例では4.01と2.01の積を10進数演算で計算します。
api.lib.Decimal('4.01').mul('2.01').toNumber()
上記のコードは次のように記述することもできます。
api.lib.Decimal.mul('4.01', '2.01').toNumber()
5.16.1.関数
5.16.1.1.Decimal
新しいDecimalオブジェクトを作成します。
api.lib.Decimal(n)
引数nには文字列、整数、または別のDecimalオブジェクトを与えます。
5.16.2.メソッド
この節ではDecimalオブジェクトのメソッドについて説明します。
5.16.2.1.toString
Decimalオブジェクトを文字列にして返します。
toString()
5.16.2.2.toNumber
Decimalオブジェクトを数値(Numberオブジェクト)にして返します。
toNumber()
5.16.2.3.add
Decimalオブジェクトと引数で与えられた値の和を新しいDecimalオブジェクトにして返します。
add(n)
引数nには文字列、整数、または別のDecimalオブジェクトを与えます。
5.16.2.4.sub
Decimalオブジェクトと引数で与えられた値の差を新しいDecimalオブジェクトにして返します。
sub(n)
引数nには文字列、整数、または別のDecimalオブジェクトを与えます。
5.16.2.5.mul
Decimalオブジェクトと引数で与えられた値の積を新しいDecimalオブジェクトにして返します。
mul(n)
引数nには文字列、整数、または別のDecimalオブジェクトを与えます。
5.16.2.6.div
Decimalオブジェクトを引数で与えられた値で除した値を新しいDecimalオブジェクトにして返します。
div(n)
引数nには文字列、整数、または別のDecimalオブジェクトを与えます。
5.17.api.lib.xml2js
-
lib.xml2jsモジュールはXMLを読み取るAPIを提供します。
var xml = '<root>Hello</root>';
api.lib.xml2js.parseString(xml, function (err, data) {
console.log(data);
});
5.17.1.関数
5.17.1.1.parseString
parseString関数は与えられたXMLデータを解析します。
parseString(xml, callback)
引数:
- xml
- XMLデータ
- callback
- コールバック関数
xml引数には解析するするXMLデータを文字列で与えます。callback引数には実行結果を受け取るコールバック関数を指定します。コールバック関数をcallback(err, res)とすると、実行が失敗したら第1引数にErrorオブジェクト(err.response.textにエラー内容)が返されます。解析が成功したらコールバック関数の第1引数にはnull、第2引数には解析結果が渡されます。解析が失敗したらコールバック関数の第1引数にErrorオブジェクトが渡されます。
6.データベースAPI
DBテーブル・ビューのデータ操作に関するAPI関数では、データ操作オプションを共通の方法で指定します。データ操作オプションは原則として以下のプロパティから成るオブジェクトで与えられます。
- where
- 絞り込み条件
order … 並べ替え - offset
- 開始レコード番号(最初のレコードが0)
- num
- レコード数
- crossOptions
- クロス集計オプション
このうち本節では絞り込み条件、並べ替え、クロス集計オプションについて述べ、絞り込み条件で用いるパタン文字列について説明します。また、絞り込み条件および結合に用いるサブクエリ(副問い合わせ)について述べます。
6.1.絞り込み条件
絞り込み条件(where)はDBテーブル・ビューに格納されたレコードのうち、読み出しや更新などのデータ操作の対象となるレコードを選択するための条件を記述するオプションです。絞り込み条件を指定すると、その条件を満たすレコードのみが処理対象となります。絞り込み条件を指定しなければDBテーブル・ビューの全レコードが処理対象となります。絞り込み条件として指定できるオブジェクトは以下のとおりです。
1. カラム名と値の対から成るオブジェクト
2. サブクエリ(副問い合わせ)を含むオブジェクト
3. 絞り込み条件の論理和・論理積を表すオブジェクト
6.1.1.カラム名と値の対
絞り込み条件としてカラム名と値の対から成る次の形式のオブジェクトを与えた場合、カラムの値が所与の関係を満たすかどうかをすべての対について調べます。
{"カラム名1": カラム1の値, "カラム名2": カラム2の値, ...}
カラムの値として指定できるのは以下のものです。
a. 数値や文字列などのリテラル(即値)
b. {op: 演算子, value: 値} の形式のオブジェクト
c. {op: 演算子, values: [値1, 値2, ...]} の形式のオブジェクト
d. {op: 演算子, min: 下限値, max: 上限値} の形式のオブジェクト
e. {op: 演算子} の形式のオブジェクト
6.1.1.1.リテラル
値として数値や文字列などのリテラル(即値)を指定した場合、その値とカラムの値が等しいかどうかを調べます。この指定方法は、後述の比較演算子を用いた形式で {op: "=", value: 値} と記述するのと同等です。
6.1.1.2.比較演算子
値として次の形式のオブジェクトを与えた場合、カラムの値とvalueの値を演算子opで比較します。
{op: 演算子, value: 値}
opには以下の演算子が指定できます。
- =
- 等しい
- !=
- 等しくない
- <>
- 等しくない
- <
- より小さい
- <=
- より小さい、または等しい(以下)
- >
- より大きい
- >=
- より大きい、または等しい(以上)
- LIKE
- valueで与えられたパタン文字列に一致する
- NOT LIKE
- valueで与えられたパタン文字列に一致しない
パタン文字列の最初および最後に現れるパーセント記号(%)は0個以上の文字の並びと一致します。たとえば {op: "LIKE", value: "日本%"} と指定すると "日本"、"日本人"、"日本列島" などに一致します。パタン文字列については後述の【パタン文字列】の節を参照してください。
6.1.1.3.IN
値として次の形式のオブジェクトを与えた場合、カラムの値がvaluesの要素として含まれるかどうかを調べます。
{op: 演算子, values: [値1, 値2, ...]}
opには以下の演算子が指定できます。
- IN
- カラムの値がvaluesの要素として含まれる
- NOT IN
- カラムの値がvaluesの要素として含まれない
valuesには1つ以上の要素からなる配列を与えます。空の配列を与えるとエラーになります。
6.1.1.4.BETWEEN
値として次の形式のオブジェクトを与えた場合、カラムの値が最小値と最大値で表された範囲に含まれるかどうかを調べます。
{op: 演算子, min: 最小値, max: 最大値}
opには以下の演算子が指定できます。
- BETWEEN
- カラムの値が範囲内にある(最小値以上かつ最大値以下である)
- NOT BETWEEN
- カラムの値が範囲外にある(最小値以上でない、または最大値以下でない)
6.1.1.5.IS NULL
値として次の形式のオブジェクトを与えた場合、opに指定した条件が成り立つかどうかを調べます。
{op: 演算子}
opには以下の演算子が指定できます。
- IS NULL
- カラムの値がNULLである
- IS NOT NULL
- カラムの値がNULLではない
6.1.2.サブクエリによる絞り込み
サブクエリを用いた絞り込み条件には以下のものがあります。
a. {カラム名: {op: 演算子, ref: サブクエリ}, ...}の形式のオブジェクト … カラムの値とサブクエリの結果をop:プロパティで指定した演算子で比較します。この場合のサブクエリは結果が1件だけでなければなりません。
b. {カラム名: {op: 演算子, q: ALLまたはANYまたはSOME, ref: サブクエリ}, ...}の形式のオブジェクト … カラムの値とサブクエリの結果をop:プロパティで指定した演算子で比較して、すべて(q:プロパティの値がALLの場合)または1件以上(ANYまたはSOMEの場合)について真かどうかを調べます。
- c. {EXISTS: {ref: サブクエリ}}の形式のオブジェクト
- サブクエリの結果が1件以上あるか否かを調べます。
ここでref:プロパティにはサブクエリオブジェクトを与えます。サブクエリオブジェクトについては【サブクエリ】の節を参照してください。
6.1.3.絞り込み条件の論理和・論理積
次の形式で絞り込み条件オブジェクトの配列を与えた場合、それらの絞り込み条件の論理和(OR)や論理積(AND)が成り立つかどうかを調べます。
{論理演算子: [絞り込み条件1, 絞り込み条件2, ...]}
論理演算子には以下のものが指定できます。
- OR
- 論理積(「または」の意)
- AND
- 論理積(「かつ」の意)
6.1.4.用例
絞り込み条件の用例を以下に示します。
-
社員番号が100に等しいレコードを選択します。
{"社員番号": 100}
-
年齢が20歳以上のレコードを選択します。
{"年齢": {op: ">=", value: 20}}
-
年齢が20歳以上で、なおかつ性別が女性のレコードを選択します。
{"年齢": {op: ">=", value: 20}, "性別": "女性"}
-
性別が男性または未指定のレコードを選択します。
{"性別": {op: "IN", values: ["男性", "未指定"]}}
-
注文日が2010年のレコードを選択します。
{"注文日": {op: "BETWEEN", min: 2010/01/01", max: "2010/12/31"}}
-
年齢が20歳以上、または性別が女性のレコードを選択します。
{"OR": [{"年齢": {op: ">=", value: 20}}, {"性別": "女性"}]}
また、サブクエリの例として次のSQL文を考えます。この問い合わせは天気(weather)テーブルを検索して最低気温(temp_lo)カラムの値が最大の都市名(city)カラムの値を返します。
SELECT city FROM weather
WHERE temp_lo = (SELECT max(temp_lo) FROM weather);
この問い合わせをBuddyで実現するには次のようなスクリーンプログラムを記述します。
var tableName = "weather";
var subquery = this.tables[tableName].select(["max(temp_lo)"], {});
var options = {
where: {"temp_lo": {op: "=", ref: subquery}},
};
this.tables[tableName].readData(options, (function(error, data) {
...
});
このときoptions.whereに与えられる絞り込み条件は以下の通りです。
{"temp_lo": {op: "=", ref: {select: ['max(temp_lo)'], from: {model: 'weather'}}}}
6.2.並べ替え
並べ替え(order)には以下のプロパティから成るオブジェクトの配列を与えます。
- OrderColumn
- カラム名またはカラム値を用いるSQL式
OrderDirection … ソート順
OrderColumnプロパティにはカラム名またはカラム値を用いるSQL式を文字列で与えます。OrderDirectionプロパティにはソート順を「ASCまたはDESC NULLS FIRSTまたはLAST」の形式の文字列で与えます。ASCは昇順、DESCは降順を表します。NULLS以降は省略できます。NULLS FIRSTはNULL値をソート結果の先頭に、NULLS LASTは末尾に置くことを指定します。NULLS以降を省略したときのデフォルトのNULL値の順序は、ASCの場合はNULLS LAST、DESCの場合はNULLS FIRSTです。
6.3.クロス集計オプション
クロス集計オプション(crossOptions)は、DBテーブル・ビューのクロス集計を制御するための各種オプションから成るオブジェクトです。このオブジェクトはスクリーンモジュールの【クロス集計】を用いてアプリ利用者が作成します。作成されたcrossOptionsオブジェクトは、クロス集計モジュールの【Updateイベント】のハンドラを通じてスクリーンプログラムに渡されます。Updateイベントハンドラの作例については【Updateイベント】の節を参照してください。
6.4.パタン文字列
パタン文字列は検索キーワードに用いられるパーセント記号(%)を含んだ文字列です。文字列の最初および最後に現れるパーセント記号(%)は0個以上の文字の並びと一致します。これにより前方一致検索、後方一致検索が実現できます。パタン文字列には%の現れる位置によって次の4通りがあります。
- パタン文字列の最初と最後が%のときは部分一致検索が行なわれます。たとえばパタン文字列 "%人%" は "人"、"人数"、"個人"、"百人力" などと一致します。
- パタン文字列の最初の文字が%のときは後方一致検索が行なわれます。たとえばパタン文字列 "%木" は "木"、"大木"、"六本木" などと一致します。
- パタン文字列の最後の文字が%のときは前方一致検索が行なわれます。たとえばパタン文字列 "日本%" は "日本"、"日本人"、"日本列島" などと一致します。
- それ以外のときはパタン文字列の最初と最後に%があるものとして1.の場合と同様に部分一致検索が行なわれます。
6.5.サブクエリ
サブクエリ(副問い合わせ)はDBテーブル・ビューへの問い合わせに別の問い合わせを埋め込むSQL文法の仕組みです。Buddyではサブクエリをオブジェクトで表します。サブクエリオブジェクトを用いることで複数の問い合わせが入れ子になった複雑な問い合わせを記述できます。
サブクエリオブジェクトを作成するには【ModelTable】オブジェクトおよび【ModelView】オブジェクトのselectメソッドを用います。以下に例を示します。
var tableName = 'shain';
var subquery = this.models[tableName].select(
[{expr: 'ID', as: 'shain_ID'}, 'name', 'age'], {});
サブクエリオブジェクトは次の2つの目的に利用できます。
- 絞り込み条件
- 別のDBテーブル・ビューやサブクエリとの結合
サブクエリを用いた絞り込み条件については【サブクエリによる絞り込み】の節を参照してください。
サブクエリオブジェクトは他のDBテーブル・ビューやサブクエリとの結合(join)を生成するために用いることもできます。利用できる結合方法と対応する【ModelTable】オブジェクトおよび【ModelView】オブジェクトのメソッドを以下に示します。
- 内部結合(inner join)
- innerJoinメソッド
- 左外部結合(left outer join)
- leftOuterJoinメソッド
- 右外部結合(right outer join)
- rightOuterJoinメソッド
- 完全外部結合(full outer join)
- fullOuterJoinメソッド
- 交差結合(cross join)
- crossJoinメソッド
7.イベントAPI
本節ではイベントを扱うAPIについて説明します。
7.1.イベントハンドラ
イベントは、実行中のアプリケーションで発生した事象についてスクリーンプログラムが受け取るメッセージ(通知)です。イベントは大きく分けて次の3種類があります。
a. マウスボタンの押下やキーボード入力、画面サイズの変更などアプリ利用者の入力デバイスの操作によって発生するイベント(Click,KeyPress,onResizeなど)。
b. スクリーンプログラムの起動や終了、画像ファイルの読み込みエラーなどの事象に応じて発生するイベント(onLoad,onUnload, onErrorなど)。
c. スクリーンプログラムから別のスクリーンプログラムへアプリケーション固有の事象の発生を通知するイベント(onIterateなど)。
あるイベントが発生したという通知をスクリーンプログラムが受け取るには、そのイベントに呼応する名前のイベントハンドラをスクリーンプログラムの var events = { ... から始まるブロックに記述します。たとえばBUTTON1というモジュール名のボタンが押されたときに生じるClickイベントを受け取るには以下のようなイベントハンドラを追加します。
BUTTON1_onClick: function(evt){
// ここにClickイベントの処理内容を記述します。例:
api.dialog.alert("BUTTON1が押されました。");
},
7.2.イベントオブジェクト
イベントオブジェクトは、一部のイベントハンドラにevt引数として渡されてくるオブジェクトです。イベントオブジェクトがハンドラのevt引数に渡されてくるイベントには以下の4種類があります。
・キーボードイベント
・フォーカスイベント
・マウスイベント
・画像イベント
イベントオブジェクトは以下のプロパティから成ります。
- target
- イベントの対象となるオブジェクト(スクリーンモジュールなど)
- original
- イベントを詳細に記述する種々のプロパティから成るオブジェクト
originalオブジェクトの持つプロパティは、発生したイベントによって異なります。
7.2.1.キーボードイベント
キーボードイベントには以下のイベントがあります。
onKeyDown
onKeyPress
onKeyUp
これらのイベントに対するoriginalオブジェクトは次のデータ型と名前のプロパティから成ります。
boolean altKey
number charCode
boolean ctrlKey
boolean getModifierState(key)
string key
number keyCode
string locale
number location
boolean metaKey
boolean repeat
boolean shiftKey
number which
7.2.2.フォーカスイベント
フォーカスイベントには以下のイベントがあります。
onBlur
onFocus
これらのイベントに対するoriginalオブジェクトは次のデータ型と名前のプロパティから成ります。
DOMEventTarget relatedTarget
7.2.3.マウスイベント
マウスイベントには以下のイベントがあります。
onClick
onContextMenu
onDoubleClick
onMouseDown
onMouseUp
これらのイベントに対するoriginalオブジェクトは次のデータ型と名前のプロパティから成ります。
boolean altKey
number button
number buttons
number clientX
number clientY
boolean ctrlKey
boolean getModifierState(key)
boolean metaKey
number pageX
number pageY
DOMEventTarget relatedTarget
number screenX
number screenY
boolean shiftKey
7.2.4.画像イベント
画像イベントには以下のイベントがあります。
onError
このイベントに対するoriginalオブジェクトは固有のプロパティを持ちません。
8.フィルタAPI
フィルタAPIは、文字列や日付、日時などのデータを整形して別の文字列に変換するための仕組み(これをフィルタと呼びます)を提供します。
8.1.フィルタ名
適用するフィルタは名前で指定します。フィルタ名には以下のものがあります。
- TRIM
- 文字列の先頭と末尾の空白文字を取り除く
- COMMA
- 桁区切りのカンマを挿入する
- YEN
- ¥表記にして桁区切りのカンマを挿入する
- YMD
- 日付(Date型オブジェクトまたはDate型に変換できる日付文字列)を yyyy/mm/dd の形にする
オプション:
-h 区切り文字を / ではなく - にする
-1 1桁の数字の前に0を追加しない - JYMD
- 日付(Date型オブジェクトまたはDate型に変換できる日付文字列)を yyyy年mm月dd日 の形にする
オプション:
-1 1桁の数字の前に0を追加しない - GYMD
- 日付(Date型オブジェクトまたはDate型に変換できる日付文字列)を 元号y年m月d日 の形にする
- YMDHMS
- 日時(Date型オブジェクトまたはDate型に変換できる日付文字列)を yyyy/mm/dd hh:mm:ss の形にする
オプション:
-h 区切り文字を / ではなく - にする
-1 1桁の数字の前に0を追加しない
-s 秒を表示しない - JYMDHMS
- 日時(Date型オブジェクトまたはDate型に変換できる日付文字列)を yyyy年mm月dd日 hh時mm分ss秒 の形にする
オプション:
-1 1桁の数字の前に0を追加しない - HMS
- 時刻(Date型オブジェクトまたはDate型に変換できる日付文字列)を hh:mm:ss の形にする
オプション:
-1 1桁の数字の前に0を追加しない
-s 秒を表示しない - AGE
- 年齢を計算する
オプション:
-d 年齢を日単位で計算する(誕生日前日に年を取る) - PRE
- 前に指定文字列を追加する
オプション:
-文字列 付加する文字列 - POST
- 後ろに指定文字列を追加する
オプション:
-文字列 付加する文字列 - ROUND
- 数値を指定桁で丸める
オプション:
-数字 丸める桁。正の整数なら小数点以下の桁指定、負の整数なら小数点以上の桁指定。指定しなければ小数点以下を四捨五入する
-d 切り捨てる
-u 切り上げる - HIRA2KATA
- ひらがなをカタカナに置換する
- KATA2HIRA
- カタカナをひらがなに置換する
- ZEN2HAN
- 全角英数記号を半角文字に置換する
- HAN2ZEN
- 半角英数記号を全角文字に置換する
- ZEN2HANKATA
- 全角カナを半角カナに置換する
- HAN2ZENKATA
- 半角カナを全角カナに置換する
- KYUU2SHIN
- 旧漢字を新漢字に置換する
- PATHDIR
- パスからディレクトリ部分を取り出す
- PATHBASE
- パスからファイル名部分を取り出す
- PATHEXT
- パスから拡張子部分を取り出す(ピリオドを含む)
- PATHINFILES
- パスからfilesからの相対パスを取り出す(filesは含まない)
8.2.フィルタオプション
フィルタにはオプションを有するものがあります。オプションを指定するにはフィルタ名のあとにハイフン(-)でオプションをつなぎます。例:
AGE-d
オプションは複数指定できます。例:
YMD-h-1
ハイフンが連続したときは先頭のハイフンのみが区切りとなります。例えばROUNDフィルタで丸める桁として-2(十の位)を指定するには次のようにオプションを与えます。
ROUND--2
8.3.フィルタの連結
複数のフィルタ名を | で連結すると前段のフィルタの結果が後段のフィルタの入力になります。たとえばフィルタ名として TRIM|COMMA を指定すると、入力データにTRIMフィルタを適用した結果をさらにCOMMAフィルタで処理します。
9.数式API
本節では数式モジュールのAPIについて説明します。
9.1.数式モジュール
数式モジュールは、他の1つ以上のモジュールが保持する現在の値に基づいて計算を実行し、その計算結果を表示するモジュールです。計算処理は他のモジュール(依存関係にあるモジュール)の値が変化したときに自動的に実行されます。実行される計算の内容を記述した関数を数式ハンドラと呼びます。数式ハンドラは、スクリーンプログラムの var formulas = { ... で始まるブロックに記述します。
9.2.数式ハンドラ
数式ハンドラは、依存関係にある他のモジュールの値が変化したときに数式モジュールの値を更新するために実行される関数です。数式ハンドラの名前は数式モジュールの名前と同じでなければなりません。
たとえば2つのデータ入力モジュールDATAINPUT1,DATAINPUT2に入力されている値を足し合わせて数式モジュールFORMULA1に表示するには以下のような数式ハンドラを追加します。
FORMULA1: function(util){
return util.sum('DATAINPUT1', 'DATAINPUT2');
},
util引数には数式ハンドラの記述に便利な関数がまとめられたutilオブジェクトが渡されてきます。上述の例で用いているutil.sum()は引数で与えられた名前の2つのモジュールの現在の値を足し合わせた値(総和)を計算する関数です。utilオブジェクトの詳細については次の【utilオブジェクト】の節を参照してください。
9.3.utilオブジェクト
utilオブジェクトは、数式ハンドラに引数として渡されてくる数式ハンドラの記述に便利な関数がまとめられたオブジェクトです。
9.3.1.util.array.avg
util.array.avg関数はarr引数として数値の配列を受け取り、全要素の平均値を返します。
util.array.avg(arr)
9.3.2.util.array.count
util.array.count関数はarr引数として数値の配列を受け取り、配列の要素数を返します。
util.array.count(arr)
9.3.3.util.array.max
util.array.max関数はarr引数として数値の配列を受け取り、全要素のうち最大値を返します。
util.array.max(arr)
9.3.4.util.array.min
util.array.min関数はarr引数として数値の配列を受け取り、全要素のうち最小値を返します。
util.array.min(arr)
9.3.5.util.array.sum
util.array.sum関数はarr引数として数値の配列を受け取り、全要素の総和を返します。
util.array.sum(arr)
9.3.6.util.avg
util.avg関数は引数で与えられた1つ以上の名前のモジュールの現在の値の平均値を返します。
util.avg(name1, name2, ...)
9.3.7.util.count
util.count関数は引数で与えられた1つ以上の名前のモジュールの現在の値の個数(つまり引数の数)を返します。
util.count(name1, name2, ...)
9.3.8.util.int
util.int関数はname引数で与えられた名前のモジュールの現在の値を整数値として返します。
util.int(name)
9.3.9.util.max
util.max関数は引数で与えられた1つ以上の名前のモジュールの現在の値のうち最大値を返します。
util.max(name1, name2, ...)
9.3.10.util.min
util.min関数は引数で与えられた1つ以上の名前のモジュールの現在の値のうち最小値を返します。
util.min(name1, name2, ...)
9.3.11.util.num
util.num関数はname引数で与えられた名前のモジュールの現在の値を実数値として返します。
util.num(name)
9.3.12.util.sum
util.sum関数は引数で与えられた1つ以上の名前のモジュールの現在の値の総和を返します。
util.sum(name1, name2, ...)
10.サーバー機能
本節ではサーバー機能設計のJavaScript APIについて述べます。
10.1.概要
サーバー機能設計では、サーバー側で実行されるJavaScriptプログラム(以下、サーバー機能スクリプトと呼びます)を作成します。サーバー機能スクリプトは機能名で識別され、スクリーンプログラムから呼び出されます。スクリーンプログラムはブラウザ(クライアント側)で動作するのに対して、サーバー機能スクリプトはサーバー上で動作します。
10.1.1.実行タイプ
サーバー機能には2つの実行タイプがあります。
- 同期実行
- スクリプトの実行が完了した時点の変数resultの内容がクライアント側に返されます。
- 非同期実行
- スクリプトの中であらかじめ用意されているcallbackという関数を呼び出した時に、その引数(第1引数がエラー、第2引数が結果)によって結果がクライアント側に返されます。
同期実行のサーバー機能スクリプトの例を以下に示します。
// 同期実行のサーバー機能スクリプト(機能名mul)
result = options.a * options.b;
上と同じ処理を非同期実行するサーバー機能スクリプトの例を以下に示します。
// 非同期実行のサーバー機能スクリプト(機能名mul)
var result = options.a * options.b;
callback(null, result);
10.1.2.呼び出し方法
スクリーンプログラムからサーバー機能を呼び出すにはapi.serverFunctionモジュールを用います(【api.serverFunction】の節を参照)。第1引数には機能名、第2引数にはオプションオブジェクト、第3引数にはコールバック関数を与えます。
オプションオブジェクトはサーバー機能スクリプトに入力データを与えるためのもので、スクリプトの中であらかじめ用意されたoptionsという変数に渡されます。
コールバック関数は、スクリプトの実行が完了して結果が返される時に呼ばれます。コールバック関数の第1引数はエラーオブジェクト、第2引数は結果オブジェクトです。エラーオブジェクトを err とすると、err.response.textプロパティに{"message": エラーメッセージ, "console": {"log": [{"type": "log", "body": ログメッセージ }, ...]}}のようなJSON形式でエラーメッセージとconsole.log()の出力内容が渡されます。結果オブジェクトは{"result": 結果, "console": {"log": [...]}} という形式のオブジェクトで、サーバー機能スクリプトの返した結果とconsole.log()の出力内容が得られます。
前節のサーバー機能スクリプトの例(機能名mul)を呼び出すスクリーンプログラムの例を以下に示します。
api. serverFunction.execute("mul", {a: 2, b: 3}, function(err, res) {
if( err ) {
console.log(JSON.parse(err.response.text));
} else {
console.log(res.console.log);
// res.result で得られる結果を用いた処理
}
});
非同期のサーバー機能をexecuteAsync()で呼び出すとき、呼ばれたサーバー機能側でcallback()を2度実行するとエラーになります。
10.1.3.定義済み関数・変数
サーバー機能のスクリプト内では以下の変数が予め用意されています。
- tables
- DBテーブルを表すModelTableオブジェクト(【ModelTable】の節を参照)の配列。
- views
- DBビューを表すModelViewオブジェクト(【ModelView】の節を参照)の配列。
- models
- ModelTableオブジェクトおよびModelViewオブジェクトの配列。
また、以下の関数およびライブラリが用意されています。
- api.sendMessage
- スクリーンプログラムのapi.request.sendMessage関数と同等(【sendMessage】の節を参照)。
- api.serverFunction
- サーバー機能から別のサーバー機能を呼び出します(後述)。
- api.transaction
- DBテーブル・ビューの操作のトランザクション処理を行います(後述)。
- api.xml2js
- xml2jsモジュール。スクリーンプログラムのapi.lib.xml2jsモジュールと同等(【api.lib.xml2js】の節を参照)。
- async
- asyncモジュール。スクリーンプログラムのapi.lib.asyncモジュールと同等(【api.lib.async】の節を参照)。
- console.log(出力文字列)
- デバッグ用のメッセージを出力します。出力内容は結果の一部としてクライアント側に返されます。
- customLog(出力文字列)
- カスタムログに文字列を出力します。
- lib.BuddyFile
- ファイルやディレクトリを操作します(後述)。
- lib.BuddyReport
- レポート出力をサポートします(後述)。
- lib.FileManager
- 一時ファイルの管理を担うファイルマネージャを操作します(後述)。
- lib.sendMail
- サーバを通じてメールを送信します(後述)。
- lib.Workbook
- Excelファイルの読み書きをサポートします(後述)。
- lib.XPDFJ
- テキストや画像を含むPDFファイルを作成します(後述)。
10.1.4.利用できるモジュール
サーバー機能スクリプトの中でrequire()により利用できるモジュールは以下の通りです。
・async
・events
・crypto
・object-assign
・nodemailer
・decimal
・iconv-lite
10.2.api.serverFunction
サーバー機能から別のサーバー機能を呼び出すにはapi.serverFunctionモジュールを利用します(スクリーンプログラムの【api.serverFunction】モジュールの節を参照)。同期実行にはapi.serverFunction.execute()、非同期実行にはapi.serverFunction.executeAsync() を用います。options引数に与えるオブジェクトには、値が数値か文字列のプロパティのみ指定できます。
サーバー機能の権限チェックはスクリーンプログラムからの呼び出しと同様に行われます。
サーバー機能の再帰的な呼び出しが可能です。ただし再帰呼び出し回数の上限は10000回に制限されています。
10.3.api.transaction
- transaction関数はDBテーブル・ビューの操作のトランザクション処理を行うための仕組みを提供します。
新しいトランザクションを開始して、そのトランザクション内でデータベース操作を実行するには、次のようにapi.transaction関数を実行します。
api.transaction(options, callback)
options引数は今のところ使用されません。callback引数にはトランザクション内で実行するデータベース操作を記述したコールバック関数を与えます。以下に例を示します。
api.transaction(options, function(transaction) {
// ここにトランザクション内で実行するデータベース操作を記述する
...
});
コールバック関数の引数には、以下に述べるプロパティおよび関数から成るオブジェクト(これをtransactionオブジェクトと呼びます)が渡されます。transactionオブジェクトのプロパティや関数により記述されたデータベース操作はトランザクション内で実行されます。
10.3.1.プロパティ
10.3.1.1.transaction.tables
このプロパティの値は、DBテーブルを表すModelTableオブジェクト(【ModelTable】の節を参照)の配列です。このModelTableオブジェクトのメソッド呼び出しによるDBテーブルの操作はトランザクション内で実行されます。
注意:<a href="#【定義済み関数・変数】">【定義済み関数・変数】</a>の節で述べた定義済み変数tablesにより得られるModelTableオブジェクトを通じたDBテーブルの操作は、トランザクション内では実行されません。
10.3.1.2.transaction.views
このプロパティの値は、DBビューを表すModelViewオブジェクト(【ModelView】の節を参照)の配列です。このModelViewオブジェクトのメソッド呼び出しによるDBビューの操作はトランザクション内で実行されます。
注意:<a href="#【定義済み関数・変数】">【定義済み関数・変数】</a>の節で述べた定義済み変数viewsにより得られるModelViewオブジェクトを通じたDBビューの操作は、トランザクション内では実行されません。
10.3.2.関数
10.3.2.1.transaction.commit
transaction.commit関数は、トランザクション内で実行したデータベース操作をコミット(確定)してトランザクションを終了します。
transaction.commit(callback)
callback引数にはコールバック関数を与えます。コミットが失敗するとコールバック関数の引数にはErrorオブジェクトが渡され、成功するとnullが渡されます。
10.3.2.2.transaction.rollback
transaction.rollback関数は、トランザクション内で実行したデータベース操作をロールバック(破棄)してトランザクションを終了します。
transaction.rollback(callback)
callback引数にはコールバック関数を与えます。ロールバックが失敗するとコールバック関数の引数にはErrorオブジェクトが渡され、成功するとnullが渡されます。
10.4.lib.BuddyFile
- BuddyFileクラスはアプリケーションのfilesディレクトリ配下のファイルおよびディレクトリを操作するための仕組みを提供します。
10.4.1.コンストラクタ
BuddyFileオブジェクトを作成するにはJavaScriptのnew演算子を用います。
new lib.BuddyFile(filePath, options)
引数:
- filePath
- ファイルまたはディレクトリへのパス名。
- options
- オプション。
filePath引数には操作対象となるファイルまたはディレクトリをアプリケーションのfilesディレクトリからの相対パス名で与えます。options引数には以下のプロパティから成るオブジェクトを与えます。
- temporary
- trueを与えると一時ファイルを作成します。filePath引数に与えたパス名は無視され、一時ファイル名が自動的に与えられます。作成された一時ファイルはサーバー機能スクリプトの実行完了時に自動的に削除されます。
10.4.2.メソッド
10.4.2.1.append
appendメソッドはデータをファイルに追加します。ファイルが存在しない場合は新しく作成されます。
append(data, options, callback)
data引数にはファイルに書き込むデータを文字列で与えます。options引数には以下のプロパティから成るオブジェクトを与えます。
- encode
- data引数に与えた文字列の文字コード(省略可)。
callback引数にはコールバック関数を与えます。書き込みが成功したらコールバック関数の引数にはnull、失敗したらErrorオブジェクトが渡されます。
10.4.2.2.appendChild
appendChildメソッドはBuddyFileオブジェクトのパス名からの相対パスを表す新しいBuddyFileオブジェクトを返します。
appendChild(name)
name引数にはBuddyFileオブジェクトのパス名からの相対パスを文字列で与えます。以下に例を示します。
var importDir = new BuddyFile('import', {});
var importFile = importDir.appendChild('table1.csv');
このとき変数importFileの値はimport/table1.csvを表すBuddyFileオブジェクトです。
10.4.2.3.basename
basenameメソッドはBuddyFileオブジェクトのパス名のうちファイル名を返します。
basename(ext)
ext引数には拡張子を文字列で与えます(省略可)。ファイル名の拡張子と一致した場合には拡張子のないファイル名が返されます。
10.4.2.4.createReadStream
createReadStreamメソッドはファイルからの読み込みストリームを作成します。
createReadStream(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- encode
- 読み込みストリームの文字コード(省略可)。
- parse
- ファイル形式(省略可)。文字列"csv"を与えるとファイルをCSV形式と見なして解析します。
10.4.2.5.createWriteStream
createWriteStreamメソッドはファイルへの書き込みストリームを作成します。
createWriteStream(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- encode
- 書き込みストリームの文字コード。
10.4.2.6.extname
extnameメソッドはBuddyFileオブジェクトのパス名のうちファイル名の拡張子を返します。
extname()
10.4.2.7.getFilePath
getFilePathメソッドはBuddyFileオブジェクトのパス名を返します。
getFilePath()
10.4.2.8.mkdir
mkdirメソッドはディレクトリを作成します。
mkdir(options, callback)
options引数は今のところ使用しません。callback引数にはコールバック関数を与えます。ディレクトリの作成に成功したらコールバック関数の引数にはnull、失敗したらErrorオブジェクトが渡されます。
10.4.2.9.move
moveメソッドはファイルまたはディレクトリを移動します。
move(dst, options, callback)
dst引数には移動後の新しいパス名を与えます。options引数は今のところ使用しません。callback引数にはコールバック関数を与えます。成功したらコールバック関数の引数にはnull、失敗したらErrorオブジェクトが渡されます。移動が成功すると、存在しないパス名を指すBuddyFileオブジェクトになります。
10.4.2.10.read
readメソッドはファイルからデータを読み込みます。
read(options, callback)
options引数には以下のプロパティから成るオブジェクトを与えます。
- encode
- ファイルの文字コード(省略可)。
- parse
- ファイル形式(省略可)。文字列"csv"を与えるとファイルをCSV形式と見なして解析します。文字列"xlsx"を与えるとXLSXファイルとして開き、Workbookオブジェクトを返します(【lib.Workbook】の節を参照)。
callback引数にはコールバック関数を与えます。データの読み込みに成功したらコールバック関数の第1引数にはnull、第2引数には読み込み結果が渡されます。失敗したらコールバック関数の第1引数にErrorオブジェクトが渡されます。
10.4.2.11.readdir
readdirメソッドはディレクトリ内のファイルおよびサブディレクトリの一覧を返します。
readdir(options, callback)
options引数には以下のプロパティから成るオブジェクトを与えます。
- encode
- ファイル名の文字コード(省略可)。
callback引数にはコールバック関数を与えます。一覧の取得に成功したらコールバック関数の第1引数にはnull、第2引数にはファイルおよびサブディレクトリを表すBuddyFileオブジェクトの配列が渡されます。失敗したらコールバック関数の第1引数にErrorオブジェクトが渡されます。
10.4.2.12.remove
removeメソッドはファイルまたはディレクトリを削除します。
remove(options, callback)
options引数は今のところ使用しません。callback引数にはコールバック関数を与えます。削除に成功したらコールバック関数の引数にはnull、失敗したらErrorオブジェクトが渡されます。削除が成功すると、存在しないパス名を指すBuddyFileオブジェクトになります。
10.4.2.13.rename
renameメソッドはファイルまたはディレクトリの名前を変更します。
rename(dst, options, callback)
dst引数には新しい名前を与えます。options引数は今のところ使用しません。callback引数にはコールバック関数を与えます。成功したらコールバック関数の引数にはnull、失敗したらErrorオブジェクトが渡されます。名前の変更が成功すると、存在しないパス名を指すBuddyFileオブジェクトになります。
renameメソッドはmoveメソッドの別名です。dstに別のディレクトリ配下のパス名を与えると、BuddyFileオブジェクトが表すファイルまたはディレクトリをそのディレクトリ配下に移動します。
10.4.2.14.stat
statメソッドはパスの状態を取得します。
stat(options, callback)
options引数は今のところ使用しません。callback引数にはコールバック関数を与えます。状態の取得に成功したらコールバック関数の第1引数にはnull、第2引数にはパスの状態を表すオブジェクト(Node.jsのfs.Statsオブジェクト)が渡されます。状態の取得に失敗した場合はコールバック関数の第1引数にErrorオブジェクトが渡されます。
- Statsオブジェクトはサーバーの実行環境によって詳細が異なります。主なプロパティについて以下に示します。
- atime
- 最終アクセス日時(Dateオブジェクト)
- ctime
- 最終状態変更日時(Dateオブジェクト)
- mtime
- 最終修正日時(Dateオブジェクト)
- size
- ファイルサイズ(バイト数)
-
Statsオブジェクトの例を以下に示します。
{
dev: 64768,
mode: 16895,
nlink: 2,
uid: 0,
gid: 0,
rdev: 0,
blksize: 4096,
ino: 3038506,
size: 4096,
blocks: 8,
atime: "2017-10-10T14:25:58.910Z",
mtime: "2017-10-10T14:25:58.909Z",
ctime: "2017-10-10T14:25:58.909Z",
birthtime: "2017-10-10T14:25:58.909Z"
} -
Statsオブジェクトの詳細については下記URLのNode.jsドキュメントを参照してください。
https://nodejs.org/api/fs.html#fs_class_fs_stats
10.4.2.15.unzip
unzipメソッドはZIPファイルの内容を展開します。
unzip(unzipDir, options, callback)
unzipDir引数には展開先のディレクトリを表すBuddyFileオブジェクトを与えます。options引数には以下のプロパティから成るオブジェクトを与えます。
- encode
- ファイル名の文字コード(省略可)。省略した場合は文字コードを自動検出します。文字コードを変更しない場合は"through"を指定します。
10.4.2.16.write
writeメソッドはデータをファイルに書き込みます。ファイルが存在しない場合は新しく作成されます。
write(data, options, callback)
data引数にはファイルに書き込むデータを文字列で与えます。options引数には以下のプロパティから成るオブジェクトを与えます。
- encode
- data引数に与えた文字列の文字コード(省略可)。
callback引数にはコールバック関数を与えます。書き込みが成功したらコールバック関数の引数にはnull、失敗したらErrorオブジェクトが渡されます。
10.4.2.17.zip
zipメソッドはBuddyFileオブジェクトが表すファイルまたはディレクトリをZIPファイルに追加します。ZIPファイルが存在しなければ新たに作成します。
zip(zipFile, options, callback)
zipFile引数にはZIPファイルを表すBuddyFileオブジェクトを与えます。options引数には以下のプロパティから成るオブジェクトを与えます。
- omitDirectory
- BuddyFileオブジェクトがディレクトリを表す場合に、そのディレクトリ名をzipファイルに含めるかどうかを真偽値で指定します。trueなら含めます。falseなら含めません(省略可。デフォルト値はtrue)。
ZIPファイルへの書き込みに成功したらコールバック関数の引数にはnull、失敗したらErrorオブジェクトが渡されます。
10.5.lib.BuddyReport
- BuddyReportモジュールはBuddyFileオブジェクトを出力先としてレポートを出力するAPIを提供するモジュールです。
10.5.1.関数
10.5.1.1.output
output関数はBuddyFileオブジェクトを出力先としてレポートを出力します。
output(name, file, options, callback)
name引数にはレポート名を与えます。file引数にはレポートの出力先となるBuddyFileオブジェクトを与えます。options引数には以下のプロパティから成るオブジェクトを与えます。
- where
- 絞り込み条件(【絞り込み条件】の節を参照)。
- order
- 並べ替え指定(【並べ替え】の節を参照)。
- offset
- 最初のレコード番号(先頭が0)。
- num
- 出力件数。
- param
- パラメーターオブジェクト
paramプロパティには任意のプロパティから成るオブジェクトを指定できます。ここで与えたプロパティの値はレポート中で「this.param.プロパティ名」で参照できます。callback引数にはコールバック関数を与えます。レポート出力が成功したらコールバック関数の引数にはnull、失敗したらErrorオブジェクトが渡されます。
10.6.lib.FileManager
- FileManagerモジュールは、サーバー機能スクリプトからファイルマネージャを利用するためのAPIを提供するモジュールです。アプリケーションのfilesディレクトリ配下のファイルは固有のURLを持ち、ファイルが存在する間は常にダウンロード可能です。一方、ファイルマネージャは有効期限のあるURLをファイルに与えて一時的にダウンロードを許す仕組みを提供します。有効期限が過ぎるとファイルは自動的に削除され、ファイルに付与されたURLは無効になります。ファイルマネージャの管理下にあるファイルを「一時ファイル」と呼びます。
10.6.1.関数
10.6.1.1.getURL
getURL関数は一時ファイルの識別子(ハッシュ)からそのファイルをダウンロードできるURLを得ます。
getURL(hash)
hash引数には一時ファイルの識別子となるハッシュ値を文字列で与えます。
10.6.1.2.register
register関数はBuddyFileオブジェクトが表すファイルをファイルマネージャに登録します。
register(file, options, callback)
file引数には登録対象となるファイルを表すBuddyFileオブジェクトを与えます。options引数には以下のプロパティから成るオブジェクトを与えます。
- auth
- 権限情報オブジェクト(省略可)。省略すると同じアプリケーションからのみアクセスを許可します。
- fileName
- ファイル名(省略可)。省略すると元のファイル名を用います。
- limit
- 有効期限(省略可)。ファイルを削除する日時をDateオブジェクトで与えます。省略すると登録から1時間有効となります。
- tags
- タグオブジェクト。現在はdownloadタグ(デフォルト値true)が指定できます。trueならダウンロードを強制します。falseならブラウザの設定に従います。
callback引数にはコールバック関数を与えます。ファイルの登録に失敗するとコールバック関数の第1引数にはErrorオブジェクトが渡されます。登録に成功した場合、コールバック関数の第1引数にはnull、第2引数にはハッシュ値が文字列で渡されます。ここで得られたハッシュ値は上述のgetURL関数でファイルのダウンロードURLを得るために用います。
10.7.lib.sendMail
-
sendMail関数はサーバを通じてメールを送信します。
lib.sendMail(maildata, callback)
maildata引数には以下のプロパティから成るオブジェクトを与えます。
- type
- メール本文の形式。"text"または"html"
- from
- 送信元メールアドレス(省略するとBuddyサーバの設定ファイルで指定された送信元メールアドレスを使用)
- to
- 宛先メールアドレス(カンマ区切りで複数指定可)
- cc
- CCメールアドレス(カンマ区切りで複数指定可)
- bcc
- BCCメールアドレス(カンマ区切りで複数指定可)
subject … 表題
body … 本文 - attachments
- 添付ファイルパス(filesディレクトリからの相対パス)の配列
- smtpserver
- SMTPサーバのホスト名またはIPアドレス(省略するとBuddyサーバの設定ファイルで指定されたSMTPサーバを使用)
callback引数にはコールバック関数を与えます。メールの送信に失敗した場合にはコールバック関数の第1引数にErrorオブジェクトが渡されます。メールの送信に成功した場合は、第1引数にはnull、第2引数には以下のプロパティから成るSMTP応答オブジェクトが渡されます。
- envelope
- エンベロープオブジェクト
- accepted
- SMTPサーバによって受理されたメールアドレスの配列
- rejected
- SMTPサーバによって拒否されたメールアドレスの配列
- response
- SMTPサーバからの応答メッセージ文字列
少なくとも1つのメールアドレスがSMTPサーバにより受理されたら送信成功として扱われます。
10.8.lib.Workbook
- WorkbookクラスはExcelワークブックを読み書きするためのAPIを提供するクラスです。
WorkbookクラスはNode.jsのexceljsモジュールに基づいています。exceljsの詳細については下記URLのドキュメントを参照してください。
https://www.npmjs.com/package/exceljs
10.8.1.ワークブック
Workbookオブジェクトを作成するにはJavaScriptのnew演算子を用います。
var workbook = new lib.Workbook();
既存のXLSXファイルを読み込んでWorkbookオブジェクトを作成するには、次の例のようにBuddyFileオブジェクトのread()メソッドの第1引数に{parse: "xlsx"}オプションを与えます。
var xlsx = new BuddyFile("import/test.xlsx");
xlsx.read({parse: "xlsx"}, function(err, workbook){
// ここでworkbookはWorkbookオブジェクト
});
WorkbookオブジェクトをXLSX形式のファイルとして保存するには、次の例のようにBuddyFileオブジェクトのwrite()メソッドの第1引数にWorkbookオブジェクトを与えます。
var xlsx = new BuddyFile("output/test.xlsx");
xlsx.write(workbook, function(err){
// ...
});
10.8.2.ワークシート
ワークブックに新しいワークシートを追加するには次のようにします。
var sheet = workbook.addWorksheet('My Sheet');
ワークブックからワークシートを得るには次の例のようにgetWorksheet()を用います。引数には名前または番号(先頭が1)を与えます。
// 名前で探す
var worksheet = workbook.getWorksheet('My Sheet');
// 番号で探す
var worksheet = workbook.getWorksheet(1);
10.8.3.カラム
ワークシートのカラムにカラム名(key)、表示名(header)、幅(width)などを設定するには次の例のようにワークシートのcolumnsプロパティを変更します。
worksheet.columns = [
{ key: 'id', header: 'ID', width: 10 },
{ key: 'name', header: '名前', width: 30 },
{ key: 'dob', header: '生年月日', width: 20 }
];
ワークシートからカラムを得るには次の例のようにgetColumn()を用います。引数にはカラム名、英文字、番号(先頭が1)を与えます。
var idCol = worksheet.getColumn('id');
var nameCol = worksheet.getColumn('B');
var dobCol = worksheet.getColumn(3);
カラムのプロパティを変えるには次のようにします。
nameCol.key = 'name';
nameCol.header = '氏名';
nameCol.width = 15;
カラムの各セルについて同じ処理を繰り返し実行するには次の例のようにeachCell()を用います。
nameCol.eachCell(function(cell, rowNumber) {
// cellはセルオブジェクト、rowNumberは行番号
});
10.8.4.行
ワークシートに新しい行を追加するには次の例のようにaddRow()を用います。引数にはカラム名をプロパティとするオブジェクトを与えます。ここで指定するカラム名(id、nameなど)は、前節に示した方法で予め定義しておく必要があります。
worksheet.addRow({id: 1, name: '近藤勇', dob: new Date(1834,11,9)});
worksheet.addRow({id: 2, name: '土方歳三', dob: new Date(1835,5,31)});
addRow()の引数には配列を与えることもできます。この場合、値はカラムAから順に格納されます。
worksheet.addRow([3, '斎藤一', new Date(1844,2,18)]);
ワークシートから行を得るには次の例のようにgetRow()を用います。引数には番号(最初が1)を与えます。
var row = worksheet.getRow(5);
ワークシートの最後の編集可能な行を得るには次の例のようにlastRowプロパティを用います(編集可能な行がないときはundefined)。
var row = worksheet.lastRow;
行の高さを設定するには次の例のようにheightプロパティを変更します。
row.height = 42.5;
行の値を一括して変更するには次の例のようにvaluesプロパティを用います。
row.values = { id: 3, name: '斎藤一', dob: new Date(1844,2,18) };
行のセルを得るには次の例のようにgetCell()を用いて名前、英文字、番号(先頭が1)を与えます。
row.getCell('id').value = 3;
row.getCell('B').value = '斎藤一';
row.getCell(3).value = new Date(1844,2,18);
ワークシートの各行について同じ処理を繰り返し実行するには次の例のようにeachRow()を用います。
worksheet.eachRow(function(row, rowNumber) {
// rowは行オブジェクト、rowNumberは行番号
console.log('Row ' + rowNumber + ' = ' + JSON.stringify(row.values));
});
10.8.5.セル
ワークシートからセルを得るには次の例のようにgetCell()を用います。
worksheet.getCell('C3').value = new Date(1844,2,18);
セルを結合するには次の例のようにmergeCells()を用います。
worksheet.mergeCells('A4:B5');
セルの結合を解除するには次の例のようにunMergeCells()を用います。
worksheet.unMergeCells('A4');
10.8.6.画像
ワークシートに画像を表示するには、Workbook.addImage()とWorksheet.addImage()を用いて次のようにします。
const wb = new lib.Workbook();
const ws = wb.addWorksheet('test');
const imgfile = new lib.BuddyFile('images/test.jpg');
const imgid = wb.addImage(imgfile);
ws.addImage(imgid, {
tl: {col: 1, row: 1},
br: {col: 2, row: 4}
});
Worrkbook.addImage()は、引数に表示する画像ファイルのBuddyFileオブジェクトを渡すと、画像IDが得られます。
Worksheet.addImage()は、第一引数に画像IDを指定し、第二引数で表示位置を指定します。(上記の例では、tlで左上のセル、brで右下のセルを指定しています。)表示位置の指定方法はいくつあります。exceljsのドキュメントを参照してください。
10.8.7.スタイル
本節ではセルのスタイルを変更するためのプロパティについて述べます。
10.8.7.1.書式設定
セルの書式設定を変更するには次のようにnumFmtプロパティを設定します。
worksheet.getCell('A1').numFmt = '0.00%';
10.8.7.2.フォント
セルのフォントを変更するには次のようにfontプロパティを設定します。
worksheet.getCell('A1').font = { name: 'Arial', size: 12 };
セルのfontプロパティには次のプロパティから成るオブジェクトを与えます。
- name
- フォント名('Arial'など)
- color
- 色。例えば {argb: 'FFFF0000'} のようにargbプロパティから成るオブジェクトを与えます。
- bold
- 太字(trueまたはfalse)
- italic
- 斜体(trueまたはfalse)
- underline
- 下線(true, false, 'none', 'single', 'double', 'singleAccounting', 'doubleAccounting'のいずれか)
- strike
- 取り消し線(trueまたはfalse)
10.8.7.3.配置
セルの配置を変更するには次のようにalignmentプロパティを設定します。
worksheet.getCell('A1').alignment = { vertical: 'top', horizontal: 'left' };
セルのalignmentプロパティには次のプロパティから成るオブジェクトを与えます。
- horizontal
- 横位置('left', 'center', 'right', 'fill', 'justify', 'centerContinuous', 'distributed'のいずれか)
- vertical
- 縦位置('top', 'middle', 'bottom', 'distributed', 'justify'のいずれか)
- wrapText
- 折り返し(trueまたはfalse)
- indent
- 字下げ(整数値)
- readingOrder
- 文字の方向('rtl'または'ltr')
- textRotation
- 回転角度(-90から90までの数値、または'vertical')
10.8.7.4.枠線
セルの枠線を変更するには次のようにborderプロパティを設定します。
worksheet.getCell('A1').border = {
top: {style: 'thin'},
bottom: {style: 'thin'},
left: {style: 'thin'},
right: {style: 'thin'}
};
セルのborderプロパティには次のプロパティから成るオブジェクトを与えます。
- top
- 上の枠線スタイル
- bottom
- 下の枠線スタイル
- left
- 左の枠線スタイル
- right
- 右の枠線スタイル
枠線スタイルにはstyleプロパティから成るオブジェクトを与えます。styleプロパティの有効な値は次の通りです。
- style
- 'dashDot', 'dashDotDot', 'dotted', 'double', 'hair', 'medium', 'mediumDashDot', 'mediumDashDotDot', 'mediumDashed', 'slantDashDot', 'thick', 'thin'のいずれか。
10.8.7.5.塗りつぶし
セルの塗りつぶしを変更するには次の例のようにfillプロパティを設定します。
// パターン(単色)
worksheet.getCell('A1').fill = {
type: 'pattern',
pattern: 'solid',
fgColor: {argb: 'FFFFFF00'}
};
// パターン
worksheet.getCell('A2').fill = {
type: 'pattern',
pattern: 'darkHorizontal',
fgColor: {argb: 'FFFFFF00'},
bgColor: {argb: 'FF000000'}
};
// グラデーション
worksheet.getCell('A3').fill = {
type: 'gradient',
gradient: 'angle',
degree: 0,
stops: [
{position: 0.0, color: {argb: 'FFFF0000'}},
{position: 0.5, color: {argb: 'FFFFFF00'}},
{position: 1.0, color: {argb: 'FF00FF00'}}
]
};
パターンで塗りつぶすには、セルのfillプロパティに以下のプロパティから成るオブジェクトを与えます。
- type
- 文字列'pattern'(必須)。
- pattern
- パターン名(必須)。'darkDown', 'darkGray', 'darkGrid', 'darkHorizontal', 'darkTrellis', 'darkUp', 'darkVertical', 'darkVertical', 'gray0625', 'gray125', 'lightDown', 'lightGray', 'lightGrid', 'lightGrid', 'lightHorizontal', 'lightTrellis', 'lightUp', 'lightVertical', 'mediumGray', 'none', 'solid'のいずれか。
- fgColor
- 前景色(省略可)。デフォルトは'black'。
- bgColor
- 背景色(省略可)。デフォルトは'white'。
グラデーションで塗りつぶすには、セルのfillプロパティに以下のプロパティから成るオブジェクトを与えます。
- type
- 文字列'gradient'(必須)。
- gradient
- グラデーションタイプ(必須)。'angle'または'path'。
- degree
- グラデーション方向の角度('angle'タイプの場合に必須)。0なら左から右へのグラデーション、1から359の値なら時計回りにグラデーション方向を回転。
- center
- パスの始点の相対座標('path'タイプの場合に必須)。0から1までの相対値でパスの始点を指定。
- stops
- グラデーションを構成する色の配列(必須)。配列の要素は次のプロパティから成るオブジェクト。
- position
- 位置。始点を0、終点を1とする相対位置で指定。
color … 色。
10.9.lib.XPDFJ
- XPDFJクラスは、テキストや画像を含むPDFファイルをサーバー機能のスクリプトで生成するための仕組みを提供するクラスです。本クラスの機能の概要は次の通りです。
-
サーバー機能のスクリプトでテキスト、段落、直線、矩形、画像をページに配置することでPDFを生成できます。内部的にPerlモジュールXPDFJを利用しています。
-
new lib.XPDFJ() でオブジェクトを作り、そのメソッドでテキスト、段落、直線、矩形、画像を配置していくと、ソースとなるオブジェクトが作られます。このオブジェクトがoutput()メソッドでXML形式に変換されてXPDFJモジュールで処理され、ファイルに出力されます。
-
用意されているメソッドではXPDFJモジュールやその下のPDFJライブラリの全ての機能が使えるものではなく、Buddyのレポート出力で必要になると思われる機能に限定しています。
-
テキストと段落について、実際の出力はせずに、それぞれの縦横のサイズを得る方法を用意しています。これによって内容が可変のテキストについて適切な配置が可能となります。
-
大きさや位置は単位を指定しなければポイントですが、単位「mm」を付加することでミリメートル指定も可能です(72ポイント=1インチ=25.4mm)。
-
ソースとなるオブジェクトまたはXMLテキストを自分で組み立てておいて渡すようにすれば、XPDFJやPDFJの全ての機能を利用できます。XPDFJのマクロ機能も利用できます。
10.9.1.コンストラクタ
XPDFJオブジェクトを作成するにはJavaScriptのnew演算子を用います。
new lib.XPDFJ(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- src
- ソースオブジェクトまたはXMLテキスト(省略可)
- ydir
- y軸(上下方向)をどちら向きとするか("up"または"down"、省略すると"up")
ソースオブジェクトの作成方法は後述します。srcを省略した場合、ソースは後述のXPDFJクラスのメソッドで組み立てます。ydirによる指定は後述のメソッドにおいてy(縦位置指定)とh(図形の縦送り)に影響します(srcによるソースには影響しません)。
10.9.2.メソッド
本節ではXPDFJクラスのメソッドについて述べます。各メソッドの呼び出しはXPDFJオブジェクト自身を返すので、次のように書くことが可能です。
var xpdfj = new lib.XPDFJ(…);
xpdfj.newDoc(…).addText(…).addLine(…).…
10.9.2.1.addBox
addBoxメソッドは矩形を追加します。
addBox(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- w
- 横送り(右へ)
- h
- 縦送り(ydirがupなら上へ、downなら下へ)
- linewidth
- 線幅(省略すると0.25)
- linedash
- 破線指定("5,5" のように"線長,スキップ長"をポイントで指定。省略すると実線
- color
- 線色("#RRGGBB"で指定、省略すると黒(#000000))
- bgcolor
- 塗りつぶし色("#RRGGBB"で指定、省略すると塗りつぶさず枠線のみ)
- x
- 横位置(省略するとページ左端)
- y
- 縦位置(省略するとページ上端)
- align
- 配置基準(【addText】メソッドの節を参照)
ある位置と、そこからw、hで指定した長さだけ移動した位置とを対角とする矩形を描きます。
10.9.2.2.addImage
addImageメソッドは画像を追加します。今のところPNG画像のみ利用できます。
addImage(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- src
- 画像ファイルをfilesからのパス名で指定
w … 幅
h … 高さ - x
- 横位置(省略するとページ左端)
- y
- 縦位置(省略するとページ上端)
- align
- 配置基準(【addText】メソッドの節を参照)
10.9.2.3.addLine
addLineメソッドは直線を追加します。
addLine(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- w
- 横送り(右へ)
- h
- 縦送り(ydirがupなら上へ、downなら下へ)
- linewidth
- 線幅(省略すると0.25)
- linedash
- 破線指定("5,5" のように"線長,スキップ長"をポイントで指定。省略すると実線
- color
- 線色("#RRGGBB"で指定、省略すると黒(#000000))
- x
- 横位置(省略するとページ左端)
- y
- 縦位置(省略するとページ上端)
- align
- 配置基準(【addText】メソッドの節を参照)
ある位置からw、hで指定した長さだけ移動した位置まで直線を引きます。hが0なら水平線、wが0なら垂直線となります。x、y、alignは、w、hの指定によって構成される矩形がどの位置に配置されるかを決めます。オプション指定の組み合わせによって、x、yで指定した位置が直線の端になるとは限らない点に注意してください。
10.9.2.4.addParagraph
addParagraphメソッドは段落を追加します。
addParagraph(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- text
- 表示する文字列
- font
- フォント("mincho"または"gothic"、省略すると"mincho")
- fontsize
- フォントサイズ(省略すると10ポイント)
- color
- 文字色("#RRGGBB" で指定、省略すると黒(#000000))
- size
- 段落の横幅(省略すると100)
- textalign
- 各行の配置方法(b: 行頭揃え、m: 中央揃え、e: 行末揃え、w: 両端揃え、W: 強制両端揃え、省略するとw)。wによる両端揃えは末尾行だけは行頭揃えとなります。Wによる強制両端揃えは末尾行も含めて両端揃えとなります。
- linefeed
- 行送り(省略すると150%)。値は数値かパーセントで指定します。パーセント指定するとfontsizeを元に計算します。linefeedは行間ではなく行送りであることに注意してください。
- textdir
- "v"と指定すると縦書き。省略すると横書き
- x
- 横位置(省略するとページ左端)
- y
- 縦位置(省略するとページ上端)
- align
- 配置基準(【addText】メソッドの節を参照)
textオプションの文字列はsizeで指定された横幅に収まるように折り返されて表示されます。また、文字列に\nを含めるとそこで折り返されます。
10.9.2.5.addText
addTextメソッドはテキストを追加します。
addText(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- text
- 表示する文字列
- font
- フォント("mincho"または"gothic"、省略すると"mincho")
- fontsize
- フォントサイズ(省略すると10ポイント)
- color
- 文字色("#RRGGBB"で指定、省略すると黒(#000000))
- textdir
- "v"と指定すると縦書き。省略すると横書き
- x
- 横位置(省略するとページ左端)
- y
- 縦位置(省略するとページ上端)
- align
- 配置基準(後述)
textオプションの文字列は\rや\nを含んでいても折り返されません。alignによる配置基準は、x、yで指定した位置が表示するもののどこにあたるかを、縦位置についてはt、m、bのいずれか、横位置についてはl、c、r のいずれかを組み合わせて指定します。
- t
- y位置が表示物の上端
- m
- y位置が表示物の中央
- b
- y位置が表示物の下端
- l
- x位置が表示物の左端
- c
- x位置が表示物の中央
- r
- x位置が表示物の右端
alignを省略すると、tl(配置基準を表示物の左上)が用いられます。
10.9.2.6.getTextSizes
getTextSizesメソッドはソースに含まれる各テキストと段落のサイズを返します。このメソッドはソースがXPDFJオブジェクトのメソッドで組み立てられた場合に有効です。
getTextSizes(options, callback)
options引数にはオプションオブジェクトを与えますが今のところ使用されません。callback引数にはコールバック関数を与えます。エラーがあればコールバック関数の第1引数にはErrorオブジェクトが渡されます。エラーが無ければ、コールバック関数の第1引数にはnull、第2引数には結果が [横サイズ, 縦サイズ] の配列(単位はポイント)で渡されます。
10.9.2.7.newDoc
newDocメソッドはドキュメントを作成(ページも一つ自動的に追加)します。
newDoc(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- pagesize
- ページサイズ:"ハガキ"、"ハガキL"、"B5"、"B5L"、"B4"、"B4L"、"A4"、"A4L"、"A3"、"A3L"のいずれか(「L」と付くのは横、付かないのは縦)
- width
- ページ横幅
- height
- ページ高さ
pagesizeもwidth、heightも指定しなかった場合はA4縦サイズとなります。
10.9.2.8.newPage
newPageメソッドは新しいページを追加します。以後のページの構成要素はそのページに配置されます。
newPage()
10.9.2.9.ouput
ouputメソッドは、ソースにもとづいてPDFファイルを生成します。
ouput(file, options, callback)
file引数には出力先ファイルとなるBuddyFileオブジェクトを指定します。options引数にはオプションオブジェクトを与えますが今のところ使用されません。callback引数にはコールバック関数を与えます。ファイル出力に失敗するとコールバック関数の第1引数にはErrorオブジェクトが渡されます。ファイル出力に成功した場合、コールバック関数の第1引数にはnull、第2引数には出力されたファイルのパスが渡されます。XPDFJクラスのメソッドでソースを組み立てる場合は、その最後にoutput()を呼び出してください。
10.9.3.使用例
10.9.3.1.実例1
ソースをXPDFJクラスのメソッドで組み立てる例を以下に示します。
var xpdfj = new lib.XPDFJ({ydir: "down"});
xpdfj.newDoc({pagesize: "A4"});
xpdfj.addText({text: "テスト\ntest", x: 50, y: 50, font: "gothic", fontsize: 20, color: "#ff0000"});
xpdfj.addParagraph({text: "テスト2 <testtest> なんとか\nかんとか", x: 50, y: 80});
xpdfj.addLine({x: 50, y: 150, w: 200, h: 0});
xpdfj.addBox({x: 50, y: 200, w: 150, h: 200, bgcolor: '#00ffff'});
xpdfj.addImage({src: 'images/kamogawa.png', x: 50, y: 300, w: 327, h: 240});
var bf = new lib.BuddyFile("", {temporary: true});
xpdfj.output(bf, {}, function(err, result){ … });
10.9.3.2.実例2
ソースをオブジェクトで与える例を以下に示します。
var src = {XPDFJ: {version: "0.1"}, _:[
{Doc: {version:"1.3", pagewidth:"595", pageheight:"842"}},
{new_font: {setvar:"$font", basefont:"Ryumin-Light", encoding:"UniJIS-UCS2-HW-H"}},
{new_page: {setvar:"$page"}},
{TStyle: {setvar:"$tstyle", font:"$font", fontsize:"20"}},
{Text: {setvar:"$text", style:"$tstyle", texts:"テスト"}, _:[
{call: [
{show: {page:"$page", x:"40", y:"800", align:"tl"}},
]},
]},
{print: {file:"$Args{outfile}"}},
]};
var xpdfj = new lib.XPDFJ({src: src});
var bf = new lib.BuddyFile("", {temporary: true});
xpdfj.output(bf, {}, function(err, result){ … });
10.9.4.ソースオブジェクトの作成
ソースをオブジェクトで指定する場合は、次のいずれかの形式を組み合わせて入れ子にすることで組み立てます。二番目の形式は属性がない場合に用います。
{タグ名: {属性名: 属性値,…}, _:[子オブジェクトまたは文字列,…]}
{タグ名: [子オブジェクトまたは文字列,…]}
例えば、前掲の【実例2】のソースオブジェクトは、次のXMLテキストに変換されて、XPDFJで処理されます。
<?xml version="1.0" encoding="UTF-8"?>
<XPDFJ version="0.1">
<Doc version="1.3" pagewidth="595" pageheight="842"/>
<new_font setvar="$font" basefont="Ryumin-Light" encoding="UniJIS-UCS2-HW-H"/>
<new_page setvar="$page"/>
<TStyle setvar="$tstyle" font="$font" fontsize="20"/>
<Text setvar="$text" style="$tstyle" texts="テスト">
<call>
<show page="$page" x="40" y="800" align="tl"/>
</call>
</Text>
<print file="$Args{outfile}"/>
</XPDFJ>
10.9.5.マクロの利用
XPDFJには独自のタグを定義したりできるマクロ機能があります。ソース中で直接マクロ機能を利用することもできますし、マクロファイルを用意して<do file="…"/>で読み込むことで利用することもできます。
- XPDFJでも、files/import/にマクロファイルを入れておけば、上記のオブジェクト形式なら{do: {file: "…"}}として読み込まれます。
例えばXPDFJの標準マクロstddefs.incを利用すると、次のようにHTMLライクなタグを使って書けます(files/import/に、stddefs.inc、stdfontsH.inc、stdfontsV.incを入れておく必要があります)。
var src = {XPDFJ: {version: "0.2"}, _:[
{do: {file: "stddefs.inc"}},
{BODY: [
{H2: ["見出し"]},
{P: ["XPDFJ\r\nテスト"]},
]},
{print: {file:"$Args{outfile}"}},
]};
あるいはXMLテキストとしてソースを与えるなら次のように記述します。
<?xml version="1.0"?>
<XPDFJ version="0.2">
<do file="stddefs.inc"/>
<BODY>
<H2>見出し</H2>
<P>XPDFJ
テスト</P>
</BODY>
<print file="$Args{outfile}"/>
</XPDFJ>
標準マクロの解説は別文書「XPDFJ標準マクロ概説」を参照してください。