Upgrade to ExtJS 3.0.0 - Released 07/06/2009
[extjs.git] / docs / source / UploadQueue.html
diff --git a/docs/source/UploadQueue.html b/docs/source/UploadQueue.html
new file mode 100644 (file)
index 0000000..889c290
--- /dev/null
@@ -0,0 +1,177 @@
+<html>\r
+<head>\r
+  <title>The source code</title>\r
+    <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
+    <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
+</head>\r
+<body  onload="prettyPrint();">\r
+    <pre class="prettyprint lang-js">Imgorg.UploadQueue = Ext.extend(Ext.Panel,{
+    swfu: '',
+    autoRemove: false,
+    uploaded: false,
+    
+    initComponent: function() {
+        Ext.apply(this,{
+            layout: 'fit',
+            autoScroll: true,
+            items: [{
+                xtype: 'dataview',
+                id: 'img-uploaddv',
+                autoWidth: true,
+                tpl: new Ext.XTemplate(
+                    '<tpl for=".">',
+                        '<div class="upload-file" id="{id}">',
+                            '<div class="upload-name">{name}</div>',
+                            '<div id="{id}-pb" class="upload-pb"></div>',
+                            '<div class="x-clear"></div>',
+                            '<div class="upload-info">{size:fileSize}</div>',
+                        '</div>',
+                    '</tpl>'
+                ),
+                store: new Ext.data.JsonStore({
+                    root: '',
+                    id: 'id',
+                    fields: [
+                        {name: 'creationdate', type: 'date'},
+                        {name: 'modificationdate', type: 'date'},
+                        'filestatus','id','index','name','size','type','dbid'
+                    ]
+                }),
+                itemSelector: 'div.upload-file',
+                selectedClass: 'upload-file-selected',
+                singleSelect: true
+            }],
+            tbar:[{
+                text: 'Start Upload',
+                handler: this.startUpload,
+                scope: this,
+                iconCls: 'start-upload'
+            },{
+                text: 'Clear',
+                handler: this.cancelUpload,
+                scope: this,
+                iconCls: 'cancel'
+            },'-',{
+                text: 'Add to Album',
+                handler: this.addAllAlbum,
+                scope: this,
+                iconCls: 'album-add'
+            },{
+                text: 'Tag',
+                handler: this.tagAll,
+                scope: this,
+                iconCls: 'tag'
+            },
+            '->',{
+                xtype: 'checkbox',
+                checked: this.autoRemove,
+                listeners: {
+                    check: function(cb, checked) {
+                        this.autoRemove = checked;
+                    },
+                    scope: this
+                }
+            },'Auto-Remove Uploaded']
+        });
+        Imgorg.UploadQueue.superclass.initComponent.call(this);
+        
+        this.progressBars = {};
+        
+        Ext.ux.SwfuMgr.on('filequeued', this.addFile, this);
+        Ext.ux.SwfuMgr.on('uploadprogress', this.updateProgress, this);
+        Ext.ux.SwfuMgr.on('uploadsuccess', this.uploadSuccess, this);
+    },
+    
+    getDv: function() {
+        if (!this.imgUplDv) {
+            this.imgUplDv = this.getComponent('img-uploaddv');
+        }
+        return this.imgUplDv;
+    },
+    
+    startUpload: function() {
+        this.swfu.startUpload();
+    },
+    
+    cancelUpload: function() {
+        this.swfu.cancelUpload();
+        for (var pb in this.progressBars) {
+            this.progressBars[pb].destroy();
+        }
+        this.getDv().store.removeAll();
+        this.uploaded = false;
+    },
+    
+    addFile: function(swfu, file) {
+        this.getDv().store.loadData([file], true);
+    },
+    
+    addAllAlbum: function(btn) {
+        if (!this.uploaded) {
+            Ext.Msg.alert('Warning', 'You must upload files before you can add them to an Album');
+            return;
+        }
+        var dv = this.getDv();
+        var recs = dv.getRecords(dv.getNodes());
+        if (!this.albumWin) {
+            this.albumWin = new Imgorg.AlbumWin();
+        }
+        this.albumWin.selectedRecords = recs;
+        this.albumWin.show(btn.btnEl.dom);
+    },
+    
+    tagAll: function(btn) {
+        if (!this.uploaded) {
+            Ext.Msg.alert('Warning', 'You must upload files before you can Tag them');
+            return;
+        }
+        var dv = this.getDv();
+        var recs = dv.getRecords(dv.getNodes());
+        Imgorg.TagWin.selectedRecords = recs;
+        Imgorg.TagWin.show(btn.btnEl.dom);
+    },
+    
+    updateProgress: function(swfu, file, complete, total) {
+        if (this.progressBars[file.id]) {
+            this.progressBars[file.id].updateProgress(file.percentUploaded/100,Math.round(file.percentUploaded)+'% Completed... '+Ext.util.Format.fileSize(file.currentSpeed)+'s');
+        } else {
+            this.progressBars[file.id] = new Ext.ProgressBar({
+                text:'0% Completed...',
+                renderTo: file.id+'-pb'
+            });
+        }
+    },
+    
+    uploadSuccess: function(swfu, file, data) {
+        var store = this.getDv().store;
+        var rec = store.getById(file.id);
+        if (this.progressBars[file.id]) {
+            this.progressBars[file.id].updateProgress(1, '100% Completed...');
+        }
+        if (this.autoRemove) {
+            store.remove(rec);
+        }
+        var data = Ext.decode(Ext.util.Format.stripTags(data));
+        rec.data.dbid = data.result.res.id;
+        this.uploaded = true;
+    }
+});
+Ext.reg('img-uploadqueue', Imgorg.UploadQueue);
+
+Ext.ux.SwfuManager = Ext.extend(Ext.util.Observable, {
+    constructor: function(config) {
+        Ext.ux.SwfuManager.superclass.constructor.call(this, config);
+        this.addEvents(
+            'filequeued',
+            'uploadstart',
+            'uploadprogress',
+            'uploaderror',
+            'uploadsuccess'
+        );
+    }
+});
+
+Ext.ux.SwfuMgr = new Ext.ux.SwfuManager();
+</pre>    \r
+</body>\r
+</html>
\ No newline at end of file