define("dojox/form/uploader/FileList", [ "dojo/_base/fx", "dojo/dom-style", "dojo/dom-class", "dojo/_base/declare", "dojo/_base/lang", "dojo/_base/array", "dijit/_base/manager", "dojox/form/uploader/Base" ],function(fx, domStyle, domClass, declare, lang, array, manager, formUploaderBase){ /*===== formUploaderBase = dojox.form.uploader.Base; =====*/ return declare("dojox.form.uploader.FileList", [formUploaderBase], { // // Version: 1.6 // // summary: // A simple widget that provides a list of the files currently selected by // dojox.form.Uploader // // description: // There is a required CSS file: resources/UploaderFileList.css. // This is a very simple widget, and not beautifully styled. It is here mainly for test // cases, but could very easily be used, extended, modified, or copied. // // uploaderId: String // The id of the dojox.form.Uploader to connect to. uploaderId:"", // uploader: dojox.form.Uploader // The dojox.form.Uploader to connect to. Use either this property of unploaderId. This // property is populated if uploaderId is used. // uploader:null, // headerIndex: String // The label for the index column. // headerIndex:"#", // headerType: String // The label for the file type column. // headerType:"Type", // headerFilename: String // The label for the file name column. // headerFilename:"File Name", // headerFilesize: String // The label for the file size column. // headerFilesize:"Size", _upCheckCnt:0, rowAmt:0, templateString: '
' + '
0%
' + ''+ ''+ ''+ ''+ '
${headerIndex}${headerType}${headerFilename}${headerFilesize}
'+ '
' , postCreate: function(){ this.setUploader(); this.hideProgress(); }, reset: function(){ // summary: // Clears all rows of items. Happens automatically if Uploader is reset, but you // could call this directly. // for(var i=0;i4){ console.warn("uploader not found for ID ", this.uploaderId); return; } if(this.uploader){ this.connect(this.uploader, "onChange", "_onUploaderChange"); this.connect(this.uploader, "reset", "reset"); this.connect(this.uploader, "onBegin", function(){ this.showProgress(true); }); this.connect(this.uploader, "onProgress", "_progress"); this.connect(this.uploader, "onComplete", function(){ setTimeout(lang.hitch(this, function(){ this.hideProgress(true); }), 1250); }); if(!(this._fileSizeAvail = {'html5':1,'flash':1}[this.uploader.uploadType])){ //if uploadType is neither html5 nor flash, file size is not available //hide the size header this.sizeHeader.style.display="none"; } }else{ this._upCheckCnt++; setTimeout(lang.hitch(this, "setUploader"), 250); } }, hideProgress: function(/* Boolean */animate){ var o = animate ? { ani:true, endDisp:"none", beg:15, end:0 } : { endDisp:"none", ani:false }; this._hideShowProgress(o); }, showProgress: function(/* Boolean */animate){ var o = animate ? { ani:true, endDisp:"block", beg:0, end:15 } : { endDisp:"block", ani:false }; this._hideShowProgress(o); }, _progress: function(/* Object */ customEvent){ this.percentTextNode.innerHTML = customEvent.percent; domStyle.set(this.percentBarNode, "width", customEvent.percent); }, _hideShowProgress: function(o){ var node = this.progressNode; var onEnd = function(){ domStyle.set(node, "display", o.endDisp); } if(o.ani){ domStyle.set(node, "display", "block"); fx.animateProperty({ node: node, properties:{ height:{ start:o.beg, end:o.end, units:"px" } }, onEnd:onEnd }).play(); }else{ onEnd(); } }, _onUploaderChange: function(fileArray){ this.reset(); array.forEach(fileArray, function(f, i){ this._addRow(i+1, this.getFileType(f.name), f.name, f.size); }, this) }, _addRow: function(index, type, name, size){ var c, r = this.listNode.insertRow(-1); c = r.insertCell(-1); domClass.add(c, "dojoxUploaderIndex"); c.innerHTML = index; c = r.insertCell(-1); domClass.add(c, "dojoxUploaderIcon"); c.innerHTML = type; c = r.insertCell(-1); domClass.add(c, "dojoxUploaderFileName"); c.innerHTML = name; if(this._fileSizeAvail){ c = r.insertCell(-1); domClass.add(c, "dojoxUploaderSize"); c.innerHTML = this.convertBytes(size).value; } this.rowAmt++; } }); });