summaryrefslogtreecommitdiffstats
path: root/js/main.js
diff options
context:
space:
mode:
authorHendrik Leppelsack <hendrik@leppelsack.de>2015-10-27 18:52:09 +0100
committerHendrik Leppelsack <hendrik@leppelsack.de>2015-10-27 18:59:35 +0100
commit3bf54638eb9b7e6b8b37dba987463f7c28469698 (patch)
tree839c71fba7145f7627d0b6b5f7c64d8ff99c27b2 /js/main.js
parent62b3d5b626301c2c1733bf0dc1dc74267fd958ff (diff)
add build system (gulp)
Diffstat (limited to 'js/main.js')
-rw-r--r--js/main.js86
1 files changed, 86 insertions, 0 deletions
diff --git a/js/main.js b/js/main.js
new file mode 100644
index 00000000..0cb8f6fe
--- /dev/null
+++ b/js/main.js
@@ -0,0 +1,86 @@
+/**
+ * ownCloud - contactsrework
+ *
+ * This file is licensed under the Affero General Public License version 3 or
+ * later. See the COPYING file.
+ *
+ * @author Hendrik Leppelsack <hendrik@leppelsack.de>
+ * @copyright Hendrik Leppelsack 2015
+ */
+
+var app = angular.module('contactsApp', ['ui.router']);
+
+app.run(function($rootScope) {
+ $rootScope.addressBooks = [];
+});
+
+app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider){
+ $urlRouterProvider.otherwise('/');
+
+ $stateProvider
+ .state('home', {
+ url: '/',
+ template: '<div>Home</div>'
+ })
+ .state('contactlist',{
+ url: '/:addressBookId',
+ template: '<contactlist data-addressbook="addressBook"></contactlist>',
+ resolve: {
+ addressBook: function(AddressBookService, DavClient, $stateParams) {
+ return AddressBookService.then(function (addressBooks) {
+ var addressBook = addressBooks.filter(function (element) {
+ return element.displayName === $stateParams.addressBookId;
+ })[0];
+ return DavClient.syncAddressBook(addressBook, {accept: 'application/vCard+json'});
+ }).then(function (addressBook) {
+ return addressBook;
+ });
+ }
+ },
+ controller: function($scope, addressBook) {
+ $scope.addressBook = addressBook;
+ }
+ })
+}]);
+
+app.service('DavClient', function() {
+ var xhr = new dav.transport.Basic(
+ new dav.Credentials()
+ );
+ return new dav.Client(xhr);
+});
+
+app.service('DavService', ['DavClient', function(client) {
+ return client.createAccount({
+ server: OC.linkToRemoteBase('carddav'),
+ accountType: 'carddav'
+ });
+}]);
+
+app.service('AddressBookService', ['DavService', function(DavService){
+ return DavService.then(function(account) {
+ return account.addressBooks;
+ });
+}]);
+
+app.filter('JSON2vCard', function() {
+ return vCard.generate;
+});
+
+app.filter('vCard2JSON', function() {
+ return function(input, prop) {
+ var result = vCard.parse(input);
+ if(prop === undefined) {
+ return result;
+ }
+ if(result[prop] === undefined) {
+ return undefined;
+ }
+ result = result[prop][0];
+ if(result.value instanceof Array) {
+ return result.value.join(' ');
+ } else {
+ return result.value;
+ }
+ }
+});