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

109485
507
01-08-2015 07:55 AM
AdamDrackley
Occasional Contributor III

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
BarnabyRockwell
Occasional Contributor III

Adam,

I am still getting severe WAB Dev hangs when adding new layers using the widget.  The hangs eventually stop, returning control to user, but this can take over 5 minutes of CPU thrashing for apps with lots of layers.

Cheers,

Barnaby

Untitled.jpg

0 Kudos
LukeMiles1
New Contributor II

Robert Scheitlin, GISP

Adam Drackley

Any word on if the Local Layer Widget needs to be upgraded to work with 1.3?

Thanks in advance

0 Kudos
BarnabyRockwell
Occasional Contributor III

I would think that an upgrade is needed.  For one thing, using WAB Dev 1.3, no layers appear in Attribute Table widget editing GUI when LL widget 1.2.2 is used with an app imported from 1.2.  However, the layers do appear in the Attribute Table widget itself, which appears to work properly so far.

But overall, the imported app, which uses 5 of Robert's 1.3 version widgets + LL widget 1.2.2, appears to work properly in all regards in WAB Dev 1.3.  So far, anyway.

AdamDrackley
Occasional Contributor III

Thanks for being the guinea pig on this, Barnaby.  I'll take a look at the widget's compatibility over the holidays, and hopefully it won't require any substantial changes.

BarnabyRockwell
Occasional Contributor III

I just encountered a problem, apparently with LL 1.2.2 widget, in an app developed in WAB Dev 1.2 and imported into 1.3.  A massive dynamic layer with hundreds of sub- and sub-sub layers isn't visible in the Layer List even though it is visible in the LL widget editing GUI.

But when the app is downloaded and installed, the massive layer does (sometimes) appear in the Layer List.  After more testing, the downloaded app is quite unstable with regard to that big dynamic layer...

Edit (1/5/16):  The same problem occurs with another layer.  Both of the problematic dynamic layers contain mainly thematic rasters and happen to be in png24 image format.  I don't know if that matters, but...

0 Kudos
BarnabyRockwell
Occasional Contributor III

Hi,

Is a WAB Dev 1.3-compatible version of LL widget in the works?  1.2.2 is DOA with WAB Dev 1.3 for me due to issues mentioned above.  Let me know if you want a more detailed description of the problems, and REST links to the services that are unstable in the Layer List of the app.

Cheers,

Barnaby

0 Kudos
AdamDrackley
Occasional Contributor III

Generally on my end, I'm seeing good behavior in 1.3, so I want to investigate what you guys are running into.  Barnaby, please send along some details from your end via email; If you can zip up a version of your app and send it along to me as an attachment, all the better.

I haven't encountered your particular issue, Jin.  Did you follow the layerInfos.js change outlined on the github page?

cmndrbensisko/LocalLayer · GitHub

Max, unfortunately I don't have a 'tick all' box in that menu, but that would be a great enhancement.  I can add it to the 10.3 rollout.  In the meantime, if you want to be sneaky, when you have that popup menu open in your browser, hit the F12 key and look for a 'console' that lets you enter Javascript commands.  Paste the following snippet into that console and hit Enter to select all your checkboxes,

var ele = document.querySelectorAll("input[type=checkbox]");for(var i=0;i<ele.length;i++){ele.checked=true;}

Regarding time-enabled layers, I've honestly never tested it.  Give it a try on your end, and let us know if the widget handles it!  If you have a time-enabled layer on a public server that you don't mind me poking for testing purposes, let me know.

If you're having issues with the 1.3 Attribute Table widget not displaying any of the LocalLayerWidget layers in a new map, this appears to be due to an odd change made to how the AttributeTable reads the current Map Layers.  In 1.2, it would read any layers added to the map by default, whether from ArcGIS Online or the LocalLayerWidget.  In 1.3, it seems to only read ArcGIS Online layers by default.

Fortunately, this can be fixed in\widgets\AttributeTable\setting\Setting.js in either your stemapp or an individual 1.3 app.  I'll update the documentation once we have all the other upgrade issues straightened out, but it seems to be as simple as changing line 375 from:

utils.readConfigLayerInfosFromMap(this.map, true, true)

to

utils.readConfigLayerInfosFromMap(this.map, false, true)

Changing that first 'true' to a 'false' will tell the menu to read all layers from the map as normal, instead of just ArcGIS Online layers.  changing the second 'true' to a 'false' will let the Attribute Table include MapNotes layers from AGOL WebMaps.

0 Kudos
BarnabyRockwell
Occasional Contributor III

Hi Adam,

I sent you my app.  All appears good except that one massive dynamic layer doesn't show up in Layer List.

Cheers,

Barnaby

----

Edit:  Adam, let me know if you haven't received my message.  I received a message indicating that the first message was unsent for some reason.  I resent it just in case.

0 Kudos
MaxMcCosham
New Contributor III

Thanks Adam, that console trick worked great!

I hope to be able to do some testing with time-enabled layers in the near future, I'll reply with what I find.

0 Kudos
BarnabyRockwell
Occasional Contributor III

Adam,

My message failed again to get to you, apparently.  Please send me a message and I'll reply.

Thanks,

Barnaby

0 Kudos