Skip to content

Commit

Permalink
Created new Abstract Paged Controller and isolated Table Directive Sc…
Browse files Browse the repository at this point in the history
…ope. WIP
  • Loading branch information
rladdusaw committed Jun 20, 2018
1 parent be8fc9f commit 7217fab
Show file tree
Hide file tree
Showing 6 changed files with 140 additions and 112 deletions.
46 changes: 46 additions & 0 deletions app/controllers/abstractPagedController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
app.controller('AbstractPagedController', function ($controller, $scope, FeatureProposal, FeatureProposalRepo, IdeaRepo, ServiceRepo) {

angular.extend(this, $controller('AbstractController', {
$scope: $scope
}));

if ($scope.filters) {

$scope.filter = $scope.filters[0];

$scope.activeFilters = $scope.repo.getPageSettings().filters;

$scope.selectFilter = function (filter) {
$scope.filter = filter;
};

$scope.removeFilter = function (prop, v) {
$scope.activeFilters[prop].splice($scope.activeFilters[prop].indexOf(v), 1);
if ($scope.activeFilters[prop].length === 0) {
delete $scope.activeFilters[prop];
}
$scope.repo.getTableParams().reload();
};

$scope.applyFilter = function (filter) {
if ($scope.activeFilters[filter.property]) {
$scope.activeFilters[filter.property].push(filter.value);
} else {
$scope.activeFilters[filter.property] = [filter.value];
}
$scope.repo.getTableParams().reload();
delete $scope.filter.value;
};

$scope.lookupGloss = function (prop) {
for (var i in $scope.filters) {
var filter = angular.copy($scope.filters[i]);
if (filter.property === prop) {
return filter.gloss;
}
}
};

}

});
26 changes: 17 additions & 9 deletions app/controllers/serviceController.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
app.controller('ServiceController', function ($controller, $route, $scope, ProjectService, Service, ServiceRepo, NgTableParams) {

angular.extend(this, $controller('AbstractScheduleController', {
$scope: $scope
}));
$scope: $scope
}),
$controller('AbstractPagedController', {
$scope: $scope
}));

$scope.modalData = {
title: "Edit",
type: "service",
options: ['UP', 'DOWN', 'MAINTENANCE']
};

$scope.serviceRepo = ServiceRepo;
$scope.repo = ServiceRepo;

$scope.services = ServiceRepo.getAll();

Expand All @@ -21,30 +24,35 @@ app.controller('ServiceController', function ($controller, $route, $scope, Proje
$scope.filters = [
{
gloss: 'Service',
property: 'service.name'
property: 'name'
},
{
gloss: 'Status',
property: 'service.status'
property: 'status'
},
{
gloss: 'Auto Updating',
property: 'service.isAuto'
property: 'isAuto'
},
{
gloss: 'Public',
property: 'service.isPublic'
property: 'isPublic'
},
{
gloss: 'Short List',
property: 'service.onShortList'
property: 'onShortList'
},
{
gloss: 'URL',
property: 'service.serviceUrl'
property: 'serviceUrl'
}
];

$scope.defaultSorting = {
property: 'name',
direction: 'ASC'
};

ProjectService.getAll().then(function (projects) {
$scope.projects = projects;

Expand Down
173 changes: 73 additions & 100 deletions app/directives/weaverTableDirective.js
Original file line number Diff line number Diff line change
@@ -1,116 +1,89 @@
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) {

if($scope.filters) {

$scope.filter = $scope.filters[0];
return {
templateUrl: 'views/directives/tableControls.html',
restrict: 'E',
replace: false,
transclude: {
table: 'weaverTableElement',
controls: 'weaverTableControls',
modals: 'weaverTableModals'
},
scope: {
defaultSorting: "=",
repo: "="
},
link: function ($scope, element, attr) {
var activeSort;

if ($scope.defaultSorting === undefined) {
activeSort = $scope.repo.getPageSettings().sort = [
{
property: 'service.name',
direction: 'ASC'
}, {
property: 'lastModified',
direction: 'DESC'
}
];
} else {
activeSort = $scope.repo.getPageSettings().sort = [$scope.defaultSorting];

}

$scope.activeFilters = $scope.repo.getPageSettings().filters;

$scope.selectFilter = function(filter) {
$scope.filter = filter;
};

$scope.removeFilter = function (prop, v) {
$scope.activeFilters[prop].splice($scope.activeFilters[prop].indexOf(v), 1);
if($scope.activeFilters[prop].length === 0) {
delete $scope.activeFilters[prop];
$scope.unsorted = function (prop) {
for (var i in activeSort) {
var sort = activeSort[i];
if (sort.property === prop) {
return false;
}
}
$scope.repo.getTableParams().reload();
return true;
};

$scope.applyFilter = function(filter) {
if($scope.activeFilters[filter.property]) {
$scope.activeFilters[filter.property].push(filter.value);
} else {
$scope.activeFilters[filter.property] = [filter.value];

$scope.asc = function (prop) {
for (var i in activeSort) {
var sort = activeSort[i];
if (sort.property === prop && sort.direction === 'ASC') {
return true;
}
}
$scope.repo.getTableParams().reload();
delete $scope.filter.value;
return false;
};

$scope.lookupGloss = function(prop) {
for(var i in $scope.filters) {
var filter = angular.copy($scope.filters[i]);
if(filter.property === prop) {
return filter.gloss;
$scope.desc = function (prop) {
for (var i in activeSort) {
var sort = activeSort[i];
if (sort.property === prop && sort.direction === 'DESC') {
return true;
}
}
return false;
};

}

var activeSort = $scope.repo.getPageSettings().sort = [{
property: 'service.name',
direction: 'ASC'
}, {
property: 'lastModified',
direction: 'DESC'
}];

$scope.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 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.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);
$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);
}
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.repo.getTableParams().reload();
};

}
};
}
};
});
1 change: 1 addition & 0 deletions app/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,7 @@ <h2 class="hidden">Libraries Web Services Status</h2>

<!-- Controllers -->
<script src="controllers/abstractIdeaController.js"></script>
<script src="controllers/abstractPagedController.js"></script>
<script src="controllers/abstractScheduleController.js"></script>
<script src="controllers/adminController.js"></script>
<script src="controllers/appAbstractController.js"></script>
Expand Down
2 changes: 1 addition & 1 deletion app/repo/serviceRepo.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ app.repo("ServiceRepo", function ServiceRepo($q, $timeout, WsApi, Service, Table
pageNumber: sessionStorage.getItem('services-page') ? sessionStorage.getItem('services-page') : 1,
pageSize: sessionStorage.getItem('services-size') ? sessionStorage.getItem('services-size') : 10,
direction: 'DESC',
properties: ['service.name'],
properties: ['name'],
filters: {},
counts: [5, 10, 25, 50, 100],
page: serviceRepo.page,
Expand Down
4 changes: 2 additions & 2 deletions app/views/management/services.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<div class="management-table" ng-controller="ServiceController">

<weaver-table>
<weaver-table default-sorting="defaultSorting" repo="repo">

<weaver-table-controls>
<button class="btn btn-default view-action-button pull-right" ng-click="openModal('#addServiceModal')">Add Service</button>
Expand All @@ -10,7 +10,7 @@
<table ng-table="tableParams" template-pagination="views/customPaginationControls.html" show-filter="false" class="table table-bordered table-striped service-table">
<thead>
<tr>
<th><span>Service<span ng-click="toggleSort('service.name')" class="sort-control glyphicon" ng-class="{'unsorted': unsorted('service.name'), 'asc': asc('service.name'), 'desc': desc('service.name')}"></span></span></th>
<th><span>Service<span ng-click="toggleSort('name')" class="sort-control glyphicon" ng-class="{'unsorted': unsorted('name'), 'asc': asc('name'), 'desc': desc('name')}"></span></span></th>
<th><span>Status<span ng-click="toggleSort('status')" class="sort-control glyphicon" ng-class="{'unsorted': unsorted('status'), 'asc': asc('status'), 'desc': desc('status')}"></span></span></th>
<th><span>Auto Updating<span ng-click="toggleSort('isAuto')" class="sort-control glyphicon" ng-class="{'unsorted': unsorted('isAuto'), 'asc': asc('isAuto'), 'desc': desc('isAuto')}"></span></span></th>
<th><span>Public<span ng-click="toggleSort('isPublic')" class="sort-control glyphicon" ng-class="{'unsorted': unsorted('isPublic'), 'asc': asc('isPublic'), 'desc': desc('isPublic')}"></span></span></th>
Expand Down

0 comments on commit 7217fab

Please sign in to comment.