Projekt

Allgemein

Profil

3950 Dashboard » Historie » Version 45

[X] Marcus F, 07.04.2026 13:31

1 1 [E] Andre K
h1. 3950 Dashboard
2 2 [E] Andre K
3 20 [X] Steffen A
Einstiegsvideo: Y:\KUNDENDATEN\CIMPCS\Intern\Arbeitsunterlagen\Schulungsvideos\Admin\Dashboard
4
5 24 [X] Steffen A
*Tastenkombinationen*
6
7
STRG + Rechte Maus auf Objekt = Administrierfunktionen
8
9
Hauptmenü ~> Alle Quellen Durchsuchen = SQL Gehirn
10
11 20 [X] Steffen A
12 18 [X] Steffen A
h2. Möglichkeiten für Kunden
13 17 [Y] Andreas F
14 18 [X] Steffen A
# Kundeneigene Erstellung von Dashboards
15
# Nutzung vorgefertigter ProdatStandardDashboards
16 17 [Y] Andreas F
# Entwicklung von kundenspezifischen Dashboards durch CIMPCS
17
18
h2. Anwendungsbeispiele
19
20
[[Dashboard Beispiele]]
21
22 2 [E] Andre K
h2. Erstellung
23
24 15 [E] Andre K
*Aufpassen:* %{color: red}beim Schließen wird nicht automatisch nach Speichern gefragt!%
25 14 [E] Andre K
26 5 [E] Andre K
* Hauptmenü-Eintrag erstellen mit *action:* @dashboard@ und *proc:* Dashboard-Kennzeichen
27
{{collapse(zum Beispiel)
28 1 [E] Andre K
!hauptmenu_dashboard.png!
29 5 [E] Andre K
}}
30
* Dashboard öffnen
31 7 [E] Andre K
* @Zahnrad@ / @Bearbeiten@
32 5 [E] Andre K
{{collapse(Aufklappen)
33
!dash_bearbeiten.png!
34 3 [E] Andre K
}}
35 7 [E] Andre K
* @Panel links@ / @Popupmenu@ / @Neue Seite erstellen@
36 6 [E] Andre K
{{collapse(Aufklappen)
37 1 [E] Andre K
!neue_seite.png!
38
}}
39 7 [E] Andre K
** und folgende Parameter eingeben:
40
*** Menu.Caption
41
*** Menu.Hint
42
*** Menu.ImageIndex (Passende Icon von USysModule/ImageListHot)
43
** die Parameter kann man später über @Panel links@ / @Popupmenu@ / @Aktuelle Seite editieren@ anpassen
44 8 [E] Andre K
** Seiten sind mit drag-n-drop miteinander kombinierbar (kann man als Baumstruktur darstellen)
45
{{collapse(zum Beispiel)
46
!tree_sites.png!
47
}}
48 10 [E] Andre K
49
h2. TileControl
50
51 9 [E] Andre K
* Editierte Seite auswählen
52
* @Zahnrad@ / @Erstellen@
53 8 [E] Andre K
{{collapse(Aufklappen)
54
!create_controls.png!
55 1 [E] Andre K
}}
56 26 [X] Marcus F
* Kontextmenü > Item bearbeiten
57 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)
58 13 [E] Andre K
** Text 1 (oben links)
59
** Text 2 (oben rechts)
60
** Text 3 (unten links)
61
** Text 4 (unten rechts)
62
** MainMenu-Link (mm_id)
63
** Font.Size(1)
64
** Font.Size(2-4)
65
** ImageIndex (Glyph = False) %{color: red}[wovon geladen / wie kann man bedienen?] Vorschlag: löschen und Image von oben ausgewählter @mm_id@ laden.%
66
** mit Schift+Linksklick kann man die Größe anpassen (werden vorgegebene Größe nacheinander gesetzt)
67
** {{collapse(Beispiel)
68 1 [E] Andre K
!tilecontrol.png!
69 10 [E] Andre K
}}
70 26 [X] Marcus F
71 10 [E] Andre K
72
h2. LayoutControl
73
74
* Editierte Seite auswählen
75
* @Zahnrad@ / @Erstellen@
76
{{collapse(Aufklappen)
77
!create_controls.png!
78
}}
79
* LayoutControl
80
* Popupmenu von LayoutControl:
81
** @Eigenschaften@: heir kann man aktuell nur die Höhe anpassen
82
** @LayoutControl-Customizer@: visuelle Layouteditor (Gruppierung, Positionierung, Ausrichtung, Umbenennung usw)
83 12 [E] Andre K
84 19 [Y] Andreas F
Offen: wie erzeugt man ein Split Element?
85
86 12 [E] Andre K
h3. Grid
87
88
* @Hinzufügen@ / @Grid@
89
* Popupmenu von Grid
90 1 [E] Andre K
{{collapse(Aufklappen)
91 10 [E] Andre K
!grid_popup.png!
92
}}
93 12 [E] Andre K
** Erste zwei Zeilen: automatisch generierte Namen von Frame und Layout zur Info
94
** bei SQL kann man Standard-SQL-Name eingeben oder direkte SQL-Statement:
95 10 [E] Andre K
{{collapse(zum Beispiel)
96
<pre><code class="sql">
97 11 [E] Andre K
SELECT
98
  dbrid,
99
  ak_nr,
100
  ak_bez 
101
FROM
102
  art 
103 1 [E] Andre K
LIMIT 5
104 10 [E] Andre K
</code></pre>
105
106 1 [E] Andre K
!grid_sql.png!
107 11 [E] Andre K
}}
108 12 [E] Andre K
** @Parent anpassen@ für Master-Detail-Beziehungstabellen geeignet, 
109 11 [E] Andre K
{{collapse(zum Beispiel)
110
Erstellen zweite LayoutControl mit Grid
111
<pre><code class="sql">
112
SELECT
113
  r_descr,
114
  r_unit,
115
  r_value 
116
FROM
117
  recnokeyword
118 1 [E] Andre K
WHERE
119
  r_dbrid = :dbrid
120
</code></pre>
121
und setzen Beziehung zum erstem Frame
122
!grid-master-detail.png!
123
}}
124 37 [E] Oleg G
* Suche per Suchbegrif 
125
{{collapse(SQL)
126
<pre><code class="sql">
127
SELECT
128
  [...]
129
FROM adk
130
WHERE (:edSearch = '' OR tadk.tsvector(adk) @@ to_tsquery('simple', :edSearch || ':*'));   --- Suche
131
</code></pre>
132
}}
133 12 [E] Andre K
134 38 [E] Oleg G
h3. Einstiegsfilter
135
136
* Daten werden erst nach Enter-Taste in Suchfeld oder nach Suchen-Button Klick geladen
137
{{collapse(Aufklappen)
138
!clipboard-202503210910-uyhpv.png!
139
}}
140
* Ganze Funktionalität nur bei Hauptframe möglich (wo keinen Parent angegeben ist)
141
* Aktivieren für das Grid: {{collapse(Aufklappen)
142
!clipboard-202503210911-j19c7.png!
143
}}
144
* Filter-Liste sind Einträge von der @datarowstate@ Tabelle
145
* BSP: {{collapse(Aufklappen)
146
!clipboard-202304130941-rv6kk.png!
147
}}
148
<pre><code class="sql">
149
INSERT INTO datarowstate (drs_type, drs_code, drs_sort, drs_filtersql, drs_textnr, drs_defregister)
150
                  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
151
                         ('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
152
</code></pre>
153
* @drs_type@ ist der Grid-Name. Dieser wird im Edit-Modus im Popupmenü angezeigt {{collapse(Aufklappen)
154
!clipboard-202304130947-ms0hy.png!
155
}}
156
157 12 [E] Andre K
h3. Chart
158
159
* @Hinzufügen@ / @Chart@
160
* Popupmenu von Chart 
161 13 [E] Andre K
** Parent anpassen und SQL analor Grid (siehe oben)
162
** Eigenschaften:
163 12 [E] Andre K
{{collapse(Aufklappen)
164 1 [E] Andre K
!chart_popup.png!
165
}}
166 14 [E] Andre K
*** GroupCaption
167
*** x[x] (Bezeichnung und Farbe definieren)
168
*** y[y1](Bezeichnung und Farbe definieren)
169
*** [y2] (Bezeichnung und Farbe definieren) 
170
*** [y3] (Bezeichnung und Farbe definieren)
171 12 [E] Andre K
*** ToolBox (um Diagrammdarstellung im Laufzeit zu ändern)
172
*** ChartType ("Beschreibung":https://docs.devexpress.com/AspNet/15880/aspnet-webforms-controls/chart-control/concepts/creating-charts/2d-chart-types)
173
*** LegendPosition
174 16 [E] Andre K
** Beispiel: {{collapse(Aufklappen)
175
<pre><code class="sql">
176
SELECT
177
 ag_bdat,
178
 SUM(ag_brutto_basis_w) AS sum_brutto,
179
 SUM(ag_netto_basis_w) AS sum_netto
180
FROM
181
 auftg
182
WHERE
183
 ag_astat='E'
184
AND
185
 NOT ag_done
186
GROUP BY
187
 ag_bdat, ag_lkn
188 22 [X] Philipp Wolak
ORDER BY
189 23 [X] Philipp Wolak
 sum_netto DESC
190
LIMIT 8
191
</code></pre>
192 29 [X] Steffen A
193 28 [X] Steffen A
*Eigenschaften:*
194 29 [X] Steffen A
!chart_eigenschaften.png!
195 28 [X] Steffen A
196 29 [X] Steffen A
*Diagramm:*
197 28 [X] Steffen A
!chart_ergebniss.png!
198
}}
199 23 [X] Philipp Wolak
200
* *%{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)
201
{{collapse(Aufklappen)
202
!clipboard-202505221244-gd0rx.png!
203
}}
204
205
h3. Groups
206
207
Groups können sowohl als statische Gruppierung, als auch als Registerfenster verwendet werden.
208
209
~> Layout-Control Customizer > Kontextmenü der Gruppe > Layout Direction
210
211
212 22 [X] Philipp Wolak
h2. Synchronisierung
213
214 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.
215 22 [X] Philipp Wolak
216
* Dashboards werden als OPTIONS (component_options) auf den SyncServer (PRODAT-18.08) synchronisiert und stehen damit für alle Kunden zur Verfügung
217
* Bei neuen Dashboards ist zusätzlich der neu erstellte Hauptmenüpunkt auf den SyncServer hochzuladen
218 35 [X] Christoph Wellm
219
h2. Standard-SQL - Filter
220
221
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:
222
223
!standard_sql_wrap.png!
224
225
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:
226
227
<pre><code class="sql">
228
SELECT * FROM (&standard_sql
229
) AS standard_sql
230
</code></pre>
231
232
usw. Es ist zu berücksichtigen, dass für die initiale *standard_sql* - Query die Syntax genau so (inklusive Zeilenumbrüchen) aussehen muss.
233 36 [X] Christoph Wellm
234
235
*Achtung*: Der _AutoCheck_ wird beim Term _&standard_sql_ fehlschlagen (intern definiertes Makro) - die Fehlermeldung an dieser Stelle kann man hier aber ignorieren.
236 39 [E] Andre K
237 42 [E] Andre K
---
238
239 39 [E] Andre K
h2. LayoutFrameGrid._SQLUpdate 
240
241
Weiterleitung von der @LayoutFrameGrid.sqlLayout.DataSet.SQLUpdate@
242
243 1 [E] Andre K
siehe #23931
244 43 [E] Andre K
245
---
246
247 39 [E] Andre K
h2. LayoutFrameGrid._Config (dafür vorgesehen, künftig neue Einstellungen hinzufügen zu können, um eine bessere Kompatibilität zwischen den Versionen zu gewährleisten)
248
249 41 [E] Andre K
* @FieldAliasViewTableName@ -> Weiterleitung von dem @LayoutFrameGrid.sqlLayout._FieldAliasViewTableName@
250 1 [E] Andre K
251
siehe #23931
252 44 [E] Andre K
253
---