Ako nastaviť dynamický editor


Dynamický editor je možné nastaviť pomocou JSON stringu v potrebnom formáte. Očakávajú sa nasledovné parametre:

  • @E1DynamicEditor – parameter, kde bude JSON s definíciou dynamického editora. Hodnota tam môže byť vpísaná priamo, získaná cez getter, alebo zo stĺpca podriadeného dátového zdroja
  • @E1DynamicEditorData – do tohto parametra budú vrátené hodnoty z editora tiež vo forme JSON string-u
Ukážka JSON stringu s definíciou dynamického editora
[
    {
        "ParName": "@Email",
        "ValName": "__currusername",
        "Val": "pavol.farkas@erpio.sk",
        "Cond": null,
        "DstCol": null,
        "ParEdit": false,
        "EditType": 0,
        "DataType": null,
        "ParCaption": "@Email",
        "IDSrcObject": null,
        "SpecParams": null,
        "ExtConfig": [
            {
                "SysName": "IsHidden",
                "Val": true
            }
        ]
    },
    {
        "ParName": "@Login",
        "ValName": "__dummy",
        "Val": null,
        "Cond": null,
        "DstCol": null,
        "ParEdit": false,
        "EditType": 0,
        "DataType": null,
        "ParCaption": "@Login",
        "IDSrcObject": 35296,
        "SpecParams": null,
        "ExtConfig": [
            {
                "SysName": "IsHidden",
                "Val": true
            }
        ]
    },
    {
        "ParName": "@CisloZam",
        "ValName": "__dummy",
        "Val": null,
        "Cond": null,
        "DstCol": null,
        "ParEdit": false,
        "EditType": 0,
        "DataType": null,
        "ParCaption": "@CisloZam",
        "IDSrcObject": 35296,
        "SpecParams": null,
        "ExtConfig": [
            {
                "SysName": "IsHidden",
                "Val": true
            }
        ]
    },
    {
        "ParName": "@Databaza",
        "ValName": "__srcmodify",
        "Val": null,
        "Cond": null,
        "DstCol": null,
        "ParEdit": false,
        "EditType": 0,
        "DataType": null,
        "ParCaption": "@Databaza",
        "IDSrcObject": 35296,
        "SpecParams": null,
        "ExtConfig": [
            {
                "SysName": "IsHidden",
                "Val": true
            }
        ]
    },
    {
        "ParName": "@Zakazka",
        "ValName": "__dummy",
        "Val": null,
        "Cond": null,
        "DstCol": null,
        "ParEdit": true,
        "EditType": 30,
        "DataType": null,
        "ParCaption": "Zákazka",
        "IDSrcObject": null,
        "SpecParams": {
            "IDAction": 98593,
            "MapParCol": [
                {
                    "SrcName": "CisloZakazky",
                    "DstName": "@Zakazka",
                    "Hidden": false
                },
                {
                    "SrcName": "Databaza",
                    "DstName": "@ZakazkaDatabaza",
                    "Hidden": true
                },
                {
                    "SrcName": "PopisZakazky",
                    "DstName": "@ZakazkaNazev",
                    "Hidden": false
                }
            ]
        },
        "ExtConfig": [
            {
                "SysName": "Required",
                "Val": true
            },
            {
                "SysName": "Cols",
                "Val": 5
            },
            {
                "SysName": "EvOnChanged",
                "Val": ""
            }
        ]
    },
    {
        "ParName": "@ZakazkaDatabaza",
        "ValName": "__dummy",
        "Val": null,
        "Cond": null,
        "DstCol": null,
        "ParEdit": false,
        "EditType": 0,
        "DataType": null,
        "ParCaption": "@ZakazkaDatabaza",
        "IDSrcObject": null,
        "SpecParams": null,
        "ExtConfig": [
            {
                "SysName": "IsHidden",
                "Val": true
            }
        ]
    },
    {
        "ParName": "@ZakazkaNazev",
        "ValName": "__dummy",
        "Val": null,
        "Cond": null,
        "DstCol": null,
        "ParEdit": false,
        "EditType": 0,
        "DataType": null,
        "ParCaption": "@ZakazkaNazev",
        "IDSrcObject": null,
        "SpecParams": null,
        "ExtConfig": [
            {
                "SysName": "IsHidden",
                "Val": true
            }
        ]
    },
    {
        "ParName": "@Kategoria",
        "ValName": "__dummy",
        "Val": null,
        "Cond": null,
        "DstCol": null,
        "ParEdit": true,
        "EditType": 30,
        "DataType": null,
        "ParCaption": "Činnosť",
        "IDSrcObject": 35296,
        "SpecParams": {
            "IDAction": 98594,
            "MapParCol": [
                {
                    "SrcName": "Cislo",
                    "DstName": "@Kategoria",
                    "Hidden": false
                },
                {
                    "SrcName": "Poznamka",
                    "DstName": "@KategoriaPopis",
                    "Hidden": false
                }
            ]
        },
        "ExtConfig": [
            {
                "SysName": "Required",
                "Val": true
            },
            {
                "SysName": "Cols",
                "Val": 5
            },
            {
                "SysName": "IsHidden",
                "Val": false
            },
            {
                "SysName": "MaxLength",
                "Val": 0
            },
            {
                "SysName": "MinLength",
                "Val": 0
            }
        ]
    },
    {
        "ParName": "@KategoriaPopis",
        "ValName": "__dummy",
        "Val": null,
        "Cond": null,
        "DstCol": null,
        "ParEdit": false,
        "EditType": 0,
        "DataType": null,
        "ParCaption": "@KategoriaPopis",
        "IDSrcObject": null,
        "SpecParams": null,
        "ExtConfig": [
            {
                "SysName": "IsHidden",
                "Val": true
            }
        ]
    },
    {
        "ParName": "@NaviacPrace",
        "ValName": "__dummy",
        "Val": null,
        "Cond": null,
        "DstCol": null,
        "ParEdit": true,
        "EditType": 2,
        "DataType": null,
        "ParCaption": "Naviac práce",
        "IDSrcObject": null,
        "SpecParams": null,
        "ExtConfig": [
            {
                "SysName": "Cols",
                "Val": 2
            }
        ]
    },
    {
        "ParName": "@Trvanie",
        "ValName": "__dummy",
        "Val": null,
        "Cond": null,
        "DstCol": null,
        "ParEdit": true,
        "EditType": 6,
        "DataType": null,
        "ParCaption": "Trvanie (h)",
        "IDSrcObject": null,
        "SpecParams": null,
        "ExtConfig": [
            {
                "SysName": "Cols",
                "Val": 2
            },
            {
                "SysName": "EvOnChanged",
                "Val": ""
            }
        ]
    },
    {
        "ParName": "@DatumOd",
        "ValName": "__dummy",
        "Val": null,
        "Cond": null,
        "DstCol": null,
        "ParEdit": true,
        "EditType": 3,
        "DataType": null,
        "ParCaption": "Od",
        "IDSrcObject": 35296,
        "SpecParams": null,
        "ExtConfig": [
            {
                "SysName": "Cols",
                "Val": 5
            }
        ]
    },
    {
        "ParName": "@DatumDo",
        "ValName": "__dummy",
        "Val": null,
        "Cond": null,
        "DstCol": null,
        "ParEdit": true,
        "EditType": 3,
        "DataType": null,
        "ParCaption": "Do",
        "IDSrcObject": 35296,
        "SpecParams": null,
        "ExtConfig": [
            {
                "SysName": "Cols",
                "Val": 5
            }
        ]
    },
    {
        "ParName": "@Poznamka",
        "ValName": "__dummy",
        "Val": null,
        "Cond": null,
        "DstCol": null,
        "ParEdit": true,
        "EditType": 1,
        "DataType": null,
        "ParCaption": "Popis práce",
        "IDSrcObject": null,
        "SpecParams": null,
        "ExtConfig": [
            {
                "SysName": "Required",
                "Val": true
            },
            {
                "SysName": "ShowRows",
                "Val": 3
            }
        ]
    },
    {
        "ParName": "@StartTime",
        "ValName": "DatumProvedeniOd",
        "Val": null,
        "Cond": null,
        "DstCol": null,
        "ParEdit": false,
        "EditType": 100,
        "DataType": 9,
        "ParCaption": "Od",
        "IDSrcObject": null,
        "SpecParams": null,
        "ExtConfig": []
    },
    {
        "ParName": "@EndTime",
        "ValName": "DatumProvedeniDo",
        "Val": null,
        "Cond": null,
        "DstCol": null,
        "ParEdit": false,
        "EditType": 100,
        "DataType": 9,
        "ParCaption": "Do",
        "IDSrcObject": null,
        "SpecParams": null,
        "ExtConfig": []
    }
]

Úvodné hodnoty už musia byť súčasťou JSON stringu, nerobí sa žiadne ďalšie dopĺňanie hodnôt.

EditType
cAuto = 0,
cTextBox = 1,
cCheckBox = 2,
cDateTime = 3,
cDate = 4,
cInteger = 5,
cDecimal = 6,
cSET = 30,
cCamera = 32,
cGallery = 33,
cFile = 34,
cGPS = 35,
cBarCode = 36,
cSignature = 37,
cInvis = 99,
cHideAll = 100

DataType
String = 0,
Boolean = 1,
Byte = 2,
Int16 = 3,
Int32 = 4,
Int64 = 5,
Decimal = 6,
Float = 7,
Double = 8,
DateTime = 9,
ByteArray = 10,
Int = 11

Príklad vrátenej hodnoty do parametru @E1DynamicEditorData

[{"Key":"@Email","Value":"pavol.farkas@erpio.sk"},{"Key":"@Login","Value":""},{"Key":"@CisloZam","Value":""},{"Key":"@Databaza","Value":""},{"Key":"@Zakazka","Value":"ERP ABC"},{"Key":"@ZakazkaDatabaza","Value":"Helios003"},{"Key":"@ZakazkaNazev","Value":"ERP pre ABC Klímy (ERP ABC) "},{"Key":"@Kategoria","Value":"INE"},{"Key":"@KategoriaPopis","Value":"Iné"},{"Key":"@NaviacPrace","Value":"False"},{"Key":"@Trvanie","Value":"2"},{"Key":"@DatumOd","Value":"1. 2. 2025 15:00:00"},{"Key":"@DatumDo","Value":""},{"Key":"@Poznamka","Value":"abdafdfadffefefae"},{"Key":"@StartTime","Value":""},{"Key":"@EndTime","Value":""}]

Príklad parsovania hodnoty:

DECLARE @json NVARCHAR(MAX) = N'[{"Key":"@Email","Value":"pavol.farkas@erpio.sk"},{"Key":"@Login","Value":""},{"Key":"@CisloZam","Value":""},{"Key":"@Databaza","Value":""},{"Key":"@Zakazka","Value":"ERP ABC"},{"Key":"@ZakazkaDatabaza","Value":"Helios003"},{"Key":"@ZakazkaNazev","Value":"ERP pre ABC Klímy (ERP ABC) "},{"Key":"@Kategoria","Value":"INE"},{"Key":"@KategoriaPopis","Value":"Iné"},{"Key":"@NaviacPrace","Value":"False"},{"Key":"@Trvanie","Value":"2"},{"Key":"@DatumOd","Value":"1. 2. 2025 15:00:00"},{"Key":"@DatumDo","Value":""},{"Key":"@Poznamka","Value":"abdafdfadffefefae"},{"Key":"@StartTime","Value":""},{"Key":"@EndTime","Value":""}]';

SELECT
    KeyName,
    KeyValue
FROM OPENJSON(@json)
WITH (
    KeyName NVARCHAR(100) '$.Key',
    KeyValue NVARCHAR(MAX) '$.Value'
);

-- More robust approach with explicit casting and error handling:

BEGIN TRY
    SELECT
        KeyName,
        KeyValue,
        CASE 
            WHEN KeyName = '@Trvanie' THEN CAST(KeyValue AS INT)  -- Example: Casting to INT
            WHEN KeyName = '@NaviacPrace' THEN CAST(KeyValue AS BIT) -- Example: Casting to BIT
            WHEN KeyName LIKE '@Datum%' THEN TRY_CONVERT(DATETIME2, KeyValue, 104) -- Date format 104 = dd.mm.yyyy
            ELSE KeyValue  -- Keep as string for other values
        END AS TypedValue
    FROM OPENJSON(@json)
    WITH (
        KeyName NVARCHAR(100) '$.Key',
        KeyValue NVARCHAR(MAX) '$.Value'
    );
END TRY
BEGIN CATCH
    -- Handle JSON parsing errors (e.g., log, return an error result)
    SELECT ERROR_MESSAGE() AS ErrorMessage;
    -- Or raise an error:
    --THROW 50000, 'Error parsing JSON.', 1;
END CATCH;