Skip Navigation LinksALVAO 10.4ALVAO Asset ManagementImplementace systému v organizaciVlastní úpravy a rozšířeníVlastní skript Skip Navigation Links.


Vlastní skript

Ve složce Config může být uložen soubor EpCustomScript.js s uživatelským skriptem v jazyce JavaScript. Složku Config naleznete ve složce, kde je nainstalována ALVAO Asset Management Console (standardně C:\Program Files\ALVAO\Asset Management Console\Config), pokud tam není, vytvořte ji a vložte do ní skript. Po restartu AM Console se skript sám aktivuje.

Ve skriptu mohou být definovány obslužné funkce, které se automaticky volají z AM Console při provádění různých operací.

Příklad 1. Příklad souboru EpCustomScript.js

function OnNodeMoving(nNodeId,nDestNodeId,nUserId)
{
    return true;
}

function OnNodeRemoving(nNodeId,nUserId)
{
    MessageBox("Objekt nelze odstranit",0x30);
    return false;
}

Skript v příkladu obsahuje funkce OnNodeMoving a OnNodeRemoving. Funkce OnNodeMoving slouží k povolení přesunu objektu ve stromu. Funkce se volá před provedením přesunu a návratová hodnota true znamená, že je přesun povolen. Funkce OnNodeRemoving se volá před odstraněním objektu ze stromu a její návratová hodnota povoluje odstranění. V uvedeném příkladu je tedy přesun objektu vždy povolen a odstranění je vždy zakázáno. Při pokusu o odstranění objektu se navíc zobrazí okno s hlášením "Objekt nelze odstranit".

Obslužné funkce

Funkce Událost
OnNodeCopying Bude vytvořena kopie objektu. Tato funkce se volá také v případě vytvoření nového objektu podle šablony.
OnNodeCopied Objekt byl zkopírován nebo byl vytvořen nový objekt podle šablony.
OnNodeMoving Objekt bude přesunut ve stromu.
OnNodeMoved Objekt byl přesunut.
OnNodeRemoving Objekt bude přesunut do Koše.
OnNodeRemoved Objekt byl přesunut do Koše.
OnPropertyModificationEnabled Povolit/zakázat příkaz - Upravit (vlastnost).
OnPropertyModifying Hodnota vlastnosti bude změněna.
OnPropertyModified Hodnota vlastnosti byla změněna.

OnNodeCopying

Tato funkce se volá před zkopírováním objektu ve stromu, tj. také v případě vytvoření nového objektu podle šablony.

  • Syntaxe - bool OnNodeCopying(nNodeId, nDestNodeId, nUserId)
  • Parametry
    • nNodeId - hodnota atributu (v databázi) tblNode.intNodeId objektu, který je kopírován, tj. vzorový objekt.
    • nDestNodeId - hodnota atributu tblNode.intNodeId objektu, do kterého bude jako podřazený objekt vložena kopie. Hodnota 0 znamená , že kopie bude vytvořena v kořeni stromu.
    • nUserId - hodnota atributu tblUser.intUserId určující právě přihlášeného uživatele.
  • Návratová hodnota - pokud funkce vrátí hodnotu true, objekt bude zkopírován. Pokud funkce vrátí false, kopírování se neprovede. V tom případě je vhodné zobrazit chybové hlášení metodou MessageBox.
  • Příklady

    Příklad 2. Příklad - zákaz kopírovat objekty pro vybraného uživatele

    Následující příklad funkce OnNodeCopying zakazuje uživateli s identifikačním číslem 15 kopírování objektů. Identifikační číslo uživatele záleží na konkrétní databázi a je třeba jej nejprve najít v tabulce tblUser - atribut intUserId.

    function OnNodeCopying(nNodeId,nDestNodeId,nUserId)
    {
        if ( nUserId == 15 )
        {
            MessageBox("Objekt je zakázáno kopírovat.",0x30);
            return false;
        }
        return true;
    }

    Příklad 3. Příklad - volání uložené procedury na SQL serveru

    V následujícím příkladu je pro vyhodnocení události použita uložená procedura (stored procedure) spOnNodeCopying na SQL serveru. Kopírování objektu je povoleno, pokud uložená procedura vrací nenulovou hodnotu.

    function OnNodeCopying(nNodeId,nDestNodeId,nUserId)
    {
        var Con=new ActiveXObject("ADODB.Connection");
        Con.Open(ConnectionString);
        var Cmd=new ActiveXObject("ADODB.Command");
        Cmd.ActiveConnection=Con;
        Cmd.CommandText="spOnNodeCopying";
        Cmd.CommandType=4;
        Cmd.Parameters.Refresh();
        Cmd.Parameters.Item("@nNodeId").Value=nNodeId;
        Cmd.Parameters.Item("@nDestNodeId").Value=nDestNodeId;
        Cmd.Parameters.Item("@nUserId").Value=nUserId;
        var Rs=Cmd.Execute();
        if ( Rs.Fields.Item(0)==1 )
            return true;
        MessageBox("Objekt nelze zkopírovat.",0x30);
        return false;
    }

    Uložená procedura je definována takto:

    CREATE PROCEDURE [dbo].[OnNodeCopying]
        @nNodeId int, @nDestNodeId int, @nUserId int
    AS
    BEGIN
        SET NOCOUNT ON;
        SELECT 1
    END

OnNodeCopied

Tato funkce se volá po zkopírování objektu resp. po vytvoření nového objektu podle šablony.

  • Syntaxe - void OnNodeCopied(nNodeId, nNewNodeId, nUserId)
  • Parametry
    • nNodeId - hodnota atributu (v databázi) tblNode.intNodeId objektu, který byl kopírován, tj. vzorový objekt.
    • nNewNodeId - hodnota atributu tblNode.intNodeId nového objektu, který vznikl zkopírováním.
    • nUserId - hodnota atributu tblUser.intUserId určující právě přihlášeného uživatele.
  • Návratová hodnota - žádná
  • Příklady - viz OnNodeCopying

OnNodeMoving

Tato funkce se volá před přesunutím objektu ve stromu na jiné místo.

  • Syntaxe - bool OnNodeMoving(nNodeId, nDestNodeId, nUserId)
  • Parametry
    • nNodeId - hodnota atributu (v databázi) tblNode.intNodeId objektu, který má být přesunut.
    • nDestNodeId - hodnota atributu tblNode.intNodeId objektu, do kterého bude objekt přesunut. Hodnota 0 znamená , že objekt bude přesunut do kořene stromu.
    • nUserId - hodnota atributu tblUser.intUserId určující právě přihlášeného uživatele.
  • Návratová hodnota - pokud funkce vrátí hodnotu true, objekt bude přesunut. Pokud funkce vrátí false, přesun se neprovede. V tom případě je vhodné zobrazit chybové hlášení metodou MessageBox.
  • Příklady - viz OnNodeCopying

OnNodeMoved

Tato funkce se volá po přesunutí objektu ve stromu.

  • Syntaxe - void OnNodeMoved(nNodeId, nSrcParentNodeId, nUserId)
  • Parametry
    • nNodeId - hodnota atributu (v databázi) tblNode.intNodeId objektu, který byl přesunut.
    • nSrcParentNodeId - hodnota atributu tblNode.intNodeId objektu, který byl otcem (nadřazeným objektem) objektu nNodeId před jeho přesunutím.
    • nUserId - hodnota atributu tblUser.intUserId určující právě přihlášeného uživatele.
  • Návratová hodnota - žádná
  • Příklady - viz OnNodeCopying

OnNodeRemoving

Tato funkce se volá před odstraněním objektu tj. přesunutím objektu do Koše.

  • Syntaxe - bool OnNodeRemoving(nNodeId, bMoveToBin, nUserId)
  • Parametry
    • nNodeId - hodnota atributu (v databázi) tblNode.intNodeId objektu, který má být odstraněn resp. přesunut do Koše.
    • bMoveToBin - jedná-li se o přesun objektu do Koše, tento parametr má hodnotu true.
    • nUserId - hodnota atributu tblUser.intUserId určující právě přihlášeného uživatele.
  • Návratová hodnota - pokud funkce vrátí hodnotu true, objekt bude odstraněn resp. přesunut do Koše. Pokud funkce vrátí false, operace se neprovede. V tom případě je vhodné zobrazit chybové hlášení metodou MessageBox.
  • Příklady - viz OnNodeCopying

OnNodeRemoved

Tato funkce se volá po odstranění objektu tj. po jeho přesunutí do Koše.

  • Syntaxe - void OnNodeRemoved(nNodeId, bMoveToBin, nUserId)
  • Parametry
    • nNodeId - hodnota atributu (v databázi) tblNode.intNodeId objektu, který byl odstraněn resp. přesunut do Koše.
    • bMoveToBin - jedná-li se o přesun objektu do Koše, tento parametr má hodnotu true.
    • nUserId - hodnota atributu tblUser.intUserId určující právě přihlášeného uživatele.
  • Návratová hodnota - žádná
  • Příklady - viz OnNodeCopying

OnPropertyModificationEnabled

Zapíná resp. vypíná příkaz - Upravit pro úpravu vlastnosti.

  • Syntaxe - bool OnPropertyModificationEnabled(nPropertyId)
  • Parametry
    • nPropertyId - Hodnota atributu (v databázi) tblProperty.intPropertyId vlastnosti, která má být upravena.
  • Návratová hodnota - pokud funkce vrátí hodnotu true, příkaz - Upravit v menu bude aktivní. Jinak bude neaktivní (šedý).
  • Příklady - viz OnNodeCopying

OnPropertyModifying

Tato funkce se volá v rámci příkazu - Upravit před uložením upravené vlastnosti do databáze.

  • Syntaxe - bool OnPropertyModifying(nPropertyId, strNewValue)
  • Parametry
    • nPropertyId - hodnota atributu (v databázi) tblProperty.intPropertyId vlastnosti, která je měněna.
    • strNewValue - nová hodnota vlastnosti.
  • Návratová hodnota - pokud funkce vrátí hodnotu true, nová hodnota se zapíše do databáze. Pokud funkce vrátí false, operace se neprovede. V tom případě je vhodné zobrazit chybové hlášení metodou MessageBox.
  • Příklady - viz OnNodeCopying

OnPropertyModified

Tato funkce se volá po zápisu nové hodnoty vlastnosti do databáze v rámci příkazu - Upravit.

  • Syntaxe - void OnPropertyModified(nPropertyId)
  • Parametry
    • nPropertyId - hodnota atributu (v databázi) tblProperty.intPropertyId vlastnosti, která byla změněna.
  • Návratová hodnota - žádná
  • Příklady - viz OnNodeCopying

MessageBox

Funkce zobrazí okno s textovou zprávou.

  • Syntaxe - int MessageBox(Text,Type)
  • Parametry
    • Text - text zprávy.
    • Type - parametr může obsahovat kombinaci následujících bitových hodnot.
      • Tlačítka
        Hodnota Symbol Popis
        0 MB_OK OK
        1 MB_OKCANCEL OK, Storno
        2 MB_ABORTRETRYIGNORE Zrušit, Znovu, Ignorovat
        3 MB_YESNOCANCEL Ano, Ne, Storno
        4 MB_YESNO Ano, Ne
        5 MB_RETRYCANCEL Znovu, Storno
      • Ikony
        Hodnota Symbol Popis
        0x10 MB_ICONERROR chyba (červená)
        0x20 MB_ICONQUESTION otazník
        0x30 MB_ICONEXCLAMATION vykřičník (žlutá)
        0x40 MB_ICONINFORMATION informace
      • Výchozí tlačítko - hodnota z následující tabulky určuje, které tlačítko v pořadí zleva bude nastaveno jako výchozí.
        Hodnota Symbol
        0 MB_DEFBUTTON1
        0x100 MB_DEFBUTTON2
        0x200 MB_DEFBUTTON3
        0x300 MB_DEFBUTTON4
  • Návratová hodnota
    Hodnota Symbol Popis
    1 IDOK OK
    2 IDCANCEL Storno
    3 IDABORT Zrušit
    4 IDRETRY Znovu
    5 IDIGNORE Ignorovat
    6 IDYES Ano
    7 IDNO Ne
  • Příklady

    Příklad 4. Použití funkce MessageBox

    Následující příklad zobrazí okno s dotazem "Chcete pokračovat?" a tlačítky Ano a Ne, přičemž tlačítko Ne bude aktivní.

    if ( MessageBox("Chcete pokračovat?",4+0x20+0x100) == 6 )
        // pokračovat ...   

ConnectionString

Proměnná ConnectionString obsahuje připojovací řetězec pro právě otevřenou databázi. Proměnná je určena pouze ke čtení.

Poznámka:
Připojovací řetězec odpovídá pravidlům technologie ADO.

Příklad 5. Použití proměnné ConnectionString

V následující ukázce je do proměnné Con vytvořeno připojení na databázi, která je právě otevřena v AM Console.

var Con=new ActiveXObject("ADODB.Connection");
Con.Open(ConnectionString); 

UserId

Proměnná UserId obsahuje identifikátor uživatele, který je právě přihlášen do AM Console. Proměnná je určena pouze ke čtení.

Identifikátor odpovídá hodnotě atributu intUserId v tabulce tblUser v databázi.

 

Nenašli jste co jste hledali? Zeptejte se našeho týmu technické podpory.