CMV Meet-Up

What's New and What's coming

ESRI Developer Summit
March 8th, 2017

Presented by Tim McGee
github.com/tmcgee / MoosePoint Technology / @MoosePoint

CMV Meet-Up

  • CMV Version 2.0
  • Additional CMV Projects
  • CMV for Esri JS API 4.x
  • CMV.next

  • User Presentations

  • Dylan Schiemann of SitePen
    • TypeScript with Dojo 1.x

CMV Team

The Core Dev Team

Another dozen additional developers have
contributed code to this release.
Directly (PRs) and indirectly (e-mail).

CMV Version 2.0 Beta 1

  • Released Today!
  • Over 18 months of work
  • Over 350 commits


Release Notes
cmv.releasepage.co

CMV Version 2.0 Beta 1

"Beta" with Air Quotes


Many developers using the core enhancements in
production for 6 months or more.
Nearly a year for some.

Short beta period (3 months?) for more
developers to benefit and test.

CMV Version 2.0 Beta 1

Highlights

  • Controller Mixins
  • Dojo/i18n support - cmv and core widgets
  • New Layer Types
  • New Widgets
  • Dojo's Flat theme replaces DBootstrap
  • Updated Documentation
  • HTTPS Everywhere

CMV Version 2.0 Beta 1

New controller mixins are key

Provide additional functionality, flexibility and configuration options

require(window.dojoConfig, [
    'dojo/_base/declare',

    // minimal Base Controller
    'viewer/_ControllerBase',

    // *** Controller Mixins
    // Use the core mixins, add custom mixins
    // or replace core mixins with your own
    'viewer/_ConfigMixin', // manage the Configuration
    'viewer/_LayoutMixin', // build and manage the Page Layout and User Interface
    'viewer/_MapMixin', // build and manage the Map
    'viewer/_WidgetsMixin' // build and manage the Widgets

], function (
    declare,

    _ControllerBase,
    _ConfigMixin,
    _LayoutMixin,
    _MapMixin,
    _WidgetsMixin

) {
    var App = declare([

        // add custom mixins here...note order may be important
        _LayoutMixin,
        _WidgetsMixin,
        _MapMixin,

        // configMixin should be right before _ControllerBase so it is
        // called first to initialize the config object
        _ConfigMixin,

        // controller base needs to be last
        _ControllerBase
    ]);
    var app = new App();
    app.startup();
});
    				

CMV Version 2.0 Beta 1

Mixin for WebMaps


require(window.dojoConfig, [
    'dojo/_base/declare',
    'viewer/_ControllerBase',
    'viewer/_ConfigMixin',
    'viewer/_LayoutMixin',
    'viewer/_MapMixin',
    'viewer/_WidgetsMixin'

    'viewer/_WebMapMixin'
],
    				

CMV Version 2.0 Beta 1

Mixin for WebApp Builder widgets


require(window.dojoConfig, [
    'dojo/_base/declare',
    'viewer/_ControllerBase',
    'viewer/_ConfigMixin',
    'viewer/_LayoutMixin',
    'viewer/_MapMixin',
    'viewer/_WidgetsMixin'

    'viewer/_WABMixin'
],
    				

CMV Version 2.0 Beta 1

Mixin for Calcite Maps


require(window.dojoConfig, [
    'dojo/_base/declare',
    'viewer/_ControllerBase',
    'viewer/_ConfigMixin',
    'viewer/_LayoutMixin',
    'viewer/_MapMixin',
    'viewer/_WidgetsMixin'

    'config/_CalciteMixin'
]
    				

CMV Version 2.0 Beta 1

Mixins for Esri JS API 4.x


require(window.dojoConfig, [
    'dojo/_base/declare',
    'viewer/_ControllerBase',
    'viewer/_ConfigMixin',

    // 'viewer/_LayoutMixin',
    // 'viewer/_MapMixin',
    // 'viewer/_WidgetsMixin'

    'config/_Layout4Mixin',
    'config/_Map4Mixin',
    'config/_Widgets4Mixin'
]
    				

CMV Version 2.0 Beta 1

New Layers

  • Vector Tile layer
  • WFS Layers
  • User-defined Layer types (ex. GeoJSON)

CMV Version 2.0 Beta 1

New Widgets

  • Locale
  • Legend (wraps Esri widget)
  • Basemaps Gallery
  • Esri Search widget

CMV Version 2.0 Beta 1

New Widget Types

  • loading
  • layout
  • layer
  • User-defined widget types

CMV Version 2.0 Beta 1

Demo


Demo

Additional CMV Projects

CMV for Esri JavaScript 4.x

  • Current for Esri JavaScript API 4.3
  • Both 2D and 3D maps

CMV for Esri JavaScript 4.x

All current Esri layer Types


csv: 'esri/layers/CSVLayer',
dynamic: 'esri/layers/MapImageLayer',
elevation: 'esri/layers/ElevationLayer',
feature: 'esri/layers/FeatureLayer',
georss: 'esri/layers/GeoRSSLayer',
group: 'esri/layers/GroupLayer',
imagery: 'esri/layers/ImageryLayer',
mesh: 'esri/layers/IntegratedMeshLayer',
osm: 'esri/layers/OpenStreetMapLayer',
pointcloud: 'esri/layers/PointCloudLayer',
scene: 'esri/layers/SceneLayer',
stream: 'esri/layers/StreamLayer',
tile: 'esri/layers/TileLayer',
vectortile: 'esri/layers/VectorTileLayer',
webtiled: 'esri/layers/WebTileLayer'
    				

CMV for Esri JavaScript 4.x

  • All current Esri widgets
  • Core CMV widgets converted.
    Remainder require Esri widgets:
    • Bookmarks
    • Draw
    • Edit
    • Measurement
  • Widget themes

CMV for Esri JavaScript 4.x

Demos


2D Map
3D Map
2D Map with Calcite
3D Map with Calcite

CMV.next

What's Next?

  • Much more frequent releases ;)

  • Public repo for 4.x release
  • "CMV" namespace integrating 3.x and 4.x
  • 2D and 3D maps in same app
  • Continued 4.x support as Esri reaches feature parity with 3.x

CMV.next

What's Next?

  • Much more frequent releases ;)

  • Separate, centralized repo for core widgets
  • Additional layouts and themes
  • CDN for CMV? Publish via npmjs?
  • Offline Mobile Viewer / Editor

CMV Community

CMV Community

Thank You!

Contact

Tim McGee
MoosePoint Technology

github.com/tmcgee
tim@moosepoint.com
@MoosePoint

github.com/cmv/cmv-meetup-2017