├── .dockerignore ├── .gitignore ├── .vscode └── tasks.json ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── README.md ├── config ├── .gitignore ├── defaults │ └── project.json └── projects │ ├── default │ ├── popups.json │ ├── profiles │ │ └── config.json │ ├── project.json │ └── widgets │ │ ├── Bookmark │ │ └── config.json │ │ ├── LayerList │ │ └── config.json │ │ └── eMapSwitcher │ │ └── config.json │ └── superiordemo │ ├── assets │ └── images │ │ ├── GIS-desktop-mobile.jpg │ │ ├── crossing.svg │ │ ├── highway.svg │ │ ├── hybrid.jpg │ │ └── hydro.svg │ ├── popups.json │ ├── profiles │ ├── config.json │ └── config.override.json │ ├── project.json │ └── widgets │ ├── Bookmark │ └── config.json │ ├── ElevationProfile │ └── config.json │ ├── ImportDataFile │ └── config.json │ ├── LayerList │ └── config.json │ ├── Legend │ └── config.json │ ├── Link │ └── config.json │ ├── Locate │ └── config.json │ ├── Measure │ └── config.json │ ├── Print │ └── config.json │ ├── Query │ └── config.json │ ├── Routes │ └── config.json │ ├── Search │ ├── config.json │ └── overrides.json │ ├── WMSLooping │ └── config.json │ ├── eDraw │ └── config.json │ └── eMapSwitcher │ └── config.json ├── css ├── .gitignore ├── _dijit.scss ├── _layerControl.scss ├── _mobile.scss ├── fonts │ ├── caret-square-o-down.svg │ ├── checkbox-checked.svg │ ├── checkbox-unchecked.svg │ ├── icomoon.eot │ ├── icomoon.svg │ ├── icomoon.ttf │ └── icomoon.woff ├── layout.css ├── layout.scss └── spectrum.css ├── gulpfile.js ├── icon.png ├── images ├── addContent.svg ├── arrow-down.svg ├── arrow-up.svg ├── arrow.svg ├── backward.svg ├── basemaps.svg ├── bookmarks.svg ├── clock.svg ├── close-popup.svg ├── close.svg ├── csv.svg ├── dijit │ ├── LICENSE │ ├── calendarArrows.png │ └── icons │ │ ├── editorIconsDisabled.png │ │ └── editorIconsEnabled.png ├── download2.svg ├── dragndrop-add.png ├── dragndrop-add.svg ├── dragndrop-denied.svg ├── draw.svg ├── draw │ ├── circle.svg │ ├── ellipse.svg │ ├── extent.svg │ ├── freeline.svg │ ├── freepoly.svg │ ├── gpslocation.svg │ ├── line.svg │ ├── point.svg │ ├── poly.svg │ ├── rect.svg │ └── text.svg ├── edit.svg ├── elevation.svg ├── exportFile.svg ├── fileicons │ ├── 7z.png │ ├── README │ ├── ai.png │ ├── aiff.png │ ├── asc.png │ ├── audio.png │ ├── bin.png │ ├── bz2.png │ ├── c.png │ ├── cfc.png │ ├── cfm.png │ ├── chm.png │ ├── class.png │ ├── conf.png │ ├── cpp.png │ ├── cs.png │ ├── css.png │ ├── csv.png │ ├── deb.png │ ├── divx.png │ ├── doc.png │ ├── dot.png │ ├── eml.png │ ├── enc.png │ ├── file.png │ ├── gif.png │ ├── gz.png │ ├── hlp.png │ ├── htm.png │ ├── html.png │ ├── image.png │ ├── iso.png │ ├── jar.png │ ├── java.png │ ├── jpeg.png │ ├── jpg.png │ ├── js.png │ ├── lua.png │ ├── m.png │ ├── mm.png │ ├── mov.png │ ├── mp3.png │ ├── mpg.png │ ├── odc.png │ ├── odf.png │ ├── odg.png │ ├── odi.png │ ├── odp.png │ ├── ods.png │ ├── odt.png │ ├── ogg.png │ ├── pdf.png │ ├── pgp.png │ ├── php.png │ ├── pl.png │ ├── png.png │ ├── ppt.png │ ├── ps.png │ ├── py.png │ ├── ram.png │ ├── rar.png │ ├── rb.png │ ├── rm.png │ ├── rpm.png │ ├── rtf.png │ ├── sig.png │ ├── sql.png │ ├── swf.png │ ├── sxc.png │ ├── sxd.png │ ├── sxi.png │ ├── sxw.png │ ├── tar.png │ ├── tex.png │ ├── tgz.png │ ├── txt.png │ ├── vcf.png │ ├── video.png │ ├── vsd.png │ ├── wav.png │ ├── wma.png │ ├── wmv.png │ ├── xls.png │ ├── xml.png │ ├── xpi.png │ ├── xvid.png │ └── zip.png ├── folder-plus.svg ├── folder.svg ├── forward.svg ├── ge.svg ├── geojson.svg ├── geojsonfile.svg ├── layers.svg ├── legend.svg ├── link.svg ├── locate.svg ├── location.svg ├── lock-locked.svg ├── lock-unlocked.svg ├── maple.gpl ├── maptile.png ├── maximize.svg ├── measure.svg ├── menu.svg ├── pause.svg ├── play.svg ├── plus.svg ├── power-off.svg ├── progressBarAnim.gif ├── route-identify.svg ├── route.svg ├── save.svg ├── shapefile.svg ├── signs.svg ├── simple-line.svg ├── spinner.gif ├── spinner.svg ├── square-area.svg ├── stop.svg ├── switch.svg ├── trash.svg ├── warning.svg └── weather.svg ├── index.html ├── js ├── config │ ├── project.js │ └── server.js ├── controllers │ ├── app.js │ ├── login.js │ ├── map.js │ ├── postloginmessage.js │ └── resetpwd.js ├── external │ ├── FileSaver.js │ ├── SimpleAjaxUploader.js │ ├── geojsonlayer.js │ ├── jquery.js │ ├── spectrum.js │ ├── terraformer-arcgis-parser.js │ └── terraformer.js ├── helpers │ ├── WheelScrollableView.js │ ├── auth.js │ ├── dragndrop.js │ ├── errorHandler.js │ ├── login.js │ ├── map │ │ ├── geometries.js │ │ ├── infoTemplate.js │ │ ├── layers.js │ │ ├── popup.js │ │ └── search.js │ ├── ui.js │ ├── utils.js │ └── widgets │ │ └── common.js ├── main.js ├── patches │ └── esri │ │ └── dijit │ │ ├── Legend.js │ │ ├── Popup.js │ │ ├── PopupMobile.js │ │ └── editing │ │ ├── AttachmentEditor.js │ │ ├── AttributeInspector.js │ │ ├── Editor.js │ │ ├── toolbars │ │ └── Drawing.js │ │ └── tools │ │ └── Selection.js ├── views │ ├── login.html │ ├── map.html │ ├── postloginmessage.html │ └── resetpwd.html └── widgets │ ├── AddDataLayers.html │ ├── AddDataLayers.js │ ├── Bookmarks.js │ ├── Bookmarks │ ├── Bookmarks.WidgetContainer.html │ └── Bookmarks.html │ ├── Draw.html │ ├── Draw.js │ ├── Edit.html │ ├── Edit.js │ ├── ElevationProfile.html │ ├── ElevationProfile.js │ ├── LayerControl.js │ ├── LayerControl │ ├── LICENSE │ ├── controls │ │ ├── CSV.js │ │ ├── Dynamic.js │ │ ├── Feature.js │ │ ├── GeoRSS.js │ │ ├── Image.js │ │ ├── ImageVector.js │ │ ├── KML.js │ │ ├── Raster.js │ │ ├── Stream.js │ │ ├── Tiled.js │ │ ├── WMS.js │ │ ├── WebTiled.js │ │ ├── _Control.js │ │ ├── _DynamicFolder.js │ │ ├── _DynamicSublayer.js │ │ └── templates │ │ │ ├── Control.html │ │ │ ├── Folder.html │ │ │ └── Sublayer.html │ ├── nls │ │ └── resource.js │ └── plugins │ │ ├── LayerMenu.js │ │ ├── Transparency.js │ │ └── legendUtil.js │ ├── Links.js │ ├── Links │ ├── Links.Item.html │ ├── Links.WidgetContainer.html │ └── Links.html │ ├── Locate.js │ ├── Locate │ ├── Locate.WidgetContainer.html │ └── Locate.html │ ├── Print.html │ ├── Print.js │ ├── Query.js │ ├── Query │ ├── Query.Category.html │ ├── Query.Item.html │ ├── Query.Search.Category.Result.html │ ├── Query.Search.Category.html │ ├── Query.Search.html │ └── Query.html │ ├── Routes.js │ ├── Routes │ └── Routes.html │ ├── SideMenu.html │ ├── SideMenu.js │ ├── Slider.js │ ├── Standby.js │ ├── Weather.html │ ├── Weather.js │ ├── eTime.html │ └── eTime.js ├── misc └── maple-diagram.xml ├── package.json ├── server ├── .gitignore ├── composer.json ├── config.example.php ├── resetpwd.php ├── thumbnail.php ├── uploader │ ├── geoJsonConvert.php │ └── include │ │ ├── Uploader.php │ │ ├── cors.php │ │ ├── sessionProgress.php │ │ └── uploadProgress.php └── views │ ├── admin_user_pass_reset_notification.html │ └── reset_password_email.html ├── tests ├── allTests.js ├── conf.js ├── config │ └── project.js └── helpers │ └── utils.js ├── tmp └── .gitignore └── web.config /.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | .git/ 3 | 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | db/ 3 | Thumbs.db 4 | App_Data/ 5 | tests/config/configurations.json 6 | package-lock.* 7 | .htaccess 8 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=733558 3 | // for the documentation about the tasks.json format 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "label": "SCSS build", 8 | "type": "shell", 9 | "command": "sass css/layout.scss css/layout.css", 10 | "group": "build", 11 | "problemMatcher": [] 12 | } 13 | ] 14 | } -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at pt@virtualgis.io. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Maple 2 | 3 | :tada: First off, thanks for taking the time to contribute! :tada: 4 | 5 | ## How can I contribute? 6 | 7 | Maple contributors are expected to follow the [Collective Code of Construction Contract (C4)](https://rfc.zeromq.org/spec:42/C4/). You should read the document before making a pull request. 8 | 9 | [Chat with us on Gitter](https://gitter.im/virtualgis/maple) to find out how you can help, or take a look at the list of [open issues](https://github.com/virtualgis/maple/issues). 10 | 11 | ## Code of Conduct 12 | 13 | This project adheres to the [Contributor Covenant](CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to the project maintainers. 14 | 15 | 16 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:7.2-apache 2 | 3 | RUN apt update && apt install -y gdal-bin && a2enmod rewrite && a2enmod ssl 4 | 5 | COPY . /var/www/html/ 6 | 7 | VOLUME ["/var/www/html/config/projects"] 8 | -------------------------------------------------------------------------------- /config/.gitignore: -------------------------------------------------------------------------------- 1 | projects/ 2 | -------------------------------------------------------------------------------- /config/defaults/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "configuration": { 3 | "title": "Map Viewer", 4 | "subtitle": "", 5 | "disclaimer": "", 6 | "logo": "", 7 | "map": { 8 | "attributionvisible": true, 9 | "esrilogovisible": false, 10 | "openhandcursorvisible": true, 11 | "scalebarvisible": true, 12 | "scalebar": "default", 13 | "zoomslidervisible": false, 14 | "wraparound180": true, 15 | "addarcgisbasemaps": false 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /config/projects/default/popups.json: -------------------------------------------------------------------------------- 1 | { 2 | "configuration": { 3 | "popups/States": { 4 | "configuration": { 5 | "fields": { 6 | "field": [ 7 | { 8 | "alias": "Abbreviation:", 9 | "name": "stusps", 10 | "visible": true 11 | }, 12 | { 13 | "alias": "Land Area (m²):", 14 | "name": "aland", 15 | "visible": true, 16 | "format": { 17 | "precision": 0, 18 | "usethousandsseparator": true 19 | } 20 | } 21 | ] 22 | }, 23 | "title": "{name}" 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /config/projects/default/profiles/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "configuration": { 3 | "title": "Maple Demo", 4 | "map": { 5 | "initialextent": "-15099031.9184 78385.2938 -4655981.2688 6910530.3705", 6 | "wkid": 102100, 7 | "basemaps": { 8 | "layer": [ 9 | { 10 | "type": "tiled", 11 | "label": "Imagery", 12 | "icon": "https://www.arcgis.com/sharing/rest/content/items/86de95d4e0244cba80f0fa2c9403a7b2/info/thumbnail/tempimagery.jpg", 13 | "url": "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer", 14 | "visible": true 15 | }, 16 | { 17 | "type": "tiled", 18 | "label": "Streets", 19 | "icon": "https://www.arcgis.com/sharing/rest/content/items/d8855ee4d3d74413babfb0f41203b168/info/thumbnail/world_street_map.jpg", 20 | "url": "https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer", 21 | "visible": false 22 | } 23 | ] 24 | }, 25 | "operationallayers": { 26 | "layer": [ 27 | { 28 | "type": "feature", 29 | "label": "United States", 30 | "url": "https://services6.arcgis.com/lyROaIRQY8YJWdou/arcgis/rest/services/us_states/FeatureServer/0", 31 | "visible": true, 32 | "popupconfig": "popups/States.xml" 33 | } 34 | ] 35 | } 36 | }, 37 | "widgetcontainer": { 38 | "widget": [ 39 | { 40 | "url": "widgets/LayerList/LayerListWidget.swf", 41 | "config": "widgets/LayerList/LayerListWidget.xml", 42 | "label": "Layer List", 43 | "icon": "assets/images/i_layers.png" 44 | }, 45 | { 46 | "url": "widgets/Bookmark/BookmarkWidget.swf", 47 | "config": "widgets/Bookmark/BookmarkWidget.xml", 48 | "label": "Jump To Location", 49 | "icon": "/images/bookmarks.svg" 50 | }, 51 | { 52 | "url": "widgets/eMapSwitcher/eMapSwitcherWidget.swf", 53 | "config": "widgets/eMapSwitcher/eMapSwitcherWidget.xml", 54 | "label": "Basemaps", 55 | "icon": "assets/images/i_basemaps.png" 56 | } 57 | ] 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /config/projects/default/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "default": "config.json" 4 | }, 5 | "server": { 6 | "authentication": "public", 7 | "supportEmail": "support@changeme.com" 8 | } 9 | } -------------------------------------------------------------------------------- /config/projects/default/widgets/Bookmark/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/Bookmark/BookmarkWidget": { 3 | "configuration": { 4 | "bookmarks": { 5 | "bookmark": [ 6 | { 7 | "name": "Minnesota", 8 | "$t": "-11171997.7312 5388007.3720 -9581297.1725 6312808.5006" 9 | }, 10 | { 11 | "name": "Florida", 12 | "$t": "-10068755.6916 2796890.8242 -8595771.4476 3653254.0686" 13 | } 14 | ] 15 | } 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /config/projects/default/widgets/LayerList/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/LayerList/LayerListWidget": { 3 | "configuration": { 4 | } 5 | } 6 | } -------------------------------------------------------------------------------- /config/projects/default/widgets/eMapSwitcher/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/eMapSwitcher/eMapSwitcherWidget": { 3 | "configuration": { 4 | } 5 | } 6 | } -------------------------------------------------------------------------------- /config/projects/superiordemo/assets/images/GIS-desktop-mobile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/config/projects/superiordemo/assets/images/GIS-desktop-mobile.jpg -------------------------------------------------------------------------------- /config/projects/superiordemo/assets/images/crossing.svg: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 22 | image/svg+xml 23 | 25 | 26 | 27 | 28 | 29 | 31 | 51 | 56 | 57 | -------------------------------------------------------------------------------- /config/projects/superiordemo/assets/images/highway.svg: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 22 | image/svg+xml 23 | 25 | 26 | 27 | 28 | 29 | 31 | 51 | 53 | 56 | 61 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /config/projects/superiordemo/assets/images/hybrid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/config/projects/superiordemo/assets/images/hybrid.jpg -------------------------------------------------------------------------------- /config/projects/superiordemo/profiles/config.override.json: -------------------------------------------------------------------------------- 1 | { 2 | "includeWidgets": [ 3 | { 4 | "url": "widgets/Routes/RoutesWidget.swf", 5 | "config": "widgets/Routes/RoutesWidget.xml" 6 | } 7 | ] 8 | } -------------------------------------------------------------------------------- /config/projects/superiordemo/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "overrides": { 3 | "widgets/Search/overrides": true, 4 | "profiles/config": true 5 | }, 6 | "profiles": { 7 | "multiple": false, 8 | "default": "config.json" 9 | }, 10 | "server": { 11 | "authentication": "userstore", 12 | 13 | "webAdaptor": "https://gis.tdsmn.com/arcgiswebadaptor", 14 | 15 | "security":{ 16 | "token":{ 17 | "expiration": 360 18 | } 19 | }, 20 | 21 | "supportEmail": "support@mycompany.com" 22 | } 23 | } -------------------------------------------------------------------------------- /config/projects/superiordemo/widgets/Bookmark/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/Bookmark/BookmarkWidget": { 3 | "configuration": { 4 | "bookmarks": { 5 | "bookmark": [ 6 | { 7 | "name": "Nemaji River Crossing", 8 | "$t": "-10248706.929687051 5888110.469802017 -10248339.076488541 5888310.8184190625" 9 | }, 10 | { 11 | "name": "Terminal 1", 12 | "$t": "-10248776.400182337 5890359.091681088 -10248040.69378499 5890759.788915358" 13 | } 14 | ] 15 | } 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /config/projects/superiordemo/widgets/ElevationProfile/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/ElevationProfile/ElevationProfileWidget_1": { 3 | "configuration": { 4 | } 5 | } 6 | } -------------------------------------------------------------------------------- /config/projects/superiordemo/widgets/ImportDataFile/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/ImportDataFile/ImportDataFileWidget": { 3 | "configuration": { 4 | "xfield": "Longitude", 5 | "yfield": "Latitude", 6 | "MGRSfield": "MGRS", 7 | "titlefield": "Title", 8 | "linkfield": "Link", 9 | "linkalias": {}, 10 | "zoomscale": 8000, 11 | "mgrsenabled": true, 12 | "inputdataprojection": { 13 | "proj": [ 14 | { 15 | "name": "Lat/Long", 16 | "wkid": 4326 17 | }, 18 | { 19 | "name": "State Plane Illinois East USFT", 20 | "wkid": 3443 21 | }, 22 | { 23 | "name": "Web Mercator", 24 | "wkid": 102100 25 | } 26 | ] 27 | }, 28 | "defaultproj": 3443 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /config/projects/superiordemo/widgets/LayerList/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/LayerList/LayerListWidget_LayerList1": { 3 | "configuration": { 4 | } 5 | } 6 | } -------------------------------------------------------------------------------- /config/projects/superiordemo/widgets/Legend/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/Legend/LegendWidget_2": { 3 | "configuration": { 4 | "usebasemaps": false, 5 | "useoperationallayers": true, 6 | "respectcurrentmapscale": true, 7 | "excludelayer": [ 8 | "Plats", 9 | "Oct. 2012 Imagery", 10 | "Soils", 11 | "Hidden Search" 12 | ] 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /config/projects/superiordemo/widgets/Link/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/Link/VirtualGIS_Home_Page": { 3 | "configuration": { 4 | "linkurl": "https://www.virtualgis.io" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /config/projects/superiordemo/widgets/Locate/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/Locate/LocateWidget_1": { 3 | "configuration": { 4 | "locator": "https://geocode.arcgis.com/ArcGIS/rest/services/World/GeocodeServer", 5 | "minscore": 40, 6 | "zoomscale": 10000 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /config/projects/superiordemo/widgets/Measure/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/Measure/MeasureWidget_2": { 3 | "configuration": { 4 | } 5 | } 6 | } -------------------------------------------------------------------------------- /config/projects/superiordemo/widgets/Print/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/Print/PrintWidget_2": { 3 | "configuration": { 4 | "taskurl": "https://gis.tdsmn.com/arcgiswebadaptor/rest/services/TDS_Utilities/SecureExportWebMap/GPServer/Export%20Web%20Map" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /config/projects/superiordemo/widgets/Routes/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/Routes/RoutesWidget": { 3 | "configuration": { 4 | "serviceUrl": "https://gis.tdsmn.com/arcgiswebadaptor/rest/services/Superior_Demo/Superior_Demo_Main/MapServer/exts/DSUtility/routeLayers/2", 5 | "menuLabel": "Stationing", 6 | "routeIdFieldName": "LAYER", 7 | "routeId": "PIPE_CL", 8 | "searchPlaceholder": "Stationing (ex. 1+00)", 9 | "zoomScale": 3000, 10 | "tolerance": 10, 11 | "instructionsText": "Press the button below and then select a point along the centerline to get stationing values, or type a stationing value in the search box to jump to the corresponding location.", 12 | "popup": { 13 | "measurementFieldLabel": "Stationing", 14 | "displayLatLon": true, 15 | "displayOriginalExtent": false, 16 | "displayElevation": false, 17 | "elevationFieldLabel": "Elevation (M)" 18 | } 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /config/projects/superiordemo/widgets/Search/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/Search/SearchWidget_Demo": { 3 | "configuration": { 4 | "zoomscale": 9000, 5 | "shareresults": false, 6 | "initialview": "text", 7 | "layers": { 8 | "layer": [ 9 | { 10 | "name": "Search by Parcel Number", 11 | "url": "https://gis.tdsmn.com/arcgiswebadaptor/rest/services/Superior_Demo/Superior_Demo_Main/MapServer/9", 12 | "expression": "lower(PARCELNO) like lower('%[value]%')", 13 | "textsearchlabel": "Enter Tract Number (Example: P002)", 14 | "titlefield": "PARCELNO", 15 | "fields": { 16 | "field": [ 17 | { 18 | "name": "PARCELNO", 19 | "alias": "Parcel Number" 20 | }, 21 | { 22 | "name": "Owner", 23 | "alias": "Owner" 24 | } 25 | ] 26 | }, 27 | "orderbyfields": "PARCELNO ASC" 28 | } 29 | , 30 | { 31 | "name": "Search by Owner Name", 32 | "url": "https://gis.tdsmn.com/arcgiswebadaptor/rest/services/Superior_Demo/Superior_Demo_Main/MapServer/9", 33 | "expression": "lower(Owner) like lower('%[value]%')", 34 | "textsearchlabel": "Enter Land Owner Name (Example: John Doe)", 35 | "titlefield": "Owner", 36 | "fields": { 37 | "field": [ 38 | { 39 | "name": "Owner", 40 | "alias": "Owner" 41 | }, 42 | { 43 | "name": "PARCELNO", 44 | "alias": "Parcel Number" 45 | } 46 | ] 47 | }, 48 | "orderbyfields": "PARCELNO ASC" 49 | } 50 | ] 51 | } 52 | } 53 | } 54 | } -------------------------------------------------------------------------------- /config/projects/superiordemo/widgets/Search/overrides.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/Search/SearchWidget_Demo": { 3 | "fieldTags": { 4 | "Search by Parcel Number": { 5 | "Owner": { 6 | "id": true 7 | } 8 | }, 9 | 10 | "Search by Owner Name":{ 11 | "PARCELNO": { 12 | "id": true 13 | } 14 | } 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /config/projects/superiordemo/widgets/WMSLooping/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/WMSLooping/WMSLoopingWidget": { 3 | "configuration": { 4 | "url": "https://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi", 5 | "version": "1.1.1", 6 | "imgFormat": "png", 7 | "dateFormatString": "YYYY-MM-DD L:NN A", 8 | "layersToRotate": { 9 | "layer": [ 10 | { 11 | "offsetMins": -50, 12 | "$t": "nexrad-n0r-900913-m50m" 13 | }, 14 | { 15 | "offsetMins": -45, 16 | "$t": "nexrad-n0r-900913-m45m" 17 | }, 18 | { 19 | "offsetMins": -40, 20 | "$t": "nexrad-n0r-900913-m40m" 21 | }, 22 | { 23 | "offsetMins": -35, 24 | "$t": "nexrad-n0r-900913-m35m" 25 | }, 26 | { 27 | "offsetMins": -30, 28 | "$t": "nexrad-n0r-900913-m30m" 29 | }, 30 | { 31 | "offsetMins": -25, 32 | "$t": "nexrad-n0r-900913-m25m" 33 | }, 34 | { 35 | "offsetMins": -20, 36 | "$t": "nexrad-n0r-900913-m20m" 37 | }, 38 | { 39 | "offsetMins": -15, 40 | "$t": "nexrad-n0r-900913-m15m" 41 | }, 42 | { 43 | "offsetMins": -10, 44 | "$t": "nexrad-n0r-900913-m10m" 45 | }, 46 | { 47 | "offsetMins": -5, 48 | "$t": "nexrad-n0r-900913-m05m" 49 | }, 50 | { 51 | "offsetMins": 0, 52 | "$t": "nexrad-n0r-900913" 53 | } 54 | ] 55 | }, 56 | "timerMsPerLayer": 2000, 57 | "startUpState": "running", 58 | "opacityDefault": 90, 59 | "about": "WMS radar reflectance service courtesy of Iowa State University. Click here for details.", 60 | "legend": { 61 | "visible": true, 62 | "imgURL": "https://mesonet.agron.iastate.edu/docs/nexrad_composites/reflect_ramp.png", 63 | "imgRotationDegrees": -90, 64 | "minLabel": "min", 65 | "maxLabel": "max" 66 | } 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /config/projects/superiordemo/widgets/eDraw/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/eDraw/eDrawWidget_1": { 3 | "configuration": { 4 | } 5 | } 6 | } -------------------------------------------------------------------------------- /config/projects/superiordemo/widgets/eMapSwitcher/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "widgets/eMapSwitcher/eMapSwitcherWidget": { 3 | "configuration": { 4 | } 5 | } 6 | } -------------------------------------------------------------------------------- /css/.gitignore: -------------------------------------------------------------------------------- 1 | layout.css.map 2 | 3 | -------------------------------------------------------------------------------- /css/fonts/caret-square-o-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 22 | 24 | image/svg+xml 25 | 27 | 28 | 29 | 30 | 32 | 52 | 54 | 59 | 60 | -------------------------------------------------------------------------------- /css/fonts/checkbox-checked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 22 | 24 | image/svg+xml 25 | 27 | 28 | 29 | 30 | 31 | 33 | 53 | 55 | 60 | 65 | 66 | -------------------------------------------------------------------------------- /css/fonts/checkbox-unchecked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 22 | 24 | image/svg+xml 25 | 27 | 28 | 29 | 30 | 32 | 52 | 54 | 59 | 60 | -------------------------------------------------------------------------------- /css/fonts/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/css/fonts/icomoon.eot -------------------------------------------------------------------------------- /css/fonts/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/css/fonts/icomoon.ttf -------------------------------------------------------------------------------- /css/fonts/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/css/fonts/icomoon.woff -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var gulp = require('gulp'); 4 | var sass = require('gulp-sass'); 5 | 6 | gulp.task('sass', function () { 7 | return gulp.src('./css/layout.scss') 8 | .pipe(sass().on('error', sass.logError)) 9 | .pipe(gulp.dest('./css')); 10 | }); 11 | 12 | gulp.task('sass:watch', function () { 13 | gulp.watch('./css/layout.scss', ['sass']); 14 | }); -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/icon.png -------------------------------------------------------------------------------- /images/arrow-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/arrow-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/arrow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/backward.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/bookmarks.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 22 | 24 | image/svg+xml 25 | 27 | 28 | 29 | 30 | 32 | 52 | bookmarks 54 | 58 | 62 | 63 | -------------------------------------------------------------------------------- /images/close-popup.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/close.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/dijit/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2005-2017, JS Foundation All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 4 | 5 | Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 6 | Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 7 | Neither the name of the JS Foundation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 8 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /images/dijit/calendarArrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/dijit/calendarArrows.png -------------------------------------------------------------------------------- /images/dijit/icons/editorIconsDisabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/dijit/icons/editorIconsDisabled.png -------------------------------------------------------------------------------- /images/dijit/icons/editorIconsEnabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/dijit/icons/editorIconsEnabled.png -------------------------------------------------------------------------------- /images/download2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 22 | 24 | image/svg+xml 25 | 27 | 28 | 29 | 30 | 32 | 52 | download2 54 | 58 | 62 | 66 | 67 | -------------------------------------------------------------------------------- /images/dragndrop-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/dragndrop-add.png -------------------------------------------------------------------------------- /images/dragndrop-add.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 16 | 18 | image/svg+xml 19 | 21 | 22 | 23 | 24 | 25 | 27 | 30 | 42 | 48 | 56 | + 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /images/dragndrop-denied.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/draw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 22 | 24 | image/svg+xml 25 | 27 | 28 | 29 | 30 | 32 | 52 | pencil 54 | 58 | 62 | 63 | -------------------------------------------------------------------------------- /images/draw/circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 40 | 42 | 43 | 45 | image/svg+xml 46 | 48 | 49 | 50 | 51 | 52 | 57 | 65 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /images/draw/ellipse.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 40 | 42 | 43 | 45 | image/svg+xml 46 | 48 | 49 | 50 | 51 | 52 | 57 | 65 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /images/draw/extent.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 40 | 42 | 43 | 45 | image/svg+xml 46 | 48 | 49 | 50 | 51 | 52 | 57 | 65 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /images/draw/freepoly.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 40 | 42 | 43 | 45 | image/svg+xml 46 | 48 | 49 | 50 | 51 | 52 | 57 | 65 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /images/draw/gpslocation.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 40 | 42 | 43 | 45 | image/svg+xml 46 | 48 | 49 | 50 | 51 | 52 | 57 | 65 | 68 | 73 | 74 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /images/draw/point.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 40 | 42 | 43 | 45 | image/svg+xml 46 | 48 | 49 | 50 | 51 | 52 | 57 | 65 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /images/draw/poly.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 40 | 42 | 43 | 45 | image/svg+xml 46 | 48 | 49 | 50 | 51 | 52 | 57 | 65 | 68 | 73 | 74 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /images/draw/rect.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 40 | 42 | 43 | 45 | image/svg+xml 46 | 48 | 49 | 50 | 51 | 52 | 57 | 65 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /images/draw/text.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 40 | 42 | 43 | 45 | image/svg+xml 46 | 48 | 49 | 50 | 51 | 52 | 57 | 65 | A 76 | 77 | 78 | -------------------------------------------------------------------------------- /images/fileicons/7z.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/7z.png -------------------------------------------------------------------------------- /images/fileicons/README: -------------------------------------------------------------------------------- 1 | http://www.splitbrain.org/projects/file_icons 2 | 3 | Released to the Public Domain 4 | Free to use. Provided as is. No warranties. 5 | 6 | Note: The big majority of icons where created by the creators listed 7 | below. Only a few ones where found on the net. They were too 8 | widespread to determine the original author and thus were 9 | considered public domain. 10 | If you are the author of one of those icons just send a short 11 | mail to either be included in the list below or have the icon 12 | removed from the package. 13 | 14 | Creators: 15 | 16 | Andreas Gohr 17 | Michael Klier 18 | Andreas Barton 19 | Hubert Chathi 20 | Johan Koehne 21 | Rudi von Staden 22 | Daniel Darvish 23 | Andy Pascall 24 | Seth 25 | David Carella 26 | Tom N. Harris 27 | Brandon Carmon Colvin 28 | -------------------------------------------------------------------------------- /images/fileicons/ai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/ai.png -------------------------------------------------------------------------------- /images/fileicons/aiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/aiff.png -------------------------------------------------------------------------------- /images/fileicons/asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/asc.png -------------------------------------------------------------------------------- /images/fileicons/audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/audio.png -------------------------------------------------------------------------------- /images/fileicons/bin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/bin.png -------------------------------------------------------------------------------- /images/fileicons/bz2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/bz2.png -------------------------------------------------------------------------------- /images/fileicons/c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/c.png -------------------------------------------------------------------------------- /images/fileicons/cfc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/cfc.png -------------------------------------------------------------------------------- /images/fileicons/cfm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/cfm.png -------------------------------------------------------------------------------- /images/fileicons/chm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/chm.png -------------------------------------------------------------------------------- /images/fileicons/class.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/class.png -------------------------------------------------------------------------------- /images/fileicons/conf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/conf.png -------------------------------------------------------------------------------- /images/fileicons/cpp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/cpp.png -------------------------------------------------------------------------------- /images/fileicons/cs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/cs.png -------------------------------------------------------------------------------- /images/fileicons/css.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/css.png -------------------------------------------------------------------------------- /images/fileicons/csv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/csv.png -------------------------------------------------------------------------------- /images/fileicons/deb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/deb.png -------------------------------------------------------------------------------- /images/fileicons/divx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/divx.png -------------------------------------------------------------------------------- /images/fileicons/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/doc.png -------------------------------------------------------------------------------- /images/fileicons/dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/dot.png -------------------------------------------------------------------------------- /images/fileicons/eml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/eml.png -------------------------------------------------------------------------------- /images/fileicons/enc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/enc.png -------------------------------------------------------------------------------- /images/fileicons/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/file.png -------------------------------------------------------------------------------- /images/fileicons/gif.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/gif.png -------------------------------------------------------------------------------- /images/fileicons/gz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/gz.png -------------------------------------------------------------------------------- /images/fileicons/hlp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/hlp.png -------------------------------------------------------------------------------- /images/fileicons/htm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/htm.png -------------------------------------------------------------------------------- /images/fileicons/html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/html.png -------------------------------------------------------------------------------- /images/fileicons/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/image.png -------------------------------------------------------------------------------- /images/fileicons/iso.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/iso.png -------------------------------------------------------------------------------- /images/fileicons/jar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/jar.png -------------------------------------------------------------------------------- /images/fileicons/java.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/java.png -------------------------------------------------------------------------------- /images/fileicons/jpeg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/jpeg.png -------------------------------------------------------------------------------- /images/fileicons/jpg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/jpg.png -------------------------------------------------------------------------------- /images/fileicons/js.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/js.png -------------------------------------------------------------------------------- /images/fileicons/lua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/lua.png -------------------------------------------------------------------------------- /images/fileicons/m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/m.png -------------------------------------------------------------------------------- /images/fileicons/mm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/mm.png -------------------------------------------------------------------------------- /images/fileicons/mov.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/mov.png -------------------------------------------------------------------------------- /images/fileicons/mp3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/mp3.png -------------------------------------------------------------------------------- /images/fileicons/mpg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/mpg.png -------------------------------------------------------------------------------- /images/fileicons/odc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/odc.png -------------------------------------------------------------------------------- /images/fileicons/odf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/odf.png -------------------------------------------------------------------------------- /images/fileicons/odg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/odg.png -------------------------------------------------------------------------------- /images/fileicons/odi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/odi.png -------------------------------------------------------------------------------- /images/fileicons/odp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/odp.png -------------------------------------------------------------------------------- /images/fileicons/ods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/ods.png -------------------------------------------------------------------------------- /images/fileicons/odt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/odt.png -------------------------------------------------------------------------------- /images/fileicons/ogg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/ogg.png -------------------------------------------------------------------------------- /images/fileicons/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/pdf.png -------------------------------------------------------------------------------- /images/fileicons/pgp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/pgp.png -------------------------------------------------------------------------------- /images/fileicons/php.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/php.png -------------------------------------------------------------------------------- /images/fileicons/pl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/pl.png -------------------------------------------------------------------------------- /images/fileicons/png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/png.png -------------------------------------------------------------------------------- /images/fileicons/ppt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/ppt.png -------------------------------------------------------------------------------- /images/fileicons/ps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/ps.png -------------------------------------------------------------------------------- /images/fileicons/py.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/py.png -------------------------------------------------------------------------------- /images/fileicons/ram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/ram.png -------------------------------------------------------------------------------- /images/fileicons/rar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/rar.png -------------------------------------------------------------------------------- /images/fileicons/rb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/rb.png -------------------------------------------------------------------------------- /images/fileicons/rm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/rm.png -------------------------------------------------------------------------------- /images/fileicons/rpm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/rpm.png -------------------------------------------------------------------------------- /images/fileicons/rtf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/rtf.png -------------------------------------------------------------------------------- /images/fileicons/sig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/sig.png -------------------------------------------------------------------------------- /images/fileicons/sql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/sql.png -------------------------------------------------------------------------------- /images/fileicons/swf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/swf.png -------------------------------------------------------------------------------- /images/fileicons/sxc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/sxc.png -------------------------------------------------------------------------------- /images/fileicons/sxd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/sxd.png -------------------------------------------------------------------------------- /images/fileicons/sxi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/sxi.png -------------------------------------------------------------------------------- /images/fileicons/sxw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/sxw.png -------------------------------------------------------------------------------- /images/fileicons/tar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/tar.png -------------------------------------------------------------------------------- /images/fileicons/tex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/tex.png -------------------------------------------------------------------------------- /images/fileicons/tgz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/tgz.png -------------------------------------------------------------------------------- /images/fileicons/txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/txt.png -------------------------------------------------------------------------------- /images/fileicons/vcf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/vcf.png -------------------------------------------------------------------------------- /images/fileicons/video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/video.png -------------------------------------------------------------------------------- /images/fileicons/vsd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/vsd.png -------------------------------------------------------------------------------- /images/fileicons/wav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/wav.png -------------------------------------------------------------------------------- /images/fileicons/wma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/wma.png -------------------------------------------------------------------------------- /images/fileicons/wmv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/wmv.png -------------------------------------------------------------------------------- /images/fileicons/xls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/xls.png -------------------------------------------------------------------------------- /images/fileicons/xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/xml.png -------------------------------------------------------------------------------- /images/fileicons/xpi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/xpi.png -------------------------------------------------------------------------------- /images/fileicons/xvid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/xvid.png -------------------------------------------------------------------------------- /images/fileicons/zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/fileicons/zip.png -------------------------------------------------------------------------------- /images/folder-plus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 22 | 24 | image/svg+xml 25 | 27 | 28 | 29 | 30 | 32 | 52 | folder-plus 54 | 58 | 59 | -------------------------------------------------------------------------------- /images/folder.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 22 | 24 | image/svg+xml 25 | 27 | folder-plus 28 | 29 | 30 | 31 | 33 | 53 | folder-plus 55 | 61 | 62 | -------------------------------------------------------------------------------- /images/forward.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/layers.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 22 | 24 | image/svg+xml 25 | 27 | 28 | 29 | 30 | 32 | 52 | stack 54 | 58 | 62 | 66 | 70 | 71 | -------------------------------------------------------------------------------- /images/legend.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 22 | 24 | image/svg+xml 25 | 27 | 28 | 29 | 30 | 32 | 52 | list2 54 | 58 | 62 | 66 | 70 | 74 | 78 | 79 | -------------------------------------------------------------------------------- /images/location.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 22 | 24 | image/svg+xml 25 | 27 | 28 | 29 | 30 | 32 | 52 | location 54 | 58 | 59 | -------------------------------------------------------------------------------- /images/lock-locked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/lock-unlocked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/maple.gpl: -------------------------------------------------------------------------------- 1 | GIMP Palette 2 | Name: maple 3 | Columns: 0 4 | # 5 | 247 247 247 Untitled 6 | 103 169 207 Untitled 7 | 103 207 135 Untitled 8 | 239 98 98 Untitled 9 | 239 138 98 Untitled 10 | 239 239 239 Untitled 11 | 214 214 214 Untitled 12 | 199 199 199 Untitled 13 | 239 98 182 Untitled 14 | 255 255 255 Untitled 15 | 41 146 207 Untitled 16 | 41 207 92 Untitled 17 | 239 47 47 Untitled 18 | 239 102 47 Untitled 19 | 154 154 154 Untitled 20 | 127 127 127 Untitled 21 | 101 101 101 Untitled 22 | 78 78 78 Untitled 23 | 51 51 51 Untitled 24 | 25 25 25 Untitled 25 | -------------------------------------------------------------------------------- /images/maptile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/maptile.png -------------------------------------------------------------------------------- /images/maximize.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 16 | 18 | image/svg+xml 19 | 21 | 22 | 23 | 24 | 25 | 27 | 31 | 32 | -------------------------------------------------------------------------------- /images/pause.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/play.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/plus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/power-off.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/progressBarAnim.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/progressBarAnim.gif -------------------------------------------------------------------------------- /images/route.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | 24 | 25 | 27 | image/svg+xml 28 | 30 | stack 31 | 32 | 33 | 34 | 36 | 59 | 64 | 65 | stack 67 | 70 | 73 | 75 | 80 | 85 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /images/simple-line.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/virtualgis/maple/c1ca3d201f5f63a2248deea5b04c57832d673b28/images/spinner.gif -------------------------------------------------------------------------------- /images/spinner.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/square-area.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/stop.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 22 | 24 | image/svg+xml 25 | 27 | list2 28 | 29 | 30 | 31 | 33 | 55 | 60 | 61 | list2 63 | 71 | 72 | -------------------------------------------------------------------------------- /images/switch.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/trash.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /js/config/server.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define(["maple/config/project"], function(project){ 18 | "use strict"; 19 | if (!project.config) console.error("Project hasn't loaded yet. Something is out of order..."); 20 | return project.config.server; 21 | }); -------------------------------------------------------------------------------- /js/controllers/app.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define(["dojo/has", "dojo/dom-class", "esri/config", 18 | "maple/config/project", "maple/helpers/auth", 19 | "maple/helpers/utils", "maple/config/server", 20 | "esri/tasks/GeometryService", 21 | "jquery", 22 | "maple/patches/esri/dijit/Popup", 23 | "maple/patches/esri/dijit/PopupMobile", 24 | "maple/patches/esri/dijit/Legend", 25 | "maple/patches/esri/dijit/editing/Editor", 26 | "maple/patches/esri/dijit/editing/AttachmentEditor", 27 | "maple/patches/esri/dijit/editing/AttributeInspector", 28 | "maple/patches/esri/dijit/editing/tools/Selection", 29 | "maple/patches/esri/dijit/editing/toolbars/Drawing"], 30 | function(has, domClass, esriConfig, project, auth, utils, server, GeometryService, $){ 31 | "use strict"; 32 | 33 | esriConfig.defaults.map.panDuration = 1; // time in milliseconds, default panDuration: 250 34 | esriConfig.defaults.map.panRate = 1; // default panRate: 25 35 | esriConfig.defaults.map.zoomDuration = 250; // default zoomDuration: 500 36 | esriConfig.defaults.map.zoomRate = 1; // default zoomRate: 25 37 | 38 | esriConfig.defaults.geometryService = new GeometryService(utils.get(project, 'config.geometryservice.url', 'https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer')); 39 | esriConfig.defaults.kmlService = utils.get(project, 'config.kmlservice.url', 'https://utility.arcgis.com/sharing/kml'); 40 | 41 | // Make sure timeouts are set or all XHR requests, not just 42 | // those made with esri/request 43 | var oldXhr = dojo.xhr; 44 | dojo.xhr = function(method, options){ 45 | var opts = options || {}; 46 | opts.timeout = esriConfig.defaults.io.timeout; 47 | return oldXhr(method, opts); 48 | }; 49 | 50 | return { 51 | init: function(){ 52 | document.body.className += ' loaded'; 53 | 54 | if (has("touch")) domClass.add(document.documentElement, "touch"); 55 | domClass.add(document.documentElement, "auth-" + project.config.server.authentication); 56 | 57 | console.log("Name: " + project.config.title); 58 | console.log("App Init Completed"); 59 | 60 | document.title = project.config.title; 61 | 62 | auth.initialize(project); 63 | } 64 | }; 65 | } 66 | ); -------------------------------------------------------------------------------- /js/controllers/postloginmessage.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define(["dojo/dom", "dojo/dom-class", 18 | "maple/config/project", 19 | "maple/helpers/utils", 20 | "dijit/registry", 21 | "dojox/mobile/TransitionEvent", 22 | "maple/helpers/WheelScrollableView" 23 | ], function(dom, domClass, 24 | project, utils, 25 | registry, 26 | TransitionEvent){ 27 | "use strict"; 28 | var standBy; 29 | 30 | return { 31 | title: project.get("config.postLoginMessage.title", ""), 32 | continueButtonLabel: project.get("config.postLoginMessage.continueButtonLabel", "Continue"), 33 | 34 | init: function(){ 35 | standBy = registry.byId("loginStandby"); 36 | }, 37 | 38 | beforeActivate: function(){ 39 | this.message.innerHTML = project.get("config.postLoginMessage.message", "This is a message to be shown after login."); 40 | }, 41 | 42 | afterActivate: function(){ 43 | standBy.hide(); 44 | }, 45 | 46 | afterDeactivate: function(){ 47 | standBy.hide(); 48 | }, 49 | 50 | btnContinuePressed: function(e){ 51 | if (localStorage){ 52 | var hashCode = utils.hashCode(this.message.innerHTML); 53 | localStorage.setItem("shownPostLoginMessage_" + project.config.loadedConfiguration + "_" + hashCode, "1"); 54 | } 55 | standBy.show(); 56 | new TransitionEvent(e.target, { 57 | target: "app,map", 58 | transition: "slide", 59 | transitionDir: 1 60 | }).dispatch(); 61 | } 62 | }; 63 | } 64 | ); -------------------------------------------------------------------------------- /js/helpers/WheelScrollableView.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define([ 18 | "dojo/_base/declare", 19 | "dojo/has", 20 | "dojo/on", 21 | "dojox/mobile/ScrollableView" 22 | ], function(declare, has, on, ScrollableView){ 23 | return declare([ScrollableView], { 24 | init: function(params){ 25 | var self = this; 26 | 27 | this.inherited(arguments); 28 | if(!has("touch")){ 29 | var handleWheel = function(e){ 30 | e.stopPropagation(); 31 | 32 | var pos = self.getPos(); 33 | var dim = self.getDim(); 34 | var deltaY = (e.deltaY ? -e.deltaY : e.wheelDelta) > 0 ? 40 : -40; 35 | var newY = pos.y + deltaY; 36 | if (newY <= 0 && Math.abs(newY) <= dim.o.h + 40){ // stop scrolling at the top/bottom 37 | self.scrollTo({x: pos.x, y: newY}); 38 | } 39 | }; 40 | 41 | on(this.domNode, "wheel", handleWheel); 42 | } 43 | } 44 | }); 45 | }); -------------------------------------------------------------------------------- /js/helpers/login.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define(["maple/config/project", "maple/helpers/utils"], 18 | function(project, utils){ 19 | "use strict"; 20 | return { 21 | needToShowPostLoginMessage: function(){ 22 | var postLoginMessage = project.config.postLoginMessage; 23 | if (postLoginMessage){ 24 | if (postLoginMessage.frequency === "oneTime" && localStorage){ 25 | var hashCode = utils.hashCode(postLoginMessage.message); 26 | if (localStorage.getItem("shownPostLoginMessage_" + project.config.loadedConfiguration + "_" + hashCode)){ 27 | return false; 28 | }else{ 29 | // we will call localStorage.setItem in postLoginMessage.js 30 | return true; 31 | } 32 | }else{ 33 | return true; 34 | } 35 | }else{ 36 | return false; 37 | } 38 | }, 39 | 40 | reloadNewConfiguration: function(jsonConfigFile){ 41 | var self = this; 42 | 43 | // We load the new configuration to check for post login messages 44 | // then we refresh the whole page to save the jsonConfigFile parameter 45 | // in case the user later refreshes the page (F5). 46 | 47 | function reloadAppTo(targetState){ 48 | location.href = "/?p=" + project.config.name + "&c=" + jsonConfigFile.replace(".json", "") + "#" + targetState; 49 | } 50 | 51 | project.loadProfile(jsonConfigFile, function(){ 52 | var targetState = self.needToShowPostLoginMessage() ? "app,postloginmessage" : "app,map"; 53 | reloadAppTo(targetState); 54 | }, function(){ 55 | // on error we simply reload (without caring about targetState) 56 | reloadAppTo("app,map"); 57 | }); 58 | } 59 | }; 60 | } 61 | ); -------------------------------------------------------------------------------- /js/helpers/map/geometries.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define(["dojo/_base/lang", 18 | "dojo/Deferred", 19 | "esri/config", 20 | "esri/tasks/ProjectParameters"], 21 | function(lang, Deferred, esriConfig, ProjectParameters){ 22 | "use strict"; 23 | 24 | return { 25 | reproject: function(geometries, targetSpatialReference){ 26 | var deferred = new Deferred(); 27 | 28 | // Need to reproject 29 | if (esriConfig.defaults.geometryService) { 30 | esriConfig.defaults.geometryService.project(lang.mixin(new ProjectParameters(), { 31 | geometries: geometries, 32 | outSR: targetSpatialReference 33 | }), function (r) { 34 | deferred.resolve(r); 35 | }, function (e) { 36 | deferred.reject("Could not project geometry"); 37 | }); 38 | }else{ 39 | deferred.reject("No geometryservice is set"); 40 | } 41 | 42 | return deferred; 43 | } 44 | }; 45 | }); -------------------------------------------------------------------------------- /js/helpers/map/search.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define(["dojo/_base/array", "maple/config/project", 18 | "esri/layers/FeatureLayer", "maple/helpers/map/infoTemplate", "maple/helpers/utils"], 19 | function(array, project, FeatureLayer, infoTemplate, Utils){ 20 | "use strict"; 21 | 22 | var search = project.get("config.widgets.Search.primary", {}); 23 | 24 | // Search for a field that contains a particular flag set to true 25 | // @return field's name or null if no flag is found in any field 26 | function findField(fields, flag){ 27 | var last; 28 | if (array.some(fields, function(field){ 29 | last = field; 30 | return field.name && field[flag] === true; 31 | })){ 32 | return last.name; 33 | }else { 34 | return null; 35 | } 36 | } 37 | 38 | return { 39 | // Build source list to allow search on a map 40 | // these are the sources that can be searched. 41 | getSources: function(){ 42 | if (!search.layers || !search.layers.layer){ 43 | console.warn("No search widget configuration available. No map sources will be available."); 44 | return []; 45 | } 46 | 47 | var sources = []; 48 | array.forEach(search.layers.layer, function(layer){ 49 | if (layer.exclude) return; 50 | 51 | var displayField = findField(layer.fields.field, "display") || layer.titlefield; 52 | var idField = findField(layer.fields.field, "id") || ""; 53 | Utils.arrayify(layer, "orderbyfields"); 54 | 55 | sources.push({ 56 | featureLayer: new FeatureLayer(layer.url), 57 | searchFields: [layer.titlefield], 58 | displayField: displayField, 59 | exactMatch: false, 60 | outFields: [array.map(layer.fields.field, function(field){ 61 | return field.name; 62 | })], 63 | name: layer.name, 64 | placeholder: layer.textsearchlabel, 65 | maxResults: "foo", // per ESRI support, hack to disable pagination 66 | 67 | expression: layer.expression, 68 | orderByFields: layer.orderbyfields, 69 | 70 | idField: idField, 71 | 72 | infoTemplate: infoTemplate.create("${" + layer.titlefield + "}", layer.fields.field, { 73 | allVisible: true 74 | }), 75 | 76 | enableSuggestions: true, 77 | minCharacters: 0 78 | }); 79 | }); 80 | 81 | return sources; 82 | } 83 | }; 84 | }); -------------------------------------------------------------------------------- /js/patches/esri/dijit/Legend.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define(["esri/dijit/Legend", "maple/helpers/utils"], 18 | function(Legend, utils) { 19 | "use strict"; 20 | 21 | // Use HTTPS for the ESRI's utility URL 22 | Legend.prototype._legendUrl = Legend.prototype._legendUrl.replace(/^http:\/\//, "https://"); 23 | } 24 | ); -------------------------------------------------------------------------------- /js/patches/esri/dijit/Popup.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define(["esri/dijit/Popup", "maple/helpers/utils", 18 | "dojo/topic", "dojo/query", "dojo/NodeList-dom"], 19 | function(Popup, utils, topic, query) { 20 | "use strict"; 21 | 22 | // Add the ability to enable/disable the zoom button 23 | // when showing a popup (desktop only) 24 | utils.intercept(Popup, "show", function(original, args){ 25 | original(); 26 | 27 | var options = args[2], 28 | zoomTo = query(".action.zoomTo", this.domNode); 29 | if (zoomTo){ 30 | if (options && options.hideZoom){ 31 | zoomTo.addClass("hide"); 32 | }else{ 33 | zoomTo.removeClass("hide"); 34 | } 35 | } 36 | }); 37 | 38 | // Emit an event when the popup closes 39 | utils.intercept(Popup, "hide", function(original){ 40 | if (this.isShowing){ 41 | topic.publish("popup/hide"); 42 | } 43 | original(); 44 | }); 45 | } 46 | ); -------------------------------------------------------------------------------- /js/patches/esri/dijit/PopupMobile.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define(["esri/dijit/PopupMobile", "maple/helpers/utils", 18 | "dojo/topic"], 19 | function(PopupMobile, utils, topic, query) { 20 | "use strict"; 21 | 22 | // Emit an event when the popup closes 23 | utils.intercept(PopupMobile, "hide", function(original){ 24 | if (this.isShowing){ 25 | topic.publish("popup/hide"); 26 | } 27 | original(); 28 | }); 29 | } 30 | ); -------------------------------------------------------------------------------- /js/patches/esri/dijit/editing/AttachmentEditor.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define(["esri/dijit/editing/AttachmentEditor", 18 | "maple/helpers/utils", "jquery"], 19 | function(AttachmentEditor, utils, $) { 20 | "use strict"; 21 | 22 | // Add the ability to enable/disable the zoom button 23 | // when showing a popup (desktop only) 24 | utils.intercept(AttachmentEditor, 'startup', function(original){ 25 | original(); 26 | 27 | // dojoClick screws up uploads on mobile so we turn it off 28 | this._uploadField.dojoClick = false; 29 | }); 30 | 31 | // Strip off leading and trailing parentheses 32 | AttachmentEditor.prototype._deleteBtnHtml = AttachmentEditor.prototype 33 | ._deleteBtnHtml 34 | .replace(/^\(/, "") 35 | .replace(/\)$/, ""); 36 | 37 | // Prompt for confirmation on deletion of attachments 38 | utils.intercept(AttachmentEditor, '_deleteAttachment', function(original){ 39 | if (window.confirm("Are you sure you want to delete this attachment?")){ 40 | original(); 41 | } 42 | }); 43 | 44 | // Show thumbnails 45 | utils.intercept(AttachmentEditor, ['_onQueryAttachmentInfosComplete', '_onAddAttachmentComplete'], function(original){ 46 | original(); 47 | $(this._attachmentList).children().each(function(){ 48 | var $attachmentLink = $(this).children("a"), 49 | filename = $attachmentLink.text(), 50 | imageUrl = $attachmentLink.attr('href'); 51 | 52 | if (/\.(jpg|jpeg|png|gif)$/i.test(filename)){ 53 | // Thumbnail! 54 | var thumbUrl = "/server/thumbnail.php?u=" + imageUrl; 55 | 56 | // Set loading 57 | var $image = $(''), 58 | $content = $('
'); 59 | $content.append($image); 60 | $content.append('
' + filename + '
'); 61 | 62 | $attachmentLink.html($content); 63 | 64 | // Load image 65 | var img = new Image(); 66 | img.onload = function(){ 67 | $image.attr('src', img.src); 68 | }; 69 | img.src = thumbUrl; 70 | } 71 | }); 72 | }); 73 | 74 | } 75 | ); 76 | -------------------------------------------------------------------------------- /js/patches/esri/dijit/editing/AttributeInspector.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define(["esri/dijit/AttributeInspector", "dojo/has", "maple/helpers/utils"], 18 | function(AttributeInspector, has, utils){ 19 | "use strict"; 20 | 21 | var confirmMsg = "Are you sure you want to delete this feature?"; 22 | 23 | // On mobile, confirm before deleting and 24 | // close popup upon deletion 25 | if (has("touch")){ 26 | utils.intercept(AttributeInspector, 'onDeleteBtn', function(original){ 27 | if (window.confirm(confirmMsg)){ 28 | original(); 29 | 30 | // Find map reference so we can get to the popup 31 | if (this.layerInfos && this.layerInfos.length > 0 && 32 | this.layerInfos[0].featureLayer){ 33 | var map = this.layerInfos[0].featureLayer.getMap(); 34 | map.infoWindow.hide(); 35 | 36 | // For some reason, calling hide() is not enough :/ 37 | map.infoWindow._handleNavigationBar({name: "CloseButton"}) 38 | } 39 | } 40 | }); 41 | }else{ 42 | // On desktop, simply confirm 43 | utils.intercept(AttributeInspector, 'onDeleteBtn', function(original){ 44 | if (window.confirm(confirmMsg)){ 45 | original(); 46 | } 47 | }); 48 | } 49 | } 50 | ); -------------------------------------------------------------------------------- /js/patches/esri/dijit/editing/Editor.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define(["esri/dijit/editing/Editor", "dojo/has", 18 | "dojo/topic", "maple/helpers/utils"], 19 | function(Editor, has, topic, utils){ 20 | "use strict"; 21 | 22 | var preventPopupShow = false; 23 | 24 | // If the user has closed the popup once, 25 | // don't reopen it unless he clears the selection 26 | // This prevents the popup from showing it during 27 | // shape editing 28 | topic.subscribe("popup/hide", function(){ 29 | preventPopupShow = true; 30 | }); 31 | 32 | topic.subscribe("popup/dontPreventShow", function(){ 33 | preventPopupShow = false; 34 | }); 35 | 36 | utils.intercept(Editor, '_clearSelection', function(original){ 37 | original(); 38 | preventPopupShow = false; 39 | }); 40 | 41 | utils.intercept(Editor, '_showInfoWindow', function(original){ 42 | if (!preventPopupShow){ 43 | original(); 44 | } 45 | }); 46 | } 47 | ); -------------------------------------------------------------------------------- /js/patches/esri/dijit/editing/toolbars/Drawing.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define(["esri/dijit/editing/toolbars/Drawing", 18 | "dojo/topic", "maple/helpers/utils"], 19 | function(Drawing, topic, utils){ 20 | "use strict"; 21 | 22 | utils.intercept(Drawing, '_toolFinished', function(original, args){ 23 | // If a popup has been closed, we need to make sure 24 | // we can open it with the attributes button 25 | // no matter what. 26 | if (args[0] === "ATTRIBUTES"){ 27 | topic.publish("popup/dontPreventShow"); 28 | setTimeout(original, 300); // give time for publish to propagate 29 | }else{ 30 | original(); 31 | } 32 | }); 33 | } 34 | ); -------------------------------------------------------------------------------- /js/patches/esri/dijit/editing/tools/Selection.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define(["esri/dijit/editing/tools/Selection", 18 | "maple/helpers/utils", "dojo/has", 19 | "esri/symbols/SimpleMarkerSymbol", "esri/symbols/SimpleLineSymbol", 20 | "dojo/_base/Color"], 21 | function(Selection, utils, has, SimpleMarkerSymbol, SimpleLineSymbol, 22 | Color) { 23 | "use strict"; 24 | 25 | // On mobile, make editing points larger 26 | if (has("touch")){ 27 | utils.intercept(Selection, '_createSymbols', function(original){ 28 | original(); 29 | 30 | this._pointSelectionSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 31 | 24, 32 | new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([0, 0, 0]), 1), new Color([255, 0, 0, 0.5])); 33 | }); 34 | } 35 | } 36 | ); 37 | -------------------------------------------------------------------------------- /js/views/login.html: -------------------------------------------------------------------------------- 1 |
2 |

${title}

3 |
4 |
5 |
6 |
7 | 8 |
9 |
10 |
11 | 12 |
13 | 14 |
15 |
16 |
17 |
18 | Forgot Your Password? 19 |
20 | 21 | 22 |
23 | 24 |
25 |
26 |
27 |
28 | -------------------------------------------------------------------------------- /js/views/map.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |
5 | 6 | 7 |
8 |
Loading Map ...
9 |
Items Failed to Load
10 |
11 |
12 |
13 | 14 |
15 |
16 | 17 |
18 |
Your Session Has Ended
19 |
Please log-in again.
20 | 21 |
If you think this is a mistake, please contact support.
22 |
23 | 24 |
25 |
Authorization Failed
26 |
27 | 28 | 29 |
30 | 31 |
32 |
Cannot Find GPS Location
33 |
Please make sure you have granted permission to use the GPS and that a valid GPS signal is available.
34 | 35 |
36 |
37 |
-------------------------------------------------------------------------------- /js/views/postloginmessage.html: -------------------------------------------------------------------------------- 1 |
2 |

${title}

3 |
4 |
5 |
6 | 7 |
8 |
9 |
10 | -------------------------------------------------------------------------------- /js/views/resetpwd.html: -------------------------------------------------------------------------------- 1 |
2 |

Reset Your Password

3 |
4 |
5 |
6 |
7 | 8 |
9 |
10 |
11 |
12 | 13 |
14 |
15 |
16 |
17 | 18 |
19 |
20 |
21 |
22 |
23 | -------------------------------------------------------------------------------- /js/widgets/Bookmarks/Bookmarks.WidgetContainer.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
${label}
5 |
6 |
7 |
8 |
9 |
10 | -------------------------------------------------------------------------------- /js/widgets/Bookmarks/Bookmarks.html: -------------------------------------------------------------------------------- 1 |
2 | 4 |
-------------------------------------------------------------------------------- /js/widgets/Edit.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
Enable
5 |
6 |
7 |
8 |
9 |
-------------------------------------------------------------------------------- /js/widgets/ElevationProfile.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 | 6 |
7 |
8 |
Distance Unit
9 |
10 |
11 |
12 | 13 |
14 |
15 | 16 |
17 |
18 |
-------------------------------------------------------------------------------- /js/widgets/LayerControl/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 David Spriggs 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /js/widgets/LayerControl/controls/CSV.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'dojo/_base/declare', 3 | 'dijit/_WidgetBase', 4 | 'dijit/_TemplatedMixin', 5 | 'dijit/_Contained', 6 | './_Control', // layer control base class 7 | './../plugins/legendUtil' 8 | ], function ( 9 | declare, 10 | _WidgetBase, 11 | _TemplatedMixin, 12 | _Contained, 13 | _Control, 14 | legendUtil 15 | ) { 16 | var CSVControl = declare([_WidgetBase, _TemplatedMixin, _Contained, _Control], { 17 | _layerType: 'vector', // constant 18 | _esriLayerType: 'csv', // constant 19 | // create and legend 20 | _layerTypeInit: function () { 21 | if (legendUtil.isLegend(this.controlOptions.noLegend, this.controller.noLegend)) { 22 | this._expandClick(); 23 | legendUtil.vectorLegend(this.layer, this.expandNode); 24 | } else { 25 | this._expandRemove(); 26 | } 27 | } 28 | }); 29 | return CSVControl; 30 | }); -------------------------------------------------------------------------------- /js/widgets/LayerControl/controls/Feature.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'dojo/_base/declare', 3 | 'dijit/_WidgetBase', 4 | 'dijit/_TemplatedMixin', 5 | 'dijit/_Contained', 6 | './_Control', // layer control base class 7 | './../plugins/legendUtil' 8 | ], function ( 9 | declare, 10 | _WidgetBase, 11 | _TemplatedMixin, 12 | _Contained, 13 | _Control, 14 | legendUtil 15 | ) { 16 | var FeatureControl = declare([_WidgetBase, _TemplatedMixin, _Contained, _Control], { 17 | _layerType: 'vector', // constant 18 | _esriLayerType: 'feature', // constant 19 | // create and legend 20 | _layerTypeInit: function () { 21 | if (legendUtil.isLegend(this.controlOptions.noLegend, this.controller.noLegend)) { 22 | this._expandClick(); 23 | try{ 24 | legendUtil.vectorLegend(this.layer, this.expandNode); 25 | }catch(e){ 26 | console.warn("Cannot create legend for " + this.layer.id, e); 27 | } 28 | } else { 29 | this._expandRemove(); 30 | } 31 | } 32 | }); 33 | return FeatureControl; 34 | }); -------------------------------------------------------------------------------- /js/widgets/LayerControl/controls/GeoRSS.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'dojo/_base/declare', 3 | 'dijit/_WidgetBase', 4 | 'dijit/_TemplatedMixin', 5 | 'dijit/_Contained', 6 | './_Control' // layer control base class 7 | ], function ( 8 | declare, 9 | _WidgetBase, 10 | _TemplatedMixin, 11 | _Contained, 12 | _Control 13 | ) { 14 | var GeoRSSControl = declare([_WidgetBase, _TemplatedMixin, _Contained, _Control], { 15 | _layerType: 'vector', // constant 16 | _esriLayerType: 'georss', // constant 17 | _layerTypeInit: function () { 18 | this._expandRemove(); 19 | // legend or no legend??? 20 | } 21 | }); 22 | return GeoRSSControl; 23 | }); -------------------------------------------------------------------------------- /js/widgets/LayerControl/controls/Image.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'dojo/_base/declare', 3 | 'dijit/_WidgetBase', 4 | 'dijit/_TemplatedMixin', 5 | 'dijit/_Contained', 6 | './_Control', // layer control base class 7 | './../plugins/legendUtil' 8 | ], function ( 9 | declare, 10 | _WidgetBase, 11 | _TemplatedMixin, 12 | _Contained, 13 | _Control, 14 | legendUtil 15 | ) { 16 | var ImageControl = declare([_WidgetBase, _TemplatedMixin, _Contained, _Control], { 17 | _layerType: 'overlay', // constant 18 | _esriLayerType: 'image', // constant 19 | // create and legend 20 | _layerTypeInit: function () { 21 | if (legendUtil.isLegend(this.controlOptions.noLegend, this.controller.noLegend)) { 22 | this._expandClick(); 23 | legendUtil.layerLegend(this.layer, this.expandNode); 24 | } else { 25 | this._expandRemove(); 26 | } 27 | } 28 | }); 29 | return ImageControl; 30 | }); -------------------------------------------------------------------------------- /js/widgets/LayerControl/controls/ImageVector.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'dojo/_base/declare', 3 | 'dijit/_WidgetBase', 4 | 'dijit/_TemplatedMixin', 5 | 'dijit/_Contained', 6 | './_Control', // layer control base class 7 | './../plugins/legendUtil' 8 | ], function ( 9 | declare, 10 | _WidgetBase, 11 | _TemplatedMixin, 12 | _Contained, 13 | _Control, 14 | legendUtil 15 | ) { 16 | var ImageVectorControl = declare([_WidgetBase, _TemplatedMixin, _Contained, _Control], { 17 | _layerType: 'overlay', // constant 18 | _esriLayerType: 'imagevector', // constant 19 | _layerTypeInit: function () { 20 | if (legendUtil.isLegend(this.controlOptions.noLegend, this.controller.noLegend)) { 21 | this._expandClick(); 22 | legendUtil.layerLegend(this.layer, this.expandNode); 23 | } else { 24 | this._expandRemove(); 25 | } 26 | } 27 | }); 28 | return ImageVectorControl; 29 | }); -------------------------------------------------------------------------------- /js/widgets/LayerControl/controls/KML.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'dojo/_base/declare', 3 | 'dijit/_WidgetBase', 4 | 'dijit/_TemplatedMixin', 5 | 'dijit/_Contained', 6 | './_Control', // layer control base class 7 | './../plugins/legendUtil' 8 | ], function ( 9 | declare, 10 | _WidgetBase, 11 | _TemplatedMixin, 12 | _Contained, 13 | _Control, 14 | legendUtil 15 | ) { 16 | var KMLControl = declare([_WidgetBase, _TemplatedMixin, _Contained, _Control], { 17 | _layerType: 'vector', // constant 18 | _esriLayerType: 'kml', // constant 19 | // create and legend 20 | _layerTypeInit: function () { 21 | this._expandClick(); 22 | // if (legendUtil.isLegend(this.controlOptions.noLegend, this.controller.noLegend)) { 23 | // legendUtil.layerLegend(this.layer, this.expandNode); 24 | // } 25 | } 26 | }); 27 | return KMLControl; 28 | }); -------------------------------------------------------------------------------- /js/widgets/LayerControl/controls/Raster.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'dojo/_base/declare', 3 | 'dijit/_WidgetBase', 4 | 'dijit/_TemplatedMixin', 5 | 'dijit/_Contained', 6 | './_Control' // layer control base class 7 | ], function ( 8 | declare, 9 | _WidgetBase, 10 | _TemplatedMixin, 11 | _Contained, 12 | _Control 13 | ) { 14 | var RasterControl = declare([_WidgetBase, _TemplatedMixin, _Contained, _Control], { 15 | _layerType: 'overlay', // constant 16 | _esriLayerType: 'raster', // constant 17 | // create and legend 18 | _layerTypeInit: function () { 19 | this._expandRemove(); 20 | } 21 | }); 22 | return RasterControl; 23 | }); -------------------------------------------------------------------------------- /js/widgets/LayerControl/controls/Stream.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'dojo/_base/declare', 3 | 'dijit/_WidgetBase', 4 | 'dijit/_TemplatedMixin', 5 | 'dijit/_Contained', 6 | './_Control', // layer control base class 7 | './../plugins/legendUtil' 8 | ], function ( 9 | declare, 10 | _WidgetBase, 11 | _TemplatedMixin, 12 | _Contained, 13 | _Control, 14 | legendUtil 15 | ) { 16 | var StreamControl = declare([_WidgetBase, _TemplatedMixin, _Contained, _Control], { 17 | _layerType: 'overlay', // constant 18 | _esriLayerType: 'raster', // constant 19 | // create and legend 20 | _layerTypeInit: function () { 21 | if (legendUtil.isLegend(this.controlOptions.noLegend, this.controller.noLegend)) { 22 | this._expandClick(); 23 | legendUtil.layerLegend(this.layer, this.expandNode); 24 | } else { 25 | this._expandRemove(); 26 | } 27 | } 28 | }); 29 | return StreamControl; 30 | }); -------------------------------------------------------------------------------- /js/widgets/LayerControl/controls/Tiled.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'dojo/_base/declare', 3 | 'dijit/_WidgetBase', 4 | 'dijit/_TemplatedMixin', 5 | 'dijit/_Contained', 6 | './_Control', // layer control base class 7 | './../plugins/legendUtil' 8 | ], function ( 9 | declare, 10 | _WidgetBase, 11 | _TemplatedMixin, 12 | _Contained, 13 | _Control, 14 | legendUtil 15 | ) { 16 | var TiledControl = declare([_WidgetBase, _TemplatedMixin, _Contained, _Control], { 17 | _layerType: 'overlay', // constant 18 | _esriLayerType: 'tiled', // constant 19 | // create and legend 20 | _layerTypeInit: function () { 21 | if (legendUtil.isLegend(this.controlOptions.noLegend, this.controller.noLegend)) { 22 | this._expandClick(); 23 | legendUtil.layerLegend(this.layer, this.expandNode); 24 | } else { 25 | this._expandRemove(); 26 | } 27 | } 28 | }); 29 | return TiledControl; 30 | }); -------------------------------------------------------------------------------- /js/widgets/LayerControl/controls/WMS.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'dojo/_base/declare', 3 | 'dijit/_WidgetBase', 4 | 'dijit/_TemplatedMixin', 5 | 'dijit/_Contained', 6 | './_Control' // layer control base class 7 | ], function ( 8 | declare, 9 | _WidgetBase, 10 | _TemplatedMixin, 11 | _Contained, 12 | _Control 13 | ) { 14 | var WMSControl = declare([_WidgetBase, _TemplatedMixin, _Contained, _Control], { 15 | _layerType: 'overlay', // constant 16 | _esriLayerType: 'wms', // constant 17 | _layerTypeInit: function () { 18 | this._expandRemove(); 19 | } 20 | }); 21 | return WMSControl; 22 | }); -------------------------------------------------------------------------------- /js/widgets/LayerControl/controls/WebTiled.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'dojo/_base/declare', 3 | 'dijit/_WidgetBase', 4 | 'dijit/_TemplatedMixin', 5 | 'dijit/_Contained', 6 | './_Control' // layer control base class 7 | ], function ( 8 | declare, 9 | _WidgetBase, 10 | _TemplatedMixin, 11 | _Contained, 12 | _Control 13 | ) { 14 | var WebTiledControl = declare([_WidgetBase, _TemplatedMixin, _Contained, _Control], { 15 | _layerType: 'overlay', // constant 16 | _esriLayerType: 'webtiled', // constant 17 | _layerTypeInit: function () { 18 | this._expandRemove(); 19 | } 20 | }); 21 | return WebTiledControl; 22 | }); -------------------------------------------------------------------------------- /js/widgets/LayerControl/controls/templates/Control.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 7 | 10 | 13 | 16 | 19 | 20 |
5 | 6 | 8 | 9 | 11 | 12 | 14 | 15 | 17 | 18 |
21 | 22 |
23 | -------------------------------------------------------------------------------- /js/widgets/LayerControl/controls/templates/Folder.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 7 | 10 | 13 | 16 | 17 |
5 | 6 | 8 | 9 | 11 | 12 | 14 | 15 |
18 | 19 |
20 | -------------------------------------------------------------------------------- /js/widgets/LayerControl/controls/templates/Sublayer.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 7 | 10 | 14 | 17 | 18 |
5 | 6 | 8 | 9 | 11 | 12 | 13 | 15 | 16 |
19 | 20 |
21 | -------------------------------------------------------------------------------- /js/widgets/LayerControl/nls/resource.js: -------------------------------------------------------------------------------- 1 | // internationalization for LayerControl 2 | // 3 | // http://dojotoolkit.org/reference-guide/1.10/dojo/i18n.html 4 | // 5 | // if you would like to add a locale please create an issue at 6 | // https://github.com/cmv/cmv-app/issues and someone will assist 7 | // if need be or checkout the link above and submit a PR 8 | define({ 9 | root: { 10 | noLegend: 'No Legend', 11 | moveUp: 'Move Up', 12 | moveDown: 'Move Down', 13 | zoomTo: 'Zoom to Layer', 14 | transparency: 'Transparency', 15 | metadata: 'Description', 16 | layerSwipe: 'Layer Swipe', 17 | layerSwipeVertical: 'Vertical', 18 | layerSwipeHorizontal: 'Horizontal', 19 | layerSwipeScope: 'Scope', 20 | dynamicSublayersOn: 'Show All Sublayers', 21 | dynamicSublayersOff: 'Hide All Sublayers' 22 | } 23 | }); 24 | -------------------------------------------------------------------------------- /js/widgets/LayerControl/plugins/Transparency.js: -------------------------------------------------------------------------------- 1 | /* transparency component */ 2 | define([ 3 | 'dojo/_base/declare', 4 | 'dojo/_base/lang', 5 | 'dojo/_base/array', 6 | 'dojo/query', 7 | 'dojo/dom-style', 8 | 'dijit/PopupMenuItem', 9 | 'dijit/TooltipDialog', 10 | 'dijit/form/HorizontalSlider', 11 | 'dijit/form/HorizontalRuleLabels' 12 | ], function ( 13 | declare, 14 | lang, 15 | array, 16 | query, 17 | domStyle, 18 | PopupMenuItem, 19 | TooltipDialog, 20 | HorizontalSlider, 21 | HorizontalRuleLabels 22 | ) { 23 | return declare(PopupMenuItem, { 24 | layer: null, 25 | constructor: function (options) { 26 | options = options || {}; 27 | lang.mixin(this, options); 28 | }, 29 | postCreate: function () { 30 | this.inherited(arguments); 31 | var transparencySlider = new HorizontalSlider({ 32 | value: this.layer.opacity, 33 | minimum: 0, 34 | maximum: 1, 35 | discreteValues: 21, 36 | intermediateChanges: true, 37 | showButtons: false, 38 | onChange: lang.hitch(this, function (value) { 39 | this.layer.setOpacity(value); 40 | array.forEach(query('.' + this.layer.id + '-layerLegendImage'), function (img) { 41 | domStyle.set(img, 'opacity', value); 42 | }); 43 | }), 44 | onClick: function(e){ 45 | e.stopPropagation(); 46 | } 47 | }); 48 | 49 | var rule = new HorizontalRuleLabels({ 50 | labels: ['100%', '50%', '0%'], 51 | style: 'height:1em;font-size:75%;' 52 | }, transparencySlider.bottomDecoration); 53 | rule.startup(); 54 | transparencySlider.startup(); 55 | this.popup = new TooltipDialog({ 56 | style: 'width:200px;', 57 | content: transparencySlider, 58 | onClick: function(e){ 59 | e.stopPropagation(); 60 | } 61 | }); 62 | domStyle.set(this.popup.connectorNode, 'display', 'none'); 63 | this.popup.startup(); 64 | } 65 | }); 66 | }); -------------------------------------------------------------------------------- /js/widgets/Links/Links.Item.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
${label}
5 |
6 |
7 | -------------------------------------------------------------------------------- /js/widgets/Links/Links.WidgetContainer.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
${label}
5 |
6 |
7 |
8 |
9 |
10 | -------------------------------------------------------------------------------- /js/widgets/Links/Links.html: -------------------------------------------------------------------------------- 1 |
2 | 4 |
-------------------------------------------------------------------------------- /js/widgets/Locate/Locate.WidgetContainer.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
${label}
5 |
6 |
7 |
8 |
9 | 10 |
11 |
12 |
13 |
14 | 15 |
16 |
17 |
18 |
19 |
No results
20 |
No location matches "".
21 |
22 |
23 |
24 |
25 | 26 |
27 |
28 |
29 |
30 |
31 | -------------------------------------------------------------------------------- /js/widgets/Locate/Locate.html: -------------------------------------------------------------------------------- 1 |
2 | 4 |
-------------------------------------------------------------------------------- /js/widgets/Print.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
Layout
5 |
6 | 7 |
8 |
Format
9 |
10 | 11 |
12 |
Preserve
13 |
14 | 15 |
16 |
Title
17 |
18 | 19 |
20 |
21 |
Image Width
22 | 23 | 24 |
25 |
26 |
Image Height
27 | 28 | 29 |
30 |
31 |
DPI
32 |
33 |
34 |
35 | 36 |
37 |
38 | Exporting... 39 |
40 |
41 | 42 |
An error occurred while exporting. Make sure you are connected to the internet or try again later.
43 |
44 | 45 | 46 |
47 |
-------------------------------------------------------------------------------- /js/widgets/Query/Query.Category.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
${label}
5 | 6 |
7 |
8 |
9 |
10 | -------------------------------------------------------------------------------- /js/widgets/Query/Query.Item.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
${label}
5 | 6 |
7 |
8 | -------------------------------------------------------------------------------- /js/widgets/Query/Query.Search.Category.Result.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | ${!text} 6 |
7 |
8 |
-------------------------------------------------------------------------------- /js/widgets/Query/Query.Search.Category.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
${label}
6 |
7 |
8 |
9 | Loading... 10 |
11 |
12 | 13 |
14 |
15 | 16 |
17 |
18 |
19 |
20 |
21 |
-------------------------------------------------------------------------------- /js/widgets/Query/Query.Search.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 | 6 |
7 |
8 |
9 |
10 |
11 |
No results
12 |
There were no results found for "".
13 |
14 |
15 |
16 |
-------------------------------------------------------------------------------- /js/widgets/Query/Query.html: -------------------------------------------------------------------------------- 1 |
2 | 4 |
-------------------------------------------------------------------------------- /js/widgets/Routes/Routes.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 6 |
7 | 8 |
9 |
10 |
11 |
12 | 13 |
14 |
15 |
16 |
17 |
No results
18 |
There were no results for "".
19 |
20 |
21 |
22 |
23 | 24 |
25 |
26 |
27 | -------------------------------------------------------------------------------- /js/widgets/Slider.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define("maple/widgets/Slider", [ 18 | "dojo/_base/declare", "dojox/mobile/Slider", "dojo/dom", 19 | "dojo/ready", "dojo/_base/lang", "dojo/on", "maple/helpers/utils"], 20 | function(declare, dojoxSlider, dom, ready, lang, on, utils) { 21 | "use strict"; 22 | 23 | var postCreate = dojoxSlider.prototype.postCreate; 24 | 25 | return declare("maple/widgets/Slider", [dojoxSlider], { 26 | intermediateChanges: true, 27 | orientation: 'H', 28 | 29 | postCreate: function(){ 30 | postCreate.apply(this, arguments); 31 | var self = this; 32 | 33 | if (this.hookTo){ 34 | ready(function(){ 35 | utils.onDomElementCreated(self.hookTo, function(element){ 36 | self.hookToNode = element; 37 | if (self.hookToNode){ 38 | self.syncFromHook(); 39 | 40 | on(self.hookToNode, "change", function(){ 41 | self.syncFromHook(); 42 | }); 43 | } 44 | }); 45 | }); 46 | } 47 | }, 48 | 49 | syncFromHook: function(){ 50 | this.set('value', this.hookToNode.value); 51 | }, 52 | 53 | onChange: function(size){ 54 | if (this.hookToNode){ 55 | var oldValue = this.hookToNode.value; 56 | this.hookToNode.value = size; 57 | 58 | if (oldValue != size){ 59 | utils.fireEvent(this.hookToNode, "change"); 60 | } 61 | } 62 | } 63 | }); 64 | } 65 | ); -------------------------------------------------------------------------------- /js/widgets/Standby.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define("maple/widgets/Standby", ["dojo/_base/declare", "dojox/widget/Standby"], 18 | function(declare, dojoxStandby) { 19 | "use strict"; 20 | return declare("maple/widgets/Standby", [dojoxStandby], { 21 | color: '#A7A7AA', 22 | duration: 250, 23 | image: "/images/spinner.svg", 24 | centerIndicator: "image" 25 | }); 26 | } 27 | ); -------------------------------------------------------------------------------- /js/widgets/Weather.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
Radar
5 |
6 | 7 |
8 |
Opacity
9 |
10 |
11 |
12 | 13 |
14 |
15 | 16 |
17 |
-------------------------------------------------------------------------------- /js/widgets/eTime.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
${timelayerlabel}
5 |
6 |
7 |
8 |
9 |
10 |
11 |
-------------------------------------------------------------------------------- /misc/maple-diagram.xml: -------------------------------------------------------------------------------- 1 | 7VhZc+K6Ev41eZwpLxjMo2SwIeyLAfMm2/KCFxkvYPj1VzImwEBmcmbm3KpbdVMJSF+3tu6vW628iUpUailKvBGxcfgmcHb5JnbeBKEtN+gnA04XQOLkC+Cmvn2B+Buw8M+4BrkaLXwbZw+KOSFh7iePoEXiGFv5A4bSlBwf1RwSPq6aIBc/AQsLhc/o2rdz74LKEnfDe9h3vevKPFdLTGQFbkqKuF7vTRCd6ucijtB1rlo/85BNjneQ2H0TlZSQ/NKKSgWHzLRXs13GqZ9IP/ad4jj/yoDaLVl+uh4d29QSdZekuUdcEqOwe0NhdTzMJuBoz8ujkDZ52sSln2/u2gZT+S6xXpynp009ourcZCEycQg/7KaQkKRUGJOYLZblKM0Bc+kPmOqH4ceE9lXDClGW+dYFrFXYdnY4z081z1CREwrdDjckJKn1HBLntZrQoP2LeZhNPjVwDWWkSK1aS6wpi1IX11rSh3NpzGASYWoDqpLiEOX+4XF2VLPX/dC7eZA2aie+dmj7MsUBhQW+UrAZ5vXRHlzd3BfkKviWVYcGVIEXkvImpC2XfSskSuhOTTq2CjvHd4uUAiSu4iulzL4uRLd4Wesy8gqb6Q35gXM5LvNHKqWYbgiZlQJzcUL8OK/MIsE3qUMRFPpuzDxOHYEpYeABp7lPQxjUgpw59TN23eLy2eesr6LID1nymhOTVHSp7UoXweWrHFRv9hba9xyRX3u/noj7ThNf6zKqTpjfhEv3y/yoJ58yO91m/nYN8Ou0rccZiONklKE/8utji1+inPhEuZWPj9QnFTHopxri8gsseMwrR8/P8SJBVUwd6S3zSBCXBXqtapGIhXzV/nk2eXI1zRB3lLARlh2ryjApCfCdpGnJ2HT+OTmeEsWnJOBbjQdXiTWNjrf7hxdq93l3d0+L+/Okcb12H7LGD95h9kz+KAh+fn7peuCfnZ/7d84vPR1/hBKW6f4HOOs4uGm95Kzdapsc9yIzUtLmJGJD6Fb92IV1v/Mb2e/BwdxrD/83XNj8NYNprZWwph9V1d+HWYbM/FOS+dVtdmeeL9wdry8dlCWXqtTxS0YOWC0Jrih3RWjbRjmi9+6lK6hJ7L4Jir+Ck/mRG2guAfRnvNC9ru7SlsK6wFWAQb/gGccpxwDYGyuL1ayvALfvAC/wK7XwuFDDM21MSvrRyWYwXGQT7cgGhNx85XG60I7snu1ZkQ5s0RaHUVggcbwzNjAcRu3TVjoUU8j2MGgt9Dlcqb7a2m6HCI7nah/R/Y6k2BgkeqSchP6g7+npwlw2umSmDgLXTd1N4Xv5e9NNLVsLwdJGeq/rGQFUV+NT3wznuqNw3VXL7OYHz1AUSXfewbbHz9PgHBTyDo6Nc7Ljmi25vwVSm4apenZasbgsWsCRecUM23IkTTMaGWbvMDiMhWS/fxNgRP+sxhasRXm2Sa2Mjtss5Q39IsbMOjrtJn8YbHhRFEwRnLWZaolBp72khIOq5mobZcl7U1WT3BFmh1QmzkjlVGJRedLqmKAtBc1iHIBSO0czyjKI+QS66my7DIyO3JcawkqddJXhAjewty/n0kaYxaQLBkq5VSY+Ga3QHm7T1YEObcKzuM1MQzjRSgqaS7xL3z2oG8fuophstvEiHC+nIxohEIz2570PC85LwEEvIJjPdwD73pDK6G8WtdvNblAoID4fhHYnEg5aa++VcwVYGhs+VXbh2dBEbRnbBXz3ZGAgeiQ1W28WChCgDdR+PD9CSzunYOJN5u8JUL31wtbHK+O9pcDDEu5UJ4x1GOQdV94VpHsa8GQSTxUIlbm+Wk9Ic9NCcjLFk7C32hSmPuYNNO/yu8QcgY4nbI8G19qNg9zbD5POqAQL4bCb+bHkB5a+DJISBQVolGkTDmax4citod8dJlZxcjsqs8HpcBaKXaIM40FAtz4ZkY7J7OYqRWGhmboUtxqfyuUMjMv4sHLUArQ1iYrXyrLkgnA71XTI/IyzQZuxxDsonTBz4mGhdjXU4VohoXxbZiu4j8/zttJH/Q30xwecOztZVjCxzCRkS6s2iQew9Gmztyp7+W5bSna6Pq2n44btONqq6L3PdKaYdt5FcMxjZbr3rKF2Mvq7aDSdG9J02W8KyZm8W72yZTAXdfM46wmjZDfOnTjTMHvACPDQ6qtnOhM/BZzK1KKRi8zTZu92MJhb+ql9AIalOrNGs2sqsXOO2v52veL52CyKKeKTVTNOAh0B5G8bjrNUgr5P0nV7OVs0hiyxzlKZVe3AjI67rmXwVdYBC301mQ8kxej3Wdb7w0ugHtF4rHKaT5e8KDxfEFfsj2qc50v+77yMNqPhpy+ff/zOYW/Ty4KV+JePnMi37epR/vxAuq8TPh7O9yVCDT6WML9fozwXDa8f039UJdMy+bv0wKD2c53YeFFjNP5GmfyqyLh4nlZS8e9T6H0xGd9x6DLZ/zn0L3FIav6SQdLfYRDt3v6Vd3lZ3/5dKnb/Aw== -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Maple", 3 | "description": "A modern, free and open-source web mapping application with built-in migration support for legacy Flex Viewer applications.", 4 | "version": "1.0.0", 5 | "homepage": "https://github.com/virtualgis/maple", 6 | "dojoBuild": "app.profile.js", 7 | "devDependencies": { 8 | "gulp": "^3.9.1", 9 | "gulp-sass": "^4.0.1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /server/.gitignore: -------------------------------------------------------------------------------- 1 | composer.lock 2 | config.php 3 | vendor/ 4 | composer.phar 5 | composer.lock 6 | -------------------------------------------------------------------------------- /server/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": { 3 | "guzzlehttp/guzzle": "~6.0", 4 | "fire015/flintstone": "1.*", 5 | "phpmailer/phpmailer": "^5.2", 6 | "dburkart/scurvy": "^1.2" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /server/config.example.php: -------------------------------------------------------------------------------- 1 | . */ 18 | 19 | 20 | define('APP_URL', 'http://localhost'); 21 | define('SECRET', 'CHANGEME!!!'); 22 | 23 | // If your users login using the user store 24 | // and you allow password resets, uncomment 25 | // the lines below 26 | 27 | // define('DB_DIR', dirname( dirname(__FILE__) ) . '/db/'); 28 | // define('ARCGIS_ADMIN_USER', 'changeme'); 29 | // define('ARCGIS_ADMIN_PASS', 'changeme'); 30 | // define('ARCGIS_WEBADAPTOR_ADMIN_URL', 'http://localhost/arcgiswebadaptor/admin/'); 31 | 32 | // define('SMTP_HOST', 'mail.change.me'); 33 | // define('SMTP_USER', 'support'); 34 | // define('SMTP_PASS', 'password'); 35 | // define('SMTP_PORT', 465); 36 | // define('SMTP_SECURITY', 'ssl'); 37 | // define('MAIL_FROM', 'Maple Support'); 38 | // define('MAIL_FROM_ADDR', 'support@change.me'); 39 | 40 | function getAdminNotificationList(){ 41 | return array( 42 | // project name --> list of notifications e-mails 43 | "default" => array("email1@domain.com"), 44 | ); 45 | } 46 | 47 | ?> -------------------------------------------------------------------------------- /server/uploader/include/cors.php: -------------------------------------------------------------------------------- 1 | false))); 22 | } 23 | 24 | $key = ini_get('session.upload_progress.prefix') . $_POST[ini_get('session.upload_progress.name')]; 25 | 26 | if (!isset($_SESSION[$key])) { 27 | exit(json_encode(array('success' => false))); 28 | } 29 | 30 | $progress = $_SESSION[$key]; 31 | $pct = 0; 32 | $size = 0; 33 | 34 | if (is_array($progress)) { 35 | 36 | if (array_key_exists('bytes_processed', $progress) && array_key_exists('content_length', $progress)) { 37 | 38 | if ($progress['content_length'] > 0) { 39 | $pct = round(($progress['bytes_processed'] / $progress['content_length']) * 100); 40 | $size = round($progress['content_length'] / 1024); 41 | } 42 | } 43 | } 44 | 45 | echo json_encode(array('success' => true, 'pct' => $pct, 'size' => $size)); 46 | -------------------------------------------------------------------------------- /server/uploader/include/uploadProgress.php: -------------------------------------------------------------------------------- 1 | false))); 28 | } 29 | 30 | $pct = 0; 31 | $size = 0; 32 | 33 | if (is_array($status)) { 34 | 35 | if (array_key_exists('total', $status) && array_key_exists('current', $status)) { 36 | 37 | if ($status['total'] > 0) { 38 | $pct = round(($status['current'] / $status['total']) * 100); 39 | $size = round($status['total'] / 1024); 40 | } 41 | } 42 | } 43 | 44 | echo json_encode(array('success' => true, 'pct' => $pct, 'size' => $size)); 45 | -------------------------------------------------------------------------------- /server/views/admin_user_pass_reset_notification.html: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 |
8 | This is a notification to inform you that the following user has reset his/her password on {project}:

9 | 10 | Username: {name}

11 | 12 | If you do not wish to receive these e-mails in the future, please contact our staff.

13 | 14 | This message has been generated automatically. Please do not reply to this e-mail address.

15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /server/views/reset_password_email.html: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 |
8 | Hi {name},
9 |
10 | We have received a request to reset your password on {appDomain}. The request was initiated from a computer identified by: {ip}. To continue with the reset, please visit the link below:

11 | 12 | {resetUrl}

13 | 14 | If you have not initiated the password reset, please notify this incident to our staff.

15 | 16 | This message has been generated automatically. Please do not reply to this e-mail address.

17 | 18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /tests/allTests.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define(["tests/helpers/utils", "tests/config/project"], 1); 18 | -------------------------------------------------------------------------------- /tests/conf.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define(["tests/conf"], function(){ 18 | return { 19 | 20 | }; 21 | }); 22 | -------------------------------------------------------------------------------- /tests/helpers/utils.js: -------------------------------------------------------------------------------- 1 | /* Maple - A Modern Web Mapping Application 2 | * 3 | * Copyright (C) 2018 VirtualGIS 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU Affero General Public License as 7 | * published by the Free Software Foundation, either version 3 of the 8 | * License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU Affero General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Affero General Public License 16 | * along with this program. If not, see . */ 17 | define(["doh/runner", "tests/conf", "gisView/helpers/utils"], 18 | function(doh, conf, utils){ 19 | 20 | doh.register("Utils Module", [ 21 | { 22 | name: "utils.arrayify()", 23 | runTest: function(){ 24 | doh.assertTrue(utils.arrayify !== undefined, "Arrayify exists"); 25 | 26 | var obj = { 27 | a: {}, 28 | b: { 29 | c: {}, 30 | d: [{value: 1}] 31 | } 32 | }; 33 | 34 | utils.arrayify(obj, "a"); 35 | utils.arrayify(obj, "b.c"); 36 | utils.arrayify(obj, "b.d"); 37 | utils.arrayify(obj, "nonexisting.property"); 38 | 39 | doh.assertTrue(Object.prototype.toString.apply(obj.a) === "[object Array]", "Arrayified obj.a"); 40 | doh.assertTrue(Object.prototype.toString.apply(obj.b.c) === "[object Array]", "Arrayified obj.b.c"); 41 | doh.assertTrue(obj.b.d[0].value === 1, "Did not change obj.b.d"); 42 | } 43 | }, 44 | { 45 | name: "utils.hasProp()", 46 | runTest: function(){ 47 | doh.assertTrue(utils.hasProp !== undefined, "hasProp exists"); 48 | 49 | var obj = { 50 | a: {}, 51 | b: { 52 | c: {} 53 | } 54 | }; 55 | 56 | doh.assertTrue(utils.hasProp(obj, "a"), "obj.a exists"); 57 | doh.assertTrue(utils.hasProp(obj, "b.c"), "obj.b.c exists"); 58 | doh.assertFalse(utils.hasProp(obj, "b.nonexistent"), "b.nonexistent does not exist"); 59 | doh.assertFalse(utils.hasProp(obj, "nonexistent.nonexistent"), "nonexistent.nonexistent does not exist"); 60 | doh.assertFalse(utils.hasProp(obj, "nonexistent"), "nonexistent does not exist"); 61 | doh.assertFalse(utils.hasProp(obj, ""), "'' does not exist"); 62 | } 63 | }, 64 | { 65 | name: "utils.removeDuplicates()", 66 | runTest: function(){ 67 | doh.assertTrue(utils.removeDuplicates !== undefined, "removeDuplicates exists"); 68 | 69 | var list = ["a", "b", "c", "a", "a", "c"]; 70 | var out = utils.removeDuplicates(list); 71 | 72 | doh.assertTrue(out.length === 3, "3 is the expected length"); 73 | doh.assertTrue(out[0] === "a" && out[1] === "b" && out[2] === "c", "out is the expected array"); 74 | doh.assertTrue(utils.removeDuplicates([]).length === 0, "can pass an empty list"); 75 | doh.assertTrue(utils.removeDuplicates(null).length === 0, "can pass a non array parameter (return [])"); 76 | } 77 | }] 78 | ); 79 | }); 80 | -------------------------------------------------------------------------------- /tmp/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | 3 | --------------------------------------------------------------------------------