Skip to content

Instantly share code, notes, and snippets.

@raykendo
raykendo / UTCToMyDateTime.js
Last active March 29, 2016 15:48
UTC to current time zone converter
/*
* Dojo AMD helper function to convert dates stored as UTC milliseconds from January 1, 1970 to a date/time format more fitting
* for current location.
* Reason: ArcGIS Server stores dates without times as midnight UTC. When those times are translated into real dates,
* the browser often corrects the date for time zone differences, moving the date back several hours in the U.S.
*/
/* globals define */
define(function () {
var oneDay = 24 * 60 * 60 * 1000;
/**
@raykendo
raykendo / georgeWashington.js
Last active November 17, 2015 16:16
George Washington - A user testing test
/**
* This script is a test to see whether the people who are supposed to be user testing your site are actually doing
* anything. It injects a piece of red text with content of George Washington somewhere in the document. It's designed
* to look for lowest hanging HTML dom nodes in the DOM tree (no children elements) that are visible (offsetParent is not null).
*/
(function () {
var nodes = Array.prototype.filter.call(document.querySelectorAll('div, p, span, blockquote, code, a, td'), function (node) {
return !(node.children && node.children.length) && node.offsetParent !== null;
});
if (nodes.length) {
@raykendo
raykendo / pouchdb_and_jsapi.html
Created November 23, 2015 21:19
Quick and simple way to add Pouch DB to ArcGIS JavaScript API
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/>
<title>Simple Map</title>
<link rel="stylesheet" href="http://js.arcgis.com/3.14/esri/css/esri.css">
<style>
html, body, #map {
height: 100%;
@raykendo
raykendo / GetTimeStamp.js
Last active November 24, 2015 20:56
Dojo time stamp browser plugins
/**
* Gets a time stamp out of either localStorage, or a cookie session, if those are available.
* Use in conjunction with SetTimeStamp module.
* @module GetTimeStamp
* @param {string} id - string id you want to use to retrieve a time stamp from the browser
* @returns {Date} - Date of the last time stamp
*/
define(["dojo/cookie"], function (cookie) {
return {
load: function (id, require, callback) {
@raykendo
raykendo / UniqueComboBox.js
Last active December 8, 2015 23:17
David Walsh's Display Unique Combobox (https://davidwalsh.name/unique-combobox) updated for AMD
/**
* An update on David Walsh's Unique Combobox
* Updated for Dojo AMD (tested at v. 1.10)
* Originally posted: https://davidwalsh.name/unique-combobox
*/
define("davidwalsh.form._UniqueComboBoxMenu",
["dojo/_base/declare", "dojo/_base/array", "dijit/form/_ComboBoxMenu"],
function (declare, arrayUtils, _ComboBoxMenu) {
return declare([_ComboBoxMenu], {
createOptions: function (results, dataObject, labelFunc) {
@raykendo
raykendo / UrlSearchParameters.js
Created January 18, 2016 17:00
Dojo plugin to parse URL parameters and translate them to a where clause for an ArcGIS JavaScript API Query
/**
* A dojo plugin that extracts possible query parameters from the URL.
* @module search/UrlSearch
*/
define(["esri/urlUtils"], function (urlUtils) {
// regex for parameter names to ignore
var ignoreParameters = [
/^appid$/i, // ArcGIS Online uses appid parameter to define application id
/^folderid$/i, // ArcGIS Online uses folderid to define folder hash where webmap is stored
/^webmap$/i // ArcGIS Online uses webmap property to define the map to use in the application
@raykendo
raykendo / PointWithin.js
Created February 1, 2016 16:29
Finding a point within a geometry for ArcGIS JavaScript API using client-side processing
define([
"dojo/_base/array",
"esri/geometry/Polygon",
"esri/geometry/Polyline",
"esri/geometry/Point",
"esri/geometry/geometryEngine"
], function (arrayUtils, Polygon, Polyline, Point, geometryEngine) {
/**
* Finds a point on a polyline
@raykendo
raykendo / Gruntfile.js
Last active March 17, 2016 19:31
Grunt Work: Generic Grunt setup for my ArcGIS JSAPI Applications (work in progress)
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
jshint: {
files: ['Gruntfile.js', 'src/**/*.js'],
options: {
browser: true,
'-W083': true, // don't form functions within loops (hard when calling Array.prototype.forEach inside another Array.prototype.forEach)
scripturl: true, // no script URL (I sometimes use javascript:void(0); instead of # when I have routes)
@raykendo
raykendo / LayerListModified.js
Last active March 24, 2016 14:48
ArcGIS JSAPI Hack: LayerList fixes
define([
"dojo/_base/declare",
"dojo/_base/array",
"dojo/query",
"put-selector/put",
"esri/dijit/LayerList"
], function (declare, arrayUtils, dojoQuery, put, LayerList) {
return declare([LayerList], {
@raykendo
raykendo / example.js
Created March 30, 2016 17:17
Quick and Dirty show Date from feature
require(["esri/map", "esri/layers/FeatureLayer", "esri/tasks/query"], function (map, FeatureLayer, query) {
var features = [/* assume a list of feature graphics will be assigned here soon */];
// do stuff to assign maps, feature layers, etc.
// do stuff to assign features as a list of search results from a feature layer
var importantDates = features.map(function (feature) {
if (feature.attributes["ImportantDate"] !== null) {
return new Date(feature.attributes["ImportantDate"]);
}
});