Skip to content

Commit 41d27eb

Browse files
committed
CZ : pConvertSysEventToEvent described, firstPlugin, oexplorer clarification of explanation
1 parent 0fe6392 commit 41d27eb

5 files changed

Lines changed: 104 additions & 1 deletion

File tree

cs/firstPlugin.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ Plugins.catalogize(pMinPlugin);
4949

5050
```
5151

52+
Volání **Plugins.catalogize(pMinPlugin);** je povinné, protože provede zavedení pluginu do katalogu načtených pluginů. Následně na základě znalosti jména pluginu je možné si vyžádat jeho instance. Na základě dat v **plugins.lst** toto udělá aplikace sama.
53+
5254
## Základní pluginy
5355

5456
| Název | Popis |

cs/implPlug.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# 🔧 Implementace pluginů
2+
3+
Následující kapitoly popisují implementaci jednotlivých typů pluginů, které jsou v systému obvyklé.

cs/oexplorer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ HelpViewer obsahuje plugin **puiButtonObjectExplorer**. Tento plugin slouží k
88

99
⚠️ Pokud plugin nebyl doposud v rámci relace aktivní, část funkcionality ze seznamu funkcí při použití odkazů nebude ještě k dispozici.
1010

11-
Pokud je plugin aktivní, bude krátce po spuštění aplikace načten a zobrazí se Vám na bočním panelu toto tlačítko:
11+
Pokud je plugin aktivní, zobrazí se Vám na bočním panelu toto tlačítko:
1212

1313
<button class="pnl-btn" id="downP-ObjectExplorer" title="Prohlížeč objektů" aria-label="Prohlížeč objektů">🧩</button>
1414

cs/pConvertSysEventToEvent.md

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
# 🔌 pConvertSysEventToEvent
2+
3+
## Účel pluginu
4+
5+
Plugin převádí definovanou javascript událost na událost aplikace, která může být zachycena jiným pluginem.
6+
7+
## Implementace
8+
9+
### 1) Konfiguračně s automatickým odesláním ConvertedSystemEvent
10+
11+
1. V souboru **plugins.lst** zaveďte řádek:
12+
pConvertSysEventToEvent:[instanceid]
13+
2. V souboru **plugins-config/pConvertSysEventToEvent_[instanceid].cfg** definujte například:
14+
15+
```text
16+
SYSEVENTNAME|click
17+
SYSOBJECT|body
18+
EVENTBUSEVENT|ClickedEvent
19+
EVENTBUSEVENTID|
20+
```
21+
22+
| Název | Popis |
23+
|---|---|
24+
| SYSEVENTNAME | Jméno javascript systémové událostí (addEventListener). |
25+
| SYSOBJECT | Systémový objekt na který se má plugin navázat. Hodnoty: window, document, body, #xxx = HTML prvek s konkrétním id |
26+
| EVENTBUSEVENT | Jméno události na straně aplikace. |
27+
| EVENTBUSEVENTID | Vlastnost id odesílané zkonvertované události. Podle této vlastnosti se uvnitř systému může filtrovat doručení do všech (🟢) nebo do konkrétních pluginů, které mají id shodné jako zpráva (🔺). |
28+
29+
Javascript událost bude automaticky přeložena do události ⚡ [ConvertedSystemEvent][ConvertedSystemEvent] a ta bude zaslána s **id** odpovídajícím **EVENTBUSEVENTID** a **eventName** bude shodné s hodnotou **EVENTBUSEVENT**.
30+
31+
### 2) Programové řešení s vlastní konverzí do jiného objektu události
32+
33+
1. Proveďte kroky v kapitole 1.
34+
2. Připravte v souboru **plugins/[název pluginu].js** například následující kód:
35+
36+
```javascript
37+
class ClickedEvent extends IEvent {
38+
constructor() {
39+
super();
40+
this.elementId = '';
41+
this.elementIdRoot = '';
42+
this.elementIdVal = '';
43+
this.target = null;
44+
this.event = null;
45+
this.forwarded = false;
46+
}
47+
}
48+
49+
ClickedEvent.register();
50+
51+
class pClickConverter extends pConvertSysEventToEvent {
52+
constructor(aliasName, data) {
53+
super(aliasName, data);
54+
55+
this.DEFAULT_KEY_CFG_SYSEVENTNAME = 'click';
56+
this.DEFAULT_KEY_CFG_SYSOBJECT = 'body';
57+
this.DEFAULT_KEY_CFG_EVENTBUSEVENT = 'ClickedEvent';
58+
}
59+
60+
_fillEventObject(d, evt) {
61+
d.event = evt;
62+
d.target = d.event?.target;
63+
d.elementId = d.target?.id
64+
const splits = d.elementId?.replace('-', '|').split('|').filter(Boolean) ?? [];
65+
d.elementIdRoot = splits[0];
66+
d.elementIdVal = splits[1];
67+
}
68+
}
69+
70+
Plugins.catalogize(pClickConverter);
71+
```
72+
73+
- ClickedEvent je objekt cílové události na straně aplikace.
74+
- **ClickedEvent.register()** provede registraci objektu události do katalogu (informaci o tomto zápisu najdete v **puiButtonObjectExplorer** v **Strom dědičnosti**, kapitola **Odkaz**). Toto je nutné z důvodu nemožnosti javascriptu provádět rozšířenou detekci objektů podle jmen. Toto jméno musíte mít také uvedeno v konfiguraci v **EVENTBUSEVENT**.
75+
- Řádky **this.DEFAULT_KEY_CFG_** buďto v kódu ponechte nebo je můžete zcela odebrat. Konfigurace z bodu 1 je přepisuje.
76+
- Funkce _fillEventObject(d, evt) provádí samotnou konverzi evt (javascript systémové události) na d (cílová událost na straně aplikace).
77+
- Volání **Plugins.catalogize(pMinPlugin);** je povinné. Provede zavedení pluginu do katalogu načtených pluginů.
78+
79+
Výsledkem jednoho zpracování bude událost ⚡ ClickedEvent s obsahem typu třídy ClickedEvent z ukázky.
80+
81+
### ClickedEvent.register()
82+
83+
Funkce IEvent.register() zajišťuje zavedení třídy události do katalogu, aby mohla být později propojena se jménem v konfiguraci.
84+
85+
| Parametr | Povinnost | Popis |
86+
|---|---|---|
87+
| evtName | Ne | Jméno události, pokud chcete konkrétní třídu svázat s jiným jménem události. Zadání (jiného) jména je určitou náhradou dědičnosti tříd. V případě potřeby můžete vícekrát logicky propojit jednu třídu s více jmény událostí. |
88+
| convertMethod | Ne | Funkce v předpisu (x, e), kde x znamená cílová instance události aplikace, e znamená javascript systémovou událost. |
89+
90+
## Příklady implementací
91+
92+
- 🔌 [pClickConverter][pClickConverter]
93+
94+
[pClickConverter]: :inst:pClickConverter:.md "pClickConverter"
95+
[ConvertedSystemEvent]: :_evt:ConvertedSystemEvent.md "ConvertedSystemEvent"

cs/tree.lst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ Seznamy|Seznamy||lists.md
77
📄 Seznam pluginů (plugins.lst)|Seznam pluginů (plugins.lst)||plugins.lst.md
88
🧩 Prohlížeč objektů|Prohlížeč objektů||oexplorer.md
99
🧩 První plugin|První plugin||firstPlugin.md
10+
Implementace pluginů|Implementace pluginů||implPlug.md
11+
🔌 pConvertSysEventToEvent|pConvertSysEventToEvent||pConvertSysEventToEvent.md
12+
Definice objektů
1013
🌐 Nový jazyk|Nový jazyk||newLangViewer.md
1114
Projekt HelpViewer|Projekt HelpViewer||helpviewer.md
1215
📜 Projektové dokumenty|Projektové dokumenty a politiky||?d=https://raw.githubusercontent.com/HelpViewer/.github/master/

0 commit comments

Comments
 (0)