====== Gantt(ův) graf ======
Přímo integrovaný ganttův graf do frmuláře ESO9 nenahrazuje původní řešení {{ :techdoc:gantt.pdf | Tvorba Ganttových grafů pro obecného klienta}}. Toto řešení zůstane prozatím funkční, jen nebude dále rozšiřováno.
Nové řešení využívá komponentu z https://www.jqwidgets.com/ a je plně integrováno do editační formy ESO9. Nahrazuje zobrazení Browse formy a umožňuje grafický náhled a editaci dat přímou manipulací s prvky ganttova grau.
=== Prametry formy ===
Nastavení formy pro zobrazení ganttova grafu probíhá za pomoci hidden parametrů. Pokud nejsou některá z polí uvedena v editoru je nezbytné je uvést v HiddenFields.
* GANTT - hodnota 1 - Zajistí zobrazení ganttova grafu místo Browse.
* GANTTTYPE - hodnota 0 (prozatím základní gantův graf).
* GANTTTASKID - Název pole ID pro identifikaci záznamu.
* GANTTTASKIDP - Název pole ve kterém se nachází ID pro identifikaci předchůdce. (Určuje zobrazení stromové struktury tasků).
* GANTTTASKDATESTART - Název pole určující počáteční datum tasku (DATETIME).
* GANTTTASKDATEEND - Název pole určující konečné datum tasku (DATETIME).
* GANTTTASKLABEL - Název pole určující zobrazenáý popis tásku.
* GANTTTASKTYPE - Název pole určující typ tasku. Povolené hodnoty v datech jsou PROJECT/TASK/MILESTONE.
* GANTTTASKPROGRESS - Název pole určující procento plnění tasku.
*
* GANTTTASKCONN - Název pole určující definici napojení na ostatní tasky. Struktura "ID:TYP_VAZBY;ID:TYP_VAZBY". př. "14587:1;14588:2" Tapy vazby mohou nabývat hodnot 0=Start-to-Start, 1=End-to-start, 2=End-to-End a 3=Start-to-end.
* GANTTCURRENTTIMEINDICATOR - zda zobrazovat zobrazit indikátor aktuálního dne.
* GANTTCURRENTTIME - Název pole určující hodotou aktuálního dne, pokud je jiný než dnešní datum (DATETIME).
* GANTTVIEW - Název pole určující zobrazení časové osy. Možné hodnoty DAY/WEEK/MONTH/QUARTER/YEAR.
* GANTTTOOLTIP - hodnota="1" povolí zobrazení tooltipu.
* GANTTTASKTOOLTIP - Název pole určující vlastní tooltip tasku.
* GANTTHEIGHT - výška grafu v pixelech, pokud se neuvede vypočítává se automaticky.
* GANTTTASKMFCONNUPDATE - Název MF pole do kterého gantt zapisuje aktuálně vytvořené/zrušené propojení tasků přes grafické rozhraní. struktura je IDP:IDN:TYP_VAZBY.
* GANTTTASKSPCONNUPDATE h- Název SP procedury která je spuštěna po vyzvoření/zrušení propojení tasků. Procedura musí mít vstupní parametr, který se rovná názvu polem uvedeného v GANTTTASKSPCONNUPDATE. V proceduře se může zpracovat aktuální propojen tasků.
=== Příklad nastavení parametrů ===
Pro formu obsahující data tabulky SDOK s potřebnými vazbami
=== Příklad SP procedury na aktualizaci vazby ===
CREATE OR ALTER procedure dbo.spCONNECTIONS_Update
@MF_CONNECTIONS varchar(255),
@RequeryState Smallint= null
AS
Set NoCount ON
declare @IDSDOKP INT,
@IDSDOKN INT,
@VLTYPVAZBY SMALLINT
--přečtu si vytvořenou vazbu "IDP:IDN:TYP_VAZBY"
select @IDSDOKP = RADEK from dbo.fnTABULKA_SEZNAM(@MF_CONNECTIONS,':') where poradi = 1
select @IDSDOKN = RADEK from dbo.fnTABULKA_SEZNAM(@MF_CONNECTIONS,':') where poradi = 2
select @VLTYPVAZBY = RADEK from dbo.fnTABULKA_SEZNAM(@MF_CONNECTIONS,':') where poradi = 3
--kontrola existence vazby
IF (@IDSDOKP IS NULL OR @IDSDOKN IS NULL OR @VLTYPVAZBY IS NULL)
BEGIN
raiserror('Chybná data v MF_CONNECTIONS', 16, 1)
END
IF NOT EXISTS (SELECT * FROM SDOK WHERE IDSDOK = @IDSDOKP)
BEGIN
raiserror('Neexistuje sdok IDSDOKP', 16, 1)
return
END
IF NOT EXISTS (SELECT * FROM SDOK WHERE IDSDOK = @IDSDOKN)
BEGIN
raiserror('Neexistuje sdok IDSDOKN', 16, 1)
return
END
--smazu obracenou vazbu a nasledne potvrdim novou Nesmi existovat kruhova
DELETE HISSDOK WHERE IDSDOKP = @IDSDOKN AND IDSDOKN = @IDSDOKP
--pokud existuje aktualizuji typ, jinak založím
IF EXISTS (SELECT * FROM HISSDOK WHERE IDSDOKP = @IDSDOKP AND IDSDOKN = @IDSDOKN)
BEGIN
UPDATE HISSDOK SET VLTYPVAZBY = @VLTYPVAZBY
WHERE IDSDOKP = @IDSDOKP
AND
IDSDOKN = @IDSDOKN
END ELSE
BEGIN
INSERT HISSDOK (IDSDOKP, IDSDOKN, VLTYPVAZBY) VALUES (@IDSDOKP, @IDSDOKN, @VLTYPVAZBY)
END
=== Výsledek ===
{{ :techdoc:gantt01.png?direct&400 |}}