diff --git a/app/config/apiMapping.js b/app/config/apiMapping.js
index b35e4862..69121135 100644
--- a/app/config/apiMapping.js
+++ b/app/config/apiMapping.js
@@ -251,6 +251,11 @@ var apiMapping = {
submitRequest: {
'endpoint': '/private/queue',
'controller': 'services'
+ },
+ page: {
+ 'endpoint': '/private/queue',
+ 'controller': 'services',
+ 'method': 'page'
}
},
Notification: {
diff --git a/app/controllers/abstractIdeaController.js b/app/controllers/abstractIdeaController.js
index 132e730e..0c53c7ce 100644
--- a/app/controllers/abstractIdeaController.js
+++ b/app/controllers/abstractIdeaController.js
@@ -46,8 +46,10 @@ app.controller('AbstractIdeaController', function ($controller, $scope, FeatureP
$scope.clearOverallCheckbox = function () {
var overallCheckbox = angular.element('#overallCheckbox')[0];
- overallCheckbox.indeterminate = false;
- overallCheckbox.checked = false;
+ if(overallCheckbox) {
+ overallCheckbox.indeterminate = false;
+ overallCheckbox.checked = false;
+ }
};
$scope.createFeatureProposal = function () {
diff --git a/app/controllers/featureProposalController.js b/app/controllers/featureProposalController.js
index 4509b1bb..4554fdf0 100644
--- a/app/controllers/featureProposalController.js
+++ b/app/controllers/featureProposalController.js
@@ -1,51 +1,75 @@
-app.controller('FeatureProposalController', function ($controller, $scope, Idea, FeatureProposal, FeatureProposalRepo, ProjectService) {
+app.controller('FeatureProposalController', function($controller, $scope, Idea, FeatureProposal, ProjectService) {
angular.extend(this, $controller('AbstractIdeaController', {
$scope: $scope
}));
- $scope.repo = FeatureProposalRepo;
-
$scope.fpToDelete = {};
$scope.ideaToAdd = {};
- $scope.filters = [
- {
- gloss: 'Service',
- property: 'service.name'
- },
- {
- gloss: 'Title',
- property: 'title'
- },
- {
- gloss: 'Description',
- property: 'description'
- },
- {
- gloss: 'Submitted',
- property: 'submitted'
- },
- {
- gloss: 'Last Modified',
- property: 'lastModified'
- }
- ];
+ $scope.weaverTable = {
+ repo: $scope.fpRepo,
+ columns: [{
+ gloss: 'Service',
+ property: 'service.name',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Title',
+ property: 'title',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Description',
+ property: 'description',
+ filterable: true,
+ sortable: false
+ },
+ {
+ gloss: 'Last Modified',
+ property: 'lastModified',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Submitted',
+ property: 'submitted',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Actions',
+ filterable: false,
+ sortable: false
+ }
+ ],
+ activeSort: [{
+ property: 'service.name',
+ direction: 'ASC'
+ },
+ {
+ property: 'lastModified',
+ direction: 'DESC'
+ }
+ ]
+ };
$scope.removedIdeas = [];
- $scope.tableParams = FeatureProposalRepo.getTableParams();
+ $scope.tableParams = $scope.fpRepo.getTableParams();
- $scope.editFeatureProposal = function (fp) {
+ $scope.editFeatureProposal = function(fp) {
$scope.fpData = fp;
$scope.openModal('#editFpModal');
};
- $scope.removeIdea = function (idea) {
- if ($scope.fpData.ideas.some(function (i) {
- return i.id === idea.id;
- })) {
+ $scope.removeIdea = function(idea) {
+ if ($scope.fpData.ideas.some(function(i) {
+ return i.id === idea.id;
+ })) {
$scope.removedIdeas.push(new Idea(idea));
$scope.forms.updateFp.$setDirty();
$scope.fpData.dirty(true);
@@ -53,11 +77,11 @@ app.controller('FeatureProposalController', function ($controller, $scope, Idea,
}
};
- $scope.updateFeatureProposal = function (fp) {
- FeatureProposalRepo.update($scope.fpData).then(function (res) {
+ $scope.updateFeatureProposal = function(fp) {
+ $scope.fpRepo.update($scope.fpData).then(function(res) {
if (angular.fromJson(res.body).meta.status === 'SUCCESS') {
$scope.resetFeatureProposals();
- for(var i in $scope.removedIdeas) {
+ for (var i in $scope.removedIdeas) {
var idea = $scope.removedIdeas[i];
idea.elevated = false;
idea.save();
@@ -67,27 +91,27 @@ app.controller('FeatureProposalController', function ($controller, $scope, Idea,
});
};
- $scope.select = function (fp, modal) {
+ $scope.select = function(fp, modal) {
$scope.fpData = fp;
$scope.openModal(modal);
};
- $scope.submitFeatureProposal = function (fp) {
+ $scope.submitFeatureProposal = function(fp) {
$scope.submitting = true;
- ProjectService.submitFeatureProposal(fp).then(function () {
+ ProjectService.submitFeatureProposal(fp).then(function() {
$scope.submitting = false;
$scope.resetFeatureProposals();
});
};
- $scope.confirmDeleteFp = function (fp) {
+ $scope.confirmDeleteFp = function(fp) {
$scope.openModal('#deleteFpModal');
$scope.fpToDelete = fp;
};
- $scope.deleteFp = function () {
+ $scope.deleteFp = function() {
$scope.deleting = true;
- $scope.fpToDelete.delete().then(function () {
+ $scope.fpToDelete.delete().then(function() {
$scope.closeModal();
$scope.deleting = false;
$scope.fpToDelete = {};
diff --git a/app/controllers/ideaController.js b/app/controllers/ideaController.js
index ea139ed9..9456b3b3 100644
--- a/app/controllers/ideaController.js
+++ b/app/controllers/ideaController.js
@@ -1,36 +1,60 @@
-app.controller('IdeaController', function ($controller, $scope, $timeout, FeatureProposalRepo, Idea, IdeaRepo, ServiceRepo) {
+app.controller('IdeaController', function($controller, $scope, $timeout, FeatureProposalRepo, Idea, ServiceRepo) {
angular.extend(this, $controller('AbstractIdeaController', {
$scope: $scope
}));
- $scope.repo = IdeaRepo;
-
$scope.ideaToDelete = {};
- $scope.filters = [{
- gloss: 'Service',
- property: 'service.name'
- },
- {
- gloss: 'Title',
- property: 'title'
- },
- {
- gloss: 'Description',
- property: 'description'
- },
- {
- gloss: 'Last Modified',
- property: 'lastModified'
- }
- ];
+ $scope.weaverTable = {
+ repo: $scope.ideaRepo,
+ columns: [{
+ gloss: 'Service',
+ property: 'service.name',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Title',
+ property: 'title',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Description',
+ property: 'description',
+ filterable: true,
+ sortable: false
+ },
+ {
+ gloss: 'Last Modified',
+ property: 'lastModified',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Elevated',
+ property: 'elevated',
+ filterable: true,
+ sortable: true
+ }
+ ],
+ activeSort: [{
+ property: 'service.name',
+ direction: 'ASC'
+ },
+ {
+ property: 'lastModified',
+ direction: 'DESC'
+ }
+ ]
+ };
- ServiceRepo.ready().then(function () {
+ ServiceRepo.ready().then(function() {
- $scope.tableParams = IdeaRepo.getTableParams();
+ $scope.tableParams = $scope.ideaRepo.getTableParams();
- $scope.resetIdeas = function () {
+ $scope.resetIdeas = function() {
$scope.resetForms($scope.ideaData);
$scope.ideaData = new Idea({
title: '',
@@ -44,9 +68,9 @@ app.controller('IdeaController', function ($controller, $scope, $timeout, Featur
});
- $scope.createIdea = function () {
+ $scope.createIdea = function() {
$scope.creating = true;
- IdeaRepo.create($scope.ideaData).then(function (res) {
+ $scope.ideaRepo.create($scope.ideaData).then(function(res) {
if (angular.fromJson(res.body).meta.status === 'SUCCESS') {
$scope.creating = false;
$scope.resetIdeas();
@@ -54,14 +78,14 @@ app.controller('IdeaController', function ($controller, $scope, $timeout, Featur
});
};
- $scope.editIdea = function (idea) {
+ $scope.editIdea = function(idea) {
$scope.ideaData = idea;
$scope.openModal('#editIdeaModal');
};
- $scope.updateIdea = function () {
+ $scope.updateIdea = function() {
$scope.updating = true;
- IdeaRepo.update($scope.ideaData).then(function (res) {
+ $scope.ideaRepo.update($scope.ideaData).then(function(res) {
if (angular.fromJson(res.body).meta.status === 'SUCCESS') {
$scope.updating = false;
$scope.resetIdeas();
@@ -69,23 +93,23 @@ app.controller('IdeaController', function ($controller, $scope, $timeout, Featur
});
};
- $scope.confirmDelete = function (idea) {
+ $scope.confirmDelete = function(idea) {
$scope.openModal('#deleteIdeaModal');
$scope.ideaToDelete = idea;
};
- $scope.deleteIdea = function () {
+ $scope.deleteIdea = function() {
$scope.deleting = true;
- $scope.ideaToDelete.delete().then(function () {
+ $scope.ideaToDelete.delete().then(function() {
$scope.closeModal();
$scope.deleting = false;
$scope.ideaToDelete = {};
});
};
- $scope.elevateIdea = function (idea) {
+ $scope.elevateIdea = function(idea) {
$scope.elevating = true;
- FeatureProposalRepo.elevate(idea).then(function (res) {
+ FeatureProposalRepo.elevate(idea).then(function(res) {
var apiRes = angular.fromJson(res.body);
if (apiRes.meta.status === 'SUCCESS') {
$scope.elevating = false;
@@ -94,7 +118,7 @@ app.controller('IdeaController', function ($controller, $scope, $timeout, Featur
});
};
- $scope.setOverallCheckbox = function () {
+ $scope.setOverallCheckbox = function() {
var overallCheckbox = angular.element('#overallCheckbox')[0];
if ($scope.selectedIdeas.length === 0) {
overallCheckbox.indeterminate = false;
@@ -108,7 +132,7 @@ app.controller('IdeaController', function ($controller, $scope, $timeout, Featur
}
};
- $scope.toggleSelectIdea = function (idea) {
+ $scope.toggleSelectIdea = function(idea) {
if ($scope.isSelectedIdea(idea)) {
$scope.removeIdeaFromSelected(idea);
} else {
@@ -117,7 +141,7 @@ app.controller('IdeaController', function ($controller, $scope, $timeout, Featur
$scope.setOverallCheckbox();
};
- $scope.toggleAll = function () {
+ $scope.toggleAll = function() {
if ($scope.overallCheckboxValue || $scope.anyOnPageSelected()) {
for (var i in $scope.ideasTableParams.data) {
var ii = $scope.ideasTableParams.data[i];
@@ -136,7 +160,7 @@ app.controller('IdeaController', function ($controller, $scope, $timeout, Featur
$scope.setOverallCheckbox();
};
- $scope.anyOnPageSelected = function () {
+ $scope.anyOnPageSelected = function() {
var anySelected = false;
for (var i in $scope.ideasTableParams.data) {
var idea = $scope.ideasTableParams.data[i];
@@ -148,7 +172,7 @@ app.controller('IdeaController', function ($controller, $scope, $timeout, Featur
return anySelected;
};
- $scope.isSelectedIdea = function (idea) {
+ $scope.isSelectedIdea = function(idea) {
var selected = false;
for (var i in $scope.selectedIdeas) {
if (idea.id === $scope.selectedIdeas[i].id) {
@@ -159,7 +183,7 @@ app.controller('IdeaController', function ($controller, $scope, $timeout, Featur
return selected;
};
- $scope.removeIdeaFromSelected = function (idea) {
+ $scope.removeIdeaFromSelected = function(idea) {
for (var i in $scope.selectedIdeas) {
if (idea.id === $scope.selectedIdeas[i].id) {
$scope.selectedIdeas.splice(i, 1);
@@ -168,7 +192,7 @@ app.controller('IdeaController', function ($controller, $scope, $timeout, Featur
}
};
- $scope.confirmElevateMultiple = function (ideas) {
+ $scope.confirmElevateMultiple = function(ideas) {
$scope.fpData.ideas = ideas;
$scope.fpData.title = ideas[0].title;
$scope.fpData.description = ideas[0].description;
@@ -176,12 +200,12 @@ app.controller('IdeaController', function ($controller, $scope, $timeout, Featur
$scope.openModal('#elevateMultipleModal');
};
- $scope.confirmAddIdea = function (idea) {
+ $scope.confirmAddIdea = function(idea) {
$scope.ideaToAdd = idea;
$scope.openModal('#confirmAddIdeaModal');
};
- $scope.addIdea = function (fp) {
+ $scope.addIdea = function(fp) {
fp.ideas.push($scope.ideaToAdd);
fp.dirty(true);
$scope.updateFeatureProposal(fp);
@@ -190,7 +214,7 @@ app.controller('IdeaController', function ($controller, $scope, $timeout, Featur
$scope.ideaToAdd = {};
};
- $scope.setSelectedFp = function (fp) {
+ $scope.setSelectedFp = function(fp) {
$scope.selectedFp = fp;
};
diff --git a/app/controllers/noteController.js b/app/controllers/noteController.js
index ac73b2cc..3e5a6573 100644
--- a/app/controllers/noteController.js
+++ b/app/controllers/noteController.js
@@ -1,10 +1,10 @@
-app.controller('NoteController', function ($controller, $scope, Note, NoteRepo, ServiceRepo) {
+app.controller('NoteController', function($controller, $scope, Note, NoteRepo, ServiceRepo) {
angular.extend(this, $controller('AbstractScheduleController', {
$scope: $scope
}));
-
- $scope.repo = NoteRepo;
+
+ $scope.noteRepo = NoteRepo;
$scope.services = ServiceRepo.getAll();
@@ -43,42 +43,72 @@ app.controller('NoteController', function ($controller, $scope, Note, NoteRepo,
},
];
- $scope.filters = [
- {
- gloss: 'Service',
- property: 'service.name'
- },
- {
- gloss: 'Title',
- property: 'title'
- },
- {
- gloss: 'Body',
- property: 'body'
- },
- {
- gloss: 'Type',
- property: 'noteType'
- },
- {
- gloss: 'Last Modified',
- property: 'lastModified'
- },
- {
- gloss: 'Pinned',
- property: 'pinned'
- },
- {
- gloss: 'Active',
- property: 'active'
- }
- ];
+ $scope.weaverTable = {
+ repo: $scope.noteRepo,
+ columns: [{
+ gloss: 'Service',
+ property: 'service.name',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Title',
+ property: 'title',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Body',
+ property: 'body',
+ filterable: true,
+ sortable: false
+ },
+ {
+ gloss: 'Type',
+ property: 'noteType',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Last Modified',
+ property: 'lastModified',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Pinned',
+ property: 'pinned',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Active',
+ property: 'active',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Actions',
+ filterable: false,
+ sortable: false
+ }
+ ],
+ activeSort: [{
+ property: 'service.name',
+ direction: 'ASC'
+ },
+ {
+ property: 'lastModified',
+ direction: 'DESC'
+ }
+ ]
+ };
- ServiceRepo.ready().then(function () {
+ ServiceRepo.ready().then(function() {
$scope.tableParams = NoteRepo.getTableParams();
- $scope.resetNotes = function () {
+ $scope.resetNotes = function() {
if ($scope.noteData) {
$scope.noteData.refresh();
$scope.noteData.clearValidationResults();
@@ -101,44 +131,44 @@ app.controller('NoteController', function ($controller, $scope, Note, NoteRepo,
$scope.resetNotes();
- $scope.createNote = function () {
- NoteRepo.create($scope.noteData).then(function (res) {
+ $scope.createNote = function() {
+ $scope.noteRepo.create($scope.noteData).then(function(res) {
if (angular.fromJson(res.body).meta.status === 'SUCCESS') {
$scope.resetNotes();
}
});
};
- $scope.editNote = function (note) {
+ $scope.editNote = function(note) {
$scope.noteData = note;
$scope.openModal('#editNoteModal');
};
- $scope.updateNote = function () {
- NoteRepo.update($scope.noteData).then(function (res) {
+ $scope.updateNote = function() {
+ $scope.noteRepo.update($scope.noteData).then(function(res) {
if (angular.fromJson(res.body).meta.status === 'SUCCESS') {
$scope.resetNotes();
}
});
};
- $scope.editSchedule = function (note) {
+ $scope.editSchedule = function(note) {
$scope.data = note;
$scope.openModal('#editScheduleModal');
};
- $scope.resetSchedule = function () {
+ $scope.resetSchedule = function() {
$scope.resetNotes();
};
- $scope.confirmDelete = function (note) {
+ $scope.confirmDelete = function(note) {
$scope.openModal('#deleteNoteModal');
$scope.noteToDelete = note;
};
- $scope.deleteNote = function () {
+ $scope.deleteNote = function() {
$scope.deleting = true;
- $scope.noteToDelete.delete().then(function () {
+ $scope.noteToDelete.delete().then(function() {
$scope.closeModal();
$scope.deleting = false;
$scope.noteToDelete = {};
diff --git a/app/controllers/serviceController.js b/app/controllers/serviceController.js
index e430d4f2..f113c106 100644
--- a/app/controllers/serviceController.js
+++ b/app/controllers/serviceController.js
@@ -1,4 +1,4 @@
-app.controller('ServiceController', function ($controller, $route, $scope, ProjectService, Service, ServiceRepo, NgTableParams) {
+app.controller('ServiceController', function($controller, $route, $scope, ProjectService, Service, ServiceRepo, NgTableParams) {
angular.extend(this, $controller('AbstractScheduleController', {
$scope: $scope
@@ -9,22 +9,77 @@ app.controller('ServiceController', function ($controller, $route, $scope, Proje
type: "service",
options: ['UP', 'DOWN', 'MAINTENANCE']
};
-
+
$scope.serviceRepo = ServiceRepo;
- $scope.services = ServiceRepo.getAll();
+ $scope.services = $scope.serviceRepo.getAll();
$scope.forms = {};
$scope.serviceToDelete = {};
- ProjectService.getAll().then(function (projects) {
+ $scope.weaverTable = {
+ repo: $scope.serviceRepo,
+ columns: [{
+ gloss: 'Service',
+ property: 'name',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Status',
+ property: 'status',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Auto Updating',
+ property: 'isAuto',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Public',
+ property: 'isPublic',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Short List',
+ property: 'onShortList',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'URL',
+ property: 'serviceUrl',
+ filterable: true,
+ sortable: true
+ },
+ {
+ gloss: 'Project',
+ filterable: false,
+ sortable: false
+ },
+ {
+ gloss: 'Actions',
+ filterable: false,
+ sortable: false
+ }
+ ],
+ activeSort: [{
+ property: 'name',
+ direction: 'ASC'
+ }]
+ };
+
+ ProjectService.getAll().then(function(projects) {
$scope.projects = projects;
- $scope.getProject = function (service) {
+ $scope.getProject = function(service) {
if (service.projectId && !service.project) {
service.project = {};
- ProjectService.getById(service.projectId).then(function (project) {
+ ProjectService.getById(service.projectId).then(function(project) {
angular.extend(service, {
project: project
});
@@ -36,7 +91,7 @@ app.controller('ServiceController', function ($controller, $route, $scope, Proje
});
- $scope.resetServices = function () {
+ $scope.resetServices = function() {
if ($scope.serviceData) {
$scope.serviceData.refresh();
$scope.serviceData.clearValidationResults();
@@ -59,65 +114,54 @@ app.controller('ServiceController', function ($controller, $route, $scope, Proje
$scope.resetServices();
- $scope.createService = function () {
+ $scope.createService = function() {
if ($scope.serviceData.isAuto) {
$scope.serviceData.status = 'UP';
} else {
$scope.serviceData.isAuto = false;
}
- ServiceRepo.create($scope.serviceData).then(function (res) {
+ $scope.serviceRepo.create($scope.serviceData).then(function(res) {
if (angular.fromJson(res.body).meta.status === 'SUCCESS') {
$scope.resetServices();
}
});
};
- $scope.editService = function (service) {
+ $scope.editService = function(service) {
$scope.serviceData = service;
$scope.openModal('#editServiceModal');
};
- $scope.updateService = function () {
- ServiceRepo.update($scope.serviceData).then(function (res) {
+ $scope.updateService = function() {
+ $scope.serviceRepo.update($scope.serviceData).then(function(res) {
if (angular.fromJson(res.body).meta.status === 'SUCCESS') {
$scope.resetServices();
}
});
};
- $scope.editSchedule = function (service) {
+ $scope.editSchedule = function(service) {
$scope.data = service;
$scope.openModal('#editScheduleModal');
};
- $scope.resetSchedule = function () {
+ $scope.resetSchedule = function() {
$scope.resetServices();
};
- var buildTable = function () {
- var allServices = ServiceRepo.getAll();
- $scope.tableParams = new NgTableParams({
- count: allServices.length
- }, {
- counts: [],
- filterDelay: 0,
- dataset: allServices
- });
- };
-
- ServiceRepo.ready().then(function () {
- buildTable();
- $scope.tableParams.reload();
+ ServiceRepo.ready().then(function() {
+ $scope.tableParams = ServiceRepo.getTableParams();
+ $scope.resetServices();
});
- $scope.confirmDelete = function (service) {
+ $scope.confirmDelete = function(service) {
$scope.openModal('#deleteServiceModal');
$scope.serviceToDelete = service;
};
- $scope.deleteService = function () {
+ $scope.deleteService = function() {
$scope.deleting = true;
- $scope.serviceToDelete.delete().then(function () {
+ $scope.serviceToDelete.delete().then(function() {
$scope.closeModal();
$scope.deleting = false;
ServiceRepo.remove($scope.serviceToDelete);
diff --git a/app/directives/weaverTableDirective.js b/app/directives/weaverTableDirective.js
index de0a19bc..81184192 100644
--- a/app/directives/weaverTableDirective.js
+++ b/app/directives/weaverTableDirective.js
@@ -1,116 +1,114 @@
-app.directive('weaverTable', function ($controller) {
- return {
- templateUrl: 'views/directives/tableControls.html',
- restrict: 'E',
- replace: false,
- transclude: {
- table: 'weaverTableElement',
- controls: 'weaverTableControls',
- modals: 'weaverTableModals'
- },
- scope: false,
- link: function ($scope, element, attr) {
+app.directive('weaverTable', function() {
+ return {
+ templateUrl: 'views/directives/tableControls.html',
+ restrict: 'E',
+ replace: false,
+ transclude: {
+ table: 'weaverTableElement',
+ controls: 'weaverTableControls',
+ modals: 'weaverTableModals'
+ },
+ scope: {
+ weaverTable: "="
+ },
+ controller: ['$scope', function($scope) {
- if($scope.filters) {
+ $scope.weaverTable.repo.getPageSettings().sort = [];
+
+ $scope.filters = $scope.weaverTable.columns.filter(function(column) {
+ return column.filterable;
+ });
$scope.filter = $scope.filters[0];
- $scope.activeFilters = $scope.repo.getPageSettings().filters;
+ $scope.activeFilters = $scope.weaverTable.repo.getPageSettings().filters;
$scope.selectFilter = function(filter) {
$scope.filter = filter;
};
-
- $scope.removeFilter = function (prop, v) {
+
+ $scope.removeFilter = function(prop, v) {
$scope.activeFilters[prop].splice($scope.activeFilters[prop].indexOf(v), 1);
- if($scope.activeFilters[prop].length === 0) {
+ if ($scope.activeFilters[prop].length === 0) {
delete $scope.activeFilters[prop];
}
- $scope.repo.getTableParams().reload();
+ $scope.weaverTable.repo.getTableParams().reload();
};
-
+
$scope.applyFilter = function(filter) {
- if($scope.activeFilters[filter.property]) {
+ if ($scope.activeFilters[filter.property]) {
$scope.activeFilters[filter.property].push(filter.value);
} else {
$scope.activeFilters[filter.property] = [filter.value];
}
- $scope.repo.getTableParams().reload();
+ $scope.weaverTable.repo.getTableParams().reload();
delete $scope.filter.value;
};
$scope.lookupGloss = function(prop) {
- for(var i in $scope.filters) {
+ for (var i in $scope.filters) {
var filter = angular.copy($scope.filters[i]);
- if(filter.property === prop) {
+ if (filter.property === prop) {
return filter.gloss;
}
}
};
- }
-
- var activeSort = $scope.repo.getPageSettings().sort = [{
- property: 'service.name',
- direction: 'ASC'
- }, {
- property: 'lastModified',
- direction: 'DESC'
- }];
+ var activeSort = $scope.weaverTable.repo.getPageSettings().sort = $scope.weaverTable.activeSort;
- $scope.unsorted = function(prop) {
- for(var i in activeSort) {
- var sort = activeSort[i];
- if(sort.property === prop) {
- return false;
+ $scope.weaverTable.unsorted = function(prop) {
+ for (var i in activeSort) {
+ var sort = activeSort[i];
+ if (sort.property === prop) {
+ return false;
+ }
}
- }
- return true;
- };
-
- $scope.asc = function(prop) {
- for(var i in activeSort) {
- var sort = activeSort[i];
- if(sort.property === prop && sort.direction === 'ASC') {
- return true;
+ return true;
+ };
+
+ $scope.weaverTable.asc = function(prop) {
+ for (var i in activeSort) {
+ var sort = activeSort[i];
+ if (sort.property === prop && sort.direction === 'ASC') {
+ return true;
+ }
}
- }
- return false;
- };
-
- $scope.desc = function(prop) {
- for(var i in activeSort) {
- var sort = activeSort[i];
- if(sort.property === prop && sort.direction === 'DESC') {
- return true;
+ return false;
+ };
+
+ $scope.weaverTable.desc = function(prop) {
+ for (var i in activeSort) {
+ var sort = activeSort[i];
+ if (sort.property === prop && sort.direction === 'DESC') {
+ return true;
+ }
}
- }
- return false;
- };
-
- $scope.toggleSort = function(prop) {
- var asc = true;
- for(var i in activeSort) {
- var sort = activeSort[i];
- if(sort.property === prop) {
- if(sort.direction === 'ASC') {
- sort.direction = 'DESC';
- } else {
- activeSort.splice(i, 1);
+ return false;
+ };
+
+ $scope.weaverTable.toggleSort = function(prop) {
+ var asc = true;
+ for (var i in activeSort) {
+ var sort = activeSort[i];
+ if (sort.property === prop) {
+ if (sort.direction === 'ASC') {
+ sort.direction = 'DESC';
+ } else {
+ activeSort.splice(i, 1);
+ }
+ asc = false;
+ break;
}
- asc = false;
- break;
}
- }
- if(asc) {
- activeSort.push({
- property: prop,
- direction: 'ASC'
- });
- }
- $scope.repo.getTableParams().reload();
- };
+ if (asc) {
+ activeSort.push({
+ property: prop,
+ direction: 'ASC'
+ });
+ }
+ $scope.weaverTable.repo.getTableParams().reload();
+ };
- }
- };
+ }]
+ };
});
\ No newline at end of file
diff --git a/app/repo/serviceRepo.js b/app/repo/serviceRepo.js
index 927a5141..872efa75 100644
--- a/app/repo/serviceRepo.js
+++ b/app/repo/serviceRepo.js
@@ -1,7 +1,54 @@
-app.repo("ServiceRepo", function ServiceRepo($q, $timeout, WsApi) {
+app.repo("ServiceRepo", function ServiceRepo($q, $timeout, WsApi, Service, TableFactory) {
var serviceRepo = this;
+ serviceRepo.getPageSettings = function () {
+ return table.getPageSettings();
+ };
+
+ serviceRepo.getTableParams = function () {
+ return table.getTableParams();
+ };
+
+ serviceRepo.fetchPage = function (pageSettings) {
+ angular.extend(serviceRepo.mapping.page, {
+ 'data': pageSettings ? pageSettings : table.getPageSettings()
+ });
+ return WsApi.fetch(serviceRepo.mapping.page);
+ };
+
+ var safePage = function(resolve) {
+ serviceRepo.fetchPage().then(function (response) {
+ var page = angular.fromJson(response.body).payload.PageImpl;
+ serviceRepo.empty();
+ serviceRepo.addAll(page.content);
+ if (table.getPageSettings().pageNumber > 1 && table.getPageSettings().pageNumber > page.totalPages) {
+ table.setPage(page.totalPages);
+ safePage(resolve);
+ } else {
+ resolve(page);
+ }
+ });
+ };
+
+ serviceRepo.page = function () {
+ return $q(function (resolve) {
+ safePage(resolve);
+ });
+ };
+
+ var table = TableFactory.buildTable({
+ pageNumber: sessionStorage.getItem('services-page') ? sessionStorage.getItem('services-page') : 1,
+ pageSize: sessionStorage.getItem('services-size') ? sessionStorage.getItem('services-size') : 10,
+ direction: 'DESC',
+ properties: ['name'],
+ filters: {},
+ counts: [5, 10, 25, 50, 100],
+ page: serviceRepo.page,
+ data: serviceRepo.getContents(),
+ name: 'services'
+ });
+
var checkCreateNotes = function (service) {
if (service.notes === undefined) {
service.notes = [];
@@ -169,6 +216,7 @@ app.repo("ServiceRepo", function ServiceRepo($q, $timeout, WsApi) {
WsApi.listen(serviceRepo.mapping.createListen).then(null, null, function (response) {
$timeout(function () {
serviceRepo.reset();
+ table.getTableParams().reload();
}, 250);
});
diff --git a/app/views/checkbox.html b/app/views/checkbox.html
new file mode 100644
index 00000000..e05627b4
--- /dev/null
+++ b/app/views/checkbox.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/views/detail/service/ideas.html b/app/views/detail/service/ideas.html
index dc037bcc..e40699ae 100644
--- a/app/views/detail/service/ideas.html
+++ b/app/views/detail/service/ideas.html
@@ -5,7 +5,7 @@
-
+
{{idea.title}}
diff --git a/app/views/directives/tableControls.html b/app/views/directives/tableControls.html
index d1bc7d07..36f753f1 100644
--- a/app/views/directives/tableControls.html
+++ b/app/views/directives/tableControls.html
@@ -1,3 +1,18 @@
+
+
diff --git a/app/views/directives/thContents.html b/app/views/directives/thContents.html
new file mode 100644
index 00000000..50ada862
--- /dev/null
+++ b/app/views/directives/thContents.html
@@ -0,0 +1,7 @@
+
{{sortable[property]}}
+
+
+
\ No newline at end of file
diff --git a/app/views/management/featureProposals.html b/app/views/management/featureProposals.html
index 819e2950..25cbe92c 100644
--- a/app/views/management/featureProposals.html
+++ b/app/views/management/featureProposals.html
@@ -1,23 +1,13 @@
-
+
Add Feature Proposal
-
-
-
- Service
- Title
- Description
- Last Modified
- Submitted
- Actions
-
-
+
{{fp.service.name}}
diff --git a/app/views/management/ideas.html b/app/views/management/ideas.html
index 7afcec46..974a3a76 100644
--- a/app/views/management/ideas.html
+++ b/app/views/management/ideas.html
@@ -1,27 +1,17 @@
-
+
Add Idea
-
-
-
- Service
- Title
- Description
- Last Modified
- Elevated
-
-
-
+
{{idea.service.name}} (scheduled)
- {{idea.title}}
+ {{idea.title}}
{{idea.description}}
{{idea.lastModified | date : 'medium'}}
{{idea.elevated}}
diff --git a/app/views/management/notes.html b/app/views/management/notes.html
index 3960502d..cfc31634 100644
--- a/app/views/management/notes.html
+++ b/app/views/management/notes.html
@@ -1,25 +1,13 @@
-
+
Add Note
-
-
-
- Service
- Title
- Body
- Type
- Last Modified
- Pinned
- Active
- Actions
-
-
+
{{note.service.name}} (scheduled)
diff --git a/app/views/management/services.html b/app/views/management/services.html
index 6bb8855b..33da5de6 100644
--- a/app/views/management/services.html
+++ b/app/views/management/services.html
@@ -1,32 +1,38 @@
-
+
-
-
- {{service.name}} (scheduled)
- {{service.status}}
- {{service.serviceUrl}}
- {{service.isAuto}}
- {{service.isPublic}}
- {{service.onShortList}}
- {{getProject(service).name}}
-
-
-
-
-
-
-
+
+ Add Service
+
-
-
-
-
-
+
+
+
+
+ {{service.name}} (scheduled)
+ {{service.status}}
+ {{service.isAuto}}
+ {{service.isPublic}}
+ {{service.onShortList}}
+ {{service.serviceUrl}}
+ {{getProject(service).name}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/views/management/users.html b/app/views/management/users.html
index 3a2611e1..fcbf66a4 100644
--- a/app/views/management/users.html
+++ b/app/views/management/users.html
@@ -29,8 +29,8 @@ Users
{{thisUser.role}}
- {{role}}
-
+ {{role}}
+
@@ -39,5 +39,4 @@ Users
-
\ No newline at end of file
diff --git a/app/views/modals/addNoteModal.html b/app/views/modals/addNoteModal.html
index fba0fb13..5a1b6429 100644
--- a/app/views/modals/addNoteModal.html
+++ b/app/views/modals/addNoteModal.html
@@ -6,6 +6,7 @@ Add Note