LocalLayerWidget Version 2.5 and AccessifizrWidget Layer - 09/28/2017

190217
507
01-08-2015 07:55 AM
Labels (1)
AdamDrackley
Frequent Contributor

I've been having a blast playing around with the new Web AppBuilder, and have taken a few cracks at putting together some custom Widgets that I'd like to share with the community.  I hope these can assist in everyone's future Mappmaking endeavours!

LocalLayerWidget

LocalLayerWidget v 2.5

September 28 2017 : LocalLayerWidget v2.5 released:  This major release includes the following enhancements for the widget.  Thanks to everyone who's donated!:

Release LocalLayerWidget 2.5 · cmndrbensisko/LocalLayer · GitHub 

  • Support for 2.5 Release of ArcGIS Web App Builder
  • Support for Custom Layers via Transformers
  • Demos and sample apps
  • Prototype 3D Widget
  • Dynamic GUI changes at runtime and css insertion via odds.json/odds.css
  • And more!

November 14, 2016: LocalLayerWidget v2.2 released:  This major release includes the following enhancements for the widget:

Release LocalLayer v2.2 · cmndrbensisko/LocalLayer · GitHub 

  • Related Table Viewing and Editing
  • ImageService Viewing and Popups
  • WMS Service Viewing and Popups
  • Ability to integrate with the IncidentAnalysis widget
  • Hide Layer In Legend capability added
  • Dynamic mode added, allowing for URL-fed configuration files
  • And more!

May 18, 2016: LocalLayerWidget v.2.0 released:  This substantial change for Web App Builder v.2.0. removes the need to edit any core files in the Web App Builder, unlike previous versions.  A slight change will still be necessary for the AttributeTable widget to work properly with LocalLayerWidget layers.

  • https://github.com/cmndrbensisko/LocalLayer/releases/tag/v2.0
  • Enhancements:
    • Added autorefresh capability for dynamic layers, and sub-minute decimal values can be specified for time.
    • Added support for non-consecutive sublayer numbering to support 10.3.1 mapservices
    • Editor Tracking via an organizational Active Directory instead of ArcGIS Online User now supported
  • Bug Fixes:
    • View Attachments now works for Dynamic Layers
    • Addition of GeoJson layers fixed
    • Fix to MapService sublayer visibility when no sublayers are selected to display by default.

Mar 29, 2016: LocalLayerWidget v.1.3.1 released; Contains bugfixes to v.1.3. related to custom rendering for Feature Layers and toggling sublayer visibility in the LayerList widget.

Mar 22, 2016: LocalLayerWidget v.1.3 is now available!  (Note the version naming change; Version 1.3 refers to its compatibility with v1.3 of the WAB - This is indeed the latest version of the widget as of March 22, 2016).  Be sure to read the github page to see what tweaks need to be made to ensure that everything continues running smoothly in version 1.3 of the Web AppBuilder.

  • Includes support for GeoJSON and WebTileLayers
  • Custom Symbology and Labelling Options for Feature Layers
    • Currently requires the use of playground to generate custom json layer and label styling for Feature Layers.  For more information, please follow the instructions on the Github page.

Feb 10, 2015: LocalLayerWidget v.1.5 is now available!  This release contains full support for adding Tiled layers to your application directly from ArcGIS Server, in addition to the Basemap, Dynamic, and Feature layers available before.  Feel free to grab the widget from our Release page located at https://github.com/cmndrbensisko/LocalLayer/releases.

Feb 2, 2015: LocalLayerWidget v.1.2 is now available!  This release provides a great GUI developed by Robert Scheitlin to more easily add Feature, Dynamic, and Basemap layers to your ArcGIS Web AppBuilder Applications.  Take it for a spin, and please keep us informed of any bugs or desired enhancements through our Github Issue Tracker located at https://github.com/cmndrbensisko/LocalLayerWidget/issues.

Jan 12, 2015: Note that LocalLayerWidget v.1.1 is now available, which provides Click-To-Identify support and the option to add Feature and Basemap layers in addition to Dynamic layers.

The LocalLayer Widget is intended to allow the direct addition of MapServices to an ArcGIS Web AppBuilder application, without needing to wrap the desired services in an ArcGIS Online/Portal Web Map.

https://github.com/cmndrbensisko/LocalLayerWidget

Basically, your basemap will still need to come from Portal/AGOL, but otherwise you just provide direct URLs to your own MapServices in the widget's configuration settings.  The MapServices should load and display as usual in the map, and cooperate with the Legend, LayerList, and Attribute Table widgets. Click-To-Identify functionality won't work currently, though, because the current WAB implementation relies on Portal for all the popup info.  As stated in the January 12th 2015 release, popups are fully customizable.  Note that it's not an in-panel widget, so you'll need to follow a few extra steps in the project's Readme file.

AccessifizrWidget

Let's make Mapps accessible for everyone!  With an eye on WCAG compliance, the Accessifizr Widget is designed to help make web applications keyboard navigable without having to modify core application code and UI.

https://github.com/cmndrbensisko/AccessifizrWidget

Information about how to configure this widget is available in the core Accessifizr.js library project available here‌, but the gist is that you create a JSON-based 'roadmap' detailing the keyboard navigation of your web application, and how it should change in response to users entering modal menus, hitting the escape button, etc.  For applying descriptive alternate text to page elements, the widget leverages dojo's built-in internationalization support to specify multilingual alternate text strings.  The end result is a web app that, hopefully, is a bit easier to use for people with mobility or visual challenges.

507 Replies
CCWeedcontrol
Frequent Contributor

Not sure what you mean by "Hidden", can you elaborate what you mean and what you changed please?

0 Kudos
RebeccaWatson1
Regular Contributor

I am experiencing these same issues. Map not loading and getting stuck on the Configure Local Layer Widget screen - once I am here it will let me add a service to the list but the OK, Cancel and Close buttons no longer respond. In fact it appears that nothing responds except adding in more layers to the list.

I have tried this with 2.2 and 2.3 versions of WAB and I'm using the latest LocalLayer widget from github.

My server is secured with SSL and I'm wondering if this is the same for you CCweedcontrol

CCWeedcontrol
Frequent Contributor

yes some services are secured. The other problem i am having is i can't print any layer if i use the LocalLayer Widget secured or none secured.

RebeccaWatson1
Regular Contributor

I'm only just getting started with this - we need to be able to access the services direct from our server like in our Flex app, so it's my first port of call in trying to transfer over from Flex to JS. Printing via the flex app was tricky with secured services too, so I'm not looking forward to that either!

I will report back if I get anywhere with it.

0 Kudos
RebeccaWatson1
Regular Contributor

I'm still just getting started with this but I have managed to solve the initial problem of the crashing by starting from the beginning. I'm not entirely sure what I have done differently but really just to say that you might want to double check where you have put your reference in the \client\stemapp\predefined-apps\default\config.json and make sure that the folder for the widget is put here client\stemapp\widgets\LocalLayer and that your reference in the config.json (mine shown below) exactly matches where you have put your folder.

  "widgetOnScreen": {
    "widgets": [{
      "uri": "themes/FoldableTheme/widgets/HeaderController/Widget",
      "position": {
        "left": 0,
        "top": 0,
        "right": 0,
        "height": 40,
        "relativeTo": "browser"
      },
      "version": "2.3"
    }, {
      "uri": "widgets/LocalLayer/Widget",
      "visible": false
    }, {
      "uri": "widgets/Scalebar/Widget",
      "position": {
        "left": 7,
        "bottom": 25
      },‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
0 Kudos
CCWeedcontrol
Frequent Contributor

I removed it since i couldn't get to work, then i reinstalled it and got to work but since i couldn't print i removed it. Now i am trying to add the locallayer to WAB to test in my response to Adam and i am getting the same error as before. Not sure what i am doing wrong.

I placed the LocalLayer widgetfolder  in WebAppBuilderForArcGIS 2.3\client\stemapp\widgets. See pic attached

I have added the code to WebAppBuilderForArcGIS 2.3\client\stemapp\predefined-apps\default\config.json.

"widgetOnScreen": {
    "widgets": [{
      "uri": "themes/FoldableTheme/widgets/HeaderController/Widget",
      "position": {
        "left": 0,
        "top": 0,
        "right": 0,
        "height": 40,
        "relativeTo": "browser"
      },
      "version": "2.3"
    }, {
        "uri": "widgets/LocalLayer/Widget",
        "visible": true
    },{
        "uri": "widgets/eQuery/Widget",
        "visible": false
    },{
      "uri": "widgets/Scalebar/Widget",
      "position": {
        "left": 7,
        "bottom": 25
      },
      "version": "2.3"
    },‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
0 Kudos
by Anonymous User
Not applicable

quick question for ya'll ..  does this widget make sites faster?  In terms of if it's noticeably so.  Conceptually, since this enables the WAB app site to directly contact services instead of having to download all the config files etc from Esri AGOL servers first, and jump through the webmap to get to the REST services, I'd expect LocalLayers to be faster. Is it noticeable for anyone? Just looking for general anecdotes here. Like... Yes, and by a few seconds, or No, not really.

I like the idea of how this removes a point of failure (Esri servers) and conceptually simplifies/speeds up the app. On the other hand it's one more thing to check when WAB updates.  I haven't used this LocalLayers widget yet, but it's on my to-do list over the next few weeks. Hopefully the config of popups is flexible -- to programmatically turn on ALL popups across 600 sublayers on a large service I have. I see that popups can be config'd with this widget.  Therefore I'd think this will be quite simple, just find and replace a particular parameter value to True or something, or maybe even change a parameter to True to activate popups across all sublayers, for a given service. (Which would be useful if not already implemented)

0 Kudos
BarnabyRockwell
Deactivated User

I don't see an appreciable difference in performance between an app that calls an AGOL Web Map (default esri WAB design/intention) versus an app that uses LL widget.  This is good, as it means LL widget is well-designed and is doing its job efficiently.

AdamDrackley
Frequent Contributor

Thanks Barnaby, that is super good to hear.  I am working on a new version with some slight rearchitecture under the hood, if you want to give it a test drive.

GitHub - cmndrbensisko/LocalLayer at LocalLayer2.3 

To Kevin's point, I'd imagine since the LocalLayer widget removes some of the 'configuration in the cloud' dependency from your app, it would skip the step that pulls down a big json object from ArcGIS Online to initiate the map.  On the other hand, it would then need to trundle through an equally large local configuration file to initialize the LocalLayer widget.

Unfortunately, sublayers need to have their popups enabled individually via the Widget settings.  Fortunately, it would be possible to make a script to generate the appropriate JSON configuration 'snippet' by trundling through your service and creating popups containing all fields within each sublayer; This might be a useful tool for other folks who use enormous services.

BarnabyRockwell
Deactivated User

Hi Adam,

First test of beta widget in WD 2.3 app looks good, no issues so  far.

Could the Layer Name area in the Edit Dynamic Layer dialog be made bigger, and/or could the dialog be resizeable?