Migration auf pit - Mobile 4.0
Notwendige Änderungen
Zugriff auf Listenelemente
Listenattribute einer Detailansicht konnten bisher direkt abgefragt werden:
var list = model.attributes.EL_Attribute
Der direkte Zugriff ist in pit - Mobile 4.0 nicht mehr möglich. Verwenden Sie stattdessen die Funktion Ti.App.ex.getListElementsToModel:
var list = Ti.App.ex.getListElementsToModel(model, attributeName);
Bemerkung
Die Liste enthält nach wie vor nicht direkt die Datensätze sondern nur die entsprechenden PitIDs in folgender Form: [{PitID:"00000000:00000000"}]
. Bei einer HT-Liste gibt es hier zusätzlich die Eigenschaft HTPitID
.
Boolesche Attribute
Der Wert von booleschen Attributen (Ja / Nein) muss ab pit - Mobile 4.0 mit getVal()
abgefragt werden:
if (model.attributes.IsActive)
{
// Dieser Code wird ausgeführt, wenn der Datensatz ein Attribut mit dem Namen 'IsActive' hat.
}
if (model.attributes.IsActive.getVal())
{
// Dieser Code wird ausgeführt, wenn der Wert des Attributes 'IsActive' den Wert true hat.
}
SQL-Klauseln
Es ist ratsam für alle Filter und andere Stellen, an denen WHERE-Klauseln für die Gerätedatenbank verwendet werden, immer den Tabellennamen der aktuellen Klasse anzugeben:
return "Person.PitID IN (" + personIDs.join(",") + ")";
Fehlt der Tabellenname, kann es dazu kommen, dass die Klausel nicht ausgeführt wird und ein Fehler im App-Log auftritt, der den Text 'ambiguous column name' enthält.
Außerdem muss die Klausel nun außen geklammert werden, wenn es mehrere verknüpfte Bedingungen gibt:
return "(Person.ref_status='00000100:0001da35' OR Person.ref_status='00000100:0001da36')
Anlegen von anonymen Datensätzen
Das Anlegen eines Datensatzes ohne Bezug zu einer Klasse ging bisher mittels:
var m = { hasNoContractClass: true, attributes: { id:-1, Barcode: ""}};
Dies wird nun durch die Funktion Ti.App.modelGenerator.getNoneContractModel erledigt:
var m = Ti.App.modelGenerator.getNoneContractModel({name:'Test',attributes:{Barcode:{}}});
Schnellumschaltung von Prozessen
Die Schnellumschaltung der Prozesse über eine Kachelansicht wurde bisher so definiert:
Ti.App.viewController.setInitData(window, 'viewDashes_Contract', {
call: {
code: 'viewData.activators=Ti.App.contractController.getContractsDashActivators(false);'
}
});
Ab pit - Mobile 4.0 kann nun an der Kachelansicht die dynamische Eigenschaft isContractSelect
und optional showScanButton
vom Typ Ja / Nein gesetzt werden. Code wird nicht mehr benötigt.
Globale Variablen und Funktionen
Bisher konnten globale Variablen und Funktionen an einem beliebigen statischen Objekt, wie z.B. Ti.App
definiert werden:
Ti.App.myFunction = function(){
alert("Test");
}
Dies hat den Nachteil, dass zuerst ein Skript durchlaufen werden muss, um die Definition vorzunehmen. Ab pit - Mobile 4.0 gibt es im Menüband des Designers unterhalb von JSON Objekte im Bereich Logic die Möglichkeit, die dynamischen Eigenschaft initCode
vom Typ Skript anzulegen:
"initCode" : {
"vars":{myVar : 12, myString : "Hallo "},
"functions":
{
"code":"var XX={ myFunc: function(name){ alert(GL.myString + name + ':' + GL.myVar); return GL.myVar+1; }};"
},
"code":"alert('Applikationsstart!');"
}
Das initCode
-Objekt definiert ein Skript, das zum Start der Applikation ausgeführt wird. Außerdem lässt es sich im Designer untersuchen und weiter unterteilen. Über die dynamische Eigenschaft vars
vom Typ Text können hier statische Variablen definiert werden. functions
vom Typ Skript kann globale Funktionsdefinitionen enhalten. Die oben beispielhaft gezeigt Funktion myFunc
kann in anderen Skripten mit XX.myFunc('pit - Mobile 4.0!');
aufgerufen werden.
Namensänderung der Systemklassennamen
Systemtabellen wie z.B. Contract
werden nun nicht mehr direkt angelegt sondern mit vor- und nachgestellten doppelten Unterstrichen: __Contract__
.
Filtermanager
Die JSON-Datenstruktur bzgl. der PitIDs bei Referenzen hat sich geändert: [{PitID: "XXX"}, ...]
Datumsattribute in die Datenbank speichern
Beim Speichern eines Datumsattributs muss der Attributwert mittels getVal(false, true)
abgefragt werden, damit dieser korrekt für die Datenbank formatiert vorliegt.
Variablen in einer Textansicht
Beim Anzeigen von Variablen in statischen Texten konnte in pit - Mobile 2.0 auch Code ausgeführt werden, um Variablennamen auszugeben. Hier hat sich die Notation etwas geändert. Möchte man nun Variablen anzeigen wird statt der Eigenschaft text
eines Absatzes nun die Eigenschaft codeText
benötigt, deren Inhalt eine globale Variable sein kann (Definition siehe oben):
viewTextSample: {
type: "text",
texts: [
{
codeText: "XX.YOUR_GLOBAL_VARIABLE",
...
Skripte Ausführen beim Fotografieren
In pit - Mobile 4.0 werden Skripte, die beim Foto-Aktivator hinterlegt sind, nicht mehr ausgeführt. Verwenden Sie stattdessen einen Folgeaktivator (siehe unten).
Verbesserungsmöglichkeiten
Prüfung auf Attributwertänderung bei Referenzen
Möchte man bei der Auswahl eines Datensatzes für eine Referenz Code über die oneTouchFunction
ausführen, musste man für pit - Mobile 2.0 beachten, ob sich der ausgewählte Datensatz von der bereits bestehenden Auswahl unterscheidet:
if(parentModel.model.attributes.ref_attribute.getVal() != model.attributes.PitID){
...
}
Dafür gibt es nun den neu eingeführten Parameter isModified
:
if (isModified) {
...
}
Unterschrift in einer Detailansicht
Es ist nun möglich, ein Feld vom Typ Pfad einer Detailansicht als Unterschriftsfeld darzustellen. Dafür wird die dynamischen Eigenschaft style
vom Typ Text am Eingabefeld mit folgendem Inhalt benötigt:
{
sign: true
}
Dokumentendatensatz nach Fotografieren anzeigen
In pit - Mobile 4.0 kann man nun einen Aktivator angeben, der nach dem Schießen eines Fotos automatisch ausgelöst wird und z.B. auf die Detailansicht des Fotos navigiert.
Hierfür wird die dynamische Eigenschaft followActivator
vom Typ Text am Aktivator benötigt, der den Namen des Folgeaktivators beinhaltet.
Farben für Markierungen
Für Markierungen können bereits Bilder hinterlegt werden, die z.B. je nach Referenzwert des Status-Attributs wechseln. In pit - Mobile 4.0 können auch einzelne Farben unterhalb des UI
-Objekts im Menüband definiert werden:
MarkRed: {
color: "#ff0000"
}
Vorschaubilder in Listen
Um das Vorschaubild eines Datensatzes in einer Listenansicht zu definieren gibt es die Eigenschaft Thumbnail an der entsprechenden Klasse. Das Thumbnails wird meist mit einem Skript bereitgestellt (z.B. code:Ti.App.mainController.onGetThumbnail(this)
).
Ab pit - Mobile 4.0 kann man statt einem Skript nun auch this
angeben. Dann wird das erste Pfadattribut der Klasse für das Vorschaubild verwendet. Alternativ kann man mit this:Attributname
den Attributnamen auch explizit angegeben. Gibt man stattdessen den Namen eines Referenzattributs an (z.B. ref_document
, ohne this
), ermittelt die App daraus das erste Pfadattribut der Referenzklasse.
Siehe auch
Validierung
Häufige Fehlermeldungen
Globale Variablen und Funktionen
Schnittstellenbeschreibung