Ergebnisse von Datenbankabfragen sind für eine
Ausgabe in Jupyter Notebooks vorformatiert. Die Methode html_attributes
steuert die Darstellung sowohl für die Ausgabe von Datenbank-Objekten wie auch
die von Listen.
Ein Jupyter-Notebook ist eine webbasierte interaktive Rechenumgebung, in der Code, Text und Visualisierungen in einem einzigen Dokument kombiniert werden.
IRuby
Jupyter Notebooks können auch einen aktuellen Ruby-Kernel laden und dann Ruby-Programme
ausführen. Auf der Ruby-Seite muss nur das iruby
-Gem eingebunden werden.
## Gemfile
gem "arcadedb"
gem 'iruby'
( … )
Formatierung der Ausgabe
Die Ausgabe in Jupyter Notebooks wird durch IRuby.display
, IRuby.html
und
IRuby.table
Befehle
in der Methode to_html
der auszugebenden Klasse definiert.
In ArcadeDB
ist die Ausgabe von Datenbankinhalten in lib/arcade/base.rb
wir folgt
formuliert
def to_html # iruby
the_rid = "[#{rid}] : {#{self.in.count}->}{->#{self.out.count }}"
IRuby.display IRuby.html "<span style=\"color: #50953DFF\">
<b>#{self.class}</b><#{the_rid}
</span>
< #{html_attributes.map{|_,v| v }.join(', ')} >"
end
Wird die Methode nicht überschrieben, wird zunächst die Datenbank-Klasse ausgegeben,
gefolgt von der
RID-des Datensatzes und der Anzahl ein- und ausgehender Edges, alles grün. Es
folgt eine Liste der Werte der in der Methode html_attributes
definierten Datenbankfelder.
Member.find name: ‘Gross’
Member[#49:43] : {0->}{->0} < Frau, Maria, Gross, Lüneburg, Hauptstr. 12a >
Die Methode find
gibt einen Datensatz zurück. Deshalb ruft iruby
die
Methode to_html
auf. Die Methode where
gibt ein Array zurück. Deshalb
verändert sich die Ausgabe.
Member.where name: ‘Gross’
Es wird eine Tabelle mit jetzt einer Datenzeile und der Überschrift ausgegeben.
Die Ausgabe selbst ist in Array.to_html
formuliert, die im wesentlichen IRuby.table
aufruft.
Beide Ausgaben werden durch die Methode html_attributes
mit Leben erfüllt:
def html_attributes # Standard
invariant_attributes
end
def html_attributes # customized
{ Sex: :sex,
Vorname: :surname,
Name: :name,
Ort: :town,
Straße: :street }
end
Im Ergebnis können alle Datenbankausgaben über die Methode html_attributes
im
Model-File an die Bedürfnisse angepasst werden. Dies ist ein vertretbarer
Aufwand für die Adaption an Jupyter-Notebooks.