diff --git a/source/documents/_scripts.html.jade b/source/documents/_scripts.html.jade index edc5fba..c4542af 100644 --- a/source/documents/_scripts.html.jade +++ b/source/documents/_scripts.html.jade @@ -6,6 +6,7 @@ script(src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular-sanitize. script(src="//cdnjs.cloudflare.com/ajax/libs/marked/0.3.2/marked.js") script(src="scripts/app.js") script(src="scripts/services/fetch.js") +script(src="scripts/services/poems.js") script(src="scripts/services/reader/_factory.js") script(src="scripts/services/reader/markdown.js") script(src="scripts/services/reader/json.js") diff --git a/source/documents/scripts/controllers.js.coffee b/source/documents/scripts/controllers.js.coffee index 5ad4931..48268cd 100644 --- a/source/documents/scripts/controllers.js.coffee +++ b/source/documents/scripts/controllers.js.coffee @@ -9,29 +9,29 @@ angular.module("sideBySide.controllers", []) ] .controller "ComparisonController", [ - '$routeParams', '$q', '$scope', 'fetch', 'transformer' - ($routeParams, $q, $scope, fetch, transformer) -> + '$routeParams', '$rootScope', '$scope', 'poems', 'transformer' + ($routeParams, $rootScope, $scope, poems, transformer) -> $scope.columns = 1 $scope.verses = [[{ section: 'Loading...' text: 'Please be patient!' }]] - update = (config) -> - fetch(config).then((result) -> - $q.all(result.promises).then((results) -> - $scope.columns = results.length - transformed = transformer(results) - $scope.verses = transformed.verses - $scope.meta = transformed.meta - headingKey = result.heading or "Author" - $scope.headings = (version[headingKey] for version in transformed.meta) - ) - ) + $rootScope.$on "poemsLoaded", () -> + update() + + update = () -> + results = poems.get() + $scope.columns = results.length + transformed = transformer(results) + $scope.verses = transformed.verses + $scope.meta = transformed.meta + headingKey = poems.getHeading() or "Author" + $scope.headings = (version[headingKey] for version in transformed.meta) config = if $routeParams.base \ then $routeParams.base.replace(/\./g, '/') \ else '' - update(config + "/config.json") + poems.update(config + "/config.json") ] diff --git a/source/documents/scripts/services/poems.js.coffee b/source/documents/scripts/services/poems.js.coffee new file mode 100644 index 0000000..43fd3b7 --- /dev/null +++ b/source/documents/scripts/services/poems.js.coffee @@ -0,0 +1,21 @@ +angular.module("sideBySide").service "poems", ['$rootScope', '$q', 'fetch', ($rootScope, $q, fetch) -> + poems = [] + heading = undefined + + @update = (config) -> + fetch(config).then((result) -> + $q.all(result.promises).then((results) -> + poems = results + heading = result.heading + $rootScope.$emit "poemsLoaded" + ) + ) + + @get = () -> + poems + + @getHeading = () -> + heading + + @ +]