SlideShare ist ein Scribd-Unternehmen logo
1 von 117
Downloaden Sie, um offline zu lesen
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
The Power of JavaScript
Marcel Moré
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Marcel Moré
Gefahrensucher
• überlebt seit 23 Jahren in
der FileMaker-Hölle
• Cross-Plattform Erfahrung
• Abenteuer in
17 subtropischen
Programmiersprachen
• unterwegs auf Debugging-
Expedition in exotischer
Scripting-Umgebung
• auf zu neuen Ufern in
bislang unbekanntes
Terrain...
@mmore
The Power of JavaScript
The Power of JavaScript
• dies ist kein JavaScript Programmierkurs!
• kurzer Überblick zur Sprache
• warum JavaScript für FileMaker Entwickler interessant ist
• typische Szenarien für den Einsatz von JavaScript in FileMaker
• wie lässt sich JavaScript konkret in FileMaker einbinden?
• Praxis-Beispiel: Lösung des TSP (Traveling Salesman Problem)
Was Euch in den nächsten 90 Minuten erwartet:
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
JavaScript als Sprache
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Was ist JavaScript?
• JavaScript (kurz JS) ist eine Skriptsprache, die ursprünglich für
dynamisches HTML in Webbrowsern entwickelt wurde, um
Benutzerinteraktionen auszuwerten, Inhalte zu verändern,
nachzuladen oder zu generieren und so die Möglichkeiten von
HTML und CSS zu erweitern.
• Heute findet JavaScript auch außerhalb von Browsern Anwendung,
so etwa auf Servern und in Microcontrollern.
• Der als ECMAScript standardisierte Sprachkern von JavaScript
beschreibt eine dynamisch typisierte, objektorientierte, aber
klassenlose Skriptsprache.
• Sie wird allen objektorientierten Programmierparadigmen unter
anderem auf der Basis von Prototypen gerecht. In JavaScript lässt
sich objektorientiert und sowohl prozedural als auch funktional
programmieren.
Quelle:  h(ps://de.wikipedia.org/wiki/JavaScript
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Was ist JavaScript?
• JavaScript (kurz JS) ist eine Skriptsprache, die ursprünglich für
dynamisches HTML in Webbrowsern entwickelt wurde, um
Benutzerinteraktionen auszuwerten, Inhalte zu verändern,
nachzuladen oder zu generieren und so die Möglichkeiten von
HTML und CSS zu erweitern.
• Heute findet JavaScript auch außerhalb von Browsern Anwendung,
so etwa auf Servern und in Microcontrollern.
• Der als ECMAScript standardisierte Sprachkern von JavaScript
beschreibt eine dynamisch typisierte, objektorientierte, aber
klassenlose Skriptsprache.
• Sie wird allen objektorientierten Programmierparadigmen unter
anderem auf der Basis von Prototypen gerecht. In JavaScript lässt
sich objektorientiert und sowohl prozedural als auch funktional
programmieren.
Quelle:  h6ps://de.wikipedia.org/wiki/JavaScript
früher:  Spielkram  für  Webseiten
heute:  ausgerei@e  
Programmiersprache
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Besonderheiten
• Kontrollstrukturen (if/else; switch; while; for; for…in)
• Variablen, Arrays
• Funktionen (vollständig objektorientiert)
• Objekte (mit Eigenschaften und Methoden)
• objektorientierte Vererbung
• Delegationsprinzipien; Fehlerbehandlung mit Exceptions
• enge Anbindung an das DOM (Document Object Modell)
im modernen WEB-Standard, u.a. mit Event-Handlern (Trigger)
kurz:  im  Vergleich  zu  FileMaker-­‐Script  
weitaus  mächAger
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Vorteile
• einfach zu erlernende Grundprinzipien
• ausgereifte objektorientierte Sprache mit vielen mächtigen Konstrukten
• leistungsfähige dynamische Dokumenten-Steuerung
im direkten Zugriff auf das DOM inkl. HTML, CSS, SVG
• verteilte Anwendungen (Code extern nachladbar)
• Client- oder Server-basierte Systemarchitekturen
kurz:  mit  wenig  MiBeln  viel  erreichen  
in  unterschiedlichsten  Szenarien
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
weitere Vorteile
• unendliche Anzahl von Tutorials und Beispielen
im WEB frei verfügbar
• zahlreiche ausgereifte FrameWorks und Bibliotheken
(jQuery, Protoype, AngularJS, backbone.js, YUI, Dojo, u.ä.)
• öffentliche Repositories mit riesigen Code-Sammlungen (GitHub, u.ä.)
• große Anzahl von fertigen Anwendungen,
die sich größtenteils an eigene Bedürfnisse adaptieren lassen
(GUI, Datenanalyse, Visualisierung, …)
• viele APIs für Apps, WEB- und Cloud-Anwendungen
(Google Maps, Amazon AWS, MS Office, Acrobat, SharePoint,
Dropbox, Evernote, FaceBook, Twitter, ...)
kurz:  überall  präsent,  viele  Werkzeuge
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Die beliebtesten Programmiersprachen
JavaScript  #1gemäß  Ihrer  relaAven  Popularität  auf  GitHub
Quelle:  h(ps://github.com/blog/2047-­‐language-­‐trends-­‐on-­‐GitHub
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Warum JavaScript
in FileMaker nutzen?
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
JavaScript für FileMaker
• mittels spezifischer Sprachkonstrukte und flexibler Objekt-Strukturen
lassen sich manche Aufgaben sehr viel einfacher lösen
• teilweise wesentlich höhere Performance erreichbar als in FileMaker
• viele vorgefertigte Lösungsbausteine für zahlreiche Anwendungsfälle
frei verfügbar (von einfachen Steuerungselementen bis zu kompletten
Anwendungen)
• keine zusätzlichen Plugins erforderlich – JavaScript lebt direkt im
Webviewer
kurz:  wie  Plugins,  nur  ohne  Plugins...
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
typische Szenarien
• dynamische Schalter, Regler, Anzeigeelemente
• Widgets
• dynamische Tabellen
• Belegungspläne
• Kalender
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
komplexe GUIs
h(p://jqueryui.com/
h(p://justgage.com/
jqxGauge
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
komplexe GUIs
Quelle:  h(p://fullcalendar.io/
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Visualisierung
• Charts
• Diagramme
• dynamische Graphen
• interaktive Diagramme
• Analysen
• 3D-Grafik
• http://www.flotcharts.org/
• http://www.chartjs.org/
• http://d3js.org/
• http://sigmajs.org/
• http://mbostock.github.io/protovis/
• http://p5js.org/
• http://threejs.org/
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Visualisierung
Quelle:  h(p://www.flotcharts.org/
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Visualisierung
Quelle:  h(p://www.flotcharts.org/
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Visualisierung
Quelle:  h(p://www.flotcharts.org/
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Visualisierung
Quelle:  h(p://sigmajs.org/
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Visualisierung
Quelle:  h(p://mbostock.github.io/protovis/
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Visualisierung
Quelle:  h(ps://www.jasondavies.com/parallel-­‐sets/
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Number-Crunching
• Analysen
• statistische Auswertungen
• Spezial-Algorithmen
• http://jstat.github.io/
• http://simplestatistics.org/
• https://github.com/pseudosavant/psMathStats
• https://qiao.github.io/PathFinding.js/visual/
• http://parano.github.io/GeneticAlgorithm-TSP/
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Demo
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Wo liegen die
Herausforderungen?
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Herausforderungen
• sich aufraffen, über den Tellerrand
der FileMaker-Welt zu schauen!
• Fallstricke bei der Implementierung
im Webviewer
• Datenübergabe zu JavaScript
bidirektional in FileMaker einbinden
• die richtigen Bausteine finden
(Recherche: Repositories, Frameworks, Libs)
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Einbindung in FileMaker
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
JavaScript in FileMaker
• Wo liegt der Code?
• Wie wird das JavaScript gestartet?
• Datenübergabe
• von FileMaker an das JavaScript
• vom JavaScript an FileMaker
• weitere Möglichkeiten und Alternativen
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Wo liegt der Code?
• Webviewer
• eingebettet in HTML
• wird ausgeführt, sobald der Webviewer im Layout dargestellt wird
<html>
<body>
<script  type="text/javascript">
document.write("Hello  World");
</script>
</body>
</html>
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Wo liegt der Code?
• URL mit Verweis auf
HTML-Dokument
<html>
<body>
<script  type="text/javascript">
document.write("Hello  World");
</script>
</body>
</html>
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Wo liegt der Code?
• URL mit Verweis auf
HTML-Dokument
• Data URL kann auf
Variable verweisen
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Wo liegt der Code?
• URL mit Verweis auf
HTML-Dokument
• Data URL kann auf
Variable verweisen
"data:text/html,"  &  $$JavaScript
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Wo liegt der Code?
• Warum ist es nützlich, den Code in einer Variable zu haben?
• Datenübergabe!
Datenübergabe
FileMaker                        JavaScript
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Datenübergabe
• Code liegt als Text in einer Variable vor
• Daten können als Platzhalter direkt in den Code eingebettet werden
• Austauschen ( $$JavaScript; "<meinwert>"; "Hallo Welt!" )
<html>
<body>
<script  type="text/javascript">
document.write("<meinwert>");
</script>
</body>
</html>
<html>
<body>
<script  type="text/javascript">
document.write("Hallo  Welt!");
</script>
</body>
</html>
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Datenübergabe
• Code-Template Beispiel:
<html>
<body>
<script  type="text/javascript">
/*  -­‐-­‐-­‐-­‐-­‐  INPUT  PARAMETER  -­‐-­‐-­‐-­‐-­‐  */
myNumber  =  <myNumber>;
myString  =  "<myString>";
myArray  =  [<myArray>];
/*  -­‐-­‐-­‐-­‐-­‐  DO  WHATEVER  -­‐-­‐-­‐-­‐-­‐  */
document.write(  myString  );
</script>
</body>
</html>
Datenübergabe
FileMaker                        JavaScript
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Datenübergabe
• Ergebnis als Parameter in Script-Aufruf
per FMP-URL Schema
• Ergebnis in der Zwischenablage
• Ergebnis direkt in den Inhalt des Webviewers
schreiben und dort auslesen*
• Ergebnis im 'Fenstertitel' des Webviewers*
*Plugin  erforderlich
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Datenübergabe
Ergebnis als Parameter in Script-Aufruf per FMP-URL Schema
• JavaScript:
var p = "Mein Ergebnis";
var url = "fmp://$/MeineDB?script=LiesErgebnis&param=" + p ;
window.location = url ;
• FileMaker:
–> Script "LiesErgebnis [ p ]"
Variable setzen [ $Ergebnis ; Hole ( ScriptParameter ) ]
• Hinweise: Erst ab FileMaker Version 13.0v2 sinnvoll verwendbar.*
Unter Windows können nur 2048 Zeichen übergeben werden.
*Quelle:  h(p://isolufons-­‐inc.com/2014/04/05/fmp-­‐url-­‐scheme-­‐and-­‐the-­‐13-­‐0v2-­‐improvement/
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Datenübergabe
Ergebnis in die Zwischenablage schreiben
• JavaScript: window.clipboardData.setData( 'Text' , "Mein Ergebnis" );
• FileMaker: Einfügen [ Auswahl; Tabelle::Ergebnis ]
• Hinweis: Als Workaround unter Windows geeignet, wenn Ergebnisse mit
mehr als 2048 Zeichen übergeben werden sollen*
*Quelle:  h(p://www.seedcode.com/filemaker-­‐webviewer-­‐javascript-­‐calculafon-­‐engine/
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Datenübergabe
Ergebnis direkt in den Webviewer schreiben und dort auslesen
• JavaScript: document.write( "Mein Ergebnis" );
• FileMaker: Variable setzen [ $Ergebnis;
LiesLayoutobjektAttribut ( "Webviewer" ; "content" ) ]
• Problem: Aktueller Inhalt des Webviewers wird nicht erkannt,
stattdessen wird der Sourcecode zurück geliefert!
• Alternative: Auslesen über Funktion im MBS-Plugin
• Variable setzen [ $Ergebnis;
MBS( "WebView.GetPlainText"; "Webviewer" ) ]
Doku:  h(p://www.mbsplugins.eu/WebViewGetPlainText.shtml
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Datenübergabe
Ergebnis direkt in den Webviewer schreiben und dort auslesen
• JavaScript: document.write( "Mein Ergebnis" );
• FileMaker: Variable setzen [ $Ergebnis;
MBS( "WebView.GetPlainText"; "Webviewer" ) ]
Doku:  h(p://www.mbsplugins.eu/WebViewGetPlainText.shtml
Vorteil:  für  große  Datenmengen  gut  
geeignet,  kommt  problemlos  mit  
mehreren  Megabytes  Text  zurecht.
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Datenübergabe
Ergebnis in den 'Fenstertitel' des Webviewers schreiben
• mit Bordmitteln nicht möglich
• Alternative: Auslesen über Funktion im MBS-Plugin
• JavaScript: document.title = "Mein Ergebnis";
• FileMaker: Variable setzen [ $Ergebnis;
MBS( "WebView.GetTitle"; "Webviewer" ) ]
Doku:  h(p://www.mbsplugins.eu/WebViewGetTitle.shtml
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Weitere Möglichkeiten
• URL Aufruf zu externem Script
• MBS Plugin
• BaseElements Plugin
• Node.js
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
externer URL Aufruf ➊
• JavaScript ist in einem HTML-Dokument
unter einer URL erreichbar:
http://www.server.de/script.html?p=MeinWert
• Parameterübergabe in der URL
• Werte müssen codiert sein:
LiesAlsURLVerschlüsselt ( MeinWert )
• mehrere Werte trennen:
script.html?a=1&b=2&c=3
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
externer URL Aufruf ➋
• JavaScript: Parameter aus der URL lesen
funcfon  getUrlVars()  {
        var  vars  =  {};
        var  parts  =  window.locafon.href.replace(  /[?&]+
([^=&]+)=([^&]*)/gi,        
        funcfon(  m,  key,  value  )  {
                vars[  key  ]  =  unescape(  value  );
        }  );
        return  vars;
}
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
externer URL Aufruf ➌
• JavaScript Ergebnis:
document.write( "Mein Ergebnis" );
• FileMaker:
Aus URL einfügen [ ... Tabelle::Ergebnis ; URL ]
?
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
externer URL Aufruf ➌
• JavaScript Ergebnis:
document.write( "Mein Ergebnis" );
• FileMaker:
Aus URL einfügen [ ... Tabelle::Ergebnis ; URL ]
geht  nicht:  Aus  URL  einfügen
liefert  staBdessen  den  Quelltext!
Weil  keine  Browser-­‐Instanz  als  
Interpreter  dazwischen  liegt...
!
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
externer URL Aufruf ➌
• JavaScript Ergebnis:
document.write( "Mein Ergebnis" );
• FileMaker:
Aus URL einfügen [ ... Tabelle::Ergebnis ; URL ]
• Variable setzen [ $Ergebnis;
MBS( "WebView.GetPlainText"; "Webviewer" ) ]
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
externer URL Aufruf ➌
• JavaScript Ergebnis:
document.write( "Mein Ergebnis" );
• externe URL im Webviewer anzeigen
• Variable setzen [ $Ergebnis;
MBS( "WebView.GetPlainText"; "Webviewer" ) ]
aber:  Webviewer  erfüllt  den  Job...
Zum  Auslesen  ist  dann  wieder
MBS-­‐Plugin  erforderlich !
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
MBS Plugin
• MBS( "WebView.RunJavaScript";
WebViewerRef; Javascript )
• MBS( "WebView.RunJavaScriptReturnTitle";
WebViewerRef; Javascript )
• trotz Kapselung in Funktion ist ein Webviewer
für die Darstellung erforderlich
Doku:  h(p://www.mbsplugins.eu/WebViewRunJavaScript.shtml
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
BaseElements Plugin
• BE_EvaluateJavaScript ( text )
• verwendet eingebettete JavaScript-Engine
„Duktape“ –> http://duktape.org/
• direkt in Formeln anwendbar
kein Webviewer erforderlich; keine GUI(!)
• derzeit noch im Beta-Stadium (v3.1)
Doku:  h(ps://www.geisfnteracfve.com/2014/12/28/baseelements-­‐plugin-­‐gets-­‐javascript/
Doku:  h(p://www.goya.com.au/blog/baseelements-­‐plugin-­‐updated-­‐31-­‐adds-­‐smtp-­‐and-­‐more
Doku:  h(ps://baseelementsplugin.zendesk.com/hc/en-­‐us/arfcles/204528287-­‐BE-­‐EvaluateJavaScript
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Node.js
• Java-Script Server
https://nodejs.org/
• hohe Performance, Parallel-Verarbeitung,
gut skalierbar, für zahlreiche Plattformen
verfügbar (OSX, Win, Linux)
• Aufruf über Aus URL einfügen möglich
oder Aufruf über Webviewer (wie externe URL)
Doku:  h(p://www.nodebeginner.org/
Info:  h(p://blog.modulus.io/absolute-­‐beginners-­‐guide-­‐to-­‐nodejs
Info:  h(ps://www.airpair.com/javascript/node-­‐js-­‐tutorial
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Fallstricke
• FileMaker-Befehle zum Auslesen des
Webviewers verhalten sich nicht wie erwartet:
LiesLayoutobjektAttribut und
Aus URL einfügen liefern Quelltext statt
sichtbaren Inhalt
• unter bestimmten Bedingungen werden
externe JavaScript-Referenzen (eingebundene
Bibliotheken) nicht geladen
• Same-Origin-Policy
• Cross-Origin Resource Sharing
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Fallstricke
• wenn WebViewer Inhalte zu oft nacheinander
geladen werden, stürzt FileMaker u.U. mit
einem Speicherüberlauf ab!
• z.B. Schleife über tausende von Datensätzen
• Workaround: alle Datensätze einsammeln und
als Parameter in einem Aufruf übergeben;
Ergebnis entsprechend zurückliefern und
wieder zerlegen
= 1 Aufruf berechnet 10.000 Datensätze
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Fazit
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Welche Technik wofür?
Webviewer +
FMP URL
Callback
Webviewer +
MBS Plugin
BaseElements
Plugin
Node.js
GUI
Widgets ✔ ✔
GUI
Interaktion ✔ ✔
Number-
Crunching ✔ ✔ ✔
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
persönlicher Eindruck
• Durch die FileMaker-Brille betrachtet, gleicht
manches einem Drahtseilakt
• GUI-Erweiterungen sind meist schnell
umgesetzt mit sehr flexibler Interaktivität
• schiere Masse an verfügbaren JS-Bibliotheken
ist ein starkes Argument
• komplexe Anwendungen erfordern manchen
Workaround, aber erweitern den FileMaker-
Horizont enorm
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
persönlicher Eindruck
• unterm Strich eröffnen sich durch den
gezielten Einsatz von JavaScript in FileMaker
völlig neue Welten
• gilt umso mehr in Kombination mit SVG
JavaScript  +  SVG
=  Dreamteam!
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Praxis-Beispiel
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Die Aufgabe
B-­‐35
B-­‐25
B-­‐15
B-­‐5
LagerplätzeReihenfolge  auf  Beleg
Reihenfolge  der  Picking-­‐Route  im  Lager
Laufstrecke
99  m
Reihenfolge  
vom  Beleg
geht  das  evtl.  
noch  besser?
54  m
Laufstrecke
Op7mierung
99  m
Reihenfolge  
vom  Beleg
op7mierte  
Reihenfolge
46  %
280  m 181  m
Laufstrecke
Reihenfolge  
vom  Beleg
op7mierte  
Reihenfolge
Op7mierung
35  %
784  m 458  m
Laufstrecke
Reihenfolge  
vom  Beleg
op7mierte  
Reihenfolge
Op7mierung
42  %
74  m 33  m
Laufstrecke
Reihenfolge  
vom  Beleg
op7mierte  
Reihenfolge
Op7mierung
55  %
70.000Belege pro Jahr
Op#mierung  würde  sich  schon  lohnen...
8 MioMeter Laufstrecke
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Wo ist das Problem?
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
kann man nicht einfach alle
Kombinationen ausprobieren?
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
TSP - Traveling Salesman Problem
• beschäftigt seit über 80 Jahren Generationen
von Mathematikern
• »NP-schweres« Problem
• für n Knoten gibt es (n – 1)!/2 Varianten
• Berechnung würde einfach zu lange dauern!
Info:  h(p://www-­‐i1.informafk.rwth-­‐aachen.de/~algorithmus/algo40.php
Info:  h(p://www.math.uwaterloo.ca/tsp/
Info:  h(ps://de.wikipedia.org/wiki/Problem_des_Handlungsreisenden
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
TSP - Traveling Salesman Problem
Knoten Varianten Laufzeit
3 1 
 1
 msec
4 3 
 3
 msec
5 12 
 6
 msec
6 60 
 60
 msec
7 360 
 360
 msec
8 2.520 
 2,5
 sec
9 20.160 
 20
 sec
10 181.440 
 3
 min
11 1.814.400 
 0,5
 Stunden
12 19.958.400 
 5,5
 Stunden
13 239.500.800 
 2,8
 Tage
14 3.113.510.400 
 36
 Tage
15 43.589.145.600 
 1,3
 Jahre
16 653.837.184.000 
 20
 Jahre
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Wie soll das in FileMaker
lösbar sein?
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Ist es überhaupt lösbar?
?
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
laut Recherchen gibt es
ein paar ausreichend gute
Näherungsverfahren...
!
githubjavascript tsp solver
Quelle:  h(ps://github.com/parano/GenefcAlgorithm-­‐TSP
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Demo
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Das sieht
vielversprechend aus....
Hey,  wir  haben  gerade  gelernt,  
wie  man  JavaScript  in
FileMaker  nutzen  kann!
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Was am Ende dabei
herauskam...
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
➊ Pathfinder in JavaScript
• graphische Darstellung des Lagers in SVG
• effizienter Pathfinder Algorithmus aus frei
verfügbaren Quellen
• automatisierte Codierung des Lagermodells
für die Anwendung der TSP-Algorithmen
1000100010101001001001
0010010011101010101010
0100100101110101011101
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
➋ TSP Solver in JavaScript
• eigene Bibliothek, die mit beliebigen
Algorithmen als Plugins ergänzt werden kann
• 2 effiziente Algorithmen aus frei verfügbaren
Quellen:
• Genetischer Algorithmus
• Ameisen Algorithmus
• Jede Menge Erkenntnisse
auf dem Weg zur Lösung!
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Die Lösung
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Lösungsweg
• Datenmodellierung in FileMaker
• Darstellung des Hallengrundriss → SVG
• Ermittlung der Wegteilstrecken → JavaScript
• Berechnung der Routen → JavaScript
• Einbindung der Ergebnisse in FileMaker
• Zusatznutzen
X,  Y,  Breite,  Tiefe,  
Ausrichtung
Rechteck-­‐
Koordinaten  für  
SVG-­‐Template
Rechteck-­‐
Koordinaten  
Wände
Rechteck-­‐
Koordinaten  
Türen
Grundriss
als  SVG
SVG-­‐Templates
SVG  im  
Webviewer
Grundriss
Regale
Wegpunkte
graphische  RepräsentaAon  
der  Regal-­‐Datensätze
jederzeit  aktualisierbar!
Script  erzeugt
1.  Grundriss  als  Grafik
2.  Routentabelle  über  
JavaScript
Grundriss  Grafik  für  
JavaScript  vorbereiten
SVG  Quelltext  
erzeugen  aus  
Datensätzen
SVG  in  
Webviewer  
anzeigen
Webviewer  als  
JPG  in  Medienfeld
per  MBS  Plugin
JPG  als  Base64  
umwandeln
für  JavaScript
1
2
3
4
5
2
1
3 4 5
JavaScript  bekommt  die  
Regal-­‐KombinaAonen  
und  findet  für  alle  
Einträge  die  kürzeste  
Route
per  Pixel-­‐Suche
Jump  Point  Search  -­‐  Algorithmus
Quelle:  h(p://zerowidth.com/2013/05/05/jump-­‐point-­‐search-­‐explained.html
Demo:  h(p://qiao.github.io/PathFinding.js/visual/
Start Ziel
alle  Verbindungen
von  Regal  zu  Regal
durch  
Pathfinder-­‐
Algorithmus  
automaAsch  
ermiBelt
inkl.  Längen
Routentabelle
mit  allen  
Verbindungen  und  
Strecken-­‐Längen
von  Regal  zu  Regal
=  56.953  
Datensätze
für  338  Regale
Routeneintrag
mit  Verbindung  
von  Regal  zu  Regal
Regale
Koordinaten
für  Pfad
in  SVG-­‐Darstellung
Länge
Beleg  nach  
Posi.onen  
sor.ert
hier  findet  die  »Magie«  sta;!
Beleg  nach  
Routen-­‐
Op.mierung  
sor.ert
hier  findet  die  »Magie«  sta;!
Knotenpunkte  für  Regale  werden  übergeben
Als  Ergebnis  kommen  Knoten  sorAert  zurück
JavaScript  
berechnet  
unterschiedliche  
Algorithmen
JavaScript  Template
in  der  FileMaker  
Datei
GeneAc  
Algorithmus
als  minified  
JavaScript
/* Genetic - minifed */
! ! var Route_Genetic=function(){function H(c,a){var b=[];c.forEach(function(c)
{b.push(a[c])});return b}function h(c){return parseInt(Math.random()*c)}function A(c,a,b)
{solution=[];a=g[a].clone();b=g[b].clone();var d,f,e=a[h(a.length)];for(solution.push(e);
1<a.length;)d=a[c](a.indexOf(e)),f=b[c](b.indexOf(e)),a.deleteByValue(e),b.deleteByValue
(e),e=q[e][d]<q[e][f]?d:f,solution.push(e);return solution}function B(c){w++;do m=h
(c.length-2),n=h(c.length);while(m>=n);for(var a=0,b=n-m+1>>1;a<b;a++)c.swap(m+
a,n-a);return c}function C(c){w++;var a,b;do a=h(c.length>>1),b=h(c.length);while
(a>=b);var d=c.slice(0,a);a=c.slice(a,b);c=c.slice(b,c.length);return a.concat(d).concat
(c).clone()}function D(){for(var c=0;c<g.length;c++){for(var a=p,b=c,d=g[c],f=q[d[0]][d
[d.length-1]],e=1;e<d.length;e++)f+=q[d[e]][d[e-1]];a[b]=f}c=0;a=p[0];for(b=1;b<g.length;b+
+)p[b]<a&&(a=p[b],c=b);r={bestPosition:c,bestValue:a};if(void 0===t||t>r.bestValue)s=g
[r.bestPosition].clone(),t=r.bestValue}function I(c){var a;for(a=0;a<
k.length;a++)if(c<=k[a])return a}function J(c){for(var a=[],b=0;b<c;b++)a.push(b);return
a.shuffle()}var x=100,l=30,y,E,F,w,q,t,s,G,r,g,p,u,k,z;Array.prototype.clone=function()
{return this.slice(0)};Array.prototype.shuffle=function(){for(var c,a,b=this.length-1;b;c=h
(b),a=this[--b],this[b]=this[c],this[c]=a);return this};Array.prototype.indexOf=function(c){for
(var a=0;a<this.length;a++)if(this[a]===c)return a};Array.prototype.deleteByValue=function
(c){c=this.indexOf(c);this.splice(c,1)};Array.prototype.next=
function(c){return c===this.length-1?this[0]:this[c+1]};Array.prototype.previous=function(c)
{return 0===c?this[this.length-1]:this[c-1]};Array.prototype.swap=function(c,a){if(!
(c>this.length||a>this.length||c===a)){var b=this[c];this[c]=this[a];this[a]
=b}};Array.prototype.roll=function(){for(var c=h(this.length),a=[],b=c;b<this.length;b++)
a.push(this[b]);for(b=0;b<c;b++)a.push(this[b]);return a};Array.prototype.reject=function(c)
{return $.map(this,function(a){return 0>$.inArray(a,c)?a:null})};return{init:function(c,
a,b){y=c;E=a;F=b;z=H(y,F)},run:function(){w=0;t=void 0;s=[];G=0;r;g=[];p=Array(l);u=Array
(l);k=Array(l);q=Array(z.length);var c=y,a=E,b=c.length,d,f,e,h,v=[];for(d=0;d<b;d++)if(e=c
[d],void 0!==a[e])for(v[d]=[],f=0;f<b;f++)h=c[f],e!=h&&void 0!==a[h]&&(v[d][f]=a[e]
[h]),e==h&&void 0!==a[h]&&(v[d][f]=0);q=v;for(c=0;c<l;c++)g.push(J(z.length));D();for
(c=0;c<=x;c++){G++;a=[];a.push(g[r.bestPosition]);a.push(B(s.clone()));a.push(C(s.clone
()));a.push(s.clone());for(b=0;b<p.length;b++)u[b]=1/p[b];for(b=d=
0;b<u.length;b++)d+=u[b];for(b=0;b<k.length;b++)k[b]=u[b]/d;for(b=1;b<k.length;b++)k[b]
+=k[b-1];for(b=4;b<l;b++)a.push(g[I(Math.random())]);g=a;a=[];for(b=0;b<l;b++).
9>Math.random()&&a.push(b);a.shuffle();b=0;for(d=a.length-1;b<d;b+=2)f=a[b],e=a[b
+1],child1=A("next",f,e),child2=A("previous",f,e),g[f]=child1,g[e]=child2;for(a=0;a<l;a++).
01>Math.random()&&(.5<Math.random()?g[a]=C(g[a]):g[a]=B(g[a]),a--);D()}return
{distance:t,route:s}},setPopulation:function(c){l=c},setIterations:function(c)
{x=c},getPopulation:function(){return l},
getIterations:function(){return x}}}();
Größe:
nur  3  Kilobyte
Zusatznutzen:
graphische  
Repräsentafon  der  
Regal-­‐Datensätze
jederzeit  
aktualisierbar
interakfve  
Anwendungen  
möglich
Darstellung  als  GUI  
nutzen!
interakAve  
Lager-­‐
Auswertung  
als  Heatmap
Klick  aufs  
Regal  zeigt  
Zeitreihe  und  
Durchsatz-­‐
Zahlen
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Fazit
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Fazit Praxis-Beispiel
• Die angewandten Methoden wären aufgrund
ihrer Komplexität mit FileMaker Bordmitteln
nicht abbildbar gewesen
• Die Algorithmen zur Lösung der Aufgabe
konnten als fertige Bausteine genutzt werden
• Durch die Verwendung von JavaScript ergab
sich eine einfache und effiziente Möglichkeit
für die Einbindung der Algorithmen in die
eigene Lösung
Neue Horizonte
The Power of JavaScript
neugierig
geworden...?
Danke  für
Euer  Interesse
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Download
• Vortragsfolien
• Demo-Datei JavaScript in FileMaker
• http://blog.marcel-more.de/
• Konferenz-Server
@mmore
Marcel Moré
The Power of JavaScript
FileMaker Konferenz 2015 Hamburg
www.filemaker-konferenz.com
Vielen Dank unseren Sponsoren
Danke für das Bewerten dieses Vortrages

Weitere ähnliche Inhalte

Was ist angesagt?

FMK2015: Strukturierte Namensgebung als Basis für komplexe Programmierung by ...
FMK2015: Strukturierte Namensgebung als Basis für komplexe Programmierung by ...FMK2015: Strukturierte Namensgebung als Basis für komplexe Programmierung by ...
FMK2015: Strukturierte Namensgebung als Basis für komplexe Programmierung by ...Verein FM Konferenz
 
FMK2017 - Die Anker Boje Methode by Gerhard Schwingenschlögl
FMK2017 - Die Anker Boje Methode by Gerhard SchwingenschlöglFMK2017 - Die Anker Boje Methode by Gerhard Schwingenschlögl
FMK2017 - Die Anker Boje Methode by Gerhard SchwingenschlöglVerein FM Konferenz
 
FMK2016 - Volker Krambrich - FileMaker Cloud - Amazon Web Services
FMK2016 - Volker Krambrich - FileMaker Cloud - Amazon Web ServicesFMK2016 - Volker Krambrich - FileMaker Cloud - Amazon Web Services
FMK2016 - Volker Krambrich - FileMaker Cloud - Amazon Web ServicesVerein FM Konferenz
 
FMK2016 - Longin Ziegler - Schritt für Schritt zum eigenen Kalender
FMK2016 - Longin Ziegler - Schritt für Schritt zum eigenen KalenderFMK2016 - Longin Ziegler - Schritt für Schritt zum eigenen Kalender
FMK2016 - Longin Ziegler - Schritt für Schritt zum eigenen KalenderVerein FM Konferenz
 
FMK2015: Reguläre Ausdrücke by Arnold Kegebein
FMK2015: Reguläre Ausdrücke by Arnold KegebeinFMK2015: Reguläre Ausdrücke by Arnold Kegebein
FMK2015: Reguläre Ausdrücke by Arnold KegebeinVerein FM Konferenz
 
FMK2015: FileMaker Grundlagen Felder Tabellen Beziehungen by Longin Ziegler
FMK2015: FileMaker Grundlagen Felder Tabellen Beziehungen by Longin ZieglerFMK2015: FileMaker Grundlagen Felder Tabellen Beziehungen by Longin Ziegler
FMK2015: FileMaker Grundlagen Felder Tabellen Beziehungen by Longin ZieglerVerein FM Konferenz
 
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang Wunderlich
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang WunderlichFMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang Wunderlich
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang WunderlichVerein FM Konferenz
 
FMK2016 - Holger Darjus - Das Transistor-Prinzip
FMK2016 - Holger Darjus - Das Transistor-PrinzipFMK2016 - Holger Darjus - Das Transistor-Prinzip
FMK2016 - Holger Darjus - Das Transistor-PrinzipVerein FM Konferenz
 
FMK2016 - Thomas Hirt- UML für FileMaker Entwickler
FMK2016 - Thomas Hirt- UML für FileMaker EntwicklerFMK2016 - Thomas Hirt- UML für FileMaker Entwickler
FMK2016 - Thomas Hirt- UML für FileMaker EntwicklerVerein FM Konferenz
 
FMK2016 - Russell Watson - Überleben im Design und Stile Dschungel
FMK2016 - Russell Watson - Überleben im Design und Stile DschungelFMK2016 - Russell Watson - Überleben im Design und Stile Dschungel
FMK2016 - Russell Watson - Überleben im Design und Stile DschungelVerein FM Konferenz
 
FMK2016 - Christian Schmitz - Einblick in das FileMaker SDK für iOS
FMK2016 - Christian Schmitz - Einblick in das FileMaker SDK für iOSFMK2016 - Christian Schmitz - Einblick in das FileMaker SDK für iOS
FMK2016 - Christian Schmitz - Einblick in das FileMaker SDK für iOSVerein FM Konferenz
 
FMK 2016 - Robert Kaiser - FileMaker iOS App SDK
FMK 2016 - Robert Kaiser - FileMaker iOS App SDKFMK 2016 - Robert Kaiser - FileMaker iOS App SDK
FMK 2016 - Robert Kaiser - FileMaker iOS App SDKVerein FM Konferenz
 
FMK2016 - Holger Darjus und Jörg Köster - Migration und Synchronisation
FMK2016 - Holger Darjus und Jörg Köster - Migration und SynchronisationFMK2016 - Holger Darjus und Jörg Köster - Migration und Synchronisation
FMK2016 - Holger Darjus und Jörg Köster - Migration und SynchronisationVerein FM Konferenz
 
FMK2016 - Karsten Risseeuw - Dynamische Navigation
FMK2016 - Karsten Risseeuw - Dynamische NavigationFMK2016 - Karsten Risseeuw - Dynamische Navigation
FMK2016 - Karsten Risseeuw - Dynamische NavigationVerein FM Konferenz
 
FMK2015: Benutzerverwaltung in kleinen und großen Lösungen 1 by Yvonne Krümling
FMK2015: Benutzerverwaltung in kleinen und großen Lösungen 1 by Yvonne KrümlingFMK2015: Benutzerverwaltung in kleinen und großen Lösungen 1 by Yvonne Krümling
FMK2015: Benutzerverwaltung in kleinen und großen Lösungen 1 by Yvonne KrümlingVerein FM Konferenz
 
FMK2015 FileMaker Server Netzwerk & Perfomance by Bernhard Schulz
FMK2015 FileMaker Server Netzwerk & Perfomance by Bernhard SchulzFMK2015 FileMaker Server Netzwerk & Perfomance by Bernhard Schulz
FMK2015 FileMaker Server Netzwerk & Perfomance by Bernhard Schulzschubec
 
FMK2016 - Volker Krambrich und Holger Darjus - Langfristige Kundenbindung
FMK2016 - Volker Krambrich und Holger Darjus - Langfristige KundenbindungFMK2016 - Volker Krambrich und Holger Darjus - Langfristige Kundenbindung
FMK2016 - Volker Krambrich und Holger Darjus - Langfristige KundenbindungVerein FM Konferenz
 
FMK2016 - Michael Valentin - FileMaker 15 Plattform
FMK2016 - Michael Valentin - FileMaker 15 PlattformFMK2016 - Michael Valentin - FileMaker 15 Plattform
FMK2016 - Michael Valentin - FileMaker 15 PlattformVerein FM Konferenz
 
FMK2015: FileMaker Grundlagen Formeln by Longin Ziegler
FMK2015: FileMaker Grundlagen Formeln by Longin ZieglerFMK2015: FileMaker Grundlagen Formeln by Longin Ziegler
FMK2015: FileMaker Grundlagen Formeln by Longin ZieglerVerein FM Konferenz
 
FMK2015: FileMaker 14 Webdirect by Michael Valentin
FMK2015: FileMaker 14 Webdirect by Michael ValentinFMK2015: FileMaker 14 Webdirect by Michael Valentin
FMK2015: FileMaker 14 Webdirect by Michael ValentinVerein FM Konferenz
 

Was ist angesagt? (20)

FMK2015: Strukturierte Namensgebung als Basis für komplexe Programmierung by ...
FMK2015: Strukturierte Namensgebung als Basis für komplexe Programmierung by ...FMK2015: Strukturierte Namensgebung als Basis für komplexe Programmierung by ...
FMK2015: Strukturierte Namensgebung als Basis für komplexe Programmierung by ...
 
FMK2017 - Die Anker Boje Methode by Gerhard Schwingenschlögl
FMK2017 - Die Anker Boje Methode by Gerhard SchwingenschlöglFMK2017 - Die Anker Boje Methode by Gerhard Schwingenschlögl
FMK2017 - Die Anker Boje Methode by Gerhard Schwingenschlögl
 
FMK2016 - Volker Krambrich - FileMaker Cloud - Amazon Web Services
FMK2016 - Volker Krambrich - FileMaker Cloud - Amazon Web ServicesFMK2016 - Volker Krambrich - FileMaker Cloud - Amazon Web Services
FMK2016 - Volker Krambrich - FileMaker Cloud - Amazon Web Services
 
FMK2016 - Longin Ziegler - Schritt für Schritt zum eigenen Kalender
FMK2016 - Longin Ziegler - Schritt für Schritt zum eigenen KalenderFMK2016 - Longin Ziegler - Schritt für Schritt zum eigenen Kalender
FMK2016 - Longin Ziegler - Schritt für Schritt zum eigenen Kalender
 
FMK2015: Reguläre Ausdrücke by Arnold Kegebein
FMK2015: Reguläre Ausdrücke by Arnold KegebeinFMK2015: Reguläre Ausdrücke by Arnold Kegebein
FMK2015: Reguläre Ausdrücke by Arnold Kegebein
 
FMK2015: FileMaker Grundlagen Felder Tabellen Beziehungen by Longin Ziegler
FMK2015: FileMaker Grundlagen Felder Tabellen Beziehungen by Longin ZieglerFMK2015: FileMaker Grundlagen Felder Tabellen Beziehungen by Longin Ziegler
FMK2015: FileMaker Grundlagen Felder Tabellen Beziehungen by Longin Ziegler
 
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang Wunderlich
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang WunderlichFMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang Wunderlich
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang Wunderlich
 
FMK2016 - Holger Darjus - Das Transistor-Prinzip
FMK2016 - Holger Darjus - Das Transistor-PrinzipFMK2016 - Holger Darjus - Das Transistor-Prinzip
FMK2016 - Holger Darjus - Das Transistor-Prinzip
 
FMK2016 - Thomas Hirt- UML für FileMaker Entwickler
FMK2016 - Thomas Hirt- UML für FileMaker EntwicklerFMK2016 - Thomas Hirt- UML für FileMaker Entwickler
FMK2016 - Thomas Hirt- UML für FileMaker Entwickler
 
FMK2016 - Russell Watson - Überleben im Design und Stile Dschungel
FMK2016 - Russell Watson - Überleben im Design und Stile DschungelFMK2016 - Russell Watson - Überleben im Design und Stile Dschungel
FMK2016 - Russell Watson - Überleben im Design und Stile Dschungel
 
FMK2016 - Christian Schmitz - Einblick in das FileMaker SDK für iOS
FMK2016 - Christian Schmitz - Einblick in das FileMaker SDK für iOSFMK2016 - Christian Schmitz - Einblick in das FileMaker SDK für iOS
FMK2016 - Christian Schmitz - Einblick in das FileMaker SDK für iOS
 
FMK 2016 - Robert Kaiser - FileMaker iOS App SDK
FMK 2016 - Robert Kaiser - FileMaker iOS App SDKFMK 2016 - Robert Kaiser - FileMaker iOS App SDK
FMK 2016 - Robert Kaiser - FileMaker iOS App SDK
 
FMK2016 - Holger Darjus und Jörg Köster - Migration und Synchronisation
FMK2016 - Holger Darjus und Jörg Köster - Migration und SynchronisationFMK2016 - Holger Darjus und Jörg Köster - Migration und Synchronisation
FMK2016 - Holger Darjus und Jörg Köster - Migration und Synchronisation
 
FMK2016 - Karsten Risseeuw - Dynamische Navigation
FMK2016 - Karsten Risseeuw - Dynamische NavigationFMK2016 - Karsten Risseeuw - Dynamische Navigation
FMK2016 - Karsten Risseeuw - Dynamische Navigation
 
FMK2015: Benutzerverwaltung in kleinen und großen Lösungen 1 by Yvonne Krümling
FMK2015: Benutzerverwaltung in kleinen und großen Lösungen 1 by Yvonne KrümlingFMK2015: Benutzerverwaltung in kleinen und großen Lösungen 1 by Yvonne Krümling
FMK2015: Benutzerverwaltung in kleinen und großen Lösungen 1 by Yvonne Krümling
 
FMK2015 FileMaker Server Netzwerk & Perfomance by Bernhard Schulz
FMK2015 FileMaker Server Netzwerk & Perfomance by Bernhard SchulzFMK2015 FileMaker Server Netzwerk & Perfomance by Bernhard Schulz
FMK2015 FileMaker Server Netzwerk & Perfomance by Bernhard Schulz
 
FMK2016 - Volker Krambrich und Holger Darjus - Langfristige Kundenbindung
FMK2016 - Volker Krambrich und Holger Darjus - Langfristige KundenbindungFMK2016 - Volker Krambrich und Holger Darjus - Langfristige Kundenbindung
FMK2016 - Volker Krambrich und Holger Darjus - Langfristige Kundenbindung
 
FMK2016 - Michael Valentin - FileMaker 15 Plattform
FMK2016 - Michael Valentin - FileMaker 15 PlattformFMK2016 - Michael Valentin - FileMaker 15 Plattform
FMK2016 - Michael Valentin - FileMaker 15 Plattform
 
FMK2015: FileMaker Grundlagen Formeln by Longin Ziegler
FMK2015: FileMaker Grundlagen Formeln by Longin ZieglerFMK2015: FileMaker Grundlagen Formeln by Longin Ziegler
FMK2015: FileMaker Grundlagen Formeln by Longin Ziegler
 
FMK2015: FileMaker 14 Webdirect by Michael Valentin
FMK2015: FileMaker 14 Webdirect by Michael ValentinFMK2015: FileMaker 14 Webdirect by Michael Valentin
FMK2015: FileMaker 14 Webdirect by Michael Valentin
 

Andere mochten auch

Complex Event Processing (CEP) gets in touch with JSF
Complex Event Processing (CEP) gets in touch with JSFComplex Event Processing (CEP) gets in touch with JSF
Complex Event Processing (CEP) gets in touch with JSFadesso AG
 
Simbabwe: Mugabe und kein Ende? / Zimbabwe: Mugabe with no end in sight?
Simbabwe: Mugabe und kein Ende? / Zimbabwe: Mugabe with no end in sight?Simbabwe: Mugabe und kein Ende? / Zimbabwe: Mugabe with no end in sight?
Simbabwe: Mugabe und kein Ende? / Zimbabwe: Mugabe with no end in sight?GIGA Informationszentrum
 
Zehn Hinweise für Architekten
Zehn Hinweise für ArchitektenZehn Hinweise für Architekten
Zehn Hinweise für Architektenadesso AG
 
MVC 1.0: Zeitgemäße Webanwendungen in JavaEE
MVC 1.0: Zeitgemäße Webanwendungen in JavaEEMVC 1.0: Zeitgemäße Webanwendungen in JavaEE
MVC 1.0: Zeitgemäße Webanwendungen in JavaEEOPEN KNOWLEDGE GmbH
 
102 Tennessee Avenue N Martinsburg WV 25401
102 Tennessee Avenue N Martinsburg WV 25401102 Tennessee Avenue N Martinsburg WV 25401
102 Tennessee Avenue N Martinsburg WV 25401Heather Harley
 
Insectissima - Leuchtkäfer Blume
Insectissima - Leuchtkäfer BlumeInsectissima - Leuchtkäfer Blume
Insectissima - Leuchtkäfer BlumeFreekidstories
 
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...Verein FM Konferenz
 
FMK 2013 FM_Mentoring, Friedrich Egbert
FMK 2013  FM_Mentoring, Friedrich EgbertFMK 2013  FM_Mentoring, Friedrich Egbert
FMK 2013 FM_Mentoring, Friedrich EgbertVerein FM Konferenz
 
Sicherheit von Webanwendungen
Sicherheit von WebanwendungenSicherheit von Webanwendungen
Sicherheit von Webanwendungenthomasgemperle
 
Social Media Services
Social Media ServicesSocial Media Services
Social Media ServicesSMTravelers
 
Update zum IH Experten - Leistungsfähigkeit der Instandhaltung verbessern
Update zum IH Experten - Leistungsfähigkeit der Instandhaltung verbessernUpdate zum IH Experten - Leistungsfähigkeit der Instandhaltung verbessern
Update zum IH Experten - Leistungsfähigkeit der Instandhaltung verbesserndankl+partner consulting gmbh
 
Was kann ich ihm geben? - What Can I Give Him?
Was kann ich ihm geben? - What Can I Give Him?Was kann ich ihm geben? - What Can I Give Him?
Was kann ich ihm geben? - What Can I Give Him?Freekidstories
 
Die 10 Todsünde der Krisen-PR
Die 10 Todsünde der Krisen-PRDie 10 Todsünde der Krisen-PR
Die 10 Todsünde der Krisen-PRFaktenkontor
 
Nutzen Sie die Kraft der Pfefferminze (Pfefferminzspülung), wenn Sie Probleme...
Nutzen Sie die Kraft der Pfefferminze (Pfefferminzspülung), wenn Sie Probleme...Nutzen Sie die Kraft der Pfefferminze (Pfefferminzspülung), wenn Sie Probleme...
Nutzen Sie die Kraft der Pfefferminze (Pfefferminzspülung), wenn Sie Probleme...heilmittelgegenschuppen
 
Hürden sind zum nehmen da - Obstacles are for Overcoming
Hürden sind zum nehmen da - Obstacles are for OvercomingHürden sind zum nehmen da - Obstacles are for Overcoming
Hürden sind zum nehmen da - Obstacles are for OvercomingFreekidstories
 

Andere mochten auch (20)

Complex Event Processing (CEP) gets in touch with JSF
Complex Event Processing (CEP) gets in touch with JSFComplex Event Processing (CEP) gets in touch with JSF
Complex Event Processing (CEP) gets in touch with JSF
 
Simbabwe: Mugabe und kein Ende? / Zimbabwe: Mugabe with no end in sight?
Simbabwe: Mugabe und kein Ende? / Zimbabwe: Mugabe with no end in sight?Simbabwe: Mugabe und kein Ende? / Zimbabwe: Mugabe with no end in sight?
Simbabwe: Mugabe und kein Ende? / Zimbabwe: Mugabe with no end in sight?
 
Zehn Hinweise für Architekten
Zehn Hinweise für ArchitektenZehn Hinweise für Architekten
Zehn Hinweise für Architekten
 
MVC 1.0: Zeitgemäße Webanwendungen in JavaEE
MVC 1.0: Zeitgemäße Webanwendungen in JavaEEMVC 1.0: Zeitgemäße Webanwendungen in JavaEE
MVC 1.0: Zeitgemäße Webanwendungen in JavaEE
 
Haxe
HaxeHaxe
Haxe
 
102 Tennessee Avenue N Martinsburg WV 25401
102 Tennessee Avenue N Martinsburg WV 25401102 Tennessee Avenue N Martinsburg WV 25401
102 Tennessee Avenue N Martinsburg WV 25401
 
SOCIAL-WORLD Folder Deutschland
SOCIAL-WORLD Folder DeutschlandSOCIAL-WORLD Folder Deutschland
SOCIAL-WORLD Folder Deutschland
 
Insectissima - Leuchtkäfer Blume
Insectissima - Leuchtkäfer BlumeInsectissima - Leuchtkäfer Blume
Insectissima - Leuchtkäfer Blume
 
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
 
FMK 2013 FM_Mentoring, Friedrich Egbert
FMK 2013  FM_Mentoring, Friedrich EgbertFMK 2013  FM_Mentoring, Friedrich Egbert
FMK 2013 FM_Mentoring, Friedrich Egbert
 
Farmacotécnica de fitoterapicos
Farmacotécnica de fitoterapicosFarmacotécnica de fitoterapicos
Farmacotécnica de fitoterapicos
 
Sicherheit von Webanwendungen
Sicherheit von WebanwendungenSicherheit von Webanwendungen
Sicherheit von Webanwendungen
 
Oberfläche Kugel
Oberfläche KugelOberfläche Kugel
Oberfläche Kugel
 
Social Media Services
Social Media ServicesSocial Media Services
Social Media Services
 
Update zum IH Experten - Leistungsfähigkeit der Instandhaltung verbessern
Update zum IH Experten - Leistungsfähigkeit der Instandhaltung verbessernUpdate zum IH Experten - Leistungsfähigkeit der Instandhaltung verbessern
Update zum IH Experten - Leistungsfähigkeit der Instandhaltung verbessern
 
Was kann ich ihm geben? - What Can I Give Him?
Was kann ich ihm geben? - What Can I Give Him?Was kann ich ihm geben? - What Can I Give Him?
Was kann ich ihm geben? - What Can I Give Him?
 
Die 10 Todsünde der Krisen-PR
Die 10 Todsünde der Krisen-PRDie 10 Todsünde der Krisen-PR
Die 10 Todsünde der Krisen-PR
 
Nutzen Sie die Kraft der Pfefferminze (Pfefferminzspülung), wenn Sie Probleme...
Nutzen Sie die Kraft der Pfefferminze (Pfefferminzspülung), wenn Sie Probleme...Nutzen Sie die Kraft der Pfefferminze (Pfefferminzspülung), wenn Sie Probleme...
Nutzen Sie die Kraft der Pfefferminze (Pfefferminzspülung), wenn Sie Probleme...
 
Hürden sind zum nehmen da - Obstacles are for Overcoming
Hürden sind zum nehmen da - Obstacles are for OvercomingHürden sind zum nehmen da - Obstacles are for Overcoming
Hürden sind zum nehmen da - Obstacles are for Overcoming
 
Social-World-Deutschland
Social-World-DeutschlandSocial-World-Deutschland
Social-World-Deutschland
 

Ähnlich wie FMK2015: The Power of JavaScript by Marcel Moré

FMK 2013 Entwickler Werkzeuge, Marcel Moré
FMK 2013 Entwickler Werkzeuge, Marcel MoréFMK 2013 Entwickler Werkzeuge, Marcel Moré
FMK 2013 Entwickler Werkzeuge, Marcel MoréVerein FM Konferenz
 
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit AlfrescoAlfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit AlfrescoAlfresco Software
 
FMK2014: FileMaker Module by Karsten Risseeuw
FMK2014: FileMaker Module by Karsten RisseeuwFMK2014: FileMaker Module by Karsten Risseeuw
FMK2014: FileMaker Module by Karsten RisseeuwVerein FM Konferenz
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & ToolsUlrich Krause
 
FMK 2013 Xojo, Christian Schmitz
FMK 2013 Xojo, Christian SchmitzFMK 2013 Xojo, Christian Schmitz
FMK 2013 Xojo, Christian SchmitzVerein FM Konferenz
 
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...Verein FM Konferenz
 
HTML5 - presentation at W3C-Tag 2009
HTML5 - presentation at W3C-Tag 2009HTML5 - presentation at W3C-Tag 2009
HTML5 - presentation at W3C-Tag 2009Felix Sasaki
 
SharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die ZukunftSharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die ZukunftDavid Schneider
 
Agile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsHussein Morsy
 
TYPO3 Neos - Next Generation CMS (IPC 2014)
TYPO3 Neos - Next Generation CMS (IPC 2014)TYPO3 Neos - Next Generation CMS (IPC 2014)
TYPO3 Neos - Next Generation CMS (IPC 2014)die.agilen GmbH
 
OpenLaszlo - Advanced RIAs for the OpenWeb
OpenLaszlo - Advanced RIAs for the OpenWebOpenLaszlo - Advanced RIAs for the OpenWeb
OpenLaszlo - Advanced RIAs for the OpenWebRaju Bitter
 
FMK2022 Arbeiten mit SVG in FileMaker - Robert Kaiser
FMK2022 Arbeiten mit SVG in FileMaker - Robert KaiserFMK2022 Arbeiten mit SVG in FileMaker - Robert Kaiser
FMK2022 Arbeiten mit SVG in FileMaker - Robert KaiserVerein FM Konferenz
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Andreas Wissel
 
German: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptGerman: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptRalf Schwoebel
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerDennis Wilson
 
FMK2022 FileMaker und Javascript von Adam Augustin
FMK2022 FileMaker und Javascript von Adam AugustinFMK2022 FileMaker und Javascript von Adam Augustin
FMK2022 FileMaker und Javascript von Adam AugustinVerein FM Konferenz
 

Ähnlich wie FMK2015: The Power of JavaScript by Marcel Moré (20)

FMK 2013 Entwickler Werkzeuge, Marcel Moré
FMK 2013 Entwickler Werkzeuge, Marcel MoréFMK 2013 Entwickler Werkzeuge, Marcel Moré
FMK 2013 Entwickler Werkzeuge, Marcel Moré
 
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit AlfrescoAlfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
 
FMK2014: FileMaker Module by Karsten Risseeuw
FMK2014: FileMaker Module by Karsten RisseeuwFMK2014: FileMaker Module by Karsten Risseeuw
FMK2014: FileMaker Module by Karsten Risseeuw
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & Tools
 
Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014
 
FMK 2013 Xojo, Christian Schmitz
FMK 2013 Xojo, Christian SchmitzFMK 2013 Xojo, Christian Schmitz
FMK 2013 Xojo, Christian Schmitz
 
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
 
HTML5 - presentation at W3C-Tag 2009
HTML5 - presentation at W3C-Tag 2009HTML5 - presentation at W3C-Tag 2009
HTML5 - presentation at W3C-Tag 2009
 
SharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die ZukunftSharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die Zukunft
 
Agile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit Rails
 
TYPO3 Neos - Next Generation CMS (IPC 2014)
TYPO3 Neos - Next Generation CMS (IPC 2014)TYPO3 Neos - Next Generation CMS (IPC 2014)
TYPO3 Neos - Next Generation CMS (IPC 2014)
 
OpenLaszlo - Advanced RIAs for the OpenWeb
OpenLaszlo - Advanced RIAs for the OpenWebOpenLaszlo - Advanced RIAs for the OpenWeb
OpenLaszlo - Advanced RIAs for the OpenWeb
 
FMK2022 Arbeiten mit SVG in FileMaker - Robert Kaiser
FMK2022 Arbeiten mit SVG in FileMaker - Robert KaiserFMK2022 Arbeiten mit SVG in FileMaker - Robert Kaiser
FMK2022 Arbeiten mit SVG in FileMaker - Robert Kaiser
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
 
German: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptGerman: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit Javascript
 
HTML5-Features
HTML5-FeaturesHTML5-Features
HTML5-Features
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
 
APEX 5.0, und sonst?
APEX 5.0, und sonst?APEX 5.0, und sonst?
APEX 5.0, und sonst?
 
FMK2022 FileMaker und Javascript von Adam Augustin
FMK2022 FileMaker und Javascript von Adam AugustinFMK2022 FileMaker und Javascript von Adam Augustin
FMK2022 FileMaker und Javascript von Adam Augustin
 
Apache Solr Revisited 2015
Apache Solr Revisited 2015Apache Solr Revisited 2015
Apache Solr Revisited 2015
 

Mehr von Verein FM Konferenz

FMK2022 Excel und FileMaker Schittko.pdf
FMK2022 Excel und FileMaker Schittko.pdfFMK2022 Excel und FileMaker Schittko.pdf
FMK2022 Excel und FileMaker Schittko.pdfVerein FM Konferenz
 
FMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
FMK2022 Drucken über Dateigrenzen hinweg von Philipp PulsFMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
FMK2022 Drucken über Dateigrenzen hinweg von Philipp PulsVerein FM Konferenz
 
FMK2022 Custom Functions von Philipp Puls
FMK2022 Custom Functions von Philipp PulsFMK2022 Custom Functions von Philipp Puls
FMK2022 Custom Functions von Philipp PulsVerein FM Konferenz
 
FMK2022 FileMaker Fehler von Martin Schwarz
FMK2022 FileMaker Fehler von Martin SchwarzFMK2022 FileMaker Fehler von Martin Schwarz
FMK2022 FileMaker Fehler von Martin SchwarzVerein FM Konferenz
 
FMK2022 FileMaker Server unter Linux Workshop von Bernhard Schulz
FMK2022 FileMaker Server unter Linux Workshop von Bernhard SchulzFMK2022 FileMaker Server unter Linux Workshop von Bernhard Schulz
FMK2022 FileMaker Server unter Linux Workshop von Bernhard SchulzVerein FM Konferenz
 
FMK2022 FileMaker DataAPI und Java von Bernhard Schulz
FMK2022 FileMaker DataAPI und Java von Bernhard SchulzFMK2022 FileMaker DataAPI und Java von Bernhard Schulz
FMK2022 FileMaker DataAPI und Java von Bernhard SchulzVerein FM Konferenz
 
FMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam AugustingFMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam AugustingVerein FM Konferenz
 
FMK2022 Dokumentation - Thomas Hirt
FMK2022 Dokumentation - Thomas HirtFMK2022 Dokumentation - Thomas Hirt
FMK2022 Dokumentation - Thomas HirtVerein FM Konferenz
 
FMK2022 CustomFunctions Fuer Einsteiger - Thomas Hirt
FMK2022 CustomFunctions Fuer Einsteiger - Thomas HirtFMK2022 CustomFunctions Fuer Einsteiger - Thomas Hirt
FMK2022 CustomFunctions Fuer Einsteiger - Thomas HirtVerein FM Konferenz
 
FMK2022 FileMaker Integrated Development Environment - Russell Watson
FMK2022 FileMaker Integrated Development Environment - Russell WatsonFMK2022 FileMaker Integrated Development Environment - Russell Watson
FMK2022 FileMaker Integrated Development Environment - Russell WatsonVerein FM Konferenz
 
FMK2022 Datenschutz DSGVO Christoph Kluss
FMK2022 Datenschutz DSGVO Christoph KlussFMK2022 Datenschutz DSGVO Christoph Kluss
FMK2022 Datenschutz DSGVO Christoph KlussVerein FM Konferenz
 
FMK2022 Rechnungen Inkasso - Christoph Kluss
FMK2022 Rechnungen Inkasso - Christoph KlussFMK2022 Rechnungen Inkasso - Christoph Kluss
FMK2022 Rechnungen Inkasso - Christoph KlussVerein FM Konferenz
 
FMK2022 Die Zukunft von FileMaker - Marcel Moré.pdf
FMK2022 Die Zukunft von FileMaker - Marcel Moré.pdfFMK2022 Die Zukunft von FileMaker - Marcel Moré.pdf
FMK2022 Die Zukunft von FileMaker - Marcel Moré.pdfVerein FM Konferenz
 
FMK2019 bug off lightning talk by Russell Watson
FMK2019 bug off lightning talk by Russell WatsonFMK2019 bug off lightning talk by Russell Watson
FMK2019 bug off lightning talk by Russell WatsonVerein FM Konferenz
 
FMK2019 being an optimist in a pessimistic world by vincenzo menanno
FMK2019 being an optimist in a pessimistic world by vincenzo menannoFMK2019 being an optimist in a pessimistic world by vincenzo menanno
FMK2019 being an optimist in a pessimistic world by vincenzo menannoVerein FM Konferenz
 
FMK2019 FileMaker Performance Update 2019 by HOnza Koudelka
FMK2019 FileMaker Performance Update 2019 by HOnza KoudelkaFMK2019 FileMaker Performance Update 2019 by HOnza Koudelka
FMK2019 FileMaker Performance Update 2019 by HOnza KoudelkaVerein FM Konferenz
 
FMK2019 Hardware Integrated by HOnza Koudelka
FMK2019 Hardware Integrated by HOnza KoudelkaFMK2019 Hardware Integrated by HOnza Koudelka
FMK2019 Hardware Integrated by HOnza KoudelkaVerein FM Konferenz
 
Fmk2019 Produktentwicklung mit FileMaker by Harald Mair
Fmk2019 Produktentwicklung mit FileMaker by Harald MairFmk2019 Produktentwicklung mit FileMaker by Harald Mair
Fmk2019 Produktentwicklung mit FileMaker by Harald MairVerein FM Konferenz
 
FMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen by Adam AugustinFMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen by Adam AugustinVerein FM Konferenz
 
FMK2019 Layout und Eigene Menüs-Management by Jörg Köster
FMK2019 Layout und Eigene Menüs-Management  by Jörg KösterFMK2019 Layout und Eigene Menüs-Management  by Jörg Köster
FMK2019 Layout und Eigene Menüs-Management by Jörg KösterVerein FM Konferenz
 

Mehr von Verein FM Konferenz (20)

FMK2022 Excel und FileMaker Schittko.pdf
FMK2022 Excel und FileMaker Schittko.pdfFMK2022 Excel und FileMaker Schittko.pdf
FMK2022 Excel und FileMaker Schittko.pdf
 
FMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
FMK2022 Drucken über Dateigrenzen hinweg von Philipp PulsFMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
FMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
 
FMK2022 Custom Functions von Philipp Puls
FMK2022 Custom Functions von Philipp PulsFMK2022 Custom Functions von Philipp Puls
FMK2022 Custom Functions von Philipp Puls
 
FMK2022 FileMaker Fehler von Martin Schwarz
FMK2022 FileMaker Fehler von Martin SchwarzFMK2022 FileMaker Fehler von Martin Schwarz
FMK2022 FileMaker Fehler von Martin Schwarz
 
FMK2022 FileMaker Server unter Linux Workshop von Bernhard Schulz
FMK2022 FileMaker Server unter Linux Workshop von Bernhard SchulzFMK2022 FileMaker Server unter Linux Workshop von Bernhard Schulz
FMK2022 FileMaker Server unter Linux Workshop von Bernhard Schulz
 
FMK2022 FileMaker DataAPI und Java von Bernhard Schulz
FMK2022 FileMaker DataAPI und Java von Bernhard SchulzFMK2022 FileMaker DataAPI und Java von Bernhard Schulz
FMK2022 FileMaker DataAPI und Java von Bernhard Schulz
 
FMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam AugustingFMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam Augusting
 
FMK2022 Dokumentation - Thomas Hirt
FMK2022 Dokumentation - Thomas HirtFMK2022 Dokumentation - Thomas Hirt
FMK2022 Dokumentation - Thomas Hirt
 
FMK2022 CustomFunctions Fuer Einsteiger - Thomas Hirt
FMK2022 CustomFunctions Fuer Einsteiger - Thomas HirtFMK2022 CustomFunctions Fuer Einsteiger - Thomas Hirt
FMK2022 CustomFunctions Fuer Einsteiger - Thomas Hirt
 
FMK2022 FileMaker Integrated Development Environment - Russell Watson
FMK2022 FileMaker Integrated Development Environment - Russell WatsonFMK2022 FileMaker Integrated Development Environment - Russell Watson
FMK2022 FileMaker Integrated Development Environment - Russell Watson
 
FMK2022 Datenschutz DSGVO Christoph Kluss
FMK2022 Datenschutz DSGVO Christoph KlussFMK2022 Datenschutz DSGVO Christoph Kluss
FMK2022 Datenschutz DSGVO Christoph Kluss
 
FMK2022 Rechnungen Inkasso - Christoph Kluss
FMK2022 Rechnungen Inkasso - Christoph KlussFMK2022 Rechnungen Inkasso - Christoph Kluss
FMK2022 Rechnungen Inkasso - Christoph Kluss
 
FMK2022 Die Zukunft von FileMaker - Marcel Moré.pdf
FMK2022 Die Zukunft von FileMaker - Marcel Moré.pdfFMK2022 Die Zukunft von FileMaker - Marcel Moré.pdf
FMK2022 Die Zukunft von FileMaker - Marcel Moré.pdf
 
FMK2019 bug off lightning talk by Russell Watson
FMK2019 bug off lightning talk by Russell WatsonFMK2019 bug off lightning talk by Russell Watson
FMK2019 bug off lightning talk by Russell Watson
 
FMK2019 being an optimist in a pessimistic world by vincenzo menanno
FMK2019 being an optimist in a pessimistic world by vincenzo menannoFMK2019 being an optimist in a pessimistic world by vincenzo menanno
FMK2019 being an optimist in a pessimistic world by vincenzo menanno
 
FMK2019 FileMaker Performance Update 2019 by HOnza Koudelka
FMK2019 FileMaker Performance Update 2019 by HOnza KoudelkaFMK2019 FileMaker Performance Update 2019 by HOnza Koudelka
FMK2019 FileMaker Performance Update 2019 by HOnza Koudelka
 
FMK2019 Hardware Integrated by HOnza Koudelka
FMK2019 Hardware Integrated by HOnza KoudelkaFMK2019 Hardware Integrated by HOnza Koudelka
FMK2019 Hardware Integrated by HOnza Koudelka
 
Fmk2019 Produktentwicklung mit FileMaker by Harald Mair
Fmk2019 Produktentwicklung mit FileMaker by Harald MairFmk2019 Produktentwicklung mit FileMaker by Harald Mair
Fmk2019 Produktentwicklung mit FileMaker by Harald Mair
 
FMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen by Adam AugustinFMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
 
FMK2019 Layout und Eigene Menüs-Management by Jörg Köster
FMK2019 Layout und Eigene Menüs-Management  by Jörg KösterFMK2019 Layout und Eigene Menüs-Management  by Jörg Köster
FMK2019 Layout und Eigene Menüs-Management by Jörg Köster
 

FMK2015: The Power of JavaScript by Marcel Moré

  • 1. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com The Power of JavaScript Marcel Moré
  • 2. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Marcel Moré Gefahrensucher • überlebt seit 23 Jahren in der FileMaker-Hölle • Cross-Plattform Erfahrung • Abenteuer in 17 subtropischen Programmiersprachen • unterwegs auf Debugging- Expedition in exotischer Scripting-Umgebung • auf zu neuen Ufern in bislang unbekanntes Terrain... @mmore
  • 3. The Power of JavaScript
  • 4. The Power of JavaScript • dies ist kein JavaScript Programmierkurs! • kurzer Überblick zur Sprache • warum JavaScript für FileMaker Entwickler interessant ist • typische Szenarien für den Einsatz von JavaScript in FileMaker • wie lässt sich JavaScript konkret in FileMaker einbinden? • Praxis-Beispiel: Lösung des TSP (Traveling Salesman Problem) Was Euch in den nächsten 90 Minuten erwartet:
  • 5. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com JavaScript als Sprache
  • 6. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Was ist JavaScript? • JavaScript (kurz JS) ist eine Skriptsprache, die ursprünglich für dynamisches HTML in Webbrowsern entwickelt wurde, um Benutzerinteraktionen auszuwerten, Inhalte zu verändern, nachzuladen oder zu generieren und so die Möglichkeiten von HTML und CSS zu erweitern. • Heute findet JavaScript auch außerhalb von Browsern Anwendung, so etwa auf Servern und in Microcontrollern. • Der als ECMAScript standardisierte Sprachkern von JavaScript beschreibt eine dynamisch typisierte, objektorientierte, aber klassenlose Skriptsprache. • Sie wird allen objektorientierten Programmierparadigmen unter anderem auf der Basis von Prototypen gerecht. In JavaScript lässt sich objektorientiert und sowohl prozedural als auch funktional programmieren. Quelle:  h(ps://de.wikipedia.org/wiki/JavaScript
  • 7. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Was ist JavaScript? • JavaScript (kurz JS) ist eine Skriptsprache, die ursprünglich für dynamisches HTML in Webbrowsern entwickelt wurde, um Benutzerinteraktionen auszuwerten, Inhalte zu verändern, nachzuladen oder zu generieren und so die Möglichkeiten von HTML und CSS zu erweitern. • Heute findet JavaScript auch außerhalb von Browsern Anwendung, so etwa auf Servern und in Microcontrollern. • Der als ECMAScript standardisierte Sprachkern von JavaScript beschreibt eine dynamisch typisierte, objektorientierte, aber klassenlose Skriptsprache. • Sie wird allen objektorientierten Programmierparadigmen unter anderem auf der Basis von Prototypen gerecht. In JavaScript lässt sich objektorientiert und sowohl prozedural als auch funktional programmieren. Quelle:  h6ps://de.wikipedia.org/wiki/JavaScript früher:  Spielkram  für  Webseiten heute:  ausgerei@e   Programmiersprache
  • 8. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Besonderheiten • Kontrollstrukturen (if/else; switch; while; for; for…in) • Variablen, Arrays • Funktionen (vollständig objektorientiert) • Objekte (mit Eigenschaften und Methoden) • objektorientierte Vererbung • Delegationsprinzipien; Fehlerbehandlung mit Exceptions • enge Anbindung an das DOM (Document Object Modell) im modernen WEB-Standard, u.a. mit Event-Handlern (Trigger) kurz:  im  Vergleich  zu  FileMaker-­‐Script   weitaus  mächAger
  • 9. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Vorteile • einfach zu erlernende Grundprinzipien • ausgereifte objektorientierte Sprache mit vielen mächtigen Konstrukten • leistungsfähige dynamische Dokumenten-Steuerung im direkten Zugriff auf das DOM inkl. HTML, CSS, SVG • verteilte Anwendungen (Code extern nachladbar) • Client- oder Server-basierte Systemarchitekturen kurz:  mit  wenig  MiBeln  viel  erreichen   in  unterschiedlichsten  Szenarien
  • 10. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com weitere Vorteile • unendliche Anzahl von Tutorials und Beispielen im WEB frei verfügbar • zahlreiche ausgereifte FrameWorks und Bibliotheken (jQuery, Protoype, AngularJS, backbone.js, YUI, Dojo, u.ä.) • öffentliche Repositories mit riesigen Code-Sammlungen (GitHub, u.ä.) • große Anzahl von fertigen Anwendungen, die sich größtenteils an eigene Bedürfnisse adaptieren lassen (GUI, Datenanalyse, Visualisierung, …) • viele APIs für Apps, WEB- und Cloud-Anwendungen (Google Maps, Amazon AWS, MS Office, Acrobat, SharePoint, Dropbox, Evernote, FaceBook, Twitter, ...) kurz:  überall  präsent,  viele  Werkzeuge
  • 11. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Die beliebtesten Programmiersprachen JavaScript  #1gemäß  Ihrer  relaAven  Popularität  auf  GitHub Quelle:  h(ps://github.com/blog/2047-­‐language-­‐trends-­‐on-­‐GitHub
  • 12. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Warum JavaScript in FileMaker nutzen?
  • 13. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com JavaScript für FileMaker • mittels spezifischer Sprachkonstrukte und flexibler Objekt-Strukturen lassen sich manche Aufgaben sehr viel einfacher lösen • teilweise wesentlich höhere Performance erreichbar als in FileMaker • viele vorgefertigte Lösungsbausteine für zahlreiche Anwendungsfälle frei verfügbar (von einfachen Steuerungselementen bis zu kompletten Anwendungen) • keine zusätzlichen Plugins erforderlich – JavaScript lebt direkt im Webviewer kurz:  wie  Plugins,  nur  ohne  Plugins...
  • 14. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com typische Szenarien
  • 15. • dynamische Schalter, Regler, Anzeigeelemente • Widgets • dynamische Tabellen • Belegungspläne • Kalender Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com komplexe GUIs h(p://jqueryui.com/ h(p://justgage.com/ jqxGauge
  • 16. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com komplexe GUIs Quelle:  h(p://fullcalendar.io/
  • 17. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Visualisierung • Charts • Diagramme • dynamische Graphen • interaktive Diagramme • Analysen • 3D-Grafik • http://www.flotcharts.org/ • http://www.chartjs.org/ • http://d3js.org/ • http://sigmajs.org/ • http://mbostock.github.io/protovis/ • http://p5js.org/ • http://threejs.org/
  • 18. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Visualisierung Quelle:  h(p://www.flotcharts.org/
  • 19. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Visualisierung Quelle:  h(p://www.flotcharts.org/
  • 20. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Visualisierung Quelle:  h(p://www.flotcharts.org/
  • 21. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Visualisierung Quelle:  h(p://sigmajs.org/
  • 22. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Visualisierung Quelle:  h(p://mbostock.github.io/protovis/
  • 23. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Visualisierung Quelle:  h(ps://www.jasondavies.com/parallel-­‐sets/
  • 24. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Number-Crunching • Analysen • statistische Auswertungen • Spezial-Algorithmen • http://jstat.github.io/ • http://simplestatistics.org/ • https://github.com/pseudosavant/psMathStats • https://qiao.github.io/PathFinding.js/visual/ • http://parano.github.io/GeneticAlgorithm-TSP/
  • 25. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Demo
  • 26. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Wo liegen die Herausforderungen?
  • 27. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Herausforderungen • sich aufraffen, über den Tellerrand der FileMaker-Welt zu schauen! • Fallstricke bei der Implementierung im Webviewer • Datenübergabe zu JavaScript bidirektional in FileMaker einbinden • die richtigen Bausteine finden (Recherche: Repositories, Frameworks, Libs)
  • 28. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Einbindung in FileMaker
  • 29. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com JavaScript in FileMaker • Wo liegt der Code? • Wie wird das JavaScript gestartet? • Datenübergabe • von FileMaker an das JavaScript • vom JavaScript an FileMaker • weitere Möglichkeiten und Alternativen
  • 30. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Wo liegt der Code? • Webviewer • eingebettet in HTML • wird ausgeführt, sobald der Webviewer im Layout dargestellt wird <html> <body> <script  type="text/javascript"> document.write("Hello  World"); </script> </body> </html>
  • 31. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Wo liegt der Code? • URL mit Verweis auf HTML-Dokument <html> <body> <script  type="text/javascript"> document.write("Hello  World"); </script> </body> </html>
  • 32. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Wo liegt der Code? • URL mit Verweis auf HTML-Dokument • Data URL kann auf Variable verweisen
  • 33. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Wo liegt der Code? • URL mit Verweis auf HTML-Dokument • Data URL kann auf Variable verweisen "data:text/html,"  &  $$JavaScript
  • 34. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Wo liegt der Code? • Warum ist es nützlich, den Code in einer Variable zu haben? • Datenübergabe!
  • 35. Datenübergabe FileMaker                        JavaScript
  • 36. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Datenübergabe • Code liegt als Text in einer Variable vor • Daten können als Platzhalter direkt in den Code eingebettet werden • Austauschen ( $$JavaScript; "<meinwert>"; "Hallo Welt!" ) <html> <body> <script  type="text/javascript"> document.write("<meinwert>"); </script> </body> </html> <html> <body> <script  type="text/javascript"> document.write("Hallo  Welt!"); </script> </body> </html>
  • 37. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Datenübergabe • Code-Template Beispiel: <html> <body> <script  type="text/javascript"> /*  -­‐-­‐-­‐-­‐-­‐  INPUT  PARAMETER  -­‐-­‐-­‐-­‐-­‐  */ myNumber  =  <myNumber>; myString  =  "<myString>"; myArray  =  [<myArray>]; /*  -­‐-­‐-­‐-­‐-­‐  DO  WHATEVER  -­‐-­‐-­‐-­‐-­‐  */ document.write(  myString  ); </script> </body> </html>
  • 38. Datenübergabe FileMaker                        JavaScript
  • 39. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Datenübergabe • Ergebnis als Parameter in Script-Aufruf per FMP-URL Schema • Ergebnis in der Zwischenablage • Ergebnis direkt in den Inhalt des Webviewers schreiben und dort auslesen* • Ergebnis im 'Fenstertitel' des Webviewers* *Plugin  erforderlich
  • 40. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Datenübergabe Ergebnis als Parameter in Script-Aufruf per FMP-URL Schema • JavaScript: var p = "Mein Ergebnis"; var url = "fmp://$/MeineDB?script=LiesErgebnis&param=" + p ; window.location = url ; • FileMaker: –> Script "LiesErgebnis [ p ]" Variable setzen [ $Ergebnis ; Hole ( ScriptParameter ) ] • Hinweise: Erst ab FileMaker Version 13.0v2 sinnvoll verwendbar.* Unter Windows können nur 2048 Zeichen übergeben werden. *Quelle:  h(p://isolufons-­‐inc.com/2014/04/05/fmp-­‐url-­‐scheme-­‐and-­‐the-­‐13-­‐0v2-­‐improvement/
  • 41. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Datenübergabe Ergebnis in die Zwischenablage schreiben • JavaScript: window.clipboardData.setData( 'Text' , "Mein Ergebnis" ); • FileMaker: Einfügen [ Auswahl; Tabelle::Ergebnis ] • Hinweis: Als Workaround unter Windows geeignet, wenn Ergebnisse mit mehr als 2048 Zeichen übergeben werden sollen* *Quelle:  h(p://www.seedcode.com/filemaker-­‐webviewer-­‐javascript-­‐calculafon-­‐engine/
  • 42. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Datenübergabe Ergebnis direkt in den Webviewer schreiben und dort auslesen • JavaScript: document.write( "Mein Ergebnis" ); • FileMaker: Variable setzen [ $Ergebnis; LiesLayoutobjektAttribut ( "Webviewer" ; "content" ) ] • Problem: Aktueller Inhalt des Webviewers wird nicht erkannt, stattdessen wird der Sourcecode zurück geliefert! • Alternative: Auslesen über Funktion im MBS-Plugin • Variable setzen [ $Ergebnis; MBS( "WebView.GetPlainText"; "Webviewer" ) ] Doku:  h(p://www.mbsplugins.eu/WebViewGetPlainText.shtml
  • 43. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Datenübergabe Ergebnis direkt in den Webviewer schreiben und dort auslesen • JavaScript: document.write( "Mein Ergebnis" ); • FileMaker: Variable setzen [ $Ergebnis; MBS( "WebView.GetPlainText"; "Webviewer" ) ] Doku:  h(p://www.mbsplugins.eu/WebViewGetPlainText.shtml Vorteil:  für  große  Datenmengen  gut   geeignet,  kommt  problemlos  mit   mehreren  Megabytes  Text  zurecht.
  • 44. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Datenübergabe Ergebnis in den 'Fenstertitel' des Webviewers schreiben • mit Bordmitteln nicht möglich • Alternative: Auslesen über Funktion im MBS-Plugin • JavaScript: document.title = "Mein Ergebnis"; • FileMaker: Variable setzen [ $Ergebnis; MBS( "WebView.GetTitle"; "Webviewer" ) ] Doku:  h(p://www.mbsplugins.eu/WebViewGetTitle.shtml
  • 45. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Weitere Möglichkeiten • URL Aufruf zu externem Script • MBS Plugin • BaseElements Plugin • Node.js
  • 46. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com externer URL Aufruf ➊ • JavaScript ist in einem HTML-Dokument unter einer URL erreichbar: http://www.server.de/script.html?p=MeinWert • Parameterübergabe in der URL • Werte müssen codiert sein: LiesAlsURLVerschlüsselt ( MeinWert ) • mehrere Werte trennen: script.html?a=1&b=2&c=3
  • 47. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com externer URL Aufruf ➋ • JavaScript: Parameter aus der URL lesen funcfon  getUrlVars()  {        var  vars  =  {};        var  parts  =  window.locafon.href.replace(  /[?&]+ ([^=&]+)=([^&]*)/gi,                funcfon(  m,  key,  value  )  {                vars[  key  ]  =  unescape(  value  );        }  );        return  vars; }
  • 48. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com externer URL Aufruf ➌ • JavaScript Ergebnis: document.write( "Mein Ergebnis" ); • FileMaker: Aus URL einfügen [ ... Tabelle::Ergebnis ; URL ] ?
  • 49. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com externer URL Aufruf ➌ • JavaScript Ergebnis: document.write( "Mein Ergebnis" ); • FileMaker: Aus URL einfügen [ ... Tabelle::Ergebnis ; URL ] geht  nicht:  Aus  URL  einfügen liefert  staBdessen  den  Quelltext! Weil  keine  Browser-­‐Instanz  als   Interpreter  dazwischen  liegt... !
  • 50. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com externer URL Aufruf ➌ • JavaScript Ergebnis: document.write( "Mein Ergebnis" ); • FileMaker: Aus URL einfügen [ ... Tabelle::Ergebnis ; URL ] • Variable setzen [ $Ergebnis; MBS( "WebView.GetPlainText"; "Webviewer" ) ]
  • 51. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com externer URL Aufruf ➌ • JavaScript Ergebnis: document.write( "Mein Ergebnis" ); • externe URL im Webviewer anzeigen • Variable setzen [ $Ergebnis; MBS( "WebView.GetPlainText"; "Webviewer" ) ] aber:  Webviewer  erfüllt  den  Job... Zum  Auslesen  ist  dann  wieder MBS-­‐Plugin  erforderlich !
  • 52. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com MBS Plugin • MBS( "WebView.RunJavaScript"; WebViewerRef; Javascript ) • MBS( "WebView.RunJavaScriptReturnTitle"; WebViewerRef; Javascript ) • trotz Kapselung in Funktion ist ein Webviewer für die Darstellung erforderlich Doku:  h(p://www.mbsplugins.eu/WebViewRunJavaScript.shtml
  • 53. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com BaseElements Plugin • BE_EvaluateJavaScript ( text ) • verwendet eingebettete JavaScript-Engine „Duktape“ –> http://duktape.org/ • direkt in Formeln anwendbar kein Webviewer erforderlich; keine GUI(!) • derzeit noch im Beta-Stadium (v3.1) Doku:  h(ps://www.geisfnteracfve.com/2014/12/28/baseelements-­‐plugin-­‐gets-­‐javascript/ Doku:  h(p://www.goya.com.au/blog/baseelements-­‐plugin-­‐updated-­‐31-­‐adds-­‐smtp-­‐and-­‐more Doku:  h(ps://baseelementsplugin.zendesk.com/hc/en-­‐us/arfcles/204528287-­‐BE-­‐EvaluateJavaScript
  • 54. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Node.js • Java-Script Server https://nodejs.org/ • hohe Performance, Parallel-Verarbeitung, gut skalierbar, für zahlreiche Plattformen verfügbar (OSX, Win, Linux) • Aufruf über Aus URL einfügen möglich oder Aufruf über Webviewer (wie externe URL) Doku:  h(p://www.nodebeginner.org/ Info:  h(p://blog.modulus.io/absolute-­‐beginners-­‐guide-­‐to-­‐nodejs Info:  h(ps://www.airpair.com/javascript/node-­‐js-­‐tutorial
  • 55. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Fallstricke • FileMaker-Befehle zum Auslesen des Webviewers verhalten sich nicht wie erwartet: LiesLayoutobjektAttribut und Aus URL einfügen liefern Quelltext statt sichtbaren Inhalt • unter bestimmten Bedingungen werden externe JavaScript-Referenzen (eingebundene Bibliotheken) nicht geladen • Same-Origin-Policy • Cross-Origin Resource Sharing
  • 56. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Fallstricke • wenn WebViewer Inhalte zu oft nacheinander geladen werden, stürzt FileMaker u.U. mit einem Speicherüberlauf ab! • z.B. Schleife über tausende von Datensätzen • Workaround: alle Datensätze einsammeln und als Parameter in einem Aufruf übergeben; Ergebnis entsprechend zurückliefern und wieder zerlegen = 1 Aufruf berechnet 10.000 Datensätze
  • 57. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Fazit
  • 58. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Welche Technik wofür? Webviewer + FMP URL Callback Webviewer + MBS Plugin BaseElements Plugin Node.js GUI Widgets ✔ ✔ GUI Interaktion ✔ ✔ Number- Crunching ✔ ✔ ✔
  • 59. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com persönlicher Eindruck • Durch die FileMaker-Brille betrachtet, gleicht manches einem Drahtseilakt • GUI-Erweiterungen sind meist schnell umgesetzt mit sehr flexibler Interaktivität • schiere Masse an verfügbaren JS-Bibliotheken ist ein starkes Argument • komplexe Anwendungen erfordern manchen Workaround, aber erweitern den FileMaker- Horizont enorm
  • 60. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com persönlicher Eindruck • unterm Strich eröffnen sich durch den gezielten Einsatz von JavaScript in FileMaker völlig neue Welten • gilt umso mehr in Kombination mit SVG JavaScript  +  SVG =  Dreamteam!
  • 61. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Praxis-Beispiel
  • 62. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Die Aufgabe
  • 63.
  • 64.
  • 66. LagerplätzeReihenfolge  auf  Beleg Reihenfolge  der  Picking-­‐Route  im  Lager
  • 67.
  • 68. Laufstrecke 99  m Reihenfolge   vom  Beleg geht  das  evtl.   noch  besser?
  • 69. 54  m Laufstrecke Op7mierung 99  m Reihenfolge   vom  Beleg op7mierte   Reihenfolge 46  %
  • 70. 280  m 181  m Laufstrecke Reihenfolge   vom  Beleg op7mierte   Reihenfolge Op7mierung 35  %
  • 71. 784  m 458  m Laufstrecke Reihenfolge   vom  Beleg op7mierte   Reihenfolge Op7mierung 42  %
  • 72. 74  m 33  m Laufstrecke Reihenfolge   vom  Beleg op7mierte   Reihenfolge Op7mierung 55  %
  • 73.
  • 74. 70.000Belege pro Jahr Op#mierung  würde  sich  schon  lohnen... 8 MioMeter Laufstrecke
  • 75. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Wo ist das Problem?
  • 76. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com kann man nicht einfach alle Kombinationen ausprobieren?
  • 77. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com TSP - Traveling Salesman Problem • beschäftigt seit über 80 Jahren Generationen von Mathematikern • »NP-schweres« Problem • für n Knoten gibt es (n – 1)!/2 Varianten • Berechnung würde einfach zu lange dauern! Info:  h(p://www-­‐i1.informafk.rwth-­‐aachen.de/~algorithmus/algo40.php Info:  h(p://www.math.uwaterloo.ca/tsp/ Info:  h(ps://de.wikipedia.org/wiki/Problem_des_Handlungsreisenden
  • 78. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com TSP - Traveling Salesman Problem Knoten Varianten Laufzeit 3 1 1 msec 4 3 3 msec 5 12 6 msec 6 60 60 msec 7 360 360 msec 8 2.520 2,5 sec 9 20.160 20 sec 10 181.440 3 min 11 1.814.400 0,5 Stunden 12 19.958.400 5,5 Stunden 13 239.500.800 2,8 Tage 14 3.113.510.400 36 Tage 15 43.589.145.600 1,3 Jahre 16 653.837.184.000 20 Jahre
  • 79. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Wie soll das in FileMaker lösbar sein?
  • 80. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Ist es überhaupt lösbar? ?
  • 81. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com laut Recherchen gibt es ein paar ausreichend gute Näherungsverfahren... !
  • 83.
  • 84.
  • 86. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Demo
  • 87. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Das sieht vielversprechend aus.... Hey,  wir  haben  gerade  gelernt,   wie  man  JavaScript  in FileMaker  nutzen  kann!
  • 88. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Was am Ende dabei herauskam...
  • 89. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com ➊ Pathfinder in JavaScript • graphische Darstellung des Lagers in SVG • effizienter Pathfinder Algorithmus aus frei verfügbaren Quellen • automatisierte Codierung des Lagermodells für die Anwendung der TSP-Algorithmen 1000100010101001001001 0010010011101010101010 0100100101110101011101
  • 90. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com ➋ TSP Solver in JavaScript • eigene Bibliothek, die mit beliebigen Algorithmen als Plugins ergänzt werden kann • 2 effiziente Algorithmen aus frei verfügbaren Quellen: • Genetischer Algorithmus • Ameisen Algorithmus • Jede Menge Erkenntnisse auf dem Weg zur Lösung!
  • 91. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Die Lösung
  • 92. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Lösungsweg • Datenmodellierung in FileMaker • Darstellung des Hallengrundriss → SVG • Ermittlung der Wegteilstrecken → JavaScript • Berechnung der Routen → JavaScript • Einbindung der Ergebnisse in FileMaker • Zusatznutzen
  • 93. X,  Y,  Breite,  Tiefe,   Ausrichtung Rechteck-­‐ Koordinaten  für   SVG-­‐Template
  • 96. SVG  im   Webviewer Grundriss Regale Wegpunkte graphische  RepräsentaAon   der  Regal-­‐Datensätze jederzeit  aktualisierbar!
  • 97. Script  erzeugt 1.  Grundriss  als  Grafik 2.  Routentabelle  über   JavaScript
  • 98. Grundriss  Grafik  für   JavaScript  vorbereiten SVG  Quelltext   erzeugen  aus   Datensätzen SVG  in   Webviewer   anzeigen Webviewer  als   JPG  in  Medienfeld per  MBS  Plugin JPG  als  Base64   umwandeln für  JavaScript 1 2 3 4 5 2 1 3 4 5
  • 99. JavaScript  bekommt  die   Regal-­‐KombinaAonen   und  findet  für  alle   Einträge  die  kürzeste   Route per  Pixel-­‐Suche
  • 100. Jump  Point  Search  -­‐  Algorithmus Quelle:  h(p://zerowidth.com/2013/05/05/jump-­‐point-­‐search-­‐explained.html Demo:  h(p://qiao.github.io/PathFinding.js/visual/ Start Ziel
  • 101. alle  Verbindungen von  Regal  zu  Regal durch   Pathfinder-­‐ Algorithmus   automaAsch   ermiBelt inkl.  Längen
  • 102. Routentabelle mit  allen   Verbindungen  und   Strecken-­‐Längen von  Regal  zu  Regal =  56.953   Datensätze für  338  Regale
  • 103. Routeneintrag mit  Verbindung   von  Regal  zu  Regal Regale Koordinaten für  Pfad in  SVG-­‐Darstellung Länge
  • 104. Beleg  nach   Posi.onen   sor.ert hier  findet  die  »Magie«  sta;!
  • 105. Beleg  nach   Routen-­‐ Op.mierung   sor.ert hier  findet  die  »Magie«  sta;!
  • 106. Knotenpunkte  für  Regale  werden  übergeben Als  Ergebnis  kommen  Knoten  sorAert  zurück JavaScript   berechnet   unterschiedliche   Algorithmen
  • 107. JavaScript  Template in  der  FileMaker   Datei
  • 108. GeneAc   Algorithmus als  minified   JavaScript /* Genetic - minifed */ ! ! var Route_Genetic=function(){function H(c,a){var b=[];c.forEach(function(c) {b.push(a[c])});return b}function h(c){return parseInt(Math.random()*c)}function A(c,a,b) {solution=[];a=g[a].clone();b=g[b].clone();var d,f,e=a[h(a.length)];for(solution.push(e); 1<a.length;)d=a[c](a.indexOf(e)),f=b[c](b.indexOf(e)),a.deleteByValue(e),b.deleteByValue (e),e=q[e][d]<q[e][f]?d:f,solution.push(e);return solution}function B(c){w++;do m=h (c.length-2),n=h(c.length);while(m>=n);for(var a=0,b=n-m+1>>1;a<b;a++)c.swap(m+ a,n-a);return c}function C(c){w++;var a,b;do a=h(c.length>>1),b=h(c.length);while (a>=b);var d=c.slice(0,a);a=c.slice(a,b);c=c.slice(b,c.length);return a.concat(d).concat (c).clone()}function D(){for(var c=0;c<g.length;c++){for(var a=p,b=c,d=g[c],f=q[d[0]][d [d.length-1]],e=1;e<d.length;e++)f+=q[d[e]][d[e-1]];a[b]=f}c=0;a=p[0];for(b=1;b<g.length;b+ +)p[b]<a&&(a=p[b],c=b);r={bestPosition:c,bestValue:a};if(void 0===t||t>r.bestValue)s=g [r.bestPosition].clone(),t=r.bestValue}function I(c){var a;for(a=0;a< k.length;a++)if(c<=k[a])return a}function J(c){for(var a=[],b=0;b<c;b++)a.push(b);return a.shuffle()}var x=100,l=30,y,E,F,w,q,t,s,G,r,g,p,u,k,z;Array.prototype.clone=function() {return this.slice(0)};Array.prototype.shuffle=function(){for(var c,a,b=this.length-1;b;c=h (b),a=this[--b],this[b]=this[c],this[c]=a);return this};Array.prototype.indexOf=function(c){for (var a=0;a<this.length;a++)if(this[a]===c)return a};Array.prototype.deleteByValue=function (c){c=this.indexOf(c);this.splice(c,1)};Array.prototype.next= function(c){return c===this.length-1?this[0]:this[c+1]};Array.prototype.previous=function(c) {return 0===c?this[this.length-1]:this[c-1]};Array.prototype.swap=function(c,a){if(! (c>this.length||a>this.length||c===a)){var b=this[c];this[c]=this[a];this[a] =b}};Array.prototype.roll=function(){for(var c=h(this.length),a=[],b=c;b<this.length;b++) a.push(this[b]);for(b=0;b<c;b++)a.push(this[b]);return a};Array.prototype.reject=function(c) {return $.map(this,function(a){return 0>$.inArray(a,c)?a:null})};return{init:function(c, a,b){y=c;E=a;F=b;z=H(y,F)},run:function(){w=0;t=void 0;s=[];G=0;r;g=[];p=Array(l);u=Array (l);k=Array(l);q=Array(z.length);var c=y,a=E,b=c.length,d,f,e,h,v=[];for(d=0;d<b;d++)if(e=c [d],void 0!==a[e])for(v[d]=[],f=0;f<b;f++)h=c[f],e!=h&&void 0!==a[h]&&(v[d][f]=a[e] [h]),e==h&&void 0!==a[h]&&(v[d][f]=0);q=v;for(c=0;c<l;c++)g.push(J(z.length));D();for (c=0;c<=x;c++){G++;a=[];a.push(g[r.bestPosition]);a.push(B(s.clone()));a.push(C(s.clone ()));a.push(s.clone());for(b=0;b<p.length;b++)u[b]=1/p[b];for(b=d= 0;b<u.length;b++)d+=u[b];for(b=0;b<k.length;b++)k[b]=u[b]/d;for(b=1;b<k.length;b++)k[b] +=k[b-1];for(b=4;b<l;b++)a.push(g[I(Math.random())]);g=a;a=[];for(b=0;b<l;b++). 9>Math.random()&&a.push(b);a.shuffle();b=0;for(d=a.length-1;b<d;b+=2)f=a[b],e=a[b +1],child1=A("next",f,e),child2=A("previous",f,e),g[f]=child1,g[e]=child2;for(a=0;a<l;a++). 01>Math.random()&&(.5<Math.random()?g[a]=C(g[a]):g[a]=B(g[a]),a--);D()}return {distance:t,route:s}},setPopulation:function(c){l=c},setIterations:function(c) {x=c},getPopulation:function(){return l}, getIterations:function(){return x}}}(); Größe: nur  3  Kilobyte
  • 109. Zusatznutzen: graphische   Repräsentafon  der   Regal-­‐Datensätze jederzeit   aktualisierbar interakfve   Anwendungen   möglich Darstellung  als  GUI   nutzen!
  • 110. interakAve   Lager-­‐ Auswertung   als  Heatmap Klick  aufs   Regal  zeigt   Zeitreihe  und   Durchsatz-­‐ Zahlen
  • 111. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Fazit
  • 112. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Fazit Praxis-Beispiel • Die angewandten Methoden wären aufgrund ihrer Komplexität mit FileMaker Bordmitteln nicht abbildbar gewesen • Die Algorithmen zur Lösung der Aufgabe konnten als fertige Bausteine genutzt werden • Durch die Verwendung von JavaScript ergab sich eine einfache und effiziente Möglichkeit für die Einbindung der Algorithmen in die eigene Lösung
  • 114. The Power of JavaScript neugierig geworden...?
  • 116. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Download • Vortragsfolien • Demo-Datei JavaScript in FileMaker • http://blog.marcel-more.de/ • Konferenz-Server @mmore
  • 117. Marcel Moré The Power of JavaScript FileMaker Konferenz 2015 Hamburg www.filemaker-konferenz.com Vielen Dank unseren Sponsoren Danke für das Bewerten dieses Vortrages