<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic add csv file custom widget in Web AppBuilder Custom Widgets Questions</title>
    <link>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/add-csv-file-custom-widget/m-p/863175#M12027</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am trying to create a custom widget AddCSVfile using the code i found on &lt;/P&gt;&lt;P&gt; &lt;A href="https://developers.arcgis.com/javascript/jssamples/exp_dragdrop.html" title="https://developers.arcgis.com/javascript/jssamples/exp_dragdrop.html"&gt;Drag and drop to display data | ArcGIS API for JavaScript &lt;/A&gt;&lt;SPAN&gt;&amp;nbsp; to upload a csv file and then plot the points to the map.&amp;nbsp; Following is the code for widget.js i am working on, I keep getting &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fmachinename.domain%3A3344%2Fwebappbuilder%2Fapps%2Fwidgets%2FAddCSVfile%2Freflect.ashx" rel="nofollow" target="_blank"&gt;http://machinename.domain:3344/webappbuilder/apps/widgets/AddCSVfile/reflect.ashx&lt;/A&gt;&lt;SPAN&gt; 404 (Not Found). Although when i am able to access &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fmachinename.domain%3A3344%2Fwebappbuilder%2Fapps%2Fwidgets%2FAddCSVfile%2Freflect.ashx" rel="nofollow" target="_blank"&gt;http://machinename.domain:3344/webappbuilder/apps/widgets/AddCSVfile/reflect.ashx&lt;/A&gt;&lt;SPAN&gt; from the browser.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help is appreciated!&lt;/P&gt;&lt;P&gt;Jin&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;define([&lt;/P&gt;&lt;P&gt;&amp;nbsp; 'dojo/_base/declare',&lt;/P&gt;&lt;P&gt;&amp;nbsp; 'jimu/BaseWidget',&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/config",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/domUtils",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/graphic",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/InfoTemplate",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/map",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/request",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/urlUtils",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/dijit/InfoWindowLite",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/geometry/Multipoint",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/geometry/Point",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/geometry/webMercatorUtils",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/layers/ArcGISDynamicMapServiceLayer",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/layers/ArcGISImageServiceLayer",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/layers/FeatureLayer",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/symbols/PictureMarkerSymbol",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojo/dom",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojo/dom-construct",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojo/json",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojo/on",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojo/parser",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojo/_base/array",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojo/_base/lang",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojox/data/CsvStore",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojox/encoding/base64",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dijit/Dialog",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dijit/layout/BorderContainer",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dijit/layout/ContentPane",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojo/domReady!",&lt;/P&gt;&lt;P&gt;&amp;nbsp; 'esri/Color',&lt;/P&gt;&lt;P&gt;&amp;nbsp; 'dojo/sniff'&lt;/P&gt;&lt;P&gt;&amp;nbsp; ],&lt;/P&gt;&lt;P&gt;&amp;nbsp; function (&lt;/P&gt;&lt;P&gt;&amp;nbsp; declare,&lt;/P&gt;&lt;P&gt;&amp;nbsp; BaseWidget,&lt;/P&gt;&lt;P&gt;&amp;nbsp; esriConfig,&lt;/P&gt;&lt;P&gt;&amp;nbsp; domUtils,&lt;/P&gt;&lt;P&gt;&amp;nbsp; Graphic,&lt;/P&gt;&lt;P&gt;&amp;nbsp; InfoTemplate,&lt;/P&gt;&lt;P&gt;&amp;nbsp; Map,&lt;/P&gt;&lt;P&gt;&amp;nbsp; request,&lt;/P&gt;&lt;P&gt;&amp;nbsp; urlUtils,&lt;/P&gt;&lt;P&gt;&amp;nbsp; InfoWindowLite,&lt;/P&gt;&lt;P&gt;&amp;nbsp; Multipoint,&lt;/P&gt;&lt;P&gt;&amp;nbsp; Point,&lt;/P&gt;&lt;P&gt;&amp;nbsp; webMercatorUtils,&lt;/P&gt;&lt;P&gt;&amp;nbsp; ArcGISDynamicMapServiceLayer,&lt;/P&gt;&lt;P&gt;&amp;nbsp; ArcGISImageServiceLayer,&lt;/P&gt;&lt;P&gt;&amp;nbsp; FeatureLayer,&lt;/P&gt;&lt;P&gt;&amp;nbsp; PictureMarkerSymbol,&lt;/P&gt;&lt;P&gt;&amp;nbsp; dom,&lt;/P&gt;&lt;P&gt;&amp;nbsp; domConstruct,&lt;/P&gt;&lt;P&gt;&amp;nbsp; JSON, on, parser, arrayUtils, lang, CsvStore, base64,&lt;/P&gt;&lt;P&gt;&amp;nbsp; sniff) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return declare([BaseWidget], {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; baseClass : 'jimu-widget-addcsvfile',&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; portalUrl : '&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fwww.arcgis.com" rel="nofollow" target="_blank"&gt;http://www.arcgis.com&lt;/A&gt;&lt;SPAN&gt;',&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; arrayFeatureLayer : null,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; startup : function () {&lt;/P&gt;&lt;P&gt;&amp;nbsp; this.inherited(arguments);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; esriConfig.defaults.io.corsEnabledServers.push("serverapi.arcgisonline.com");&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; esriConfig.defaults.io.proxyUrl = '&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fserverapi.arcgisonline.com%2Fproxy%2Fproxy.ashx%27%3B" rel="nofollow" target="_blank"&gt;http://serverapi.arcgisonline.com/proxy/proxy.ashx';&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; on(this.uploadForm, "change", lang.hitch(this, function (event) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; var fileName = event.target.value.toLowerCase();&lt;/P&gt;&lt;P&gt;&amp;nbsp; this.arrayFeatureLayer = [];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (sniff("ie")) { //filename is full path in IE so extract the file name&lt;/P&gt;&lt;P&gt;&amp;nbsp; var arr = fileName.split("\\");&lt;/P&gt;&lt;P&gt;&amp;nbsp; fileName = arr[arr.length - 1];&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (fileName.indexOf(".csv") !== -1) { //is file a zip - if not notify user&lt;/P&gt;&lt;P&gt;&amp;nbsp; this.uploadFile(this.files);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp; this.uploadstatus.innerHTML = '&amp;lt;p style="color:red"&amp;gt;Add a .csv file&amp;lt;/p&amp;gt;';&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }));&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; onOpen : function () {&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log('onOpen');&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; onClose : function () {&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log('onClose');&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; onRemoveCSVfile : function (evt) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (this.arrayFeatureLayer.length &amp;gt; 0) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; arrayUtils.forEach(this.arrayFeatureLayer, function (currFeatureLayer) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; this.map.removeLayer(currFeatureLayer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }, this);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; uploadFile : function (files) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (files &amp;amp;&amp;amp; files.length === 1) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log("handle files");&lt;/P&gt;&lt;P&gt;&amp;nbsp; handleCSV(files[0]);&lt;/P&gt;&lt;P&gt;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp; this.uploadstatus.innerHTML = '&amp;lt;p style="color:blue"&amp;gt;Uploading…&amp;lt;/p&amp;gt;';&lt;/P&gt;&lt;P&gt;&amp;nbsp; request({&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e23d39;"&gt;&lt;STRONG&gt;&amp;nbsp; url : "widgets/AddCSVfile/reflect.ashx",&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; form : this.uploadForm,&lt;/P&gt;&lt;P&gt;&amp;nbsp; load : this.requestSucceeded,&lt;/P&gt;&lt;P&gt;&amp;nbsp; error : this.requestFailed&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; handleCSV : function (file) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log("Processing CSV: ", file, ", ", file.name, ", ", file.type, ", ", file.size);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (file.file) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; var decoded = bytesToString(base64.decode(file.data));&lt;/P&gt;&lt;P&gt;&amp;nbsp; processCSVData(decoded);&lt;/P&gt;&lt;P&gt;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp; var reader = new FileReader();&lt;/P&gt;&lt;P&gt;&amp;nbsp; reader.onload = function () {&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log("Finished reading CSV data");&lt;/P&gt;&lt;P&gt;&amp;nbsp; processCSVData(reader.result);&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&amp;nbsp; reader.readAsText(file);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; requestSucceeded : function (response) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; this.uploadstatus.innerHTML = '&amp;lt;p style="color:blue"&amp;gt;Upload success…&amp;lt;/p&amp;gt;';&lt;/P&gt;&lt;P&gt;&amp;nbsp; this.handleCSV(response);&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; requestFailed : function (error) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; //this.uploadstatus.innerHTML = '&amp;lt;p style="color:blue"&amp;gt;unable to upload&amp;lt;/p&amp;gt;';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log(JSON.stringify(error));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 11 Dec 2015 14:35:59 GMT</pubDate>
    <dc:creator>JinZhang</dc:creator>
    <dc:date>2015-12-11T14:35:59Z</dc:date>
    <item>
      <title>add csv file custom widget</title>
      <link>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/add-csv-file-custom-widget/m-p/863175#M12027</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am trying to create a custom widget AddCSVfile using the code i found on &lt;/P&gt;&lt;P&gt; &lt;A href="https://developers.arcgis.com/javascript/jssamples/exp_dragdrop.html" title="https://developers.arcgis.com/javascript/jssamples/exp_dragdrop.html"&gt;Drag and drop to display data | ArcGIS API for JavaScript &lt;/A&gt;&lt;SPAN&gt;&amp;nbsp; to upload a csv file and then plot the points to the map.&amp;nbsp; Following is the code for widget.js i am working on, I keep getting &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fmachinename.domain%3A3344%2Fwebappbuilder%2Fapps%2Fwidgets%2FAddCSVfile%2Freflect.ashx" rel="nofollow" target="_blank"&gt;http://machinename.domain:3344/webappbuilder/apps/widgets/AddCSVfile/reflect.ashx&lt;/A&gt;&lt;SPAN&gt; 404 (Not Found). Although when i am able to access &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fmachinename.domain%3A3344%2Fwebappbuilder%2Fapps%2Fwidgets%2FAddCSVfile%2Freflect.ashx" rel="nofollow" target="_blank"&gt;http://machinename.domain:3344/webappbuilder/apps/widgets/AddCSVfile/reflect.ashx&lt;/A&gt;&lt;SPAN&gt; from the browser.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help is appreciated!&lt;/P&gt;&lt;P&gt;Jin&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;define([&lt;/P&gt;&lt;P&gt;&amp;nbsp; 'dojo/_base/declare',&lt;/P&gt;&lt;P&gt;&amp;nbsp; 'jimu/BaseWidget',&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/config",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/domUtils",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/graphic",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/InfoTemplate",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/map",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/request",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/urlUtils",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/dijit/InfoWindowLite",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/geometry/Multipoint",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/geometry/Point",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/geometry/webMercatorUtils",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/layers/ArcGISDynamicMapServiceLayer",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/layers/ArcGISImageServiceLayer",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/layers/FeatureLayer",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "esri/symbols/PictureMarkerSymbol",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojo/dom",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojo/dom-construct",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojo/json",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojo/on",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojo/parser",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojo/_base/array",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojo/_base/lang",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojox/data/CsvStore",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojox/encoding/base64",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dijit/Dialog",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dijit/layout/BorderContainer",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dijit/layout/ContentPane",&lt;/P&gt;&lt;P&gt;&amp;nbsp; "dojo/domReady!",&lt;/P&gt;&lt;P&gt;&amp;nbsp; 'esri/Color',&lt;/P&gt;&lt;P&gt;&amp;nbsp; 'dojo/sniff'&lt;/P&gt;&lt;P&gt;&amp;nbsp; ],&lt;/P&gt;&lt;P&gt;&amp;nbsp; function (&lt;/P&gt;&lt;P&gt;&amp;nbsp; declare,&lt;/P&gt;&lt;P&gt;&amp;nbsp; BaseWidget,&lt;/P&gt;&lt;P&gt;&amp;nbsp; esriConfig,&lt;/P&gt;&lt;P&gt;&amp;nbsp; domUtils,&lt;/P&gt;&lt;P&gt;&amp;nbsp; Graphic,&lt;/P&gt;&lt;P&gt;&amp;nbsp; InfoTemplate,&lt;/P&gt;&lt;P&gt;&amp;nbsp; Map,&lt;/P&gt;&lt;P&gt;&amp;nbsp; request,&lt;/P&gt;&lt;P&gt;&amp;nbsp; urlUtils,&lt;/P&gt;&lt;P&gt;&amp;nbsp; InfoWindowLite,&lt;/P&gt;&lt;P&gt;&amp;nbsp; Multipoint,&lt;/P&gt;&lt;P&gt;&amp;nbsp; Point,&lt;/P&gt;&lt;P&gt;&amp;nbsp; webMercatorUtils,&lt;/P&gt;&lt;P&gt;&amp;nbsp; ArcGISDynamicMapServiceLayer,&lt;/P&gt;&lt;P&gt;&amp;nbsp; ArcGISImageServiceLayer,&lt;/P&gt;&lt;P&gt;&amp;nbsp; FeatureLayer,&lt;/P&gt;&lt;P&gt;&amp;nbsp; PictureMarkerSymbol,&lt;/P&gt;&lt;P&gt;&amp;nbsp; dom,&lt;/P&gt;&lt;P&gt;&amp;nbsp; domConstruct,&lt;/P&gt;&lt;P&gt;&amp;nbsp; JSON, on, parser, arrayUtils, lang, CsvStore, base64,&lt;/P&gt;&lt;P&gt;&amp;nbsp; sniff) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; return declare([BaseWidget], {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; baseClass : 'jimu-widget-addcsvfile',&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; portalUrl : '&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fwww.arcgis.com" rel="nofollow" target="_blank"&gt;http://www.arcgis.com&lt;/A&gt;&lt;SPAN&gt;',&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; arrayFeatureLayer : null,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; startup : function () {&lt;/P&gt;&lt;P&gt;&amp;nbsp; this.inherited(arguments);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; esriConfig.defaults.io.corsEnabledServers.push("serverapi.arcgisonline.com");&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; esriConfig.defaults.io.proxyUrl = '&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fserverapi.arcgisonline.com%2Fproxy%2Fproxy.ashx%27%3B" rel="nofollow" target="_blank"&gt;http://serverapi.arcgisonline.com/proxy/proxy.ashx';&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; on(this.uploadForm, "change", lang.hitch(this, function (event) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; var fileName = event.target.value.toLowerCase();&lt;/P&gt;&lt;P&gt;&amp;nbsp; this.arrayFeatureLayer = [];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (sniff("ie")) { //filename is full path in IE so extract the file name&lt;/P&gt;&lt;P&gt;&amp;nbsp; var arr = fileName.split("\\");&lt;/P&gt;&lt;P&gt;&amp;nbsp; fileName = arr[arr.length - 1];&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (fileName.indexOf(".csv") !== -1) { //is file a zip - if not notify user&lt;/P&gt;&lt;P&gt;&amp;nbsp; this.uploadFile(this.files);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp; this.uploadstatus.innerHTML = '&amp;lt;p style="color:red"&amp;gt;Add a .csv file&amp;lt;/p&amp;gt;';&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }));&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; onOpen : function () {&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log('onOpen');&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; onClose : function () {&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log('onClose');&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; onRemoveCSVfile : function (evt) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (this.arrayFeatureLayer.length &amp;gt; 0) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; arrayUtils.forEach(this.arrayFeatureLayer, function (currFeatureLayer) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; this.map.removeLayer(currFeatureLayer);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }, this);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; uploadFile : function (files) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (files &amp;amp;&amp;amp; files.length === 1) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log("handle files");&lt;/P&gt;&lt;P&gt;&amp;nbsp; handleCSV(files[0]);&lt;/P&gt;&lt;P&gt;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp; this.uploadstatus.innerHTML = '&amp;lt;p style="color:blue"&amp;gt;Uploading…&amp;lt;/p&amp;gt;';&lt;/P&gt;&lt;P&gt;&amp;nbsp; request({&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e23d39;"&gt;&lt;STRONG&gt;&amp;nbsp; url : "widgets/AddCSVfile/reflect.ashx",&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; form : this.uploadForm,&lt;/P&gt;&lt;P&gt;&amp;nbsp; load : this.requestSucceeded,&lt;/P&gt;&lt;P&gt;&amp;nbsp; error : this.requestFailed&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; handleCSV : function (file) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log("Processing CSV: ", file, ", ", file.name, ", ", file.type, ", ", file.size);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (file.file) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; var decoded = bytesToString(base64.decode(file.data));&lt;/P&gt;&lt;P&gt;&amp;nbsp; processCSVData(decoded);&lt;/P&gt;&lt;P&gt;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp; var reader = new FileReader();&lt;/P&gt;&lt;P&gt;&amp;nbsp; reader.onload = function () {&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log("Finished reading CSV data");&lt;/P&gt;&lt;P&gt;&amp;nbsp; processCSVData(reader.result);&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&amp;nbsp; reader.readAsText(file);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; requestSucceeded : function (response) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; this.uploadstatus.innerHTML = '&amp;lt;p style="color:blue"&amp;gt;Upload success…&amp;lt;/p&amp;gt;';&lt;/P&gt;&lt;P&gt;&amp;nbsp; this.handleCSV(response);&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; requestFailed : function (error) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; //this.uploadstatus.innerHTML = '&amp;lt;p style="color:blue"&amp;gt;unable to upload&amp;lt;/p&amp;gt;';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log(JSON.stringify(error));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;P&gt;&amp;nbsp; });&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 Dec 2015 14:35:59 GMT</pubDate>
      <guid>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/add-csv-file-custom-widget/m-p/863175#M12027</guid>
      <dc:creator>JinZhang</dc:creator>
      <dc:date>2015-12-11T14:35:59Z</dc:date>
    </item>
    <item>
      <title>Re: add csv file custom widget</title>
      <link>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/add-csv-file-custom-widget/m-p/863176#M12028</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;Could you try this one?&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;request({&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;&lt;SPAN style="color: #e23d39; font-weight: bold; font-family: inherit; font-style: inherit;"&gt;&amp;nbsp; url : this.folderUrl + "reflect.ashx",&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;&amp;nbsp; form : this.uploadForm,&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;&amp;nbsp; load : this.requestSucceeded,&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;&amp;nbsp; error : this.requestFailed&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;&amp;nbsp; })&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 Dec 2015 01:42:25 GMT</pubDate>
      <guid>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/add-csv-file-custom-widget/m-p/863176#M12028</guid>
      <dc:creator>JunshanLiu</dc:creator>
      <dc:date>2015-12-15T01:42:25Z</dc:date>
    </item>
    <item>
      <title>Re: add csv file custom widget</title>
      <link>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/add-csv-file-custom-widget/m-p/863177#M12029</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you Junshan, I appreciate your help!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 Dec 2015 12:31:05 GMT</pubDate>
      <guid>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/add-csv-file-custom-widget/m-p/863177#M12029</guid>
      <dc:creator>JinZhang</dc:creator>
      <dc:date>2015-12-15T12:31:05Z</dc:date>
    </item>
  </channel>
</rss>

