From 01465cea212ef30b7e580a3ff7e30a82b13ae8f8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C5=81ukasz=20Rekucki?= Date: Tue, 29 Sep 2009 16:56:21 +0200 Subject: [PATCH] Basic gallery. --- lib/wlrepo/mercurial_backend/__init__.py | 3 ++ project/static/js/models.js | 13 ++++- project/static/js/views/gallery.js | 63 ++++++++++++++++++++++++ project/templates/explorer/editor.html | 6 +-- 4 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 project/static/js/views/gallery.js diff --git a/lib/wlrepo/mercurial_backend/__init__.py b/lib/wlrepo/mercurial_backend/__init__.py index 9a22395e..20a39e5d 100644 --- a/lib/wlrepo/mercurial_backend/__init__.py +++ b/lib/wlrepo/mercurial_backend/__init__.py @@ -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: diff --git a/project/static/js/models.js b/project/static/js/models.js index f8149d1c..f6725a5f 100644 --- a/project/static/js/models.js +++ b/project/static/js/models.js @@ -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 index 00000000..390aaadb --- /dev/null +++ b/project/static/js/views/gallery.js @@ -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 diff --git a/project/templates/explorer/editor.html b/project/templates/explorer/editor.html index 3e141679..c38dfc4f 100644 --- a/project/templates/explorer/editor.html +++ b/project/templates/explorer/editor.html @@ -52,7 +52,7 @@