Idee:
Bei Klick auf ein Kartensymbol, das den Fundort einer Probe repräsentiert, muss der passende Steckbrief und das passende 3DModell geladen werden. Schaffe also eine Verbindung zwischen der Kartenposition/Symbol, dem Steckbrief und dem 3DModell einer Probe.
Umsetzung:
Die Kartenposition wird durch die repräsentiert, welche in dem Shape-File enthalten ist, das die Kartenposition enthält; der Steckbrief und das 3DModell jeweils durch ihre Dateinamen. Die Verbindung dieser Informationen wird in dem JSON-Dokument CrossReferencer.json gespeichert, welches folgende Struktur aufweißt:
Struktur: { "items":[{"probe":"Proben-ID", "steckbrief":"Name der Steckbrief-Datei", "scan3d":"Name der Handstück-Datei"}, ... ] }
Dabei müssen alle Werte - also , , <Name der Handstück-Datei> - als Strings, ohne File-Extension, in doppelten Hochkommata eingetragen werden. Bemerkung: die "Proben-ID" in dem Shape-File kann auch Buchstaben enthalten (!)
Beispiel: { "items":[{"probe":"921","steckbrief":"steckbrief","scan3d":"Handstueck_CS3_3D"}, {"probe":"5761","steckbrief":"steckbrief2","scan3d":"Astronaut"}, {"probe":"38094","steckbrief":"steckbrief","scan3d":"Handstueck_CS3_3D_old"} ] }
In dem JavaScript-File CrossReferencer.js sind die benötigten Funktionalitäten wie folgt abgelegt, die alle Teil der dort definierten Klasse CrossReferencer sind:
Name der Funktion | Wirkung der Funktion |
---|---|
readJSONFile("rel. Pfad") | JSON-File als JavScript-Object einlesen; "rel. Pfad" = der relative Pfad zum JSON-File bezogen auf Hauptverzeichnis; derzeit einfach nur Dateiname XReferencer.json, da in Hauptverzeichnis; Hinweis: das eingeladene JavaScript-Object wird als static Variable "crossRefJSON" der Klasse CrossReferencer abgespeichert, kann also mit "this.xRefJSON" verwendet werden. |
getAllByProbe("Probe-ID") | Hole aus eingeladenem JSON-File CrossReferencer.json alle Einträge, deren Feld "probe" den Wert "Probe-ID" hat und gebe diese als Array von JavaScipt-Objecten zurück; WICHTIG: in darauf aufbauenden Funktionen wird davon ausgegangen, dass genau ein JavaScript-Object gefunden wurde! Die Probe-ID sollte also eindeutig in dem JSON-File sein! |
scan3d("Probe-ID") | Nutzt docPathScan3d und getAllByProbe, um für "Probe-ID" Dokumentpfad zum passenden 3DModell zurückzugeben; wenn getAllByProbe leeres Array ergibt, wird Default-Pfad zurückgegeben |
docPathScan3d("Modelname") | Erstellt Dokumentpfad zum 3dModell "Modelname" |
steckbrief("Probe-ID") | wie scan3d nur für Steckbrief |
docPath() | wie docPathScan3d nur für Steckbrief |