hw2 tests pass on chrome
This commit is contained in:
parent
cf0672d338
commit
c658a1b4fa
6
ng1/app/app.js
Normal file
6
ng1/app/app.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var app = angular.module('app', ['ngRoute']);
|
||||||
|
|
||||||
|
})();
|
35
ng1/app/edit.ctrl.js
Normal file
35
ng1/app/edit.ctrl.js
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
angular.module("app").controller("EditCtrl", Ctrl);
|
||||||
|
Ctrl.$inject = ['$http', '$routeParams', '$location']
|
||||||
|
|
||||||
|
function Ctrl($http, $routeParams, $location) {
|
||||||
|
var vm = this;
|
||||||
|
|
||||||
|
vm.contact = {};
|
||||||
|
vm.submitForm = submitForm;
|
||||||
|
|
||||||
|
getContact($routeParams.id)
|
||||||
|
function getContact(id) {
|
||||||
|
if(!id) return
|
||||||
|
|
||||||
|
$http.get(`/api/contacts/${id}`).then(resp => {
|
||||||
|
vm.contact = resp.data;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
function submitForm() {
|
||||||
|
console.log(vm.contact);
|
||||||
|
if(vm.contact._id) {
|
||||||
|
$http.put(`/api/contacts/${vm.contact._id}`, vm.contact).then(resp => {
|
||||||
|
$location.path("/search");
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$http.post(`/api/contacts`, vm.contact).then(resp => {
|
||||||
|
$location.path("/search");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})();
|
20
ng1/app/edit.html
Normal file
20
ng1/app/edit.html
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<form>
|
||||||
|
<table class="form-table">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>Eesnimi:</td>
|
||||||
|
<td><input id="name-input" ng-model="vm.contact.name"/></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Telefon:</td>
|
||||||
|
<td><input id="phone-input" ng-model="vm.contact.phone"/></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" align="right"><br/>
|
||||||
|
<a href ng-click="vm.submitForm()" id="save-link">Salvesta</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</form>
|
12
ng1/app/modal.html
Normal file
12
ng1/app/modal.html
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<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
ng1/app/modal.srv.js
Normal file
53
ng1/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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
})();
|
24
ng1/app/routes.js
Normal file
24
ng1/app/routes.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
angular.module('app').config(RouteConfig);
|
||||||
|
RouteConfig.$inject = ["$routeProvider"]
|
||||||
|
|
||||||
|
function RouteConfig($routeProvider) {
|
||||||
|
|
||||||
|
$routeProvider.when('/search', {
|
||||||
|
templateUrl : 'app/search.html',
|
||||||
|
controller : 'SearchCtrl',
|
||||||
|
controllerAs : 'vm'
|
||||||
|
}).when("/new", {
|
||||||
|
templateUrl: "app/edit.html",
|
||||||
|
controller: "EditCtrl",
|
||||||
|
controllerAs: "vm"
|
||||||
|
}).when("/edit/:id", {
|
||||||
|
templateUrl: "app/edit.html",
|
||||||
|
controller: "EditCtrl",
|
||||||
|
controllerAs: "vm"
|
||||||
|
}).otherwise("/search")
|
||||||
|
}
|
||||||
|
|
||||||
|
})();
|
47
ng1/app/search.ctrl.js
Normal file
47
ng1/app/search.ctrl.js
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
angular.module("app").controller("SearchCtrl", Ctrl);
|
||||||
|
Ctrl.$inject = ['$http', 'modalService']
|
||||||
|
|
||||||
|
function Ctrl($http, modalService) {
|
||||||
|
var vm = this;
|
||||||
|
vm.contacts = [];
|
||||||
|
vm.searchString = "";
|
||||||
|
vm.deleteContact = deleteContact;
|
||||||
|
vm.deleteSelected = deleteSelected;
|
||||||
|
vm.nameCodeFilter = nameCodeFilter;
|
||||||
|
|
||||||
|
|
||||||
|
getContacts();
|
||||||
|
function getContacts() {
|
||||||
|
$http.get("/api/contacts").then(resp => {
|
||||||
|
vm.contacts = resp.data;
|
||||||
|
}).catch(e => {
|
||||||
|
console.error("Failed to get contacts", e);
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
function deleteContact(id) {
|
||||||
|
modalService.confirm().then(resp => {
|
||||||
|
$http.delete(`/api/contacts/${id}`).then(resp => {
|
||||||
|
console.info(`Contact ${id}`)
|
||||||
|
getContacts();
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
function deleteSelected() {
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
function matchSearchString(string) {
|
||||||
|
return void 0 !== string && string.toLowerCase().indexOf(vm.searchString.toLowerCase()) >= 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function nameCodeFilter(contact) {
|
||||||
|
return 0 === vm.searchString.length || (matchSearchString(contact.name) || matchSearchString(contact.phone));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})();
|
34
ng1/app/search.html
Normal file
34
ng1/app/search.html
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<input id="search-string" ng-model="vm.searchString"/>
|
||||||
|
|
||||||
|
<br /><br />
|
||||||
|
|
||||||
|
<table class="list-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Nimi</th>
|
||||||
|
<th>Telefon</th>
|
||||||
|
<th></th>
|
||||||
|
<th></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr ng-class="{ selected : contact.selected }"
|
||||||
|
data-ng-repeat="contact in vm.contacts | filter : vm.nameCodeFilter">
|
||||||
|
<td>
|
||||||
|
<a href="#/edit/{{ contact._id }}" class="edit-link">{{ contact.name }}</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ contact.phone }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href ng-click="vm.deleteContact(contact._id)" class="delete-link">Kustuta</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input ng-model="contact.selected" type="checkbox">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
|
@ -12,9 +12,22 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
Hello!
|
<ul id="menu">
|
||||||
|
<li><a href="#/search" id="menu-search">Otsi</a></li>
|
||||||
|
<li><a href="#/new" id="menu-new">Lisa</a></li>
|
||||||
|
</ul>
|
||||||
|
<br><br>
|
||||||
|
<div class="ng-cloak" 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.js"></script>
|
||||||
|
|
||||||
|
<script src="/app/app.js"></script>
|
||||||
|
<script src="/app/edit.ctrl.js"></script>
|
||||||
|
<script src="/app/search.ctrl.js"></script>
|
||||||
|
<script src="/app/routes.js"></script>
|
||||||
|
<script src="/app/modal.srv.js"></script>
|
||||||
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Loading…
Reference in New Issue
Block a user