<%@ language="javascript"%>

<% /*
     $Revision$
     $Id$

    File:               INS/ins_edit_srtdeel.asp
    Description:        Main interface to add/edit ins_utels en cilinders

    Parameters:         srtdeel_key: objectsoort key

    Context:            submit naar ins_edit_srtdeel_save.asp!
    Note:


*/ %>
<!--#include file="../Shared/common.inc"-->
<!--#include file="../Shared/iface.inc"-->
<!--#include file="../Shared/selector.inc" -->
<!-- #include file="../ins/ins.inc" -->
<!-- #include file="../ins/ins_flexkenmerk.inc" -->
<!-- #include file="../Shared/disciplineselector.inc" -->
<!-- #include file="../Shared/srtgroepselector.inc" -->
<!-- #include file="../Shared/calendar.inc" -->
<!-- #include file="../Shared/bedrijfselector.inc" -->
<!-- #include file="../Shared/stdmeldingselector.inc" -->
<%
FCLTHeader.Requires({ plugins:["jQuery"],
                      js: []})

var urole = "bo"; // eventjes voor de flex

var authparams = user.checkAutorisation("WEB_INSMGT");
user.auth_required_or_abort(authparams.ALGwritelevel < 9 && authparams.PRSwritelevel < 9);

var ins_score_enabled = S("ins_score_enabled") == 1;
var srtdeel_key = getQParamInt("srtdeel_key", -1);

if (srtdeel_key > 0) // bestaande srtdeel
{
  var sql = "SELECT *"
        + " FROM ins_srtdeel s"
        + "    , ins_srtgroep g"
        + "    , ins_tab_discipline d"
        + "    , ins_disc_params dp"
        + " WHERE d.ins_discipline_key = g.ins_discipline_key"
        + "   AND d.ins_discipline_key = dp.ins_discipline_key"
        + "   AND s.ins_srtgroep_key = g.ins_srtgroep_key"
        + "   AND ins_srtdeel_key = " + srtdeel_key;
  var oRs = Oracle.Execute(sql);
  var srtdeel = { disc_key: oRs("ins_discipline_key").Value,
                  srtgroep_key: oRs("ins_srtgroep_key").Value,
                  srtdeel_code : oRs("ins_srtdeel_code").Value,
                  srtdeel_omschrijving: oRs("ins_srtdeel_omschrijving").Value,
                  srtdeel_volgnr: oRs("ins_srtdeel_volgnr").Value,
                  srtdeel_prijs: oRs("ins_srtdeel_prijs").Value,
                  srtdeel_eenheid: oRs("ins_srtdeel_eenheid").Value,
                  srtdeel_dimensie: oRs("ins_srtdeel_dimensie").Value,
                  srtdeel_binding: oRs("ins_srtdeel_binding").Value,
                  srtdeel_acadsymbol: oRs("ins_srtdeel_acadsymbol").Value,
                  srtdeel_acadsymbol_dwgx: oRs("ins_srtdeel_acadsymbol_dwgx").Value,
                  srtdeel_acadsymbol_dwgy: oRs("ins_srtdeel_acadsymbol_dwgy").Value,
                  srtdeel_acadlabelpos: oRs("ins_srtdeel_acadlabelpos").Value,
                  srtdeel_acadlabelsize: oRs("ins_srtdeel_acadlabelsize").Value,
                  srtdeel_uitleenbaar: oRs("ins_srtdeel_uitleenbaar").Value,
                  srtdeel_nr: oRs("ins_srtdeel_nr").Value,
                  prs_bedrijf_key: oRs("prs_bedrijf_key").Value,
                  srtdeel_vervaldatum : (oRs('ins_srtdeel_vervaldatum').Value != null)? new Date(oRs('ins_srtdeel_vervaldatum').Value) : null,
                  srtdeel_image: oRs("ins_srtdeel_image").Value,
                  srtdeel_sensortype: oRs("ins_srtdeel_sensortype").Value,
                  statethreshold: oRs("ins_srtdeel_statethreshold").Value,
                  statestepsize: oRs("ins_srtdeel_statestepsize").Value,
                  stateanchor: oRs("ins_srtdeel_stateanchor").Value,
                  mld_stdmelding_key: oRs("mld_stdmelding_key").Value,
                  srtdeel_mjb_grensscore1: oRs("ins_srtdeel_mjb_grensscore1").Value,
                  ins_disc_params_type: oRs("ins_disc_params_type").value
                }
  oRs.close();
}
else
{
    var srtdeel = { disc_key: getQParamInt("disc_key", -1),
                    srtgroep_key: getQParamInt("srtgroep_key", -1)
                  };
}
%>

<html>
  <head>
<%  FCLTHeader.Generate(); %>
    <script type='text/javascript'>
      function ins_Close(params)
      {
        if (!params.keepForm)
        {
            $("#sel_items tr.ins_room").remove(); // wissen ruimtes voor volgende ins_utel
            $("#srtcode,#srtomschr").val("");
            $("#ins_aantal").val(1);
        }
        FcltMgr.closeDetail(window, params); // verder naar de parent
      }
      async function ins_submit()
      {
        document.activeElement.blur(); // trigger laatste onChanges
        if (!await validateForm("u2"))
          return false;

        if ($(".fldcheck", "#insBindList").filter(":checked").length == 0)
        { // no fldcheck field is checked
          FcltMgr.alert(L("lcl_obj_bind_mandatory") + "\n" + [L("lcl_obj_bind_r"), L("lcl_obj_bind_w"), L("lcl_obj_bind_t"), L("lcl_obj_bind_p"), L("lcl_obj_bind_a"), L("lcl_obj_bind_i")].join(" of "));
          return false;
        }
        window.document.forms.u2.submit();
        return true;
      }
      function onChangeDiscipline()
      {
        sgSrtgroep.setValue(-1, "", true, false, null, true);
        sgSrtgroep.CheckJustOne();
      }

      function ins_cancel()
      {
        FcltMgr.closeDetail(window, { cancel: true } );
      }
    </script>
    <script>
      $(function () {
        // Elementen
        const $type = $("#srtdeel_sensortype");
        const $step = $("#statestepsize");
        const $anchor = $("#stateanchor");
        const $threshold = $("#statethreshold");
        const $msgShow = $("#stdm_show");
        const $msgHidden = $("#stdm");

        // Labels (bewaar originele teksten zodat we ze kunnen herstellen)
        const $lblStep = $('label[for="statestepsize"]');
        const $lblAnchor = $('label[for="stateanchor"]');
        const $lblThreshold = $('label[for="statethreshold"]');
        const $lblMsg = $('label[for="stdm_show"]');

        const originalLabels = {
          threshold: $lblThreshold.text().trim(),   // "Bovengrenswaarde"
          message:   $lblMsg.text().trim()          // "Melding boven grenswaarde"
        };

        // Helper: (de)activeren + rij visueel dimmen
        function setEnabled($input, enabled) {
          if (!$input.length) return;
          $input.prop('disabled', !enabled);
          // Dim ook het label/rij (optioneel, werkt met bestaande markup)
          const $row = $input.closest('tr');
          $row.css('opacity', enabled ? 1 : 0.6);
          // Voor suggest/readonly veld: zet ook readonly voor zekerheid
          if ($input.is('#stdm_show')) {
            $input.prop('readonly', !enabled);
          }
          if (!enabled) {
            $input.val('');
            // voor hidden veld ook
            if ($input.is('#stdm_show')) {
              $msgHidden.val('');
            }
          }
        }

        function setOnlyThresholdAndMessage() {
          // Alleen Bovengrenswaarde (-> Triggerwaarde) en Melding boven grenswaarde (-> Melding bij triggerwaarde)
          setEnabled($step,     false);
          setEnabled($anchor,   false);
          setEnabled($threshold,true);
          setEnabled($msgShow,  true);
          setEnabled($msgHidden,true);

          // Labelteksten aanpassen
          $lblThreshold.text(L("lcl_ins_srtdeel_statethreshold1")); //'Triggerwaarde'
          $lblMsg.text(L("lcl_ins_srtdeel_statethresholdmld1"));    //'Melding bij triggerwaarde'
        }

        function setAllDisabled() {
          // Geen sensor: 4 velden niet beschikbaar
          setEnabled($step,     false);
          setEnabled($anchor,   false);
          setEnabled($threshold,false);
          setEnabled($msgShow,  false);
          setEnabled($msgHidden,false);

          // Labels terug naar origineel
          $lblThreshold.text(originalLabels.threshold);
          $lblMsg.text(originalLabels.message);
        }

        function setAllEnabledWithOriginalLabels() {
          setEnabled($step,     true);
          setEnabled($anchor,   true);
          setEnabled($threshold,true);
          setEnabled($msgShow,  true);
          setEnabled($msgHidden,true);

          $lblThreshold.text(originalLabels.threshold);
          $lblMsg.text(originalLabels.message);
        }

        function applyByType(value) {
          switch (String(value)) {
            case '0': // Geen sensor
              setAllDisabled();
              break;
            case '1': // Status-sensor
              setOnlyThresholdAndMessage();
              break;
            case '2': // Meetwaarde-sensor
            default:
              setAllEnabledWithOriginalLabels();
              break;
          }
        }

        // Init bij laden (pakt de al geselecteerde optie op de pagina)
        applyByType($type.val());

        // Reageer op wijzigingen
        $type.on('change', function () {
          applyByType(this.value);
        });
      });
    </script>
  </head>
  <body class="editmode">
  <% SUBFRAME_START();
    var buttons = [];
    buttons.push({title: L("lcl_submit"), action:"ins_submit()", icon: "fa-fclt-save" })
    buttons.push( {title: L("lcl_cancel"), action:"ins_cancel()", icon: "fa-fclt-cancel" } );

    IFRAMER_HEADER(L("lcl_obj_sort"), buttons);
%>
      <form name="u2"
            action="ins_edit_srtdeel_save.asp?srtdeel_key=<%=srtdeel_key%>"
            method="post"
            target="hidFrameSubmit"
            onsubmit="return false">

<%    BLOCK_START("insIns", L("lcl_inssrt_general_info"), {icon: "fa-tag"});

        FCLTdisciplineselector("disc",
                               "sgDisc",
                               { label: L("lcl_discipline"),
                                 disc_key: srtdeel.disc_key,
                                 autfunctionKey: authparams.autfunctionkey,
                                 autRW: srtdeel_key > 0? "R" : "W",
                                 module: "INS",
                                 perslidKey: user_key,
                                 onChange: "onChangeDiscipline",
                                 readonly: srtdeel_key > 0
                               });

        FCLTsrtgroepselector("srtgroep",
                             "sgSrtgroep",
                             { label: L("lcl_obj_group"),
                               srtgroep_key: srtdeel.srtgroep_key,
                               autfunction: "WEB_INSMGT",
                               urlAdd: [{urlParam: "disc_key", field: "disc"}],
                               readonly: srtdeel_key > 0,
                               required: true
                             });

        RWFIELDTR("srtcode", "fldshort", L("lcl_obj_srtdeel_code"), srtdeel.srtdeel_code,
                  { required: true,
                    maxlength: 10
                  });

        RWFIELDTR("srtomschr", "fld", L("lcl_descr"), srtdeel.srtdeel_omschrijving,
                  { required: true,
                    maxlength: 100
                  });

        RWSYMBOLTR("srtdeel_image", L("lcl_ins_image"), srtdeel.srtdeel_image, { "key": srtdeel_key, "module": "INSPHS" });
        RWFIELDTR("srtdeel_volgnr", "fld", L("lcl_ins_volgnr"), srtdeel.srtdeel_volgnr );
        RWFIELDTR("srtdeel_eenheid", "fld", L("lcl_obj_unit"), srtdeel.srtdeel_eenheid );
        FCLTcalendar("vervaldatum",
                     { datum: srtdeel.srtdeel_vervaldatum,
                       initEmpty: srtdeel.srtdeel_vervaldatum==null,
                       label: L("lcl_ins_vervaldatum")
                     });
        //RWFIELDTR("srtdeel_dimensie", "fld", L("lcl_ins_dimensie"), srtdeel.srtdeel_dimensie );

        RWFIELDTR("srtdeel_nr", "fld", L("lcl_ins_srtartikelnr"), srtdeel.srtdeel_nr );
        FCLTbedrijfselector("prs_bedrijf_key", // supplier
                           "sg_lev",
                          { companyKey: srtdeel.prs_bedrijf_key,
                            label: L("lcl_ins_leverancier"),
                            filtercode: "L",
                            whenEmpty: L("lcl_search_generic")
                          });
        RWCHECKBOXTR("srtdeel_uitleenbaar", "fldcheck", L("lcl_ins_uitleenbaar"), srtdeel.srtdeel_uitleenbaar );
        if (ins_score_enabled)
          RWFIELDTR("srtdeel_grensscore1", "fldshort", L("ins_srtdeel_mjb_grensscore1"), srtdeel.srtdeel_mjb_grensscore1,
                    { datatype: "number",
                      maxlength: 10
                    });
      BLOCK_END();

      BLOCK_START("insBind", L("lcl_obj_bind"), {icon: "fa-link"});
        RWCHECKBOXTR("bindR", "fldcheck", L("lcl_obj_bind_r"), srtdeel.srtdeel_binding & BIND_RUIMTE );
        RWCHECKBOXTR("bindW", "fldcheck", L("lcl_obj_bind_w"), srtdeel.srtdeel_binding & BIND_WERKPL  );
        RWCHECKBOXTR("bindT", "fldcheck", L("lcl_obj_bind_t"), srtdeel.srtdeel_binding & BIND_TERREI  );
        RWCHECKBOXTR("bindA", "fldcheck", L("lcl_obj_bind_a"), srtdeel.srtdeel_binding & BIND_AFDELI  );
        RWCHECKBOXTR("bindP", "fldcheck", L("lcl_obj_bind_p"), srtdeel.srtdeel_binding & BIND_PERSOO  );
        RWCHECKBOXTR("bindI", "fldcheck", L("lcl_obj_bind_i"), srtdeel.srtdeel_binding & BIND_INSDEE  );
      BLOCK_END();

      BLOCK_START("insSensorinfo", L("lcl_ins_sensorinfo"), {icon: "fa-sensor"});
        var sql = "SELECT         0, " + safe.quoted_sql(L("lcl_ins_sensortype0")) + " FROM DUAL"
                + " UNION SELECT  1, " + safe.quoted_sql(L("lcl_ins_sensortype1")) + " FROM DUAL"
                + " UNION SELECT  2, " + safe.quoted_sql(L("lcl_ins_sensortype2")) + " FROM DUAL"
                + " ORDER BY 1";
        FCLTselector('srtdeel_sensortype', sql,
                          { label:  L("lcl_ins_sensortype"),
                            initKey: srtdeel.srtdeel_sensortype
                          }
                       );

        RWFIELDTR("statestepsize", "fldshort", L("lcl_ins_srtdeel_statestepsize"), srtdeel.statestepsize, {suppressEmpty: true} );
        RWFIELDTR("stateanchor", "fldshort", L("lcl_ins_srtdeel_stateanchor"), srtdeel.stateanchor, {suppressEmpty: true} );
        RWFIELDTR("statethreshold", "fld", L("lcl_ins_srtdeel_statethreshold"), srtdeel.statethreshold);
        // Standaardmelding
        FCLTstdmeldingselector("stdm",
                               "sgStdm",
                               { label: L("lcl_ins_srtdeel_statethresholdmld"),
                                 stdmelding_key: srtdeel.mld_stdmelding_key,
                                 autfunctionKey: -1, // alles is toegestaan! authparams.autfunctionkey,
                                 filtercode: "WINS",  // kan scherper, maar met objecten is al wat
                                 required: false
                               });

      BLOCK_END();

      BLOCK_START("insGraph", L("lcl_graphics"), {icon: "fa-map"});
        RWSYMBOLTR("srtdeel_acadsymbol", L("lcl_obj_symbol"), srtdeel.srtdeel_acadsymbol, { "key": srtdeel_key, "module": "FGIIS" });
        RWFIELDTR("srtdeel_acadsymbol_dwgx", "fldshort", L("lcl_obj_symbol_dwgx"), srtdeel.srtdeel_acadsymbol_dwgx );
        RWFIELDTR("srtdeel_acadsymbol_dwgy", "fldshort", L("lcl_obj_symbol_dwgy"), srtdeel.srtdeel_acadsymbol_dwgy );
        if (srtdeel.ins_disc_params_type&16)   // alleen als de discipline labels aan heeft staan
        {
          RWFIELDTR("srtdeel_acadlabelsize", "fldshort", L("lcl_srtdeel_acadlabelsize"), srtdeel.srtdeel_acadlabelsize, {maxlength: 5} );

          var sql = "SELECT         1, " + safe.quoted_sql(L("lcl_acadlabelpos1")) + " FROM DUAL"
                  + " UNION SELECT  2, " + safe.quoted_sql(L("lcl_acadlabelpos2")) + " FROM DUAL"
                  + " UNION SELECT  3, " + safe.quoted_sql(L("lcl_acadlabelpos3")) + " FROM DUAL"
                  + " UNION SELECT  4, " + safe.quoted_sql(L("lcl_acadlabelpos4")) + " FROM DUAL"
                  + " UNION SELECT  5, " + safe.quoted_sql(L("lcl_acadlabelpos5")) + " FROM DUAL"
                  + " ORDER BY 1";
        FCLTselector('srtdeel_acadlabelpos', sql,
                          { label:  L("lcl_srtdeel_acadlabelpos"),
                            initKey: srtdeel.srtdeel_acadlabelpos
                          }
                       );
        }

      BLOCK_END();

        if (srtdeel.srtgroep_key > 0) // Kan nog niet bestaan bij nieuwe omdat je ze (nog) niet
        {                             // op groepsniveau kunt definieren.
              generateFlexKenmerkBlock({ urole: urole,
                                        srtgroep_key_arr: [srtdeel.srtgroep_key],
                                        bewerkniveau: "S",
                                        srtdeelkey_array: srtdeel_key > 0? [srtdeel_key] : [],
                                        reado: false
                                      });

        }IFACE.FORM_END();
%>
      </form>
    <% SUBFRAME_END(); %>
          <iframe src="../Shared/empty.html"
              FcltClose="ins_Close"
              name="hidFrameSubmit"
              style="display:none"></iframe>
  </body>
</html><% ASPPAGE_END(); %>
