Skip to content

Commit

Permalink
Merge 0af7a70 into 6e7ece8
Browse files Browse the repository at this point in the history
  • Loading branch information
wwelling committed Aug 10, 2018
2 parents 6e7ece8 + 0af7a70 commit 0d01721
Show file tree
Hide file tree
Showing 4 changed files with 152 additions and 14 deletions.
17 changes: 11 additions & 6 deletions app/controllers/serviceDetailController.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ app.controller('ServiceDetailController', function ($controller, $routeParams, $
}));

if (!$scope.isAnonymous()) {
UserRepo.getUser().then(function(response) {
UserRepo.getUser().then(function (response) {
var apiRes = angular.fromJson(response.body);
if(apiRes.meta.status === 'SUCCESS') {
if (apiRes.meta.status === 'SUCCESS') {
$scope.user = apiRes.payload.User;
$scope.hasVoted = function(fp) {
$scope.hasVoted = function (fp) {
return fp.voters.indexOf($scope.user.id) >= 0;
};
}
Expand All @@ -26,22 +26,27 @@ app.controller('ServiceDetailController', function ($controller, $routeParams, $

ServiceRepo.ready().then(function () {
$scope.service = ServiceRepo.findById($routeParams.serviceId);

$scope.notesTableParams = $scope.service.getNotesTableParams();
$scope.ideasTableParams = $scope.service.getIdeasTableParams();
$scope.featureProposalsTableParams = $scope.service.getFeatureProposalsTableParams();

$scope.hasFeatureProposals = function () {
return $scope.featureProposalsTableParams.data.length > 0;
};
});

$scope.setActiveTab = function(tab) {
$scope.setActiveTab = function (tab) {
$scope.activeTab = tab;
};

$scope.vote = function (fp) {
FeatureProposalRepo.vote(fp);
};

$scope.getServiceWebsite = function(service) {
$scope.getServiceWebsite = function (service) {
var link = service.website;
if(link.indexOf('//') === -1) {
if (link.indexOf('//') === -1) {
link = '//' + link;
}
return link;
Expand Down
22 changes: 14 additions & 8 deletions app/views/detail/service.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@


<div class="container service-details">
<h1>
<span class="glyphicon service-indicator" ng-class="{'glyphicon-ok-sign serviceUp': service.status==='UP', 'glyphicon-remove-sign serviceDown': service.status==='DOWN', 'glyphicon-minus-sign serviceMaintenance': service.status==='MAINTENANCE'}"></span>
Expand All @@ -8,8 +6,16 @@ <h1>
<hr />
<div>
<p ng-bind-html="service.description | decode"></p>
<p ng-if="service.software"><strong>Software: </strong><span>&nbsp{{service.software}}</span></p>
<p ng-if="service.website"><strong>Website: </strong><a href="{{getServiceWebsite(service)}}"><span>&nbsp{{service.website}}</span></a></p>
<p ng-if="service.software">
<strong>Software: </strong>
<span>&nbsp{{service.software}}</span>
</p>
<p ng-if="service.website">
<strong>Website: </strong>
<a href="{{getServiceWebsite(service)}}">
<span>&nbsp{{service.website}}</span>
</a>
</p>
</div>
</div>

Expand Down Expand Up @@ -53,11 +59,11 @@ <h2>Ideas</h2>
</div>
-->

<div class="container feature-proposals-container">
<div ng-if="hasFeatureProposals()" class="container feature-proposals-container">
<h2 class="inline-h2">Feature Proposal</h2>
<button ng-if="isAnonymous()" class="btn btn-primary pull-right" ng-click="login()">Login To Vote</button>
<button ng-if="isAnonymous() && hasFeatureProposals()" class="btn btn-primary pull-right" ng-click="login()">Login To Vote</button>
<hr />
<table ng-table="featureProposalsTableParams" template-pagination="views/customPaginationControls.html" show-filter="false" class="table borderless service-feature-proposals-table">
<table ng-table="featureProposalsTableParams" template-pagination="views/customPaginationControls.html" show-filter="false" class="table borderless service-feature-proposals-table">
<thead></thead>
<tbody>
<tr ng-repeat="featureProposal in $data">
Expand All @@ -67,4 +73,4 @@ <h2 class="inline-h2">Feature Proposal</h2>
</tr>
</tbody>
</table>
</div>
</div>
94 changes: 94 additions & 0 deletions tests/mocks/repo/mockFeatureProposalRepo.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
var mockFeatureProposalRepos = [

];

angular.module('mock.featureProposalRepo', []).service('FeatureProposalRepo', function ($q) {
var featureProposalRepo = this;

featureProposalRepo.list = mockFeatureProposalRepos;

featureProposalRepo.create = function (note) {
var defer = $q.defer();
note.id = featureProposalRepo.list.length + 1;
featureProposalRepo.list.push(note);
defer.resolve(note);
return defer.promise;
};

featureProposalRepo.update = function (note) {
var defer = $q.defer();
for (var i in featureProposalRepo.list) {
if (featureProposalRepo.list[i].id === note.id) {
angular.extend(featureProposalRepo.list[i], note);
note = featureProposalRepo.list[i];
break;
}
}
defer.resolve(note);
return defer.promise;
};

var updateFeatureProposal = function (note) {
featureProposalRepo.update(note);
};

featureProposalRepo.getAll = function () {
var defer = $q.defer();
defer.resolve(featureProposalRepo.list);
return defer.promise;
};

featureProposalRepo.fetchById = function (noteId) {
var note = new Note();
for (var i in featureProposalRepo.list) {
if (featureProposalRepo.list[i].id === id) {
note = featureProposalRepo.list[i];
break;
}
}
return note;
};

featureProposalRepo.getPageSettings = function () {
var mockPageSettings = {
filters: {
active: [true]
},
sort: [{
property: 'service.name',
direction: 'ASC'
}, {
property: 'lastModified',
direction: 'DESC'
}]
};

return mockPageSettings;
};

featureProposalRepo.getTableParams = function () {
// @todo
return {};
};

featureProposalRepo.fetchPage = function (pageSettings) {
// @todo
return {};
};

var safePage = function (resolve) {
// @todo
};

featureProposalRepo.page = function () {
return $q(function (resolve) {
safePage(resolve);
});
};

var table = {
// @todo
};

return featureProposalRepo;
});
33 changes: 33 additions & 0 deletions tests/unit/controllers/serviceDetailControllerTest.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
describe('controller: ServiceDetailController', function () {

var scope, controller;

beforeEach(module('core'));

beforeEach(module('app'));

beforeEach(module('mock.featureProposalRepo'));

beforeEach(module('mock.serviceRepo'));

beforeEach(module('mock.userRepo'));

beforeEach(inject(function ($controller, $rootScope, _FeatureProposalRepo_, _ServiceRepo_, _UserRepo_) {
installPromiseMatchers();
scope = $rootScope.$new();
controller = $controller('ServiceDetailController', {
$scope: scope,
FeatureProposalRepo: _FeatureProposalRepo_,
ServiceRepo: _ServiceRepo_,
UserRepo: _UserRepo_
});

}));

describe('Is the controller defined', function () {
it('should be defined', function () {
expect(controller).toBeDefined();
});
});

});

0 comments on commit 0d01721

Please sign in to comment.