Skip Navigation LinksALVAO 10.1ALVAO Asset ManagementImplementace systému v organizaciVlastní úpravy a rozšířeníVlastní skript
Skip Navigation Links.
Skip Navigation Links
Skip Navigation Links.
%USERPROFILE%\Documents\ALVAO\Doc\Documentation\doc\cs\alvao_10_1\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 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 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 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 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.
|