Debugger – rozšířit interface pro panely o možnost vypnutí/zapnutí …

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
LeonardoCA
Člen | 296
+
0
-

Setkal jsem se s tím už vícekrát, že bych v úrčitém případě potřeboval některé panely vypnout, třeba jen pro konkrétní presenter.

Naposled teď, když jsem ladil nějaké importy dat a vypisoval jsi průběžně data přes ob_flush, tak se mi do toho pletl Hosiplánův HtmlValidátor a generoval chyby, že nemá žádné data v bufferu.

Představoval bych si přidání funkcí, např activate/deactivate nebo turnOn/turnOff nebo setActive.

Problém je, že každý panel se navěšuje někde jinde v aplikaci a tak by tuto funknčost musel implementovat každý interně v panelu, nedá se to vyřešit nějak jednotně.

Felix
Nette Core | 1186
+
0
-

Souhlasim. Take jsem to jiz potreboval pouzit. Zavedl bych jednotne navesovani v configu treba.

nette:
    debugger:
        bar: # panely do Debugger baru
            - Nette\DI\Diagnostics\ContainerPanel # alias DI Container baru
            - IncludePanel
            - XDebugHelper('myIdeKey')
            - MyPanel(@MyService)

Mi prijde jako best-practice.

LeonardoCA
Člen | 296
+
0
-

Ono mi nejde tak ani o jednotné navěšování, protože to není reálně možné. Některé panely se navěšují na různé eventy aplikace. Některé je potřeba navěsit až v presentru, apod.

Ale hlavně o jednotnou možnost je volitelně vypínat a ne tak, že je zakomentuju.

Filip Procházka
Moderator | 4668
+
0
-

To je spíše problém toho panelu. Myslím že jsem to už opravil, ale nedaří se mi ten problém replikovat.

LeonardoCA
Člen | 296
+
0
-

@Hosiplan: To můžu vyzkoušet. Ale nejde jen o to. Ale i třeba o možnost si panely volitelně zapínat/vypínat podle potřeby. Na to se chystám napsat rozšíření, ale už teď jsem to chtěl nahodit k diskuzi.

jasir
Člen | 746
+
0
-

Jsem určitě pro. Již jsem se pokoušel implementovat panel, který by zajišťoval vypínání/zapínání ostatních panelů, ale nepodařilo se mi to dokončit.

LeonardoCA
Člen | 296
+
0
-

Protože mne stále štve kvůli každé blbosti otevírat config.neon nebo bootstrap, rozhodl jsem se, že do konce roku vytvořím základ a pár addonů které používám upravím nebo komplet přepíšu. Mám už pár drobných i větších vylepšení, které pomalu zrají do uvolnitelné podoby a chci z toho všeho udělat balíček Development Tools.

Ještě jednou shrnu co mi vadí:

1. rychlost vykreslení stránky během ladění

  1. generování – některé addony potřebují slušný čas na zpracování dat – Component tree panel, XDebugTrace
  2. vykreslení – spousta addonů (včetně build in) posílá do prohlížeče někdy (za určitých podmínek) až nechutné množštví dat – XDebugTrace, HtmlValidator, ComponentTree, SQL monitory

Čas generování je většinou zanedbatelný v poměru k tomu, kolik času potřebuje prohlížeč na vykreslení tisíců html tagů.

2. nutnost editovat konfiguraci a nechávat rekompilovat container, když chci změnit libovolné triviální nastavení

Chci, abych si mohl addony v panelu vypínat/zapínat podle potřeby a u některých mít možnost nastavení co mne zrovna zajímá a co ne.

Předběžný návrh řešení:

  1. Samostatný panel do debug baru, kde bude seznam panelů s checkboxy jestli jsou aktivní nebo ne. Tlačítka vypnout vše, zapnout vše. Případně by mohl ještě mít možnost uložit současné nadstavení pod nějakým názvem – pojmenované konfigurace.
  2. Univerzální komponenta, která rozšíří stávající i budoucí panely o možnost konfigurace a live response. (Chci použít kompozici a ne dědičnost.) Z přístupní nastavení hlavnímu konfigurátoru panelů a volitelně vytvoří malý konfigurovatelný panel v hlavičce vlastního panelu.

Příklady:

  • mám panely co potřebuji, upravené tak, ať zobrazují informace i při ajaxových requestech. Většinou potřebuji jen aktuální data, ale někdy i předchozí, přepínač na to by se hodil i v hlavním panelu i v jednotlivých.
  • někdy s oblibou používám Component Tree, abych viděl komponenty ktéré ladím, ale nezajímá mne a nepotřebuji renderovat v komponent tree panelu zbytek
  • XDebugTrace umí spustu věcí, ale nechce se mi kvůli každé blbosti přepisovat konfiguraci a znovu renderovat stránku, mohl by umět na kliknutí tlačítka přefiltrovat data přímo s jinými parametry (samozřejmě, když si je předtím uloží do temporary souboru, které bude v nastavitelných intervalech mazat)
  • Ladím importy kde probíhá desetitisíce sql dotazů a já je většinou nechci vidět a když už tak jen některé

3. Největší vychytávky by byly

  • kdyby panely ukládaly všechno nebo část dat do temporary souborů nebo cache a načetly a zobrazily až na požádání, nebo alespoň aby se data přenesly do prohlížeče, ale nevykreslovaly a nebrzdily tak dokončení vykreslování stránky.
  • kdyby některé panely uměly zobrazit vedle sebe a porovnat data z předchozího a součaného requestu
  • kdyby některé panely uměly data automaticky nebo nastavitelně seskupovat a mohly
  • nebo vyhledávat (například i v containeru by se na trochu větším projektu hodilo)
  • nebo zobrazit seznam „tagů“
  • kdyby sql panel uměl buď editaci a testování sql inline nebo by se integroval s adminerem

A to vše by mohlo být realizováno přes drobné komponenty poskytující jednotné api pro takovou funkčnost. Panely by je mohly volitelně implementovat.

Vše je realizovatelé, jen ještě přemýšlím nad detaily. Případně napište svoje nápady nebo připomínky.

Tak trochu čekám na novou verzi DebugBaru, ať to pak nemusím moc předělávat.

Ještě dodám: Můj cíl je upravit pár svých a cizích panelů podle mých představ a zároveň umožnit snadné a rychlé použití těch pár vychytávek v jiných současných i budoucích panelech.

Editoval LeonardoCA (15. 11. 2012 20:12)

LeonardoCA
Člen | 296
+
0
-

Ať nespamuju „Feature requests“, tak přihodím související téma.

Bluescren je skoro perfektní, ale v poslední době mi vadí, že se zobrazuje vždy přes celou plochu prohlížeče. Mám komponentu s odkazy pro znovu zpracování stejné stránky nebo pro zapnutí vlastních detailních informací o tom co zrovna zpracovává. Kliknutí na odkaz je rychlejší než refresh prohlížeče nebo kliknutí do řáku url + enter (a zvlášť při ajaxovém požadavku) a bluescreen musím vždy minimalizovat…

Také by mohl mít přepínatelnou úroveň množství informací. Při ladění většinou stačí když vidím text chyby a vím hned kde je problém, když bych potřeboval víc informací tak bych si klikl na plné zobrazení.

Další tip – implementovat přímo do bluescreen odkaz pro zopakování posledního požadavku – u toho si nejsem jist, většinou se může hodit, někdy ale může být problém v tom, že poslední požadavek zopakovat nelze.

A poslední věc, některé panely by se hodilo mít možnost zobrazit i bez toho že by došlo k chybě. Například konfigurace serveru, atp.

Editoval LeonardoCA (29. 11. 2012 22:57)