intra-mart Accel Kaiden! プログラミングガイド 第21版 2024-04-01

4.2.2.5.4.2. 集計チェック定義登録ガジェット

4.2.2.5.4.2.1. Controllerクラス作成

コントローラークラスを作成します。
package jp.co.slcs.kaiden.v2.tutorial2.feature.action.kaiden.gadget;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import jp.co.slcs.kaiden.v2.product_labormgr.feature.controller.kaiden.gadget.AbstractKlsSettingControllerBase;
import jp.co.slcs.kaiden.v2.product_labormgr.feature.form.kaiden.gadget.AbstractKlsSettingForm;
import jp.co.slcs.kaiden.v2.product_labormgr.feature.logic.kaiden.gadget.AbstractKlsSettingLogic;
import jp.co.slcs.kaiden.v2.tutorial2.feature.form.kaiden.gadget.KlsLateEarlyPeriodTimeV01Form;
import jp.co.slcs.kaiden.v2.tutorial2.feature.logic.kaiden.gadget.KlsLateEarlyPeriodTimeV01Logic;

@Controller
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@RequestMapping("kaiden/v2/gadget/klsLateEarlyPeriodTimeV01")
public class KlsLateEarlyPeriodTimeV01Controller extends AbstractKlsSettingControllerBase {
    
    public KlsLateEarlyPeriodTimeV01Form klsLateEarlyPeriodTimeV01Form;
    
    @Autowired
    public KlsLateEarlyPeriodTimeV01Logic klsLateEarlyPeriodTimeV01Logic;
    
    @Override
    protected AbstractKlsSettingForm getForm() {
        return klsLateEarlyPeriodTimeV01Form;
    }
    
	@Override
    protected void setForm(AbstractKlsSettingForm form) {
        klsLateEarlyPeriodTimeV01Form = (KlsLateEarlyPeriodTimeV01Form) form;
    
    @Override
    protected AbstractKlsSettingLogic getLogic() {
        return klsLateEarlyPeriodTimeV01Logic;
    }
}

4.2.2.5.4.2.2. Formクラス作成

フォームクラスを作成します。
package jp.co.slcs.kaiden.v2.tutorial2.feature.form.kaiden.gadget;

import jp.co.slcs.kaiden.v2.product_labormgr.feature.form.kaiden.gadget.AbstractKlsSettingForm;

public class KlsLateEarlyPeriodTimeV01Form extends AbstractKlsSettingForm {
}

4.2.2.5.4.2.3. Logicクラス作成

ロジッククラスを作成します。
package jp.co.slcs.kaiden.v2.tutorial2.feature.logic.kaiden.gadget;

import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import jp.co.slcs.kaiden.v2.product_labormgr.feature.logic.kaiden.gadget.AbstractKlsSettingLogic;

@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class KlsLateEarlyPeriodTimeV01Logic extends AbstractKlsSettingLogic {
}

4.2.2.5.4.2.4. JSP作成

JSPファイル名をklsLateEarlyPeriodTimeV01.jspとします。
「/WEB-INF/views/kaiden/v2/tutorial2/gadget/klsLateEarlyPeriodTime」に配置します。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="im" uri="http://www.intra-mart.co.jp/taglib/im-tenant" %>
<%@ taglib prefix="k" uri="http://kaiden.slcs.co.jp/taglib/v2/ui" %>
<%@ taglib prefix="imui" uri="http://www.intra-mart.co.jp/taglib/imui" %>
<%@ page import="jp.co.slcs.kaide.vn2.base.foundation.util.PropertyJspUtil"%>
<%@ page import="jp.co.slcs.kaiden.v2.base.foundation.conf.BaseProp" %>
<%@ page import="jp.co.slcs.kaiden.v2.product_labormgr.foundation.conf.ProductLabormgrProp" %>
<%@ page import="jp.co.slcs.kaiden.v2.base.foundation.conf.ViewMode" %>

<%-- 遅刻早退時間チェックガジェット --%>
<c:set var="gadgetClass">${param.gadgetClass}</c:set>
<c:set var="gadgetVariation">${param.gadgetVariation}</c:set>
<c:set var="gadgetInstance">${param.gadgetInstance}</c:set>
<c:set var="gadgetId">${gadgetClass}_${gadgetVariation}_${gadgetInstance}</c:set>
<c:set var="gadgetTitle">${param.gadgetName}</c:set>
<c:set var="accessUrl">kaiden/gadget/klsLateEarlyPeriodTimeV01</c:set>
<c:set var="sumCheckBlockId">sumCheckList</c:set>
<c:set var="sumCheckDialogId">sumCheckContent</c:set>

<%-- 設定等 --%>
<c:set var="wsCategoryCd">${param.wsCategoryCd}</c:set>
<c:set var="companyCd">${param.companyCd}</c:set>
<c:set var="wsAgreementCd">${param.wsAgreementCd}</c:set>
<c:set var="openApplyDate">${param.openApplyDate}</c:set>
<c:set var="termCd">${param.termCd}</c:set>
<c:set var="inputMode">${param.inputMode}</c:set>
<c:set var="sumDiv">${param.sumDiv}</c:set>
<c:set var="checkRequiredFlag">${param.checkRequiredFlag}</c:set>

<c:set var="debug">${param.debug}</c:set>

<%-- 画面固有バリデーションID --%>
<c:set var="validTimeMax4Caution1">k_${gadgetId}TimeMax4Caution1</c:set>
<c:set var="validTimeMax4Caution2">k_${gadgetId}TimeMax4Caution2</c:set>

<%-- 画面表示モード --%>
<c:set var="input"><%= ViewMode.INPUT.getCode() %></c:set>
<c:set var="view"><%= ViewMode.VIEW.getCode() %></c:set>

<%-- サーフェス --%>
<c:set var="surfaceCheckRequiredFlag"><%= ProductLabormgrProp.S.WsAgreement.SUM_CHECK_REQUIRED %></c:set>

<c:set var="surfaceCriteriaValue"><%= ProductLabormgrProp.S.WsAgreement.OVER_TIME_LIMIT %></c:set>

<c:set var="surfaceCaution1"><%= ProductLabormgrProp.S.CAUTION_1 %></c:set>
<c:set var="surfaceLevel1"><%= ProductLabormgrProp.S.LEVEL_1 %></c:set>
<c:set var="surfaceCaution2"><%= ProductLabormgrProp.S.CAUTION_2 %></c:set>
<c:set var="surfaceLevel2"><%= ProductLabormgrProp.S.LEVEL_2 %></c:set>
<c:set var="surfaceCaution3"><%= ProductLabormgrProp.S.CAUTION_3 %></c:set>
<c:set var="surfaceLevel3"><%= ProductLabormgrProp.S.LEVEL_3 %></c:set>
<c:set var="surfaceCaution4"><%= ProductLabormgrProp.S.CAUTION_4 %></c:set>
<c:set var="surfaceLevel4"><%= ProductLabormgrProp.S.LEVEL_4%></c:set>

<%-- 集計チェック設定 --%>
<%-- 保存 --%>
<c:set var="surfaceRefreshSumCheck"><%= BaseProp.S.SAVE %></c:set>
<%-- チェックを有効にします。 (文字列化済み) --%>
<c:set var="surfaceCheckRequiredFlagOn_text"><%= PropertyJspUtil.getSurface(ProductLabormgrProp.S.WsAgreement.CHECK_REQUIRED_FLAG_ON) %></c:set>
<%-- チェックを無効にします。(文字列化済み) --%>
<c:set var="surfaceCheckRequiredFlagOff_text"><%= PropertyJspUtil.getSurface(ProductLabormgrProp.S.WsAgreement.CHECK_REQUIRED_FLAG_OFF) %></c:set>
<%-- 集計チェックの内容を表示します。 (文字列化済み) --%>
<c:set var="surfaceSumCheckContentInfo_text"><%= PropertyJspUtil.getSurface(ProductLabormgrProp.S.WsAgreement.SUM_CHECK_CONTENT_INFO) %></c:set>
<%-- 有効(文字列化済み) --%>
<c:set var="surfaceEnabled_text"><%= PropertyJspUtil.getSurface(BaseProp.S.ENABLED) %></c:set>
<%-- 無効 (文字列化済み) --%>
<c:set var="surfaceDisabled_text"><%= PropertyJspUtil.getSurface(BaseProp.S.DISABLED) %></c:set>

<%-- ダイアログボタン --%>
<%-- 閉じる (文字列化済み) --%>
<c:set var="surfaceReturnlist_text"><%=PropertyJspUtil.getSurface(BaseProp.S.CLOSE)%></c:set>

<%-- メッセージ --%>
<%-- 保存します。 --%>
<c:set var="messageSaveConfirm"><%=PropertyJspUtil.getMessage(BaseProp.M.W0012)%></c:set>
<%-- "{0}"以下で入力してください。 --%>
<c:set var="validMsg_timeMax"><%= PropertyJspUtil.getMessage(BaseProp.M.W0226) %></c:set>

<%-- バリデーション --%>
<c:set var="validCriteriaValue_1_setings">{k_time:[''], k_${gadgetId}TimeMax4Caution1:['criteriaValue|2', 'criteriaValue|3', 'criteriaValue|4'], k_timeMax2:['1000:00']}</c:set>
<c:set var="validCriteriaValue_2_setings">{k_time:[''], k_${gadgetId}TimeMax4Caution2:['criteriaValue|3', 'criteriaValue|4'], k_timeMax2:['1000:00']}</c:set>
<c:set var="validCriteriaValue_3_setings">{k_time:[''], k_timeMax:['criteriaValue|4'], k_timeMax2:['1000:00']}</c:set>
<c:set var="validCriteriaValue_4_setings">{k_time:[''], k_timeMax2:['1000:00']}</c:set>

<k:gadgetContainer gadgetId="${gadgetId}"
                   gadgetClass="${gadgetClass}"
                   gadgetVariation="${gadgetVariation}"
                   gadgetInstance="${gadgetInstance}"
                   gadgetTitle="${gadgetTitle}"
                   hideGadgetTitle="true">

  <form id="gadget_form" onsubmit="return false;">
    <k:blockContainer id="${sumCheckBlockId}" style="padding:0px 20px;">
      <table class="imui-table-mixed" style="table-layout:fixed;margin-bottom:0.5em;">
        <colgroup>
          <col style="width:100%;"/>
        </colgroup>
        <tr>
          <th>
            <k:surface name="checkRequiredFlagOn" surfaceKey="" class="kaiden-ui-wsA_sumCheck kaiden-ui-icon-enable16 mr-5 hidden kaiden-ui-wsA_sumCheck-label" title="${surfaceCheckRequiredFlagOff_text}"/>
            <k:surface name="checkRequiredFlagOff" surfaceKey="" class="kaiden-ui-wsA_sumCheck kaiden-ui-icon-disable16 mr-5 hidden kaiden-ui-wsA_sumCheck-label" title="${surfaceCheckRequiredFlagOn_text}"/>
            <k:hidden name="checkRequiredFlag" mode="${inputMode}"/>
            <k:surface surfaceKey="${gadgetTitle}"/>
            <k:a name="checkContentLink" class="im-ui-icon-common-16-question mr-5 float-R" mode="0" title="${surfaceSumCheckContentInfo_text}"/>
            <k:hidden name="parameterDataId" mode="${inputMode}"/>
          </th>
        </tr>
        <tr class="sumCheckParams" style="display:none;">
          <td>
            <div style="margin-left:50px">
              <table style="width:100%">
                <colgroup>
                  <col />
                  <col style="width:150px;"/>
                </colgroup>
                <tr>
                  <td>
                    <table class="imui-table" style="margin-bottom:0.5em;">
                      <colgroup>
                        <col style="width:200px"/>
                        <col style=""/>
                      </colgroup>
                      <thead>
                        <tr>
                          <th></th>
                          <th><span class="kaiden-ui-icon-warn-I16 mr-5 valign-M"></span><k:surface surfaceKey="${surfaceLevel1}" class="valign-M"/></th>
                          <th><span class="kaiden-ui-icon-warn-II16 mr-5 valign-M"></span><k:surface surfaceKey="${surfaceLevel2}" class="valign-M"/></th>
                          <th><span class="kaiden-ui-icon-warn-III16 mr-5 valign-M"></span><k:surface surfaceKey="${surfaceLevel3}" class="valign-M"/></th>
                          <th><span class="kaiden-ui-icon-warn-IV16 mr-5 valign-M"></span><k:surface surfaceKey="${surfaceLevel4}" class="valign-M"/></th>
                        </tr>
                      </thead>
                      <tbody>
                        <tr>
                          <th><k:surface surfaceKey="${surfaceCriteriaValue}"/></th>
                          <td>
                            <k:time name="criteriaValue|1"
                                    mode="${inputMode}"
                                    surfaceKey="${surfaceCaution1}"
                                    validationSettingsKlsDaily36LimitV01="${validCriteriaValue_1_setings}"
                                    />
                          </td>
                          <td>
                            <k:time name="criteriaValue|2"
                                    mode="${inputMode}"
                                    surfaceKey="${surfaceCaution2}"
                                    validationSettingsKlsDaily36LimitV01="${validCriteriaValue_2_setings}"
                                    />
                          </td>
                          <td>
                            <k:time name="criteriaValue|3"
                                    mode="${inputMode}"
                                    surfaceKey="${surfaceCaution3}"
                                    validationSettingsKlsDaily36LimitV01="${validCriteriaValue_3_setings}"
                                    />
                          </td>
                          <td>
                            <k:time name="criteriaValue|4"
                                    mode="${inputMode}"
                                    surfaceKey="${surfaceCaution4}"
                                    validationSettingsKlsDaily36LimitV01="${validCriteriaValue_4_setings}"
                                    />
                          </td>
                        </tr>
                      </tbody>
                    </table>
                  </td>
                  <td class="align-C valign-M">
                    <k:button mode="${inputMode}" class="imui-small-button" value="${surfaceRefreshSumCheck}" name="settings"/>
                  </td>
                </tr>
               </table>
            </div>
          </td>
        </tr>
      </table>
    </k:blockContainer>
  </form>
  <k:dialog title="${gadgetTitle}" id="${sumCheckDialogId}">
    <div class="imui-box-supplementation">
      <span class="im-ui-icon-common-24-question mr-5" ></span>
      <k:surface name="checkContent" surfaceKey="" style="display:inline-block;vertical-align:top;"/>
    </div>
  </k:dialog>
</k:gadgetContainer>
<script type="text/javascript">
  jQuery(function($) {
    var eventMan = KAIDEN.getGadget("${gadgetId}").eventManager;
    var blockA = KAIDEN.getGadget("${gadgetId}").blockAccessors["${sumCheckBlockId}"]
      , dialog = KAIDEN.getGadget("${gadgetId}").dialogs["${sumCheckDialogId}"]
      , dialogA = KAIDEN.getGadget("${gadgetId}").blockAccessors["${sumCheckDialogId}"];

    //ガジェット初期設定
    KAIDEN.getGadget("${gadgetId}").variable.loadSumCheckSetting = function() {
      var ajax = KAIDEN.Ajax()
        , criteria = {}
      criteria.wsCategoryCd = "${wsCategoryCd}";
      criteria.companyCd = "${companyCd}";
      criteria.wsAgreementCd = "${wsAgreementCd}";
      criteria.openApplyDate = "${openApplyDate}";
      criteria.termCd = "${termCd}";
      criteria.gadgetClass = "${gadgetClass}";
      criteria.gadgetVariation = "${gadgetVariation}";
      criteria.gadgetInstance = "${gadgetInstance}";

      ajax.postSyncAuto("${accessUrl}/loadSumCheck", criteria, function(returnData) {

        var sumCheckData = returnData.${sumDiv}[0];

        //チェック利用の設定
        blockA("checkRequiredFlag").setValue(sumCheckData.checkRequiredFlag);
        if ("1" === sumCheckData.checkRequiredFlag) {
          blockA().elem().find("tr.sumCheckParams").show("fast");
          blockA("checkRequiredFlagOn").removeClass("hidden");
          blockA("checkRequiredFlagOff").addClass("hidden");
        } else {
          blockA().elem().find("tr.sumCheckParams").hide("fast");
          blockA("checkRequiredFlagOn").addClass("hidden");
          blockA("checkRequiredFlagOff").removeClass("hidden");
        }
        blockA("parameterDataId").setValue(sumCheckData.paramDataId);
        dialogA("checkContent").setValue(KAIDEN.Util.escapeHTML(sumCheckData.checkContent));

        //重要度ごとのパラメータ値
        var mildParam = sumCheckData.param.borders.MILD
          , severeParam = sumCheckData.param.borders.SEVERE
          , wsParam = sumCheckData.param.borders.WS
          , violationParam = sumCheckData.param.borders.VIOLATION

        //Lv.1
        for (var key in mildParam) {
          switch(blockA(key + "|1").getType()) {
          case "time":
            blockA(key + "|1").setMinutes(mildParam[key].paramValue);
            break;
          case "timelabel":
            blockA(key + "|1").setMinutes(mildParam[key].paramValue);
            break;
          default:
            blockA(key + "|1").setValueIgnore(mildParam[key].paramValue);
            break;
          }
        }
        //Lv.2
        for (var key in severeParam) {
          switch(blockA(key + "|2").getType()) {
          case "time":
            blockA(key + "|2").setMinutes(severeParam[key].paramValue);
            break;
          case "timelabel":
            blockA(key + "|2").setMinutes(severeParam[key].paramValue);
            break;
          default:
            blockA(key + "|2").setValueIgnore(severeParam[key].paramValue);
            break;
          }
        }
        //Lv.3
        for (var key in wsParam) {
          switch(blockA(key + "|3").getType()) {
          case "time":
            blockA(key + "|3").setMinutes(wsParam[key].paramValue);
            break;
          case "timelabel":
            blockA(key + "|3").setMinutes(wsParam[key].paramValue);
            break;
          default:
            blockA(key + "|3").setValueIgnore(wsParam[key].paramValue);
            break;
          }
        }
        //Lv.4
        for (var key in violationParam) {
          switch(blockA(key + "|4").getType()) {
          case "time":
            blockA(key + "|4").setMinutes(violationParam[key].paramValue);
            break;
          case "timelabel":
            blockA(key + "|4").setMinutes(violationParam[key].paramValue);
            break;
          default:
            blockA(key + "|4").setValueIgnore(violationParam[key].paramValue);
            break;
          }
        }
      });
    };

    // ............................................................................................................
    // 内部イベント
    // ............................................................................................................

    if ("${input}" === "${inputMode}") {
      //チェックボックスON/OFFイベント
      blockA().elem(true).find(".kaiden-ui-wsA_sumCheck").on("click", function(e) {
        if ("1" === blockA("checkRequiredFlag").getValue()) {
          blockA("checkRequiredFlag").setValue("0");
        } else {
          blockA("checkRequiredFlag").setValue("1");
        }
        var ajax = KAIDEN.Ajax()
          , data = {}
          , wsUseSumCheck = {}
          , updateData = {};
        wsUseSumCheck.wsCategoryCd = "${wsCategoryCd}";
        wsUseSumCheck.companyCd = "${companyCd}";
        wsUseSumCheck.wsAgreementCd = "${wsAgreementCd}";
        wsUseSumCheck.searchCriteriaDate = "${openApplyDate}";
        wsUseSumCheck.gadgetClass = "${gadgetClass}";
        wsUseSumCheck.gadgetVariation = "${gadgetVariation}";
        wsUseSumCheck.gadgetInstance = "${gadgetInstance}";
        wsUseSumCheck.checkRequiredFlag = blockA("checkRequiredFlag").getValue();
        wsUseSumCheck.parameterDataId = blockA("parameterDataId").getValue();

        updateData = KAIDEN.gadgetMan.getDataSet("${gadgetId}");
        updateData.wsUseSumCheck = wsUseSumCheck

        data.updateDataJson = KAIDEN.Util.stringifyJSON(updateData);
        //勤務体系情報より、更新カウンタを要求
        data.wsaRenewCnt = KAIDEN.gadgetMan.execPull("claimWsaBasicInfo", undefined, "${gadgetId}")[0].result.renewCnt;
        data.termCd = "${termCd}";
        data.wsaTermRenewCnt = KAIDEN.gadgetMan.execPull("claimWsaTermInfo", undefined, "${gadgetId}")[0].result.renewCnt;
        ajax.postSyncAuto("${accessUrl}/renewCheckFlag", data, function(returnData) {
          KAIDEN.getGadget("${gadgetId}").variable.loadSumCheckSetting(); //設定内容を検索
        });

        e.stopPropagation(); //hrefの動作を抑止
      });
    } else {
      blockA("checkRequiredFlagOn").elem(true).attr("title", "${surfaceEnabled_text}");
      blockA("checkRequiredFlagOff").elem(true).attr("title", "${surfaceDisabled_text}");
    }

    //チェック内容リンク押下イベント
    blockA("checkContentLink").elem(true).on("click", function(e) {
      //閉じるボタン
      dialog.addButton("${surfaceReturnlist_text}", function() {
        dialog.close();
      });
      dialog.open();
      e.stopPropagation(); //hrefの動作を抑止
    });

    //チェック設定リンク押下イベント
    blockA("settings").elem(true).on("click", function(e) {
      kaidenErrorDisplay("hide");
      var ajax = KAIDEN.Ajax()
        , data = {}
        , wsUseSumCheck = {}
        , updateData = {};

      if (!KAIDEN.gadgetMan.preSingleValidate()) {return}; //単項目チェック前
      if ("${debug}" || KAIDEN.gadgetMan.validate("settingsklsdaily36limitv01", false)) { //バリデーション
        imuiConfirm("${messageSaveConfirm}", "", function() {
          wsUseSumCheck.wsCategoryCd = "${wsCategoryCd}";
          wsUseSumCheck.companyCd = "${companyCd}";
          wsUseSumCheck.wsAgreementCd = "${wsAgreementCd}";
          wsUseSumCheck.searchCriteriaDate = "${openApplyDate}";
          wsUseSumCheck.gadgetClass = "${gadgetClass}";
          wsUseSumCheck.gadgetVariation = "${gadgetVariation}";
          wsUseSumCheck.gadgetInstance = "${gadgetInstance}";
          wsUseSumCheck.checkRequiredFlag = blockA("checkRequiredFlag").getValue();

          updateData = KAIDEN.gadgetMan.getDataSet("${gadgetId}");
          updateData.wsUseSumCheck = wsUseSumCheck

          data.updateDataJson = KAIDEN.Util.stringifyJSON(updateData);
          //勤務体系情報より、更新カウンタを要求
          data.wsaRenewCnt = KAIDEN.gadgetMan.execPull("claimWsaBasicInfo", undefined, "${gadgetId}")[0].result.renewCnt;
          data.termCd = "${termCd}";
          data.wsaTermRenewCnt = KAIDEN.gadgetMan.execPull("claimWsaTermInfo", undefined, "${gadgetId}")[0].result.renewCnt;
          ajax.postSyncAuto("${accessUrl}/renewParamValues", data, function(returnData) {
            KAIDEN.getGadget("${gadgetId}").variable.loadSumCheckSetting(); //設定内容を検索
          });
        });
      } else {
        kaidenErrorDisplay("show");
      }
    });

    KAIDEN.getGadget("${gadgetId}").variable.loadSumCheckSetting(); //設定内容を検索

    // ............................................................................................................
    // その他チェック
    // ............................................................................................................
    /**
     * 注意レベル1最大時刻チェック.
     * <p>値 < 注意レベル2 < 注意レベル3 < 注意レベル4 を許容</p>
     * @param value 値
     * @param element 対象エレメント
     * @param param パラメータ(配列)
     */
    KAIDEN.validator.addValidateMethod("${validTimeMax4Caution1}", function(/**String*/value, /**HtmlElement*/element, /**array*/param) {
      var level2 = KAIDEN.gadgetMan.getNeighboringAccessor(element, param[0]).getValue();
      var level3 = KAIDEN.gadgetMan.getNeighboringAccessor(element, param[1]).getValue();
      var level4 = KAIDEN.gadgetMan.getNeighboringAccessor(element, param[2]).getValue();

      if (level2) {
        if (level2 <= value) {
          var arg = [level2];
          return KAIDEN.validator.validateFunction("k_timeMax")(value, element, arg);
        }
      }

      if (level3) {
        if (level3 <= value) {
          var arg = [level3];
          return KAIDEN.validator.validateFunction("k_timeMax")(value, element, arg);
        }
      }

      if (level4) {
        if (level4 <= value) {
          var arg = [level4];
          return KAIDEN.validator.validateFunction("k_timeMax")(value, element, arg);
        }
      }
      return true;
    });
    KAIDEN.validator.setInvalidMessage("${validTimeMax4Caution1}",function(arg, element) {
      var msgParam = []
      $.each(arg, function(index, value) {
        if (msgParam [0]) {
          msgParam [0] = msgParam [0] + " " + KAIDEN.gadgetMan.getNeighboringAccessor(element, arg[index]).elem().attr("data-kaiden-surface")
        } else {
          msgParam [0] = KAIDEN.gadgetMan.getNeighboringAccessor(element, arg[index]).elem().attr("data-kaiden-surface")
        }
      });
      return KAIDEN.validator.formatMessage("${validMsg_timeMax}", element, msgParam);
    });

    /**
     * 注意レベル2最大時刻チェック.
     * <p>値 < 注意レベル3 < 注意レベル4 を許容</p>
     * @param value 値
     * @param element 対象エレメント
     * @param param パラメータ(配列)
     */
    KAIDEN.validator.addValidateMethod("${validTimeMax4Caution2}", function(/**String*/value, /**HtmlElement*/element, /**array*/param) {
      var level3 = KAIDEN.gadgetMan.getNeighboringAccessor(element, param[0]).getValue();
      var level4 = KAIDEN.gadgetMan.getNeighboringAccessor(element, param[1]).getValue();

      if (level3) {
        if (level3 <= value) {
          var arg = [level3];
          return KAIDEN.validator.validateFunction("k_timeMax")(value, element, arg);
        }
      }

      if (level4) {
        if (level4 <= value) {
          var arg = [level4];
          return KAIDEN.validator.validateFunction("k_timeMax")(value, element, arg);
        }
      }
      return true;
    });
    KAIDEN.validator.setInvalidMessage("${validTimeMax4Caution2}",function(arg, element) {
      var msgParam = []
      $.each(arg, function(index, value) {
        if (msgParam [0]) {
          msgParam [0] = msgParam [0] + " " + KAIDEN.gadgetMan.getNeighboringAccessor(element, arg[index]).elem().attr("data-kaiden-surface")
        } else {
          msgParam [0] = KAIDEN.gadgetMan.getNeighboringAccessor(element, arg[index]).elem().attr("data-kaiden-surface")
        }
      });
      return KAIDEN.validator.formatMessage("${validMsg_timeMax}", element, msgParam);
    });
  });
</script>