Skip Navigation LinksALVAO 8.0ALVAO Asset ManagementImplementace systému v organizaciVlastní programová rozšířeníVlastní skript
Skip Navigation Links.
Skip Navigation Links
Skip Navigation Links.
%USERPROFILE%\Documents\ALVAO\Doc\Documentation\doc\cs\alvao_8_0\alvao_asset_management\implementation\customization\scripting.aspx
|
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 konzole se skript sám aktivuje.
Ve skriptu mohou být definovány obslužné funkce, které se
automaticky volají z Konzole 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
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 podobjekt 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 (nadobjektem) 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 a také před nevratným odstraněním objektu z
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. V případě
definitivního odstranění objektu má hodnotu
false.
- 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 a také po definitivním odstranění objektu z 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. V případě
definitivního odstranění objektu má hodnotu
false.
- 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 OnNodeModificationEnabled(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 Konzole.
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 Konzole. 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.
|