24
Fusion Overview Fusion Overview Paul Spencer CTO [email protected] Jason Fournier Product Manager [email protected] www.dmsolutions.ca/technology/ fusion.html

Fusion Overview Paul Spencer CTO [email protected] Jason Fournier Product Manager [email protected]

Embed Size (px)

Citation preview

Page 1: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

Fusion OverviewFusion OverviewPaul Spencer

CTO

[email protected]

Jason Fournier

Product Manager

[email protected]

www.dmsolutions.ca/technology/fusion.html

Page 2: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca
Page 3: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

What is Fusion?What is Fusion?

• Fusion is an application SDK for Web Mapping

• Open Source core engine and base widgets

• Zero Programming (well, nearly)

• Extensible development platform

• Clean separation of interface from functionality

• Highly customizable presentation

• Standards-based• HTML, CSS, JavaScript, JSON, XML etc• OGC compatible

Page 4: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

Fusion CapabilitiesFusion Capabilities

• Dynamic application generation from ApplicationDefinition resource and an HTML template

• Supports MapGuide Tiles and Untiled overlayers

• Internationalization support

• Authentication integration

• Functional parity with the AJAX viewer

Page 5: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

Components of FusionComponents of Fusion

• Core • Platform-independent (entirely javascript)• Provides main API for building applications• OpenLayers (www.openlayers.org)

• Widgets• Discrete, independent functionality (zoom,

pan, …)• Plug-’n-play (zero programming)

• UI Library• Jx provides common application building blocks• Tabs, Menus, Buttons etc …• Prototype, Scriptaculous

• Platform-specific plugins• MapGuide, MapServer, OGC, and potentially

others

Page 6: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

Fusion Developers are:Fusion Developers are:

1.Web designers• Work in DreamWeaver, other HTML editor

• Use HTML, CSS, minimal javascript• Concerned primarily with aesthetics, layout, look and feel, usability

2.Web developers• Work in favourite IDE (Zend,text editor)

• Use Javascript, PHP, ASP .NET, JSP• Concerned with functionality

Page 7: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

Why Fusion?Why Fusion?

• The AJAX viewer is:• not flexible• frames based• difficult to customize functionality

• difficult to modify layout

Page 8: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

Fusion HistoryFusion History

• Started as an internal tool kit supporting DMSG Consulting

• Initially targeted at MGOS only

• Changed to generic core with platform-specific plugins for MGOS and MapServer

Page 9: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

Fusion HistoryFusion History

• Demo’d to ADSK, interest shown in having a more flexible framework

• Negotiated integration with core development team

Page 10: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

MGOS IntegrationMGOS Integration

• Undergoing modification for integration with MGOS• ApplicationDefinition• JSON output in MGOS• New/modified widgets

• Will be installed with existing viewer for several versions

• Eventually deprecate existing viewer

• Prebuilt templates/samples

Page 11: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

Fusion RoadMapFusion RoadMap

• Sep 21, 2007• Integrate code base into MGOS SVN

• Oct 15, 2007• Complete replication of existing AJAX viewer functionality (plus new stuff)

• Q4, 2007• OGC widget pack• LWE widget pack• Redlining widget pack

Page 12: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

Getting FusionGetting Fusion

• For now, available from:• mapguide.osgeo.org/download/releases

• Demo at:• demo01.dmsolutions.ca/mapguide/fusion/demo

• Will be integrated into MGOS 2.0

Page 13: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

Creating a Fusion ApplicationCreating a Fusion Application

• Fusion needs two things to make an application:

1.An XML Application Definition• Typically ApplicationDefinition.xml

2.An HTML web page • called a Template in the docs

Page 14: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

Application DefinitionApplication Definition

• New resource type for MGOS• Structured XML similar to WebLayout

• Major blocks:• MapSet - lists maps available to the application

• WidgetSet - relates widgets to a map

• Widgets• Are the control block for a widget• Name tag is where the widget goes• Type tag identifies the widget to use

Page 15: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

TemplatesTemplates

• A template is just an HTML file• Should have a valid doctype• <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

• Uses ‘id’ of tags to identify where widgets go

• Any tag will do• div, span, a, li are commonly used

• Includes fusion.js• Calls Fusion.initialize()

Page 16: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

Example of a TemplateExample of a Template

• <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

• <html>• <head>• <title>Simple Fusion Application</title>• <script type="text/javascript"

src="../../../lib/fusion.js"></script>• <script type="text/javascript">• window.onload = function() { Fusion.initialize(); }• </script>• </head>• <body>• <div id="ZoomIn"></div>• <div id="Map"></div>• </body>• </html>

Page 17: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

How does it Work?How does it Work?

• Load config.xml• Load ApplicationDefinition.xml • Loop through WidgetSet/Widget and

• Find elements by ID using Widget Name

• Request widget javascript file

• Load widget javascript files• Load widget dependencies• Create widgets• Create a Session

Page 18: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

Fusion WidgetsFusion Widgets

• Navigation & Map State• Zoom, Pan, Legend, Layer Manager, Extent History, Overview Map

• Selection• Rectangle, circle, polygon

• Media• Print, download, DWF

• Info• Cursor Position, MapTips, Scale, etc

• Tasks• Buffer, Search, InvokeURL, About, Help, …

Page 19: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

JxJx

• JavaScript-based UI library• Open Source (MIT) www.jxlib.org• Cross-browser compatible• Provides basic building blocks for creating applications

Button

Toolbar

Tab

Panel

Grid

Menu

Color

Layout

Splitter

Tree

Page 20: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

Using Jx in FusionUsing Jx in Fusion

• Fusion uses:• Toolbar• Button• Menu• Tree• Layout

• Application can use any Jx component to build the look and feel

Page 21: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

Customizing JxCustomizing Jx

• Jx components use • Simple, semantic HTML structures

• UL, LI, A, DIV, SPAN, IMG• Tables are only for tabular data!

• CSS 2 for presentation• CSS is ‘hack’ free• May use browser-specific stylesheets (IE)

• Change entire look and feel through a single CSS style sheet (500-600 lines)

Page 22: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

Jx Builds OnJx Builds On

• Prototype• www.prototypejs.org• Javascript framework for class-driven development in an AJAX environment

• Scriptaculous• script.aculo.us• Javascript visual effects library built on Prototype

• Animation, drag-n-drop, ajax controls …

Page 23: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

OpenLayersOpenLayers

• www.openlayers.org

• OpenLayers is a javascript framework for creating tiled and untiled maps

• Unique layering system allows combining many different map sources in a single map view

• Advanced ‘Mashup’ capability

• Active development community

Page 24: Fusion Overview Paul Spencer CTO pspencer@dmsolutions.ca Jason Fournier Product Manager jfournier@dmsolutions.ca

Questions?Questions?

• Time for a quick demo?