Source: tabMenu.controller.mixin-1.0.0.js

/***********************************************
 * Framework Name  :  Halu
 * (c) 2025 TILLS & Co.
 * --------------------------------------------
 * タブメニューパターン
 * コントローラミックスイン
***********************************************/

(function ($, $H) {
  // 名前空間を設定する
  let App = $H.Library;

  /**
   * 関数を追加する
   * @mixin TabMenuControllerMixin
   */
  App.TabMenuControllerMixin = {

    /**
     * ログイン情報を表示し、<br>
     * セッションストレージにターゲットタブが保存されている場合はメニュータブを開く<br>
     * ターゲットタブが保存されていない場合は初期処理を実行する<br>
     * 
     * @memberof TabMenuControllerMixin
     * @param - なし
     */
    initExecute: function () {
      $H.log("Controller initExecute : start");

      let arg = this.model.getログイン情報();
      this.view.setログイン情報(arg);

      // セッションストレージに識別名を保存する
      sessionStorage.setIdName(this.appspec.sysname + "." + this.appspec.name);

      let tabname = sessionStorage.loadItem("ターゲットタブ");
      if (this.appspec.isExists(tabname)) {
        this.view.openメニュータブ(tabname);
      }
      else {
        this.ajaxExecute("init");
      }

      $H.log("Controller initExecute : end");
    },

    /**
     * 選択したタブに表示を切り替え、切替後のタブ名をセッションストレージに保存する
     * 
     * @memberof TabMenuControllerMixin
     * @param {event} event - イベント情報
     */
    onメニュータブ: function (event) {
      $H.log("Controller onメニュータブ : start");

      let tabName = event.currentTarget.id;
      $("#" + tabName).tab('show');
      $("#" + tabName).focus();

      // セッションストレージに識別名を保存する
      sessionStorage.setIdName(this.appspec.sysname + "." + this.appspec.name);
      sessionStorage.saveItem("ターゲットタブ", tabName);

      this.onFocus12(event);

      $H.log("Controller onメニュータブ : end");
    },

    /**
     * 次画面の情報をセッションストレージに保存し、ユーザ情報登録処理を実行する
     * 
     * @memberof TabMenuControllerMixin
     * @param {event} event - イベント情報
     */
    onメニュー項目: function (event) {
      $H.log("Controller onメニュー項目 : start");

      let htmlName = event.currentTarget.name;
      if (htmlName != "") {
        let arg = { 次画面名: htmlName };
        this.model.onメニュー項目(arg);
        this.ajaxExecute("userinfo");
      }

      $H.log("Controller onメニュー項目 : end");
    },

    /**
     * 実行処理で行う処理を追加する
     * 
     * @memberof TabMenuControllerMixin
     * @param {event} event - イベント情報
     */
    on実行: function (event) {
      $H.log("Controller on実行 : start");


      $H.log("Controller on実行 : end");
    },

    /**
     * 戻る処理で行う処理を追加する
     * 
     * @memberof TabMenuControllerMixin
     * @param {event} event - イベント情報
     */
    on戻る: function (event) {
      $H.log("Controller on戻る : start");

      this.ajaxExecute("term");

      $H.log("Controller on戻る : end");
    },

    /**
     * F12キー押下時、フォーカスをあてる項目を指定する
     * 
     * @memberof TabMenuControllerMixin
     * @param {event} event - イベント情報
     */
    onFocus12: function (event) {
      $H.log("Controller onFocus12 : start");

      this.view.setF12FocusItem();

      $H.log("Controller onFocus12 : end");
    },

    /**
     * 初期処理のリクエストデータへメニュー起動情報とローカル端末情報を設定する
     * 
     * @memberof TabMenuControllerMixin
     * @param {object} requestData - リクエストデータ
     * @param {string} mode - 処理モード
     * @returns {boolean} true:チェックOK/false:チェックNG
     */
    on初期処理OfCheckRequestData: function (requestData, mode) {
      $H.log("Controller on初期処理OfCheckRequestData : start");

      let status = this.model.on初期処理OfCheckRequestData(requestData, mode);

      $H.log("Controller on初期処理OfCheckRequestData : end");
      return status;
    },

    /**
     * ユーザ情報のリクエストデータへ次画面名とローカル端末情報を設定する
     * 
     * @memberof TabMenuControllerMixin
     * @param {object} requestData - リクエストデータ
     * @param {string} mode - 処理モード
     * @returns {boolean} true:チェックOK/false:チェックNG
     */
    onユーザ情報OfCheckRequestData: function (requestData, mode) {
      $H.log("Controller onユーザ情報OfCheckRequestData : start");

      let status = this.model.onユーザ情報OfCheckRequestData(requestData, mode);

      $H.log("Controller onユーザ情報OfCheckRequestData : end");
      return status;
    },

    /**
     * 終了処理のリクエストデータへメニュー終了情報とローカル端末情報を設定する
     * 
     * @memberof TabMenuControllerMixin
     * @param {object} requestData - リクエストデータ
     * @param {string} mode - 処理モード
     * @returns {boolean} true:チェックOK/false:チェックNG
     */
    on終了処理OfCheckRequestData: function (requestData, mode) {
      $H.log("Controller on終了処理OfCheckRequestData : start");

      let status = this.model.on終了処理OfCheckRequestData(requestData, mode);

      $H.log("Controller on終了処理OfCheckRequestData : end");
      return status;
    },

    /**
     * 先頭タブを表示する
     * 
     * @memberof TabMenuControllerMixin
     * @param {object} responseData - レスポンスデータ
     * @param {string} mode - 処理モード
     */
    on初期処理OfEditResponseData: function (responseData, mode) {
      $H.log("Controller on初期処理OfEditResponseData : start");

      let tabName = "tab_1";

      // セッションストレージに識別名を保存する
      sessionStorage.setIdName(this.appspec.sysname + "." + this.appspec.name);
      sessionStorage.saveItem("ターゲットタブ", tabName);
      this.view.openメニュータブ(tabName);

      $H.log("Controller on初期処理OfEditResponseData : end");
    },

    /**
     * 遷移前画面情報をセッションストレージに保存し、次画面へ遷移する
     * 
     * @memberof TabMenuControllerMixin
     * @param {object} responseData - レスポンスデータ
     * @param {string} mode - 処理モード
     */
    onユーザ情報OfEditResponseData: function (responseData, mode) {
      $H.log("Controller onユーザ情報OfEditResponseData : start");

      let htmlName = this.model.onユーザ情報OfEditResponseData(responseData, mode);
      let currName = this.appspec.urlInfo[0]["app"];
      this.model.setTransitionData(currName.slice(0, -1));
      this.model.postHtmlTransition(htmlName);

      $H.log("Controller onユーザ情報OfEditResponseData : end");
    },

    /**
     * セッションストレージのログイン情報をクリアし、前画面へ戻る
     * 
     * @memberof TabMenuControllerMixin
     * @param {object} responseData - レスポンスデータ
     * @param {string} mode - 処理モード
     */
    on終了処理OfEditResponseData: function (responseData, mode) {
      $H.log("Controller on終了処理OfEditResponseData : start");

      this.model.on終了処理OfEditResponseData();
      this.model.previousTransition();

      $H.log("Controller on終了処理OfEditResponseData : end");
    },

    /**
     * 処理のエラー情報をダイアログで表示する
     *
     * @memberof TabMenuControllerMixin
     * @param {object} responseData - レスポンスデータ
     * @param {object} mode - 処理モード
     */
    onErrorResponseData: function (responseData, mode) {
      $H.log("Controller onErrorResponseData : start");

      this.errorResponseData(responseData);

      $H.log("Controller onErrorResponseData : end");
    },

    /**
     * 引数で指定されたタブ数分、タブ表示を移動する
     * 
     * @memberof TabMenuControllerMixin
     * @param {Number} val - 移動タブ数
     */
    onTabPainMove: function (val) {
      $H.log("Controller onTabPainMove : start");

      // セッションストレージに識別名を保存する
      sessionStorage.setIdName(this.appspec.sysname + "." + this.appspec.name);
      let currentTabName = sessionStorage.loadItem("ターゲットタブ");
      let noArray = currentTabName.split('_');
      let tabNo = Number(noArray[1]) + val;

      if (tabNo == 0) {
        tabNo = this.appspec.maxTabNo;
      }
      if (tabNo > this.appspec.maxTabNo) {
        tabNo = 1;
      }
      let targetTabName = "タブ_" + String(tabNo);

      // セッションストレージに識別名を保存する
      sessionStorage.setIdName(this.appspec.sysname + "." + this.appspec.name);
      sessionStorage.saveItem("ターゲットタブ", targetTabName);
      this.view.openメニュータブ(targetTabName);

      $H.log("Controller onTabPainMove : end");
    },

    /**
     * 確認ダイアログ表示後に行う処理を追加する
     *
     * @memberof TabMenuControllerMixin
     * @param - なし
     */
    onConfirmDialogAfter: function () {
      $H.log("Controller onConfirmDialogAfter : start");

      $H.log("Controller onConfirmDialogAfter : end");
    },

    /**
     * 実行ダイアログ表示後に行う処理を追加する
     * 
     * @memberof TabMenuControllerMixin
     * @param - なし
     */
    onExecuteDialogAfter: function () {
      $H.log("Controller onExecuteDialogAfter : start");

      $H.log("Controller onExecuteDialogAfter : end");
    },

    /**
     * サーバーダイアログ表示後に行う処理を追加する
     * 
     * @memberof TabMenuControllerMixin
     * @param - なし
     */
    onServerDialogAfter: function () {
      $H.log("Controller onServerDialogAfter : start");

      $H.log("Controller onServerDialogAfter : end");
    }

  };
}(jQuery, Halu));