Hintergründe, Wissenswertes und Ankündigungen.

Protogrid lebt und entwickelt sich täglich weiter. Dafür leben unsere innovativen Ingenieure und kreativen Grafiker, die hier ihre Geschichten, Anekdoten sowie nützliche Tipps und Tricks teilen.

Update 1.0.4

Dominik Rüttimann am 2015-08-03

Vor kurzem wurden alle Protogrid-Environments auf 1.0.4 aktualisiert. Im Wesentlichen geht es dabei um ein neues Feature: Relationenfilter. Dies ist ein neues Design-Element, das keine Werte speichert, jedoch Tableviews auf derselben Card mit kompatiblen Spalten (gleicher Proto) filtert. Damit ist es jetzt trivial einfach, Overview-Cards mit Filter zu erstellen – einfach die Filter im Overview hinzufügen – Javascript wird nicht benötigt.

Wichtig für Eigner / Betreuer von iOS-Apps
Solange keine Relationenfilter verwendet werden, sollte das App nicht neu ausgerollt werden müssen (das Datenmodell bleibt kompatibel mit früheren Clients). Wenn Relationenfilter im App eingesetzt werden sollen, muss die neueste Version des iOS-Clients ausgerollt werden.

Zuunterst der neue Filter...

Zuunterst der neue Filter…

options

Optionen gibt es nicht viele, man kann nicht viel falsch machen..

UI

so sieht die UI aus – die Tableview hat die Bedienelemente nicht mehr im Cardheader integriert, dafür werden leere Action-Header jetzt ausgeblendet, sodass der ganze Header jetzt viel schlanker erscheint. Speichern-Buttons erscheinen keine weil es nichts zu speichern gibt hier. Wenn ein solcher Filter auf eine Card mit Feldern eingebaut wird, wird er bei jedem Speichern / Neu-Öffnen geleert.

UI_filtered

.. und natürlich tun die Filter auch was sie sollen ..

new_login

.. und als netter Nebeneffekt der neuen Action-Header-Logik erscheint jetzt auch die Login-Page schlanker.

Protogrid Applikationen ganz einfach erweitern mit Script-Librarys

Michel Müller am 2015-06-30

Script-Librarys in Protogrid sind ein mächtiges Instrument, um Applikationen komfortabel den eigenen Bedürfnissen anzupassen. Bereits mit wenig Java-Script-Code kann in kurzer Zeit eine spezifische Geschäftslogik implementiert werden. Im Folgenden werden deren Möglichkeiten anhand eines einfachen Beispiels demonstriert.

Dabei soll die Anforderung umgesetzt werden, in einer Ansicht nur Cards darzustellen, welche bestimmte Filterkriterien erfüllen. Eine einfache Lösung dafür ist, eine TableView zusammen mit einem Relationen-Feld in einer Card zu platzieren, sodass die Anzeige der TableView durch das Relationen-Feldes eingeschränkt wird. Wenn sich jetzt aber das Filterkriterium überhaupt nicht ändern soll, beansprucht das Relationen-Feld nur unnötigen Platz. Es stört Power-User und verwirrt unerfahrene Nutzer. Mit Hilfe einer Script-Library kann das Relationen-Feld kurzerhand versteckt werden. Zusätzlich muss dann das Filterkriterium programmatisch in das Relationen-Feld geschrieben werden, da dieses ja im User-Interface nun nicht mehr zugänglich ist.

Kommen wir gleich zur Praxis und erstellen einfach einmal eine neue Script-Library:

Script-Library-Definition

Protogrid kommt uns gleich zur Hilfe und generiert ein Funktionsgerüst gewürzt mit Kommentaren, Erklärungen und Beispielen. Vorerst werden wir der neuen Script-Library nur einen Namen geben, diese abspeichern und schliessen.

Als Nächstes müssen wir für die gewünschte, spezifisch gefilterte Ansicht einen neuen Proto erstellen. Auch diesem geben wir einen sinnvollen Namen und linken die gerade erstellte Script-Library ein. Wenn wir den Proto nun abzuspeichern und schliessen, bemerken wir, dass Protogrid gleich zwei Protos generiert hat: Einen Utility- und einen Übersichts-Proto. Wir öffnen den letzteren um dessen TableView-Definition anzupassen. Diese soll nämlich in Zukunft jene Cards anzeigen, welche wir in der neuen Ansicht wünschen. Dazu müssen wir einzig deren Proto unter “Verknüpfter Proto” einstellen:

Nun speichern wir die TableView-Definition ab und schliessen sie. Immer noch im neu erstellten Übersichts-Proto, erstellen wir ein neues Relationen-Feld und kümmern uns um die Einstellungen, welche im folgenden Screenshot rot markiert sind:

1) Wir beschriften das neue Relationen-Feld mit dem Filterkriterium. Dies dient nur uns als Gedächtnisstütze, da das Relationen-Feld für Benutzer versteckt sein wird.

2) Das Feld ist “berechnet” – wir wollen es ja später mittels Script-Library programmatisch setzen.

3) Da die Daten in diesem Relationen-Feld für das User-Interface irrelevant sind, setzen wir die Darstellungspriorität auf 0.

4) Hier muss der Proto des Filterkriteriums ausgewählt werden, damit dieses auch in den Auswahlmöglichkeiten des Relationen-Feldes enthalten sein wird.

5) Dann müssen wir uns noch die Card-ID dieser Relationen-Feld-Definition merken, welche wir mittels Klick auf “Diese Card” und “Zeige Eigenschaften” herausfinden.

Ganz zum Schluss geht es endlich ans Programmieren. Wir öffnen die eingangs erstellte Script-Library und kopieren den untenstehenden Code hinein. Anzupassen sind lediglich die ersten beiden Variablen-Zuweisungen, welche durch die Card-ID der Relationen-Feld-Definition und der Card-ID des Filterkriteriums ersetzt werden müssen.

function script_library() {
	    // Card-ID der Relationen-Feld-Definition
	    var card_id_relationen_feld = "5b1e87ac-cf4a-4243-8199-7be687a0146b";
	    
	    // Card-ID des Filterkriteriums
	    var card_id_filter_kriterium = "754be2fd-1051-4e6c-9ab2-0f2314836e3d";
	    
	    // Filterkriterium in das Relationen-Feld setzen und dieses verstecken
	    function on_render(card, before_first_save) {
	        card.set_element_value(card_id_relationen_feld, card_id_filter_kriterium, false);
	        var design_element_org = card.get_design_element(card_id_relationen_feld);
	        if(typeof(design_element_org) === 'object') {
	        design_element_org.hidden_in_client = true;
	        }
	    }
	    
	    // Übergabe der Render-Funktion an Protogrid
	    return {
	    on_render: on_render
	    };
	}

Jetzt sind wir fertig – unsere Protogrid Applikation wurde erfolgreich um eine benutzerdefinierte Funktionalität erweitert. Setzen Sie nun Ihre eigenen Ideen mit den unzähligen weiteren Schnittstellen und Funktionen von Script-Librarys um und teilen Sie hier Ihre Erfahrungen!

Endlich da: Release 1.0!

Michel Müller am 2015-03-05

Was ist neu?

iOS-Rollout
App-Entwickler können jetzt mittels Import|Export ein zip-File mit dem Protogrid-iOS-Client downloaden. Weitere Infos sind im Readme zu finden. Der Protogrid-Code wird kompiliert/uglified ausgerollt und funktioniert in Simulator und auf Device.

ScriptLibrary-Verbesserungen
Es wird jetzt beim Erstellen einer ScriptLibrary eine Beispiel-Library reinkopiert, die beim Schreiben/Lernen hilft.

Das Syntax-Highlighting wurde gefixt.

Wir haben eine neue API on_render(card, bevore_first_save), die Code vor dem Anzeigen ausführt. Damit können Standard-Werte abgefüllt werden und Computed-Felder berechnet werden.

Sprachen-Unterstützung
Benutzer können alle Sprachen in allen regionalen Varianten auswählen und eine Liste machen mit Ihrer eigenen Priorisierung.

App-Entwickler erstellen innerhalb der App ebenfalls eine Liste aller durch die App unterstützten Sprachen. Diese wird beim Speichern der Application Properties abgeglichen mit dem zugrundeliegenden Multilanguage Proto: Pro Sprache wird dort ein Textfeld eingerichtet. Alle Multilanguage-Cards (=momentan Felder-Labels, Hilfetexte, App-Titel) bekommen dann diese Felder und können somit übersetzt werden.

Protogrid macht jeweils ein Matching aus den User-Settings auf die verfügbaren Daten aus den Multilanguage Cards. Dabei werden regionale Varianten bevorzugt, falls vom User ausgewählt, andernfalls wird auf die Hauptsprache zurückgefallen. Dies gilt sogar für komplexe Fälle wie Chinesisch, das im Locale Hauptsprache, Schrift und regionale Variante hat (zi-Hant-HK z.B.).

Für das Interface unterstützen wir momentan Englisch, Deutsch und Spanisch. Es gibt noch ein paar Lücken. Falls Ihr selber was findet, bitte meldet es. D.h. Apps können zwar alle Sprachen unterstützen, für die Systemtexte fallen wir jedoch auf die unterstützten Sprachen zurück mit dem gleichen Matching wie oben beschrieben. Systemtexte sind übrigens gleich wie in den Apps übersetzt – mittels Multilanguage Cards in einer versteckten System-App.

Datums-Format wird separat eingestellt auf dem Userprofil. Im Moment wird Englisch und Deutsch unterstützt, viele weiteren werden folgen (wir verwenden eine Standardkomponente, die wir nur einbinden müssen).

https
Kommunikation mit Webbrowser und iPhone-Clients jetzt verschlüsselt.

Und bei all diesen Vorteilen ist Protogrid sogar kostenlos.

Protogrid ist kostenlos für bis zu zwei Anwender und eine beliebige Anzahl von Applikationen.