Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget...

53
Guidance for Web AppBuilder Widget Development David Howes, Ph.D. David Howes, LLC http://dhowes.com/ 2018 Washington GIS Conference May 23 rd , 2018

Transcript of Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget...

Page 1: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Guidance for Web AppBuilder Widget Development

David Howes, Ph.D.David Howes, LLChttp://dhowes.com/

2018 Washington GIS ConferenceMay 23rd, 2018

Page 2: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Agenda

• Widget examples

• Widget implementation

• Widget development and deployment

• Tips, tricks and resources

• Audience engagement

• Takeaway messages

Page 3: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

David Howes, Ph.D.

• Education• B.Sc. (Hons) in Geography – University of Salford,

England• M.Sc. in Geographic Information Systems – University of

Edinburgh, Scotland• Ph.D. in Geomorphology – State University of New York

at Buffalo, New York

• 28 years in GIS

• Established David Howes, LLC in 2012

• Specialty: GIS tools, processes and supporting infrastructure

Page 4: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Acknowledgements

• Dean Anderson, Eric McAvoy - Polk County, OR

• John Sharrard, Esri

• Seattle Department of Transportation

• Toole Design Group

• Mike Murnane - City of Tacoma

Page 5: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Example: Seattle Department of

Transportation/Toole Design Group Widgets

Page 6: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Web AppBuilder

Page 7: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Task

• Create Web AppBuilder widgets to support the Seattle Bike and Pedestrian Safety Analysis (BPSA) project at Seattle Department of Transportation (SDOT)

• Web AppBuilder application created by SDOT

• Data developed by Toole Design Group

Page 8: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Seattle Department of Transportation Widgets

• Exploration widget• Modified existing Query widget• Generic• Configurable

• Attribute Table widget• Modified existing Attribute Table widget• Generic• Honors map layer definition query (if set)

• Countermeasures widget• New widget• Specific to BPSA project• Configurable

Page 9: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Query Widget

Page 10: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Exploration Widget

Page 11: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Exploration Widget

Page 12: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Exploration Widget

Page 13: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Exploration Widget

Page 14: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Countermeasures Widget

Page 15: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Countermeasures Widget

Page 16: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,
Page 17: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Example: Polk County Widgets

Page 18: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Polk County Widgets

• Template Test• http://geoservices.co.polk.or.us/tt/

• Template Test widget

• PCMaps• http://geoservices.co.polk.or.us/pcmaps/

• Draw widget

• Measure widget

• Draw-Measure widget

Page 19: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Demo: Polk County Widgets

Page 20: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Widget Implementation

Page 21: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Web AppBuilder Options

• ArcGIS Online• Online application

• https://www.esri.com/en-us/arcgis/products/web-appbuilder/overview

• Developer Edition• Desktop version

• Uses Node.js server

• https://developers.arcgis.com/web-appbuilder/

Page 22: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Using the Developer Edition

• Download the SDK zip file

• Unzip to your local drive

• Double-click on the startup file

<Web AppBuilder folder>\startup.bat

• Sign in to ArcGIS Online when prompted

Page 23: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,
Page 24: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,
Page 25: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,
Page 26: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,
Page 27: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Widget Folders

• A Web AppBuilder widget is a collection of files in a folder

• Two key folder locations• Client - source code for use in any application

<Web AppBuilder folder>\client\stemapp\widgets

• Server - code for specific applications

<Web AppBuilder folder>\server\apps\<app ID>\widgets

Page 28: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Widget Installation

When you install a widget using the AppBuilder program

• The widget folder is copied from the client widgets folder to the application’s widget folder

• A config file will be placed in the application’s widget configs folder, if required

• The application’s config file is updated to record the installation of the widget

Page 29: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Widget Development

Page 30: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Widget File Structure

<Web AppBuilder folder>\server\apps\<app ID>\widgets\

css\ - Custom styles

images\ - Images

nls\ - National Language Support files

setting\ - Settings page files

config.json - Configuration file

manifest.json - Widget setup file

Widget.html - Widget UI file

Widget.js - Widget code file

Page 31: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Widget Demos

1. Basic example• No settings folder/file(s)

• No config file

• No NLS (National Language Support) file(s)

• No custom stylesheet

2. Add GIS operationsQuery polygons

3. Add config and NLS files

Page 32: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Demo: Widget Development

Page 33: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Where to Develop

Three key folder locations

• Server - code for specific applications

<Web AppBuilder folder>\server\apps\<app ID>\widgets

• Project - somewhere on your drive, e.g.,

C:\WAB Development\widgets

• Client - source code for use in any application

<Web AppBuilder folder>\client\stemapp\widgets

Page 34: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Basic Coding Strategy

• Applies to a development environment only

• Develop and test code in application folder

• Synchronize files with client and project folders

Don’t edit production files directly

Page 35: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Beyond Compare for File Synchronization

Page 36: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Coding Editors

• Text editor

E.g., Notepad++

https://notepad-plus-plus.org/

• Integrated Development Environment (IDE)

E.g., Visual Studio Code

https://code.visualstudio.com/

Page 37: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Debugging

• Chrome Developer Tools

https://developers.google.com/web/tools/chrome-devtools/

• Firefox Developer Tools

https://developer.mozilla.org/en-US/docs/Tools

Page 38: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Widget Deployment

• Can’t deploy custom widgets to ArcGIS Online due to security concerns

• Can deploy custom widgets to ArcGIS Enterprise with some restrictions

Page 39: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Tips, Tricks and Resources

Page 40: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Esri Help

• Developer Summit Technical Session videos

• GeoNET• Web AppBuilder Custom Widgets group

• https://community.esri.com/groups/web-app-builder-custom-widgets

• Help filesNote documentation for many out-of-the-box widgets is lacking, but Esri is working on it

Page 41: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Don’t Lose Your Work

• Keep plenty of backups

• Check your backup(s) before you remove your widget from your application

• In builder• Remove widget

• Save application

Widget folder (in server\apps\<app ID>\widgets) is deleted

Page 42: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Code Reuse

Use existing code where possible

• Copy an existing widget and modify? Or,

• Start with an empty widget and copy existing code into the widget?

Depends on complexity

Page 43: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Dependencies/Conflicts

• Include libraries in your widget folder, if required

E.g., jimu.js (subset)

• Watch for conflicts• Style classes

• JavaScript variable/class names

Page 44: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Widget Availability

• If you don’t see your widget in the builder

• Close Web AppBuilder

• Delete the repoitems file

<Web AppBuilder folder>\server\db\repoitems

• Restart the Web AppBuilder server

• Note that this was a bug in earlier versions that should be fixed now

Page 45: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

JavaScript API Development

• Develop logic in single web pages

• Easier to learn from and reuse Esri samples

• Bear in mind slight quirks in converting into widget code

E.g., standalone functions in the web page typically become functions attached to return object properties in the widget code:• Single page:

function initializeSelection() {}

• Widget:initializeSelection: function () {}

Page 46: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Advanced Support Tools

See

• Esri 2017 Developer Summit Tech Sessions• Web AppBuilder for ArcGIS Advanced Development

Tools and Techniques

• https://www.youtube.com/watch?v=WpA5ld-EGp4&index=14&t=0s&list=PLaPDDLTCmy4Z844nQ0aFdRCTICoNDPf7E

• Topics include• Task Runners

• Generators

Page 47: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Esri Trends - 4.x

ArcGIS API for JavaScript 4.x

• https://developers.arcgis.com/javascript/latest/guide/index.html

• Used for 3D Web AppBuilder applications

• May be coming later this year for 2D applications

Page 48: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Esri Trends - TypeScript

• http://www.typescriptlang.org/

• Open source language maintained by Microsoft

• Supports strong typing (no var)

• Transpiles to JavaScript• You write TypeScript code

• The application uses the transpiled JavaScript file

Page 49: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Your Turn

Page 50: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Takeaway Messages

Page 51: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

David’s Takeaway Messages

• Start very small

• Keep plenty of backups

• Develop clean code

Page 52: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Eric’s Takeaway Messages

• Start with things that already exist

• Make the most of the GeoNET Web AppBuilder Community

• Don’t be afraid to break things

Page 53: Guidance for Web AppBuilder Widget Development http ... Washington GIS-Howes... · Agenda •Widget examples •Widget implementation •Widget development and deployment •Tips,

Thanksfor

Coming

http://gispd.com/eventshttp://dhowes.com/presentations

Slides available at: