<% /*
     $Revision$
     $Id$

     File:               ALG/alg_flexkenmerk.inc
     Description:        Functie die html code genereert voor de presentatie van de flexvelden
     Parameters:         urole                Rol van de gebruiker (frontend, frontoffice, backoffice, management info)
                         onrgoed_niveau       Onroerendgoed niveua
                         reado                Readonly
                         this_alg             { readman, readuse     Voor tonen
                                                writeman, writeuse }  (voor als niet reado)
                         advanced             Geadvanceerd
     Context:            Functie wordt aangeroepen door
                         1) load_kenmerk.asp
                         2) alg_edit_xxx.asp die initieel serverside deze html code invoegt.
     Note:
*/ %>
<!-- #include file="../Shared/kenmerk_common.inc" -->
<%
function generateFlexKenmerkBlock(params)
{
    var onrgoed_key = params.onrgoed_key; // Onroerendgoed key
    var onrgoed_niveau = params.onrgoed_niveau; // Onroerendgoed niveau
    var reado = params.reado; // Readonly
    var advanced = params.advanced; // Geavanceerd
    var hasfilter = params.hasfilter? params.hasfilter : null;

    function isReadonly (oRs)
    {
        if (reado)
            return true;
        var rolcode = oRs("kenmerk_rolcode").value;
        var canWrite = (params.this_alg.writeman && (rolcode&1)) || (params.this_alg.writeuse && (rolcode&2));

        return !canWrite;  // readonly
    }

    function isInvisible(oRs)
    {
        var ktype = oRs("kenmerk_kenmerktype").value;
        if (params.multi)
            return (ktype == 'M' || ktype == 'F' || ktype == 'E'); // onzichtbaar bij multi
    }

    // Wat mag ik op  basis van mijn autorisatie (potentieel) zien, bepaal mijn rolcode-masker
    var myreadrolcode = 0 + (params.this_alg.readman ? 1 : 0)
                          + (params.this_alg.readuse ? 2 : 0);

    var sql = "SELECT  k.alg_kenmerk_key              kenmerk_key"
            + "     , 1                              kenmerk_key_count"
            + "     , NULL                           srtkenmerk_key"
            + "     , " + lcl.xsql("k.alg_kenmerk_omschrijving", "k.alg_kenmerk_key") + " kenmerk_omschrijving"
            + "     , k.alg_kenmerk_kenmerktype      kenmerk_kenmerktype"
            + "     , k.fac_kenmerkdomein_key        kenmerkdomein_key"
            + "     , k.alg_kenmerk_lengte           kenmerk_lengte"
            + "     , k.alg_kenmerk_dec              kenmerk_dec"
            + "     , k.alg_kenmerk_nmin             kenmerk_nmin"
            + "     , k.alg_kenmerk_nmax             kenmerk_nmax"
            + "     , k.alg_kenmerk_systeem          kenmerk_systeem"
            + (onrgoed_key > 0
              ? "   , (SELECT MAX(CASE WHEN k.alg_kenmerk_kenmerktype = 'M'"
                + "                    THEN NULL"
                + "                    ELSE v.alg_onrgoedkenmerk_waarde"
                + "                    END)"
                + "      FROM alg_onrgoedkenmerk v "
                + "     WHERE v.alg_onrgoed_key = " + onrgoed_key
                + "       AND v.alg_onrgoed_niveau = " + safe.quoted_sql(onrgoed_niveau)
                + "       AND v.alg_kenmerk_key = k.alg_kenmerk_key"
                + "       AND v.alg_onrgoedkenmerk_verwijder IS NULL)"
              : "   , " + lcl.xsql("k.alg_kenmerk_default", "k.alg_kenmerk_key")
              ) + "                                  kenmerk_waarde"
            + "     , k.alg_kenmerk_volgnr           kenmerk_volgnr"
            + "     , k.alg_kenmerk_rolcode          kenmerk_rolcode"
            + "     , " + lcl.xsql("k.alg_kenmerk_dimensie", "k.alg_kenmerk_key") +" kenmerk_dimensie"
            + "     , " + lcl.xsql("k.alg_kenmerk_hint", "k.alg_kenmerk_key") +" kenmerk_hint"
            + "     , " + lcl.xsql("k.alg_kenmerk_default", "k.alg_kenmerk_key") + " kenmerk_default"
            + "     , k.alg_kenmerk_show_expr        kenmerk_show_expr"
            + "     , k.alg_kenmerk_verplicht        kenmerk_verplicht"
            + "     , k.alg_kenmerk_groep            kenmerk_groep"
            + "     , NULL otherpath"
            + "     , k.alg_kenmerk_toonbaar         kenmerk_toonbaar"
            + "     , k.alg_kenmerk_uniek            kenmerk_uniek"
            + "     , k.alg_kenmerk_regexp           kenmerk_regexp"
            + "     , k.fac_functie_key"
            + "    FROM alg_kenmerk k "
            + "   WHERE k.alg_kenmerk_niveau = " + safe.quoted_sql(onrgoed_niveau)
            + "     AND k.alg_kenmerk_verwijder IS NULL "
            + "     AND BITAND(alg_kenmerk_rolcode, " + myreadrolcode + ") > 0 "
            + " ORDER BY k.alg_kenmerk_volgnr"
            + "        , " + lcl.xsql("k.alg_kenmerk_omschrijving", "k.alg_kenmerk_key");

    var trn = 0;  // fijn, maar waarom?

    listKenmerk(sql,
                "ALG", //module
                onrgoed_key,
                {
                  kenmerk_search: advanced,
                  fnIsReadonly: isReadonly,
                  hideVervallen: onrgoed_key<0,
                  reado: reado,
                  fnIsInvisible: isInvisible,
                  multiMode: params.multi,
                  mobile: params.mobile,
                  parentKey: onrgoed_key,
                  kenmerk_module: onrgoed_niveau,
                  hasfilter: hasfilter,
                  relativeValuesAllowed: params.multi
                }
               );
}
%>
