====== 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 |}}