contacts/js/components/contactDetails/contactDetails_controller.js

119 lines
3.1 KiB
JavaScript
Raw Normal View History

angular.module('contactsApp')
.controller('contactdetailsCtrl', function(ContactService, AddressBookService, vCardPropertiesService, $route, $routeParams, $scope) {
2015-11-05 15:33:30 +00:00
var ctrl = this;
ctrl.init = true;
ctrl.loading = false;
ctrl.show = false;
ctrl.clearContact = function() {
$route.updateParams({
gid: $routeParams.gid,
uid: undefined
});
ctrl.show = false;
ctrl.contact = undefined;
};
2016-02-15 12:42:26 +00:00
ctrl.uid = $routeParams.uid;
2016-02-24 19:54:35 +00:00
ctrl.t = {
2016-02-29 12:43:05 +00:00
noContacts : t('contacts', 'No contacts in here'),
placeholderName : t('contacts', 'Name'),
placeholderOrg : t('contacts', 'Organization'),
placeholderTitle : t('contacts', 'Title'),
selectField : t('contacts', 'Add field …'),
download : t('contacts', 'Download'),
delete : t('contacts', 'Delete'),
save : t('contacts', 'Save changes'),
addressBook : t('contacts', 'Address book'),
loading : t('contacts', 'Loading contacts …')
2016-02-24 19:54:35 +00:00
};
2016-02-15 12:42:26 +00:00
ctrl.fieldDefinitions = vCardPropertiesService.fieldDefinitions;
2016-03-02 09:35:35 +00:00
ctrl.focus = undefined;
ctrl.field = undefined;
ctrl.addressBooks = [];
AddressBookService.getAll().then(function(addressBooks) {
ctrl.addressBooks = addressBooks;
if (!angular.isUndefined(ctrl.contact)) {
ctrl.addressBook = _.find(ctrl.addressBooks, function(book) {
return book.displayName === ctrl.contact.addressBookId;
});
}
ctrl.init = false;
// Start watching for ctrl.uid when we have addressBooks, as they are needed for fetching
// full details.
$scope.$watch('ctrl.uid', function(newValue) {
ctrl.changeContact(newValue);
});
});
2016-02-15 12:42:26 +00:00
ctrl.changeContact = function(uid) {
2016-03-09 10:13:41 +00:00
if (typeof uid === 'undefined') {
ctrl.show = false;
$('#app-navigation-toggle').removeClass('showdetails');
2016-02-17 21:34:36 +00:00
return;
}
ctrl.loading = true;
ContactService.getById(ctrl.addressBooks, uid).then(function(contact) {
if (angular.isUndefined(contact)) {
ctrl.clearContact();
return;
}
2016-02-15 12:42:26 +00:00
ctrl.contact = contact;
ctrl.show = true;
ctrl.loading = false;
$('#app-navigation-toggle').addClass('showdetails');
ctrl.addressBook = _.find(ctrl.addressBooks, function(book) {
return book.displayName === ctrl.contact.addressBookId;
});
2016-02-15 12:42:26 +00:00
});
};
ctrl.deleteContact = function() {
ContactService.delete(ctrl.addressBook, ctrl.contact);
};
ctrl.addField = function(field) {
var defaultValue = vCardPropertiesService.getMeta(field).defaultValue || {value: ''};
ctrl.contact.addProperty(field, defaultValue);
2016-03-02 09:35:35 +00:00
ctrl.focus = field;
ctrl.field = '';
2016-03-02 09:35:35 +00:00
};
2016-03-03 16:57:04 +00:00
ctrl.deleteField = function (field, prop) {
ctrl.contact.removeProperty(field, prop);
2016-03-02 14:51:52 +00:00
ctrl.focus = undefined;
};
ctrl.changeAddressBook = function (addressBook, oldAddressBook) {
ContactService.moveContact(ctrl.contact, addressBook, oldAddressBook);
};
ctrl.updateContact = function() {
ContactService.queueUpdate(ctrl.contact);
};
ctrl.closeMenus = function() {
ctrl.openedMenu = false;
};
ctrl.openMenu = function(index) {
ctrl.closeMenus();
ctrl.openedMenu = index;
};
ctrl.toggleMenu = function(index) {
if (ctrl.openedMenu === index) {
ctrl.closeMenus();
} else {
ctrl.openMenu(index);
}
};
2016-03-16 19:37:40 +00:00
});