Projekt

Allgemein

Profil

3950 Dashboard » Historie » Version 49

[X] Marcus F, 19.05.2026 14:16

1 46 [X] Marcus F
{{toc}}
2
3 1 [E] Andre K
h1. 3950 Dashboard
4 2 [E] Andre K
5 20 [X] Steffen A
Einstiegsvideo: Y:\KUNDENDATEN\CIMPCS\Intern\Arbeitsunterlagen\Schulungsvideos\Admin\Dashboard
6
7 24 [X] Steffen A
*Tastenkombinationen*
8
9
STRG + Rechte Maus auf Objekt = Administrierfunktionen
10
11
Hauptmenü ~> Alle Quellen Durchsuchen = SQL Gehirn
12
13 20 [X] Steffen A
14 18 [X] Steffen A
h2. Möglichkeiten für Kunden
15 17 [Y] Andreas F
16 18 [X] Steffen A
# Kundeneigene Erstellung von Dashboards
17
# Nutzung vorgefertigter ProdatStandardDashboards
18 17 [Y] Andreas F
# Entwicklung von kundenspezifischen Dashboards durch CIMPCS
19
20
h2. Anwendungsbeispiele
21
22
[[Dashboard Beispiele]]
23
24 2 [E] Andre K
h2. Erstellung
25
26 15 [E] Andre K
*Aufpassen:* %{color: red}beim Schließen wird nicht automatisch nach Speichern gefragt!%
27 14 [E] Andre K
28 5 [E] Andre K
* Hauptmenü-Eintrag erstellen mit *action:* @dashboard@ und *proc:* Dashboard-Kennzeichen
29
{{collapse(zum Beispiel)
30 1 [E] Andre K
!hauptmenu_dashboard.png!
31 5 [E] Andre K
}}
32
* Dashboard öffnen
33 7 [E] Andre K
* @Zahnrad@ / @Bearbeiten@
34 5 [E] Andre K
{{collapse(Aufklappen)
35
!dash_bearbeiten.png!
36 3 [E] Andre K
}}
37 7 [E] Andre K
* @Panel links@ / @Popupmenu@ / @Neue Seite erstellen@
38 6 [E] Andre K
{{collapse(Aufklappen)
39 1 [E] Andre K
!neue_seite.png!
40
}}
41 7 [E] Andre K
** und folgende Parameter eingeben:
42
*** Menu.Caption
43
*** Menu.Hint
44
*** Menu.ImageIndex (Passende Icon von USysModule/ImageListHot)
45
** die Parameter kann man später über @Panel links@ / @Popupmenu@ / @Aktuelle Seite editieren@ anpassen
46 8 [E] Andre K
** Seiten sind mit drag-n-drop miteinander kombinierbar (kann man als Baumstruktur darstellen)
47
{{collapse(zum Beispiel)
48
!tree_sites.png!
49
}}
50 10 [E] Andre K
51
h2. TileControl
52
53 9 [E] Andre K
* Editierte Seite auswählen
54
* @Zahnrad@ / @Erstellen@
55 8 [E] Andre K
{{collapse(Aufklappen)
56
!create_controls.png!
57 1 [E] Andre K
}}
58 26 [X] Marcus F
* Kontextmenü > Item bearbeiten
59 15 [E] Andre K
** Name (Komponentname, also Groß- und Kleinschreibung ist nicht von Bedeutung, jedoch dürfen nur Buchstaben, Zahlen und der Unterstrich verwendet werden. Der Name muss mit einem Buchstaben beginnen)
60 13 [E] Andre K
** Text 1 (oben links)
61
** Text 2 (oben rechts)
62
** Text 3 (unten links)
63
** Text 4 (unten rechts)
64
** MainMenu-Link (mm_id)
65
** Font.Size(1)
66
** Font.Size(2-4)
67
** ImageIndex (Glyph = False) %{color: red}[wovon geladen / wie kann man bedienen?] Vorschlag: löschen und Image von oben ausgewählter @mm_id@ laden.%
68
** mit Schift+Linksklick kann man die Größe anpassen (werden vorgegebene Größe nacheinander gesetzt)
69
** {{collapse(Beispiel)
70 1 [E] Andre K
!tilecontrol.png!
71 10 [E] Andre K
}}
72 26 [X] Marcus F
73 10 [E] Andre K
74
h2. LayoutControl
75
76
* Editierte Seite auswählen
77
* @Zahnrad@ / @Erstellen@
78
{{collapse(Aufklappen)
79
!create_controls.png!
80
}}
81
* LayoutControl
82
* Popupmenu von LayoutControl:
83
** @Eigenschaften@: heir kann man aktuell nur die Höhe anpassen
84
** @LayoutControl-Customizer@: visuelle Layouteditor (Gruppierung, Positionierung, Ausrichtung, Umbenennung usw)
85 12 [E] Andre K
86 19 [Y] Andreas F
Offen: wie erzeugt man ein Split Element?
87
88 12 [E] Andre K
h3. Grid
89
90
* @Hinzufügen@ / @Grid@
91
* Popupmenu von Grid
92 1 [E] Andre K
{{collapse(Aufklappen)
93 10 [E] Andre K
!grid_popup.png!
94
}}
95 12 [E] Andre K
** Erste zwei Zeilen: automatisch generierte Namen von Frame und Layout zur Info
96
** bei SQL kann man Standard-SQL-Name eingeben oder direkte SQL-Statement:
97 10 [E] Andre K
{{collapse(zum Beispiel)
98
<pre><code class="sql">
99 11 [E] Andre K
SELECT
100
  dbrid,
101
  ak_nr,
102
  ak_bez 
103
FROM
104
  art 
105 1 [E] Andre K
LIMIT 5
106 10 [E] Andre K
</code></pre>
107
108 1 [E] Andre K
!grid_sql.png!
109 11 [E] Andre K
}}
110 12 [E] Andre K
** @Parent anpassen@ für Master-Detail-Beziehungstabellen geeignet, 
111 11 [E] Andre K
{{collapse(zum Beispiel)
112
Erstellen zweite LayoutControl mit Grid
113
<pre><code class="sql">
114
SELECT
115
  r_descr,
116
  r_unit,
117
  r_value 
118
FROM
119
  recnokeyword
120 1 [E] Andre K
WHERE
121
  r_dbrid = :dbrid
122
</code></pre>
123
und setzen Beziehung zum erstem Frame
124
!grid-master-detail.png!
125
}}
126 37 [E] Oleg G
* Suche per Suchbegrif 
127
{{collapse(SQL)
128
<pre><code class="sql">
129
SELECT
130
  [...]
131
FROM adk
132
WHERE (:edSearch = '' OR tadk.tsvector(adk) @@ to_tsquery('simple', :edSearch || ':*'));   --- Suche
133
</code></pre>
134
}}
135 12 [E] Andre K
136 38 [E] Oleg G
h3. Einstiegsfilter
137
138
* Daten werden erst nach Enter-Taste in Suchfeld oder nach Suchen-Button Klick geladen
139
{{collapse(Aufklappen)
140
!clipboard-202503210910-uyhpv.png!
141
}}
142
* Ganze Funktionalität nur bei Hauptframe möglich (wo keinen Parent angegeben ist)
143
* Aktivieren für das Grid: {{collapse(Aufklappen)
144
!clipboard-202503210911-j19c7.png!
145
}}
146
* Filter-Liste sind Einträge von der @datarowstate@ Tabelle
147
* BSP: {{collapse(Aufklappen)
148
!clipboard-202304130941-rv6kk.png!
149
}}
150
<pre><code class="sql">
151
INSERT INTO datarowstate (drs_type, drs_code, drs_sort, drs_filtersql, drs_textnr, drs_defregister)
152
                  VALUES ('CRM_dframe_Angebote_MA_lcFrame_angebbylkn', 's30Tage',   10, 'COALESCE(_auftg.modified_date > (CURRENT_DATE - INTERVAL ''30 DAY'')::DATE, false)', 4624, false), --Letzte 30 Tage
153
                         ('CRM_dframe_Angebote_MA_lcFrame_angebbylkn', 'sPosFirst', 20, '(SELECT MIN(ag_pos) FROM auftg AS _auftg WHERE _auftg.ag_nr = ag_nr) = ag_pos', 26573, true);  --Nur erste Position
154
</code></pre>
155
* @drs_type@ ist der Grid-Name. Dieser wird im Edit-Modus im Popupmenü angezeigt {{collapse(Aufklappen)
156
!clipboard-202304130947-ms0hy.png!
157
}}
158
159 12 [E] Andre K
h3. Chart
160
161
* @Hinzufügen@ / @Chart@
162
* Popupmenu von Chart 
163 13 [E] Andre K
** Parent anpassen und SQL analor Grid (siehe oben)
164
** Eigenschaften:
165 12 [E] Andre K
{{collapse(Aufklappen)
166 1 [E] Andre K
!chart_popup.png!
167
}}
168 14 [E] Andre K
*** GroupCaption
169
*** x[x] (Bezeichnung und Farbe definieren)
170
*** y[y1](Bezeichnung und Farbe definieren)
171
*** [y2] (Bezeichnung und Farbe definieren) 
172
*** [y3] (Bezeichnung und Farbe definieren)
173 12 [E] Andre K
*** ToolBox (um Diagrammdarstellung im Laufzeit zu ändern)
174
*** ChartType ("Beschreibung":https://docs.devexpress.com/AspNet/15880/aspnet-webforms-controls/chart-control/concepts/creating-charts/2d-chart-types)
175
*** LegendPosition
176 16 [E] Andre K
** Beispiel: {{collapse(Aufklappen)
177
<pre><code class="sql">
178
SELECT
179
 ag_bdat,
180
 SUM(ag_brutto_basis_w) AS sum_brutto,
181
 SUM(ag_netto_basis_w) AS sum_netto
182
FROM
183
 auftg
184
WHERE
185
 ag_astat='E'
186
AND
187
 NOT ag_done
188
GROUP BY
189
 ag_bdat, ag_lkn
190 22 [X] Philipp Wolak
ORDER BY
191 23 [X] Philipp Wolak
 sum_netto DESC
192
LIMIT 8
193
</code></pre>
194 29 [X] Steffen A
195 28 [X] Steffen A
*Eigenschaften:*
196 29 [X] Steffen A
!chart_eigenschaften.png!
197 28 [X] Steffen A
198 29 [X] Steffen A
*Diagramm:*
199 28 [X] Steffen A
!chart_ergebniss.png!
200
}}
201 23 [X] Philipp Wolak
202
* *%{color:red}WICHTIGER HINWEIS:*% seit 22.05.2025 wurde bei Charts die Eigenschaft *_YSeries* implementiert, wenn Sie mit neuer Version alte Diagrammen anpassen möchten, sollen die als veraltete alte Eigenschaften verwendet werden, die orange markiert sind (für neue Version werden die komplett ignoriert)
203
{{collapse(Aufklappen)
204
!clipboard-202505221244-gd0rx.png!
205
}}
206
207
h3. Groups
208
209
Groups können sowohl als statische Gruppierung, als auch als Registerfenster verwendet werden.
210
211
~> Layout-Control Customizer > Kontextmenü der Gruppe > Layout Direction
212
213 22 [X] Philipp Wolak
h2. Synchronisierung
214
215 30 [E] Andre K
*%{color:red}WICHTIGER HINWEIS:*% Von Kunden vorgenommene Änderungen an Prodat-Dashboards können nicht zusammengeführt werden und werden bei der Synchronisierung überschrieben.
216 22 [X] Philipp Wolak
217
* Dashboards werden als OPTIONS (component_options) auf den SyncServer (PRODAT-18.08) synchronisiert und stehen damit für alle Kunden zur Verfügung
218 1 [E] Andre K
* Bei neuen Dashboards ist zusätzlich der neu erstellte Hauptmenüpunkt auf den SyncServer hochzuladen
219 35 [X] Christoph Wellm
220 46 [X] Marcus F
---
221 1 [E] Andre K
222 46 [X] Marcus F
h2. Dashboard-Konfiguration (@TLayoutFrameGrid@)
223
224
h3. @_StandardSQL@ / @_StandardSQLWrap@
225
226 35 [X] Christoph Wellm
Es besteht die Möglichkeit die Dashboard-Tabellen mittels StandardSQL zu befüllen, oder diese als Grundlage für eine weitere SQL-Query zu nehmen:
227
228
!standard_sql_wrap.png!
229
230
Dazu geht man zunächst in den Bearbeiten-Modus (1), stellt dann eine StandardSQL ein, und kann dann (optional, 2) diese als Grundlage für weitere SQL-Bearbeitung nehmen:
231
232
<pre><code class="sql">
233
SELECT * FROM (&standard_sql
234 1 [E] Andre K
) AS standard_sql
235
</code></pre>
236 36 [X] Christoph Wellm
237 46 [X] Marcus F
Es ist zu berücksichtigen, dass für die initiale *standard_sql* - Query die Syntax genau so (inklusive Zeilenumbrüchen) aussehen muss.
238
*Achtung*: Der _AutoCheck_ wird beim Term _&standard_sql_ fehlschlagen (intern definiertes Makro) - die Fehlermeldung an dieser Stelle kann man hier aber ignorieren.
239 1 [E] Andre K
240 46 [X] Marcus F
|_. Property|_. Wirkung|
241
|@_StandardSQL@|Lädt SQL aus @systemsqlstatement@ (inkl. @sql_macro@-Mechanik).|
242
|@_StandardSQLWrap@|Erlaubt Wrapping-Statement mit Macro @&standard_sql@ (Inhalt des geladenen @_StandardSQL@).|
243 1 [E] Andre K
244 46 [X] Marcus F
h4. Macro-Verhalten mit @_StandardSQL@
245 1 [E] Andre K
246 46 [X] Marcus F
* @sql_macro@-Einträge aus dem StandardSQL werden wie bisher berücksichtigt.
247
* Zusätzlich können Macros über @_Config@ in @[Settings]@ überschrieben werden (nur wenn das Macro im Query vorhanden ist).
248
* Schreibweisen für @_Config@-Macrokeys: @&macroname=...@ oder @macroname=...@.
249 1 [E] Andre K
250 46 [X] Marcus F
h3. @_Config@ (INI-ähnlich)
251 1 [E] Andre K
252 46 [X] Marcus F
|_. Key|_. Typ|_. Default|_. Wirkung|
253 1 [E] Andre K
|@FieldAliasViewTableName@|String|leer|Setzt Alias-Tabelle für Feldbezeichnungen im Grid.|
254 47 [X] Marcus F
|@BtMode@|Boolean|@false@|Vor Speichern fragen (Grünes Icon ganz links oben neben Tabelleneinstellungen )|
255 46 [X] Marcus F
|@Submenus@|Boolean|@false@|Steuert Submenüs im Popup für „Bearbeitbare Felder“ und Pivot-Menüeinträge.|
256
|@UpdateEditIcon@|Boolean|@true@|Steuert Stift-Icon bei editierbaren Feldern (@true@ = anzeigen, @false@ = ausblenden).|
257
|@PivotDirectEdit@|Boolean|@false@|Erlaubt direkte Bearbeitung von Pivot-Feldern auch ohne @_SQLUpdate@ (nur Pivot-View).|
258
|@EditableFields@|CSV/String|leer|Felder, die editierbar gesetzt werden (zusätzlich zur Pivot-Logik).|
259
|@FixedColumns@|CSV/String|leer|Felder, die im linken Fixed-Band fixiert werden.|
260
|@&<MacroName>@ oder @<MacroName>@|String|abhängig von @sql_macro@|Überschreibt vorhandene Query-Macros aus @_StandardSQL@/@sql_macro@ zur Laufzeit.|
261 1 [E] Andre K
262 46 [X] Marcus F
h4. Beispiel @_Config@
263 1 [E] Andre K
264 46 [X] Marcus F
<pre>
265
[Settings]
266
EditableFields=ag_freigabe,ag_prio
267
FixedColumns=ag_nr,ag_kunde
268
Submenus=true
269
UpdateEditIcon=false
270
PivotDirectEdit=true
271
&macrowhere= AND ak_fertigung
272
</pre>
273 1 [E] Andre K
274 49 [X] Marcus F
*Achtung: ein @_Config@ macro zu verwenden sollte bevorzugt gegenüber @_StandardSQLWrap@ verwendet werden. Die Pivot-Funktionen stehen sonst nicht zur Verfügung, wenn der Pivot-Aufruf im StandardSql definiert ist.*
275 48 [X] Marcus F
276 46 [X] Marcus F
h3. @_SQLUpdate@ (Hinweis: Property heißt @_SQLUpdate@, nicht @_UpdateSQL@)
277 1 [E] Andre K
278 46 [X] Marcus F
|_. Wert|_. Wirkung|
279
|gesetzt (nicht leer)|Aktiviert normalen Edit-/Post-Update-Pfad (@SQLUpdate@, Grid Editing, Post/Cancel).|
280
|leer|Normales SQL-Update deaktiviert (read-only), außer @PivotDirectEdit=true@ in Pivot-Views.|
281 1 [E] Andre K
282 46 [X] Marcus F
Priorität: @_SQLUpdate@ hat Vorrang. Wenn @_SQLUpdate@ gesetzt ist, bleibt der Standard-Updatepfad aktiv; @PivotDirectEdit@ wirkt dann nur ergänzend.
283
284
h3. @_MultiSelect@
285
286
|_. Wert|_. Wirkung|
287
|@true@|Mehrfachselektion im Grid aktiv; relevant für Sammelaktionen im Popup (z. B. boolesche Feldänderungen).|
288
|@false@|Einzelselektion.|
289
290
291
h3. Wichtige Kombinationen
292
293
# @_SQLUpdate@ gesetzt + @EditableFields@ gesetzt: klassischer editierbarer Grid-Betrieb.
294
# @_SQLUpdate@ leer + @PivotDirectEdit=true@: Pivot-Felder direkt bearbeitbar (Direktspeicherung über RecNoParam-Pfad).
295
# @Submenus=true@: Popup gruppiert Bearbeitungs- und Pivot-Einträge in Untermenüs.
296
# @UpdateEditIcon=false@: editierbare Felder ohne Stift-Icon.