Basic gallery.
authorŁukasz Rekucki <lrekucki@gmail.com>
Tue, 29 Sep 2009 14:56:21 +0000 (16:56 +0200)
committerŁukasz Rekucki <lrekucki@gmail.com>
Tue, 29 Sep 2009 14:56:21 +0000 (16:56 +0200)
lib/wlrepo/mercurial_backend/__init__.py
project/static/js/models.js
project/static/js/views/gallery.js [new file with mode: 0644]
project/templates/explorer/editor.html

index 9a22395..20a39e5 100644 (file)
@@ -72,6 +72,9 @@ class MercurialRevision(wlrepo.Revision):
         a = self._changectx.ancestor(other._changectx)       
         return (a.branch() == self._changectx.branch())
 
+    def has_children(self):
+        return bool( self._library._hgrepo.changelog.children(self.hgrev()) )   
+
     def merge_with(self, other, user, message):
         lock = self._library.lock(True)
         try:
index f8149d1..f6725a5 100644 (file)
@@ -176,7 +176,8 @@ Editor.HTMLModel = Editor.Model.extend({
 
 Editor.ImageGalleryModel = Editor.Model.extend({
   _className: 'Editor.ImageGalleryModel',
-  serverURL: null,  
+  serverURL: null,
+  data: [],
   state: 'empty',
 
   init: function(serverURL) {
@@ -203,7 +204,15 @@ Editor.ImageGalleryModel = Editor.Model.extend({
       alert('erroneous state:', this.get('state'));
     }
 
-    this.set('pages', data[0].pages)
+    $.log('galleries:', data);
+
+    if (data.length == 0)
+        this.set('data', []);
+    else {
+        $.log('dupa');
+        this.set('data', data[0].pages);
+    }
+    
     this.set('state', 'synced');
   },
 
diff --git a/project/static/js/views/gallery.js b/project/static/js/views/gallery.js
new file mode 100644 (file)
index 0000000..390aaad
--- /dev/null
@@ -0,0 +1,63 @@
+/*global View render_template panels */
+var ImageGalleryView = View.extend({
+  _className: 'ImageGalleryView',
+  element: null,
+  model: null,
+  template: 'image-gallery-view-template',
+  
+  init: function(element, model, parent, template) 
+  {
+    this.currentPage = 0;
+    
+    this._super(element, model, template);
+    this.parent = parent;
+       
+    this.model
+      .addObserver(this, 'data', this.modelDataChanged.bind(this))
+      .addObserver(this, 'state', this.modelStateChanged.bind(this));
+      
+    //$('.image-gallery-view', this.element).html(this.model.get('data'));
+    this.modelStateChanged('state', this.model.get('state'));
+    this.model.load();
+  },
+  
+  modelDataChanged: function(property, value) 
+  {
+    $.log('updating pages', property, value);
+    if( property == 'data')
+    {        
+        this.gotoPage(this.currentPage);        
+        this.element.html(render_template(this.template, this));        
+    }   
+  },
+
+  gotoPage: function(index) {
+     if (index < 0) 
+         index = 0;
+
+     var n = this.model.get('pages').length;
+     if (index >= n) index = n-1;
+
+     this.currentPage = index;
+  },
+  
+  modelStateChanged: function(property, value) {
+    if (value == 'synced' || value == 'dirty') {
+      this.parent.unfreeze();
+    } else if (value == 'unsynced') {
+      this.parent.freeze('Niezsynchronizowany...');
+    } else if (value == 'loading') {
+      this.parent.freeze('Ładowanie...');
+    } else if (value == 'saving') {
+      this.parent.freeze('Zapisywanie...');
+    }
+  },
+  
+  dispose: function() {
+    this.model.removeObserver(this);
+    this._super();
+  }
+});
+
+// Register view
+panels['gallery'] = ImageGalleryView;
\ No newline at end of file
index 3e14167..c38dfc4 100644 (file)
@@ -52,7 +52,7 @@
         <script type="text/html" charset="utf-8" id="image-gallery-view-template">
        <div class="image-gallery-view-template">
 
-        <div class="image-gallery-panel-header">
+        <div class="image-gallery-header">
         <p>
         <button type="button" class="image-gallery-prev-button">Previous</button>
         <input type="input" class="image-gallery-current-page" />
@@ -61,8 +61,8 @@
         </div>
 
         <div>
-            <% for (page in model.pages) { %>
-                <p>page.url</p>
+            <% for(var i=0; i < model.data.length; i++) { %>
+                <p class="image-gallery-page-container"><%= model.data[i] %></p>
             <% }; %>
        </div>