Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions tim_miller/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,6 @@
**/db
**/tim_miller/db
build/**
**/*bundle.js


98 changes: 91 additions & 7 deletions tim_miller/app/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,99 @@
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Wow such website!</title>
<title>Cops!</title>
<link rel="stylesheet" type="text/css" href="application.css">
<link href='https://fonts.googleapis.com/css?family=Rock+Salt|Roboto' rel='stylesheet' type='text/css'>
</head>
<body data-ng-app="officersAndFelons">
<main data-ng-controller="OfficerController">
<h1>Bad Boys Bad Boys</h1>
<h2>{{greeting}}</h2>

<input type="text" data-ng-model="greeting">
<button data-ng-click="alertGreeting()">Salute!</button>
<body data-ng-app="OfficerAndFelonApp">
<h1 class="heading">Bad Boys Bad Boys</h1>
<main data-ng-controller="BustedController">
<button class="btn btn-reverse" data-ng-click="busted()">BUSTED!</button>
<p>{{outcome}}</p>
<section class="outer-flex">


<main class="resource" data-ng-controller="OfficersController" data-ng-init="getAllOfficers()">
<div data-form-directive
data-button-text="Create New Officer"
data-form-name="newOfficerForm"
data-heading-text="New Officer:"
data-resource="officer"
data-save="create(officer)">
</div>

<ul class="list" id="officerList">
<li data-ng-repeat="officer in officers">

<div data-list-directive
data-name="officer.name"
data-attribute-title="In Jail"
data-attribute="officer.inJail">
</div>

<span>

<div data-form-directive
data-ng-if="officer.editing"
data-button-text="Update"
data-form-name="edit{{officer._id}}"
data-heading-text="Edit Officer:"
data-resource="officer"
data-save="update(officer)">
<button class="btn" data-ng-click="cancel(officer)">Cancel</button>
</div>

<button class="btn" data-ng-click="remove(officer)" data-ng-if="!officer.editing">Delete This Officer</button>

<button class="btn" data-ng-click="temp(officer)" data-ng-if="!officer.editing">Update</button>

</span>
</li>
</ul>
</main>

<main class="resource" data-ng-controller="FelonsController" data-ng-init="getAllFelons()">

<div data-form-directive
data-button-text="Create New Felon"
data-form-name="newFelonForm"
data-heading-text="New Felon:"
data-resource="felon"
data-save="create(felon)">
</div>

<ul class="list" id="felonList">
<li data-ng-repeat="felon in felons">

<div data-list-directive
data-name="felon.name"
data-attribute-title="In Jail"
data-attribute="felon.inJail">
</div>

<span>

<div data-form-directive
data-ng-if="felon.editing"
data-button-text="Update"
data-form-name="edit{{felon._id}}"
data-heading-text="Edit Felon:"
data-resource="felon"
data-save="update(felon)">
<button class="btn" data-ng-click="cancel(felon)">Cancel</button>
</div>

<button class="btn" data-ng-click="remove(felon)" data-ng-if="!felon.editing">Delete This Felon</button>

<button class="btn" data-ng-click="temp(felon)" data-ng-if="!felon.editing">Update</button>

</span>
</li>
</ul>

</main>
</section>
</main>
<script src="bundle.js"></script>
</body>
Expand Down
4 changes: 4 additions & 0 deletions tim_miller/app/js/busted/busted.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = function(app) {
require('./controllers/busted_controller.js')(app);

};
15 changes: 15 additions & 0 deletions tim_miller/app/js/busted/controllers/busted_controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
module.exports = function(app) {
app.controller('BustedController', ['$scope', '$http', function($scope, $http) {

$scope.busted = function() {
$http.get('/api/busted')
.then(function(res) {
$scope.outcome = res.data;
$scope.$broadcast('busted', res);

}, function(err) {
console.log(err.data);
});
};
}]);
};
5 changes: 5 additions & 0 deletions tim_miller/app/js/directives/directives.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module.exports = function(app) {
require('./form_directive/form_directive.js')(app);
require('./list_directive/list_directive.js')(app);
require('./view_directive/view_directive.js')(app);
};
17 changes: 17 additions & 0 deletions tim_miller/app/js/directives/form_directive/form_directive.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
module.exports = function(app) {
app.directive('formDirective', function() {
return {
restrict: 'AC',
replace: true,
templateUrl: 'templates/form_template.html',
transclude: true,
scope: {
buttonText: '@',
headingText: '@',
formName: '@',
resource: '=',
save: '&'
}
};
});
};
14 changes: 14 additions & 0 deletions tim_miller/app/js/directives/list_directive/list_directive.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
module.exports = function(app) {
app.directive('listDirective', function() {
return {
restrict: 'AC',
replace: true,
templateUrl: 'templates/list_template.html',
scope: {
name: '=',
attribute: '=',
attributeTitle: '@'
}
};
});
};
15 changes: 7 additions & 8 deletions tim_miller/app/js/entry.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
require('angular/angular');
require('angular-route');
var angular = window.angular;

var officerApp = angular.module('officersAndFelons', []);
officerApp.controller('OfficerController', ['$scope', function($scope) {
$scope.greeting = 'What cha gonna do when the come for you?';

$scope.alertGreeting = function() {
alert($scope.greeting);
};
}]);
var officerAndFelonApp = angular.module('OfficerAndFelonApp', ['ngRoute']);
require('./directives/directives.js')(officerAndFelonApp);
require('./services/services.js')(officerAndFelonApp);
require('./officers/officers.js')(officerAndFelonApp);
require('./felons/felons.js')(officerAndFelonApp);
require('./busted/busted.js')(officerAndFelonApp);
61 changes: 61 additions & 0 deletions tim_miller/app/js/felons/controllers/felon_controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
module.exports = function(app) {
app.controller('FelonsController', ['$scope', '$http', 'restFunctions', function($scope, $http, restFunctions) {
$scope.felons = [];
$scope.errors = [];
$scope.newFelon = null;
var felonResource = restFunctions('felons');

$scope.getAllFelons = function() {
felonResource.getAll(function(err, data) {
if (err) return err;

$scope.felons = data;
});
};

$scope.$on('busted', function(e, data) {
felonResource.getAll(function(err, data) {
if (err) return err;

$scope.felons = data;
});
});


$scope.create = function(felon) {

felonResource.create(felon, function(err, data) {
if (err) return err;
$scope.felons.push(data);
$scope.newFelon = null;
});
};

$scope.remove = function(felon) {
felonResource.remove($scope.felons, felon, function(err, data) {
if (err) {
$scope.erros.push('Could not delete Felon ' + felon.name);
$scope.getAllFelons();
}
});
};

$scope.update = function(felon) {
felonResource.update(felon, function(err, data) {
if (err) {
$scope.errors.push('could not get felon: ' + felon.name);
}
console.log('this felon has a new name');
});
};

$scope.temp = function(felon) {
felonResource.temp(felon);
};

$scope.cancel = function(felon) {
felonResource.cancel(felon);
};

}]);
};
4 changes: 4 additions & 0 deletions tim_miller/app/js/felons/felons.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = function(app) {
require('./controllers/felon_controller')(app);

};
60 changes: 60 additions & 0 deletions tim_miller/app/js/officers/controllers/officer_controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
module.exports = function(app) {
app.controller('OfficersController', ['$scope', '$http', 'restFunctions', function($scope, $http, restFunctions) {
$scope.officers = [];
$scope.errors = [];
$scope.newOfficer = null;
var officerResource = restFunctions('officers');

$scope.getAllOfficers = function() {
officerResource.getAll(function(err, data) {
if (err) return err;

$scope.officers = data;
});
};

$scope.$on('busted', function(e, data) {
officerResource.getAll(function(err, data) {
if (err) return err;

$scope.officers = data;
});
});

$scope.create = function(officer) {

officerResource.create(officer, function(err, data) {
if (err) return err;
$scope.officers.push(data);
$scope.newOfficer = null;
});
};

$scope.remove = function(officer) {
officerResource.remove($scope.officers, officer, function(err, data) {
if (err) {
$scope.errors.push('Could not delete Officer ' + officer.name);
$scope.getAllOfficers();
}
});
};

$scope.update = function(officer) {
officerResource.update(officer, function(err, data) {
if (err) {
$scope.errors.push('could not get officer: ' + officer.name);
}
console.log('this officer has a new name');
});
};

$scope.temp = function(officer) {
officerResource.temp(officer);
};

$scope.cancel = function(officer) {
officerResource.cancel(officer);
};

}]);
};
4 changes: 4 additions & 0 deletions tim_miller/app/js/officers/officers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = function(app) {
require('./controllers/officer_controller')(app);

};
56 changes: 56 additions & 0 deletions tim_miller/app/js/services/rest_resource/rest_functions.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
var handleSuccess = function(callback) {
return function(res) {
callback(null, res.data);
};
};

var handleFail = function(callback) {
return function(err) {
console.log(err);
callback(err.data);
};
};

module.exports = function(app) {

app.factory('restFunctions', ['$http', function($http) {

return function(resourceName) {
var resource = {};
resource.getAll = function(callback) {
$http.get('/api/' + resourceName)
.then(handleSuccess(callback), handleFail(callback));
};

resource.create = function(data, callback) {
$http.post('/api/' + resourceName, data)
.then(handleSuccess(callback), handleFail(callback));
};

resource.remove = function(collection, data, callback) {
collection.splice(collection.indexOf(data), 1);
$http.delete('/api/' + resourceName + '/' + data._id)
.then(handleSuccess(callback), handleFail(callback));
};

resource.update = function(data, callback) {
data.tempName = '';
data.editing = false;
$http.put('/api/' + resourceName + '/' + data._id, data)
.then(handleSuccess(callback), handleFail(callback));
};

resource.temp = function(data) {
data.editing = true;
data.tempName = data.name;
};

resource.cancel = function(data) {
data.editing = false;
data.name = data.tempName;
};

return resource;
};
}]);
};
3 changes: 3 additions & 0 deletions tim_miller/app/js/services/services.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = function(app) {
require('./rest_resource/rest_functions.js')(app);
};
3 changes: 3 additions & 0 deletions tim_miller/app/sass/application.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
@import "base";
@import "layout";
@import "module";
Loading