1.Buddy APIの概要
この文書では、Buddyアプリ開発者がJavascriptプログラムの開発に用いるアプリケーションプログラムインタフェース(API)について述べます。本文書はフレームワーク2を対象とします。
BuddyのJavaScript APIは、スクリーン設計およびサーバー機能設計に用いられます。
スクリーン設計に関するAPIはスクリーンスクリプトの作成に用いられます。スクリーンスクリプトにはブラウザ側で実行する処理を記述します。スクリーンスクリプトでは、あらかじめ用意されているbuddyscreenとbuddyの2つのオブジェクトを通じてBuddyのAPI機能を利用します。
一方、サーバー機能設計に関するAPIはサーバー側で実行する処理を記述するために用いられます。スクリーンスクリプトと同様に、サーバー機能のスクリプトではあらかじめ用意されているbuddyとlibの2つのオブジェクトを通じてAPI機能を利用します。
2.スクリーン設計
本項ではスクリーン設計で用いるAPIについて説明します。
2.1.概要
空のスクリーンのスクリプトには次の内容があらかじめセットされています。
buddyscreen.on("load", async(evt)=>{
//初期化処理
})
buddyscreen.on("unload", async(evt)=>{
})
buddyscreen.on("receive", async(evt)=>{
})
buddyscreenはこのスクリーン自身を意味するオブジェクトで、あらかじめ用意されています。
buddyscreen.on()はイベントハンドラを定義する関数です。イベントハンドラは、指定した名前のイベントが生じたときに呼ばれる関数です。上述の空のスクリーンのスクリプトではload, unload, receiveの3つのイベントについて空のイベントハンドラを定義しています。
スクリーンスクリプトでは上記の3つのイベントのハンドラに加えて、スクリーンを構成するスクリーンモジュールについて生じるイベントのハンドラを記述します。
例えばアイテム名BUTTON1のボタンがクリックされたときのイベントハンドラは次のように書きます。
buddyscreen.items.BUTTON1.on("click", async(evt)=>{
// ここに処理内容を書く
})
関数や変数を自由に定義して使うことができます。
また、buddyというオブジェクトもあらかじめ用意されています。buddyオブジェクトを通じてBuddyの各種機能をスクリーンスクリプトから利用することができます。
2.2.buddyオブジェクト
buddyオブジェクトはスクリーンスクリプトの作成に用いるBuddyの機能を提供するオブジェクトです。buddyオブジェクトはスクリーンプログラム内であらかじめ定義されています。buddyオブジェクトの主な構成要素は次の通りです。
-
buddy.api
アプリのfilesディレクトリを操作する関数やユーザ情報を得るための関数が含まれるモジュール。 -
buddy.app
アプリの構成要素(DBテーブル・ビュー、スクリーン、レポート、サーバー機能)を格納したプロパティおよび関連する関数を含むモジュール。 -
buddy.config
Buddyの設定に関するプロパティ群。 -
buddy.lib
汎用的なユーティリティ関数を含むモジュール。
2.2.1.buddy.api
本項ではbuddy.apiモジュールについて説明します。このモジュールにはアプリのfilesディレクトリを操作する関数やユーザ情報を得るための関数が含まれます。
2.2.1.1.deleteFile()
buddy.api.deleteFile関数はアプリのfilesディレクトリ内のファイルを削除します。
buddy.api.deleteFile(file)
file引数には削除するファイルのパス名を文字列で与えます。以下に例を示します。
//ファイルを削除する
const file = "test.txt" //削除するファイル名
const result = await buddy.api.deleteFile(file)
2.2.1.2.getUserInfo()
buddy.api.getUserInfo関数はログインユーザー(自分自身)の情報を取得します。
buddy.api.getUserInfo()
以下に例を示します。
const userInfo = await buddy.api.getUserInfo();
buddy.api.getUserInfo関数は以下のプロパティから成るオブジェクトを返します。
- guset
- ゲストアカウントかどうか(true/false)
- name
- 表示名
- user_id
- ユーザーID
2.2.1.3.readDir()
buddy.api.readDir関数はアプリのfilesディレクトリ内のディレクトリの中身を取得します。
buddy.api.readDir(dir)
dir引数には対象のディレクトリ名を文字列で与えます。空文字列を与えるとfilesディレクトリの中身を返します。
以下に例を示します。
const dir = "" //取得するディレクトリ(images,importなど)
const result = await buddy.api.readDir(dir)
buddy.api.readDir関数は、ディレクトリの中身(ファイルまたはディレクトリ)を表すオブジェクトの配列を返します。この配列の要素は、以下のプロパティから成るオブジェクトです。
- atime
- 最終アクセス日時
- ctime
- 作成日時
- dir
- ディレクトリかどうかを表す真偽値(ディレクトリなら真)
- mtime
- 最終更新日時
- name
- ファイル名
- path
- ファイル名を含むパス名
- size
- ファイルサイズ(バイト数)
2.2.1.4.renameFile()
buddy.api.renameFile関数はアプリのfilesディレクトリ内のファイルの名前を変更します。
buddy.api.renameFile(src, dst)
src引数には名前を変更するファイルのパス名、dst引数には変更後のパス名を文字列で与えます。
以下に例を示します。
const src = "foo.txt" //名前を変更するファイル
const dst = "bar.txt" //変更後のファイル名
const result = await buddy.api.renameFile(src, dst)
2.2.2.buddy.app
本項ではbuddy.appモジュールについて説明します。このモジュールにはアプリを構成するDBテーブル、DBビュー、スクリーン、レポート、サーバー機能を表すオブジェクトとそれらを操作するための関数が含まれます。
2.2.2.1.dbtable
buddy.app.dbtableプロパティはDBテーブル設計で定義されたDBテーブルの集合を表すオブジェクトです。個々のDBテーブルオブジェクトは次のように名前で参照できます。
const table1 = buddy.app.dbtable.table1
const name = 'table2'
const table2 = buddy.app.dbtable[name]
DBテーブルオブジェクトについては【モデルオブジェクト】を参照してください。
2.2.2.2.dbview
buddy.app.dbviewプロパティはDBビュー設計で定義されたDBビューの集合を表すオブジェクトです。個々のDBビューオブジェクトは次のように名前で参照できます。
const view1 = buddy.app.dbview.view1
const name = 'view2'
const view2 = buddy.app.dbview[name]
DBビューオブジェクトについては【モデルオブジェクト】を参照してください。
2.2.2.3.findModel()
buddy.app.findModel関数はDBテーブル・ビュー設計で定義されたDBテーブル・ビューオブジェクトを返します。
buddy.app.findModel(name)
name引数にはDBテーブル・ビューの名前を文字列で与えます。
DBテーブル・ビューオブジェクトについては【モデルオブジェクト】を参照してください。
2.2.2.4.report
buddy.app.reportプロパティはレポート設計で定義されたレポートの集合を表すオブジェクトです。個々のレポートオブジェクトは次のように名前で参照できます。
const report1 = buddy.app.report.report1
const name = 'report2'
const report2 = buddy.app.report[name]
2.2.2.5.screen
buddy.app.screenプロパティはスクリーン設計で定義されたスクリーンの集合を表すオブジェクトです。個々のスクリーンオブジェクトは次のように名前で参照できます。
const screen1 = buddy.app.screen.screen1
const name = 'screen2'
const screen2 = buddy.app.screen[name]
2.2.2.6.serverFunction
buddy.app.serverFunctionプロパティはサーバー機能設計で定義されたサーバー機能の集合を表すオブジェクトです。個々のサーバー機能オブジェクトは次のように名前で参照できます。
const function1 = buddy.app.serverFunction.function1
const name = 'function2'
const function2 = buddy.app.serverFunction[name]
2.2.2.7.transitionTo()
buddy.app.transitionTo関数は現在のスクリーンから別のスクリーンへ移行します。
buddy.app.transitionTo(screenName, params, query)
screenName引数にはスクリーン名を文字列で与えます。params引数にはURLの追加パスとしてデータを渡すときに使用するパラメータを与えます。ただし、どのような追加パスを使用するかをあらかじめ設定しておく必要があり、今のところアプリのスクリーンについてこの設定をする手段が用意されていないため使えません。よってparams引数には空のオブジェクト{}を指定してください。query引数にはURLの末尾に「?変数=値&...」の形式でデータを渡すためのクエリを{変数名: 値, ...}の形式のオブジェクトで与えます。params引数とquery引数は省略できます。
2.2.3.buddy.config
buddy.configプロパティは、アプリやサーバーの設定情報を表すオブジェクトです。このオブジェクトは以下のプロパティから成ります。
- AppName
- アプリ名
- companyName
- 会社名
- host
- サーバーのホスト名
- port
- サーバーのポート番号
- target
- アプリのビルド種別("debug" または "release")
2.2.4.buddy.lib
buddy.libモジュールは、Buddyの様々な機能にアクセスするAPIを提供するモジュールの集まりです。
2.2.4.1.CSV(プラグイン)
buddy.lib.CSV は、CSVサポートプラグインをアプリに追加することによって利用できます。
2.2.4.1.1.parse()
CSV形式のテキストを読み取ります。
const csvtext = await buddyscreen.items.FILE1.readAsText({})
const data = buddy.lib.CSV.parse(csvtext)
結果は配列の配列になります。
2.2.4.2.CustomLog
buddy.lib.CustomLogモジュールは、アプリのカスタムログファイルにタイムスタンプを付けてメッセージを出力する機能を提供するモジュールです。
2.2.4.2.1.write()
buddy.lib.CustomLog.write関数はカスタムログにメッセージを出力します。
buddy.lib.CustomLog.write(text)
text引数には出力するメッセージを文字列で与えます。
以下に例を示します。
//カスタムログへ出力する
const text = "文字列"
await buddy.lib.CustomLog.write(text)
text引数に与えた文字列は、関数呼び出し時のタイムスタンプ、実行ユーザの名前と共に日付別のカスタムログファイルに書き込まれます。カスタムログファイルは開発画面のログ閲覧機能により閲覧できます。
2.2.4.3.DataExporter
DataExporterクラスはスクリプトからデータエクスポートダイアログを開くための機能を提供するクラスです。
2.2.4.3.1.コンストラクタ
DataExporterオブジェクトを作成する方法を以下に示します。
new buddy.lib.DataExporter(options)
options引数には、データエクスポートダイアログのオプションを以下のプロパティから成るオブジェクトで与えます。
- table
- テーブル名(省略可)
以下に例を示します。この例ではtable1というDBテーブルが選択された状態でデータエクスポートダイアログを開きます。
const exporter = new buddy.lib.DataExporter({
table: "table1" //テーブル名の指定
})
const result = await exporter.open()
2.2.4.3.2.open()
DataExporterオブジェクトのopenメソッドはデータエクスポートダイアログを開きます。
open()
以下に例を示します。
const exporter = new buddy.lib.DataExporter({
table: "table1" //テーブル名の指定
})
const result = await exporter.open()
if(result.code === "success"){
//成功時の処理
}
openメソッドは以下のプロパティから成るオブジェクトを返します。
- code
- データエクスポートが成功したかどうかを表す文字列。成功ならば"success"、失敗ならば"err"が渡されます。
- value
- Errorオブジェクト(データエクスポートが失敗した場合)
2.2.4.4.DataImporter
DataImporterクラスはスクリプトからデータインポートダイアログを開くための機能を提供するクラスです。
2.2.4.4.1.コンストラクタ
DataImporterオブジェクトを作成する方法を以下に示します。
new buddy.lib.DataImporter(options)
options引数には、データインポートダイアログのオプションを以下のプロパティから成るオブジェクトで与えます。
- table
- テーブル名(省略可)
以下に例を示します。この例ではtable1というDBテーブルが選択された状態でデータインポートダイアログを開きます。
const importer = new buddy.lib.DataImporter({
table: "table1" //テーブル名の指定
})
const result = await importer.open()
2.2.4.4.2.open()
DataImporterオブジェクトのopenメソッドはデータエクスポートダイアログを開きます。
open()
以下に例を示します。
const importer = new buddy.lib.DataImporter({
table: "table1" //テーブル名の指定
})
const result = await importer.open()
if(result.code === "success"){
//成功時の処理
}
openメソッドは以下のプロパティから成るオブジェクトを返します。
- code
- データインポートが成功したかどうかを表す文字列。成功ならば"success"、失敗ならば"err"が渡されます。
- value
- Errorオブジェクト(データインポートが失敗した場合)
2.2.4.5.DataLinker
本項ではDataLinkerクラスについて説明します。
値を格納できるスクリーンモジュールには「データリンク」という属性があり、DBテーブル・ビュー名とカラム名をセットできます。DataLinkerクラスは、データリンク属性を設定したスクリーンアイテムとデータベースとの結びつきを扱う仕組みを提供します。
2.2.4.5.1.コンストラクタ
DataLinkerオブジェクトを作成する方法を以下に示します。
new buddy.lib.DataLinker(buddy, table)
buddy引数にはbuddyオブジェクトを与えます。table引数にはDBテーブル・ビュー名またはDBテーブル・ビューオブジェクトを与えます。以下に例を示します。
// DBテーブル table1 に対するDataLinkerを作成
const linker1 = new buddy.lib.DataLinker(buddy, 'table1')
// DBビュー view1 に対するDataLinkerを作成
const linker2 = new buddy.lib.DataLinker(buddy, buddy.app.dbview.view1)
2.2.4.5.2.addHook()
DataLinkerオブジェクトのaddHookメソッドは、スクリーンアイテムやデータベースの読み書きの際に、データの加工、ログの保存、通知などの処理をおこなうフック関数を設定します。
addHook(フック名, フック関数)
フック名はどういう場合にフック関数が実行されるかを指定する名前で、次のいずれかを指定します。
- get
- getメソッドが実行される時。得られたデータをフック関数で加工すれば、その結果がgetの結果となる。
- set
- setメソッドが実行される時。setに渡されたデータをフック関数で加工すれば、その結果がsetされる。
- after_insert
- insertメソッドが実行された後。insertされたデータがフック関数で得られるのでログや通知に利用できる。
- before_insert
- insertメソッドが実行される前。insertされるデータをフック関数で加工できる。また処理をキャンセルすることもできる。
- after_update
- updateメソッドが実行された後。updateされたデータがフック関数で得られるのでログや通知に利用できる。
- before_update
- updateメソッドが実行される前。updateされるデータをフック関数で加工できる。また処理をキャンセルすることもできる。
- after_upsert
- upsertメソッドが実行された後。upsertされたデータがフック関数で得られるのでログや通知に利用できる。
- before_upsert
- upsertメソッドが実行される前。upsertされるデータをフック関数で加工できる。また処理をキャンセルすることもできる。
- after_delete
- deleteメソッドが実行された後。deleteされたデータがフック関数で得られるのでログや通知に利用できる。
- before_delete
- deleteメソッドが実行される前。処理をキャンセルすることができる。
フック関数は次の内容のオブジェクトを一つ引数に取ります。
- cancel
- この関数を実行すると処理をキャンセルできる。(before_* の場合。)
- data
- DateSetオブジェクトとしてデータが入っている。フック関数はこのdataをreturnするようにする。
同じフック名で複数回addHook()することが可能で、そのタイミングで複数のフック関数が実行されることになります。
フック関数は同期的に実行されます。処理の中で非同期処理を実行することは可能ですが、終了を待たずにreturnすることに注意してください。
以下、いくつかの例をあげます。
linker.addHook('get', (proc) => {
// カラムnowの値を現在日時に
proc.data.rows[0].now = new Date()
return proc.data
})
linker.addHook('before_insert', (proc) => {
// age < 18 は追加しない
if(proc.data.rows[0].age < 18){
proc.cancel()
}
return proc.data
})
フック関数でcancel()で処理をキャンセルした場合、そのlinker.insert()などの実行はエラーとなりますので、try catch でエラー処理をおこなうようにしてください。
2.2.4.5.3.clear()
DataLinkerオブジェクトのclearメソッドは、指定のDBテーブル・ビューがデータリンクにセットされたアイテム群の値をまとめてクリアします。
clear(mode)
mode引数には値のクリア方法を次のいずれかの文字列で与えます。
- "insert"
- 新しいレコードを挿入できるようにクリアする
- "update"
- 既存のレコードを更新できるようにクリアする
2.2.4.5.4.delete()
DataLinkerオブジェクトのdeleteメソッドは、アイテム群から収集した値にもとづいて指定のDBテーブルからレコードを削除します。
delete()
以下に例を示します。この例では、table1というDBテーブルがデータリンクに設定されたアイテム群の値を集めて、table1のレコードを削除します。
const tableName = "table1" //対象のテーブル
const linker = new buddy.lib.DataLinker(buddy, tableName)
const result = await linker.delete()
deleteメソッドはDataSetオブジェクトを返します。詳しくは【buddy.lib.DataSet】を参照してください。
2.2.4.5.5.get()
DataLinkerオブジェクトのgetメソッドは、指定のDBテーブル・ビューがデータリンクにセットされたアイテム群から値を収集します。
get()
以下に例を示します。この例では、table1というDBテーブルがデータリンクに設定されたアイテム群の値を収集します。
const tableName = "table1" //対象のテーブル
const linker = new buddy.lib.DataLinker(buddy, tableName)
const data = linker.get()
getメソッドはDataSetオブジェクトを返します。詳しくは【buddy.lib.DataSet】を参照してください。
2.2.4.5.6.insert()
DataLinkerオブジェクトのinsertメソッドは、アイテム群から収集した値にもとづいてDBテーブルにレコードを挿入します。
insert()
以下に例を示します。この例では、table1というDBテーブルがデータリンクに設定されたアイテム群の値を集めて、table1にレコードを挿入します。
const tableName = "table1" //対象のテーブル
const linker = new buddy.lib.DataLinker(buddy, tableName)
const result = await linker.insert()
insertメソッドはDataSetオブジェクトを返します。詳しくは【buddy.lib.DataSet】を参照してください。
2.2.4.5.7.set()
DataLinkerオブジェクトのsetメソッドは、指定のDBテーブル・ビューがデータリンクにセットされたアイテム群に値をまとめてセットします。
set(data)
data引数にはアイテム群にセットする値を以下のいずれかの形式で与えます。
a. {カラム名: 値, ...} の形式のオブジェクト
b. 上記の形式のオブジェクトを要素とする配列
c. DataSetオブジェクト
以下に例を示します。この例では、table1というDBテーブルからIDカラムの値が1のレコードを読み込み、その結果に基づいてtable1がデータリンクに設定されたアイテム群に値をセットします。
const tableName = "table1" //対象のテーブル
const linker = new buddy.lib.DataLinker(buddy, tableName)
const data = await buddy.app.dbtable[tableName].select()
.where({ID: 1})
linker.set(data)
2.2.4.5.8.setDisabled()
TBD 閲覧・入力画面テンプレートを参照
2.2.4.5.9.update()
DataLinkerオブジェクトのupdateメソッドは、アイテム群から収集した値にもとづいてDBテーブルのレコードを更新します。
update()
以下に例を示します。この例では、table1というDBテーブルがデータリンクに設定されたアイテム群の値を集めて、table1のレコードを更新します。
const tableName = "table1" //対象のテーブル
const linker = new buddy.lib.DataLinker(buddy, tableName)
const result = await linker.update()
updateメソッドはDataSetオブジェクトを返します。詳しくは【buddy.lib.DataSet】を参照してください。
2.2.4.5.10.upload()
DataLinkerオブジェクトのuploadメソッドは、ファイル型カラムをデータリンクに設定したファイル選択モジュールがある場合に、選択されたファイルをアップロードしてそのURLをアイテムの値にセットします。
upload()
以下に例を示します。この例では、table1というDBテーブルがデータリンクに設定されたファイル選択モジュールについて、選択されたファイルをアップロードしてそのURLをアイテムの値にセットします。
const tableName = "table1" //対象のテーブル
const linker = new buddy.lib.DataLinker(buddy, tableName)
await linker.upload()
2.2.4.5.11.upsert()
DataLinkerオブジェクトのupsertメソッドは、アイテム群から収集した値にもとづいてDBテーブルに新しいレコードを挿入、または既存のレコードを更新します。
upsert()
以下に例を示します。この例では、table1というDBテーブルがデータリンクに設定されたアイテム群の値を集めて、table1に新しいレコードを追加、または既存のレコードを更新します。
const tableName = "table1" //対象のテーブル
const linker = new buddy.lib.DataLinker(buddy, tableName)
const result = await linker.upsert()
upsertメソッドはDataSetオブジェクトを返します。詳しくは【buddy.lib.DataSet】を参照してください。
2.2.4.5.12.validate()
DataLinkerオブジェクトのvalidateメソッドは、アイテム群から収集した値について、カラムのデータ型などと形式が合致しているか検査します。
validate(mode)
mode引数には検査方法を次のいずれかの文字列で与えます。
- "insert"
- レコードを挿入できるか検査する
- "update"
- レコードを更新できるか検査する
validateメソッドは、検査結果として問題が見つかったら、その内容を示す文字列を、問題がなければnullを返します。
2.2.4.5.13.where()
TBC 検索画面テンプレートを参照
2.2.4.6.DataSet
本項ではDataSetクラスについて説明します。
DataSetは、カラム名の配列と、各カラム名に対する値を格納したオブジェクト(レコード)の配列からなる複合的データを扱います。いわばDBテーブルのようなデータをメモリ上に保持する仕組みと言えます。
実際にDBテーブルやDBビューのselect()で得られるデータはDataSetオブジェクトであり、またinsert()やupdate()でDBテーブルに投入するデータもDataSetオブジェクトの形で与えることができます。
また、テーブルモジュールのdataプロパティにDataSetオブジェクトをセットして、カラム名をヘッダとした表としてデータを表示することができます。
DataSetは、以下で説明する様々なメソッドによって、一部分を取り出す、カラム名を変更する、他のDataSetと結合する、などの操作を施すことができます。
2.2.4.6.1.コンストラクタ
DataSetオブジェクトを作成するには、次のようにします。
const dataset = new buddy.lib.DataSet([
{name: "foo", amount: 100},
{name: "bar", amount: 200},
])
次のようにして、カラム名の順序や表示名を指定することもできます。
const dataset = new buddy.lib.DataSet({
fields: [
{name: "name", display: "名称"},
{name: "amount", display: "数量"},
],
rows: [
{name: "foo", amount: 100},
{name: "bar", amount: 200},
]
})
上記の例のdatasetをテーブルモジュールのdataプロパティにセットした場合、テーブルのヘッダにはdisplayで指定した表示名が使われます。
上記のようにしてコンストラクタでデータを与えてDataSetオブジェクトを作成することもできますが、データベースに格納されたデータの場合はDBテーブルやDBビューのselect()メソッドで読み出せばその結果はDataSetオブジェクトになっています。
2.2.4.6.2.average()
DataSetオブジェクトのaverage()メソッドは、指定されたカラムの値の全レコードにおける平均を返します。
カラムは配列で複数指定することもでき、その場合はそれぞれのカラムについての平均値の配列を返します。
const avg = dataset.average("amount")
const avgarray = dataset.average(["amount", "price"])
const amountavg = avgarray[0]
const priceavg = avgarray[1]
※別名として、avg()もaverage()と同じ機能です。
2.2.4.6.3.concat()
DataSetオブジェクトのconcat()メソッドは、レコードを追加します。
引数にはDataSetオブジェクトを与えるか、DataSetのコンストラクタで指定できるデータを与えるとDataSetオブジェクトに変換されて処理されます。引数に与えたDataSetオブジェクトの全レコードが、レコードに追加されます。
ただし、カラム情報は元のままになりますので、追加するDataSetオブジェクトはカラム構造が同じものにしなければなりません。
dataset.concat(dataset2)
2.2.4.6.4.convert()
DataSetオブジェクトのconvert()メソッドは、指定したカラムの各レコードでの値について、指定した関数によって処理した結果に置き換えます。
関数は元の値を引数として、新しい値を返すようにします。
例えば amount カラムの値を全レコードについて 1 加算するには次のようにします。
dataset.convert("amount", function(oldvalue){
return oldvalue + 1
})
※内容がコピーされて新たなDataSetオブジェクトが作られるものではなく、元のDataSetオブジェクトの内容が変化することに注意してください。
2.2.4.6.5.crossJoin()
DataSetオブジェクトのcrossJoin()メソッドは、別のDataSetオブジェクトを結合してできた新たなDataSetオブジェクトを返します。
結合の方法としては、全レコードのそれぞれに、指定した別DataSetの全レコードを結合します。カラムは両方をあわせたものになります。同名のカラムがあれば、そのカラムの値は指定した別DataSetの値になります。
結果のレコード数は、元のレコード数と指定した別DataSetのレコード数を掛け合わせたものになります。
const dataset3 = dataset.crossJoin(dataset2)
上記の例で、例えばdatasetのレコードが次の内容で、
[
{foo: 1, bar: 10},
{foo: 2, bar: 20},
]
dataset2のレコードが次の内容の場合、
[
{bar: 100, baz: 1000},
{bar: 200, baz: 2000},
]
dataset3のレコードは次の内容になります。
[
{foo: 1, bar: 100, baz: 1000},
{foo: 1, bar: 200, baz: 2000},
{foo: 2, bar: 100, baz: 1000},
{foo: 2, bar: 200, baz: 2000},
]
上述のように、同名のカラムがあると値が上書きされることになりますので、それでは困る場合は、あらかじめどちらかのDataSetについてrename()を用いてカラム名を変更しておくようにします。
2.2.4.6.6.filter()
DataSetオブジェクトのfilter()メソッドは、指定した条件を満たすレコードだけを抽出して新しいDataSetオブジェクトを作成して返します。
例えば、amountカラムの値が正のレコードのみを抽出するなら、次のようにします。
const dataset2 = dataset.filter(function(row){return row.amount > 0})
filter()メソッドの引数には、レコードオブジェクト(カラム名をプロパティとしてその値がセットされている)を引数として条件に合致するときに真を返す関数を指定します。
上記の例では、rowがレコードオブジェクトで、row.amount > 0 という式がamountカラムの値が正の場合に真となります。
2.2.4.6.7.length()
DataSetオブジェクトのlength()メソッドは、レコード数を返します。
2.2.4.6.8.lookup()
DataSetオブジェクトのlookup()メソッドは、指定した条件に合致した最初のレコードを返します。
条件は、レコードオブジェクトを引数として、条件に合致するかどうかを真偽値で返す関数を指定します。
条件に合致したレコードがない場合はundefinedを返します。
例えば、amountカラムの値が負の最初のレコードを得たい場合は、次のようにします。
const foundrecord = dataset.lookup(function(record){
return record.amount < 0
})
※条件に合致した全レコードを得たい場合は、find()メソッドを使用してください。
2.2.4.6.9.leftOuterJoin()
DataSetオブジェクトのleftOuterJoin()メソッドは、別のDataSetオブジェクトを結合してできた新たなDataSetオブジェクトを返します。
結合の方法としては、元の全レコードに対して、on()で指定したカラムの値が合致する別DataSetのレコードがあればそれを結合します。
カラムは両方のカラムをあわせたものになります。
結合の際に同名のカラムがあれば、そのカラムの値は別DataSetの値になります。
const dataset3 = dataset.leftOuterJoin(dataset2).on('foo', 'baz')
上の例ではdatasetのfooカラムの値と、dataset2のbazカラムの値が同じレコードを結合しています。該当するdataset2のレコードがない場合はdatasetの元のレコードがそのまま結果のレコードになります。
例えば、datasetのレコードが次の内容で、
[
{foo: 1, bar: 10},
{foo: 2, bar: 20},
]
dataset2のレコードが次の内容の場合、
[
{baz: 1, xyz: 100},
{baz: 1, xyz: 200},
{baz: 3, xyz: 300},
]
結果のdataset3のレコードは次の内容になります。
[
{foo: 1, bar: 10, baz: 1, xyz: 100},
{foo: 1, bar: 10, baz: 1, xyz: 200},
{foo: 2, bar: 20},
]
上述のように、同名のカラムがあると値が上書きされることになりますので、それでは困る場合は、あらかじめどちらかのDataSetについてrename()を用いてカラム名を変更しておくようにします。
2.2.4.6.10.remove()
DataSetオブジェクトのremove()メソッドは、指定のカラムを除いたそれ以外のカラムをコピーした新たなDataSetオブジェクトを作成して返します。
例えば、name,amount,memoの三つのカラムを持つDataSetオブジェクトdatasetがあったとして、次のようにするとamount以外のカラムをコピーしたDataSetオブジェクトdataset2を作ることができます。
const dataset2 = dataset.remove("amount")
2.2.4.6.11.rename()
DataSetオブジェクトのrename()メソッドは、カラム名を変更しながらコピーした新たなDataSetオブジェクトを作成して返します。
例えば、nameとamountのカラムを持つDataSetオブジェクトdatasetをコピーして、カラム名amountをvalueに変更したい場合、次のようにします。
const dataset2 = dataset.rename("amount", "value")
dataset2はnameとvalueのカラムを持つDataSetオブジェクトになります。
また引数に、元のカラム名を引数として変更後のカラム名を返す関数を指定することもできます。
const dataset2 = dataset.rename(function(old){
return "set1." + old
})
上の例は、すべてのカラム名の前に「set1.」と付けます。
2.2.4.6.12.sort()
DataSetオブジェクトのsort()メソッドは、レコードの並び順を変更します。
引数に、並び順を決める関数を指定します。並び順を決める関数は比較するレコードオブジェクトをa, b二つの引数として、aが先の場合は負、bが先の場合は正、同順の場合は0を返します。
例えば、amountカラムの値が大きいものを先にする並び順としたい場合は、次のようにします。
const dataset2 = dataset.sort(function(a, b){
return b.amount - a.amount
})
2.2.4.6.13.subset()
DataSetオブジェクトのsubset()メソッドは、指定したカラム名のカラムだけを抜き出した新たなDataSetオブジェクトを作成して返します。
例えば、name,amount,memoの三つのカラムを持つDataSetオブジェクトdatasetがあったとして、次のようにするとnameとamountをコピーしたDataSetオブジェクトdataset2を作ることができます。
const dataset2 = dataset.subset("name", "amount")
2.2.4.6.14.sum()
DataSetオブジェクトのsum()メソッドは、指定されたカラムの値の全レコードにおける合計を返します。
カラムは配列で複数指定することもでき、その場合はそれぞれのカラムについての合計値の配列を返します。
const sum = dataset.sum("amount")
const sumarray = dataset.average(["amount", "price"])
const amountsum = sumarray[0]
const pricesum = sumarray[1]
2.2.4.6.15.toList()
DataSetオブジェクトのtoList()メソッドは、プルダウンリストモジュールやリストモジュールのlistプロパティにセットできる形式のDataSetオブジェクトを得ます。
プルダウンリストやリストのlistプロパティにセットするデータは、{name: 表示文字列, value: 値} というオブジェクトの配列です。toList()では表示文字列と値として使うカラム名を指定して、この形式のデータがrowsプロパティの値としてセットされたDataSetオブジェクトを得ます。
const list = dataset.toList("ID", "name")
上記のように引数を文字列で与える場合、一つ目が値のカラム名、二つ目が表示文字列のカラム名です。表示文字列のカラム名を省略すると、値のカラムと同じになります。
const list = dataset.toList({name: "name", value: "ID"})
このようにnameとvalueのプロパティを持つオブジェクトで指定することもできます。
2.2.4.6.16.toNameValueList()
DataSetオブジェクトのtoNameValueList()メソッドは、プルダウンリストモジュールやリストモジュールのlistプロパティにセットできる形式の配列データを得ます。
プルダウンリストやリストのlistプロパティにセットするデータは、{name: 表示文字列, value: 値} というオブジェクトの配列です。toNameValueList()では表示文字列と値として使うカラム名を指定して、この形式のデータを得ます。
const list = dataset.toNameValueList("ID", "name")
上記のように引数を文字列で与える場合、一つ目が値のカラム名、二つ目が表示文字列のカラム名です。表示文字列のカラム名を省略すると、値のカラムと同じになります。
const list = dataset.toNameValueList({name: "name", value: "ID"})
このようにnameとvalueのプロパティを持つオブジェクトで指定することもできます。
2.2.4.7.DataStream
本項ではDataStreamクラスについて説明します。
DataStreamは、全体を一度に読み込むのではなく、指定のサイズずつ読み込む機能を提供します。
2.2.4.7.1.コンストラクタ
DataStreamオブジェクトは次のように作成します。
const table = buddyscreen.app.dbtable.table1
const stream = new buddy.lib.DataStream(table, {
size: 100
})
コンストラクタの第一引数はDBテーブルかDBビューのモデルオブジェクトです。第二引数はオプションで、次のものを指定します。
- limit
- 全体として何件のレコードを読み込むかを指定します。省略すると全レコード。
- offset
- 何件目のレコードから読み込むかを指定します。先頭が0です。省略すると先頭から。
- orderby
- レコードの並び順を決めるカラム名を指定します。
- size
- 何件ずつ読み込むかを指定します。省略すると100。
- where
- 読み込むレコードを限定する条件を指定します。
2.2.4.7.2.select()
DataStreamオブジェクトのselect()メソッドは、コンストラクタで指定されたsizeずつレコード群を読み込んでDataSetオブジェクトとして返します。
const result = await stream.select()
2.2.4.8.Dialog
本項ではDialogクラスについて説明します。
Dialogクラスは、様々なダイアログ表示の機能を提供します。
2.2.4.8.1.コンストラクタ
Dialogオブジェクトを作成するには次のようにします。
const dialog = new buddy.lib.Dialog({…})
引数のオブジェクトには必要に応じて次のオプションを指定します。
- width
- 横幅
- height
- 高さ
- size
- サイズを"small"、"medium"、"large"のいずれかで指定。横幅と高さは次になる。
small: 230x240
medium: 600x520
large: 960x740 - title
- ダイアログのタイトル
- modal
- モーダル表示するかしないかの真偽値。モーダル表示の場合はダイアログ内のボタンをクリックしない限り閉じません。モーダル表示でない場合は、ダイアログの外側をクリックしても閉じます。
- props
- ダイアログの内側へ渡すプロパティオブジェクト
- style
- ダイアログに適用するスタイルオブジェクト
- buttons
- ダイアログに表示するボタン群を次の名称の配列で指定(括弧内はボタンに表示される文字列)。ボタンをクリックするとダイアログが閉じて、結果オブジェクトのcodeプロパティにボタンの名称がセットされる。
no(いいえ)
cancel(キャンセル)
close(閉じる)
back(戻る)
ok(OK)
save(保存)
yes(はい)
forward(進む)
next(次へ) - button_order
- ボタンの順序指定("auto"、"custom"のいずれか)。autoの場合はBuddy内部で決まっている順序。customの場合はbuttonsで指定した順序。
2.2.4.8.2.close()
Dialogオブジェクトのclose()メソッドは、そのダイアログを閉じます。
message()などのメソッドを使ってダイアログを開くとき、awaitで閉じるのを待つ場合には、close()メソッドを使うことはありません。
次の例のように、awaitを使わずにダイアログを開き、タイマーで指定時間後に閉じるようにしたい場合に使用します。
const dialog = new buddy.lib.Dialog({title: "確認"})
dialog.message("保存しました") //awaitしない
setTimeout(function(){dialog.close();}, 3000) //3秒後に閉じる
2.2.4.8.3.confirm()
Dialogオブジェクトのconfirm()メソッドは、「OK」と「キャンセル」のボタンを持つダイアログで指定したメッセージを表示します。ボタンをクリックするとダイアログが閉じて、結果オブジェクトのcodeプロパティにクリックしたボタンに応じて「ok」「cancel」がセットされます。
confirm()メソッドはプロミスを返すので、ダイアログが閉じて結果が返されるのを待ちたい場合は、awaitを使用する必要があることに注意してください。
const dialog = new buddy.lib.Dialog({title: "確認"})
const result = await dialog.confirm("よろしいですか?")
if(result.code == "ok"){
// OKボタンをクリックしたときの処理
}
2.2.4.8.4.error()
Dialogオブジェクトのerror()メソッドは、「閉じる」ボタンを持つダイアログで指定したメッセージをエラーとして表示します。
error()メソッドはプロミスを返すので、ダイアログが閉じのを待ちたい場合は、awaitを使用する必要があることに注意してください。
const dialog = new buddy.lib.Dialog({title: "エラー"})
await dialog.error("処理できませんでした")
2.2.4.8.5.lightbox()
Dialogオブジェクトのlightbox()メソッドは、画像をダイアログで表示します。ダイアログ中の画像をクリックするとダウンロードする機能があります。
lightbox()メソッドはプロミスを返すので、ダイアログが閉じのを待ちたい場合は、awaitを使用する必要があることに注意してください。
const dialog = new buddy.lib.Dialog({title: "画像", props: {download: false}})
await dialog.lightbox("files/images/sample.png")
デフォルトでは画像をクリックするとダウンロードしますが、上記の例のように props: {download: false} を指定するとクリックしてもダウンロードしません。
2.2.4.8.6.message()
Dialogオブジェクトのmessage()メソッドは、「閉じる」ボタンを持つダイアログで指定したメッセージを表示します。
message()メソッドはプロミスを返すので、ダイアログが閉じのを待ちたい場合は、awaitを使用する必要があることに注意してください。
const dialog = new buddy.lib.Dialog({title: "確認"})
await dialog.message("処理しました")
buttonsで使用するボタンを指定することもできます。
const dialog = new buddy.lib.Dialog({title: "確認", buttons: ["yes", "no"], modal: true})
const result = await dialog.message("18歳以上ですか?")
if(result.code == "yes"){
//yesの場合の処理
}else{
//noの場合の処理
}
2.2.4.8.7.open()
Dialogオブジェクトのopen()メソッドは、ダイアログの中でスクリーンを開きます。そのスクリーンのスクリプトで、ダイアログを閉じて結果を返すことができます。
open()メソッドはプロミスを返すので、ダイアログが閉じて結果が返されるのを待ちたい場合は、awaitを使用する必要があることに注意してください。
例えば、編集用のスクリーンeditscreenを、{id: 1}を渡してダイアログで開き、閉じられたら編集結果を受け取るには次のようにします。
const dialog = new buddy.lib.Dialog({title: "編集", props: {id: 1}, size: "medium"})
const result = await dialog.open(buddy.app.screen.editscreen)
if(result.code == "ok"){
// result.value に入っている値による処理
}
以下はダイアログの中で開かれるスクリーンeditscreenの側のスクリプト例です。
次のようにしてreceiveイベントで指定されたidを受け取ることができます。また、ダイアログを閉じる関数closeも自動的に渡されるので、保持しておいて閉じるときに使います。
let id
let close
buddyscreen.on("receive", async(evt)=>{
close = evt.data.close
id = evt.data.id
// 指定されたidのデータを読み出すなどの処理
})
また、editscreenのボタンOKBUTTONをクリックされたらダイアログを閉じて結果を返すようにするには次のようにします。
buddyscreen.items.OKBUTTON.on('click', async(evt)=>{
// 結果データを変数に入れる
const value = …
// 閉じて結果を返す
close('ok', value)
})
2.2.4.8.8.wait()
Dialogオブジェクトのwait()メソッドは、何らかの時間のかかる処理をおこなう場合に、進行中を示すダイアログを表示してユーザーを待たせるために使用します。
このダイアログには「閉じる」などのボタンはありません。処理が終了したらclose()メソッドで閉じるように、スクリプトを書く必要があります。
const dialog = new buddy.lib.Dialog()
dialog.wait("処理中です…")
// ここで目的の処理をおこなう
…
// 処理が終了したらダイアログを閉じる
dialog.close()
wait()の引数の文字列がダイアログのタイトルとして表示されます。
2.2.4.9.download()
buddy.lib.download()関数は、指定のURLをブラウザ内で開くのではなく、ファイルとしてダウンロードします。
buddy.lib.download('files/images/sample.png', 'test.png')
第一引数にはURLを指定します。第二引数にはダウンロードして保存するときのファイル名を指定します。第二引数を省略すると、URLのファイル名部分のファイル名で保存されます。
上記の例では、第二引数にtest.pngを指定しているので、このファイル名で保存されます。指定しなければsample.pngとして保存されることになります。
2.2.4.10.filter
filterは数値、文字列、日付などの値を指定の形式表示に加工する機能を提供します。
buddy.lib.filter.getFilteredValue()を使用して以下のようにします。
例えば、変数valueの数値をカンマ区切りの文字列にしたいときは次のようにします。
const result = buddy.lib.filter.getFilteredValue('comma', value)
getFilteredValue()の第一引数には、フィルタ名またはフィルタ名の配列を指定し、第二引数には対象の値を指定します。
フィルタ名の配列を指定した場合は、配列の先頭から順に適用されて、最後の結果を返します。
例えば、カンマ区切りにして先頭に「¥」をつけたいときは次のようにします。
const result = buddy.lib.filter.getFilteredValue(['comma', 'yen'], value)
フィルタ名を指定しなければ、値がnullかundefinedの場合は空文字列に、そうでない場合は元の値のまま、となります。例えば次のようにします。
const result = buddy.lib.filter.getFilteredValue(null, value)
フィルタには標準では次のものが用意されています。
数値関係
- percent
- パーセント
- round
- 四捨五入
- floor
- 切り捨て
- ceil
- 切り上げ
- tentimes
- 10倍
- onetenth
- 10分の1
- yen
- 円
- comma
- カンマ区切り
- byte
- バイト
日付関係
- wareki
- 和暦の日付
- seireki
- 西暦の日付
文字列関係
- upper
- 大文字アルファベット
- lower
- 小文字アルファベット
- katakana
- ひらがなからカタカナ
- hiragana
- カタカナからひらがな
- zen2han
- 全角から半角英数字
- han2zen
- 半角から全角英数字
その他
- mask
- *でマスク
拡張フィルタプラグインをアプリに追加すると、以下のフィルタが利用できます。
日時関係(プラグイン)
- age
- 年齢。日付から年齢を得る
- age-d
- 年齢(日単位で計算)。誕生日前日に年を取る
- ymd
- 日付(yyyy/mm/dd)
- ymd-h
- 日付(yyyy-mm-dd)
- jymd-1
- 日付(yyyy年m月d日)
- jymd
- 日付(yyyy年mm月dd日)
- ymdhms-s
- 日時(yyyy/mm/dd hh:mm)
- ymdhms-h-s
- 日時(yyyy-mm-dd hh:mm)
- ymdhms
- 日時(yyyy/mm/dd hh:mm:ss)
- ymdhms-h
- 日時(yyyy-mm-dd hh:mm:ss)
- jymdhms-1-s
- 日時(yyyy年m月d日h時m分)
- jymdhms-1
- 日時(yyyy年m月d日h時m分s秒)
- jymdhms-s
- 日時(yyyy年mm月dd日hh時mm分)
- jymdhms
- 日時(yyyy年mm月dd日hh時mm分ss秒)
- hms-s
- 時刻(hh:mm)
- hms
- 時刻(hh:mm:ss)
- jhms-1-s
- 時刻(h時m分)
- jhms-1
- 時刻(h時m分s秒)
- jhms-s
- 時刻(hh時mm分)
- jhms
- 時刻(hh時mm分ss秒)
パス関係(プラグイン)
- pathdir
- ディレクトリ名部分
- pathbase
- ファイル名部分
- pathext
- 拡張子部分
- pathinfiles
- filesからの相対パス
その他(プラグイン)
- trim
- 先頭や末尾の空白文字を取り除く
- kyuu2shin
- 旧漢字を新漢字に置換
2.2.4.11.KeyValueStore
KeyValueStoreオブジェクトは、アプリに一つあらかじめ用意されているキーバリューストアデータベースへのアクセスを提供します。
キーバリューストアデータベースは、キーとなる文字列に対して値となる文字列を一つ格納できる、単純なデータベースです。
2.2.4.11.1.delete()
buddy.lib.KeyValueStore.delete()は、指定したキーを削除します。
delete()メソッドはプロミスを返すので、処理の終了を待ちたいときはawaitを使用します。
await buddy.lib.KeyValueStore.delete('test')
指定したキーが存在しないときはnot foundエラーが発生します。
2.2.4.11.2.get()
buddy.lib.KeyValueStore.get()は、指定したキーの値を得ます。
get()メソッドはプロミスを返すので、awaitを使用します。
const value = await buddy.lib.KeyValueStore.get('test')
指定したキーが存在しないときはnot foundエラーが発生します。
2.2.4.11.3.has()
buddy.lib.KeyValueStore.has()は、指定したキーが存在するかどうかの真偽値を得ます。
has()メソッドはプロミスを返すので、awaitを使用します。
const exists = await buddy.lib.KeyValueStore.has('test')
2.2.4.11.4.set()
buddy.lib.KeyValueStore.set()は、指定したキーに指定した値をセットします。
set()メソッドはプロミスを返すので、処理の終了を待つにはawaitを使用します。
await buddy.lib.KeyValueStore.set('test', 100)
2.2.4.12.Mail
本項ではMailクラスの説明をします。
Mailクラスはメールを送信する機能を提供します。
2.2.4.12.1.コンストラクタ
Mailオブジェクトは、メールの宛先、表題、内容などを指定して次のように作成します。
const mail = new buddy.lib.Mail({
"from": "", //送信元
"subject": "", //メールタイトル
"body": "", //送信する本文
"to": "", //送信先
"cc": "",
"bcc": "",
})
上記のようにして得られたmailオブジェクトを用いて、下記のattach()で添付ファイルを指定したり、send()で実際にメールを送信したりできます。
2.2.4.12.2.attach()
Mailオブジェクトのattach()メソッドは、メールの添付ファイルを追加します。
引数には、files内のファイルについてfilesからの相対パスで指定するか、あるいはファイル選択モジュールのアイテムを「buddyscreen.items.アイテム名」で指定します。後者の場合は送信の前にサーバーにアップロードされます。
引数は上記のいずれかの単独の値か、あるいは配列で複数の値を指定することも可能です。
mail.attach("images/sample.png")
mail.attach(buddyscreen.items.FILE1)
2.2.4.12.3.send()
Mailオブジェクトのsend()メソッドは、メールを実際に送信します。
指定された添付ファイルが存在しないとエラーが発生します。
mail.send()
2.2.4.13.Map
本項ではbuddy.lib.Mapオブジェクトについて説明します。
2.2.4.13.1.getAddress()
buddy.lib.Map.getAddress関数は、郵便番号に対応する住所を得ます。
const result = await buddy.lib.Map.getAddress("100-0001", {mode: "SIMPLE"})
// result[0].address が住所
一つ目の引数には郵便番号を指定します。ハイフンありでもなしでも構いません。
二つ目の引数はオプションオブジェクトで、上記のようにmodeを指定します。modeは次のいずれかです。
- SIMPLE
- 結果は次の要素のオブジェクトの配列となります。
zip: 郵便番号
address: 住所
kana: 住所のカナ表記 - FULL
- 結果は次の要素のオブジェクトの配列となります。(cityに対してcity_kanaがカナ表記など、_kanaのつく要素もありますが、下記では省略)
zip: 郵便番号
pref: 都道府県
city: 市
ward: 区
town: 町
結果は、複数該当する場合もあるので、配列になっていることに注意してください。
2.2.4.13.2.getCurrentPosition()
buddy.lib.Map.getCurrentPosition関数は現在地の緯度・経度を取得します。
buddy.lib.Map.getCurrentPosition()
buddy.lib.Map.getCurrentPosition関数は以下のプロパティから成るオブジェクトを返します。
- lat
- 緯度
- lng
- 経度
以下に例を示します。
const result = await buddy.lib.Map.getCurrentPosition()
//result.lat //緯度
//result.lng //経度
ブラウザに位置情報の取得を許可するかどうか聞かれますので「許可」を選択してください。
GPS搭載の端末では正確な値が返りますが、GPS非搭載の端末ではIPアドレスなどから求めた大雑把な値が返ります。
2.2.4.13.3.getLatLng()
buddy.lib.Map.getLatLng関数は住所から緯度・経度を求めます。
buddy.lib.Map.getLatLng(address)
address引数には住所を文字列で与えます。
const address = "" //住所(住所を特定する文字列または郵便番号)
const result = await buddy.lib.Map.getLatLng(address)
戻り値は {lat: 緯度, lng: 経度} の形式のオブジェクトのの配列です。該当する住所がなければ空の配列を返します。曖昧な住所を渡すと複数の座標データが返されます。
2.2.4.14.Markdown(プラグイン)
buddy.lib.Markdownは、markdownサポートプラグインをアプリに追加することによって利用できます。
markdownサポートプラグインは、markdown形式のテキストをHTML形式に変換する機能を提供するプラグインです。このプラグインを導入すると、以下の機能が追加されます。
- スクリーンスクリプトで利用できるbuddy.lib.Markdown.parse()関数が追加されます。
- スクリーン設計画面のコード挿入の「一般」グループに「markdownをHTMLに変換」が追加されます。
用例を以下に示します。
//markdownをHTMLに変換する
const markdown = "# markdown"
const html = buddy.lib.Markdown.parse(markdown)
//console.log("parse", html)
2.2.4.14.1.parse()
buddy.lib.Markdown.parse()関数はmarkdown形式のテキストをHTML形式に変換します。
buddy.lib.Markdown.parse(text)
text引数にはmarkdown形式のテキストを文字列で与えます。buddy.lib.Markdown.parse()関数はHTML形式のテキストを文字列で返します。
2.2.4.14.2.styles
buddy.lib.Markdown.stylesプロパティは長さ1の配列で、第1要素としてbuddy.lib.Markdown.parse()関数によって得られるHTML形式のテキストと共に利用できるCSS形式のスタイルシートが文字列で格納されています。このスタイルシートの利用例を以下に示します。
const markdown = "# markdown"
const html = buddy.lib.Markdown.parse(markdown)
const style = `<style>${buddy.lib.Markdown.styles[0]}</style>`
buddyscreen.items.IFRAME1.html = style + html
この例ではmarkdown形式からHTML形式に変換したテキストをbuddy.lib.Markdown.styles[0]
に格納されたCSSスタイルシートのテキストと連結してIFrameモジュールで表示します。
2.2.4.15.MSDOC(プラグイン)
buddy.lib.MSDOCは、Docxサポートプラグインをアプリに追加することによって利用できます。
2.2.4.15.1.コンストラクタ
MSDOCオブジェクトは、元となるWordファイルを指定して次のように作成します。
const doc = new buddy.lib.MSDOC(data)
data引数には以下のいずれかを与えます。
- Wordファイルを参照するURL文字列
- Wordファイルを表すFileオブジェクト(例:ファイル選択モジュールのfileプロパティ)
- Wordファイルの内容を表すArrayBufferオブジェクト
2.2.4.15.2.parse()
parseメソッドはページ内の文字データを取得します。
await doc.parse()
parseメソッドは以下のプロパティから成る結果オブジェクトを返します。
- text
- ページ内の文字データ
2.2.4.16.OCR(プラグイン)
buddy.lib.OCRは、OCRサポートプラグインをアプリに追加することによって利用できます。
2.2.4.16.1.recognize()
buddy.lib.OCR.recognize()関数は画像から文字を認識します。
const result = buddy.lib.OCR.recognize(src, options)
src引数には入力画像をURLまたはバイナリデータで与えます。options引数には以下のプロパティから成るオブジェクトを与えます。
- language
- 言語(デフォルト:"jpn")
- progress
- 進行状況を表示する(デフォルト:false)
buddy.lib.OCR.recognize()関数は文字の認識結果をオブジェクトで返します。結果オブジェクトをresultとすると、以下のプロパティに認識結果が渡されます。
- result.data.text
- 認識された文字
詳細は https://github.com/naptha/tesseract.js を参照してください。
2.2.4.17.Order
Orderクラスは、DBテーブルやDBビューからselect()でデータを読み出す際のorderby()で指定する並び順指定を保持し、指定のカラムを追加・順序変更・削除する機能を提供します。
2.2.4.17.1.コンストラクタ
Orderオブジェクトは次のように並び順を決めるカラム名を指定して作成します。
const order = new buddy.lib.Order('ID')
const order = new buddy.lib.Order(['group', 'age desc'])
上記のように、配列で指定することもできます。またカラム名のあとにスペースで区切って「desc」と付けると降順の指定となります。
上の例は、まずgroupの昇順として、groupが同じものはageの降順とする、という指定となります。
上記のようにして得られたorderは、モデルオブジェクトのselect()に付加するorderby()の引数として与えることができます。
2.2.4.17.2.shift()
Orderオブジェクトのshift()メソッドは、現在の並び順を元に、指定したカラムを追加・順序変更・削除します。
order.shift('age')
上記のようにすると、次の動作となります。
カラムageが現在の並び順にない場合は、並び順配列の末尾に追加されます。
カラムageが現在の並び順にあって、desc指定ではない場合は、ageにdesc指定が付加されます。
カラムageが現在の並び順にあって、desc指定がある場合は、ageが並び順から取り除かれます。
2.2.4.18.PDF(プラグイン)
buddy.lib.PDFは、PDF閲覧プラグインをアプリに追加することによって利用できます。
2.2.4.18.1.コンストラクタ
PDFオブジェクトは、元となるPDFファイルを指定して次のように作成します。
const pdf = new buddy.lib.PDF(src)
src引数には以下のいずれかを与えます。
- PDFファイルを参照するURL文字列
- PDFファイルを表すFileオブジェクト(例:ファイル選択モジュールのfileプロパティ)
- PDFファイルの内容を表すArrayBufferオブジェクト
- 別のbuddy.lib.PDFオブジェクト
上記のようにして得られたPDFオブジェクトを用いて、下記のparse()でファイル内容を読み取ったり、toImage()でページを画像に変換したりできます。
2.2.4.18.2.parse()
parseメソッドはページの内容をテキスト形式で取得します。
await pdf.parse()
parseメソッドは以下のプロパティから成る結果オブジェクトを返します。
- pdfInfo
- PDFファイルの情報を表すオブジェクト。主なプロパティは以下の通り
- pdfInfo.numPages: ページ数
- pages
- ページ毎のテキストの配列
2.2.4.18.3.toImage()
toImageメソッドはページの内容を画像に変換します。
await pdf.toImage(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- scale
- 倍率。デフォルト値は1
- page
- 画像化するページ(最初のページは1)。デフォルト値は1
- type
- 画像データの出力形式。"binary"(デフォルト)または"base64"
toImageメソッドは得られた画像データを返します。
2.2.4.19.QRCode(プラグイン)
2.2.4.19.1.make()
make関数は内容を指定してQRコードの画像を生成します。
await buddy.lib.QRCode.make(text)
text引数にはQRコード画像にする内容を文字列で与えます。make関数は以下のプロパティから成る結果オブジェクトを返します。
- height
- QRコード画像の高さ
- image
- QRコード画像を表示するimg要素
- url
- QRコード画像のデータURL
- width
- QRコード画像の幅
2.2.4.19.2.read()
read関数は画像からQRコードの内容を読み取ります。
await buddy.lib.QRCode.read(image)
image引数にはQRコード画像を表示するimg要素を与えます。read関数は読み取った内容を文字列で返します。
以下に用例を示します。
// 画像からQRコードの内容を読み取る
const image = new Image()
const text = await buddy.lib.QRCode.read( image )
// 読み取った内容をコンソールに表示する
console.log(text)
2.2.4.19.3.readFromCamera()
readFromCamera関数はQRコード読み取りダイアログを開きます。
await buddy.lib.QRCode.readFromCamera(options)
options引数には以下のプロパティから成るオブジェクトを渡します(省略可)。
- interval
- QRコード読み取り処理の間隔。単位はミリ秒。デフォルト値は100。
readFromCamera関数は以下のプロパティから成る結果オブジェクトを返します。
- code
- QRコード読み取りダイアログの戻り値。QRコードの読み取りが完了した場合は
read
、読み取りがキャンセルされた場合はcancel
が設定されます。 - value
- QRコードの読み取りが完了した場合(codeプロパティの値が
read
のとき)に読み取った内容が設定されます。
以下に用例を示します。
// QRコード読み取りダイアログを開く
const result = await buddy.lib.QRCode.readFromCamera()
// 読み取りが完了したら
if( result.code === "read" ){
// 読み取った内容をコンソールに表示する
console.log(result.value)
}
2.2.4.20.ReadLog(プラグイン)
buddy.lib.ReadLogモジュールは、既読プラグインをアプリに追加することにより利用できます。
2.2.4.20.1.delete()
delete関数は既読ログを削除します。
await buddy.lib.ReadLog.delete(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- logGroup
- ログのグループ分け。
$query
以下に例を示します。
// 既読ログを削除する
await buddy.lib.ReadLog.delete({
logGroup: "$query", //ログのグループ分け。
})
2.2.4.20.2.open()
open関数は既読ログダイアログを開きます。
await buddy.lib.ReadLog.open(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- logGroup
- ログのグループ分け。
$query
- title
- 既読ログダイアログのタイトル(省略可)。デフォルト値は "既読ログ"
以下に例を示します。
// 既読ログダイアログを開く
const data = await buddy.lib.ReadLog.open({
logGroup: "$query", //ログのグループ分け
})
console.log(data)
2.2.4.20.3.read()
read関数は既読ログを読み込みます。
await buddy.lib.ReadLog.read(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- logGroup
- ログのグループ分け。
$query
以下に例を示します。
// 既読ログを読む
const data = await buddy.lib.ReadLog.read({
logGroup: "$query", //ログのグループ分け。
})
console.log(data)
2.2.4.20.4.write()
write関数は既読ログを書き込みます。
await buddy.lib.ReadLog.write(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- logType
- 同じユーザーが複数回開いたときの処理方法を文字列で指定する。
first
なら最初のみ記録、last
なら最後のみ記録、all
ならすべて記録する。 - logGroup
- ログのグループを文字列で指定する。
【FIXME】$query
を指定した場合は、TBD
以下に例を示します。
// 既読ログを書く
await buddy.lib.ReadLog.write({
logType: "first", // 最初のみ記録
logGroup: "$query", // ロググループ
})
2.2.4.21.SearchDialog
SearchDialogクラスは、指定のDBテーブルやDBビューを対象とした汎用の検索条件設定ダイアログを提供します。
2.2.4.21.1.コンストラクタ
SearchDialogオブジェクトは、検索対象のDBテーブル名あるいはDBビュー名を指定して、次のように作成します。
const dialog = new buddy.lib.SearchDialog("table1")
2.2.4.21.2.open()
SearchDialogオブジェクトのopen()メソッドは、検索条件設定ダイアログを開きます。
ダイアログの「検索」ボタンをクリックして閉じた場合、SearchDialogオブジェクトのwhereプロパティに設定した検索条件のオブジェクトがセットされています。そのオブジェクトは、対象のDBテーブル/DBビューに対するselect()の際にwhere()の引数として使うことができます。
await dialog.open()
// dialog.where に検索条件が入っている
2.2.4.22.ShortMessage
ShortMessageクラスは、他のユーザーに対してメッセージを送信する機能を提供します。
相手がオフラインのときはメールで送信する機能があります。
2.2.4.22.1.コンストラクタ
ShortMessageオブジェクトは、次のように宛先、表題、本文を指定して作成します。
const message = new buddy.lib.ShortMessage({
to: ":ALL", // 宛先
title: "お知らせ", //表題
body: "…", //本文
})
宛先は、ユーザーID(カンマ区切りで複数指定可)、:ALL(全ユーザー)、:ONLINE(全オンラインユーザー)、:GROUP(グループ名)(指定のグループのユーザー)のいずれかを指定します。
ユーザーIDに、ユーザー管理を分離したアプリのユーザーを指定する場合は、アプリ名:ユーザーID とします。
2.2.4.22.2.send()
ShortMessageオブジェクトのsend()メソッドは、実際にメッセージを送信します。
オプションとして、相手がオフラインの場合にメールで送信するかどうかを指定できます。
const result = await message.send({
offlineUser: "sendmail"
})
上記のように、offlineUser: "sendmail" を指定すると、相手がオフラインの場合にメールで送信します。
resultは各宛先への送信結果の配列で、送信結果は次のいずれかになります。
- オンラインで送信すると「ユーザーID:socket」
- メールで送信すると「ユーザーID:mailto:メールアドレス」
- メール送信に失敗すると「ユーザーID:sendmail error:エラー内容」
- 相手がオフラインで送信しなかった場合は「ユーザーID:noop」
2.2.4.23.Superagent
buddy.lib.SuperagentモジュールはHTTPクライアントを簡便に作成するためのAPIを提供するモジュールです。本節ではsuperagentモジュールの主なAPI関数について説明します。superagentモジュールの網羅的なドキュメントは下記URLで提供されています。
https://ladjs.github.io/superagent/
たとえばGETメソッドでリソースURL /search の内容を得るには以下のようにします。
buddy.lib.Superagent
.get('/search')
.end(function(err, res){
if (err || !res.ok) {
alert('エラー');
} else {
alert('結果:' + JSON.stringify(res.body));
}
});
2.2.4.23.1.end()
end関数はリクエストを送信します。引数にはレスポンスを処理するコールバック関数を与えます。次の例ではGETリクエストをend関数で送信して、引数に与えたコールバック関数でレスポンスを受け取ります。
buddy.lib.Superagent
.get('/search')
.end(function(err, res){
// ここにレスポンスの処理を記述する
});
2.2.4.23.2.get()
get関数はGETリクエストの作成を開始します。引数にはリソースURLを文字列で与えます。次の例ではget関数でリソースURL /search へのGETリクエストの作成を開始しています。
buddy.lib.Superagent
.get('/search')
.end(callback);
2.2.4.23.3.head()
head関数はHEADリクエストの作成を開始します。引数にはリソースURLを文字列で与えます。次の例ではhead関数でリソースURL /favicon.ico へのHEADリクエストの作成を開始しています。
buddy.lib.Superagent
.head('/favicon.ico')
.end(callback);
2.2.4.23.4.post()
post関数はPOSTリクエストの作成を開始します。引数にはリソースURLを文字列で与えます。次の例ではpost関数でリソースURL /user/add へのPOSTリクエストの作成を開始しています。
buddy.lib.Superagent
.post('/user/add')
.send({ name: 'john', age: 20 })
.end(callback);
2.2.4.23.5.query()
query関数はリクエストのURLにクエリを追加します。引数にはクエリをオブジェクトまたは文字列で与えます。次の例ではGETリクエストのURLにクエリを追加して /search?q=test&order=desc にします。
buddy.lib.Superagent
.get('/search')
.query({'q': 'test', 'order', 'desc'})
.end(callback);
query関数は複数回に分けて呼び出すこともできます。
buddy.lib.Superagent
.get('/search')
.query({'q': 'test'})
.query({'order', 'desc'})
.end(callback);
クエリは文字列でも指定できます。
buddy.lib.Superagent
.get('/search')
.query('q=test&order=desc')
.end(callback);
文字列の場合も複数に分けて与えることができます。
buddy.lib.Superagent
.get('/search')
.query('q=test')
.query('order=desc')
.end(callback);
2.2.4.23.6.send()
send関数は作成中のリクエストにデータを追加します。次の例ではsend関数でPOSTリクエストにデータを追加しています。
buddy.lib.Superagent
.post('/user/add')
.send({ name: 'john', age: 20 })
.end(callback);
send関数は複数回に分けて呼び出すこともできます。
buddy.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関数を用います。次の例は上述の最初の例と同等です。
buddy.lib.Superagent
.post('/user/add')
.set('Content-Type', 'application/json')
.send({ name: 'john', age: 20 })
.end(callback);
2.2.4.23.7.set()
set関数は作成中のリクエストにヘッダフィールドを追加します。次の例ではGETリクエストに Accept: application/json というヘッダフィールドを追加します。
buddy.lib.Superagent
.get('/search')
.set('Accept', 'application/json')
.end(callback);
2.2.4.24.TableHistory(プラグイン)
buddy.lib.TableHistoryは、履歴操作ダイアログプラグインをアプリに追加することによって利用できます。
2.2.4.24.1.open()
open関数は履歴操作ダイアログを開きます。
await buddy.lib.TableHistory.open(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- table
- 履歴操作ダイアログの処理対象となるテーブル(buddy.app.dbtable 配列の要素)
- restore
- 復元ボタンを使用する場合は true に設定する。restoreプロパティを省略またはtrue以外の値を設定すると復元ボタンを表示しない
以下に例を示します。
//履歴操作ダイアログを開く
const table = "table1" //テーブル名
await buddy.lib.TableHistory.open({
table: buddy.app.dbtable[table]
})
2.2.4.25.XML(プラグイン)
buddy.lib.XML は、XMLサポートプラグインをアプリに追加することによって利用できます。
2.2.4.25.1.parse()
XML形式のテキストを読み取ります。
const xmltext = await buddyscreen.items.FILE1.readAsText({})
const data = await buddy.lib.XML.parse(xmltext)
awaitが必要なことに注意してください。
結果は入れ子のオブジェクトや配列になります。
2.3.buddyscreenオブジェクト
buddyscreenオブジェクトはスクリーン設計で定義する個々のスクリーン自身を表すオブジェクトです。buddyscreenオブジェクトはスクリーンプログラム内であらかじめ定義されています。buddyscreenオブジェクトの主な構成要素は次の通りです。
-
buddyscreen.dialog
各種ダイアログを表示するための関数を格納するモジュール。 -
buddyscreen.items
スクリーン内に配置されたスクリーンアイテム群を格納するオブジェクト。 -
buddyscreen.on
イベントハンドラを定義する関数。 -
buddyscreen.query
URLパラメータを格納するオブジェクト。 -
buddyscreen.radioGroup
ラジオグループ名でまとめられたラジオボタンオブジェクト。 -
スクリーンをダイアログとして表示するときに用いる関数およびプロパティ。
2.3.1.イベント
本項ではスクリーンに関して発生するイベントについて説明します。
2.3.1.1.load
loadイベントはスクリーンが表示されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.on('load', async(evt)=>{
// イベントハンドラの処理内容
})
2.3.1.2.receive
receiveイベントは、スクリーンが表示されたときに、loadイベントに続いて発生します。また、スクリーンコンテナ内のスクリーンではスクリーンコンテナからデータが送られてきたときにも発生します。イベントハンドラで、URLのクエリ、ダイアログのパラメータ、スクリーンコンテナからの送信データ、を受け取ることができます。
イベントハンドラは次のように定義します。
buddyscreen.on('receive', async(evt)=>{
// イベントハンドラの処理内容
})
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティにデータが渡されます。
- evt.container_index
- スクリーンコンテナ内の場合、スクリーンコンテナの番号(最初のスクリーンコンテナが0)
- evt.data
- 独立したスクリーンの場合はURLに「?id=1」のように付加されたクエリの内容({id: 1}のような)。ダイアログとして開かれたスクリーンの場合は、開くときに指定されたオプションパラメータ。スクリーンコンテナ内の場合はスクリーンコンテナから送られてきたデータ。
2.3.1.3.unload
unloadイベントはスクリーンが閉じられるときに生じます。イベントハンドラは次のように定義します。
buddyscreen.on('unload', async(evt)=>{
// イベントハンドラの処理内容
})
2.3.2.関数
本項ではbuddyscreenオブジェクトに含まれる関数について説明します。
2.3.2.1.close()
buddyscreen.close関数は、スクリーンがダイアログとして開かれているときにそのダイアログを閉じます。
buddyscreen.close(code, value)
code引数にはダイアログを開いたプログラムに対して返されるコード値を与えます。value引数にはダイアログを開いたプログラムに対して返される任意のデータを与えます。
2.3.2.2.isDialog()
buddyscreen.isDialog関数はスクリーンがダイアログとして開かれているときにtrueを返します。
buddyscreen.isDialog()
2.3.2.3.on()
buddyscreen.on関数はスクリーンに関して発生するイベントの処理方法(イベントハンドラ)を定義します。
buddyscreen.on(name, func)
name引数にはイベント名を文字列で与えます。func引数にはイベントが発生したときに呼ばれる関数を与えます。
2.3.2.4.send()
buddyscreen.send関数は、スクリーンコンテナ内に埋め込まれたスクリーンから外のスクリーンにデータを送ります。
buddyscreen.send(data)
data引数には外のスクリーンに送るデータを与えます。例えばSCREENCONTAINER1というスクリーンコンテナの内側のスクリーンから外側のスクリーンにデータを送るには次のようにします。
//内側のスクリーンで
buddyscreen.send({value: 1})
//外側のスクリーンで
buddyscreen.items.SCREENCONTAINER1.on("receive", async(evt)=>{
// evt.data.value が受け取ったデータ
// evt.container_index で何番目のスクリーンかがわかる
})
2.3.2.5.transitionTo()
buddyscreen.transitionTo関数は別のスクリーンに移動します。この関数がスクリーンコンテナの内側のスクリーン内で実行された場合はスクリーンコンテナ内のスクリーンを切り替えます。
buddyscreen.transitionTo(screen, query)
screen引数には遷移先のスクリーン名またはスクリーンオブジェクトを与えます。query引数にはURLクエリを { 名前: 値, ... } の形式のオブジェクトで与えます。クエリはURLに ?名前=値&… という形で付加されます。query引数は省略できます。
2.3.3.プロパティ
本項ではbuddyscreenオブジェクトに含まれるプロパティについて説明します。
2.3.3.1.anyItem
buddyscreen.anyItemプロパティは、すべてのスクリーンアイテムに対して一括でイベントハンドラを定義するために用います。
例えばchangeイベントに対するイベントハンドラをすべてのスクリーンアイテムについて定義するには次のように記述します。
buddyscreen.anyItem.on("change", async (evt)=>{
// changeイベントの処理内容
})
2.3.3.2.dialog
本項ではbuddyscreen.dialogモジュールについて説明します。本モジュールには各種ダイアログを開くための関数が含まれます。
2.3.3.2.1.confirm
buddyscreen.dialog.message関数は確認メッセージを表示するためのダイアログを開きます。
buddyscreen.dialog.confirm(text)
text引数には表示する確認メッセージを文字列で与えます。
2.3.3.2.2.date
buddyscreen.dialog.message関数は日時選択ダイアログを開きます。
buddyscreen.dialog.date(param)
param引数には日時選択ダイアログに渡すパラメータを { 名前: 値, ... } の形式のオブジェクトで与えます(省略可)。
2.3.3.2.3.error
buddyscreen.dialog.message関数はエラーメッセージを表示するためのダイアログを開きます。
buddyscreen.dialog.error(text)
text引数には表示するエラーメッセージを文字列で与えます。
2.3.3.2.4.file
buddyscreen.dialog.message関数はファイル選択ダイアログを開きます。
buddyscreen.dialog.file(param)
param引数にはファイル選択ダイアログに渡すパラメータを { 名前: 値, ... } の形式のオブジェクトで与えます(省略可)。
2.3.3.2.5.lightbox
2.3.3.2.6.message
buddyscreen.dialog.message関数はメッセージを表示するためのダイアログを開きます。
buddyscreen.dialog.message(text)
text引数には表示するメッセージを文字列で与えます。
2.3.3.2.7.wait
2.3.3.3.items
buddyscreen.itemsプロパティは、そのスクリーンを構成するボタンやテキストボックスなどの要素(スクリーンアイテム)へのアクセスを提供するオブジェクトです。たとえば、BUTTON1という名前のボタンは次のように参照できます。
buddyscreen.items.BUTTON1
スクリーンアイテムには関数、プロパティ、イベントが定義されています。たとえばボタンモジュールにはラベルとして表示される値を取得または変更するvalueプロパティが設けられています。このプロパティは次のように参照できます。
buddyscreen.items.BUTTON1.value = "文字列";
2.3.3.4.query
queryプロパティは、独立したスクリーンの場合はURLのクエリの内容が格納されているオブジェクトです。例えば「?id=1」というクエリであれば、{id: 1}となります。
ダイアログとして開かれたスクリーンの場合は、開くときに指定されたオプションパラメータの内容です。
スクリーンコンテナ内のスクリーンでは、空オブジェクトとなります。
2.3.3.5.radioGroup
buddyscreen.radioGroupプロパティは、同じradioname属性をもつラジオボタン群について、現在選択されているラジオボタンのアイテム名やキャプション(caption)を得るためのメソッドを提供するオブジェクトです。詳しくは【ラジオボタン群の操作】の節を参照してください。
2.4.スクリーンモジュール
スクリーンモジュールは、スクリーンを構成する部品を表すオブジェクトです。スクリーンモジュールには、大きく4つの用途別に以下のものがあります。
- レイアウト用モジュール
【横配置ボックス】
【縦配置ボックス】
【自由配置ボックス】
【水平区切り線】
【垂直区切り線】 - データ入力用モジュール
【ボタン】
【データインプット】
【テキストボックス】
【チェックボックス】
【ラジオボタン】
【プルダウンリスト】
【コンボボックス】
【トグルスイッチ】
【スライダー】
【日時選択】
【色選択】
【DBレコードセレクタ】
【タブ】
【メニュー】
【ファイル選択】 - データ表示用モジュール
【画像】
【文字列】
【数式】
【リスト】
【箇条書き】
【テーブル】
【DBテーブル】
【スピン】
【プログレスバー】
【カレンダー】
【タイムテーブル】
【クロス集計設定】
【クロス集計表】
【地図】
【グラフ】
【キャンバス】 - 埋め込み用モジュール
【スクリーンコンテナ】
【IFrame】 - モジュール名をクリックするとそのスクリーンモジュールの節にジャンプします。
2.4.1.全モジュールの共通機能
本項ではすべてのスクリーンモジュールに共通する機能について説明します。
2.4.1.1.style
styleプロパティは、スクリーンモジュールのスタイル設定を参照したり値を変更したりするのに用います。以下に例を示します。
// フォントの大きさを8にする
buddyscreen.items.LABEL1.style.fontSize = 8
// 枠線を幅1pxの緑色の実線にする
buddyscreen.items.LABEL2.style.border = "1px solid green"
// 文字色を赤色にする
buddyscreen.items.LABEL3.style.color = "red"
// 背景色を黄色にする
buddyscreen.items.LABEL4.style.backgroundColor = "yellow"
2.4.2.横配置ボックス
横配置ボックスモジュールは、入れ子になった他のスクリーンモジュール(子モジュール)を横に並べて画面上に配置するレイアウト用のモジュールです。子モジュールは横1列分の幅の合計が横配置ボックスモジュールの幅を超えないように折り返して配置されます。
2.4.2.1.アクション
2.4.2.1.1.append
appendアクションは、繰り返しを一回追加します。追加位置(先頭が0、省略すると0)を指定できます。
append(0)
2.4.2.1.2.delete
deleteアクションは、繰り返しの一回を削除します。削除する位置(先頭が0)を指定します。
delete(1)
2.4.2.2.プロパティ
2.4.2.2.1.repeat
repeatプロパティには横配置ボックスの要素を繰り返し表示する回数を数値で与えます。以下に例を示します。
buddyscreen.items.HORIZONTAL1.repeat = 1
上の例ではモジュール名で指定した横配置ボックスの要素の繰り返し表示回数を1に設定します。
※設計画面でのアイテム属性「繰返し回数」と対応します。
2.4.2.2.2.repeatControl
repeatControlプロパティは、繰り返し回数を増減する+-のボタンをマウスオーバーで表示するかどうかを、真偽値で指定します。
buddyscreen.items.HORIZONTAL1.repeatControl = true
※設計画面でのアイテム属性「繰返し調整ボタン」と対応します。
2.4.2.2.3.detailTable
detailTableプロパティは、このボックスを明細テーブル内容の繰り返し表示に使用する場合に、その明細テーブル名を指定します。
buddyscreen.items.HORIZONTAL1.detailTable = "meisai"
※設計画面でのアイテム属性「明細テーブル」と対応します。
2.4.2.3.イベント
本項では横配置ボックスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.2.3.1.click
clickイベントはモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.2.3.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.2.3.3.doubleclick
doubleclickイベントはモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.2.3.4.mousedown
mousedownイベントはモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.2.3.5.mouseup
mouseupイベントはモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.3.縦配置ボックス
縦配置ボックスモジュールは、入れ子になった他のスクリーンモジュール(子モジュール)を縦に並べて画面上に配置するレイアウト用のモジュールです。前項の横配置ボックスモジュールとは異なり、子モジュールの高さの合計が縦配置ボックスモジュールの高さを超えても折り返しはされません。
2.4.3.1.アクション
2.4.3.1.1.append
appendアクションは、繰り返しを一回追加します。追加位置(先頭が0、省略すると0)を指定できます。
append(0)
2.4.3.1.2.delete
deleteアクションは、繰り返しの一回を削除します。削除する位置(先頭が0)を指定します。
delete(1)
2.4.3.2.プロパティ
2.4.3.2.1.repeat
repeatプロパティには縦配置ボックスの要素を繰り返し表示する回数を数値で与えます。以下に例を示します。
buddyscreen.items.VERTICAL1.repeat = 1
上の例ではモジュール名で指定した縦配置ボックスの要素の繰り返し表示回数を1に設定します。
2.4.3.2.2.repeatControl
repeatControlプロパティは、繰り返し回数を増減する+-のボタンをマウスオーバーで表示するかどうかを、真偽値で指定します。
buddyscreen.items.HORIZONTAL1.repeatControl = true
※設計画面でのアイテム属性「繰返し調整ボタン」と対応します。
2.4.3.2.3.detailTable
detailTableプロパティは、このボックスを明細テーブル内容の繰り返し表示に使用する場合に、その明細テーブル名を指定します。
buddyscreen.items.HORIZONTAL1.detailTable = "meisai"
※設計画面でのアイテム属性「明細テーブル」と対応します。
2.4.3.3.イベント
本項では縦配置ボックスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.3.3.1.click
clickイベントはモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.3.3.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.3.3.3.doubleclick
doubleclickイベントはモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.3.3.4.mousedown
mousedownイベントはモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.3.3.5.mouseup
mouseupイベントはモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.4.水平区切り線(プラグイン)
区切り線モジュールは、画面を区切る横線を引くレイアウト用のモジュールです。
2.4.4.1.イベント
本項では区切り線モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.4.1.1.click
clickイベントは区切り線がクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.4.1.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.4.1.3.doubleclick
doubleclickイベントは区切り線がダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.4.1.4.mousedown
mousedownイベントは区切り線の上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.4.1.5.mouseup
mouseupイベントは区切り線の上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.5.ボタン
ボタンモジュールは、画面上にボタンを設けるモジュールです。
2.4.5.1.プロパティ
2.4.5.1.1.disabled
disabledプロパティは、ボタンを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.BUTTON1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応します。
2.4.5.1.2.value
valueプロパティは、ボタンに表示する文字列を変更したり現在の値を参照したりするのに用います。
buddyscreen.items.BUTTON1.value = "文字列"
valueプロパティの値には文字列を与えます。
※設計画面でのアイテム属性「値」と対応します。
2.4.5.1.3.tip
tipプロパティは、このボタンにマウスオーバーしたときに表示されるツールチップ表示の内容を指定します。
buddyscreen.items.BUTTON1.tip = "文字列"
※設計画面でのアイテム属性「チップ」と対応します。
2.4.5.2.イベント
本項ではボタンモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.5.2.1.click
clickイベントはモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.5.2.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.5.2.3.doubleclick
doubleclickイベントはモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.5.2.4.mousedown
mousedownイベントはモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.5.2.5.mouseup
mouseupイベントはモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.6.テキストボックス
テキストボックスモジュールは、画面上に文字列の入力欄を設けるモジュールです。
2.4.6.1.プロパティ
2.4.6.1.1.calculate
calculateプロパティは、このテキストボックスの値を自動計算して表示する指示を含んでいます。設計画面でのアイテム属性「自動計算」での設定があればその内容を表すオブジェクトがセットされています。
スクリーンスクリプトで自動計算の内容を指定するには、calculateプロパティに関数を与えます。以下に例を示します。
buddyscreen.items.TEXTBOX3.calculate = (util)=>{
// TEXTBOX1とTEXTBOX2の値を足す
return util.sum("TEXTBOX1", "TEXTBOX2")
}
buddyscreen.items.TEXTBOX4.calculate = (util)=>{
// TEXTBOX1の値を整数に変換して1.1を掛け、
// 小数点以下を切り捨てる
return Math.floor( util.int("TEXTBOX1") * 1.1)
}
calculateプロパティに与えた関数の引数には、自動計算の内容を記述するためのヘルパー関数を集めたutilモジュールが渡されます。詳しくは【utilモジュール】を参照してください。
calculateプロパティに与えた関数は、値を返さなければなりません。この戻り値がテキストボックスの値になります。
calculateプロパティに与えた関数が他のスクリーンモジュールの値を参照している場合、それらのスクリーンモジュールの値が変更されたら自動的にcalculateプロパティに与えた関数が実行されてテキストボックスの値が更新されます。
calculateプロパティに与える関数では非同期処理は使えないことに注意してください。
2.4.6.1.2.dataLink
dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。
2.4.6.1.3.disabled
disabledプロパティは、テキストボックスを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.TEXTBOX1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応しています。
2.4.6.1.4.filter
filterプロパティは、テキストボックスの値の表示前に適用されるフィルターを設定するのに用います。以下に例を示します。
buddyscreen.items.TEXTBOX1.filter = "COMMA"
フィルターの詳細については【フィルターAPI】を参照してください。
※設計画面でのアイテム属性「フィルター」と対応しています。
2.4.6.1.5.placeholder
placeholderプロパティは、テキストボックスに値が設定されていないときに表示する文字列を指定します。以下に例を示します。
buddyscreen.items.TEXTBOX1.placeholder = "値を入力してください"
※設計画面でのアイテム属性「プレースホルダ」と対応しています。
2.4.6.1.6.readOnly
readOnlyプロパティは、テキストボックスを読み取り専用に設定します。以下に例を示します。
buddyscreen.items.TEXTBOX1.readOnly = true
readOnlyプロパティの値には真偽値を与えます。値が真のときは読み取り専用になり、それ以外のときは解除されます。
※設計画面でのアイテム属性「読み取り専用」と対応しています。
2.4.6.1.7.value
valueプロパティは、テキストボックスに表示する文字列を変更したり現在の値を取得したりするのに用います。
buddyscreen.items.TEXTBOX1.value = ""
※設計画面でのアイテム属性「値」と対応しています。
2.4.6.2.イベント
本項ではテキストボックスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.6.2.1.blur
blurイベントはテキストボックスから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.6.2.2.change
changeイベントはテキストボックスの値が変化したときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
2.4.6.2.3.click
clickイベントはテキストボックスがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.6.2.4.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.6.2.5.doubleclick
doubleclickイベントはテキストボックスがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.6.2.6.focus
focusイベントはテキストボックスに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.6.2.7.keydown
keydownイベントはテキストボックス上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.6.2.8.keypress
keypressイベントはテキストボックス上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.6.2.9.keyup
keyupイベントはテキストボックス上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.6.2.10.mousedown
mousedownイベントはテキストボックス上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.6.2.11.mouseup
mouseupイベントはテキストボックス上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.7.チェックボックス
チェックボックスモジュールは、画面上に真偽値(オン・オフ)の入力欄を設けるモジュールです。
2.4.7.1.プロパティ
本項ではチェックボックスモジュールのプロパティについて説明します。
2.4.7.1.1.checked
checkedプロパティは、チェックボックスの状態(チェックが入っているか否か)を変更したり現在の値を取得したりするのに用います。
buddyscreen.items.CHECKBOX1.checked = true
value引数には設定する値(trueまたはfalse)を与えます。チェックボックスの値を変更すると後述の【change】イベントが発生します。
2.4.7.1.2.dataLink
dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。
2.4.7.1.3.disabled
disabledプロパティは、チェックボックスを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.CHECKBOX1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応しています。
2.4.7.1.4.value
valueプロパティは、チェックボックスのラベル文字列(キャプション)を変更したり現在の値を取得したりするのに用います。以下に例を示します。
buddyscreen.items.CHECKBOX1.value = "文字列"
※設計画面でのアイテム属性「値」と対応しています。
2.4.7.2.イベント
本項ではチェックボックスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.7.2.1.blur
blurイベントはチェックボックスから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.7.2.2.change
changeイベントはチェックボックスの値が変化したときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.checked
- 変化後の値
2.4.7.2.3.click
clickイベントはチェックボックスがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.7.2.4.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.7.2.5.doubleclick
doubleclickイベントはチェックボックスがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.7.2.6.focus
focusイベントはチェックボックスに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.7.2.7.mousedown
mousedownイベントはチェックボックス上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.7.2.8.mouseup
mouseupイベントはチェックボックス上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.8.ラジオボタン
ラジオボタンモジュールは、画面上にラジオボタンを設けるモジュールです。複数のラジオボタンに同じradioname属性(ラジオボタン名)を付けて1つのグループにします。同じグループ内のラジオボタンは1つだけが選択された状態(オン)になり残りは選択されていない状態(オフ)になります。グループ単位のラジオボタンの操作については【ラジオボタン群の操作】の節を参照してください。
2.4.8.1.プロパティ
本項ではラジオボタンモジュールのプロパティについて説明します。
2.4.8.1.1.checked
checkedプロパティは、ラジオボタンの状態(チェックが入っているか否か)を変更したり現在の値を取得したりするのに用います。
buddyscreen.items.RADIO1.checked = true
value引数には設定する値(trueまたはfalse)を与えます。チェックボックスの値を変更すると後述の【change】イベントが発生します。
2.4.8.1.2.dataLink
dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。
2.4.8.1.3.disabled
disabledプロパティは、ラジオボタンを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.RADIO1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応しています。
2.4.8.1.4.value
valueプロパティは、ラジオボタンのラベル文字列(キャプション)を変更したり現在の値を取得したりするのに用います。以下に例を示します。
buddyscreen.items.RADIO1.value = "文字列"
※設計画面でのアイテム属性「値」と対応しています。
2.4.8.2.イベント
本項ではラジオボタンモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.8.2.1.blur
blurイベントはラジオボタンから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.8.2.2.change
changeイベントはラジオボタンの値が変化したときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
2.4.8.2.3.click
clickイベントはラジオボタンがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.8.2.4.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.8.2.5.doubleclick
doubleclickイベントはラジオボタンがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.8.2.6.focus
focusイベントはラジオボタンに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.8.2.7.mousedown
mousedownイベントはラジオボタン上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.8.2.8.mouseup
mouseupイベントはラジオボタン上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.8.3.ラジオボタン群の操作
ラジオボタンは複数のラジオボタンを組み合わせて、そのうちのどれか一つだけがチェックできるように使います。そのためには、組み合わせる各ラジオボタンのアイテム属性「ラジオグループ」に同じ文字列を指定します。
ラジオグループが「test」の場合、スクリーンのスクリプトでは、次のようにしてそのグループのどれかのチェックボックスがチェックされたときにイベント処理ができます。
buddyscreen.radioGroup.test.on('change', async(evt)=>{
…
})
また、グループのどのラジオボタンがチェックされているかを次のようにして得ることができます。
const selected = buddyscreen.radioGroup.test.value
また、次のようにリンク先のテーブルとカラムをセットすることで、グループをdataLinkerの処理対象とできます。
buddyscreen.radioGroup.test.dataLink = {table: テーブル名, column: カラム名}
2.4.9.プルダウンリスト
プルダウンリストモジュールは、画面上にプルダウン方式の選択肢の入力欄を設けるモジュールです。選択肢は次の2つの方法で指定できます。
a. 選択肢を配列で与える。
b. DBテーブル・ビューのカラムから読んだデータを選択肢とする。
2.4.9.1.プロパティ
本項ではプルダウンリストモジュールのプロパティについて説明します。
2.4.9.1.1.autoLoad
autoLoadプロパティは、dataLinkプロパティにセットされたテーブル名とカラム名がある場合に、選択肢をそのテーブルのカラムから読み込むかどうかを真偽値で指定します。
buddyscreen.items.SELECT1.autoLoad = true
※設計画面でのアイテム属性「選択肢の自動読込」と対応します。
2.4.9.1.2.dataLink
dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。
2.4.9.1.3.disabled
disabledプロパティは、プルダウンリストを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.SELECT1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応しています。
2.4.9.1.4.list
listプロパティは、プルダウンリストの現在の選択肢を得たり、新たにセットしたりします。
設計画面でのアイテム属性「リスト」でセットした選択肢は、{name: 名称, value: 値} のオブジェクトの配列となります。
const list = buddyscreen.items.SELECT1.list
スクリーンのスクリプトでlistプロパティに選択をセットする場合には、次のいくつかの方法があります。
- {name: 名称, value: 値} のオブジェクトの配列
buddyscreen.items.SELECT1.list = [
{"foo": 1},
{"bar": 2}
]
- 文字列の配列
この場合は表示される名称もそれに対応する値も同じものになります。
buddyscreen.items.SELECT1.list = ["foo", "bar"]
- 「開始値-終了値」での範囲指定
開始と終了の整数値をハイフンでつないだ範囲で指定します。その前後に任意の文字列を指定できます。数値が値となります。
次の例は、[{name:"午前0時", value:0},…{name:"午前11時", value:11}] という配列をセットするのと同じです。
buddyscreen.items.SELECT1.list = "午前0-11時"
- 都道府県と曜日
都道府県(北海道~沖縄県)については "都道府県"、曜日(日曜日~土曜日)については "日-土曜日" とセットすることで指定できます。
buddyscreen.items.SELECT1.list = "都道府県"
buddyscreen.items.SELECT1.list = "日-土曜日"
- データベースから読み出したデータ
DBテーブルやDBビューからselect()で読み出したデータ(DataSetオブジェクト)をセットすることで、選択肢とすることができます。ただし、nameカラムとvalueカラムが選択肢のnameとvalueになりますので、カラム名が異なる場合はrename()を使って調整します。
const data = await buddy.app.dbtable.table1.select()
buddyscreen.items.SELECT1.list = data.rename("ID", "value")
※オブジェクトの配列の場合と、データベースから読み出したDataSetの場合、nameで指定した値がnullまたはundefinedの場合は、valueで指定した値がnameに使われます。
2.4.9.1.5.placeholder
placeholderプロパティは、プルダウンリストに値が設定されていないときに表示する文字列を指定します。以下に例を示します。
buddyscreen.items.SELECT1.placeholder = "値を入力してください"
※設計画面でのアイテム属性「プレースホルダ」と対応しています。
2.4.9.1.6.selected
selectedプロパティは、プルダウンリストで選択されている選択肢を {name: 名称, value: 値} のオブジェクトの形で得ます。読み取り専用です。
2.4.9.1.7.value
valueプロパティは、プルダウンリストの選択されている選択肢の値を得たり、値をセットすることでその選択肢が選択された状態にすることができます。
buddyscreen.items.SELECT1.value = 1
2.4.9.2.イベント
本項ではプルダウンリストモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.9.2.1.blur
blurイベントはプルダウンリストから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.9.2.2.change
changeイベントはプルダウンリストの値が変化したときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
2.4.9.2.3.click
clickイベントはプルダウンリストがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.9.2.4.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.9.2.5.doubleclick
doubleclickイベントはプルダウンリストがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.9.2.6.focus
focusイベントはプルダウンリストに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.9.2.7.keydown
keydownイベントはプルダウンリスト上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.9.2.8.keypress
keypressイベントはプルダウンリスト上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.9.2.9.keyup
keyupイベントはプルダウンリスト上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.9.2.10.mousedown
mousedownイベントはプルダウンリスト上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.9.2.11.mouseup
mouseupイベントはプルダウンリスト上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.10.コンボボックス(プラグイン)
コンボボックスモジュールは、プルダウンリストとテキストボックスの機能を合わせ持つ入力欄を画面上に設けるモジュールです。プルダウンリストモジュールと同様に、選択肢は次の2つの方法で指定できます。
a. 選択肢を配列で与える
b. DBテーブル・ビューのカラムから読んだデータを選択肢とする。
また、選択肢にない文字列をテキストボックスモジュールと同様に自由に入力できます。
2.4.10.1.プロパティ
2.4.10.1.1.autoLoad
autoLoadプロパティは、コンボボックスのデータリンク属性が設定されている場合に、選択肢をデータベースから自動的に読み込むかどうかを指定します。以下に例を示します。
buddyscreen.items.COMBOBOX1.autoLoad = true
autoLoadプロパティの値には真偽値を与えます。値が真のときは自動読み込みが有効になり、それ以外のときは無効が解除されます。
※設計画面でのアイテム属性「選択肢の自動読込」と対応しています。
2.4.10.1.2.dataLink
dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。
2.4.10.1.3.disabled
disabledプロパティは、コンボボックスを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.COMBOBOX1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応しています。
2.4.10.1.4.list
listプロパティは、コンボボックスの現在の選択肢を得たり、新たにセットしたりします。
設計画面でのアイテム属性「リスト」でセットした選択肢は、{name: 名称, value: 値} のオブジェクトの配列となります。
const list = buddyscreen.items.COMBOBOX1.list
スクリーンのスクリプトでlistプロパティに選択をセットする場合には、次のいくつかの方法があります。
- {name: 名称, value: 値} のオブジェクトの配列
buddyscreen.items.SELECT1.list = [
{"foo": 1},
{"bar": 2}
]
- 文字列の配列
この場合は表示される名称もそれに対応する値も同じものになります。
buddyscreen.items.SELECT1.list = ["foo", "bar"]
- 「開始値-終了値」での範囲指定
開始と終了の整数値をハイフンでつないだ範囲で指定します。その前後に任意の文字列を指定できます。数値が値となります。
次の例は、[{name:"午前0時", value:0},…{name:"午前11時", value:11}] という配列をセットするのと同じです。
buddyscreen.items.SELECT1.list = "午前0-11時"
- 都道府県と曜日
都道府県(北海道~沖縄県)については "都道府県"、曜日(日曜日~土曜日)については "日-土曜日" とセットすることで指定できます。
buddyscreen.items.SELECT1.list = "都道府県"
buddyscreen.items.SELECT1.list = "日-土曜日"
- データベースから読み出したデータ
DBテーブルやDBビューからselect()で読み出したデータ(DataSetオブジェクト)をセットすることで、選択肢とすることができます。ただし、nameカラムとvalueカラムが選択肢のnameとvalueになりますので、カラム名が異なる場合はrename()を使って調整します。
const data = await buddy.app.dbtable.table1.select()
buddyscreen.items.SELECT1.list = data.rename("ID", "value")
※オブジェクトの配列の場合と、データベースから読み出したDataSetの場合、nameで指定した値がnullまたはundefinedの場合は、valueで指定した値がnameに使われます。
2.4.10.1.5.placeholder
placeholderプロパティは、コンボボックスに値が設定されていないときに表示する文字列を指定します。以下に例を示します。
buddyscreen.items.COMBOBOX1.placeholder = "値を入力してください"
※設計画面でのアイテム属性「プレースホルダ」と対応しています。
2.4.10.1.6.readOnly
readOnlyプロパティは、コンボボックスを読み取り専用に設定します。以下に例を示します。
buddyscreen.items.COMBOBOX1.readOnly = true
readOnlyプロパティの値には真偽値を与えます。値が真のときは読み取り専用になり、それ以外のときは解除されます。
※設計画面でのアイテム属性「読み取り専用」と対応しています。
2.4.10.1.7.value
valueプロパティは、コンボボックスに表示されている選択肢の値を得たり、値をセットすることでその選択肢が選択された状態にすることができます。
buddyscreen.items.COMBOBOX1.value = 1
2.4.10.2.イベント
本項ではコンボボックスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.10.2.1.blur
blurイベントはコンボボックスから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.10.2.2.change
changeイベントはコンボボックスの値が変化したときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
- evt.cause
- "set"(setValue/setOptionsアクションによる変更)または"user"(ユーザによる変更)
2.4.10.2.3.click
clickイベントはコンボボックスがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.10.2.4.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.10.2.5.doubleclick
doubleclickイベントはコンボボックスがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.10.2.6.focus
focusイベントはコンボボックスに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.10.2.7.keydown
keydownイベントはコンボボックス上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.10.2.8.keypress
keypressイベントはコンボボックス上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.10.2.9.keyup
keyupイベントはコンボボックス上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.10.2.10.mousedown
mousedownイベントはコンボボックス上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.10.2.11.mouseup
mouseupイベントはコンボボックス上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.11.スライダー(プラグイン)
スライダーモジュールは、画面上にスライド式の数値入力欄を設けるモジュールです。スライダーモジュールでは、入力できる値の範囲(最大値と最小値)を設定できます。
2.4.11.1.プロパティ
2.4.11.1.1.disabled
disabledプロパティは、スライダーを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.SLIDER1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応しています。
2.4.11.1.2.max
maxプロパティは、スライダーの値の最大値を設定したり現在の最大値を取得したりするのに用います。以下に例を示します。
buddyscreen.items.SLIDER1.max = 100
maxプロパティの値には整数値を与えます。デフォルト値は100です。
※設計画面でのアイテム属性「最大値」と対応しています。
2.4.11.1.3.min
minプロパティは、スライダーの値の最小値を設定したり現在の最小値を取得したりするのに用います。以下に例を示します。
buddyscreen.items.SLIDER1.min = 100
minプロパティの値には整数値を与えます。デフォルト値は0です。
※設計画面でのアイテム属性「最小値」と対応しています。
2.4.11.1.4.step
stepプロパティは、スライダーの値の刻みを設定したり現在の刻みを取得したりするのに用います。以下に例を示します。
buddyscreen.items.SLIDER1.step = 1
stepプロパティの値には整数値を与えます。デフォルト値は1です。
※設計画面でのアイテム属性「刻み」と対応しています。
2.4.11.1.5.value
valueプロパティは、スライダーに表示する値を変更したり現在の値を取得したりするのに用います。
buddyscreen.items.SLIDER1.value = 50
※設計画面でのアイテム属性「値」と対応しています。
2.4.11.2.イベント
本項ではスライダーモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.11.2.1.blur
blurイベントはスライダーから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.11.2.2.change
changeイベントはスライダーの値が変化したときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
- evt.cause
- "set"(setValueアクションによる変更)または"user"(ユーザによる変更)
2.4.11.2.3.click
clickイベントはスライダーがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.11.2.4.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.11.2.5.doubleclick
doubleclickイベントはスライダーがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.11.2.6.focus
focusイベントはスライダーに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.11.2.7.keydown
keydownイベントはスライダー上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.11.2.8.keypress
keypressイベントはスライダー上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.11.2.9.keyup
keyupイベントはスライダー上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.11.2.10.mousedown
mousedownイベントはスライダー上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.11.2.11.mouseup
mouseupイベントはスライダー上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.12.日時入力
日時入力モジュールは、画面上に日時入力欄を設けるモジュールです。手入力の他、カレンダーのような日時選択ダイアログでの入力も可能です。
2.4.12.1.プロパティ
本項では日時選択モジュールのプロパティについて説明します。
2.4.12.1.1.datetimetype
datetimetypeプロパティは、日時入力モジュールで日時のどの部分を扱うかを指定します。
buddyscreen.items.DATE1.datetimetype = "ymd"
セットする値は以下のいずれかの文字列を与えます。
- ymd
- 年月日
- ymdhm
- 年月日 時分
- ymdhms
- 年月日 時分秒
- hm
- 時分
- hms
- 時分秒
※設計画面でのアイテム属性「日時タイプ」と対応します。
2.4.12.1.2.disabled
disabledプロパティは、日時入力を操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.SELECT1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応しています。
2.4.12.1.3.errorhandling
errorhandlingプロパティは、日時入力に入力された内容が日時として正しくない場合にどのように処理するかの設定の、現在値を得たり新たな値をセットしたりします
buddyscreen.items.DATE1.errorhandling = "none"
セットする値は次のいずれかです。
- none
- 何もしない
- dialog
- ダイアログ表示
- throw
- スクリプトエラーとする
※設計画面でのアイテム属性「エラー表示」と対応します。
2.4.12.1.4.hourOptions
hourOptionsプロパティは、時刻入力欄の時間の選択肢について、現在の値を得たり新たな値をセットしたりします。
buddyscreen.items.DATE1.hourOptions = "9,10,11,12"
選択肢の値はカンマ区切りの数値文字列(例:"9,10,11,12,13,14,15,16,17")です。
※設計画面でのアイテム属性「時選択肢」と対応します。
2.4.12.1.5.maxDate
maxDateプロパティは、日付入力欄で選択できる範囲の末尾日の、現在値を得たり新たな値をセットしたりします。
buddyscreen.items.DATE1.maxDate = "2023/7/31"
セットする値は、Date型オブジェクトまたはDate型に変換できる日付文字列です。
※設計画面でのアイテム属性「範囲末尾日」と対応します。
2.4.12.1.6.minDate
minDateプロパティは、日付入力欄で選択できる範囲の先頭日の、現在値を得たり新たな値をセットしたりします。
buddyscreen.items.DATE1.minDate = "2023/7/1"
セットする値は、Date型オブジェクトまたはDate型に変換できる日付文字列です。
※設計画面でのアイテム属性「範囲先頭日」と対応します。
2.4.12.1.7.minuteOptions
minuteOptionsプロパティは、時刻入力欄の分の選択肢について、現在の値を得たり新たな値をセットしたりします。
buddyscreen.items.DATE1.minuteOptions = "0,15,30,45"
選択肢の値はカンマ区切りの数値文字列です。
※設計画面でのアイテム属性「分選択肢」と対応します。
2.4.12.1.8.placeholder
placeholderプロパティは、日時入力に値が設定されていないときに表示する文字列を指定します。以下に例を示します。
buddyscreen.items.DATE1.placeholder = "日を入力してください"
※設計画面でのアイテム属性「プレースホルダ」と対応しています。
2.4.12.1.9.readOnly
readOnlyプロパティは、日時入力を読み取り専用に設定します。以下に例を示します。
buddyscreen.items.DATE1.readOnly = true
readOnlyプロパティの値には真偽値を与えます。値が真のときは読み取り専用になり、それ以外のときは解除されます。
※設計画面でのアイテム属性「読み取り専用」と対応しています。
2.4.12.1.10.usedialog
usedialogプロパティは、日時入力をクリックしたときにダイアログを開いて日時を選択入力するかどうかの設定の、現在値を得たり新たな値をセットしたりします。
buddyscreen.items.DATE1.usedialog = true
セットする値は真偽値で、真の場合はダイアログが開きます。偽の場合はダイアログは開かず日時文字列の手入力となります。
※設計画面でのアイテム属性「ダイアログ使用」と対応します。
2.4.12.1.11.value
valueプロパティは、日時入力に表示する日時を変更したり現在の値を取得したりするのに用います。
buddyscreen.items.DATE1.value = "2023/7/7"
※設計画面でのアイテム属性「値」と対応しています。
2.4.12.2.イベント
本項では日時選択モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.12.2.1.blur
blurイベントは日時選択モジュールから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.12.2.2.change
changeイベントは日時選択モジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
2.4.12.2.3.click
clickイベントは日時選択モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.12.2.4.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.12.2.5.doubleclick
doubleclickイベントは日時選択モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.12.2.6.focus
focusイベントは日時選択モジュールに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.12.2.7.keydown
keydownイベントは日時選択モジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.12.2.8.keypress
keypressイベントは日時選択モジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.12.2.9.keyup
keyupイベントは日時選択モジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.12.2.10.mousedown
mousedownイベントは日時選択モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.12.2.11.mouseup
mouseupイベントは日時選択モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.13.色選択(プラグイン)
色選択モジュールは、画面上に色の入力欄を設けるモジュールです。色は#xxxxxxの形の文字列(xxxxxxは6桁の16進数)で表されます。入力欄をクリックすると色を対話的に選択できるダイアログが開きます。
2.4.13.1.プロパティ
2.4.13.1.1.dataLink
dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。
2.4.13.1.2.disabled
disabledプロパティは、色選択を操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.COLOR1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応しています。
2.4.13.1.3.readOnly
readOnlyプロパティは、色選択を読み取り専用に設定します。以下に例を示します。
buddyscreen.items.COLOR1.readOnly = true
readOnlyプロパティの値には真偽値を与えます。値が真のときは読み取り専用になり、それ以外のときは読み取り専用の状態が解除されます。
※設計画面でのアイテム属性「読み取り専用」と対応しています。
2.4.13.1.4.value
valueプロパティは、色選択に表示する色を変更したり現在の色を取得したりするのに用います。
buddyscreen.items.COLOR1.value = "#ff0000"
valueプロパティの値には色の名前(black, white, redなど)またはコード値(#000000~#ffffff, #000~#fff)を文字列で与えます。
※設計画面でのアイテム属性「値」と対応しています。
2.4.13.2.イベント
本項では色選択モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.13.2.1.blur
blurイベントは色選択モジュールから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.13.2.2.change
changeイベントは色選択モジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
- evt.cause
- "set"(setValueアクションによる変更)または"user"(ユーザによる変更)
2.4.13.2.3.click
clickイベントは色選択モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.13.2.4.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.13.2.5.doubleclick
doubleclickイベントは色選択モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.13.2.6.focus
focusイベントは色選択モジュールに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.13.2.7.keydown
keydownイベントは色選択モジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.13.2.8.keypress
keypressイベントは色選択モジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.13.2.9.keyup
keyupイベントは色選択モジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.13.2.10.mousedown
mousedownイベントは色選択モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.13.2.11.mouseup
mouseupイベントは色選択モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.14.レコードセレクタ
レコードセレクタモジュールは、DBテーブルやDBビューの多数あるレコードのうち、どのレコードあるいはレコード群(テーブル表示の場合)を表示しているかを示すとともに、前や次のレコードあるいはレコード群に切り替えるボタン類を設けるモジュールです。
レコードセレクタでは、何件目から何件目までの間で、現在は何件目、ということを扱うのみで、それに応じて該当するレコードをDBテーブルやDBビューから読み出して表示する処理は、スクリプトでおこなう必要があります。
2.4.14.1.プロパティ
本項ではレコードセレクタモジュールのプロパティについて説明します。
2.4.14.1.1.disabled
disabledプロパティは、レコードセレクタを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.RECORDSELECTOR1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
2.4.14.1.2.max
maxプロパティは、レコードセレクタの値の最大値の現在値を得たり新たな値をセットしたりします。
buddyscreen.items.RECORDSELECTOR1.max = 1000
設定しなかった場合のデフォルト値は100です。
2.4.14.1.3.min
minプロパティは、レコードセレクタの値の最小値の現在値を得たり新たな値をセットしたりします。
buddyscreen.items.RECORDSELECTOR1.min = 1
設定しなかった場合のデフォルト値は1です。
2.4.14.1.4.pageSize
pageSizeプロパティは、レコードセレクタの「<<」「>>」ボタンをクリックしたときに何件ずつ前や次へ移動するかの設定値の、現在値を得たり新たな値をセットしたりします。
buddyscreen.items.RECORDSELECTOR1.pageSize = 10
設定しない場合のデフォルト値は20です。
2.4.14.1.5.value
valueプロパティは、レコードセレクタの現在の値を返したり新たな値をセットしたりします。
buddyscreen.items.RECORDSELECTOR1.value = 10
※設計画面でのアイテム属性「値」と対応します。
2.4.14.2.イベント
本項ではDBレコードセレクタモジュールから発生するイベントについて説明します。
2.4.14.2.1.change
changeイベントはDBレコードセレクタモジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。
モジュール名_onChange: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
- evt.cause
- "set"(setValueアクションによる変更)または"user"(ユーザによる変更)
2.4.14.2.2.click
clickイベントはDBレコードセレクタモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.14.2.3.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.14.2.4.doubleclick
doubleclickイベントはDBレコードセレクタモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.14.2.5.mousedown
mousedownイベントはDBレコードセレクタモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.14.2.6.mouseup
mouseupイベントはDBレコードセレクタモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.15.ファイル選択
ファイル選択モジュールは、アプリを開いているパソコンやスマホなどの中にあるファイルを選択するための入力欄を画面上に設けるモジュールです。
選択したファイルは、内容を読み取ったり、サーバーにアップロードしたりできます。
2.4.15.1.プロパティ
2.4.15.1.1.dataLink
dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。
2.4.15.1.2.disabled
disabledプロパティは、ファイル選択を操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.FILE1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応します。
2.4.15.1.3.file
fileプロパティは読み取り専用で、選択されているファイルのFileオブジェクトを得ます。
const file = buddyscreen.items.FILE1.file
uploadアクションを実行してアップロードすると、fileプロパティはnullになります。
2.4.15.1.4.readOnly
readOnlyプロパティは、ファイル選択を読み取り専用に設定します。以下に例を示します。
buddyscreen.items.FILE1.readOnly = true
readOnlyプロパティの値には真偽値を与えます。値が真のときは読み取り専用になり、それ以外のときは解除されます。
※設計画面でのアイテム属性「読み取り専用」と対応しています。
2.4.15.1.5.value
valueプロパティは、ファイル選択の値として次のように利用します。
ファイル未選択で値もない状態にするにはnullをセットします。
buddyscreen.items.FILE1.value = null
サーバーのfiles内のファイルのURL(filesからの相対URL)を値としてセットすることもできます。このときもファイル未選択の状態になります。
buddyscreen.items.FILE1.value = "users/test.txt"
uploadアクションを実行してアップロードした後には、valueはアップロードされたファイルのURL(filesからの相対URL)になります。
await buddyscreen.items.FILE1.upload("files/users")
const url = buddyscreen.items.FILE1.value
2.4.15.2.アクション
本項ではファイル選択モジュールのアクションについて説明します。
2.4.15.2.1.readAsArrayBuffer
readAsArrayBufferアクションは、選択されたファイルをArrayBufferオブジェクトとして読み取ります。
const data = await buddyscreen.items.FILE1.readAsArrayBuffer()
2.4.15.2.2.readAsBinaryString(非推奨)
readAsBinaryStringアクションは、選択されたファイルをバイナリデータとして読み取ります。
const data = await buddyscreen.items.FILE1.readAsBinaryString()
readAsBinaryStringアクションの利用は推奨されません。代わりに前述のreadAsArrayBufferアクションを利用してください。
2.4.15.2.3.readAsDataURL
readAsDataURLアクションは、選択されたファイルをデータURLとして読み取ります。
const url = await buddyscreen.items.FILE1.readAsDataURL()
データURLとは、内容を含んだ特殊な形式のURLです。例えば画像ファイルの内容を上記のようにしてデータURLとして読み取ると、そのURLを画像モジュールのsrcにセットすることで画像として表示することが可能です。
2.4.15.2.4.readAsText
readAsTextアクションは、選択されたファイルをテキストデータとして読み取ります。
const txt = await buddyscreen.items.FILE1.readAsText({encoding: "Shift_JIS"})
引数には {encoding: "…"} としてテキストのエンコーディングを指定します。省略すると UTF8 になります。
2.4.15.2.5.upload
uploadアクションは、選択されたファイルをサーバにアップロードします。アップロードに成功すると、値はアップロードされたファイルのサーバー上でのURLになります。
await buddyscreen.items.FILE1.upload("files/users")
引数には files/ で始まるアップロード先のディレクトリを指定します。
アップロードの結果値にセットされるURLは、files からの相対URLになります。例えば test.txt を上記のように files/users にアップロードすると、値にセットされるのは users/test.txt のようになります。
2.4.15.3.イベント
本項ではファイル選択モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.15.3.1.blur
blurイベントはファイル選択モジュールから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.15.3.2.change
changeイベントはファイル選択モジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
2.4.15.3.3.click
clickイベントはファイル選択モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.15.3.4.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.15.3.5.doubleclick
doubleclickイベントはファイル選択モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.15.3.6.focus
focusイベントはファイル選択モジュールに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.15.3.7.mousedown
mousedownイベントはファイル選択モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.15.3.8.mouseup
mouseupイベントはファイル選択モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.16.画像
画像モジュールは、画面上に画像を表示するためのモジュールです。
2.4.16.1.プロパティ
本項では画像モジュールのプロパティについて説明します。
2.4.16.1.1.alt
altプロパティは、画像モジュールが表示する代替テキストの、現在値を得たり新たな値をセットしたりします。
buddyscreen.items.IMAGE1.alt = "商品画像"
※設計画面でのアイテム属性「代替テキスト」と対応します。
2.4.16.1.2.dataLink
dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。
2.4.16.1.3.fitSize
fitSizeプロパティは、画像モジュールの中に画像をどう伸縮して表示するかの設定の、現在値を得たり新たな値をセットしたりします。
buddyscreen.items.IMAGE1.fitSize = "fit"
セットする値は次のいずれかです。
- (空文字列)
- 伸縮なし
- width
- 横幅にあわせる
- height
- 高さにあわせる
- both
- 両方にあわせる
- fit
- 縦横比を保持して両方に合わせる
※設計画面でのアイテム属性「画像の伸縮」と対応します。
2.4.16.1.4.src
srcプロパティは、画像モジュールが表示する画像ファイルのURLの、現在値を得たり新たな値をセットしたりします。
buddyscreen.items.IMAGE1.src = "files/users/test.jpg"
※srcプロパティとvalueプロパティは同じ機能です。
※設計画面でのアイテム属性「ソース」と対応します。
2.4.16.1.5.tip
tipプロパティは、この画像にマウスオーバーしたときに表示されるツールチップ表示の内容を指定します。
buddyscreen.items.IMAGE1.tip = "文字列"
※設計画面でのアイテム属性「チップ」と対応します。
2.4.16.1.6.value
valueプロパティは、srcプロパティと同じ機能です。srcプロパティをご覧ください。
2.4.16.2.イベント
本項では画像モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.16.2.1.click
clickイベントは画像モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.16.2.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.16.2.3.doubleclick
doubleclickイベントは画像モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.16.2.4.mousedown
mousedownイベントは画像モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.16.2.5.mouseup
mouseupイベントは画像モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.17.文字列
文字列モジュールは、画面上に文字列を表示するためのモジュールです。文字列モジュールは表示している文字列を値として保持します。
2.4.17.1.プロパティ
本項では文字列モジュールのプロパティについて説明します。
2.4.17.1.1.calculate
calculateプロパティは、この文字列の値を自動計算して表示する指示を含んでいます。設計画面でのアイテム属性「自動計算」での設定があればその内容を表すオブジェクトがセットされています。
スクリーンスクリプトで自動計算の内容を指定するには、calculateプロパティに関数を与えます。以下に例を示します。
buddyscreen.items.TEXTBOX3.calculate = (util)=>{
// TEXTBOX1とTEXTBOX2の値を足す
return util.sum("TEXTBOX1", "TEXTBOX2")
}
buddyscreen.items.TEXTBOX4.calculate = (util)=>{
// TEXTBOX1の値を整数に変換して1.1を掛け、
// 小数点以下を切り捨てる
return Math.floor( util.int("TEXTBOX1") * 1.1)
}
calculateプロパティに与えた関数の引数には、自動計算の内容を記述するためのヘルパー関数を集めたutilモジュールが渡されます。詳しくは【utilモジュール】を参照してください。
calculateプロパティに与えた関数は、値を返さなければなりません。この戻り値が文字列の値になります。
calculateプロパティに与えた関数が他のスクリーンモジュールの値を参照している場合、それらのスクリーンモジュールの値が変更されたら自動的にcalculateプロパティに与えた関数が実行されてテキストボックスの値が更新されます。
calculateプロパティに与える関数では非同期処理は使えないことに注意してください。
2.4.17.1.2.dataLink
dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。
2.4.17.1.3.filter
filterプロパティは、文字列モジュールに適用するフィルタ設定の、現在値を得たり新たな値をセットしたりします。
buddyscreen.items.LABEL1.filter = "COMMA"
filters引数にはフィルタ名を文字列で与えます。フィルタ名はカンマで区切って複数指定できます。フィルタの詳細については後述の【フィルタAPI】の節を参照してください。
※設計画面でのアイテム属性「フィルタ」と対応します。
2.4.17.1.4.tip
tipプロパティは、この文字列にマウスオーバーしたときに表示されるツールチップ表示の内容を指定します。
buddyscreen.items.LABEL1.tip = "文字列"
※設計画面でのアイテム属性「チップ」と対応します。
2.4.17.1.5.value
valueプロパティは、文字列モジュールが表示する値(文字列)の、現在値を得たり新たな値をセットしたりします。
buddyscreen.items.LABEL1.value = "名前"
※設計画面でのアイテム属性「値」と対応します。
2.4.17.2.イベント
本項では文字列モジュールから発生するイベントについて説明します。
2.4.17.2.1.click
clickイベントは文字列モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.17.2.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.17.2.3.doubleclick
doubleclickイベントは文字列モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.17.2.4.mousedown
mousedownイベントは文字列モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.17.2.5.mouseup
mouseupイベントは文字列モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.18.リスト
リストモジュールは複数の項目を選択できる選択肢入力欄を画面上に設けるモジュールです。
2.4.18.1.プロパティ
本項ではリストモジュールのプロパティについて説明します。
2.4.18.1.1.autoLoad
autoLoadプロパティは、dataLinkプロパティにセットされたテーブル名とカラム名がある場合に、選択肢をそのテーブルのカラムから読み込むかどうかを真偽値で指定します。
buddyscreen.items.LIST1.autoLoad = true
※設計画面でのアイテム属性「選択肢の自動読込」と対応します。
2.4.18.1.2.dataLink
dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。
2.4.18.1.3.direction
directionプロパティは、リストの選択肢の配置方向の設定の、現在値を得たり新たな値をセットしたりします。
buddyscreen.items.LIST1.direction = "vertical"
セットする値は次のいずれかです。
- horizontal
- 横方向
- vertical
- 縦方向
※設計画面でのアイテム属性「方向」と対応します。
2.4.18.1.4.disabled
disabledプロパティは、リストを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.LIST1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応します。
2.4.18.1.5.list
listプロパティは、リストの現在の選択肢を得たり、新たにセットしたりします。
設計画面でのアイテム属性「リスト」でセットした選択肢は、{name: 名称, value: 値} のオブジェクトの配列となります。
const list = buddyscreen.items.LIST1.list
スクリーンのスクリプトでlistプロパティに選択をセットする場合には、次のいくつかの方法があります。
- {name: 名称, value: 値} のオブジェクトの配列
buddyscreen.items.LIST1.list = [
{"foo": 1},
{"bar": 2}
]
- 文字列の配列
この場合は表示される名称もそれに対応する値も同じものになります。
buddyscreen.items.LIST1.list = ["foo", "bar"]
- 「開始値-終了値」での範囲指定
開始と終了の整数値をハイフンでつないだ範囲で指定します。その前後に任意の文字列を指定できます。数値が値となります。
次の例は、[{name:"午前0時", value:0},…{name:"午前11時", value:11}] という配列をセットするのと同じです。
buddyscreen.items.LIST1.list = "午前0-11時"
- 都道府県と曜日
都道府県(北海道~沖縄県)については "都道府県"、曜日(日曜日~土曜日)については "日-土曜日" とセットすることで指定できます。
buddyscreen.items.LIST1.list = "都道府県"
buddyscreen.items.LIST1.list = "日-土曜日"
- データベースから読み出したデータ
DBテーブルやDBビューからselect()で読み出したデータ(DataSetオブジェクト)をセットすることで、選択肢とすることができます。ただし、nameカラムとvalueカラムが選択肢のnameとvalueになりますので、カラム名が異なる場合はrename()を使って調整します。
const data = await buddy.app.dbtable.table1.select()
buddyscreen.items.LIST1.list = data.rename("ID", "value")
※オブジェクトの配列の場合と、データベースから読み出したDataSetの場合、nameで指定した値がnullまたはundefinedの場合は、valueで指定した値がnameに使われます。
2.4.18.1.6.listType
listTypeプロパティは、リストの選択肢の表示方法設定の、現在値を得たり新たな値をセットしたりします。
buddyscreen.items.LIST1.listType = "normal"
セットする値は次のいずれかです。
- normal
- 標準(文字列として並べる)
- radio/check
- ラジオ/チェックボックス(selectTypeプロパティがsingleならラジオボタン、そうでなければチェックボックス)
※設計画面でのアイテム属性「リストタイプ」と対応。
2.4.18.1.7.placeholder
placeholderプロパティは、リストに選択肢が設定されていないときに表示する文字列を指定します。以下に例を示します。
buddyscreen.items.LIST1.placeholder = "選択肢がありません"
※設計画面でのアイテム属性「プレースホルダ」と対応しています。
2.4.18.1.8.selected
selectedプロパティは、リストで選択されている選択肢を取得します。このプロパティは読み取り専用です。
-
選択タイプが単一(single)のときは、{name: 名称, value: 値} のオブジェクトが返されます。
-
選択タイプが複数(multi)のときは、{name: 名称, value: 値} のオブジェクトの配列が返されます。
2.4.18.1.9.selectType
selectTypeプロパティは、リストの選択の仕方の、現在値を得たり新たな値をセットしたりします。
buddyscreen.items.LIST1.selectType = "single"
セットする値は次のいずれかです。
- none
- 選択なし
- single
- 単一選択
- multi
- 複数選択
※設計画面でのアイテム属性「選択タイプ」と対応します。
2.4.18.1.10.value
valueプロパティは、リストの選択されている選択肢の値を得たり、値をセットすることでその選択肢が選択された状態にすることができます。
- 選択タイプが単一(single)のとき、valueプロパティの値は選択肢の値です。
buddyscreen.items.LIST1.value = 1
- 選択タイプが複数(multi)のとき、valueプロパティの値は選択肢の値の配列です。
buddyscreen.items.LIST1.value = [1, 2, 3]
2.4.18.2.イベント
本項ではリストモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.18.2.1.click
clickイベントはリストモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティにはクリックされたリスト項目の情報が渡されます。
- evt.data
- リスト項目がクリックされた場合は以下のプロパティからなるオブジェクトが渡される。リスト項目以外がクリックされた場合はdataプロパティは未定義。
- name: 項目の名前
- value: 項目の値
- index: 項目の番号(最初のリスト項目が0)
2.4.18.2.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.18.2.3.doubleclick
doubleclickイベントはリストモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.18.2.4.mousedown
mousedownイベントはリストモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.18.2.5.mouseup
mouseupイベントはリストモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.19.テーブル
テーブルモジュールは行と列から成る表(テーブル)形式のデータを表示するためのモジュールです。テーブルには列ラベルを示すヘッダ行を付与することができます。
2.4.19.1.プロパティ
本項ではテーブルモジュールのプロパティについて説明します。
2.4.19.1.1.col
colプロパティは0からの順序またはカラム名を指定して、列を表すデータを得ます。
const col = buddyscreen.items.TABLE1.col(1)
const col = buddyscreen.items.TABLE1.col("price")
得られた列データは、内容の各セルの値などを含んでいるものではなく、value, style, filter のプロパティで、表示する値、スタイル、フィルターをセットするために使用します。
次のようにするとその列の値がすべて0になります。
col.value = 0
次のようにセルオブジェクトを引数として表示する値を返す関数を指定することもできます。次の例では値を10倍して表示します。
col.value = function(cell){return cell.value * 10}
次のようにスタイルやフィルタを指定できます。
col.style = {color: "red"}
col.filter = "comma"
2.4.19.1.2.data
dataプロパティは、参照時と代入時では扱いが異なります。
参照時
参照時にはテーブルに表示するデータのデータ部分(ヘッダ部分を含まない)について、
{列名: {value: 値, style: スタイルオブジェクト},…} というオブジェクトの配列の形で返します。
例えば、
const data = buddyscreen.items.TABLE1.data
とした場合のdataの内容は次のようなものになります。
[
{
"名称": {value: "サンプルA", style: {}},
"数量": {value: 100, style: {}},
},
{
"名称": {value: "サンプルB", style: {}},
"数量": {value: 200, style: {}},
},
]
この中のstyleの内容を変更することで表示スタイルを調整することができます。例えばデータ2行目の数量の文字色を赤くするには上記のdataを用いて次のようにします。
data[1]["数量"].style.color = "red"
またfilterプロパティをセットすることでフィルタを適用できます。例えば上と同じ箇所の数値にcommaフィルタを適用するなら次のようにします。
data[1]["数量"].filter = "comma"
filterには上のようにフィルタ名をセットするほか、文字列を引数としてそれを加工した文字列を返す関数を指定することができます。
代入時
代入時には、テーブルのヘッダ部分とデータ部分があわせてセットされます。その方法は次のいずれかです。
- DataSetオブジェクト(データベースのselect()の結果など)をセットする。
この場合、カラム名がヘッダとなります。
const data = await buddy.app.dbtable.table1.select()
buddyscreen.items.TABLE1.data = data
- データストリーム(データベースのselect()に.stream()を付加)をセットする。
この場合も、カラム名がヘッダとなります。
また、ストリームでは一定の件数ずつ読み込まれて表示されるようになります。
const data = await buddy.app.dbtable.table1.select().stream()
buddyscreen.items.TABLE1.data = data
- オブジェクトの配列をセットする。
この場合、オブジェクトのプロパティ名がヘッダとなります。
buddyscreen.items.TABLE1.data = [
{"名称": "サンプルA", "数量": 100},
{"名称": "サンプルB", "数量": 200},
]
- nullをセットして空にする。
buddyscreen.items.TABLE1.data = null
2.4.19.1.3.header
headerプロパティは、ヘッダ部分のみを取り出したり、セットしたりします。
const header = buddyscreen.items.TABLE1.header
この場合のheaderの内容は例えば次のようになります。
[
{name: '名前', display: '名前', style: {width: 140}},
{name: '数量', display: '数量', style: {width: 140}},
]
このstyleのwidthを調整すれば、列幅を変更できます。例えば1列目の幅を300pxにしたい場合、上記で得たheaderを用いて次のようにします。(列の番号は0から始まることに注意してください。)
header[0].style.width = 300
filterのセットも可能で、その列全体にフィルタを適用できます。
header[0].filter = "comma"
2.4.19.1.4.placeholder
placeholderプロパティは、テーブルにデータが設定されていないときに表示する文字列を指定します。以下に例を示します。
buddyscreen.items.TABLE1.placeholder = "データがありません"
※設計画面でのアイテム属性「プレースホルダ」と対応しています。
2.4.19.1.5.row
rowプロパティは、0からの順序を指定して行全体を表すデータを得ます。
const row = buddyscreen.items.TABLE1.row(0)
得られた行データは、内容の各セルの値などを含んでいるものではなく、value, style, filter のプロパティで、表示する値、スタイル、フィルターをセットするために使用します。
次のようにするとその行の値がすべて空文字列になります。
row.value = ""
次のようにセルオブジェクトを引数として表示する値を返す関数を指定することもできます。次の例では値を10倍して表示します。
row.value = function(cell){return cell.value * 10}
次のようにスタイルやフィルタを指定できます。
row.style = {color: "red"}
row.filter = "comma"
2.4.19.2.イベント
2.4.19.2.1.click
clickイベントはテーブルモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティにクリックされたセル、行および列に関する情報が渡されます。
- evt.colIndex
- クリックされた列番号(最初の列が0)
- evt.row
- クリックされた行のデータ。値は { カラム名: 値オブジェクト, ... } の形式のオブジェクト。カラム名に対応する値オブジェクトは以下のプロパティからなるオブジェクト。
- value: カラム値
- style: スタイルオブジェクト
- evt.rowIndex
- クリックされた行番号(最初の行が0)
- evt.value
- クリックされたセルの値
2.4.19.2.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.19.2.3.doubleclick
doubleclickイベントはテーブルモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.19.2.4.mousedown
mousedownイベントはテーブルモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.19.2.5.mouseup
mouseupイベントはテーブルモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.20.カレンダー(プラグイン)
カレンダーモジュールは画面上にカレンダーを表示するモジュールです。カレンダーには日付を指定してテキスト項目を挿入することができます。
2.4.20.1.プロパティ
2.4.20.1.1.firstDate
firstDateプロパティはカレンダーで表示されている月の最初の日付をDateオブジェクトで返します。このプロパティは読み取り専用です。
2.4.20.1.2.lastDate
firstDateプロパティはカレンダーで表示されている月の最後の日付をDateオブジェクトで返します。このプロパティは読み取り専用です。
2.4.20.1.3.month
monthプロパティはカレンダーで表示する月を設定したり現在の月を取得したりするのに用います。以下に例を示します。
buddyscreen.items.CALENDAR1.month = 1
monthプロパティの値は1から12までです。
※設計画面でのアイテム属性「月」と対応します。
2.4.20.1.4.texts
textsプロパティはテキスト項目の配列を取得したり変更したりするのに用います。以下に例を示します。
buddyscreen.items.CALENDAR1.texts[0]
この例では最初のテキスト項目を取得します。
変更時に値として指定できるのはテキスト項目の配列またはDataSetオブジェクトです。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。
2.4.20.1.5.useNavigator
useNavigatorプロパティは移動ボタンを有効にします。以下に例を示します。
buddyscreen.items.CALENDAR1.useNavigator = true
useNavigatorプロパティの値には真偽値を与えます。値が真のときは移動ボタンが表示され、それ以外のときは非表示になります。
※設計画面でのアイテム属性「移動ボタンの使用」と対応します。
2.4.20.1.6.year
yearプロパティはカレンダーで表示する月の年を設定したり現在の年を取得したりするのに用います。以下に例を示します。
buddyscreen.items.CALENDAR1.year = 2024
※設計画面でのアイテム属性「年」と対応します。
2.4.20.2.アクション
本項ではカレンダーモジュールのアクションについて説明します。
2.4.20.2.1.addText
addTextアクションはカレンダーにテキスト項目を追加表示します。
addText(date, text, data)
date引数には挿入先の日付をDate型で与えます。text引数には表示する文字列を指定します。data引数(省略可)には任意のデータを与えます。
addTextアクションは追加されたテキスト項目を表すオブジェクトを返します。
2.4.20.2.2.clearText
clearTextアクションはaddTextアクションで追加したテキスト項目を削除します。
clearText(date)
date引数(省略可)には日付をDate型で与えます。date引数を与えるとその日付のすべてのテキスト項目を削除します。date引数を省略するとすべてのテキスト項目を削除します。
2.4.20.2.3.delText
delTextアクションは指定の日付に付与されているテキスト項目をひとつ削除します。
delText(obj)
obj引数には削除するテキスト項目オブジェクトまたはインデックス番号を与えます。テキスト項目オブジェクトはaddTextアクションの戻り値として返されます。また、textsプロパティ(テキスト項目オブジェクトの配列)を用いてtexts[0]などとして取得します。インデックス番号にはtextsの要素の番号(最初が0)を与えます。
2.4.20.2.4.move
moveアクションはカレンダーで表示する月を動かします。
move(text)
text引数には以下のいずれかを文字列で与えます。
- 月の絶対指定。次の例のように年と月を/または-で区切ります。
2024/04
2024-04
- 月の相対指定。次の例のように〈+または-〉〈数値〉〈mまたはmonthまたはmonths〉の形式で指定します。
+1m
-2m
+3months
- 年の相対指定。次の例のように〈+または-〉〈数値〉〈yまたはyearまたはyears〉の形式で指定します。
+1y
-2y
+3years
2.4.20.2.5.nextMonth
nextMonthアクションはカレンダーで表示する月を翌月に動かします。
nextMonth()
2.4.20.2.6.nextYear
nextYearアクションはカレンダーで表示する月を翌年の同じ月に動かします。
nextYear()
2.4.20.2.7.prevMonth
prevMonthアクションはカレンダーで表示する月を前月に動かします。
prevMonth()
2.4.20.2.8.prevYear
prevYearアクションはカレンダーで表示する月を前年の同じ月に動かします。
prevYear()
2.4.20.3.イベント
本項ではカレンダーモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.20.3.1.change
changeイベントはカレンダーモジュールが表示する年または月が変化したときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })
イベントハンドラの引数dataには以下のプロパティから成るオブジェクトが渡されます。
- data.year
- 変更後の年
- data.month
- 変更後の月
- data.cause
- "set"(setYearMonthアクションによる変更)または"user"(ユーザによる変更)
2.4.20.3.2.click
clickイベントはカレンダーモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.date
- 日付をクリックした場合はその日付の文字列、そうでなければundefined
- evt.header
- ヘッダ(曜日)をクリックした場合は以下のプロパティからなるオブジェクト
weeknum: 曜日の番号(日曜日が0)
weektext: 曜日の名前 - evt.holidayname
- 祝日の日付をクリックした場合はその祝日の名前(文字列)、そうでなければundefined
- evt.text
- テキスト項目をクリックした場合は以下のプロパティからなるオブジェクト
date: 日付
index: 同じ日付の何番目のテキスト項目か(最初が0)
value: テキスト項目の内容
data: 任意のデータ(addTextアクションのdata引数の値)
2.4.20.3.3.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.20.3.4.doubleclick
doubleclickイベントはカレンダーモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.20.3.5.mousedown
mousedownイベントはカレンダーモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.20.3.6.mouseup
mouseupイベントはカレンダーモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.21.タイムテーブル
タイムテーブルモジュールは画面上に時間割表を表示するモジュールです。時間割表には開始・終了日時を指定してテキスト項目を挿入することができます。
2.4.21.1.プロパティ
2.4.21.1.1.days
daysプロパティは開始日からの表示日数を設定します。
buddyscreen.items.TIMETABLE1.days = 7
※設計画面でのアイテム属性「日数」と対応します。
2.4.21.1.2.dayWidth
dayWidthプロパティはタイムテーブルの日付カラムの幅を設定します。
buddyscreen.items.TIMETABLE1.dayWidth = 50
2.4.21.1.3.disabled
disabledプロパティは、タイムテーブルを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.TIMETABLE1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応します。
2.4.21.1.4.edate
edateプロパティはタイムテーブルモジュールで表示されている日付の最後の日付を返します。
const edate = buddyscreen.items.TIMETABLE1.edate
このプロパティは読み取り専用です。このプロパティの値は開始日と表示日数に基づいて自動的に設定されます。
2.4.21.1.5.etime
etimeプロパティはタイムテーブルの表示終了時刻を設定します。
buddyscreen.items.TIMETABLE1.etime = 18
※設計画面でのアイテム属性「終了時」と対応します。
2.4.21.1.6.height
dayWidthプロパティはタイムテーブルの行の高さを設定します。
buddyscreen.items.TIMETABLE1.height = 25
2.4.21.1.7.sdate
sdateプロパティはタイムテーブルモジュールの開始日を設定します。
buddyscreen.items.TIMETABLE1.sdate = "2020/12/31"
sdateプロパティの値は以下のいずれかです。
- Dateオブジェクト
年/月/日
または年-月-日
の形式の日付文字列
※設計画面でのアイテム属性「開始日」と対応します。
2.4.21.1.8.stime
stimeプロパティはタイムテーブルの表示開始時刻を設定します。
buddyscreen.items.TIMETABLE1.stime = 9
※設計画面でのアイテム属性「開始時」と対応します。
2.4.21.1.9.texts
textsプロパティはタイムテーブルに追加したテキスト項目の配列を返します。
const texts = buddyscreen.items.TIMETABLE1.texts
textsプロパティの値は以下のプロパティから成るオブジェクトの配列です。
- start
- 開始日時(Dateオブジェクト)
- end
- 終了日時(Dateオブジェクト)
- text
- 表示文字列
- bgcolor
- 背景色
textsプロパティは読み取り専用です。テキスト項目の追加にはaddTextアクション、テキスト項目の削除にはclearText、delTextアクションを利用してください。
2.4.21.1.10.timeWidth
dayWidthプロパティはタイムテーブルの時刻カラムの幅を設定します。
buddyscreen.items.TIMETABLE1.timeWidth = 50
dayWidthプロパティを指定しなければ時刻カラムの幅はタイムテーブルモジュールの幅と表示日数から自動的に計算されます。dayWidthプロパティを指定すると固定幅になります。
2.4.21.1.11.useNavigator
useNavigatorプロパティは移動ボタンを有効にします。以下に例を示します。
buddyscreen.items.TIMETABLE1.useNavigator = true
useNavigatorプロパティの値には真偽値を与えます。値が真のときは移動ボタンが表示され、それ以外のときは非表示になります。
※設計画面でのアイテム属性「移動ボタンの使用」と対応します。
2.4.21.2.アクション
本項ではタイムテーブルモジュールのアクションについて説明します。
2.4.21.2.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を返します。日をまたぐテキスト項目は追加できますが、開始時刻と終了時刻が表示開始時と表示終了時の間にないテキスト項目の追加は失敗します。
2.4.21.2.2.clearText
clearTextアクションはすべてのテキスト項目を削除します。
clearTex()
2.4.21.2.3.delText
delTextアクションはテキスト項目をひとつ削除します。
delText(index)
index引数には削除するテキスト項目の番号を与えます(最初のテキスト項目が0)。
2.4.21.2.4.nextDays
nextDaysアクションはタイムテーブルの表示期間を日数分だけ未来に進めます。
nextDays()
2.4.21.2.5.prevDays
prevDaysアクションはタイムテーブルの表示期間を日数分だけ過去に戻します。
prevDays()
2.4.21.3.イベント
本項ではタイムテーブルモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.21.3.1.click
clickイベントはタイムテーブルモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、タイムテーブル内のどこをクリックしたかに応じてevtオブジェクトの以下のプロパティに情報が渡されます。
a. テキスト項目をクリックした場合
- evt.data
- クリックしたデータ項目。以下のプロパティから成るオブジェクト:
- start: 開始日時(Dateオブジェクト)
- end: 終了日時(Dateオブジェクト)
- text: 表示文字列
- bgcolor: 背景色
b. テキスト項目以外をクリックした場合
- evt.datetime
- クリックした日時(Dateオブジェクト)
2.4.21.3.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.21.3.3.doubleclick
doubleclickイベントはタイムテーブルモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.21.3.4.mousedown
mousedownイベントはタイムテーブルモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.21.3.5.mouseup
mouseupイベントはタイムテーブルモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.22.クロス集計設定(プラグイン)
クロス集計設定モジュールはDBテーブル・DBビューのクロス集計を行なうための各種オプションを対話的に設定するためのモジュールです。クロス集計結果の表示には【クロス集計表】モジュールおよび【グラフ】モジュールを用います。
2.4.22.1.プロパティ
2.4.22.1.1.autoUpdate
autoUpdateプロパティはクロス集計設定モジュールの内容が更新されたときに連携先(クロス集計表、グラフ)の表示を自動的に更新するかどうかを指定します。以下に例を示します。
buddyscreen.items.CROSSCONFIG1.autoUpdate = true
autoUpdateプロパティには真偽値を与えます。trueを与えると自動更新機能が有効になり、それ以外を与えると無効になります。
※設計画面でのアイテム属性「自動更新」と対応します。
2.4.22.1.2.crossOptions
crossOptionsプロパティには、スクリーン設計画面でのアイテム属性「クロス集計設定」で設定した内容がオブジェクトとしてセットされています。
2.4.22.1.3.disabled
disabledプロパティは、クロス集計設定モジュールを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.CROSSCONFIG1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応します。
2.4.22.1.4.readOnly
readOnlyプロパティは、クロス集計設定モジュールを読み取り専用に設定します。以下に例を示します。
buddyscreen.items.CROSSCONFIG1.readOnly = true
readOnlyプロパティの値には真偽値を与えます。値が真のときは読み取り専用になり、それ以外のときは読み取り専用の状態が解除されます。
※設計画面でのアイテム属性「読み取り専用」と対応しています。
2.4.22.1.5.screenItem
screenItemプロパティには、スクリーン設計画面でのアイテム属性「連携先」で設定した内容がスクリーンアイテム名の文字列の配列としてセットされています。
2.4.22.1.6.useDialog
useDialogプロパティはクロス集計設定モジュールを画面上にボタンとして表示し、ボタンが押されたらクロス集計設定画面をダイアログで表示するように設定します。以下に例を示します。
buddyscreen.items.CROSSCONFIG1.useDialog = true
useDialogプロパティには真偽値を与えます。trueを与えるとダイアログとして表示する機能が有効になり、それ以外を与えると無効になります。
※設計画面でのアイテム属性「ダイアログ化」と対応します。
2.4.22.2.イベント
本項ではクロス集計モジュールから発生するイベントについて説明します。
2.4.22.2.1.click
clickイベントはクロス集計設定モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.22.2.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.22.2.3.doubleclick
doubleclickイベントはクロス集計設定モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.22.2.4.mousedown
mousedownイベントはクロス集計設定モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.22.2.5.mouseup
mouseupイベントはクロス集計設定モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.22.2.6.update
updateイベントは次のいずれかの場合に発生します。
-
クロス集計設定の内容を変更したとき(自動更新が有効の場合)。
-
クロス集計設定モジュールの更新ボタンが押されたとき(自動更新が無効の場合)。
イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('update', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evt.eventプロパティには以下のプロパティから成るオブジェクトが渡されます。
- crossOptions
- クロス集計設定の内容を表すオブジェクト
- crossDBTable
- クロス集計結果を読み込むためのオブジェクト
crossDBTableオブジェクトのselect()メソッドを呼び出すとサーバから集計データを読み込みます。以下に例を示します。
// クロス集計結果を表すオブジェクトを得る
const {crossDBTable} = evt.event
// サーバから集計データを読み込む
const table = await crossDBTable.select()
// データをクロス集計表モジュールで表示する
buddyscreen.items.CROSSTABLE1.table = table
2.4.23.クロス集計表(プラグイン)
2.4.23.1.プロパティ
2.4.23.1.1.defaultWidth
defaultWidthプロパティは、クロス集計表の列の表示幅を設定したり現在の表示幅を得たりするのに用います。以下に例を示します。
buddyscreen.items.CROSSTABLE1.defaultWidth = 200
2.4.23.1.2.placeholder
placeholderプロパティは、クロス集計表にデータが設定されていないときに表示する文字列を指定します。以下に例を示します。
buddyscreen.items.CROSSTABLE1.placeholder = "データがありません"
※設計画面でのアイテム属性「プレースホルダ」と対応しています。
2.4.23.1.3.table
tableプロパティは、クロス集計設定モジュールのupdateイベントを通じて渡されるクロス集計データをクロス集計表モジュールで表示するのに用います。このプロパティは書き込み専用です。以下に例を示します。
// updateイベント発生時に実行する処理
buddyscreen.items.CROSSCONFIG1.on('update', async function(evt){
// 1. クロス集計結果を表すオブジェクトを得る
const {crossDBTable} = evt.event
// 2. サーバから集計データを読み込む
const table = await crossDBTable.select()
// 3. 読み込んだ集計データを表示する
buddyscreen.items.CROSSTABLE1.table = table
})
この例ではクロス集計設定モジュール(CROSSCONFIG1)のupdateイベントの処理内容を次のように記述しています。
-
まずイベントオブジェクトevtからクロス集計結果を表すオブジェクトcrossDBTableを取得します。
-
このオブジェクトのselect()アクションを呼んでサーバから集計データを読み込みます。
-
読み込んだ集計データをクロス集計表モジュール(CROSSTABLE1)のtableプロパティに設定して、データを表示します。
なお、クロス集計設定モジュールの「連携先」にクロス集計表モジュールを入れた場合には集計データの受け渡しが自動的に行われます。その場合、上述の例のようなupdateイベントハンドラを記述する必要はありません。
2.4.23.2.イベント
2.4.23.2.1.click
Clickイベントはクロス集計表モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.23.2.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.23.2.3.doubleclick
contextmenuイベントはクロス集計表モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.23.2.4.mousedown
mousedownイベントはクロス集計表モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.23.2.5.mouseup
mouseupイベントはクロス集計表モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.24.地図(プラグイン)
地図モジュールは画面上に地図を表示するモジュールです。地図上には緯度・経度で指定した地点にマーカーを設けて情報を表示することができます。
2.4.24.1.プロパティ
2.4.24.1.1.L
Lプロパティは地図モジュールが地図の表示に用いているLeafletライブラリを参照するためのプロパティです。
2.4.24.1.2.lat
latプロパティは地図モジュールで表示する地図の中心の緯度を設定したり現在の緯度を求めたりするのに用います。以下に例を示します。
const lat = buddyscreen.items.MAP1.lat
※設計画面でのアイテム属性「緯度」と対応しています。
2.4.24.1.3.lng
lngプロパティは地図モジュールで表示する地図の中心の経度を設定したり現在の経度を求めたりするのに用います。以下に例を示します。
const lng = buddyscreen.items.MAP1.lng
※設計画面でのアイテム属性「経度」と対応しています。
2.4.24.1.4.map
mapプロパティは地図モジュールが地図の表示に用いているLeafletライブラリの地図インスタンスを保持しているプロパティです。このプロパティは読み取り専用です。
2.4.24.1.5.mapSource
mapSourceプロパティは地図モジュールで表示する地図データのソース(供給源)を設定したり現在のソースを得たりするのに用います。以下に例を示します。この例ではソースを国土地理院標準タイルに設定しています。
buddyscreen.items.MAP1.mapSource = "std"
mapSourceプロパティには次のいずれかの値を与えます。
- 定義済みのソース名:次のソース名が利用できます。
- "std"
- 標準
- "pale"
- 淡色
- "blank"
- 白地図
- "seamlessphoto"
- 写真
- "relief"
- 色別標高図
- 以下のプロパティからなるオブジェクト
- url
- 地図表示ライブラリLeafletで利用できるソースのURL
- options
- 以下のプロパティからなるオプションオブジェクト
- attribution: 名称などソースの情報として表示する文字列(HTML)
※設計画面でのアイテム属性「地図データ」と対応しています。
2.4.24.1.6.markers
markersプロパティは地図モジュールで表示するマーカーをマーカーオブジェクトの配列として表すプロパティです。このプロパティは読み取り専用です。例えば最初のマーカーオブジェクトを得るには次のようにします。
const marker = buddyscreen.items.MAP1.markers[0]
マーカーを追加削除するにはaddMarker, clearMarkers, delMarkerの各アクションを使用してください。
2.4.24.1.7.zoom
zoomプロパティは地図モジュールで表示する地図のズーム倍率を設定したり現在の倍率を求めたりするのに用います。以下に例を示します。
const zoom = buddyscreen.items.MAP1.zoom
※設計画面でのアイテム属性「ズーム」と対応しています。
2.4.24.2.アクション
本項では地図モジュールのアクションについて説明します。
2.4.24.2.1.addMarker
addMarkerアクションは緯度・経度で表された地点にマーカーを追加表示します。マーカーにはポップアップ表示されるマークアップ付きテキスト(HTML)を付与できます。
addMarker(data)
data引数には以下のプロパティから成るオブジェクトを与えます。
- lat
- マーカーを設ける地点の緯度
- lng
- マーカーを設ける地点の経度
- opacity
- マーカーの透明度(0~1の実数値)。1は完全な不透明を表す
- popup
- ポップアップ表示するHTML文字列
addMarkerアクションは追加されたマーカーオブジェクトを返します。
2.4.24.2.2.clearMarkers
clearMarkersアクションはすべてのマーカーを削除します。
clearMarkers()
2.4.24.2.3.delMarker
delMarkerアクションはマーカーをひとつ削除します。
delMarker(marker)
marker引数には削除するマーカーオブジェクトを与えます。
2.4.24.2.4.showMap
showMapアクションは緯度・経度で表された地点を地図モジュールに表示します。
showMap(data)
data引数には以下のプロパティから成るオブジェクトを与えます。
- lat
- 表示する地点の緯度
- lng
- 表示する地点の経度
- zoom
- 表示倍率
2.4.24.3.イベント
本項では地図モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.24.3.1.change
changeイベントは地図モジュールが表示する場所(緯度、経度)や倍率が変化したときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.bounds
- 地図の表示範囲。値は以下のプロパティからなるオブジェクト。
- _northEast: 表示範囲の北東角の位置を表す { lat: 緯度, lng: 経度 } の形式のオブジェクト
- _southWest: 表示範囲の南西角の位置を表す { lat: 緯度, lng: 経度 } の形式のオブジェクト
- evt.lat
- 地図の中心の緯度
- evt.lng
- 地図の中心の経度
- evt.zoom
- 地図の表示倍率
2.4.24.3.2.click
clickイベントは地図モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.bounds
- 地図の表示範囲。値は以下のプロパティからなるオブジェクト。
- _northEast: 表示範囲の北東角の位置を表す { lat: 緯度, lng: 経度 } の形式のオブジェクト
- _southWest: 表示範囲の南西角の位置を表す { lat: 緯度, lng: 経度 } の形式のオブジェクト
- evt.lat
- クリックされた地点の緯度
- evt.lng
- クリックされた地点の経度
- evt.zoom
- 地図の表示倍率
2.4.24.3.3.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.24.3.4.doubleclick
doubleclickイベントは地図モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.24.3.5.mousedown
mousedownイベントは地図モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.24.3.6.mouseup
mouseupイベントは地図モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.24.4.マーカーオブジェクト
本項では地図モジュールで扱うマーカーオブジェクトについて説明します。マーカーオブジェクトを作成するにはaddMarkerアクションを使用します。
2.4.24.4.1.id
idプロパティはマーカーオブジェクトを一意に区別できる識別子です。このプロパティは読み取り専用です。
2.4.24.4.2.instance
instanceプロパティはマーカーオブジェクトに対応するLeafletライブラリのマーカーインスタンスを保持するプロパティです。このプロパティは読み取り専用です。
2.4.24.4.3.lat
latプロパティはマーカーの表示位置の緯度を設定したり現在の緯度を得たりするのに用います。以下に例を示します。
const lat = buddyscreen.items.MAP1.markers[0].lat
2.4.24.4.4.lng
lngプロパティはマーカーの表示位置の経度を設定したり現在の経度を得たりするのに用います。以下に例を示します。
const lng = buddyscreen.items.MAP1.markers[0].lng
2.4.24.4.5.on()
onアクションはマーカーにイベントハンドラを追加します。
on(name, handler)
name引数にはLeafletライブラリで利用できるイベント名を、handler引数には関数オブジェクトを与えます。
2.4.24.4.6.opacity
opacityプロパティはマーカーの透明度を設定したり現在の透明度を得たりするのに用います。以下に例を示します。
const opacity = buddyscreen.items.MAP1.markers[0].opacity
2.4.24.4.7.popup
popupプロパティはマーカーのポップアップ文字列を設定したり現在のポップアップ文字列を得たりするのに用います。以下に例を示します。
const popup = buddyscreen.items.MAP1.markers[0].popup
2.4.25.グラフ(プラグイン)
グラフモジュールはデータを可視化するグラフを表示するためのモジュールです。
2.4.25.1.プロパティ
2.4.25.1.1.autoUpdate
autoUpdateプロパティはグラフモジュールのdataプロパティが更新されたときに描画を自動的に更新するかどうかを指定します。以下に例を示します。
buddyscreen.items.GRAPH1.autoUpdate = true
autoUpdateプロパティには真偽値を与えます。trueを与えると自動更新機能が有効になり、それ以外を与えると無効になります。
※設計画面でのアイテム属性「自動更新」と対応します。
2.4.25.1.2.chart
chartプロパティはグラフモジュールの表示に用いられているChart.jsのチャートオブジェクトを返します。このプロパティは読み取り専用です。
2.4.25.1.3.data
dataプロパティはグラフモジュールに表示するグラフの内容を指定するのに用います。以下に例を示します。この例では、DBテーブル・ビューから読み込んだデータを渡しています。
const tableName = "table1" // テーブル名
const table = buddy.app.findModel(tableName)
const result = await table.select()
buddyscreen.items.GRAPH1.data = result
また、グラフ表示ライブラリChart.jsのデータ構造を直接渡すこともできます。以下に例を示します。
const data = {
labels: ["1", "2", "3"],
datasets: [{
label: "Dataset",
data: [1, 4, 9],
borderColor: "red",
backgroundColor: "pink",
}],
}
buddyscreen.items.GRAPH1.data = data
この場合、dataプロパティにはChart.jsのdataプロパティに指定できるすべてのオプションが指定できます。詳しくはChart.jsのドキュメントを参照してください。
2.4.25.1.4.dataColors
dataColorsプロパティはグラフモジュールで用いられる描線のデフォルトの色セットを指定します。以下に例を示します。
const dataColors = [
'#4dc9f6',
'#f67019',
'#f53794',
'#537bc4',
'#acc236',
'#166a8f',
'#00a950',
'#58595b',
'#8549ba',
]
buddyscreen.items.GRAPH1.dataColors = dataColors
dataColorsプロパティには色指定の文字列の配列を与えます。
※設計画面でのアイテム属性「データ系列色」と対応します。
2.4.25.1.5.type
typeプロパティはグラフモジュールが表示するグラフの種類を指定します。以下に例を示します。
buddyscreen.items.GRAPH1.type = "bar"
typeプロパティには次のいずれかの文字列を与えます。
- "bar"
- 棒グラフ
- "bubble"
- バブルグラフ
- "doughnut"
- ドーナツ円グラフ
- "line"
- 折れ線グラフ
- "pie"
- 円グラフ
- "polarArea"
- ポラー円グラフ
- "radar"
- レーダーチャート
- "scatter"
- 散布図
※設計画面でのアイテム属性「グラフの種類」と対応します。
2.4.25.2.アクション
本項ではグラフモジュールのアクションについて説明します。
2.4.25.2.1.dataColor
dataColorアクションはグラフ描画に用いられるデフォルトの色セットの要素を返します。
buddyscreen.items.モジュール名.dataColor(index)
index引数には色セットの要素の番号(最初が0)を指定します。
2.4.25.2.2.update
updateアクションは、グラフモジュールの描画を更新します。
buddyscreen.items.モジュール名.update()
自動更新を有効にしている場合にはupdateアクションはdataプロパティを更新したときに自動的に呼ばれます。
2.4.25.3.イベント
2.4.25.3.1.click
clickイベントはグラフモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
モジュール名_onClick: function(evt){ ... }
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.25.3.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.25.3.3.doubleclick
doubleclickイベントはグラフモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.25.3.4.mousedown
mousedownイベントはグラフモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.25.3.5.mouseup
mouseupイベントはグラフモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.26.キャンバス(プラグイン)
キャンバスモジュールは、スクリプトにより画面上に図形や文字列を描画するモジュールです。
キャンバスモジュールに図形を描画するには、まず【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
2.4.26.1.プロパティ
2.4.26.1.1.height
heightプロパティはキャンバスの現在の高さを返します。このプロパティは読み取り専用です。
2.4.26.1.2.width
widthプロパティはキャンバスの現在の幅を返します。このプロパティは読み取り専用です。
2.4.26.2.アクション
本項ではキャンバスモジュールのアクションについて説明します。
2.4.26.2.1.getContext
getContextアクションはキャンバスの描画コンテキストを返します。
buddyscreen.items.モジュール名.getContext(contextType)
contextType引数には描画コンテキストの種類("2d", "webgl"など)を与えます。
2.4.26.3.イベント
本項ではキャンバスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。
2.4.26.3.1.click
clickイベントはキャンバスがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.26.3.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.26.3.3.doubleclick
doubleclickイベントはキャンバスがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.26.3.4.drop
dropイベントはキャンバスに対してファイルがドロップされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('drop', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.files
- ドロップされたファイルの一覧を表す配列。配列の要素は以下のプロパティからなるオブジェクト。
- name: ファイル名
- size: ファイルサイズ
- type: ファイル種別(MIMEタイプ)
- upload: ファイルをサーバーにアップロードする関数
2.4.26.3.5.mousedown
mousedownイベントはキャンバス上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.26.3.6.mouseup
mouseupイベントはキャンバス上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.26.3.7.resize
resizeイベントはキャンバスの大きさが変更されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('resize', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.27.スクリーンコンテナ
スクリーンコンテナモジュールは、別のスクリーンを画面上に埋め込むためのモジュールです。埋め込まれる側の別スクリーンを「内側」、スクリーンコンテナが設けられたスクリーンを「外側」と呼びます。内側スクリーンの埋め込み方法には次の2つがあります。
a. 1つのスクリーンコンテナ内に1つだけ内側スクリーンを表示する(デフォルト)。
b. 内側スクリーンを0個以上複製して反復表示する。
内側スクリーンの反復表示回数を指定するには後述のsetIterateアクションを用います。デフォルトの反復表示回数は1です。
2.4.27.1.プロパティ
2.4.27.1.1.data
dataプロパティにはスクリーンコンテナに埋め込むスクリーンを与えます。以下に例を示します。
const screenName = "スクリーン名"
buddyscreen.items.SCREENCONTAINER1.data = buddy.app.screen[screenName]
上の例ではscreenNameに与えた名前のスクリーンをスクリーンコンテナに埋め込みます。
dataプロパティの値をスクリーンの配列にすると1つのスクリーンコンテナに複数のスクリーンを埋め込むことができます。以下に例を示します。
const screenName = "スクリーン名"
const data = new Array(2)
data.fill(buddy.app.screen[screenName])
buddyscreen.items.SCREENCONTAINER1.data = data
上の例では長さが2の配列を設けて、fillメソッドで配列のすべての要素を同じスクリーンに設定し、その配列をdataプロパティに代入しています。これにより同じスクリーンが2回繰り返して表示されます。
上の例では同じスクリーンを繰り返しましたが、異なるスクリーンを要素とする配列を代入することも可能です。
2.4.27.2.アクション
本項ではスクリーンコンテナモジュールのアクションについて説明します。
2.4.27.2.1.send
埋め込まれたスクリーンにデータを送ります。
buddyscreen.items.モジュール名.send(data)
data引数には埋め込まれたスクリーンに送るデータの配列を与えます。配列の最初の要素は1つ目のスクリーンに送られます。次の要素があれば2つ目のスクリーンに送られます。以下同様に、n番目の要素があればn番目のスクリーンに送られます。
2.4.27.3.イベント
本項ではスクリーンコンテナから発生するイベントについて説明します。
2.4.27.3.1.blur
blurイベントはスクリーンコンテナから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.27.3.2.click
clickイベントはスクリーンコンテナがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.27.3.3.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.27.3.4.doubleclick
doubleclickイベントはスクリーンコンテナがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.27.3.5.focus
focusイベントはスクリーンコンテナに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.27.3.6.keydown
keydownイベントはスクリーンコンテナ上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.27.3.7.keypress
keypressイベントはスクリーンコンテナ上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.27.3.8.keyup
keyupイベントはスクリーンコンテナ上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.27.3.9.mousedown
mousedownイベントはスクリーンコンテナ上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.27.3.10.mouseup
mouseupイベントはスクリーンコンテナ上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.27.3.11.receive
receiveイベントはスクリーンコンテナ内のスクリーンから送信されたイベントを受け取ったときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('receive', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.data
- スクリーンから送信されたデータ
- evt.container_index
- 何番目のスクリーンから送信されたか(先頭が0)
2.4.28.IFrame(プラグイン)
IFrameモジュールはHTMLの<iframe>タグを用いて画面内にネット上のコンテンツ(ウェブページなど)を埋め込むためのモジュールです。
2.4.28.1.プロパティ
2.4.28.1.1.html
srcプロパティはIFrameモジュールに表示するコンテンツをHTML形式で与えるのに用います。以下に例を示します。
buddyscreen.items.IFRAME1.html = "<h1>テスト</h1>"
htmlプロパティを変更するとsrcプロパティの値も変更されます。
2.4.28.1.2.src
srcプロパティはIFrameモジュールに表示するWebページへのリンクを設定したり現在のリンクを取得したりするのに用います。以下に例を示します。
buddyscreen.items.IFRAME1.src = "./files/test.html"
※設計画面でのアイテム属性「ソース」と対応しています。
2.4.28.1.3.value
valueプロパティはsrcプロパティの別名です。
2.4.28.2.イベント
2.4.28.2.1.click
clickイベントはIFrameがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.28.2.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.28.2.3.doubleclick
doubleclickイベントはIFrameがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.28.2.4.mousedown
mousedownイベントはIFrame上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.28.2.5.mouseup
mouseupイベントはIFrame上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.29.手書入力(プラグイン)
2.4.29.1.プロパティ
2.4.29.1.1.dataLink
dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。
2.4.29.1.2.disabled
disabledプロパティは、手書入力モジュールを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.HANDWRITE1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応します。
2.4.29.1.3.fitSize
fitSizeプロパティは手書入力モジュールで背景画像を表示する場合に画像の伸縮をコントロールするためのプロパティです。以下に例を示します。
buddyscreen.items.HANDWRITE1.fitSize = "fit"
fitSizeプロパティの有効な値は次のいずれかの文字列です。
- ''
- 伸縮なし
- 'both'
- 両方にあわせる
- 'fit'
- 縦横比を保持して両方に合わせる
- 'height'
- 高さにあわせる
- 'width'
- 横幅にあわせる
※設計画面でのアイテム属性「画像の伸縮」と対応しています。
2.4.29.1.4.imageSource
imageSourceプロパティは手書入力モジュールの背景画像として表示する表示するファイルのURLを設定するためのプロパティです。以下に例を示します。
buddyscreen.items.HANDWRITE1.imageSource = "files/images/foo.jpg"
※設計画面でのアイテム属性「背景画像」と対応します。
2.4.29.1.5.lineColor
lineWidthプロパティは手書入力に用いる線の色を変更したり現在の線の色を取得したりするのに用います。以下に例を示します。
buddyscreen.items.HANDWRITE1.lineColor = "red"
lineColorプロパティの値にはHTMLで利用可能な色指定(redなどの色名、#000000~#fffff、#000~#fffの数値指定)を与えます。
※設計画面でのアイテム属性「線の色」と対応します。
2.4.29.1.6.lineWidth
lineWidthプロパティは手書入力に用いる線の太さを変更したり現在の線の太さを取得したりするのに用います。以下に例を示します。
buddyscreen.items.HANDWRITE1.lineWidth = 10
buddyscreen.items.HANDWRITE1.lineWidth = "10px"
lineWidthプロパティの値には整数値またはピクセル数(例:"10px")が指定できます。
※設計画面でのアイテム属性「線の太さ」と対応します。
2.4.29.1.7.value
valueプロパティは手書入力モジュールの描画内容を取得したり新しい描画内容に置き換えたりするのに用います。
valueプロパティにnullを代入すると描画内容をクリアします。以下に例を示します。
buddyscreen.items.HANDWRITE1.value = null;
valueプロパティの値は、DBテーブルの文字列(フリー)型のカラムの値として保存したり、DBテーブルから読み取って復元したりできます。
2.4.29.2.アクション
2.4.29.2.1.getContext
getContextアクションは手書入力モジュールに使われているキャンバスの描画コンテキストを返します。
buddyscreen.items.モジュール名.getContext(contextType)
contextType引数には描画コンテキストの種類("2d", "webgl"など)を与えます。
2.4.29.2.2.remove
removeアクションは手書入力モジュールの描画内容から要素を削除します。
buddyscreen.items.モジュール名.remove(num)
num引数(省略可)には削除する要素の数を整数値で与えます。省略すると1を指定したのと同じになります。描画内容は新しく描いた要素から削除されます。
2.4.29.2.3.upload
uploadアクションは手書入力モジュールの描画内容をPNG形式の画像ファイルとしてアップロードします。
buddyscreen.items.モジュール名.upload(dst)
dst引数(省略可)にはアップロード先のディレクトリ名をfiles/からの相対パスで与えます。dst引数を省略すると、データリンクが指定されていたらそのカラムのRootDirを使用し、指定がなければfiles/ディレクトリを使用します。
2.4.29.3.イベント
2.4.29.3.1.click
clickイベントは手書入力モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.29.3.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.29.3.3.doubleclick
doubleclickイベントは手書入力モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.29.3.4.drop
dropイベントは手書入力モジュールに対してファイルがドロップされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('drop', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.files
- ドロップされたファイルの一覧を表す配列。配列の要素は以下のプロパティからなるオブジェクト。
- name: ファイル名
- size: ファイルサイズ
- type: ファイル種別(MIMEタイプ)
- upload: ファイルをサーバーにアップロードする関数
2.4.29.3.5.mousedown
mousedownイベントは手書入力モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.29.3.6.mouseup
mouseupイベントは手書入力モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.29.3.7.resize
resizeイベントは手書入力モジュールの大きさが変更されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('resize', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.30.リンク(プラグイン)
2.4.30.1.プロパティ
2.4.30.1.1.autoDetect
autoDetectプロパティはhrefプロパティの値がメールまたは電話番号かどうかを自動判定する機能を有効にします。以下に例を示します。
buddyscreen.items.LINK1.autoDetect = true
autoDetectプロパティには真偽値を与えます。trueを与えると自動判定機能が有効になり、それ以外を与えると無効になります。
※設計画面でのアイテム属性「自動判定」と対応します。
2.4.30.1.2.dataLink
dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。
2.4.30.1.3.href
targetプロパティはリンクの参照先を設定したり現在の参照先を取得したりするのに用います。以下に例を示します。
buddyscreen.items.LINK1.href = "https://www.google.co.jp/"
※設計画面でのアイテム属性「ターゲット」と対応します。
2.4.30.1.4.target
targetプロパティはリンクがクリックされたときにどのウィンドウ(フレーム)に表示するかを指定します。以下に例を示します。
buddyscreen.items.LINK1.target = "_blank"
この例では新しいウィンドウを開いてリンク先を表示します。
※設計画面でのアイテム属性「ターゲット」と対応します。
2.4.30.1.5.text
textプロパティはリンク(アンカー)として表示する文字列を設定したり現在の文字列を取得したりするのに用います。以下に例を示します。
buddyscreen.items.LINK1.text = "ここをクリックしてダウンロード"
※設計画面でのアイテム属性「文字列」と対応します。
2.4.30.1.6.value
valueプロパティはhrefプロパティの別名です。詳しくは【href】の項を参照してください。
2.4.30.2.イベント
2.4.30.2.1.click
clickイベントは手書入力モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.30.2.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.30.2.3.doubleclick
doubleclickイベントはリンクモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.30.2.4.mousedown
mousedownイベントはリンクモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.30.2.5.mouseup
mouseupイベントはリンクモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.31.コメント(プラグイン)
2.4.31.1.プロパティ
commentGroup(コメントグループを指定)
commentNum(コメントの取得数を指定)
readOnly(アイテムを読み取り専用に設定)
2.4.31.1.1.commentGroup
commentGroupプロパティはコメントグループを指定するのに用います。以下に例を示します。
buddyscreen.items.Comment1.commentGroup = "group1"
※設計画面でのアイテム属性「コメントグループ」と対応します。
2.4.31.1.2.commentNum
commentNumプロパティは一度に取得するコメントの数を指定するのに用います。以下に例を示します。
buddyscreen.items.Comment1.commentNum = 10
※設計画面でのアイテム属性「コメント取得数」と対応します。
2.4.31.1.3.readOnly
readOnlyプロパティは、色選択を読み取り専用に設定します。以下に例を示します。
buddyscreen.items.Comment1.readOnly = true
readOnlyプロパティの値には真偽値を与えます。値が真のときは読み取り専用になり、それ以外のときは読み取り専用の状態が解除されます。
※設計画面でのアイテム属性「読み取り専用」と対応しています。
2.4.31.2.アクション
2.4.31.2.1.loadComment
loadCommentアクションは保存されたコメントデータを読み込みます。
buddyscreen.items.モジュール名.loadComment()
2.4.31.3.イベント
2.4.31.3.1.submit
submitイベントはコメントが投稿されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('submit', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.31.3.2.update
updateイベントはコメントコンポーネントの内容が更新されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('update', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.32.FileList(プラグイン)
2.4.32.1.プロパティ
2.4.32.1.1.list
listプロパティはFileListモジュールに表示するファイルおよびディレクトリの配列を設定したり現在の値を取得したりするのに用います。以下に例を示します。
buddyscreen.items.FileList1.list = [];
buddy.api.readDir() 関数でディレクトリの内容を読み取ってFileListモジュールで表示する例を以下に示します。
const path = ""; // filesディレクトリからの相対パス
const list = await buddy.api.readDir(path);
buddyscreen.items.FileList1.list = list;
2.4.32.1.2.placeholder
placeholderプロパティは、FileListモジュールにデータが設定されていないときに表示する文字列を指定します。以下に例を示します。
buddyscreen.items.FileList1.placeholder = "ここにファイル一覧が表示されます"
※設計画面でのアイテム属性「プレースホルダ」と対応しています。
2.4.32.2.イベント
2.4.32.2.1.click
clickイベントはFileListモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティにはクリックされた項目の情報が渡されます。
- evt.file
- クリックされたファイルまたはディレクトリの情報。ファイル・ディレクトリ以外がクリックされた場合は未定義
ファイル・ディレクトリの情報は以下のプロパティからなるオブジェクトで表されます。
- atime
- 最終アクセス日時
- ctime
- 作成日時
- dir
- ディレクトリならばtrue
- download()
- ファイルをダウンロードする関数
- mtime
- 最終更新日時
- name
- ファイル名またはディレクトリ名
- path
- filesディレクトリからの相対パス
- size
- ファイルサイズ(バイト数)
ファイルの場合は関数を呼び出すとそのファイルをダウンロードできます。以下に例を示します。
if (evt.file && !evt.file.dir) {
evt.file.download()
}
2.4.32.2.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.32.2.3.doubleclick
doubleclickイベントはFileListモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.32.2.4.drop
dropイベントはFileListモジュールに対してファイルがドロップされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('drop', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.files
- ドロップされたファイルの一覧を表す配列。配列の要素は以下のプロパティからなるオブジェクト。
- name: ファイル名
- size: ファイルサイズ
- type: ファイル種別(MIMEタイプ)
- upload: ファイルをサーバーにアップロードする関数
2.4.32.2.5.mousedown
mousedownイベントはFileListモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.32.2.6.mouseup
mouseupイベントはFileListモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.33.FilePreview(プラグイン)
2.4.33.1.プロパティ
2.4.33.1.1.alt
altプロパティはFilePreviewモジュールにデータが設定されていないときに表示する代替テキストを設定したり現在の代替テキストを取得したりするのに用います。以下に例を示します。
buddyscreen.items.FilePreview1.alt = "ファイル"
※設計画面でのアイテム属性「代替テキスト」と対応しています。
2.4.33.1.2.dataLink
dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。
2.4.33.1.3.file
fileプロパティは読み取り専用で、選択されているファイルのFileオブジェクトを得ます。
const file = buddyscreen.items.FilePreview1.file
uploadアクションを実行してアップロードすると、fileプロパティはnullになります。
2.4.33.1.4.fitSize
fitSizeプロパティはFilePreviewモジュールで画像ファイルを表示する場合に適用する画像の伸縮をコントロールするプロパティです。以下に例を示します。
buddyscreen.items.FilePreview1.fitSize = "fit"
fitSizeプロパティの有効な値は次のいずれかの文字列です。
- ''
- 伸縮なし
- 'both'
- 両方にあわせる
- 'fit'
- 縦横比を保持して両方に合わせる
- 'height'
- 高さにあわせる
- 'width'
- 横幅にあわせる
※設計画面でのアイテム属性「画像の伸縮」と対応しています。
2.4.33.1.5.src
srcプロパティはvalueプロパティの別名です。詳しくはvalueプロパティの節を参照してください。
2.4.33.1.6.value
valueプロパティは、FilePreviewモジュールの値として次のように利用します。
ファイル未選択で値もない状態にするにはnullをセットします。
buddyscreen.items.FilePreview1.value = null
サーバーのfiles内のファイルのURL(filesからの相対URL)を値としてセットすることもできます。このときもファイル未選択の状態になります。
buddyscreen.items.FilePreview1.value = "users/test.txt"
uploadアクションを実行してアップロードした後には、valueはアップロードされたファイルのURL(filesからの相対URL)になります。
await buddyscreen.items.FilePreview1.upload("files/users")
const url = buddyscreen.items.FILE1.value
2.4.33.2.アクション
2.4.33.2.1.readAsArrayBuffer
readAsArrayBufferアクションは、選択されたファイルをArrayBufferオブジェクトとして読み取ります。
const data = await buddyscreen.items.FilePreview1.readAsArrayBuffer()
2.4.33.2.2.readAsBinaryString(非推奨)
readAsBinaryStringアクションは、選択されたファイルをバイナリデータとして読み取ります。
const data = await buddyscreen.items.FilePreview1.readAsBinaryString()
readAsBinaryStringアクションの利用は推奨されません。代わりに前述のreadAsArrayBufferアクションを利用してください。
2.4.33.2.3.readAsDataURL
readAsDataURLアクションは、選択されたファイルをデータURLとして読み取ります。
const url = await buddyscreen.items.FilePreview1.readAsDataURL()
データURLとは、内容を含んだ特殊な形式のURLです。例えば画像ファイルの内容を上記のようにしてデータURLとして読み取ると、そのURLを画像モジュールのsrcにセットすることで画像として表示することが可能です。
2.4.33.2.4.readAsText
readAsTextアクションは、選択されたファイルをテキストデータとして読み取ります。
const txt = await buddyscreen.items.FilePreview1.readAsText({encoding: "Shift_JIS"})
引数には {encoding: "…"} としてテキストのエンコーディングを指定します。省略すると UTF8 になります。
2.4.33.2.5.upload
uploadアクションは、選択されたファイルをサーバにアップロードします。アップロードに成功すると、値はアップロードされたファイルのサーバー上でのURLになります。
await buddyscreen.items.FilePreview1.upload("files/users")
引数には files/ で始まるアップロード先のディレクトリを指定します。
アップロードの結果として値にセットされるURLは、files からの相対URLになります。例えば test.txt を上記のように files/users にアップロードすると、値にセットされるのは users/test.txt のようになります。
2.4.33.3.イベント
2.4.33.3.1.click
clickイベントはFilePreviewモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.33.3.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.33.3.3.doubleclick
doubleclickイベントはFilePreviewモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.33.3.4.mousedown
mousedownイベントはFilePreviewモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.33.3.5.mouseup
mouseupイベントはFilePreviewモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.34.QRコード(プラグイン)
QRコードモジュールはQRコードを表示するためのスクリーンモジュールです。また、QRコード画像を作成したりQRコード画像から内容を読み取ったりする機能を提供します。
2.4.34.1.プロパティ
2.4.34.1.1.value
srcプロパティはQRコードモジュールに表示するQRコード(2次元バーコード)画像が表す内容を設定したり現在の内容を取得したりするのに用います。以下に例を示します。
buddyscreen.items.QRCODE1.value = "$url"
valueプロパティの値が $url
の場合はブラウザが現在表示しているページのURLが内容として設定されます。
※設計画面でのアイテム属性「値」と対応しています。
2.4.34.2.イベント
2.4.34.2.1.click
clickイベントはQRコードモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.34.2.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.34.2.3.doubleclick
doubleclickイベントはQRコードモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.34.2.4.keydown
keydownイベントはQRコードモジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.34.2.5.keypress
keypressイベントはQRコードモジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.34.2.6.keyup
keyupイベントはQRコードモジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.34.2.7.mousedown
mousedownイベントはQRコードモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.34.2.8.mouseup
mouseupイベントはQRコードモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.35.スタンプ(プラグイン)
スタンプモジュールは電子的にスタンプ(印鑑)を押す処理を実現するためのスクリーンモジュールです。スタンプモジュールを利用すると稟議のプロセスを容易にアプリとして実現できます。
2.4.35.1.プロパティ
2.4.35.1.1.disabled
disabledプロパティは、スタンプモジュールを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.STAMP1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応します。
2.4.35.1.2.stampGroup
stampGroupプロパティは、スタンプグループの設定を変更したり現在の設定を取得したりするのに用います。
buddyscreen.items.STAMP1.stampGroup = ""
stampGroupプロパティの値として $query
を設定した場合は、クエリに渡されたデータに基づいて 名前=値&...
の形式のグループ名を作ります。
※設計画面でのアイテム属性「スタンプグループ」と対応します。
2.4.35.1.3.stampList
stampListプロパティは、設計画面でのアイテム属性「スタンプリスト」で設定した内容が、{value: 値, symbol: 印影, color: 色} の形式のオブジェクトとしてセットされています。
2.4.35.1.4.userList
userListプロパティは、設計画面でのアイテム属性「ユーザリスト」で設定した内容が、{id: ユーザ名} の形式のオブジェクトとしてセットされています。
2.4.35.2.アクション
2.4.35.2.1.load
loadアクションはスタンプモジュールの状態をキーバリューストアから読み出します。
await buddyscreen.items.STAMP1.load()
2.4.35.3.イベント
2.4.35.3.1.change
clickイベントはスタンプが押されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。またevtオブジェクトの以下のプロパティに情報が渡されます。
- evt.stamp
- 押されたスタンプを表す、以下のプロパティから成るオブジェクト
user: ユーザ名
value: スタンプの値
timestamp: 押印日時(Dateオブジェクト) - evt.list
- 押印済みスタンプの一覧を表す、以下のプロパティから成るオブジェクトの配列
user: ユーザ名
value: スタンプの値
timestamp: 押印日時(Dateオブジェクト)
2.4.35.3.2.click
clickイベントはスタンプモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.35.3.3.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.35.3.4.doubleclick
doubleclickイベントはスタンプモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.35.3.5.keydown
keydownイベントはスタンプモジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.35.3.6.keypress
keypressイベントはスタンプモジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.35.3.7.keyup
keyupイベントはスタンプモジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.35.3.8.mousedown
mousedownイベントはスタンプモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.35.3.9.mouseup
mouseupイベントはスタンプモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.36.タブ(プラグイン)
タブモジュールはスクリーンコンテナの内容を対話的に切り替えるためのタブを設けるスクリーンモジュールです。
2.4.36.1.プロパティ
2.4.36.1.1.disabled
disabledプロパティは、タブモジュールを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.TAB1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応します。
2.4.36.1.2.tab
tabプロパティはタブの表示内容をスクリプトで設定するのに用います。以下に例を示します。
buddyscreen.items.TAB1.tab = ["tab1", "tab2", "tab3"]
この例では名前がそれぞれ「tab1」、「tab2」、「tab3」の3つのタブを作成します。
tabプロパティの値は次のいずれかです。
-
文字列の配列
-
以下のプロパティからなるオブジェクトの配列
- display
- 表示名
- value
- 値
- style
- スタイルオブジェクト
- 以下のカラムをもつDataSetオブジェクト
- display
- 表示名
- value
- 値
2.4.36.1.3.tabWidth
tabWidthプロパティはタブの表示幅を設定したり現在の表示幅を取得したりするのに用います。
tabWidthプロパティの値を読み出すとタブ幅の配列が返されます。
tabWidthプロパティに値をセットするとタブ幅を変更できます。有効な値は、タブ数と同じ長さの数値の配列、または数値です。
-
配列をセットした場合は、配列の1つ目の要素が最初のタブの幅、2つ目の要素が次のタブの幅というようにタブ幅が個別に設定されます。
-
数値をセットした場合はすべてのタブを同じ幅に設定します。
2.4.36.1.4.value
srcプロパティはタブモジュールが表示するタブを設定したり現在の設定を取得したりするのに用います。以下に例を示します。
buddyscreen.items.TAB1.value = "tab1"
※設計画面でのアイテム属性「値」と対応しています。
2.4.36.2.イベント
2.4.36.2.1.change
clickイベントはタブが変更されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。またevtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 選択されたタブ(設計画面のアイテム属性「タブ」で設定した値)
2.4.36.2.2.click
clickイベントはタブモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.36.2.3.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.36.2.4.doubleclick
doubleclickイベントはタブモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.36.2.5.keyup
keydownイベントはタブモジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.36.2.6.keypress
keypressイベントはタブモジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.36.2.7.keyup
keyupイベントはタブモジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.36.2.8.mousedown
mousedownイベントはタブモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.36.2.9.mouseup
mouseupイベントはタブモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.37.ダイアログ入力(プラグイン)
ダイアログ入力モジュールは選択肢入力をダイアログで行なうためのスクリーンモジュールです。
2.4.37.1.プロパティ
2.4.37.1.1.autoLoad
autoLoadプロパティは、選択肢を自動で読み込むかどうかを設定します。以下に例を示します。
buddyscreen.items.DIALOGINPUT1.autoLoad = true
autoLoadプロパティの値には真偽値を与えます。値が真のときは自動読み込みが有効になり、それ以外のときは無効になります。
※設計画面でのアイテム属性「選択肢の自動読込」と対応します。
2.4.37.1.2.dataLink
dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。
2.4.37.1.3.disabled
disabledプロパティは、ダイアログ入力モジュールを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.DIALOGINPUT1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応します。
2.4.37.1.4.list
listプロパティは、ダイアログ入力モジュールで用いる選択肢のリストを設定したり現在の選択肢のリストを取得したりするのに用います。以下に例を示します。
buddyscreen.items.DIALOGINPUT1.list = ["red", "green", "blue"]
listプロパティの値には文字列の配列、または {name: 名前, value: 値} の形式のオブジェクトの配列を与えます。
※設計画面でのアイテム属性「リスト」と対応します。
2.4.37.1.5.placeholder
placeholderプロパティは、ダイアログ入力モジュールに値が設定されていないときに表示する文字列を指定します。以下に例を示します。
buddyscreen.items.DIALOGINPUT1.placeholder = "値を入力してください"
※設計画面でのアイテム属性「プレースホルダ」と対応しています。
2.4.37.1.6.readOnly
readOnlyプロパティは、ダイアログ入力モジュールを読み取り専用に設定します。以下に例を示します。
buddyscreen.items.DIALOGINPUT1.readOnly = true
readOnlyプロパティの値には真偽値を与えます。値が真のときは読み取り専用になり、それ以外のときは読み取り専用の状態が解除されます。
※設計画面でのアイテム属性「読み取り専用」と対応しています。
2.4.37.1.7.value
valueプロパティは、ダイアログ入力モジュールの値を変更したり現在の値を取得したりするのに用います。
buddyscreen.items.DIALOGINPUT1.value = ""
※設計画面でのアイテム属性「値」と対応しています。
2.4.37.2.イベント
2.4.37.2.1.click
clickイベントはダイアログ入力モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.37.2.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.37.2.3.doubleclick
doubleclickイベントはダイアログ入力モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.37.2.4.keydown
keydownイベントはダイアログ入力モジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.37.2.5.keypress
keypressイベントはダイアログ入力モジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.37.2.6.keyup
keyupイベントはダイアログ入力モジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.37.2.7.mousedown
mousedownイベントはダイアログ入力モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.37.2.8.mouseup
mouseupイベントはダイアログ入力モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.38.動作ボタンセット(プラグイン)
動作ボタンセットプラグインは、次の5つの動作ボタンがスクリーンモジュールに追加します。
- 移動ボタン
- Importボタン
- Exportボタン
- Reportボタン
- 通知ボタン
本項で説明するプロパティやイベントは特に限定がなければすべての動作ボタンに共通です。
2.4.38.1.プロパティ
2.4.38.1.1.disabled
disabledプロパティは、動作ボタンを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.モジュール名.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応します。
2.4.38.1.2.targetReport(Reportボタンのみ)
targetReportプロパティは、Reportボタンで出力する対象となるレポートを設定します。以下に例を示します。
buddyscreen.items.モジュール名.targetReport = "report1"
targetReportプロパティの値にはレポート名を文字列で与えます。
※設計画面でのアイテム属性「対象」と対応します。
2.4.38.1.3.targetScreen(移動ボタンのみ)
targetScreenプロパティは、移動ボタンで移動先となるスクリーンを設定します。以下に例を示します。
buddyscreen.items.モジュール名.targetScreen = "screen1"
targetScreenプロパティの値にはスクリーン名を文字列で与えます。
※設計画面でのアイテム属性「対象」と対応します。
2.4.38.1.4.targetTable(Import/Exportボタンのみ)
targetTableプロパティは、Importボタンでインポート先となるテーブル、またはExportボタンでエクスポート元となるテーブル・ビューを設定します。以下に例を示します。
buddyscreen.items.モジュール名.targetTable = "table1"
targetTableプロパティの値にはテーブル名またはビュー名を文字列で与えます。
※設計画面でのアイテム属性「対象」と対応します。
2.4.38.1.5.value
valueプロパティは、動作ボタンに表示されるラベルを変更したり現在の設定を取得したりするのに用います。
buddyscreen.items.モジュール名.value = ""
※設計画面でのアイテム属性「値」と対応しています。
2.4.38.2.イベント
2.4.38.2.1.change(通知ボタンのみ)
clickイベントは通知ボタンで通知が送信されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。またevtオブジェクトのvalueプロパティに情報が渡されます。
- evt.value.type
- 通知の種別。メールの場合は
mail
、ショートメッセージの場合はshort_message
- evt.value.list
- 通知の送信先。{id: ユーザー名} の形式のオブジェクトの配列
2.4.38.2.2.click
clickイベントは動作ボタンがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.38.2.3.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.38.2.4.doubleclick
doubleclickイベントは動作ボタンがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.38.2.5.keydown
keydownイベントは動作ボタン上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.38.2.6.keypress
keypressイベントは動作ボタン上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.38.2.7.keyup
keyupイベントは動作ボタン上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.38.2.8.mousedown
mousedownイベントは動作ボタン上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.38.2.9.mouseup
mouseupイベントは動作ボタン上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.39.多段選択(プラグイン)
多段選択プラグインは階層付きの選択肢入力を行うためのスクリーンモジュールです。
2.4.39.1.プロパティ
2.4.39.1.1.dataLink
dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。
2.4.39.1.2.disabled
disabledプロパティは、多段選択モジュールを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.LAYERSELECT1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応します。
2.4.39.1.3.layerList
layerListプロパティは、多段選択モジュールで用いる階層付きの選択肢を設定するのに用います。
layerListプロパティの設定例を以下に示します。
buddyscreen.items.LAYERSELECT1.layerList = [
{
name: "分類1",
list: [
{name: "商品A"},
{name: "商品B"},
],
},
{
name: "分類2",
list: [
{name: "商品C"},
{name: "商品D"},
{name: "商品E"},
]
},
]
layerListプロパティの値は {name: 名前, list: 配列} の形式のオブジェクトの配列です。listプロパティの値も同じ形式のオブジェクトの配列です。listプロパティは省略できます。
-
listプロパティがあればnameプロパティで指定した名前の階層が作られます。
-
listプロパティを省略するとnameプロパティで指定した値の選択肢が作られます。
※設計画面でのアイテム属性「階層設定」と対応します。
2.4.39.1.4.placeholder
placeholderプロパティは、多段選択モジュールに値が設定されていないときに表示する文字列を指定します。以下に例を示します。
buddyscreen.items.LAYERSELECT1.placeholder = "値を入力してください"
※設計画面でのアイテム属性「プレースホルダ」と対応しています。
2.4.39.1.5.value
valueプロパティは、多段選択モジュールの値を変更したり現在の値を取得したりするのに用います。
buddyscreen.items.LAYERSELECT1.value = ""
※設計画面でのアイテム属性「値」と対応しています。
2.4.39.2.イベント
2.4.39.2.1.change
changeイベントは多段選択モジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
2.4.39.2.2.click
clickイベントは多段選択モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.39.2.3.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.39.2.4.doubleclick
doubleclickイベントは多段選択モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.39.2.5.keydown
keydownイベントは多段選択モジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.39.2.6.keypress
keypressイベントは多段選択モジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.39.2.7.keyup
keyupイベントは多段選択モジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.39.2.8.mousedown
mousedownイベントは多段選択モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.39.2.9.mouseup
mouseupイベントは多段選択モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.40.既読(プラグイン)
既読モジュールは既読管理を容易に実現するためのスクリーンモジュールです。
2.4.40.1.プロパティ
2.4.40.1.1.disabled
disabledプロパティは、既読ボタンを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.READLOG1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応します。
2.4.40.1.2.logGroup
logGroupプロパティは、既読モジュールのログのグループを設定します。
buddyscreen.items.LAYERSELECT1.logGroup = ""
logGroupプロパティの値にはグループ名を文字列で与えます。
logGroupプロパティの値として $query
を設定した場合は、クエリに渡されたデータに基づいて 名前=値&...
の形式のグループ名を作ります。
※設計画面でのアイテム属性「ロググループ」と対応しています。
2.4.40.1.3.logType
logTypeプロパティは、既読モジュールのログのとり方を設定します。
buddyscreen.items.LAYERSELECT1.logType = "first"
logTypeプロパティの値には以下のいずれかを文字列で与えます。
first
- 最初のみ記録する
last
- 最後のみ記録する
all
- すべて記録する
※設計画面でのアイテム属性「ログのとり方」と対応しています。
2.4.40.1.4.value
valueプロパティは、既読ボタンに表示するラベルを変更したり現在のラベルを取得したりするのに用います。
buddyscreen.items.LAYERSELECT1.value = "既読"
※設計画面でのアイテム属性「値」と対応しています。
2.4.40.2.アクション
2.4.40.2.1.reload
reloadアクションは既読ログを再読み込みします。
await buddyscreen.items.モジュール名.reload()
2.4.40.3.イベント
2.4.40.3.1.click
clickイベントは既読モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.40.3.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.40.3.3.doubleclick
doubleclickイベントは既読モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.40.3.4.keydown
keydownイベントは既読モジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.40.3.5.keypress
keypressイベントは既読モジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.40.3.6.keyup
keyupイベントは既読モジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.40.3.7.mousedown
mousedownイベントは既読モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.40.3.8.mouseup
mouseupイベントは既読モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.41.PDF閲覧(プラグイン)
PDF閲覧モジュールはPDFファイルの内容を表示するためのスクリーンモジュールです。
2.4.41.1.プロパティ
2.4.41.1.1.scale
scaleプロパティはPDF閲覧モジュールの表示倍率を指定します。
buddyscreen.items.PDFVIEWER1.scale = 1.0
scaleプロパティには数値を与えます。
2.4.41.1.2.src
srcプロパティはPDF閲覧モジュールで表示するPDFファイルを指定します。
buddyscreen.items.PDFVIEWER1.src = "files/sample.pdf"
srcプロパティにはPDFファイルのURLまたはバイナリデータを与えます。上記の例ではアプリのfiles配下のPDFファイルのURLを指定しています。
2.4.41.2.アクション
2.4.41.2.1.load
loadアクションはPDF閲覧モジュールで表示するPDFファイルを読み込みます。
await buddyscreen.items.PDFVIEWER1.load(data)
data引数には読み込むPDFファイルを以下のいずれかの方法で与えます。
- PDFファイルを参照するURL文字列
- PDFファイルを表すFileオブジェクト(例:ファイル選択モジュールのfileプロパティ)
- PDFファイルの内容を表すArrayBufferオブジェクト
2.4.41.2.2.upload
uploadアクションはページを画像化してアップロードします。画像形式はPNGです。
await buddyscreen.items.モジュール名.upload(path, options)
path引数にはアップロード先のパス名(files配下のPNG画像のファイル名)を与えます。options引数には以下のプロパティからなるオブジェクトを与えます(この引数は省略できます)。
- page
- ページ番号(最初のページが1)。省略すると1ページ目を画像化します
- scale
- スケール(省略可、デフォルト値は1)
2.4.41.3.イベント
2.4.41.3.1.click
clickイベントはPDF閲覧モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.41.3.2.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.41.3.3.doubleclick
doubleclickイベントはPDF閲覧モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.41.3.4.drop
dropイベントはドラッグアンドドロップ操作でPDF閲覧モジュールにファイルがドロップされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('dropk', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、以下のプロパティにドロップ操作についての情報が渡されます。
- evt.event.files
- ドロップされたファイルの一覧(HTML FileListオブジェクト)。
- evt.files
- ドロップされたファイルの一覧。以下のプロパティから成るオブジェクトの配列
- name: 名前
- size: サイズ。単位はバイト
- type: MIMEタイプ(例:"application/pdf")
- file: HTML Fileオブジェクト
- async upload(dst): ファイルをアップロードする関数。dst引数(省略可)にはアップロード先のディレクトリ名を与える
2.4.41.3.5.mousedown
mousedownイベントはPDF閲覧モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.41.3.6.mouseup
mouseupイベントはPDF閲覧モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.42.画像付きリスト(プラグイン)
画像付きリストは、選択肢を画像付きで表示できるリストモジュールです。
2.4.42.1.プロパティ
2.4.42.1.1.autoLoad
autoLoadプロパティは、選択肢を自動で読み込むかどうかを設定します。以下に例を示します。
buddyscreen.items.IMAGELIST1.autoLoad = true
autoLoadプロパティの値には真偽値を与えます。値が真のときは自動読み込みが有効になり、それ以外のときは無効になります。
※設計画面でのアイテム属性「選択肢の自動読込」と対応します。
2.4.42.1.2.dataLink
dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。
2.4.42.1.3.disabled
disabledプロパティは、画像付きリストモジュールを操作できない無効状態に設定します。以下に例を示します。
buddyscreen.items.IMAGELIST1.disabled = true
disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。
※設計画面でのアイテム属性「使用不可」と対応します。
2.4.42.1.4.images
imagesプロパティは、画像付きリストモジュールで表示する画像を設定します。次のいくつかの方法があります。
- 選択肢と同じ数の画像の配列で与える。
buddyscreen.items.IMAGELIST1.images = ["path/foo.png", "path/bar.png", ...]
- 選択肢を引数に取り、画像を返す関数として与える
buddyscreen.items.IMAGELIST1.images = (item)=>{ ... }
- 選択肢の値と、それに対応する画像を {値: 画像, ...} の形式のオブジェクトで与える
buddyscreen.items.IMAGELIST1.images = {foo: "path/foo.png", bar: "path/bar.png", ...}
いずれの場合も、画像はURL(ファイル名またはデータURL)で与えます。
また、imagesプロパティの値をnullまたはundefinedに設定すると画像を表示しなくなります。
2.4.42.1.5.imageSize
imageSizeプロパティは、画像付きリストモジュールで表示する画像の大きさを設定します。以下に例を示します。
buddyscreen.items.IMAGELIST1.imageSize = 32
imageSizeプロパティの値は32、128、256のいずれかです。
※設計画面でのアイテム属性「画像サイズ」と対応します。
2.4.42.1.6.list
listプロパティは、画像付きリストの現在の選択肢を得たり、新たにセットしたりします。
設計画面でのアイテム属性「リスト」でセットした選択肢は、{name: 名称, value: 値} のオブジェクトの配列となります。
const list = buddyscreen.items.IMAGELIST1.list
スクリーンのスクリプトでlistプロパティに選択をセットする場合には、次のいくつかの方法があります。
- {name: 名称, value: 値} のオブジェクトの配列
buddyscreen.items.IMAGELIST1.list = [
{"foo": 1},
{"bar": 2}
]
- 文字列の配列
この場合は表示される名称もそれに対応する値も同じものになります。
buddyscreen.items.IMAGELIST1.list = ["foo", "bar"]
- 「開始値-終了値」での範囲指定
開始と終了の整数値をハイフンでつないだ範囲で指定します。その前後に任意の文字列を指定できます。数値が値となります。
次の例は、[{name:"午前0時", value:0},…{name:"午前11時", value:11}] という配列をセットするのと同じです。
buddyscreen.items.IMAGELIST1.list = "午前0-11時"
- 都道府県と曜日
都道府県(北海道~沖縄県)については "都道府県"、曜日(日曜日~土曜日)については "日-土曜日" とセットすることで指定できます。
buddyscreen.items.IMAGELIST1.list = "都道府県"
buddyscreen.items.IMAGELIST1.list = "日-土曜日"
- データベースから読み出したデータ
DBテーブルやDBビューからselect()で読み出したデータ(DataSetオブジェクト)をセットすることで、選択肢とすることができます。ただし、nameカラムとvalueカラムが選択肢のnameとvalueになりますので、カラム名が異なる場合はrename()を使って調整します。
const data = await buddy.app.dbtable.table1.select()
buddyscreen.items.IMAGELIST1.list = data.rename("ID", "value")
※オブジェクトの配列の場合と、データベースから読み出したDataSetの場合、nameで指定した値がnullまたはundefinedの場合は、valueで指定した値がnameに使われます。
2.4.42.1.7.placeholder
placeholderプロパティは、画像付きリストモジュールにデータが設定されていないときに表示する文字列を指定します。以下に例を示します。
buddyscreen.items.IMAGELIST1.placeholder = "ここに画像付きリストが表示されます"
※設計画面でのアイテム属性「プレースホルダ」と対応しています。
2.4.42.1.8.selected
selectedプロパティは、画像付きリストで選択されている選択肢を取得します。このプロパティは読み取り専用です。
-
選択タイプが単一(single)のときは、{name: 名称, value: 値} のオブジェクトが返されます。
-
選択タイプが複数(multi)のときは、{name: 名称, value: 値} のオブジェクトの配列が返されます。
2.4.42.1.9.selectType
selectTypeプロパティは、画像付きリストの選択の仕方の、現在値を得たり新たな値をセットしたりします。
buddyscreen.items.IMAGELIST1.selectType = "single"
セットする値は次のいずれかです。
- none
- 選択なし
- single
- 単一選択
- multi
- 複数選択
※設計画面でのアイテム属性「選択タイプ」と対応します。
2.4.42.1.10.value
valueプロパティは、画像付きリストで選択されている選択肢の値を取得したり新しい値を設定したりするのに用います。
buddyscreen.items.IMAGELIST1.value = 1
-
選択タイプが単一(single)のとき、valueプロパティの値は選択肢の値です。
-
選択タイプが複数(multi)のとき、valueプロパティの値は選択肢の値の配列です。
2.4.42.2.イベント
2.4.42.2.1.change
changeイベントは画像付きリストモジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。
- evt.value
- 変化後の値
2.4.42.2.2.click
clickイベントは画像付きリストモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.42.2.3.contextmenu
contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.42.2.4.doubleclick
doubleclickイベントは画像付きリストモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.42.2.5.keydown
keydownイベントは画像付きリストモジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.42.2.6.keypress
keypressイベントは画像付きリストモジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.42.2.7.keyup
keyupイベントは画像付きリストモジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.42.2.8.mousedown
mousedownイベントは画像付きリストモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.4.42.2.9.mouseup
mouseupイベントは画像付きリストモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。
buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })
イベントハンドラの引数evtにはイベントオブジェクトが渡されます。
2.5.イベントハンドラ
イベントは、実行中のアプリケーションで発生した事象についてスクリーンプログラムが受け取るメッセージ(通知)です。イベントは大きく分けて次の3種類があります。
-
マウスボタンの押下やキーボード入力、画面サイズの変更などアプリ利用者の入力デバイスの操作によって発生するイベント(click,keypress,resizeなど)。
-
スクリーンプログラムの起動や終了、画像ファイルの読み込みエラーなどの事象に応じて発生するイベント(load,unloadなど)。
-
スクリーンプログラムから別のスクリーンプログラムへアプリケーション固有の事象の発生を通知するイベント(receiveなど)。
あるイベントが発生したという通知をスクリーンプログラムが受け取るには、そのイベントに呼応する名前のイベントハンドラを記述します。たとえばBUTTON1というモジュール名のボタンが押されたときに生じるclickイベントを受け取るには以下のようなイベントハンドラを追加します。
buddyscreen.items.BUTTON1.on("click", async(evt)=>{
// ここにclickイベントの処理内容を記述します。例:
api.dialog.alert("BUTTON1が押されました。");
})
2.6.イベントオブジェクト
イベントオブジェクトは、一部のイベントハンドラにevt引数として渡されてくるオブジェクトです。イベントオブジェクトがハンドラのevt引数に渡されてくるイベントには以下の3種類があります。
・キーボードイベント
・フォーカスイベント
・マウスイベント
2.6.1.共通プロパティ
イベントオブジェクトにはイベントの種類に関わらず以下の共通プロパティがあります。
- event
- イベントを詳細に記述する種々のプロパティから成るオブジェクト
- index
- 垂直・水平配置BOXモジュールで繰返し回数の指定により内側のスクリーンモジュールが複数表示されている場合に、何番目のスクリーンモジュールに対して生じたイベントかを表す番号(最初が0)
- name
- イベント名
- item
- イベントの対象となるオブジェクト(スクリーンモジュール)
evt.itemオブジェクトの主なプロパティは以下の通りです。
- ItemName
- アイテム名
- ItemOptions
- アイテムの設定を表すオブジェクト
- ItemStyle
- アイテムのスタイルを表すオブジェクト
- ItemType
- アイテムの種類
- ScreenItems
- 子のスクリーンアイテムの配列
evt.eventオブジェクトの内容は、発生したイベントによって異なります。
2.6.2.キーボードイベント
キーボードイベントには以下のイベントがあります。
keydown
keypress
keyup
これらのイベントに対するeventオブジェクトは次のデータ型と名前のプロパティから成ります。
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
2.6.3.フォーカスイベント
フォーカスイベントには以下のイベントがあります。
blur
focus
これらのイベントに対するeventオブジェクトは次のデータ型と名前のプロパティから成ります。
DOMEventTarget relatedTarget
2.6.4.マウスイベント
マウスイベントには以下のイベントがあります。
click
contextmenu
doubleclick
mousedown
mouseup
これらのイベントに対するeventオブジェクトは次のデータ型と名前のプロパティから成ります。
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
3.プラグイン
-
フレームワーク2では、アプリを新規作成した際の標準の状態では含まれていないモジュールなどを、プラグインとして組み込んで利用することができます。
-
プラグインには、スクリーンモジュール、スクリプトで利用するbuddy.libに機能を追加するもの、その他があります。
どのようなプラグインがあるかは、開発ガイドに一覧があります。 -
スクリーンモジュールのプラグインについては、本マニュアルのスクリーンモジュールの項の中で「(プラグイン)」として説明しています。
-
buddy.libに機能を追加するプラグインについては、本マニュアルのbuddy.libの項の中で「(プラグイン)」として説明しています。
-
その他のプラグインの中で「拡張フィルタ」によって追加されるフィルタについては、本マニュアルのbuddy.lib.filterの項の中で「(プラグイン)」として説明しています。
-
その他のプラグインの中で「レイアウト画面テンプレートセット」については、スクリーンを新規作成する際のテンプレートを追加するものなので、本マニュアルでは説明しません。開発ガイドをご覧ください。
4.サーバー機能設計
本項ではサーバー機能設計のAPIについて説明します。
4.1.概要
サーバー機能設計では、サーバー側で実行されるJavaScriptプログラム(以下、サーバー機能スクリプトと呼びます)を作成します。サーバー機能スクリプトは機能名で識別され、スクリーンプログラムや別のサーバー機能から呼び出されます。スクリーンプログラムはブラウザ(クライアント側)で動作するのに対して、サーバー機能スクリプトはサーバー上で動作します。
4.1.1.基本的な書き方
フレームワーク2では、白紙のサーバー機能を新規作成すると、次の内容があらかじめ用意されます。
result = async function(buddy){
return 0
}
このresultにセットされた関数の中に必要な処理を記述し、結果をreturnで返せば、このサーバー機能の実行結果となります。(あらかじめ用意された内容では return 0 となっていますが、適宜書き換えてください。)
この関数の外に変数や関数の定義を書いて、それを呼び出しても構いません。
サーバー機能を実行するときに与えたオプション引数のオブジェクトは、options というこのサーバー機能の中で大域的な変数としてセットされています。
例えばオプション引数のaとbの値を乗算した結果を返すサーバー機能は次のようになります。
result = async function(buddy){
return options.a * options.b
}
実用的なサーバー機能を作成するには、アプリの構成要素やBuddyの様々な機能を扱う必要がありますが、そのために上記のあらかじめ用意された関数の引数のbuddyや、大域的な変数として用意されたものがあります。それらについては以下で説明します。
4.1.2.呼び出し方法
スクリーンプログラムからサーバー機能を呼び出すには次のようにします。
const funcname = "function1"
const options = {…}
try {
const result = await buddy.app.serverFunction[funcname].execute(options);
}catch(err){
buddyscreen.dialog.error(err)
}
funcnameは実行するサーバー機能名です。
optionsは、サーバー機能に与えるオプション引数です。サーバー機能内でoptionsという大域変数を通じて参照できます。
サーバー機能でエラーが発生した場合は、catch(err)のブロックが実行されます。
実行結果resultは、次のプロパティからなるオブジェクトです。
- result
- サーバー機能の「result」にセットされた関数のreturn値
- console
- プロパティlogにサーバー機能でのconsole.log()の出力内容の配列がセットされている
つまり、サーバー機能のreturn値を得るにはresult.result、console.log()の出力内容配列を得るには result.console.log となります。
4.1.3.定義済み関数・変数
サーバー機能のスクリプト内では以下の名前があらかじめ定義されています。
- result
- この変数にセットされたasync関数が実行され、その結果がサーバー機能の結果となります。
- buddy
- アプリの設計情報(DBテーブル、DBビュー、スクリーン、レポート、サーバー機能)を表すオブジェクトやトランザクション処理、カスタムログなどの機能を提供するオブジェクト。
result変数にセットされたasync関数が実行されるときに、引数として渡されます。 - options
- サーバー機能実行時に渡されたオプション引数のオブジェクトがセットされます。
- console
- サーバー機能の実行中にメッセージを出力するための機能を提供するオブジェクト。
- lib
- サーバー機能のスクリプトの中で利用できるBuddyの機能を提供するモジュール群から成るオブジェクト。
- api
- アプリやサーバーの情報を得るなどの補助的な機能を提供するオブジェクト。
4.2.サーバー機能オブジェクト
本項ではサーバー機能オブジェクトについて説明します。
サーバー機能オブジェクトを得るにはbuddy.app.serverFunctionプロパティを利用します。詳しくは【buddy.app.serverFunctionプロパティ】を参照してください。
4.2.1.execute()
サーバー機能オブジェクトのexecuteメソッドはサーバー機能を実行します。
execute(name, options)
name引数には実行するサーバー機能の名前を文字列で与えます。options引数にはサーバー機能に渡すオプションをオブジェクトで与えます。
以下に例を示します。この例ではfunction1という名前のサーバー機能を実行します。
const name = "function1"; // サーバー機能名
const options = {}; // オプションパラメータ
try{
const result = await buddy.app.serverFunction[name].execute(options)
}catch(err){
buddyscreen.dialog.error(err)
}
4.3.buddyオブジェクト
4.3.1.config
buddy.configプロパティはアプリの設計情報を保持しています。buddy.configプロパティは以下のプロパティから成るオブジェクトです。
- modelconf
- DBテーブル・DBビューのモデル設計情報
- outputconf
- レポート設計情報
- functionconf
- サーバー機能設計情報
- buddyconf
- アプリ情報。以下のプロパティから成るオブジェクト
- appName: アプリ名
- target: アプリのビルド種別("debug"または"release")
- user
- ユーザー情報。以下のプロパティから成るオブジェクト
- group: ユーザー種別。"admin"(運用管理・開発者)、"operator"(運用管理者)、"developer"(開発者)、"user"(一般)、"trial"(お試し)、"support"(サポート)のいずれか
- logintime: ログイン時刻印
- name: ユーザー表示名
- user: ユーザー名
- user_group: グループ名の配列
4.3.2.app
本項ではbuddy.appオブジェクトについて説明します。
4.3.2.1.dbtable
buddy.app.dbtableプロパティはDBテーブル設計で定義されたDBテーブルの集合を表すオブジェクトです。個々のDBテーブルオブジェクトは次のように名前で参照できます。
const table1 = buddy.app.dbtable.table1
const name = 'table2'
const table2 = buddy.app.dbtable[name]
DBテーブルオブジェクトについては【モデルオブジェクト】を参照してください。
4.3.2.2.dbview
buddy.app.dbviewプロパティはDBビュー設計で定義されたDBビューの集合を表すオブジェクトです。個々のDBビューオブジェクトは次のように名前で参照できます。
const view1 = buddy.app.dbview.view1
const name = 'view2'
const view2 = buddy.app.dbview[name]
DBビューオブジェクトについては【モデルオブジェクト】を参照してください。
4.3.2.3.findModel
buddy.app.findModel関数はDBテーブル・ビュー設計で定義されたDBテーブル・ビューオブジェクトを返します。
buddy.app.findModel(name)
name引数にはDBテーブル・ビューの名前を文字列で与えます。
DBテーブル・ビューオブジェクトについては【モデルオブジェクト】を参照してください。
4.3.2.4.report
buddy.app.reportプロパティはレポート設計で定義されたレポートの集合を表すオブジェクトです。個々のレポートオブジェクトは次のように名前で参照できます。
const report1 = buddy.app.report.report1
const name = 'report2'
const report2 = buddy.app.report[name]
4.3.2.5.screen
buddy.app.screenプロパティはスクリーン設計で定義されたスクリーンの集合を表すオブジェクトです。個々のスクリーンオブジェクトは次のように名前で参照できます。
const screen1 = buddy.app.screen.screen1
const name = 'screen2'
const screen2 = buddy.app.screen[name]
4.3.2.6.serverFunction
buddy.app.serverFunctionプロパティはサーバー機能設計で定義されたサーバー機能の集合を表すオブジェクトです。個々のサーバー機能オブジェクトは次のように名前で参照できます。
const function1 = buddy.app.serverFunction.function1
const name = 'function2'
const function2 = buddy.app.serverFunction[name]
4.3.3.lib
本項ではbuddy.libオブジェクトについて説明します。
4.3.3.1.CustomLog
buddy.lib.CustomLogモジュールは、アプリのカスタムログファイルに時刻印を付けてメッセージを出力する機能を提供するモジュールです。
4.3.3.1.1.write()
buddy.lib.CustomLog.write関数はカスタムログにメッセージを出力します。
buddy.lib.CustomLog.write(text)
text引数には出力するメッセージを文字列で与えます。
以下に例を示します。
//カスタムログへ出力する
const text = "文字列"
await buddy.lib.CustomLog.write(text)
text引数に与えた文字列は、関数呼び出し時のタイムスタンプ、実行ユーザの名前と共に日付別のカスタムログファイルに書き込まれます。カスタムログファイルは開発画面のログ閲覧機能により閲覧できます。
4.3.3.2.DataSet
本項ではDataSetクラスについて説明します。
DataSetは、カラム名の配列と、各カラム名に対する値を格納したオブジェクト(レコード)の配列からなる複合的データを扱います。いわばDBテーブルのようなデータをメモリ上に保持する仕組みと言えます。
実際にDBテーブルやDBビューのselect()で得られるデータはDataSetオブジェクトであり、またinsert()やupdate()でDBテーブルに投入するデータもDataSetオブジェクトの形で与えることができます。
また、テーブルモジュールのdataプロパティにDataSetオブジェクトをセットして、カラム名をヘッダとした表としてデータを表示することができます。
DataSetは、以下で説明する様々なメソッドによって、一部分を取り出す、カラム名を変更する、他のDataSetと結合する、などの操作を施すことができます。
4.3.3.2.1.コンストラクタ
DataSetオブジェクトを作成するには、次のようにします。
const dataset = new buddy.lib.DataSet([
{name: "foo", amount: 100},
{name: "bar", amount: 200},
])
次のようにして、カラム名の順序や表示名を指定することもできます。
const dataset = new buddy.lib.DataSet({
fields: [
{name: "name", display: "名称"},
{name: "amount", display: "数量"},
],
rows: [
{name: "foo", amount: 100},
{name: "bar", amount: 200},
]
})
上記の例のdatasetをテーブルモジュールのdataプロパティにセットした場合、テーブルのヘッダにはdisplayで指定した表示名が使われます。
上記のようにしてコンストラクタでデータを与えてDataSetオブジェクトを作成することもできますが、データベースに格納されたデータの場合はDBテーブルやDBビューのselect()メソッドで読み出せばその結果はDataSetオブジェクトになっています。
4.3.3.2.2.average()
DataSetオブジェクトのaverage()メソッドは、指定されたカラムの値の全レコードにおける平均を返します。
カラムは配列で複数指定することもでき、その場合はそれぞれのカラムについての平均値の配列を返します。
const avg = dataset.average("amount")
const avgarray = dataset.average(["amount", "price"])
const amountavg = avgarray[0]
const priceavg = avgarray[1]
※別名として、avg()もaverage()と同じ機能です。
4.3.3.2.3.concat()
DataSetオブジェクトのconcat()メソッドは、レコードを追加します。
引数にはDataSetオブジェクトを与えるか、DataSetのコンストラクタで指定できるデータを与えるとDataSetオブジェクトに変換されて処理されます。引数に与えたDataSetオブジェクトの全レコードが、レコードに追加されます。
ただし、カラム情報は元のままになりますので、追加するDataSetオブジェクトはカラム構造が同じものにしなければなりません。
dataset.concat(dataset2)
4.3.3.2.4.convert()
DataSetオブジェクトのconvert()メソッドは、指定したカラムの各レコードでの値について、指定した関数によって処理した結果に置き換えます。
関数は元の値を引数として、新しい値を返すようにします。
例えば amount カラムの値を全レコードについて 1 加算するには次のようにします。
dataset.convert("amount", function(oldvalue){
return oldvalue + 1
})
※内容がコピーされて新たなDataSetオブジェクトが作られるものではなく、元のDataSetオブジェクトの内容が変化することに注意してください。
4.3.3.2.5.crossJoin()
DataSetオブジェクトのcrossJoin()メソッドは、別のDataSetオブジェクトを結合してできた新たなDataSetオブジェクトを返します。
結合の方法としては、全レコードのそれぞれに、指定した別DataSetの全レコードを結合します。カラムは両方をあわせたものになります。同名のカラムがあれば、そのカラムの値は指定した別DataSetの値になります。
結果のレコード数は、元のレコード数と指定した別DataSetのレコード数を掛け合わせたものになります。
const dataset3 = dataset.crossJoin(dataset2)
上記の例で、例えばdatasetのレコードが次の内容で、
[
{foo: 1, bar: 10},
{foo: 2, bar: 20},
]
dataset2のレコードが次の内容の場合、
[
{bar: 100, baz: 1000},
{bar: 200, baz: 2000},
]
dataset3のレコードは次の内容になります。
[
{foo: 1, bar: 100, baz: 1000},
{foo: 1, bar: 200, baz: 2000},
{foo: 2, bar: 100, baz: 1000},
{foo: 2, bar: 200, baz: 2000},
]
上述のように、同名のカラムがあると値が上書きされることになりますので、それでは困る場合は、あらかじめどちらかのDataSetについてrename()を用いてカラム名を変更しておくようにします。
4.3.3.2.6.filter()
DataSetオブジェクトのfilter()メソッドは、指定した条件を満たすレコードだけを抽出して新しいDataSetオブジェクトを作成して返します。
例えば、amountカラムの値が正のレコードのみを抽出するなら、次のようにします。
const dataset2 = dataset.filter(function(row){return row.amount > 0})
filter()メソッドの引数には、レコードオブジェクト(カラム名をプロパティとしてその値がセットされている)を引数として条件に合致するときに真を返す関数を指定します。
上記の例では、rowがレコードオブジェクトで、row.amount > 0 という式がamountカラムの値が正の場合に真となります。
4.3.3.2.7.length()
DataSetオブジェクトのlength()メソッドは、レコード数を返します。
4.3.3.2.8.lookup()
DataSetオブジェクトのlookup()メソッドは、指定した条件に合致した最初のレコードを返します。
条件は、レコードオブジェクトを引数として、条件に合致するかどうかを真偽値で返す関数を指定します。
条件に合致したレコードがない場合はundefinedを返します。
例えば、amountカラムの値が負の最初のレコードを得たい場合は、次のようにします。
const foundrecord = dataset.lookup(function(record){
return record.amount < 0
})
※条件に合致した全レコードを得たい場合は、find()メソッドを使用してください。
4.3.3.2.9.leftOuterJoin()
DataSetオブジェクトのleftOuterJoin()メソッドは、別のDataSetオブジェクトを結合してできた新たなDataSetオブジェクトを返します。
結合の方法としては、元の全レコードに対して、on()で指定したカラムの値が合致する別DataSetのレコードがあればそれを結合します。
カラムは両方のカラムをあわせたものになります。
結合の際に同名のカラムがあれば、そのカラムの値は別DataSetの値になります。
const dataset3 = dataset.leftOuterJoin(dataset2).on('foo', 'baz')
上の例ではdatasetのfooカラムの値と、dataset2のbazカラムの値が同じレコードを結合しています。該当するdataset2のレコードがない場合はdatasetの元のレコードがそのまま結果のレコードになります。
例えば、datasetのレコードが次の内容で、
[
{foo: 1, bar: 10},
{foo: 2, bar: 20},
]
dataset2のレコードが次の内容の場合、
[
{baz: 1, xyz: 100},
{baz: 1, xyz: 200},
{baz: 3, xyz: 300},
]
結果のdataset3のレコードは次の内容になります。
[
{foo: 1, bar: 10, baz: 1, xyz: 100},
{foo: 1, bar: 10, baz: 1, xyz: 200},
{foo: 2, bar: 20},
]
上述のように、同名のカラムがあると値が上書きされることになりますので、それでは困る場合は、あらかじめどちらかのDataSetについてrename()を用いてカラム名を変更しておくようにします。
4.3.3.2.10.remove()
DataSetオブジェクトのremove()メソッドは、指定のカラムを除いたそれ以外のカラムをコピーした新たなDataSetオブジェクトを作成して返します。
例えば、name,amount,memoの三つのカラムを持つDataSetオブジェクトdatasetがあったとして、次のようにするとamount以外のカラムをコピーしたDataSetオブジェクトdataset2を作ることができます。
const dataset2 = dataset.remove("amount")
4.3.3.2.11.rename()
DataSetオブジェクトのrename()メソッドは、カラム名を変更しながらコピーした新たなDataSetオブジェクトを作成して返します。
例えば、nameとamountのカラムを持つDataSetオブジェクトdatasetをコピーして、カラム名amountをvalueに変更したい場合、次のようにします。
const dataset2 = dataset.rename("amount", "value")
dataset2はnameとvalueのカラムを持つDataSetオブジェクトになります。
また引数に、元のカラム名を引数として変更後のカラム名を返す関数を指定することもできます。
const dataset2 = dataset.rename(function(old){
return "set1." + old
})
上の例は、すべてのカラム名の前に「set1.」と付けます。
4.3.3.2.12.sort()
DataSetオブジェクトのsort()メソッドは、レコードの並び順を変更します。
引数に、並び順を決める関数を指定します。並び順を決める関数は比較するレコードオブジェクトをa, b二つの引数として、aが先の場合は負、bが先の場合は正、同順の場合は0を返します。
例えば、amountカラムの値が大きいものを先にする並び順としたい場合は、次のようにします。
const dataset2 = dataset.sort(function(a, b){
return b.amount - a.amount
})
4.3.3.2.13.subset()
DataSetオブジェクトのsubset()メソッドは、指定したカラム名のカラムだけを抜き出した新たなDataSetオブジェクトを作成して返します。
例えば、name,amount,memoの三つのカラムを持つDataSetオブジェクトdatasetがあったとして、次のようにするとnameとamountをコピーしたDataSetオブジェクトdataset2を作ることができます。
const dataset2 = dataset.subset("name", "amount")
4.3.3.2.14.sum()
DataSetオブジェクトのsum()メソッドは、指定されたカラムの値の全レコードにおける合計を返します。
カラムは配列で複数指定することもでき、その場合はそれぞれのカラムについての合計値の配列を返します。
const sum = dataset.sum("amount")
const sumarray = dataset.average(["amount", "price"])
const amountsum = sumarray[0]
const pricesum = sumarray[1]
4.3.3.3.Mail
本項ではbuddy.lib.Mailクラスについて説明します。
//メール送信
const mail = new buddy.lib.Mail({
"from": "", //送信元(youradress@example.com)
"subject": "", //メールタイトル
"body": "", //送信する本文
"to": "", //送信先
//"cc": "",
//"bcc": "",
})
try{
await mail.send()
}catch(err){
//エラー時の処理
}
4.3.3.3.1.コンストラクタ
buddy.lib.Mailクラスは次のようにインスタンスを作成して利用します。
const mail = new buddy.lib.Mail({
"from": "送信元アドレス",
"subject": "メールタイトル",
"body": "送信する本文",
"to": "送信先アドレス",
"cc": "CC送信先アドレス",
"bcc": "BCC送信先アドレス",
})
4.3.3.3.2.send()
sendメソッドはメールを送信します。
send()
以下に例を示します。
const mail = new buddy.lib.Mail({
"from": "送信元アドレス",
"subject": "メールタイトル",
"body": "送信する本文",
"to": "送信先アドレス",
// "cc": "CC送信先アドレス",
// "bcc": "BCC送信先アドレス",
})
try{
await mail.send()
}catch(err){
//エラー時の処理
}
4.3.3.4.Transaction
buddy.lib.Transaction関数はDBテーブル・ビューの操作のトランザクション処理を行うための仕組みを提供します。
buddy.lib.Transaction(options, callback)
options引数にはオプションオブジェクトを与えます。この引数は現在は使われていないので空のオブジェクトを与えてください。callback引数にはトランザクション処理の内容を記述したコールバック関数を与えます。
コールバック関数の引数にはbuddyオブジェクトが渡されます。このbuddyオブジェクトを用いてデータベース操作を行うとトランザクション内の処理として扱われます。
コールバック関数は真偽値を返さなければなりません。真を返すと実行したデータベース操作を確定します。それ以外を返すと実行済みのデータベース操作を巻き戻します。
以下に例を示します。
await buddy.lib.Transaction({}, async (buddy)=>{
// 上の引数のbuddyを用いてデータベース操作をおこなうと、トランザクション処理となります
....
// trueを返すと処理を確定します
// falseを返すと全体を巻き戻します
return true
})
4.4.consoleオブジェクト
consoleオブジェクトはサーバー機能のスクリプトの中であらかじめ定義されています。このオブジェクトはサーバー機能の実行中にメッセージを出力するための機能を提供します。
4.4.1.log()
console.log関数はサーバー機能の実行中にメッセージを出力します。
console.log(output)
output引数には出力する文字列を与えます。出力内容はサーバー機能の実行結果の一部としてクライアント側に返されます。
4.5.libオブジェクト
libオブジェクトはサーバー機能のスクリプトの中であらかじめ定義されています。このオブジェクトはサーバー機能のスクリプトで利用できるBuddyの機能を提供するモジュール群から成るオブジェクトです。
4.5.1.BuddyAgent
lib.BuddyAgentモジュールはHTTP GET/POSTメソッドによる外部サーバーとの通信の機能を提供します。
外部サーバーにはBuddyの運用管理メニューの通信設定で許可されたアドレスだけが使用できます。デフォルトではすべてのアドレスが拒否されます。
4.5.1.1.get()
get関数はHTTP GETメソッドで外部サーバーにデータを送信します。
await lib.BuddyAgent.get(url, query)
url引数には外部サーバーのアドレス(URL)を文字列で与えます。URLのホスト部分にはBuddyの運用管理メニューの通信設定で許可したアドレスのみが指定できます。query引数には送信するクエリを {名前: 値, ...} の形式のオブジェクトで与えます。
4.5.1.2.post()
post関数はHTTP POSTメソッドで外部サーバーにデータを送信します。
await lib.BuddyAgent.post(url, data)
url引数には外部サーバーのアドレス(URL)を文字列で与えます。URLのホスト部分にはBuddyの運用管理メニューの通信設定で許可したアドレスのみが指定できます。data引数には送信するデータ {プロパティ名: プロパティ値, ...} の形式のオブジェクトで与えます。プロパティ値がBuddyFileオブジェクトのときはファイルの内容が添付ファイルとして送信されます。
4.5.2.BuddyFile
lib.BuddyFileクラスはアプリケーションのfilesディレクトリ配下のファイルおよびディレクトリを操作するための仕組みを提供します。
4.5.2.1.コンストラクタ
BuddyFileオブジェクトを作成するにはJavaScriptのnew演算子を用います。
new lib.BuddyFile(filePath, options)
引数:
- filePath
- ファイルまたはディレクトリへのパス名。
- options
- オプション。
filePath引数には操作対象となるファイルまたはディレクトリをアプリケーションのfilesディレクトリからの相対パス名で与えます。options引数には以下のプロパティから成るオブジェクトを与えます。
- temporary
- trueを与えると一時ファイルを作成します。filePath引数に与えたパス名は無視され、一時ファイル名が自動的に与えられます。作成された一時ファイルはサーバー機能スクリプトの実行完了時に自動的に削除されます。
4.5.2.2.メソッド
本項ではBuddyFileオブジェクトのメソッドについて説明します。
4.5.2.2.1.append
appendメソッドはデータをファイルに追加します。ファイルが存在しない場合は新しく作成されます。
await append(data, options)
data引数にはファイルに書き込むデータを文字列で与えます。options引数には以下のプロパティから成るオブジェクトを与えます。
- encode
- data引数に与えた文字列の文字コード(省略可)。
4.5.2.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オブジェクトです。
4.5.2.2.3.basename
basenameメソッドはBuddyFileオブジェクトのパス名のうちファイル名を返します。
basename(ext)
ext引数には拡張子を文字列で与えます(省略可)。ファイル名の拡張子と一致した場合には拡張子のないファイル名が返されます。
4.5.2.2.4.createReadStream
createReadStreamメソッドはファイルからの読み込みストリームを作成します。
createReadStream(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- encode
- 読み込みストリームの文字コード(省略可)。
- parse
- ファイル形式(省略可)。文字列"csv"を与えるとファイルをCSV形式と見なして解析します。
4.5.2.2.5.createWriteStream
createWriteStreamメソッドはファイルへの書き込みストリームを作成します。
createWriteStream(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- encode
- 書き込みストリームの文字コード。
4.5.2.2.6.extname
extnameメソッドはBuddyFileオブジェクトのパス名のうちファイル名の拡張子を返します。
extname()
4.5.2.2.7.getFilePath
getFilePathメソッドはBuddyFileオブジェクトのパス名を返します。
getFilePath()
4.5.2.2.8.mkdir
mkdirメソッドはディレクトリを作成します。
await mkdir(options)
options引数は今のところ使用しません。
4.5.2.2.9.move
moveメソッドはファイルまたはディレクトリを移動します。
await move(dst, options)
dst引数には移動後の新しいパス名を与えます。options引数は今のところ使用しません。移動が成功すると、存在しないパス名を指すBuddyFileオブジェクトになります。
4.5.2.2.10.pdf2image
pdf2imageメソッドはPDFファイルを画像ファイルに変換します。
await pdf2image(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- type
- 画像ファイル形式。"png"(PNG形式)または"jpeg"(JPEG形式)のいずれか(省略するとPNG形式)
- pages
- 画像化するページ数(省略すると全部)
- outputdir
- 出力ディレクトリ(省略すると元のPDFファイルと同じディレクトリ)
4.5.2.2.11.read
readメソッドはファイルからデータを読み込みます。
await read(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- encode
- ファイルの文字コード(省略可)。
- parse
- ファイル形式(省略可)。文字列"csv"を与えるとファイルをCSV形式と見なして解析します。文字列"xlsx"を与えるとXLSXファイルとして開き、Workbookオブジェクトを返します(【lib.Workbook】の節を参照)。
readメソッドは読み込んだファイルの内容を返します。
4.5.2.2.12.readdir
readdirメソッドはディレクトリ内のファイルおよびサブディレクトリの一覧を返します。
await readdir(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- encode
- ファイル名の文字コード(省略可)。
readdirメソッドはファイルおよびサブディレクトリを表すBuddyFileオブジェクトの配列を返します。
4.5.2.2.13.remove
removeメソッドはファイルまたはディレクトリを削除します。
await remove(options)
options引数は今のところ使用しません。削除が成功すると、存在しないパス名を指すBuddyFileオブジェクトになります。
4.5.2.2.14.rename
renameメソッドはファイルまたはディレクトリの名前を変更します。
await rename(dst, options)
dst引数には新しい名前を与えます。options引数は今のところ使用しません。名前の変更が成功すると、存在しないパス名を指すBuddyFileオブジェクトになります。
renameメソッドはmoveメソッドの別名です。dstに別のディレクトリ配下のパス名を与えると、BuddyFileオブジェクトが表すファイルまたはディレクトリをそのディレクトリ配下に移動します。
4.5.2.2.15.stat
statメソッドはパスの状態を取得します。
await stat()
statメソッドはパスの状態を表すオブジェクト(Node.jsのfs.Statsオブジェクト)を返します。fs.Statsオブジェクトはサーバーの実行環境によって詳細が異なります。主なプロパティを以下に示します。
- atime
- 最終アクセス日時(Dateオブジェクト)
- ctime
- 最終状態変更日時(Dateオブジェクト)
- mtime
- 最終修正日時(Dateオブジェクト)
- size
- ファイルサイズ(バイト数)
fs.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"
}
fs.Statsオブジェクトの詳細については下記URLのNode.jsドキュメントを参照してください。
https://nodejs.org/api/fs.html#fs_class_fs_stats
4.5.2.2.16.unzip
unzipメソッドはZIPファイルの内容を展開します。
await unzip(unzipDir, options)
unzipDir引数には展開先のディレクトリを表すBuddyFileオブジェクトを与えます。options引数には以下のプロパティから成るオブジェクトを与えます。
- encode
- ファイル名の文字コード(省略可)。省略した場合は文字コードを自動検出します。文字コードを変更しない場合は"through"を指定します。
4.5.2.2.17.write
writeメソッドはデータをファイルに書き込みます。ファイルが存在しない場合は新しく作成されます。
await write(data, options)
data引数にはファイルに書き込むデータを文字列で与えます。options引数には以下のプロパティから成るオブジェクトを与えます。
- encode
- data引数に与えた文字列の文字コード(省略可)。
4.5.2.2.18.zip
zipメソッドはBuddyFileオブジェクトが表すファイルまたはディレクトリを内容とするZIPファイルを作成します。既にZIPファイルが存在する場合は、そのZIPファイルの内容を置き換えます。
await zip(zipFile, options)
zipFile引数にはZIPファイルを表すBuddyFileオブジェクトを与えます。options引数には以下のプロパティから成るオブジェクトを与えます。
- omitDirectory
- BuddyFileオブジェクトがディレクトリを表す場合に、そのディレクトリ名をzipファイルに含めるかどうかを真偽値で指定します。trueなら含めます。falseなら含めません(省略可。デフォルト値はtrue)。
4.5.3.FileManager
lib.FileManagerモジュールは、サーバー機能スクリプトからファイルマネージャを利用するためのAPIを提供するモジュールです。アプリケーションのfilesディレクトリ配下のファイルは固有のURLを持ち、ファイルが存在する間は常にダウンロード可能です。一方、ファイルマネージャは有効期限のあるURLをファイルに与えて一時的にダウンロードを許す仕組みを提供します。有効期限が過ぎるとファイルは自動的に削除され、ファイルに付与されたURLは無効になります。ファイルマネージャの管理下にあるファイルを「一時ファイル」と呼びます。
4.5.3.1.関数
4.5.3.1.1.getURL
getURL関数は一時ファイルの識別子(ハッシュ)からそのファイルをダウンロードできるURLを得ます。
const url = lib.FileManager.getURL(hash)
hash引数には一時ファイルの識別子となるハッシュ値を文字列で与えます。
4.5.3.1.2.register
register関数はBuddyFileオブジェクトが表すファイルをファイルマネージャに登録します。
const hash = await lib.FileManager.register(file, options)
file引数には登録対象となるファイルを表すBuddyFileオブジェクトを与えます。options引数には以下のプロパティから成るオブジェクトを与えます。
- auth
- 権限情報オブジェクト(省略可)。省略すると同じアプリケーションからのみアクセスを許可します。
- fileName
- ファイル名(省略可)。省略すると元のファイル名を用います。
- limit
- 有効期限(省略可)。ファイルを削除する日時をDateオブジェクトで与えます。省略すると登録から1時間有効となります。
- tags
- タグオブジェクト。現在はdownloadタグ(デフォルト値true)が指定できます。trueならダウンロードを強制します。falseならブラウザの設定に従います。
register関数は登録ファイルに割り当てられたハッシュ値を文字列で返します。ここで得られたハッシュ値は上述のgetURL関数でファイルのダウンロードURLを得るために用います。
4.5.4.Workbook
lib.WorkbookクラスはExcelワークブックを読み書きするためのAPIを提供するクラスです。
WorkbookクラスはNode.jsのexceljsモジュールに基づいています。exceljsの詳細については下記URLのドキュメントを参照してください。
https://www.npmjs.com/package/exceljs
4.5.4.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){
// ...
});
4.5.4.2.ワークシート
ワークブックに新しいワークシートを追加するには次のようにします。
var sheet = workbook.addWorksheet('My Sheet');
ワークブックからワークシートを得るには次の例のようにgetWorksheet()を用います。引数には名前または番号(先頭が1)を与えます。
// 名前で探す
var worksheet = workbook.getWorksheet('My Sheet');
// 番号で探す
var worksheet = workbook.getWorksheet(1);
4.5.4.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は行番号
});
4.5.4.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));
});
4.5.4.5.セル
ワークシートからセルを得るには次の例のようにgetCell()を用います。
worksheet.getCell('C3').value = new Date(1844,2,18);
セルを結合するには次の例のようにmergeCells()を用います。
worksheet.mergeCells('A4:B5');
セルの結合を解除するには次の例のようにunMergeCells()を用います。
worksheet.unMergeCells('A4');
4.5.4.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のドキュメントを参照してください。
4.5.4.7.スタイル
本節ではセルのスタイルを変更するためのプロパティについて述べます。
4.5.4.7.1.書式設定
セルの書式設定を変更するには次のようにnumFmtプロパティを設定します。
worksheet.getCell('A1').numFmt = '0.00%';
4.5.4.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)
4.5.4.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')
4.5.4.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'のいずれか。
4.5.4.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 … 色。
4.5.5.XPDFJ
lib.XPDFJクラスは、テキストや画像を含むPDFファイルをサーバー機能のスクリプトで生成するための仕組みを提供するクラスです。本クラスの機能の概要は次の通りです。
-
サーバー機能のスクリプトでテキスト、段落、直線、矩形、画像をページに配置することでPDFを生成できます。内部的にPerlモジュールXPDFJを利用しています。
-
new lib.XPDFJ() でオブジェクトを作り、そのメソッドでテキスト、段落、直線、矩形、画像を配置していくと、ソースとなるオブジェクトが作られます。このオブジェクトがoutput()メソッドでXML形式に変換されてXPDFJモジュールで処理され、ファイルに出力されます。
-
用意されているメソッドではXPDFJモジュールやその下のPDFJライブラリの全ての機能が使えるものではなく、Buddyのレポート出力で必要になると思われる機能に限定しています。
-
テキストと段落について、実際の出力はせずに、それぞれの縦横のサイズを得る方法を用意しています。これによって内容が可変のテキストについて適切な配置が可能となります。
-
大きさや位置は単位を指定しなければポイントですが、単位「mm」を付加することでミリメートル指定も可能です(72ポイント=1インチ=25.4mm)。
-
ソースとなるオブジェクトまたはXMLテキストを自分で組み立てておいて渡すようにすれば、XPDFJやPDFJの全ての機能を利用できます。XPDFJのマクロ機能も利用できます。
4.5.5.1.コンストラクタ
XPDFJオブジェクトを作成するにはJavaScriptのnew演算子を用います。
new lib.XPDFJ(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- src
- ソースオブジェクトまたはXMLテキスト(省略可)
- ydir
- y軸(上下方向)をどちら向きとするか("up"または"down"、省略すると"up")
ソースオブジェクトの作成方法は後述します。srcを省略した場合、ソースは後述のXPDFJクラスのメソッドで組み立てます。ydirによる指定は後述のメソッドにおいてy(縦位置指定)とh(図形の縦送り)に影響します(srcによるソースには影響しません)。
4.5.5.2.メソッド
本節ではXPDFJクラスのメソッドについて述べます。各メソッドの呼び出しはXPDFJオブジェクト自身を返すので、次のように書くことが可能です。
var xpdfj = new lib.XPDFJ(…);
xpdfj.newDoc(…).addText(…).addLine(…).…
4.5.5.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で指定した長さだけ移動した位置とを対角とする矩形を描きます。
4.5.5.2.2.addImage
addImageメソッドは画像を追加します。今のところPNG画像のみ利用できます。
addImage(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- src
- 画像ファイルをfilesからのパス名で指定
w … 幅
h … 高さ - x
- 横位置(省略するとページ左端)
- y
- 縦位置(省略するとページ上端)
- align
- 配置基準(【addText】メソッドの節を参照)
4.5.5.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で指定した位置が直線の端になるとは限らない点に注意してください。
4.5.5.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を含めるとそこで折り返されます。
4.5.5.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(配置基準を表示物の左上)が用いられます。
4.5.5.2.6.getTextSizes
getTextSizesメソッドはソースに含まれる各テキストと段落のサイズを返します。このメソッドはソースがXPDFJオブジェクトのメソッドで組み立てられた場合に有効です。
getTextSizes(options)
options引数にはオプションオブジェクトを与えますが今のところ使用されません。getTextSizesメソッドは [横サイズ, 縦サイズ] の配列(単位はポイント)を返します。
4.5.5.2.7.newDoc
newDocメソッドはドキュメントを作成(ページも一つ自動的に追加)します。
newDoc(options)
options引数には以下のプロパティから成るオブジェクトを与えます。
- pagesize
- ページサイズ:"ハガキ"、"ハガキL"、"B5"、"B5L"、"B4"、"B4L"、"A4"、"A4L"、"A3"、"A3L"のいずれか(「L」と付くのは横、付かないのは縦)
- width
- ページ横幅
- height
- ページ高さ
pagesizeもwidth、heightも指定しなかった場合はA4縦サイズとなります。
4.5.5.2.8.newPage
newPageメソッドは新しいページを追加します。以後のページの構成要素はそのページに配置されます。
newPage()
4.5.5.2.9.ouput
ouputメソッドは、ソースにもとづいてPDFファイルを生成します。
await ouput(file, options)
file引数には出力先ファイルとなるBuddyFileオブジェクトを指定します。options引数にはオプションオブジェクトを与えますが今のところ使用されません。outputメソッドは作成されたPDFファイルのパス名を返します。XPDFJクラスのメソッドでソースを組み立てる場合は、その最後にoutput()を呼び出してください。
4.5.5.3.使用例
4.5.5.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});
await xpdfj.output(bf, {});
4.5.5.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});
await xpdfj.output(bf, {});
4.5.5.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>
4.5.5.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標準マクロ概説」を参照してください。
4.6.api.xml2js
api.xml2jsモジュールはXMLを読み取るAPIを提供します。使用例を以下に示します。
var xml = "<xml>test</xml>";
try{
const json = await api.xml2js.parseStringPromise(xml)
//変換後の処理
console.log(json)
}catch(err){
//エラー時の処理
}
4.6.1.parseStringPromise()
parseStringPromise関数はXML形式の文字列を解析してオブジェクトに変換します。
await api.xml2js.parseStringPromise(xml)
xml引数にはXML形式の文字列を与えます。parseStringPromise関数は解析結果をオブジェクトで返します。
4.7.api.getAppInfo
api.getAppInfo関数はアプリの情報を返します。
await api.getAppInfo()
api.getAppInfo関数は以下のプロパティからなるオブジェクトを返します。
- name
- アプリ名
- display
- アプリ表示名
- target
- デバッグ版かリリース版かを示す文字列("debug"または"release")
- url
- アプリのアドレス(URL)
- alias
- アプリの別名(エイリアス)の配列
- version
- アプリのバージョン番号
- owner
- アプリの作成者
- independent
- ログインを分離しているときは真、そうでなければ偽を返す
- build
- 最終ビルド日時。以下のプロパティからなるオブジェクトを返す。
debug: デバッグ版の最終ビルド日時
release: リリース版の最終ビルド日時 - create
- アプリ作成日時
4.8.api.getServerInfo
api.getServerInfo関数はサーバーの情報を返します。
await api.getServerInfo()
api.getServerInfo関数は以下のプロパティからなるオブジェクトを返します。
- host
- サーバーのホスト名
- port
- サーバーのポート番号
- url
- サーバーのアドレス(URL)
- default_ui
- デフォルトのUI設定("Buddy"または"Buddy2")
- status
- サーバーの状況。以下のプロパティからなるオブジェクトを返す。
storage: ストレージ使用量(後述)
memory: メモリ使用量(単位はバイト)
app_count: アプリ数
user_count: ユーザー数 - regulation
- サーバーの契約プランなどの情報。以下のプロパティからなるオブジェクトを返す
plan: 契約プラン名
user_max: 利用可能ユーザー数
concur: 同時接続ユーザー数
appcount_max: アプリ数
サーバー状況(status)のstorageプロパティはストレージ使用状況の内訳を以下のプロパティ(値はストレージ使用量を表す数値、単位はバイト)からなるオブジェクトとして返す。
- database
- データベース
- files
- ダウンロードファイル
- app
- アプリ領域
- release
- 本番用
- debug
- デバッグ
- editor
- 開発
- log
- ログ
- backup
- バックアップ
- trash
- 削除済み
- temporary
- 一時保存
- disk
- 総ディスク容量
- free
- 空きディスク容量
5.レポート設計
本項ではレポート設計のAPIについて説明します。
5.1.レポートオブジェクト
本項ではレポートオブジェクトについて説明します。
レポートオブジェクトを得るにはbuddy.app.reportプロパティを利用します。詳しくは【buddy.app.reportプロパティ】を参照してください。
5.1.1.output()
レポートオブジェクトのoutputメソッドはレポート出力を実行します。
output(param)
param引数にはレポート出力に使用するパラメータ(以下のプロパティから成るオブジェクト)を与えます。
- where
- 絞り込み条件
- order
- 並べ替え指定
- offset
- 何件目から出力するか
- num
- 何件出力するか
- 上記以外のプロパティ
- レポート中で「this.param.プロパティ名」で参照できる
以下に例を示します。この例ではreport1という名前のレポートを出力します。
const reportName = "report1" //レポート名
const report = buddy.app.report[reportName]
const param = {
//レポート出力に使用するパラメータ
}
const result = await report.output(param)
6.モデルオブジェクト
DBテーブル設計で定義されるテーブルおよびDBビュー設計で定義されるビューをまとめて「モデル」と呼び、モデルの設計情報を表すオブジェクトのことを「モデルオブジェクト」と呼びます。
6.1.概要
DBテーブルおよびDBビューを表すモデルオブジェクトは、スクリーンおよびサーバー機能のスクリプトにおいてbuddy.app.findModel(DBテーブル・ビュー名)で取得できます。たとえばtable1というDBテーブルのモデルオブジェクトは次のように得られます。
const table = buddy.app.findModel("table1")
6.2.プロパティ
本項ではモデルオブジェクトのプロパティについて説明します。
6.2.1.cols
colsプロパティは、各カラムのカラム名をプロパティとしてカラムの情報がセットされたオブジェクトです。
カラム情報のオブジェクトにはgetChoice()というメソッドが用意されており、そのカラムに設定された選択肢または外部参照によって他のテーブルから読み込まれた選択肢を得ることができます。
結果はDataSetオブジェクトとして得られ、プルダウンリストなどのlistプロパティにセットすることができます。
const list = await buddy.app.dbtable.table1.cols.foo.getChoice()
buddyscreen.items.SELECT1.list = list
上の例ではDBテーブルtable1のカラムfooに設定された選択肢を得て、アイテムSELECT1の選択肢としてセットしています。awaitが必要なことに注意してください。
上記のようにするだけなら、SELECT1のアイテム属性で、「データリンク」をtable1.fooにセットし、「選択肢の自動読込」を「はい」にすればOKで、スクリプトを書く必要はありません。
しかし、上記のようにすれば得たlistを加工(例えば先頭に空の選択肢を追加するなど)してからセットするようなことが可能となります。
6.2.2.config
configプロパティの値はDBテーブル・ビューの設計情報オブジェクトです。設計情報オブジェクトクトについては【設計情報オブジェクト】を参照してください。
6.3.メソッド
6.3.1.count()
モデルオブジェクトのcountメソッドはDBテーブル・ビューのレコード数を得ます。
countメソッドはプロミスを返します。このプロミスをawaitすることにより、レコード件数が整数値で返されます。
countメソッドが返したプロミスについて以下のメソッドを呼び出すことにより、レコードの絞り込み条件を追加で指定できます。
- where()
- 絞り込み条件。指定しなければ全レコード数を得る
whereメソッドもプロミスを返します。このプロミスをawaitすることにより、レコード件数が整数値で返されます。
以下に例を示します。この例ではtable1というDBテーブルにnameカラムの値が"foo"のレコードが何件あるかを求めて結果をコンソールに表示します。
const table = buddy.app.findModel("table1")
const count = await table.count()
.where({name: "foo"}) //絞り込み条件
// レコード数をコンソールに表示
console.log(count)
6.3.2.delete()
モデルオブジェクトのdeleteメソッドはDBテーブルからレコードを削除します。この操作はDBビューに対しては実行できません。
delete()
deleteメソッドはプロミス(レコード削除プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの絞り込み条件などを追加で指定できます。allとwhereはどちらか一方を必ず呼ばなければなりません。
- all()
- レコード全件を削除する
- returning()
- 結果のDataSetオブジェクトに含めるカラム名を指定する
- where()
- 絞り込み条件
これらの追加のメソッドもプロミス(レコード削除プロミス)を返します。
得られたプロミスをawaitすることによりレコードの削除が実行され、削除されたレコード群がDataSetオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。
以下に例を示します。この例ではtable1というDBテーブルからIDカラムの値が1のレコードを削除します。
const table = buddy.app.findModel("table1")
const result = await table.delete()
.where({ID: 1}) //絞り込み条件
.returning("ID") //削除したレコードのIDを返す
6.3.3.insert()
モデルオブジェクトのinsertメソッドはDBテーブルにレコードを挿入します。この操作はDBビューに対しては実行できません。
insert(data)
data引数には挿入するレコードを以下のいずれかの形式で与えます。
a. {カラム名: 値, ...} の形式のオブジェクト
b. 上記の形式のオブジェクトを要素とする配列
c. レコード数が1のDataSetオブジェクト
insertメソッドはプロミス(レコード挿入プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、結果のDataSetオブジェクトの設定を追加で指定できます。
- returning()
- 結果のDataSetオブジェクトに含めるカラム名
このメソッドもプロミス(レコード挿入プロミス)を返します。
得られたプロミスをawaitすることによりレコードの挿入が実行され、挿入されたレコードがDataSetオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。
以下に例を示します。この例ではtable1というDBテーブルにnameカラムの値が"foo"のレコードを追加します。
const table = buddy.app.findModel("table1")
const result = await table.insert({name: "foo"})
.returning("ID") //挿入したレコードのIDを返す
6.3.4.lookup()
モデルオブジェクトのlookupメソッドはDBテーブル・ビューから条件に合致する最初のレコードを読み取ります。
lookup()
lookupメソッドはプロミスを返します。このプロミスをawaitすることにより、条件に合う最初のレコードが {カラム名: 値, ...} の形式のオブジェクトで返されます。条件に合うレコードが無ければnullが返されます。
lookupメソッドが返したプロミスについて以下のメソッドを呼び出すことにより、レコードの絞り込み条件などを追加で指定できます。
- limit()
- レコードの最大件数
- offset()
- 読み取るレコードの開始位置(最初が0)。指定しなければ最初のレコードから読み取る
- orderby()
- 検索結果の並べ替え方法
- where()
- 検索条件。指定しなければレコード全件を得る
これらの追加のメソッドもプロミスを返します。このプロミスをawaitするとレコードの読み取り結果が得られます。
以下に例を示します。この例ではtable1というDBテーブルからnameカラムの値が"foo"のレコードを読み取ってIDカラムの値で降順にソートし、最初のレコードの内容をコンソールに表示します。
const table = buddy.app.findModel("table1")
const result = await table.lookup()
.where({name: "foo"}) //絞り込み条件
.orderby("ID DESC") //並べ替え
console.log(result)
6.3.5.select()
モデルオブジェクトのselectメソッドはDBテーブル・ビューからレコードを読み取ります。
select()
selectメソッドはプロミス(レコード検索プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの絞り込み条件などを追加で指定できます。
- limit()
- レコードの最大件数
- offset()
- 読み取るレコードの開始位置(最初が0)。指定しなければ最初のレコードから読み取る
- orderby()
- 検索結果の並べ替え方法
- stream()
- レコードの読み取り結果をDataStreamオブジェクトにする。指定しなければ結果はDataSetオブジェクトになる。
- where()
- 検索条件。指定しなければレコード全件を得る
これらの追加のメソッドもプロミス(レコード更新プロミス)を返します。
得られたプロミスをawaitすることにより、レコードの読み取り結果がDataSetオブジェクト(streamメソッドを呼んだ場合はDataStreamオブジェクト)で返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を、DataStreamオブジェクトについては【buddy.lib.DataStream】を参照してください。
以下に例を示します。この例ではtable1というDBテーブルからnameカラムの値が"foo"のレコードを最大100件読み取り、IDカラムの値で降順にソートされた結果を得ます。
const table = buddy.app.findModel("table1")
const result = await table.select()
.where({name: "foo"}) //絞り込み条件
.limit(100) //レコードの最大件数
.orderby("ID DESC") //並べ替え
// 結果の先頭レコードのIDの値を表示
buddyscreen.items.LABEL1.value = result.rows[0].ID
// 結果全体をテーブルで表示
buddyscreen.items.TABLE1.data = result
6.3.6.update()
モデルオブジェクトのupdateメソッドはDBテーブルのレコードを更新します。この操作はDBビューに対しては実行できません。
update(data)
data引数にはレコードの更新後の値を以下のいずれかの形式で与えます。
a. {カラム名: 値, ...} の形式のオブジェクト
b. 上記の形式のオブジェクトを要素とする配列
c. レコード数が1のDataSetオブジェクト
updateメソッドはプロミス(レコード更新プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、結果のDataSetオブジェクトの設定を追加で指定できます。
- returning()
- 結果のDataSetオブジェクトに含めるカラム名
- where()
- 絞り込み条件。指定しなければレコード全件を更新する
このメソッドもプロミス(レコード挿入プロミス)を返します。
得られたプロミスをawaitすることによりレコードの更新が実行され、更新されたレコードがDataSetオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。
以下に例を示します。この例ではtable1というDBテーブルのレコードのうちIDが1のレコードのnameカラムの値を"bar"に変更します。結果として返されるDataSetオブジェクトには更新されたレコードのIDカラムの値が含まれます。
const table = buddy.app.findModel("table1")
const result = await table.update({name: "bar"})
.where({ID: 1}) //絞り込み条件
.returning("ID") //更新したレコードのIDを返す
6.3.7.upsert()
モデルオブジェクトのupsertメソッドはDBテーブルに新しいレコードを挿入、または既存のレコードを更新します。この操作はDBビューに対しては実行できません。
upsert(data)
data引数には新規レコードまたは既存レコードの更新後の値を以下のいずれかの形式で与えます。
a. {カラム名: 値, ...} の形式のオブジェクト
b. 上記の形式のオブジェクトを要素とする配列
c. レコード数が1のDataSetオブジェクト
upsertメソッドはプロミス(レコード更新プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、結果のDataSetオブジェクトの設定を追加で指定できます。
- returning()
- 結果のDataSetオブジェクトに含めるカラム名
- where()
- 絞り込み条件。指定しなければレコード全件を更新する
このメソッドもプロミス(レコード挿入プロミス)を返します。
得られたプロミスをawaitすることによりレコードの挿入または更新が実行され、挿入・更新されたレコード群がDataSetオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。
以下に例を示します。この例ではtable1というDBテーブルからIDが1のレコードを探します。条件に合うレコードがあればnameカラムの値を"bar"に更新(update)します。条件に合うレコードがなければ新しいレコードを挿入します。結果として返されるDataSetオブジェクトには挿入・更新されたレコードのIDカラムの値が含まれます。
const table = buddy.app.findModel("table1")
const result = await table.upsert({name: "bar"})
.where({ID: 1}) //絞り込み条件
.returning("ID") //更新したレコードのIDを返す
6.4.レコード検索プロミス
本項ではレコード検索(count、lookup、selectメソッド)により得られるプロミス(レコード検索プロミス)について説明します。
6.4.1.limit()
limitメソッドはレコード検索(count、lookup、selectメソッド)により得られるレコードの最大件数を制限します。
limit(num)
num引数にはレコードの最大件数を整数値で与えます。
limitメソッドはプロミス(レコード検索プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの読み取り条件などを追加で指定できます。
- offset()
- 読み取るレコードの開始位置(最初が0)。指定しなければ最初のレコードから読み取る
- orderby()
- 検索結果の並べ替え方法
- stream()
- レコードの読み取り結果をDataStreamオブジェクトにする。指定しなければ結果はDataSetオブジェクトになる。
- where()
- 絞り込み条件
これらの追加のメソッドもプロミス(レコード更新プロミス)を返します。
得られたプロミスをawaitすることにより、レコードの読み取り結果がDataSetオブジェクトまたはDataStreamオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を、DataStreamオブジェクトについては【buddy.lib.DataStream】を参照してください。
以下に例を示します。この例ではtable1というDBテーブルからレコードを最大100件読み取ります。
const table = buddy.app.findModel("table1")
const result = await table.select()
.limit(100) //レコードの最大件数
6.4.2.offset()
offsetメソッドはレコード検索(count、lookup、selectメソッド)により読み取るレコードの開始位置を指定します。
offset(num)
num引数にはレコード読み取りの開始位置を整数値(最初のレコードが0)で与えます。
offsetメソッドはプロミス(レコード検索プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの読み取り条件などを追加で指定できます。
- limit()
- レコードの最大件数
- orderby()
- 検索結果の並べ替え方法
- stream()
- レコードの読み取り結果をDataStreamオブジェクトにする。指定しなければ結果はDataSetオブジェクトになる。
- where()
- 絞り込み条件
これらの追加のメソッドもプロミス(レコード検索プロミス)を返します。
得られたプロミスをawaitすることにより、レコードの読み取り結果がDataSetオブジェクトまたはDataStreamオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を、DataStreamオブジェクトについては【buddy.lib.DataStream】を参照してください。
以下に例を示します。この例ではtable1というDBテーブルからレコードを最大100件読み取ります。
const table = buddy.app.findModel("table1")
const result = await table.select()
.limit(100) //レコードの最大件数
6.4.3.orderby()
orderbyメソッドはレコード検索(count、lookup、selectメソッド)によるレコードの読み取り結果の並べ替え方法を指定します。
orderby(spec1, spec2, ...)
orderby([spec1, spec2, ...])
引数のspec1、spec2、…にはカラム名と順序指定を空白文字で区切った文字列を与えます。順序指定は以下のいずれかの文字列です。
- ASC
- 昇順
- DESC
- 降順
orderbyメソッドはプロミス(レコード検索プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの読み取り条件などを追加で指定できます。
- limit()
- レコードの最大件数
- offset()
- 読み取るレコードの開始位置(最初が0)。指定しなければ最初のレコードから読み取る
- stream()
- レコードの読み取り結果をDataStreamオブジェクトにする。指定しなければ結果はDataSetオブジェクトになる。
- where()
- 絞り込み条件
これらの追加のメソッドもプロミス(レコード検索プロミス)を返します。
得られたプロミスをawaitすることにより、レコードの読み取り結果がDataSetオブジェクトまたはDataStreamオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を、DataStreamオブジェクトについては【buddy.lib.DataStream】を参照してください。
以下に例を示します。この例ではtable1というDBテーブルからレコードを読み取り、IDカラムの値で降順にソートされた結果を得ます。
const table = buddy.app.findModel("table1")
const result = await table.select()
.orderby("ID DESC") //並べ替え
6.4.4.stream()
streamメソッドはレコード検索(count、lookup、selectメソッド)によるレコードの読み取り結果をDataStreamオブジェクトで返すように設定します。
stream()
streamメソッドはプロミス(レコード検索プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの読み取り条件などを追加で指定できます。
- limit()
- レコードの最大件数
- orderby()
- 検索結果の並べ替え方法
- offset()
- 読み取るレコードの開始位置(最初が0)。指定しなければ最初のレコードから読み取る
- where()
- 絞り込み条件
これらの追加のメソッドもプロミス(レコード検索プロミス)を返します。
得られたプロミスをawaitすることにより、レコードの読み取り結果がDataStreamオブジェクトで返されます。DataStreamオブジェクトについては【buddy.lib.DataStream】を参照してください。
6.4.5.where()
whereメソッドはレコード検索(count、lookup、selectメソッド)の絞り込み条件を指定します。
where(condition)
condition引数には絞り込み条件を表すオブジェクトを与えます。絞り込み条件については【絞り込み条件】の項を参照してください。
whereメソッドはプロミス(レコード検索プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの読み取り条件などを追加で指定できます。
- limit()
- レコードの最大件数
- offset()
- 読み取るレコードの開始位置(最初が0)。指定しなければ最初のレコードから読み取る
- orderby()
- 検索結果の並べ替え方法
- stream()
- レコードの読み取り結果をDataStreamオブジェクトにする。指定しなければ結果はDataSetオブジェクトになる。
これらの追加のメソッドもプロミス(レコード検索プロミス)を返します。
得られたプロミスをawaitすることにより、レコードの読み取り結果がDataSetオブジェクトまたはDataStreamオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を、DataStreamオブジェクトについては【buddy.lib.DataStream】を参照してください。
以下に例を示します。この例ではtable1というDBテーブルからnameカラムの値が"foo"のレコードを読み取ります。
const table = buddy.app.findModel("table1")
const result = await table.select()
.where({name: "foo"}) //絞り込み条件
6.5.レコード挿入プロミス
6.5.1.returning()
returningメソッドは、insertメソッドで挿入されたレコードを表すDataSetオブジェクトに含めるカラム名を指定します。
returning(column1, column2, ...)
引数にはカラム名を文字列で1つ以上与えます。
returningメソッドはプロミス(レコード挿入プロミス)を返します。
得られたプロミスをawaitすることにより、レコードの挿入が実行され、挿入されたレコードがDataSetオブジェクトとして返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。
以下に例を示します。この例ではtable1というDBテーブルにnameカラムの値が"foo"のレコードを挿入します。結果として返されるDataSetオブジェクトには挿入されたレコードのIDカラムの値が含まれます。
const table = buddy.app.findModel("table1")
const result = await table.insert({name: "foo"})
.returning("ID") //挿入されたレコードのIDを返す
6.6.レコード更新プロミス
6.6.1.returning()
returningメソッドは、updateメソッドまたはupsertメソッドで更新されたレコードを表すDataSetオブジェクトに含めるカラム名を指定します。
returning(column1, column2, ...)
引数にはカラム名を文字列で1つ以上与えます。
returningメソッドはプロミス(レコード更新プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの絞り込み条件を追加で指定できます。
- where()
- 絞り込み条件
このメソッドもプロミス(レコード更新プロミス)を返します。
得られたプロミスをawaitすることにより、レコードの更新が実行され、更新されたレコードがDataSetオブジェクトとして返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。
6.6.2.where()
returningメソッドは、updateメソッドまたはupsertメソッドで更新されたレコードを表すDataSetオブジェクトに含めるカラム名を指定します。
returning(column1, column2, ...)
引数にはカラム名を文字列で1つ以上与えます。
returningメソッドはプロミス(レコード更新プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの更新結果についての設定を追加で指定できます。
- returning()
- 結果のDataSetオブジェクトに含めるカラム名
このメソッドもプロミス(レコード更新プロミス)を返します。
得られたプロミスをawaitすることにより、レコードの更新が実行され、更新されたレコードがDataSetオブジェクトとして返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。
6.7.レコード削除プロミス
6.7.1.all()
allメソッドはdeleteメソッドでレコードを削除するときにレコード全件を削除対象にすることを指定します。
all()
allメソッドはプロミスを返します。このプロミスについて以下のメソッドを呼び出すことにより、結果に含めるカラムを追加で指定できます。
- returning()
- 結果に含めるカラム名
このメソッドもプロミスを返します。
得られたプロミスをawaitすることによりレコードの削除が実行され、削除されたレコード群がDataSetオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。
以下に例を示します。この例ではtable1というDBテーブルからIDカラムの値が1のレコードを削除します。
const table = buddy.app.findModel("table1")
const result = await table.delete()
.all() //レコード全件を削除対象にする
.returning("ID") //削除したレコードのIDを返す
6.7.2.returning()
returningメソッドは、deleteメソッドで削除されたレコード群を表すDataSetオブジェクトに含めるカラム名を指定します。
returning(column1, column2, ...)
引数にはカラム名を文字列で1つ以上与えます。
returningメソッドはプロミス(レコード削除プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの削除条件などを追加で指定できます。
- all()
- レコード全件を削除対象にする
- where()
- 絞り込み条件。指定しなければレコード全件を削除する
これらの追加のメソッドもプロミス(レコード削除プロミス)を返します。
得られたプロミスをawaitすることにより、レコードの削除が実行され、削除されたレコード群がDataSetオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。
以下に例を示します。この例ではtable1というDBテーブルからnameカラムの値が"foo"のレコードを削除します。
const table = buddy.app.findModel("table1")
const result = await table.select()
.where({name: "foo"}) //絞り込み条件
.returning("ID") //削除されたレコードのIDを返す
6.7.3.where()
whereメソッドはdeleteメソッドによるレコード削除の絞り込み条件を指定します。
where(condition)
condition引数には絞り込み条件を表すオブジェクトを与えます。絞り込み条件については【絞り込み条件】の項を参照してください。
whereメソッドはプロミスを返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの読み取り条件などを追加で指定できます。
- all()
- レコード全件を削除対象にする
- returning()
- 結果に含めるカラム名を指定する
これらの追加のメソッドもプロミスを返します。このプロミスをawaitすることにより、レコードの削除が実行され、削除されたレコード群がDataSetオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。
以下に例を示します。この例ではtable1というDBテーブルからnameカラムの値が"foo"のレコードを削除します。
const table = buddy.app.findModel("table1")
const result = await table.delete()
.where({name: "foo"}) //絞り込み条件
.returning("ID") //削除されたレコードのIDを返す
6.8.モデル設計情報
本項ではDBテーブル・ビュー設計で定義されるモデル設計情報について説明します。
6.8.1.DBテーブル
DBテーブルのconfigプロパティの値はテーブルの設計情報オブジェクトです。
DBテーブルの設計情報オブジェクトは以下のプロパティから成ります。
- TableDbname
- DB上のテーブル名(英数_)
- TableDisplayname
- 表示上のテーブル名(日本語可)
- TableType
- テーブルタイプ(STOCK または FLOW)
- TableFlags
- テーブルフラグの配列
- TableMemo
- 備考(開発上のメモ)
- TableColumns
- カラム情報オブジェクト(後述)の配列
- TablePrimaryKeyColumns
- Primary Key指定するカラム名の配列
- TableIndexes
- インデックス情報オブジェクト(後述)の配列
- TableRules
- ルール情報オブジェクト(後述)の配列
- TableOrders
- 順序情報オブジェクト(後述)の配列
- TableAuth
- アクセス制御オブジェクト
カラム情報オブジェクトは次のプロパティから成ります。
- ColumnDbname
- DB上のカラム名(英数_)
- ColumnDisplayname
- 表示上のカラム名(日本語可)
- ColumnCategory
- データ型のカテゴリ
- ColumnClass
- データ型のクラス
- ColumnType
- データ型
- ColumnDefaultvalue
- デフォルト値
- ColumnOrder
- カラムの順序(整数値)
- ColumnFlags
- カラムフラグの配列
- ColumnChoices
- 選択肢の配列
- ColumnRange
- 範囲選択肢(「最小値:最大値:刻み値」)
- ColumnMemo
- 備考(開発上のメモ)
インデックス情報オブジェクトは以下のプロパティから成ります。
- IndexDbname
- DB上のインデックス名(英数_)
- IndexDisplayname
- 表示上のインデックス名(日本語可)
- IndexUnique
- Uniqueかどうか(trueまたはfalse)
- IndexColumnsOrExpressions
- カラム名または式の配列
ルール情報オブジェクトは以下のプロパティから成ります。
- RuleDbname
- DB上の制約名(英数_)
- RuleDisplayname
- 表示上のルール名(日本語可)
- RuleCheck
- 検査式
※特殊な指定として、「カラム名 NOT NULL」「UNIQUE(カラム名,…)」
順序情報オブジェクトは以下のプロパティから成ります。
- OrderName
- 順序名(英数_)
- OrderDisplayname
- 表示上の順序名(日本語可)
- OrderDefault
- デフォルト順序かどうか(trueまたはfalse)
- OrderSpecs
- 次の順序カラム指定オブジェクトの配列
- OrderColumn
- カラム名
- OrderDirection
- ASC または DESC
6.8.2.DBビュー
DBビューのconfigプロパティの値はビューの設計情報オブジェクトです。
DBビューの設計情報オブジェクトは以下のプロパティから成ります。
- ViewType
- ビューの型(LIST、SUM、CROSS)
- ViewDbname
- DB上のビュー名(英数_)
- ViewDisplayname
- 表示上のビュー名(日本語可)
- ViewMemo
- 備考(開発上のメモ)
- ViewColumns
- カラム情報オブジェクト(後述)の配列
- ViewFrom
- テーブル/ビュー名 または後述のViewFromオブジェクト(入れ子可)
- ViewWhere
- ビューのWHERE式
- ViewHaving
- ビューのHAVING式
- ViewOrderBy
- ORDER BY指定オブジェクトの配列
- ViewCross
- クロス集計(CROSS)型ビューのオプション
- ViewAuth
- アクセス制御オブジェクト
カラム情報オブジェクトは以下のプロパティから成ります。
- 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条件式オブジェクトの配列
JOIN ON条件式オブジェクトは以下のプロパティから成ります。
- ColumnLeft
- 左側のテーブル/ビューのカラム名
- ColumnRight
- 右側のテーブル/ビューのカラム名
- Operator
- 演算子(=、!=)
ORDER BY指定オブジェクトは以下のプロパティから成ります。
- OrderColumn
- カラム名
- OrderDirection
- ソート順序(ASC、DESC、NONE)
クロス集計型ビューのオプションは以下のプロパティからなるオブジェクトです。
- CrossColumns
- 列ラベルカラムのDB名の配列
- CrossRows
- 行ラベルカラムのDB名の配列
- CrossValues
- 値カラムのDB名の配列
- CrossFunc
- 集計関数(SUM、COUNT、MAX、MIN、AVG)
6.8.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と同じです。
6.8.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へ
6.8.5.カラム式
カラム内容の式にはSQLの式を自由に記述できます。本節では、ビューエディタのカラムの式編集ダイアログで選択して入力できるSQL式について説明します。
6.8.5.1.ABS(絶対値)
ABS関数は、与えられた値の絶対値を返します。
ABS(number)
引数numberには値が数値型となる式(たとえば数値リテラルや数値型のカラム名)を与えます。戻り値のデータ型は入力値と同じです。たとえばABS(-34.5)は34.5を返します。
6.8.5.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)と書くのと同義です。
6.8.5.3.ARRAY_AGG(該当レコードの値を集約して配列化)
ARRAY_AGG関数は、与えられたレコードの値を集約して配列にします。
ARRAY_AGG(column)
column引数には複数の値を返す式(たとえばカラム名)を与えます。戻り値は入力値と同じデータ型の配列です。
6.8.5.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を返します。
6.8.5.5.CASE(条件式)
CASE式は、条件の真偽に応じて別の値を返します。
CASE
WHEN <condition> THEN <value1>
ELSE <value2>
END
conditionには条件式を与えます。また、value1とvalue2には条件が真のときと偽のときに返される値をそれぞれ指定します。条件式はWHEN … THEN … の部分は2つ以上繰り返し記述することで複数指定できます。このときvalue2はすべての条件式が偽のときに返される値となります。ELSE … の部分は省略できます。ELSE句がなく、どの条件も真でないとき、CASE式の結果はNULLです。
6.8.5.6.COALESCE(NULLでない最初の値)
COALESCE関数は、与えられた引数のうち最初のNULLでない値を返します。すべての引数がNULLのときは結果はNULLです。
COALESCE(value1, value2, ...)
以下に用例を示します。
COALESCE(display_name, user_id, '<unknown>')
この式はdisplay_nameがNULLでなければをその値を返します。そうでない場合(値がNULLのとき)は、user_idがNULLでなければその値を返します。さもなければ<unknown>が返されます。
6.8.5.7.CONCAT(文字列結合)
CONCAT関数は、すべての引数を文字列化して結合した結果を返します。値がNULLの引数は無視されます。
CONCAT(value1, value2, ...)
引数には任意のデータ型の式(たとえば文字列リテラルやカラム名)を与えます。戻り値のデータ型は文字列型です。
6.8.5.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
6.8.5.9.FLOOR(切り捨て)
FLOOR関数は、与えられた引数より大きくない最大の整数を返します。
FLOOR(number)
引数numberには値が数値型となる式(たとえば数値リテラルや数値型のカラム名)を与えます。戻り値のデータ型は入力値と同じです。たとえばFLOOR(-45.6)は-46を返します。
6.8.5.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
6.8.5.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
6.8.5.12.LEFT(先頭の文字列)
LEFT関数は、文字列の先頭(左)から指定文字数分の部分文字列を返します。
LEFT(text, number)
text引数には値が文字列型の式(たとえば文字列リテラルや文字列型のカラム名)を与えます。number引数には文字数を指定します。文字数が負の値のときは、その値の絶対値に等しい文字数の分だけ文字列の末尾を除いた部分文字列を返します。
6.8.5.13.LOWER(小文字変換)
LOWER関数は、与えられた文字列を小文字に変換します。
LOWER(text)
text引数には値が文字列型の式(たとえば文字列型のカラム名)を与えます。戻り値のデータ型は文字列型です。
6.8.5.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としています。
6.8.5.15.RIGHT(末尾の文字列)
RIGHT関数は、文字列の末尾(右)から指定文字数分の部分文字列を返します。
RIGHT( <text>, <number>)
text引数には値が文字列型の式(たとえば文字列リテラルや文字列型のカラム名)を与えます。number引数には文字数を指定します。文字数が負の値のときは、その値の絶対値に等しい文字数の分だけ文字列の先頭を除いた部分文字列を返します。
6.8.5.16.ROUND(四捨五入)
ROUND関数は、与えられた数値を四捨五入して返します。
ROUND(number)
引数には値が数値型の式(たとえば数値リテラルや数値型のカラム名)を与えます。戻り値のデータ型は入力値と同じです。たとえばROUND(23.4)は23を返します。
6.8.5.17.SUBSTR(文字列切出)
SUBSTR関数は、与えられた文字列の部分文字列を返します。
SUBSTR(text, number1, number2)
text引数には値が文字列型の式(たとえば文字列リテラルや文字列型のカラム名)を与えます。number1引数には部分文字列の開始位置(文字列の先頭が0)、number2引数には部分文字列の文字数を整数で与えます。
6.8.5.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
6.8.5.19.UPPER(大文字変換)
UPPER関数は、与えられた文字列を大文字に変換します。
UPPER(text)
text引数には値が文字列型の式(たとえば文字列型のカラム名)を与えます。戻り値のデータ型は文字列型です。
6.9.絞り込み条件
絞り込み条件(where)はDBテーブル・ビューに格納されたレコードのうち、読み出しや更新などのデータ操作の対象となるレコードを選択するための条件を記述するオプションです。絞り込み条件を指定すると、その条件を満たすレコードのみが処理対象となります。絞り込み条件を指定しなければDBテーブル・ビューの全レコードが処理対象となります。絞り込み条件として指定できるオブジェクトは以下のとおりです。
1. カラム名と値の対から成るオブジェクト
2. サブクエリ(副問い合わせ)を含むオブジェクト
3. 絞り込み条件の論理和・論理積を表すオブジェクト
6.9.1.カラム名と値の対
絞り込み条件としてカラム名と値の対から成る次の形式のオブジェクトを与えた場合、カラムの値が所与の関係を満たすかどうかをすべての対について調べます。
{"カラム名1": カラム1の値, "カラム名2": カラム2の値, ...}
カラムの値として指定できるのは以下のものです。
a. 数値や文字列などのリテラル(即値)
b. {op: 演算子, value: 値} の形式のオブジェクト
c. {op: 演算子, values: [値1, 値2, ...]} の形式のオブジェクト
d. {op: 演算子, min: 下限値, max: 上限値} の形式のオブジェクト
e. {op: 演算子} の形式のオブジェクト
6.9.1.1.リテラル
値として数値や文字列などのリテラル(即値)を指定した場合、その値とカラムの値が等しいかどうかを調べます。この指定方法は、後述の比較演算子を用いた形式で {op: "=", value: 値} と記述するのと同等です。
6.9.1.2.比較演算子
値として次の形式のオブジェクトを与えた場合、カラムの値とvalueの値を演算子opで比較します。
{op: 演算子, value: 値}
opには以下の演算子が指定できます。
- =
- 等しい
- !=
- 等しくない
- <>
- 等しくない
- <
- より小さい
- <=
- より小さい、または等しい(以下)
- >
- より大きい
- >=
- より大きい、または等しい(以上)
- LIKE
- valueで与えられたパタン文字列に一致する
- NOT LIKE
- valueで与えられたパタン文字列に一致しない
パタン文字列の最初および最後に現れるパーセント記号(%)は0個以上の文字の並びと一致します。たとえば {op: "LIKE", value: "日本%"} と指定すると "日本"、"日本人"、"日本列島" などに一致します。パタン文字列については後述の【パタン文字列】の節を参照してください。
6.9.1.3.IN
値として次の形式のオブジェクトを与えた場合、カラムの値がvaluesの要素として含まれるかどうかを調べます。
{op: 演算子, values: [値1, 値2, ...]}
opには以下の演算子が指定できます。
- IN
- カラムの値がvaluesの要素として含まれる
- NOT IN
- カラムの値がvaluesの要素として含まれない
valuesには1つ以上の要素からなる配列を与えます。空の配列を与えるとエラーになります。
6.9.1.4.BETWEEN
値として次の形式のオブジェクトを与えた場合、カラムの値が最小値と最大値で表された範囲に含まれるかどうかを調べます。
{op: 演算子, min: 最小値, max: 最大値}
opには以下の演算子が指定できます。
- BETWEEN
- カラムの値が範囲内にある(最小値以上かつ最大値以下である)
- NOT BETWEEN
- カラムの値が範囲外にある(最小値以上でない、または最大値以下でない)
6.9.1.5.IS NULL
値として次の形式のオブジェクトを与えた場合、opに指定した条件が成り立つかどうかを調べます。
{op: 演算子}
opには以下の演算子が指定できます。
- IS NULL
- カラムの値がNULLである
- IS NOT NULL
- カラムの値がNULLではない
6.9.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.9.3.絞り込み条件の論理和・論理積
次の形式で絞り込み条件オブジェクトの配列を与えた場合、それらの絞り込み条件の論理和(OR)や論理積(AND)が成り立つかどうかを調べます。
{論理演算子: [絞り込み条件1, 絞り込み条件2, ...]}
論理演算子には以下のものが指定できます。
- OR
- 論理積(「または」の意)
- AND
- 論理積(「かつ」の意)
6.9.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"}}}}
7.自動計算
本節では自動計算に用いるAPIについて説明します。
7.1.utilオブジェクト
utilオブジェクトは、スクリーンモジュールの自動計算の設定でスクリプトを選んだ場合に、スクリーンモジュールのcalculateプロパティに設定する関数の引数として渡されてくるオブジェクトです。utilオブジェクトには自動計算の記述に便利な関数がまとめられています。
たとえば2つのテキストBOXモジュールTEXTBOX1,TEXTBOX2に入力されている値を足し合わせて文字列モジュールLABEL1に表示するにはスクリーンのloadイベントハンドラに以下のようなスクリプトを追加します。
buddyscreen.on("load", async(evt)=>{
// 自動計算の例
buddyscreen.items.LABEL1.calculate = (util)=>{
return util.sum("TEXTBOX1", "TEXTBOX2")
}
})
LABEL1のcalculateプロパティに設定した関数のutil引数に、本項で説明するutilオブジェクトが渡されてきます。上述の例で用いているutil.sum()は引数で与えられた名前の2つのモジュールの現在の値を足し合わせた値(総和)を計算する関数です。
7.1.1.util.int
util.int関数はname引数で与えられた名前のモジュールの現在の値を整数値として返します。
util.int(name)
7.1.2.util.numeric
util.numeric関数はname引数で与えられた名前のモジュールの現在の値を実数値として返します。
util.numeric(name)
7.1.3.util.sum
util.sum関数は引数で与えられた1つ以上の名前のモジュールの現在の値の総和を返します。
util.sum(name1, name2, ...)