======UnitPerk======
''継承:Perk'' ''セクション名:unit'' ''優先度:400''
=====概要=====
UnitPerkはクラスファイルのロードなど、ユニットのロードとインスタンス化に関する機能を付与します。
=====設定=====
====書式-グローバル設定====
全ユニットに共通な設定はグローバル設定の"system.unit"セクションに記述します。
{
"system": {
"unit": {
"options": {
"path": String,
}
}
}
}
====書式-ユニット固有設定====
各ユニット固有の設定は"unit"セクションに記述します。
"unit.units"セクションには、動的に追加するユニットの一覧を記述します。の値として設定するオブジェクトは、追加するユニットに対する設定となります。ここで記載されてない設定も含め、全ての設定を記述することができます。ここで記述された値は、そのユニットの設定にマージされます。
{
"unit": {
"options": {
"adjacentPosition": "beforebegin"|"afterbegin"|"beforeend"|"afterend",
"autoLoad": Boolean|String,
"autoMorph": Boolean|String,
"className": String,
"fileName": String,
"parentNode": String,
"parentUnit": String,
"path": String,
"query": String,
"replaceParent": Boolean,
"syncOnAdd": String,
"tag": String,
},
"units": {
: {
(unit settings)
},
...
}
}
}
====書式-タグ属性====
いくつかの設定は、タグ属性で指定することもできます。
===="adjacentPosition"====
''型:String''
ユニットを挿入するポジションを指定します。 "beforebegin"、"afterbegin"、"beforeend"、"afterend"のいずれかを指定できます。意味は標準のinsertAdjacentHTML()のposition引数と同じです。
----
===="autoLoad" / bm-autoload====
''型:Boolean|String'' ''デフォルト:False''
ユニットに必要なファイルを自動的にロードすることを示します。値としてTrue、ユニットのJSファイルへのURL、HTMLファイルへのURLのいずれかを指定することができます。Trueの場合は、デフォルトのパスとファイル名が使用されます。HTMLファイルが指定された場合、モーフィング後に指定されたHTMLファイルがロードされます。
bm-autoload属性を指定した場合、値が指定されていればファイルへのURL、値が指定されてなければTrueとみなされます。
----
===="autoMorph" / bm-automorph====
''型:Boolean|String'' ''デフォルト:"BITSMIST.v1.Unit"''
既存のクラスを使ってユニットをインスタンス化します。指定したクラスを継承した新しいクラスが作成され、それがタグに紐づけられます。指定するクラスがまだ存在しない場合は、[[#autoload_bm-autoload |autoLoad]]オプションも同時に使用してクラスをロードする必要があります。Trueの場合は、デフォルトのUnitオブジェクトが使用されます。
bm-automorph属性を指定した場合、値が指定されていればクラスの名称、値が指定されてなければTrueとみなされます。
----
===="className" / bm-classname====
''型:String'' ''デフォルト:(説明参照)''
ユニットのクラス名を指定します。指定がない場合は、タグ名のハイフンの前後の文字の頭を大文字にし、ハイフンを取り除いてつなげたものがクラス名となります。
----
===="fileName" / bm-filename====
''型:String'' ''デフォルト:<タグ名>''
ユニットのファイル名を拡張子なしで指定します。指定がない場合は、タグ名がファイル名となります。 設定、HTMLファイル 、CSSファイル等のファイルをロードする際のファイル名としても使用されます。
----
===="parentNode"====
''型:String''
このユニットを追加するノードを指定します。ノードは、[[#parentunit|parentUnit]]で指定されたユニットの配下にある必要があります。指定がない場合、親ノードの直下に追加されます。
----
===="parentUnit"====
''型:String'' ''デフォルト:this''
このユニットを追加する親のユニットを指定します。値には、[[ja:bitsmist-js-core:reference:perk:basic-perk#locate|basic.locate]]スキルのtarget引数と同じものを指定します。指定がない場合は、自身に追加します。
----
===="path" / bm-path====
''型:String''
ユニットのパスを指定します。"system.unit.options.path"と"unit.options.path"を繋げたものが、デフォルトのパスとして使用されます。設定、HTMLファイル 、CSSファイル等のファイルをロードする際のパスとしても使用されます。
----
===="query"====
''型:String''
ファイルを取得する際にURLに付加されるクエリーです。
----
===="replaceParent"====
''型:Boolean'' ''デフォルト:False''
親ノードを置き換えるか指定します。
----
===="syncOnAdd"====
''型:Boolean|String'' ''デフォルト:False''
文字列が指定された場合、ユニットを追加後に、追加したユニットが指定した状態になるのを待ちます。Trueの場合は、"ready"になるのを待ちます。
状態の名称は、[[ja:bitsmist-js-core:reference:perk:status-perk#status|リファレンス - StatuePerk - ステート -status]]を参照してください。
----
===="tag"====
''型:String''
ユニットのタグを終了タグも含めて指定します。この値でHTMLに挿入されます。
========
''型:String''
ユニットの名前を指定してください。
=====イベントハンドラ=====
====doApplySettings====
"unit.units"セクションから設定を読み込み、[[#materialize|materialize]]スペルを使ってユニットを追加します。
===参照する設定===
* [[#書式-ユニット固有設定|unit.units]]
=====インベントリ=====
====units====
''型:Object'' ''対象:インスタンス''
このユニットに追加されたユニットを保持するオブジェクトです。それぞれのアイテムは以下のキーを持っています。
|< 100% 180px 130px - >|
^キー^型^説明^
|object|Unit|追加したユニットです。|
=====スペル=====
====materialize====
''型:Unit'' ''対象:Unit''
ユニット内に新たなユニットを追加します。追加したユニットのインスタンスは、インベントリ内のunitsに追加されます。クラスファイルのロードが必要な場合は、autoLoadまたはautoMorphオプションをsettings引数に指定してください。ファイルが [[#summon|summon]]スペルを使って、ロードされます。
===パラメータ===
|< 100% 180px 130px - >|
^パラメータ^型^説明^
|tagName \\ ''必須''|String|追加するユニットのタグ名です。|
|settings|Object|追加するユニットの設定情報です。[[#書式-ユニット固有設定|設定のの値に設定する値]]と同じものです。|
|options|Object|ロードオプションです。以下のキーがあります。|
| "syncOnAdd"|Boolean|設定の[[#synconadd|syncOnAdd]]と同じです。こちらの方が優先度が高くなります。|
===戻り値===
追加したユニットのインスタンスです。
===参照する設定===
* [[#adjacentPosition|unit.options.adjacentPosition]]
* [[#parentnode|unit.options.parentNode]]
* [[#replaceparent|unit.options.replaceParent]]
* [[#synconadd|unit.options.syncOnAdd]]
* [[#tag|unit.options.tag]]
----
====materializeAll====
''型:Undefined'' ''対象:Unit''
ユニット内に存在する、ロードが必要な全てのユニットをインスタンス化します。それぞれのユニットに対し、[[#materialize|materialize]]スペルを使ってインスタンス化を行います。
===パラメータ===
|< 100% 180px 130px - >|
^パラメータ^型^説明^
|rootNode \\ ''必須''|HTMLElement|ロード対象の基点となるノードです。|
|options|Object|ロードのオプションです。有効なキーは以下のものがあります。|
| "waitForTags" \\ ''デフォルト:false''|Boolean|Trueの場合、ロードした全ユニットが"ready"状態になるのを待ちます。|
===戻り値===
なし。
===参照する設定===
* [[#autoload_bm-autoload|bm-autoload]]
* [[#automorph_bm-automorph|bm-automorph]]
----
====summon====
''型:Undefined'' ''対象:Unit''
ユニットのクラスファイルをロードします。ファイルのロードが完了した後は、ユニットのタグをドキュメントツリーに追加することで、インスタンス化できます。ロード前にタグが存在する場合、このスペルが完了すると自動的にインスタンス化されます。
===パラメータ===
|< 100% 180px 130px - >|
^パラメータ^型^説明^
|tagName \\ ''必須''|Object|ロードするユニットのタグ名です。|
|settings|Object|ユニットの設定です。|
===戻り値===
なし。
===参照する設定===
* [[#autoload_bm-autoload|unit.options.autoLoad]]
* [[#automorph_bm-automorph|unit.options.autoMorph]]
* [[#classname_bm-classname|unit.options.className]]
* [[#filename_bm-filename|unit.options.fileName]]
* [[#path_bm-path|unit.options.path]]
* [[#query|unit.options.query]]
* [[#splitclass_bm-split|unit.options.splitclass]]