Table of Contents

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