Warning: Declaration of Suffusion_MM_Walker::start_el(&$output, $item, $depth, $args) should be compatible with Walker_Nav_Menu::start_el(&$output, $item, $depth = 0, $args = Array, $id = 0) in /DISK2/WWW/plsql.cz/www/wp-content/themes/suffusion/library/suffusion-walkers.php on line 39
Feb 232014
 

Delší čas jsem se tomu nevěnoval, ale pokračuji ve vytváření workoutlogu v APEXu. Ze začátku jsem uváděl list dílů na začátku článku, což nebylo rozumné, protože patrně dojdu k tomu, že to bude mít opravdu hodně dílů. Tedy jsem vytvořil index-post, kde bud vést seznam dílů a na který se budu odkazovat. List předchozích dílů. Tenhle tutorál je ve stavu, kdy jsem je navržena datová vrstva, založen workspace, uživatelé a aplikace obsahuje následující stránky:

  • PAGE 1 -  main - zatím prázdná stránka
  • PAGE 2 – Master – TBL_WORKOUT - report kdy uživatel cvičil (Interactive report)
  • PAGE 3 –  Form on TBL_WORKOUT - editace hlavního záznamu cvičení
  • PAGE 101 – Login - automaticky generovaná stránka s loginem

Přemýšlel jsem o optimálním způsobu pokračování – na jednu stranu bych sem rád psal něco, co jde logicky za sebou na stranu druhou bych se co nejdříve rád přiblížil nějaké funkcionalitě, která je třebas i jen v obezené podobě použitelná. Aktuálně mi ze cvičení okouzlila Chelsea. Takže jsem se koukal na nějaké minimum, které je třeba implementovat, aby to šlo zaznamenávat a docela to dává smysl. Je na to potřeba možnost editace TBL_CIRCLE_WORKOUT_DEF_SERIE, kam mám v plánu ukládat definici cvičení – konkrétně pro Chelsea by tam měly být 3 rádky (jeden s 5 přítahama, druhý s 10 klikama a třetí s 15ti dřepy). A editaci nadřazné entity TBL_CROSSFIT_WOD_LOV, jako master záznam se jménem a parametrama. Obojí najednou se dá hezky vyřešit pomocí APEXového Master Detail Form. Takže začněme formulářem, kde je možné editovat WODy (workout of day):

Nalogujeme se do APEXu jako APEX_DEVELOPER a zeditujeme aplikaci WORKOUT_LOD (u mě 666):


A rovnou dáme “Create Page“. Nyní je na výběr typ stránky, kterou chceme vytvořit. Do tabulky je třebas umět zapisovat záznamy, takže FormNext.


Nyní je třebas nad čím či jak. Máme pod sebou dvě entity (TBL_CIRCLE_WORKOUT_DEF_SERIE a TBL_CROSSFIT_WOD_LOV), takže ideální je umět je zeditovat rovnou, tedy vybereme Master Detail Form a Next.


Nyní nás čeká vcelku rozsáhlý průvodce vytvořením stránek. První, co je požadováno je master tabulka, tedy:

  • Table/View Onwer: APEX_WORKOUT
  • Table/View Name: TBL_CROSSFIT_WOD_LOV
  • Defalutně se nepřidá LOB sloupec - nicméně obrázek uploadovat budeme chtít tedy do seznamu přidáme i PICTURE

A Next.


Nyní “detail” tabulka. Pro nás je to TBL_WORKOUT_CIRCLE_DEF_SERIE, ostatní default a Next.

Nyní APEX potřebuje vědět primární klíče pro obě tabulky:

  • APEX_WORKOUT.TBL_CROSSFIT_WOD_LOV – Zaškrtnout Select Primary Key Column(s) a pak ID_CROSSFIT_WOD_LOV.
  • APEX_WORKOUT.TBL_CIRCLE_WORKOUT_DEF_SERIE – Zaškrtnout Select Primary Key Column(s) a pak ID_CIRCLE_WORKOUT_DEF_SERIE

A zase Next..

Nyní je potřeba definovat pro obě tabulky z čeho se má generovat primární klíč. Prvně se vybírá pro master tabulku, tedy TBL_CROSSFIT_WOD_LOV.  Vybereme se sequence a pro touhle tabulku máme připravenou sequenci SEQ_ID_CROSSFIT_WOD_LOV. Next a po té následuje zase výběr zdroje primárního klíče pro tabulku TBL_CIRCLE_WORKOUT_DEFINITION, což je SEQ_ID_CIRCLE_WORKOUT_DEF_SERI.

A zase Next. Nyní je potřeba pořešit navigaci:

  • Include Master Row Navigator: No
  • Include Master Report: No (obojí si uděláme sami a hezečeji)

A zase Next. Dále je na výběr Layout, vybereme: Edit detail as tabular form on same page.

A Next. Ptát se to na atributy stránky (jméno čísla), necháme default a dáme zase Next. Vybrat Do not use Tabs a zase Next do posledního kroku, kde je summář:

A potvrdíme kliknutím na Create. Pak nás ideálně přivítá hláška o úspěšném vytvoření stránky. S možností jí rovnou otevřít. Problém je, že není možné založit záznam, protože je tu závislost na číselníku TBL_CROSSFIT_TARGET_LOV. Ve kterém nejsou žádná data. Interface a editace této entity počká, jedná se o číselník, který bude vcelku stabilní, takže naférovku inserty přímo do databáze:

insert into tbl_crossfit_target_lov(id_crossfit_target_lov,target_name,note) values (1,'For time','Na čas');
insert into tbl_crossfit_target_lov(id_crossfit_target_lov,target_name,note) values (2,'Numer of Rounds','Počet kol');
insert into tbl_crossfit_target_lov(id_crossfit_target_lov,target_name,note) values (3,'AMRAP','As many rounds as possible - maximální počet kol v časovém limitu');
insert into tbl_crossfit_target_lov(id_crossfit_target_lov,target_name,note) values (4,'OTM','Počet kol');
insert into tbl_crossfit_target_lov(id_crossfit_target_lov,target_name,note) values (5,'Complete','Prostě dokončit');
insert into tbl_crossfit_target_lov(id_crossfit_target_lov,target_name,note) values (6,'Kola v časovém limitu do selhání','Kola v časovém limitu do selhání');
commit;

Záznam již jde založit, ovšem zatím pouze pro master entitu, pro definici serie ještě nemáme data/lov číselníky. Nicméně už by to mohlo vypadat nějak takto:

Aktuálně jde pouze záznam založit. Teoreticky i zeditovat či smazat, ale aplikace zatím nemá nikde prolink ani nějak možnost otevřít již existující záznam. Lze toho docílit napsáním nějaké podobné url:

http://localhost:8080/apex/f?p=666:14:5516028830645::NO::P14_ID_CROSSFIT_WOD_LOV:2

Nemožnost editovat záznamy je zásadní nedostatek. Proklik ale bude až z nějakého reportu, kde bude možné vybírat si WODy k aktuálnímu cvičení a to určitě počká. Příště vylepšíme tenhle vkládací formulář. Hébičkám zdar!

 Posted by at 06:07

 Leave a Reply

(required)

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>