done state
This commit is contained in:
parent
f29acaf34f
commit
a894f852a6
6
app/app.js
Normal file
6
app/app.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
angular.module('app', ['ngRoute']);
|
||||||
|
})();
|
||||||
|
|
27
app/details.ctrl.js
Normal file
27
app/details.ctrl.js
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
angular.module('app').controller('DetailsCtrl', Ctrl);
|
||||||
|
|
||||||
|
function Ctrl($http, $routeParams, $location) {
|
||||||
|
var vm = this;
|
||||||
|
|
||||||
|
vm.task = {};
|
||||||
|
vm.back = back;
|
||||||
|
|
||||||
|
init();
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
$http.get('api/tasks/' + $routeParams.id).then(function (result) {
|
||||||
|
vm.task = result.data;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function back() {
|
||||||
|
$location.path('/list');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
4
app/details.html
Normal file
4
app/details.html
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
Title: {{ vm.task.title }}<br>
|
||||||
|
Added: {{ vm.task.added | date : 'HH:mm' }}
|
||||||
|
<br><br>
|
||||||
|
<button ng-click="vm.back()">Back</button>
|
41
app/list.ctrl.js
Normal file
41
app/list.ctrl.js
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
angular.module('app').controller('ListCtrl', Ctrl);
|
||||||
|
|
||||||
|
function Ctrl($http, modalService) {
|
||||||
|
var vm = this;
|
||||||
|
vm.tasks = [];
|
||||||
|
vm.newTitle = '';
|
||||||
|
|
||||||
|
vm.addTask = addTask;
|
||||||
|
vm.removeTask = removeTask;
|
||||||
|
|
||||||
|
init();
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
$http.get('api/tasks').then(function (result) {
|
||||||
|
vm.tasks = result.data;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function addTask() {
|
||||||
|
var newTask = {
|
||||||
|
title: vm.newTitle,
|
||||||
|
added: new Date()
|
||||||
|
};
|
||||||
|
|
||||||
|
$http.post('api/tasks', newTask).then(init);
|
||||||
|
|
||||||
|
vm.newTitle = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeTask(id) {
|
||||||
|
modalService.confirm()
|
||||||
|
.then(function () {
|
||||||
|
return $http.delete('api/tasks/' + id);
|
||||||
|
}).then(init);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
9
app/list.html
Normal file
9
app/list.html
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<div data-ng-repeat="task in vm.tasks">
|
||||||
|
<span ng-class="{ done: task.done }" ><a href="#/details/{{ task._id }}" >{{ task.title }}</a></span>
|
||||||
|
<input type="checkbox" ng-model="task.done"/><a href ng-click="vm.removeTask(task._id)">X</a>
|
||||||
|
</div><br>
|
||||||
|
|
||||||
|
<input ng-model="vm.newTitle"/>
|
||||||
|
|
||||||
|
<button ng-click="vm.addTask(newTask)">Add task</button>
|
||||||
|
|
13
app/modal.html
Normal file
13
app/modal.html
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<div id="simple-modal">
|
||||||
|
<div class="simple-modal-content">
|
||||||
|
|
||||||
|
<b>Oled kindel?</b>
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<a href ng-click="ok()" id="simple-modal-ok">Jah</a> |
|
||||||
|
<a href ng-click="cancel()" id="simple-modal-cancel">Ei</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
53
app/modal.srv.js
Normal file
53
app/modal.srv.js
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
angular.module('app').service('modalService', Srv);
|
||||||
|
|
||||||
|
Srv.$inject = ['$q', '$document', '$http', '$compile', '$rootScope'];
|
||||||
|
|
||||||
|
function Srv($q, $document, $http, $compile, $rootScope) {
|
||||||
|
|
||||||
|
this.confirm = confirm;
|
||||||
|
|
||||||
|
var modal;
|
||||||
|
var scope;
|
||||||
|
|
||||||
|
function confirm() {
|
||||||
|
if (modal) {
|
||||||
|
return showModal();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $http.get('app/modal.html').then(function (result) {
|
||||||
|
createModalElement(result.data);
|
||||||
|
return showModal();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function showModal() {
|
||||||
|
var deferred = $q.defer();
|
||||||
|
|
||||||
|
scope.ok = function () {
|
||||||
|
modal.addClass('hide');
|
||||||
|
deferred.resolve();
|
||||||
|
};
|
||||||
|
|
||||||
|
scope.cancel = function () {
|
||||||
|
modal.addClass('hide');
|
||||||
|
deferred.reject();
|
||||||
|
};
|
||||||
|
|
||||||
|
modal.removeClass('hide');
|
||||||
|
|
||||||
|
return deferred.promise;
|
||||||
|
}
|
||||||
|
|
||||||
|
function createModalElement(html) {
|
||||||
|
var body = angular.element($document[0].body);
|
||||||
|
var containerElement = angular.element(html);
|
||||||
|
scope = $rootScope.$new();
|
||||||
|
modal = $compile(containerElement[0])(scope);
|
||||||
|
body.append(modal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
})();
|
20
app/routes.js
Normal file
20
app/routes.js
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
angular.module('app').config(RouteConfig);
|
||||||
|
|
||||||
|
function RouteConfig($routeProvider) {
|
||||||
|
|
||||||
|
$routeProvider.when('/list', {
|
||||||
|
templateUrl : 'app/list.html',
|
||||||
|
controller : 'ListCtrl',
|
||||||
|
controllerAs : 'vm'
|
||||||
|
}).when('/details/:id', {
|
||||||
|
templateUrl : 'app/details.html',
|
||||||
|
controller : 'DetailsCtrl',
|
||||||
|
controllerAs : 'vm'
|
||||||
|
}).otherwise('/list');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
})();
|
13
data/db.json
13
data/db.json
@ -1,3 +1,14 @@
|
|||||||
{
|
{
|
||||||
"tasks": []
|
"tasks": [
|
||||||
|
{
|
||||||
|
"title": "Call Jill",
|
||||||
|
"added": "2017-03-13T09:46:46.127Z",
|
||||||
|
"_id": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Write to John",
|
||||||
|
"added": "2017-03-13T10:09:38.867Z",
|
||||||
|
"_id": 4
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
@ -8,13 +8,20 @@
|
|||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
.ng-cloak { display: none }
|
.ng-cloak { display: none }
|
||||||
|
.done { text-decoration: line-through }
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
Hello!
|
<div ng-view></div>
|
||||||
|
|
||||||
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
|
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
|
||||||
|
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-route.min.js"></script>
|
||||||
|
<script src="app/app.js"></script>
|
||||||
|
<script src="app/routes.js"></script>
|
||||||
|
<script src="app/list.ctrl.js"></script>
|
||||||
|
<script src="app/details.ctrl.js"></script>
|
||||||
|
<script src="app/modal.srv.js"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Loading…
Reference in New Issue
Block a user