6 posts tagged “bml”
そもそも、大学中退して、専門学校に行き、
ひょんなことから、HTMLコーディングスタッフとして今の仕事に就き、
「Javascriptは重いから嫌い」
とテレホ+Netscape世代丸出しコメントをしたりしていたにも関わらず、
今じゃJavaScript(というかjQueryだけど)触るのが楽しくて仕方が無くて、
オライリーのJavaScript第五版を自費で購入→出勤時の読み物とか、
ほんと昔じゃ考えられないんですけどって現状で、もし、
「なんで、JavaScriptに触り始めたの?」
と聞かれたら、
「仕事でBMLを使うことになったので」
とBMLを答えに持ってくるのは、たぶん日本中で、僕くらいしか居ないだろうと言うくらい小さい世界。
それがデータ放送業界。
いまいち。
でもあのターニングポイントは今となれば、とてつもなく大きな出来事。
bmlで
for(i in document){
hoge(i);
}
が動かなくて涙目
.search()しないんだったら.toArray()しましょ、って感じで最近使ってます。勘違いしてたけど。
var RetValAry = BtaObj.toArray(StartRow,Count);
BTAオブジェクトをArrayに変換し、RetValAryに格納
- StartRow:格納する列の開始位置
- Count:格納する列の数
.toArray()したらbta.close()。
あまり書くこともないな。
今日はOA中のカルーセルコンテンツを構成する際、大活躍の.search()デス。
var RetVal = BtaObject.search(StartRow , Op1 , Op2 , Op3 , Logic , Limit , ArrayObjName);
BTAデータから条件にあった要素を抜き出し、配列(ArrayObjName)を生成。
- StartRow:検索を開始する列(0~)
- Op1:検索をするレコード位置(0~)
- Op2:検索対象(文字列、数など)
- Op3:検索条件(==、!=、>= など。)
- Logic:複数条件式の判定基準 and(false)、or(true)
- Limit:抽出するレコードの制限数
- ArrayObjName:抽出したレコードを格納する配列Object(名)
- RetValには、
(成功)・・・検索を終了した行(or列)
(失敗)・・・ -1:一致するデータがない NaN:失敗
Op2の検索対象にできるのはString型、Number型、Boolean型 のいずれか。■複数条件の際は、Op1~Op3を1セットに、4セットまで設定可能。
ex)BtaObject.search(StartRow , Op1-1 , Op1-2 , Op1-3 , Op2-1 , Op2-2 , Op2-3, Op3-1 , Op3-2 , Op3-3 , Op4-1 , Op4-2 , Op4-3 , Logic , Limit , ArrayObjName);
Op3の検索条件は、Op2の型によって使い分けが必要。(条件書き出そうと思ったけど面倒なので、、、暇なときにまたやる、、かも。)
Limitが1の時も、RetObjは2次元(以上の)配列で扱う。
var BtaObj = new BinaryTable(URL,STR);
var RetObj = new Array();
var BtaScRetVal = BtaObj.search(0,5,op,32,false,1,RetObj);
if(isNaN(BtaScRetVal) || BtaScRetVal != -1){
//Error処理
}
else{
//正処理
}
BtaObj.close();
大体今はこんな感じの構文。
[余談]
上の構文で、
としたほうが綺麗だろうか。var Obj = new Object();
Obj.bta= new BinaryTable(URL,STR);
Obj.Ary = new Array();
Obj.ScRet = BtaObj.search(0,5,op,32,false,1,Obj.Ary);
if(isNaN(Obj.ScRet) || Obj.ScRet != -1){
//Error処理
}
else{
//正処理
}
Obj.bta.close();
var BtaObj = new BinaryTable(FileAddress,Structure);
BinaryTableオブジェクトを生成する。
- FileAddress:BTAファイルのアドレス。フルパス推奨
- Structure:object化した後に使う構造の宣言 S:1B,S:1B,S:1B を S:3Bと宣言してもOK
Object化できなかったとき(BTAファイルがないときなど)はBtaObj = null
BTAファイルがnullデータでもObjectは生成する。
structureが異なってもObjectは生成される。その後の動作は保障外。
BTAファイルを使用する際の判定は
- BtaObj != null
- BtaObj.toString(0,0) != null or BtaObj.toNumber(0,0) != null とか
.search()、toArray()あたりを使用する前に宣言しておきたいかな。
使用したら.close()も忘れずに。
とりあえず思い出した分だけ
[追記]
structureの綴り修正
と言いたい。
年末に何度か確認したのに・・・。
ここにきてメニュー数がひとつ増えるのは正直しんどいですよ。
その部分のスクリプトは全部書き直しじゃい。
まあ、(今の僕が見て)あまり気にくわない(昔の僕の)コードなので、
コードが綺麗になる分には、モチベーションはあがるのですが。
全体的にもだいぶ出来上がって、バグ取りも進む中、全ページ数がほぼ見えてきました。
現状では全30ページになるかと。(全ES含めて)
現在の進行状況
24ページはほぼ完成。(95-100%)
5ページはまだレイアウトレベル。(20-40%)
1ページが(上に書いていた)一部作り直しリテイク(95→65%)
なんとかします。
[20:51追記]
メニューの追加の件、あっさり完成。
というか昔の俺だめすぎ。もっとシンプルに考えないとダメエエエエエエ。
いじれないところも多かったけどサクサクっと。
new Object()の便利さに気づいた。感動。