Skip to content

Commit

Permalink
Move more into services
Browse files Browse the repository at this point in the history
Move pagination into services
Add more $resource services
Stop using transforms for now as they break on errors
Move a couple more controllers to use $resources
  • Loading branch information
gmjosack committed Jan 17, 2015
1 parent 5ff5689 commit de79149
Show file tree
Hide file tree
Showing 4 changed files with 116 additions and 110 deletions.
126 changes: 54 additions & 72 deletions nsot/static/js/controllers.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@
}]);

app.controller("IndexController", [
"$http", "$location",
function($http, $location) {
"$location", "Site",
function($location, Site) {

$http.get("/api/sites").success(function(data){
Site.query(function(data){
var sites = data.data.sites;
if (!sites.length || sites.length > 1) {
$location.path("/sites");
Expand All @@ -49,8 +49,8 @@
User.get({id: 0}).$promise,
Site.query().$promise
]).then(function(results){
$scope.user = results[0];
$scope.sites = results[1];
$scope.user = results[0].data.user;
$scope.sites = results[1].data.sites;

$scope.loading = false;
});
Expand Down Expand Up @@ -82,8 +82,8 @@
User.get({id: 0}).$promise,
Site.get({id: siteId}).$promise,
]).then(function(results){
$scope.user = results[0];
$scope.site = results[1];
$scope.user = results[0].data.user;
$scope.site = results[1].data.site;

var permissions = $scope.user.permissions[siteId] || {};
permissions = permissions.permissions || [];
Expand Down Expand Up @@ -117,54 +117,52 @@
}]);

app.controller("UsersController", [
"$scope", "$http", "$route", "$location", "$q", "$routeParams",
function($scope, $http, $route, $location, $q, $routeParams) {
"$scope", "$route", "$location", "$q", "$routeParams",
function($scope, $route, $location, $q, $routeParams) {

$scope.loading = true;

}
]);

app.controller("UserController", [
"$scope", "$http", "$route", "$location", "$q", "$routeParams",
function($scope, $http, $route, $location, $q, $routeParams) {
"$scope", "$route", "$location", "$q", "$routeParams",
function($scope, $route, $location, $q, $routeParams) {

$scope.loading = true;

}]);

app.controller("NetworksController", [
"$scope", "$http", "$route", "$location", "$q", "$routeParams",
function($scope, $http, $route, $location, $q, $routeParams) {
"$scope", "$route", "$location", "$q", "$routeParams",
"User", "Network", "NetworkAttribute", "pagerParams", "Paginator",
function($scope, $route, $location, $q, $routeParams,
User, Network, NetworkAttribute, pagerParams, Paginator) {

$scope.loading = true;
$scope.user = {};
$scope.user = null;
$scope.networks = [];
$scope.network = {};
$scope.network = new Network();
$scope.attributes = {};
$scope.paginator = null;
$scope.error = null;
$scope.admin = false;
var siteId = $scope.siteId = $routeParams.siteId;

$scope.pager = null;
$scope.limier = null;

$scope.form_url = "/static/templates/includes/networks-form.html";
$scope.form_attrs = [];

var params = {limit: 10, include_ips: true};
var search = $location.search();
if (search.offset) params.offset = search.offset;
if (search.limit) params.limit = search.limit;
var params = _.extend(pagerParams(), {
siteId: siteId,
include_ips: true
});

$q.all([
$http.get("/api/users/0"),
$http.get("/api/sites/" + siteId + "/networks", {
params: params
})
User.get({id: 0}).$promise,
Network.query(params).$promise
]).then(function(results){
$scope.user = results[0].data.data.user;
var data = results[1].data.data;
$scope.user = results[0].data.user;
var data = results[1].data;
$scope.networks = data.networks;

var permissions = $scope.user.permissions[siteId] || {};
Expand All @@ -173,11 +171,7 @@
return _.contains(["admin", "networks"], value);
});

$scope.pager = new nsot.Pager(
data.offset, data.limit, data.total, $location
);
$scope.limiter = new nsot.Limiter(data.limit, $location);

$scope.paginator = new Paginator(data);
$scope.loading = false;
}, function(data){
if (data.status === 404) {
Expand All @@ -187,11 +181,8 @@
});

$("body").on("show.bs.modal", "#createNetworkModal", function(e){
$http.get("/api/sites/" + siteId + "/network_attributes")
.success(function(data){

NetworkAttribute.query({siteId: siteId}, function(data){
$scope.attributes = data.data.network_attributes;

});
});

Expand All @@ -202,11 +193,11 @@

$scope.addAttr = function() {
$scope.form_attrs.push({});
}
};

$scope.removeAttr = function(idx) {
$scope.form_attrs.splice(idx, 1);
}
};

$scope.createNetwork = function() {
var network = $scope.network;
Expand All @@ -217,12 +208,13 @@

_.defaults(network.attributes, optional_attrs);

$http.post("/api/sites/" + siteId +
"/networks", network).success(function(data){
network = data.data.network;
console.log(network);

network.$save({siteId: siteId}, function(data){
var network = data.data.network;
$location.path("/sites/" + siteId + "/networks/" + network.id);
}).error(function(data){
$scope.error = data.error;
}, function(data){
$scope.error = data.data.error;
});
};

Expand Down Expand Up @@ -404,33 +396,24 @@
}]);

app.controller("ChangesController", [
"$scope", "$http", "$route", "$location", "$q", "$routeParams",
function($scope, $http, $route, $location, $q, $routeParams) {
"$scope", "$location", "$q", "$routeParams", "Change",
"pagerParams", "Paginator",
function($scope, $location, $q, $routeParams, Change,
pagerParams, Paginator) {

$scope.loading = true;
$scope.changes = [];
$scope.siteId = $routeParams.siteId;
$scope.pager = null;
$scope.limier = null;
$scope.paginator = null;

var params = {limit: 10};
var search = $location.search();
if (search.offset) params.offset = search.offset;
if (search.limit) params.limit = search.limit;
var siteId = $scope.siteId = $routeParams.siteId;
var params = pagerParams();

$q.all([
$http.get(
"/api/sites/" + $scope.siteId +
"/changes",
{params: params}
)
Change.query(_.extend({siteId: siteId}, params)).$promise
]).then(function(results){
var data = results[0].data.data;
var data = results[0].data;
$scope.changes = data.changes;
$scope.pager = new nsot.Pager(
data.offset, data.limit, data.total, $location
);
$scope.limiter = new nsot.Limiter(data.limit, $location);
$scope.paginator = new Paginator(data);
$scope.loading = false;
}, function(data){
if (data.status === 404) {
Expand All @@ -442,20 +425,19 @@
}]);

app.controller("ChangeController", [
"$scope", "$http", "$route", "$location", "$q", "$routeParams",
function($scope, $http, $route, $location, $q, $routeParams) {
"$scope", "$location", "$q", "$routeParams", "Change",
function($scope, $location, $q, $routeParams, Change) {

$scope.loading = true;
$scope.change = {};
$scope.siteId = $routeParams.siteId;
$scope.change = new Change();

var siteId = $scope.siteId = $routeParams.siteId;
var changeId = $scope.changeId = $routeParams.changeId;

$q.all([
$http.get(
"/api/sites/" + $scope.siteId +
"/changes/" + $routeParams.changeId
)
Change.get({siteId: siteId, id: changeId}).$promise
]).then(function(results){
$scope.change = results[0].data.data.change;
$scope.change = results[0].data.change;
$scope.loading = false;
}, function(data){
if (data.status === 404) {
Expand Down
92 changes: 58 additions & 34 deletions nsot/static/js/services.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,44 +3,68 @@

var app = angular.module("nsotApp");

var actions = {
query: {
method: "GET", isArray: false
},
update: {
method: "PUT"
}
};

app.factory("Site", ["$resource", function($resource){
return $resource("/api/sites/:id", { id: "@id" }, {
query: {
method: "GET", isArray: true,
transformResponse: function(data){
data = angular.fromJson(data);
return data.data.sites;
}
},
get: {
method: "GET",
transformResponse: function(data){
data = angular.fromJson(data);
return data.data.site;
}
},
update: { method: "PUT" }
});
return $resource("/api/sites/:id", { id: "@id" }, actions);
}]);

app.factory("User", ["$resource", function($resource){
return $resource("/api/users/:id", { id: "@id" }, {
query: {
method: "GET", isArray: true,
transformResponse: function(data){
data = angular.fromJson(data);
return data.data.users;
}
},
get: {
method: "GET",
transformResponse: function(data){
data = angular.fromJson(data);
return data.data.user;
}
},
update: { method: "PUT" }
});
return $resource("/api/users/:id", { id: "@id" }, actions);
}]);

app.factory("Change", ["$resource", function($resource){
return $resource(
"/api/sites/:siteId/changes/:id",
{ siteId: "@siteId", id: "@id" },
actions
);
}]);

app.factory("NetworkAttribute", ["$resource", function($resource){
return $resource(
"/api/sites/:siteId/network_attributes/:id",
{ siteId: "@siteId", id: "@id" },
actions
);
}]);

app.factory("Network", ["$resource", function($resource){
return $resource(
"/api/sites/:siteId/networks/:id",
{ siteId: "@siteId", id: "@id" },
actions
);
}]);

app.factory("pagerParams", ["$location", function($location){

var defaults = {
limit: 10,
offset: 0,
}

return function() {
var params = _.clone(defaults);
return _.extend(params, $location.search());
}

}]);


app.factory("Paginator", ["$location", function($location){
return function(obj) {
this.pager = new nsot.Pager(obj.offset, obj.limit, obj.total, $location);
this.limiter = new nsot.Limiter(obj.limit, $location);
}
}]);


})();
4 changes: 2 additions & 2 deletions nsot/static/templates/changes.html
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<loading-panel ng-if="loading"></loading-panel>
<div ng-if="!loading">
<heading-bar heading="Changes">
<dropdown ctxt-obj="limiter"></dropdown>
<paginator pager="pager"></paginator>
<dropdown ctxt-obj="paginator.limiter"></dropdown>
<paginator pager="paginator.pager"></paginator>
</heading-bar>

<div class="row" class="row"><div class="col-sm-10 col-sm-offset-1">
Expand Down
4 changes: 2 additions & 2 deletions nsot/static/templates/networks.html
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<loading-panel ng-if="loading"></loading-panel>
<div ng-if="!loading">
<heading-bar heading="Network">
<dropdown ctxt-obj="limiter"></dropdown>
<paginator pager="pager"></paginator>
<dropdown ctxt-obj="paginator.limiter"></dropdown>
<paginator pager="paginator.pager"></paginator>

<button
class="btn btn-success"
Expand Down

0 comments on commit de79149

Please sign in to comment.