From 4094ef56e050c3d8739ed0646b8eb2d17a7e65f4 Mon Sep 17 00:00:00 2001
From: RaNaN <Mast3rRaNaN@hotmail.de>
Date: Wed, 17 Jul 2013 13:56:06 +0200
Subject: improved progressbar rendering

---
 pyload/web/app/scripts/views/progressView.js | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

(limited to 'pyload/web/app/scripts/views/progressView.js')

diff --git a/pyload/web/app/scripts/views/progressView.js b/pyload/web/app/scripts/views/progressView.js
index 3a4bb2825..7b9dbb74b 100644
--- a/pyload/web/app/scripts/views/progressView.js
+++ b/pyload/web/app/scripts/views/progressView.js
@@ -1,6 +1,6 @@
 define(['jquery', 'backbone', 'underscore', 'app', 'utils/apitypes', 'views/abstract/itemView',
-    'hbs!tpl/header/progress', 'helpers/pluginIcon'],
-    function($, Backbone, _, App, Api, ItemView, template, pluginIcon) {
+    'hbs!tpl/header/progress', 'hbs!tpl/header/progressStatus', 'helpers/pluginIcon'],
+    function($, Backbone, _, App, Api, ItemView, template, templateStatus, pluginIcon) {
         'use strict';
 
         // Renders single file item
@@ -12,20 +12,33 @@ define(['jquery', 'backbone', 'underscore', 'app', 'utils/apitypes', 'views/abst
             events: {
             },
 
+            // Last name
+            name: null,
+
             initialize: function() {
-                this.listenTo(this.model, 'change', this.render);
+                this.listenTo(this.model, 'change', this.update);
                 this.listenTo(this.model, 'remove', this.unrender);
             },
 
             onDestroy: function() {
             },
 
+            // Update html without re-rendering
+            update: function() {
+                if (this.name !== this.model.get('name')) {
+                    this.name = this.model.get('name');
+                    this.render();
+                }
+
+                this.$('.bar').width(this.model.getPercent() + '%');
+                this.$('.progress-status').html(templateStatus(this.model.toJSON()));
+            },
+
             render: function() {
                 // TODO: icon
                 // TODO: other states
                 // TODO: non download progress
-                // TODO: better progressbar rendering
-                this.$el.css('background-image', 'url('+ pluginIcon('todo') +')');
+                this.$el.css('background-image', 'url(' + pluginIcon('todo') + ')');
                 this.$el.html(this.template(this.model.toJSON()));
                 return this;
             }
-- 
cgit v1.2.3