From 461339de9298a8377fb23287fce7819a08f9dc92 Mon Sep 17 00:00:00 2001 From: Hunter Williams Date: Mon, 14 Sep 2015 14:49:12 +0700 Subject: [PATCH 1/3] Made it so that the search context is kept --- .../ui/app/search/search.context.service.js | 24 +++++++++++++++++++ .../ui/app/search/search.controller.js | 23 ++++++++++++++---- 2 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 app/templates/ui/app/search/search.context.service.js diff --git a/app/templates/ui/app/search/search.context.service.js b/app/templates/ui/app/search/search.context.service.js new file mode 100644 index 00000000..e9de1baf --- /dev/null +++ b/app/templates/ui/app/search/search.context.service.js @@ -0,0 +1,24 @@ +(function () { + 'use strict'; + + angular.module('app.search') + .factory('searchContextService', SearchContextService); + + SearchContextService.$inject = ['$http', '$rootScope', 'loginService']; + function SearchContextService($http, $rootScope, loginService) { + var _currentSearchContext = null; + + function currentSearchContext() { + return _currentSearchContext; + } + + function updateSearchContext(newContext) { + _currentSearchContext = newContext; + } + + return { + currentSearchContext: currentSearchContext, + updateSearchContext: updateSearchContext + }; + } +}()); diff --git a/app/templates/ui/app/search/search.controller.js b/app/templates/ui/app/search/search.controller.js index 6f1dfca0..8018c48d 100644 --- a/app/templates/ui/app/search/search.controller.js +++ b/app/templates/ui/app/search/search.controller.js @@ -5,19 +5,34 @@ angular.module('app.search') .controller('SearchCtrl', SearchCtrl); - SearchCtrl.$inject = ['$scope', '$location', 'userService', 'MLSearchFactory']; + SearchCtrl.$inject = ['$scope', '$location', 'userService', 'searchContextService', + 'MLSearchFactory']; // inherit from MLSearchController var superCtrl = MLSearchController.prototype; SearchCtrl.prototype = Object.create(superCtrl); - function SearchCtrl($scope, $location, userService, searchFactory) { + function SearchCtrl($scope, $location, userService, searchContextService, searchFactory) { var ctrl = this; - var mlSearch = searchFactory.newContext(); + var initialRun = false; + + if (!searchContextService.currentSearchContext()) { + initialRun = true; + searchContextService.updateSearchContext(searchFactory.newContext()); + } + + var mlSearch = searchContextService.currentSearchContext(); superCtrl.constructor.call(ctrl, $scope, $location, mlSearch); - ctrl.init(); + if (initialRun) { + ctrl.init(); + } + else + { + ctrl.updateURLParams(); + ctrl.search(); + } ctrl.setSnippet = function(type) { mlSearch.setSnippet(type); From 3108d471a6a23ba9c6b8240f695929da94de7d5b Mon Sep 17 00:00:00 2001 From: Hunter Williams Date: Tue, 15 Sep 2015 10:02:37 +0700 Subject: [PATCH 2/3] Copied @grtjn changes. Using as starting point --- app/templates/ui/app/root/root.controller.js | 5 +- app/templates/ui/app/root/root.html | 10 +++- .../ui/app/search/search.context.service.js | 24 -------- .../ui/app/search/search.controller.js | 56 +++++++++++++------ 4 files changed, 48 insertions(+), 47 deletions(-) delete mode 100644 app/templates/ui/app/search/search.context.service.js diff --git a/app/templates/ui/app/root/root.controller.js b/app/templates/ui/app/root/root.controller.js index 15bacbfa..acc32a3e 100644 --- a/app/templates/ui/app/root/root.controller.js +++ b/app/templates/ui/app/root/root.controller.js @@ -4,11 +4,12 @@ angular.module('app.root') .controller('RootCtrl', RootCtrl); - RootCtrl.$inject = ['messageBoardService']; + RootCtrl.$inject = ['$state', 'messageBoardService']; - function RootCtrl(messageBoardService) { + function RootCtrl($state, messageBoardService) { var ctrl = this; angular.extend(ctrl, { + currentState: $state.current.name, messageBoardService: messageBoardService }); } diff --git a/app/templates/ui/app/root/root.html b/app/templates/ui/app/root/root.html index 4f395ce3..751c0094 100644 --- a/app/templates/ui/app/root/root.html +++ b/app/templates/ui/app/root/root.html @@ -6,13 +6,17 @@ +

Sample App

diff --git a/app/templates/ui/app/search/search.context.service.js b/app/templates/ui/app/search/search.context.service.js deleted file mode 100644 index e9de1baf..00000000 --- a/app/templates/ui/app/search/search.context.service.js +++ /dev/null @@ -1,24 +0,0 @@ -(function () { - 'use strict'; - - angular.module('app.search') - .factory('searchContextService', SearchContextService); - - SearchContextService.$inject = ['$http', '$rootScope', 'loginService']; - function SearchContextService($http, $rootScope, loginService) { - var _currentSearchContext = null; - - function currentSearchContext() { - return _currentSearchContext; - } - - function updateSearchContext(newContext) { - _currentSearchContext = newContext; - } - - return { - currentSearchContext: currentSearchContext, - updateSearchContext: updateSearchContext - }; - } -}()); diff --git a/app/templates/ui/app/search/search.controller.js b/app/templates/ui/app/search/search.controller.js index 8018c48d..3df912e1 100644 --- a/app/templates/ui/app/search/search.controller.js +++ b/app/templates/ui/app/search/search.controller.js @@ -3,36 +3,56 @@ 'use strict'; angular.module('app.search') + .factory('SearchModel', SearchModel) .controller('SearchCtrl', SearchCtrl); - SearchCtrl.$inject = ['$scope', '$location', 'userService', 'searchContextService', - 'MLSearchFactory']; + SearchModel.$inject = ['MLSearchFactory']; + SearchCtrl.$inject = ['$scope', '$location', 'userService', 'SearchModel']; // inherit from MLSearchController var superCtrl = MLSearchController.prototype; SearchCtrl.prototype = Object.create(superCtrl); - function SearchCtrl($scope, $location, userService, searchContextService, searchFactory) { + function SearchModel(searchFactory) { + var mlSearch = searchFactory.newContext(); + return { + mlSearch: mlSearch, + response: null + }; + } + + function SearchCtrl($scope, $location, userService, searchModel) { var ctrl = this; - var initialRun = false; + var mlSearch = searchModel.mlSearch; + + superCtrl.constructor.call(ctrl, $scope, $location, mlSearch); - if (!searchContextService.currentSearchContext()) { - initialRun = true; - searchContextService.updateSearchContext(searchFactory.newContext()); - } + //ctrl.init(); + (function init() { + // monitor URL params changes (forward/back, etc.) + ctrl.$scope.$on('$locationChangeSuccess', ctrl.locationChange.bind(ctrl)); - var mlSearch = searchContextService.currentSearchContext(); + // capture initial URL params in mlSearch and ctrl + if ( ctrl.parseExtraURLParams ) { + ctrl.parseExtraURLParams(); + } - superCtrl.constructor.call(ctrl, $scope, $location, mlSearch); + if (searchModel.response) { + ctrl.response = searchModel.response; + ctrl.updateURLParams(); + } else { + ctrl.mlSearch.fromParams().then( ctrl._search.bind(ctrl) ); + } + })(); - if (initialRun) { - ctrl.init(); - } - else - { - ctrl.updateURLParams(); - ctrl.search(); - } + ctrl.updateSearchResults = function updateSearchResults(data) { + searchModel.response = data; + this.searchPending = false; + this.response = data; + this.qtext = this.mlSearch.getText(); + this.page = this.mlSearch.getPage(); + return this; + }; ctrl.setSnippet = function(type) { mlSearch.setSnippet(type); From 3e3242624f4f133373009706233ac4e754944f0b Mon Sep 17 00:00:00 2001 From: Hunter Williams Date: Tue, 15 Sep 2015 11:24:36 +0700 Subject: [PATCH 3/3] Made it so that the correct functions are called so page/search box populate properly --- app/templates/ui/app/search/search.controller.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/app/templates/ui/app/search/search.controller.js b/app/templates/ui/app/search/search.controller.js index 3df912e1..2db528e0 100644 --- a/app/templates/ui/app/search/search.controller.js +++ b/app/templates/ui/app/search/search.controller.js @@ -27,8 +27,9 @@ superCtrl.constructor.call(ctrl, $scope, $location, mlSearch); - //ctrl.init(); (function init() { + //do not inherit method on purpose due to if statement + // monitor URL params changes (forward/back, etc.) ctrl.$scope.$on('$locationChangeSuccess', ctrl.locationChange.bind(ctrl)); @@ -38,7 +39,7 @@ } if (searchModel.response) { - ctrl.response = searchModel.response; + ctrl.updateSearchResults(searchModel.response); ctrl.updateURLParams(); } else { ctrl.mlSearch.fromParams().then( ctrl._search.bind(ctrl) ); @@ -46,11 +47,8 @@ })(); ctrl.updateSearchResults = function updateSearchResults(data) { + superCtrl.updateSearchResults.apply(ctrl, arguments); searchModel.response = data; - this.searchPending = false; - this.response = data; - this.qtext = this.mlSearch.getText(); - this.page = this.mlSearch.getPage(); return this; };