From ed58c82fd4e7653aa1bb1be4b58534e85c823f84 Mon Sep 17 00:00:00 2001 From: Kurtis Seebaldt and Nick Street Date: Tue, 13 Aug 2013 12:16:28 +0100 Subject: [PATCH] Refactored ProjectModel [#52044647] --- _includes/widget_template.html | 34 ++++++++++++++-------- _layouts/default.html | 4 +++ js/projectDocumentationWidget.js | 48 +++++++++++++------------------- js/test/spec/ProjectSpec.js | 2 +- 4 files changed, 48 insertions(+), 40 deletions(-) diff --git a/_includes/widget_template.html b/_includes/widget_template.html index 4b561e6436e..0268e1ae450 100644 --- a/_includes/widget_template.html +++ b/_includes/widget_template.html @@ -1,13 +1,25 @@ diff --git a/_layouts/default.html b/_layouts/default.html index b6f862271e0..89152990048 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -1,6 +1,7 @@ --- main_site_url: http://springframework.io forum_url: http://forum.springframework.io +api_base_url: http://localhost:8080 --- @@ -24,6 +25,9 @@ forum_url: http://forum.springframework.io + diff --git a/js/projectDocumentationWidget.js b/js/projectDocumentationWidget.js index 61b6d5b045b..21ea9a76bb1 100644 --- a/js/projectDocumentationWidget.js +++ b/js/projectDocumentationWidget.js @@ -2,10 +2,10 @@ window.Spring = window.Spring || {}; Spring.ProjectDocumentationWidget = function() { var projectId = $('[data-documentation-widget]').data('documentation-widget'); - var project = new Spring.Project({id: projectId}); + var projectUrl = apiBaseUrl + "/projects/" + projectId; + var promise = Spring.loadProject(projectUrl); - var promise = project.fetch(); - promise.success(function() { + promise.then(function(project) { new Spring.ProjectDocumentationWidgetView({ el: '[data-documentation-widget]', model: project, @@ -14,6 +14,15 @@ Spring.ProjectDocumentationWidget = function() { }); }; +Spring.loadProject = function(url) { + return $.ajax(url, { + dataType: 'jsonp', + processData: false + }).then(function(value) { + return new Spring.Project(value); + }); +} + Spring.Release = { statusIconClass: function() { if (this.preRelease) { @@ -26,31 +35,14 @@ Spring.Release = { } } -Spring.Project = Backbone.Model.extend({ - urlRoot: "http://localhost:8080/projects", - - sync: function(method, model, options) { - var params = _.extend({ - type: 'GET', - dataType: 'jsonp', - url: model.url()+"?callback=?", - processData: false - }, options); - - return $.ajax(params); - }, - - releases: function() { - return _.map(this.get('projectReleases'), function(r) { - - return _.extend(r, Spring.Release); - }); - }, +Spring.Project = function(data) { + _.extend(this, data); + this.releases = _.map(this.projectReleases, function(r) { + return _.extend(r, Spring.Release); + }); - data: function() { - return _.extend(this.attributes, {releases: this.releases()}) - } -}); + return this; +}; Spring.ProjectDocumentationWidgetView = Backbone.View.extend({ initialize: function() { @@ -60,7 +52,7 @@ Spring.ProjectDocumentationWidgetView = Backbone.View.extend({ render: function() { this.$el.html( - this.template(this.model.data()) + this.template(this.model) ); return this; } diff --git a/js/test/spec/ProjectSpec.js b/js/test/spec/ProjectSpec.js index c3df00200e9..cbf657ce570 100644 --- a/js/test/spec/ProjectSpec.js +++ b/js/test/spec/ProjectSpec.js @@ -17,7 +17,7 @@ describe("Project", function () { describe("releases", function() { var releases; beforeEach(function() { - releases = project.releases(); + releases = project.releases; }); it("has a release for each project release", function() {