Ergebnisse von Datenbank-Abfragen werden 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, beschreibender Text und Visualisierungen in einem einzigen Dokument kombiniert werden. Es werden verschiedene Programmsprachen unterstützt, darunter auch Ruby.
IRuby
Jupyter Notebooks können 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 über die Methoden IRuby.display
, IRuby.html
und
IRuby.table
gesteuert. Ruby-Objekte stellen sich über die
Methode to_html
dar.
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
Falls die Methode nicht überschrieben ist, wird bei Vertices 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 >
Arcadedb#find lädt einen (member) Datensatz und stellt ein
Member-Objekt zur Verfügung.
iruby stellt dies über die
dessen Methode
to_html dar.
Arcadedb#where gibt ein Array zurück, das über die Methode
Array.to_html` eine Tabelle ausgibt.
Member.where name: ‘Gross’
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.