we absolutely break out our modules.For example, in index.html, i call a "createAerialDownload" function function createAerialDownload(){
var aerialDownload = new org.mymanatee.dijit.AerialDownloadWidget({
map: map
}, 'aerialDownloadDiv');
this.aerialDownload = aerialDownload;
aerialDownload.startup();
on(aerialDownload, "onError", function(error) {
console.log(error);
});
}
and then in a seperate file i have my modulerequire([
"dijit/Dialog", "dojo/_base/declare", "dojo/parser", "dijit/_WidgetBase", "dijit/_TemplatedMixin", "dojo/_base/xhr", "dojo/_base/lang",
"dojo/_base/connect", "dojo/dom", "dijit/registry", "dojo/dom-construct", "dojo/query", "dojo/on","dojo/has", "dojo/dom-style","dojo/io-query","dojo/_base/array","utilities/latlong"
],
function(Dialog, declare, parser, _Widget, _Templated, xhr, lang,
connect, dom, registry, domConstruct, query,on, has,domStyle,ioQuery, array, latlong) {
declare("org.mymanatee.dijit.AerialDownloadWidget",[_Widget, _Templated],
{
constructor: function(/*Object*/ params) {
},
_module: "org.mymanatee.dijit",
templatePath: require.toUrl("org/mymanatee/dijit/templates/AerialDownloadWidget.html"),
postMixInProperties: function(){
this.inherited(arguments);
},
postCreate:function()
{
this.inherited(arguments);
parser.parse(this.domNode);
// Init the loader animation
},
startup: function(){
this.inherited(arguments);
try {
if(!this.configData){
xhr.get( {
url: "org/mymanatee/dijit/config/AerialDownloadWidget.json",
handleAs: "json",
sync:true,
load: lang.hitch(this, function(responseObject, ioArgs) {
this.configData = responseObject;
this.loadOptions();
}),
error:function(error) {
alert('error loading json');
}
});
}
}
catch (err) { console.error(err); }
connect.connect(dom.byId("exportAerial"), "click", this, "exportAerial");
},
loadOptions:function(){
var aerialYears = registry.byId('aerialDownloadYearSelector');
array.forEach(this.configData.years, function(y){
aerialYears.addOption({label:y.year,value:y.year});
});
},
exportAerial:function(){
var format = "jpg";
switch (registry.byId('aerialDownloadFormatSelector').value) {
case 'JPG':
format = "jpg";
break;
case 'PNG':
format = "png";
break;
case 'BMP':
format = "bmp";
break;
case 'GIF':
format = "gif";
break;
case 'MrSID':
format = "sid";
break;
default:
format = "jpg";
break;
}
var catalog = registry.byId('aerialDownloadYearSelector').value;
var filename = (registry.byId('aerialFilenameTextInput').value);
if(!filename){
filename = "ManateeCountyAerial"+catalog+"."+format;
}else{
filename.split('.')[0];
}
//lowerleft
var LL = latlong.convertWebMercAuxtoLL(map.extent.xmin, map.extent.ymin);
//upperright
var UR = latlong.convertWebMercAuxtoLL(map.extent.xmax, map.extent.ymax);
//to state plane
var LLSP = latlong.convertLLtoSP_TM(LL[0],LL[1]);
var URSP = latlong.convertLLtoSP_TM(UR[0],UR[1]);
var bbox = LLSP[0]+","+URSP[1]+","+URSP[0]+","+LLSP[1];
var url = window.location.protocol+"//www.mymanatee.org/lizardtech/iserv/catalogs/"+catalog+"/"
+"iserv-catalog-index/cmd/getimage/method/crop/bg/000000/oif/"+format+"/geo/true/rgn/"+bbox+"/lev/0/wid/"+map.width+"/hei/"+map.height+"/outputfilename/test."+format;
window.open(url);//
},
shutdown:function()
{
this.setMessage();
this.inherited(arguments);
}
});
});