Module: check_mk
Branch: master
Commit: 021fe461031073681c83c195eb2e0742e7a21869
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=021fe461031073…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Fri Sep 2 15:50:03 2011 +0200
Implemented row selection in views
Implemented row selection in views to select only a subset of shown data
for actions.
Implementation notes:
Momentan verfügen die Views nicht über die Möglichkeit einzelne
Datensätze zu selektieren und dann nur auf diese ein Command auszuführen.
Dies ist in MS4 gefordert und soll wie folgt direkt im Multisite Code
umgesetzt werden:
- Standard-Verhalten bleibt bestehen:
Wenn kein Datensatz explizit ausgewählt wurde, dann werden die Aktionen
auf alle angezeigten Datensätze ausgeführt.
- Beim Mouseover über eine Row wird diese durch Ändern der Hintergrundfarbe
hervorgehoben. Man muss dafür nicht neue Farben definieren, es sollte
reichen für jede Zelle, wo ein Hintergrund gesetzt ist, die Farbe etwas
heller/dunkler zu machen.
- Der Nutzer kann mit der Maus auf eine beliebige Stelle in der Tabelle
Klicken. Daraufhin wird die Row selektiert. Bei nochmaligem Klicken wird
die Seletion aufgehoben.
- Die aktuellen Selektionen müssen auf der aktuellen Seite
den Reload überleben. Allerdings werden die nicht persistiert. Also
ganz genau wie die sorter.
Dazu müssen die aktuellen Selektionen des Nutzers nach dem regulären
Reload der Seite neu gesetzt werden.
Alternativ müssen die Selektionen als URL Parameter durchgeschleift
werden und dazu führen, dass die Rows beim Laden der Seite selektiert sind.
- Wie werden die Rows identifiziert?
Die Rows müssten immer in der Reihenfolge angezeigt werden, in der auch die
Datensätze im Check_MK vorliegen. Wenn das so ist, dann kann man die Rows
einfach durchnummerieren.
Die Alternative sähe schon komplizierter aus. Da müsste man für jede Row einen
eindeutigen Schlüssel finden, der sich je nach angezeigten Daten aus
verschiedenen Infos zusammensetzen kann. z.B. site,host,service oder ...
Eine Row bedeutet hier nicht (!) ein html TR Element, denn die verschiedenen
Layouts sind nicht unbendingt einfache Tabellen.
Versuch: Die Row Elemente werden via CSS-Klasse identifiziert. Das hat den Grund,
dass man mit getElementsByClassName() relativ komfortablen alle Objekte bekommt.
Es gibt eine CSS-Klasse "dr" für alle "data row" Elemente und
"dr_#" durchnummeriert
für alle Elemente eine "data row".
- views.py vor dem Verarbeiten von do_actions() müssen die Rows gefiltert werden.
Allerdings dürfen diese nur für die Aktionen gefiltert werden. Bei der Anzeige
muss wieder alles gezeigt werden.
- Alle Layouts inkl. verschiedene Datasources testen
---
ChangeLog | 2 +
web/htdocs/htmllib.py | 10 +-
web/htdocs/js/check_mk.js | 308 ++++++++++++++++++++++++++++++++++++++++++
web/htdocs/js/sidebar.js | 4 -
web/htdocs/views.py | 27 +++-
web/plugins/views/layouts.py | 29 +++-
6 files changed, 358 insertions(+), 22 deletions(-)
Diff:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commitdiff;h=021fe46103…