3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IM-FormaDesigner / IM-BISで先頭空白行ありセレクトボックス ドリルダウン処理実装

Last updated at Posted at 2019-03-14

前提

  • intra-mart Accel Platform
  • IM-BIS導入環境
  • IM-BIS / IM-FormaDesiner

参考資料

やりたいこと

  • 会社 > 組織1階層目 > 組織2階層目 組織階層で絞り込むUI
    ドリルダウンサンプル.gif
    • こんな具合の動作にしたい
    • 組織を選択しない、組織未所属もありうるので空白行も選びたい

サンプルファイル

ポイント

  1. 初期表示イベント設定。各セレクトボックスに外部連携設定
    登録データ編集時、参照時の初期表示時に登録データが表示されるようにするために設定している。
    初期表示イベント設定.PNG

  2. アイテムイベント設定。会社セレクトボックスと組織階層1セレクトボックス入力イベント設定
    アイテムイベント設定.PNG
    組織階層1アクション設定.PNG

    入力イベントで下位組織セレクトボックスをクリアしてから外部連携でセレクトボックスを設定する。
    下位組織セレクトボックスをクリアするスクリプトは下記のとおり

組織階層1セレクトボックス入力_カスタムスクリプト.js
// 組織階層1セレクトボックス入力 カスタムスクリプト
// フィールド識別IDを指定
var input_id = "dep2_selectbox";
var args = {};
// Option項目設定
args.master = {};
args.master[input_id] = [];
// 空行設定
var emprow = {};
emprow["value_" + input_id] = "";
emprow["key_" + input_id] = "";
args.master[input_id].push(emprow);
// master変更時の初期値クリア
$('[name="escape_'+ input_id + '"]').val("");
// 選択値設定
args.data = {};
args.data[input_id] = "";

formaItems.product_80_selectbox.setItemData[input_id](args);

試行錯誤の経緯

  1. セレクトボックス先頭に空白行を挿入したところ問題発生

    • 空白行選択時に下位組織セレクトボックス内容がそのままになる
    • 回避方法検討
      変更時に下位のセレクトボックス内容をすべてクリアすることで対応できるはず
  2. カスタムスクリプトでセレクトボックスクリア処理をやろうとするが分からない
    クリア処理調査&実装する
    調査した結果が下記の記事になる

    IM-FormaDesigner / IM-BIS セレクトボックス Option値をAPIで設定する

  3. 軽く動作させると謎の動きをするので直す

    • 再現手順を下記に示す
      1. 登録ボタン後、修正時発生
      2. 階層1を空白にすると階層2も空白になる
      3. 階層1を元の値にすると階層2も元の値になる
        階層2は空白であってほしい
    • 修正方法の検討
      1. 元の値をどこかに保持しているっぽいのでhtmlを捜索
      2. escape_%フィールド識別ID% というnameのhidden発見
      3. こいつをクリアすると元に戻らないことを確認したので、適時クリアする
      4. formaのソースを確認すると初期表示時に選択値に設定するためのもので、これが暴発しているよう
        初期表示以外には使わないのでクリアして問題なしと判断
  4. 上記調査結果を組み合わせてintra-martサンプル導入環境で動作するサンプル作成

愚痴

簡単かと思ったら妙に大変。なぜ空白行選択時に外部連携データが更新されないのだ。。。

やはり下記の記事のとおりの大変さである

IM-FormaDesigner/IM-BISでのアプリケーション作成工数は限定条件下でしか低コストにならない

本当はグリッドテーブルでドリルダウンサンプルを作る記事を書きたくて、その前段階としてこの記事のサンプルを用意したのだけど、思った以上の面倒くささだった。。。
グリッドテーブルはもっと酷くなる。ツライ

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?