From fcd5a5f3fe24f8b1ba1090da9fd99f1cab3124d4 Mon Sep 17 00:00:00 2001 From: junv Date: Tue, 20 May 2014 15:34:31 +0800 Subject: [PATCH] add swipe gesture for book detail page --- css/social.umeng.css | 84 +- env/dev/constant.coffee | 2 +- gulpfile.js | 1 + img/weibo24.png | Bin 0 -> 3927 bytes index.html | 17 - js/app.js | 2 +- .../book-details-controller.coffee | 23 +- js/app/directives/swipe-back.coffee | 14 + js/libr.js | 4 - js/umeng/social.umeng.js | 13 +- platforms/ios/www/dist/css/all.min.css | 5 - platforms/ios/www/dist/js/all.min.js | 1348 +---------------- platforms/ios/www/js/umeng/social.umeng.js | 13 +- platforms/ios/www/templates/book-detail.html | 4 +- templates/book-detail.html | 4 +- templates/modal/share.html | 16 + 16 files changed, 131 insertions(+), 1419 deletions(-) create mode 100644 img/weibo24.png create mode 100644 js/app/directives/swipe-back.coffee create mode 100644 templates/modal/share.html diff --git a/css/social.umeng.css b/css/social.umeng.css index 607ca38..0408992 100755 --- a/css/social.umeng.css +++ b/css/social.umeng.css @@ -259,52 +259,52 @@ ul.shareList li.shareList_item:focus { background-color: #E4EFFB; } -.sharePage .sharePageTitle .sharePageBack { - position: absolute; - left: 0px; - top: 0px; -} +/*.sharePage .sharePageTitle .sharePageBack {*/ + /*position: absolute;*/ + /*left: 0px;*/ + /*top: 0px;*/ +/*}*/ -.sharePage .sharePageTitle .sharePageSubmit { - position: absolute; - right: 0px; - top: 0px; -} +/*.sharePage .sharePageTitle .sharePageSubmit {*/ + /*position: absolute;*/ + /*right: 0px;*/ + /*top: 0px;*/ +/*}*/ -.sharePage .sharePageContent { - position: fixed; - display: block; - top: 50px; - bottom: 110px; - left: 10px; - right: 10px; - background: #FFF; - border: none; - position: fixed; - font-size: 1em; -} +/*.sharePage .sharePageContent {*/ + /*position: fixed;*/ + /*display: block;*/ + /*top: 50px;*/ + /*bottom: 110px;*/ + /*left: 10px;*/ + /*right: 10px;*/ + /*background: #FFF;*/ + /*border: none;*/ + /*position: fixed;*/ + /*font-size: 1em;*/ +/*}*/ -.sharePage .sharePageBottom { - position: fixed; - bottom: 0; - width: 100%; - left: 0; - height: 40px; - line-height: 40px; - background: #EFF2F8; - border-top: 1px solid #DDD; -} +/*.sharePage .sharePageBottom {*/ + /*position: fixed;*/ + /*bottom: 0;*/ + /*width: 100%;*/ + /*left: 0;*/ + /*height: 40px;*/ + /*line-height: 40px;*/ + /*background: #EFF2F8;*/ + /*border-top: 1px solid #DDD;*/ +/*}*/ -.sharePage .sharePageBottom .shareBottomBtn { - width: 30px; - height: 30px; - background: #FF0; - border-radius: 5px; - position: relative; - display: block; - float: left; - margin: 5px 10px; -} +/*.sharePage .sharePageBottom .shareBottomBtn {*/ + /*width: 30px;*/ + /*height: 30px;*/ + /*background: #FF0;*/ + /*border-radius: 5px;*/ + /*position: relative;*/ + /*display: block;*/ + /*float: left;*/ + /*margin: 5px 10px;*/ +/*}*/ .shareGeo { position: absolute; diff --git a/env/dev/constant.coffee b/env/dev/constant.coffee index c2b3655..5273d44 100644 --- a/env/dev/constant.coffee +++ b/env/dev/constant.coffee @@ -2,7 +2,7 @@ libr = angular.module 'libr.constant', [] Constant = {} #Constant.baseUrl = "http://libr.herokuapp.com/api/v1" -Constant.baseUrl = "http://192.168.1.108:3000/api/v1" +Constant.baseUrl = "http://192.168.0.103:3000/api/v1" libr.constant 'Constant', Constant diff --git a/gulpfile.js b/gulpfile.js index 7f5c9c2..6b30bb9 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -12,6 +12,7 @@ var paths = { 'js/app/utils/*.coffee', 'js/app/handler/*.coffee', 'js/app/services/*.coffee', + 'js/app/directives/*.coffee', 'js/app/controllers/*.coffee', 'js/*.coffee'], css: ['css/*.css'], diff --git a/img/weibo24.png b/img/weibo24.png new file mode 100644 index 0000000000000000000000000000000000000000..793e4e97ed9b24329350e8f9f7765baf834f5738 GIT binary patch literal 3927 zcmV-d52)~oP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z1cXUMK~#9!)Rs+bR83npUwzMt`Xx3* z7A!o;UEP=e|D5yA{oSiXgoha#4>|PyMUDUYW69cZtsca=GJ%)^LLIOZXar2)3UClO z0^}aJ0_7}{>8Qa|8=<1Qr5qz#8B@unBlW8KLk@ z;tPNefLHISG6A$8{3cl&&J_uqD-#ohDS88I70qcN62wlou zJY^0#k7rK#*UNC(URB0X;Ax;5_#HsMC-Z&dn^U7{7NKZ@C1BG+O4oOyP35H=mRIu@ zwrhd>LF^eiZP4q`76~wZzQlr>v1Grvp!S&o4TuYyT+S*bzsT2jH zpWLr!89Q>6+=UA$rwe7*(}kz_HY9L*L!-n)!&cb@29b$VXAfMG^2aI<<8DsD7zgrEsv=VNl|-WdGoy$?_NXl zfDsDsH-Zfk57bNYy&YoZav~zq+uJK!wrr95`g-wrJmUBJW%K6E(%;`N(_{FWnwlE2*(`?-ALhh~6ZG}<5ex=PIQEpId_EW%0fz%h__r&EHHqsafO5Mh z``g~$&a!38h{a;WVliAU7pG63F5y?#(efe{MV8o`Eh zeRcEY&aT}eB9cs}<=M4sW$wIrQdLzo`7bs`qcWIGiik*YC@G0|wn;otKfU)~7@=^P z5ehT0CSbP^)BHyA`4)F{6SLoXle_+EemHrOj?PYeJ|C-Bt>T5{%hA(m(y^1I_I^j< z@@2GgFKB8A_!RhjJejGJK1oxh+*sCYR%-MWt-{yrS>8-}B!VsA2cU?m)Sm1Hf@$H*jG_=KllNN&!?$KL3Poin_0VkFyG-ax?vV?LvucA~Z lA|1dV_q_%G_pge-2LKC^24ZNcP=){i002ovPDHLkV1nN>Z%+UK literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 83d791f..0f59160 100644 --- a/index.html +++ b/index.html @@ -34,26 +34,9 @@ - - - - - diff --git a/js/app.js b/js/app.js index 1854461..7d13396 100644 --- a/js/app.js +++ b/js/app.js @@ -17,6 +17,7 @@ angular.module('libr', [ 'libr.services.comment', 'libr.services.recommend', 'libr.services.utils', + 'libr.directives.swipeBack', 'libr.controllers.login', 'libr.controllers.home', 'libr.controllers.main', @@ -100,5 +101,4 @@ angular.module('libr', [ // if none of the above states are matched, use this as the fallback $urlRouterProvider.otherwise('/login'); - }); diff --git a/js/app/controllers/book-details-controller.coffee b/js/app/controllers/book-details-controller.coffee index 30f48db..9c03bff 100644 --- a/js/app/controllers/book-details-controller.coffee +++ b/js/app/controllers/book-details-controller.coffee @@ -1,12 +1,16 @@ libr = angular.module('libr.controllers', ['ionic']) class BookDetailController - @$inject: ['$scope', '$stateParams', 'Books', '$window', '$ionicModal', 'Comments', 'DoubanService'] - constructor: (@$scope, @$stateParams, @Books, @$window, @$ionicModal, @Comments, @DoubanService) -> + @$inject: ['$scope', '$stateParams', 'Books', '$window', '$ionicModal', 'Comments', 'DoubanService', + '$ionicActionSheet'] + constructor: (@$scope, @$stateParams, @Books, @$window, @$ionicModal, @Comments, @DoubanService, @$ionicActionSheet) -> @$scope.openDialog = @openCommentDialog @$scope.closeDialog = @closeCommentDialog @$scope.doComment = @doComment @$scope.back = @back + @$scope.goShare = @goShare + @$scope.closeShare = @closeShare + @$scope.swipeRight = @swipeRight @$ionicModal.fromTemplateUrl 'templates/modal/comment.html', (modal)=> @$scope.modal = modal @@ -14,6 +18,13 @@ class BookDetailController scope: @$scope, animation: 'slide-in-up' } + @$ionicModal.fromTemplateUrl 'templates/modal/share.html', (modal)=> + @$scope.shareModal = modal + , { + scope: @$scope, + animation: 'slide-in-up' + } + @Books.get {book_id: @$stateParams.isbn}, (result) => @$scope.book = result @@ -56,5 +67,11 @@ class BookDetailController back: ()=> @$window.history.back() - + goShare: ()=> + @$scope.shareModal.show() + closeShare: ()=> + @$scope.shareModal.hide() + swipeRight: ()=> + @$window.history.back() + console.log 'swipe right..' libr.controller 'BookDetailController', BookDetailController diff --git a/js/app/directives/swipe-back.coffee b/js/app/directives/swipe-back.coffee new file mode 100644 index 0000000..f52e2b2 --- /dev/null +++ b/js/app/directives/swipe-back.coffee @@ -0,0 +1,14 @@ +libr = angular.module 'libr.directives.swipeBack', [] + +class SwipeBack + @$inject: ['$ionicGesture', '$window'] + constructor: (@$ionicGesture, @$window)-> + return { + restrict: 'A', + link: (scope, element, attribute)=> + @$ionicGesture.on 'swiperight', (event)=> + @$window.history.back() + , element + } + +libr.directive 'swipeBack', ['$ionicGesture', '$window', SwipeBack] diff --git a/js/libr.js b/js/libr.js index d816e96..e69de29 100644 --- a/js/libr.js +++ b/js/libr.js @@ -1,4 +0,0 @@ -var haha = function () { - alert('ssss'); - console.log('.......text'); -} \ No newline at end of file diff --git a/js/umeng/social.umeng.js b/js/umeng/social.umeng.js index ea38fda..cbfc6eb 100755 --- a/js/umeng/social.umeng.js +++ b/js/umeng/social.umeng.js @@ -203,13 +203,14 @@ c.name = $.fn.umshare.defaults.data.platform[plat].name; } var sharePanel = function (plat, c) { - var panel = $('
\ -
\ - \ - 分享到' + c.name + '\ - \ -
\ + var panel = $('
\ + \ +

分享到' + c.name + '

\ + \ +
\ +
\ \ +
\
\ \ \ diff --git a/platforms/ios/www/dist/css/all.min.css b/platforms/ios/www/dist/css/all.min.css index 482e2fe..7497a27 100644 --- a/platforms/ios/www/dist/css/all.min.css +++ b/platforms/ios/www/dist/css/all.min.css @@ -52,11 +52,6 @@ ul.shareList li.shareList_item:focus{background-color:#E3EDFC} .icon-submit{background:url(../../img/social.umeng/send.png) no-repeat center center;background-size:60%} .icon-submit.disabled{background:url(../../img/social.umeng/send_disable.png) no-repeat center center;background-size:60%} .icon-back:focus,.icon-submit:focus{background-color:#E4EFFB} -.sharePage .sharePageTitle .sharePageBack{position:absolute;left:0;top:0} -.sharePage .sharePageTitle .sharePageSubmit{position:absolute;right:0;top:0} -.sharePage .sharePageContent{display:block;top:50px;bottom:110px;left:10px;right:10px;background:#FFF;border:none;position:fixed;font-size:1em} -.sharePage .sharePageBottom{position:fixed;bottom:0;width:100%;left:0;height:40px;line-height:40px;background:#EFF2F8;border-top:1px solid #DDD} -.sharePage .sharePageBottom .shareBottomBtn{width:30px;height:30px;background:#FF0;border-radius:5px;position:relative;display:block;float:left;margin:5px 10px} .shareGeo{position:absolute;top:-30px;left:10px;font-size:1em;height:20px;border:1px solid #CCC;border-radius:15px;line-height:20px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;width:150px;color:#666;text-align:center} .shareImg{position:absolute;bottom:50px;right:10px;max-height:70px;max-width:70px;display:none} .umTip{position:fixed;bottom:50px;left:0;width:100%;text-align:center;display:none;z-index:10000} diff --git a/platforms/ios/www/dist/js/all.min.js b/platforms/ios/www/dist/js/all.min.js index e1d1c1a..5cc4262 100644 --- a/platforms/ios/www/dist/js/all.min.js +++ b/platforms/ios/www/dist/js/all.min.js @@ -1,1330 +1,18 @@ -(function() { - var IonicUtils, libr; - - libr = angular.module('libr.services.utils', []); - - IonicUtils = (function() { - IonicUtils.$inject = ['$timeout']; - - function IonicUtils($timeout) { - this.$timeout = $timeout; - } - - IonicUtils.prototype.initCustomLoading = function(scope) { - return scope.data = { - isLoading: false, - text: null - }; - }; - - IonicUtils.prototype.showLoading = function(scope, text, timing) { - if (timing == null) { - timing = 3000; - } - scope.data = { - isLoading: true, - text: text - }; - return this.$timeout((function(_this) { - return function() { - return _this.initCustomLoading(scope); - }; - })(this), timing); - }; - - IonicUtils.prototype.cacheImage = function(imageUrl) { - if (!ImgCache.isCached(imageUrl)) { - return ImgCache.cacheFile(imageUrl, null); - } - }; - - return IonicUtils; - - })(); - - libr.service('IonicUtils', IonicUtils); - -}).call(this); - -(function() { - var LocalStorageUtils, libr; - - libr = angular.module('libr.services.localstorage', []); - - LocalStorageUtils = (function() { - function LocalStorageUtils() {} - - LocalStorageUtils.prototype.getUser = function() { - return JSON.parse(localStorage.getItem('user')); - }; - - LocalStorageUtils.prototype.getUserId = function() { - var user; - user = this.getUser(); - return user.id; - }; - - LocalStorageUtils.prototype.getUserName = function() { - var user; - user = this.getUser(); - return user.name; - }; - - LocalStorageUtils.prototype.getUserToken = function() { - var user; - user = this.getUser(); - return user.token; - }; - - LocalStorageUtils.prototype.getUserAvatar = function() { - var user; - user = this.getUser(); - return user.avatar; - }; - - LocalStorageUtils.prototype.getUserEmail = function() { - var user; - user = this.getUser(); - return user.email; - }; - - LocalStorageUtils.prototype.isUserLogedIn = function() { - var user; - user = this.getUser(); - return user !== null && this.getUserEmail() !== null && this.getUserToken() !== null; - }; - - LocalStorageUtils.prototype.storeDoubanUser = function(name) { - return localStorage.setItem('doubanUser', name); - }; - - LocalStorageUtils.prototype.getDoubanUser = function() { - var user; - user = this.getUser(); - if (user.douban_user !== null) { - return user.douban_user; - } else if (localStorage.getItem('doubanUser') !== null) { - return localStorage.getItem('doubanUser'); - } else { - return null; - } - }; - - return LocalStorageUtils; - - })(); - - libr.service('LocalStorageUtils', LocalStorageUtils); - -}).call(this); - -(function() { - var ErrorHandler, libr; - - libr = angular.module('libr.handlers.errorHandler', []); - - ErrorHandler = (function() { - function ErrorHandler() {} - - ErrorHandler.prototype.loadingHandler = function($scope, callback) { - var message; - $scope.loading.hide(); - message = '加载失败,请确认有良好网络连接,并重试'; - return navigator.notification.confirm(message, (function(_this) { - return function() { - return callback(); - }; - })(this), '加载失败', ['确定', '取消']); - }; - - ErrorHandler.prototype.whenError = function(callback) { - var message; - message = '加载失败,请确认有良好网络连接,并重试'; - return navigator.notification.confirm(message, (function(_this) { - return function() { - return callback(); - }; - })(this), '加载失败', ['确定', '取消']); - }; - - return ErrorHandler; - - })(); - - libr.service('ErrorHandler', ErrorHandler); - -}).call(this); - -(function() { - var AuthicationService, libr, - __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - - libr = angular.module('libr.services.auth', []); - - AuthicationService = (function() { - AuthicationService.$inject = ['$http', 'Constant']; - - function AuthicationService($http, Constant) { - this.$http = $http; - this.Constant = Constant; - this.register = __bind(this.register, this); - this.login = __bind(this.login, this); - console.log('init auth service'); - } - - AuthicationService.prototype.login = function(user, callback, errorCallback) { - var baseUrl; - baseUrl = this.Constant.baseUrl + '/sessions'; - return this.$http({ - method: 'POST', - url: baseUrl, - data: "user[email]=" + user.email + "&user[password]=" + user.password, - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - } - }).success(function(result) { - if (result.success) { - return callback(result); - } else { - return errorCallback('登录失败,请输入正确的用户名和密码'); - } - }).error(function(data) { - return errorCallback('登录失败,请输入正确的用户名和密码'); - }); - }; - - AuthicationService.prototype.register = function(user, callback, onError) { - var url; - url = this.Constant.baseUrl + '/registrations'; - return this.$http({ - method: 'POST', - url: url, - data: "user[email]=" + user.email + "&user[password]=" + user.password, - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - } - }).success(function(result, status) { - return callback(result, status); - }).error(function(data, status) { - return onError(data); - }); - }; - - return AuthicationService; - - })(); - - libr.service('AuthService', AuthicationService); - -}).call(this); - -(function() { - var Books, libr; - - libr = angular.module('libr.services.books', ['ngResource']); - - Books = (function() { - Books.$inject = ['$http', '$resource', 'Constant', 'LocalStorageUtils']; - - function Books($resource, Constant, LocalStorageUtils) { - var url; - this.$resource = $resource; - this.Constant = Constant; - this.LocalStorageUtils = LocalStorageUtils; - url = this.Constant.baseUrl + '/users/:user_id/books/:book_id'; - return this.$resource(url, { - user_email: this.LocalStorageUtils.getUserEmail(), - user_token: this.LocalStorageUtils.getUserToken(), - user_id: this.LocalStorageUtils.getUserId(), - book_id: '@bookId' - }, { - 'get': { - cache: true, - method: 'GET' - }, - 'query': { - method: 'GET', - isArray: false, - cache: false - }, - 'fetchNew': { - method: 'GET', - isArray: false, - cache: true, - url: this.Constant.baseUrl + '/books/newbooks/:afterId' - } - }); - } - - return Books; - - })(); - - libr.factory('Books', ['$resource', 'Constant', 'LocalStorageUtils', Books]); - -}).call(this); - -(function() { - var CommentService, libr; - - libr = angular.module('libr.services.comment', ['ngResource']); - - CommentService = (function() { - CommentService.$inject = ['$http', '$resource', 'Constant']; - - function CommentService($resource, Constant) { - var baseUrl; - this.$resource = $resource; - this.Constant = Constant; - baseUrl = this.Constant.baseUrl + '/books/:book_id/comments/:comment_id'; - return this.$resource(baseUrl, { - user_email: localStorage.getItem('email'), - user_token: localStorage.getItem('token'), - book_id: '@bookId', - comment_id: '@commentId' - }, { - 'query': { - method: 'GET', - isArray: true, - cache: false - } - }, { - 'save': { - params: { - comment_id: '@commentId' - } - } - }); - } - - return CommentService; - - })(); - - libr.factory('Comments', ['$resource', 'Constant', CommentService]); - -}).call(this); - -(function() { - var DoubanService, libr, - __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - - libr = angular.module('libr.services.douban', []); - - DoubanService = (function() { - DoubanService.$inject = ['$http', 'Constant', 'LocalStorageUtils']; - - function DoubanService($http, Constant, LocalStorageUtils) { - this.$http = $http; - this.Constant = Constant; - this.LocalStorageUtils = LocalStorageUtils; - this.submitUser = __bind(this.submitUser, this); - } - - DoubanService.prototype.userInfo = function(user, callback, error) { - return this.$http({ - url: "http://api.douban.com/v2/user/" + user, - method: 'GET', - timeout: 10000, - cache: true - }).success(function(data, status, headers, config) { - if (status === 200) { - return callback(data); - } else { - return error(data); - } - }).error(function(data) { - return error(data); - }); - }; - - DoubanService.prototype.bookDetail = function(isbn, callback, error) { - return this.$http({ - url: "https://api.douban.com/v2/book/isbn/" + isbn, - method: 'GET', - timeout: 10000, - cache: true - }).success(function(data, status, headers, config) { - if (status === 200) { - return callback(data); - } else { - return error(data); - } - }).error(function(data) { - return error(data); - }); - }; - - DoubanService.prototype.submitUser = function(user, callback, error) { - var email, token, userId; - email = localStorage.getItem('email'); - token = localStorage.getItem('token'); - userId = this.LocalStorageUtils.getUserId(); - return this.$http({ - url: "" + this.Constant.baseUrl + "/users/" + userId + "/link/douban/" + user + "?user_email=" + email + "&user_token=" + token, - method: 'POST', - timeout: 10000 - }).success(function(data, status, headers, config) { - return callback(data); - }).error(function(data) { - return error(data); - }); - }; - - return DoubanService; - - })(); - - libr.service('DoubanService', DoubanService); - -}).call(this); - -(function() { - var GeolocationService, libr, - __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - - libr = angular.module('libr.services.geolocation', []); - - GeolocationService = (function() { - var getLocation, onError, onSuccess; - - GeolocationService.$inject = ['$http', 'Constant']; - - function GeolocationService($http, Constant) { - this.$http = $http; - this.Constant = Constant; - this.getDetailAddress = __bind(this.getDetailAddress, this); - } - - onSuccess = function(position) { - alert('lat' + position.coords.latitude); - return { - "Latitude": position.coords.latitude, - "Longitude": position.coords.longitude, - "Altitude": position.coords.altitude, - "Accuracy": position.coords.accuracy, - "Altitude Accuracy": position.coords.altitudeAccuracy, - "Heading": position.coords.heading, - "Speed": position.coords.speed, - "Timestamp": position.timestamp - }; - }; - - onError = function(error) { - throw "code: " + error.code + " \n message: " + error.message; - }; - - GeolocationService.prototype.getCurrentLocation = function(callback, error) { - return navigator.geolocation.getCurrentPosition(callback, error); - }; - - GeolocationService.prototype.getDetailAddress = function(callback, error) { - var baseUrl; - baseUrl = this.Constant.baseUrl + '/locations/detail'; - return this.getCurrentLocation((function(_this) { - return function(position) { - return _this.$http({ - url: "" + baseUrl + "?lat=" + position.coords.latitude + "&lng=" + position.coords.longitude, - cache: true, - method: 'GET' - }).success(function(data, status, headers, config) { - return callback(data); - }); - }; - })(this), function(error) { - throw Error(error); - }); - }; - - GeolocationService.prototype.getLocations = function(callback, error) { - var baseUrl, email, token; - baseUrl = this.Constant.baseUrl + '/locations'; - email = localStorage.getItem('email'); - token = localStorage.getItem('token'); - return this.$http({ - url: "" + baseUrl + "?user_email=" + email + "&user_token=" + token, - method: 'GET', - cache: false - }).success(function(data, status, headers, config) { - return callback(data); - }).error(function(data) { - throw Error(error); - }); - }; - - GeolocationService.prototype.createLocation = function(callback) { - var baseUrl, email, location, token; - baseUrl = this.Constant.baseUrl + '/locations'; - location = getLocation(); - email = localStorage.getItem('email'); - token = localStorage.getItem('token'); - return this.$http({ - method: 'POST', - url: baseUrl + ("?user_email=" + email + "&user_token=" + token), - data: "address=" + location.address + "&lat=" + location.lat + "&lng=" + location.lng, - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - } - }).success(function(data) { - return callback(data); - }); - }; - - GeolocationService.prototype.deleteLocation = function(item, callback) { - var baseUrl, email, token; - baseUrl = this.Constant.baseUrl + '/locations'; - email = localStorage.getItem('email'); - token = localStorage.getItem('token'); - return this.$http({ - method: 'DELETE', - url: baseUrl + ("?user_email=" + email + "&user_token=" + token + "&id=" + item.id), - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - } - }).success(function(data) { - console.log("=====", data); - return callback(data); - }); - }; - - getLocation = function() { - var location; - location = {}; - location.address = localStorage.getItem('cur_address_detail'); - location.lat = localStorage.getItem('cur_lat'); - location.lng = localStorage.getItem('cur_lng'); - return location; - }; - - return GeolocationService; - - })(); - - libr.service('GeolocationService', GeolocationService); - -}).call(this); - -(function() { - var RecommendService, libr, - __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - - libr = angular.module('libr.services.recommend', []); - - RecommendService = (function() { - RecommendService.$injector = ['GeolocationService', '$http', 'Constant']; - - function RecommendService(GeolocationService, $http, Constant) { - this.GeolocationService = GeolocationService; - this.$http = $http; - this.Constant = Constant; - this.changeRecommendAction = __bind(this.changeRecommendAction, this); - this.popularBooksAroundMe = __bind(this.popularBooksAroundMe, this); - } - - RecommendService.prototype.getActionSheetList = function() { - var actionList; - actionList = []; - actionList.push({ - text: '随便看看吧' - }); - actionList.push({ - text: "你可能喜欢的书" - }); - this.GeolocationService.getLocations((function(_this) { - return function(locations) { - var locationIds; - locationIds = []; - locations.map(function(location) { - locationIds.push(location.id); - location = { - text: "" + location.address + "附近流行的书" - }; - return actionList.push(location); - }); - localStorage.setItem('recommend_action_sheet_arr', JSON.stringify(locationIds)); - return localStorage.setItem('recommend_action_sheet_full_arr', JSON.stringify(actionList)); - }; - })(this)); - return actionList; - }; - - RecommendService.prototype.popularBooksForMe = function(callback, error) { - var email, token; - email = localStorage.getItem('email'); - token = localStorage.getItem('token'); - return this.$http({ - url: this.Constant.baseUrl + ("/recommend/me?user_email=" + email + "&user_token=" + token), - method: 'GET', - timeout: 15000 - }).success(function(data, status, headers, config) { - return callback(data); - }).error(function(data) { - return error(data); - }); - }; - - RecommendService.prototype.randomBooks = function(callback, error) { - var email, token; - email = localStorage.getItem('email'); - token = localStorage.getItem('token'); - return this.$http({ - url: this.Constant.baseUrl + ("/recommend/random?user_email=" + email + "&user_token=" + token), - method: 'GET', - timeout: 15000, - cache: false - }).success(function(data, status, headers, config) { - return callback(data); - }).error(function(data) { - return error(data); - }); - }; - - RecommendService.prototype.popularBooksAroundMe = function(locationId, callback, error) { - var email, token; - email = localStorage.getItem('email'); - token = localStorage.getItem('token'); - return this.$http({ - url: this.Constant.baseUrl + ("/recommend/locations/" + locationId + "?user_email=" + email + "&user_token=" + token), - method: 'GET', - timeout: 15000, - cache: true - }).success(function(data, status, headers, config) { - console.log('数据', data); - return callback(data); - }).error(function(data) { - return error(data); - }); - }; - - RecommendService.prototype.changeRecommendAction = function(index, callback, error) { - var locations; - console.log('index====', index); - if (index === 0) { - return this.randomBooks(callback, error); - } else if (index === 1) { - return this.popularBooksForMe(callback, error); - } else { - locations = JSON.parse(localStorage.getItem('recommend_action_sheet_arr')); - console.log(locations[index - 2], 'index......'); - return this.popularBooksAroundMe(locations[index - 2], function(result) { - console.log('callback....', result); - return callback(result); - }, function(errorMessage) { - return error(errorMessage); - }); - } - }; - - return RecommendService; - - })(); - - libr.service('RecommendService', RecommendService); - -}).call(this); - -(function() { - var ScanService, libr; - - libr = angular.module('libr.services.scan', []); - - ScanService = (function() { - ScanService.$inject = ['Books']; - - function ScanService(Books) { - this.Books = Books; - } - - ScanService.prototype.scan = function(callback, errorCallback) { - navigator.notification.vibrate(50); - return cordova.plugins.barcodeScanner.scan((function(_this) { - return function(result) { - console.log('got scan result', result); - if (result.cancelled === 1) { - return; - } - if (result.format !== 'EAN_13') { - console.log('条码不匹配'); - errorCallback('条形码类型错误,请确认所扫为书籍,并更换角度'); - return; - } - return _this.Books.save({ - isbn: result.text - }, null, function(data) { - console.log('get server response'); - if (data.status === 'error') { - return errorCallback(data.message); - } else { - return callback(data); - } - }, function(error) { - return errorCallback('添加图书失败' + error.data.message); - }); - }; - })(this), function(error) { - return errorCallback("扫描图书失败:" + error + " "); - }); - }; - - return ScanService; - - })(); - - libr.service('ScanService', ScanService); - -}).call(this); - -(function() { - var BookDetailController, libr, - __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - - libr = angular.module('libr.controllers', ['ionic']); - - BookDetailController = (function() { - BookDetailController.$inject = ['$scope', '$stateParams', 'Books', '$window', '$ionicModal', 'Comments', 'DoubanService']; - - function BookDetailController($scope, $stateParams, Books, $window, $ionicModal, Comments, DoubanService) { - this.$scope = $scope; - this.$stateParams = $stateParams; - this.Books = Books; - this.$window = $window; - this.$ionicModal = $ionicModal; - this.Comments = Comments; - this.DoubanService = DoubanService; - this.back = __bind(this.back, this); - this.doComment = __bind(this.doComment, this); - this.closeCommentDialog = __bind(this.closeCommentDialog, this); - this.openCommentDialog = __bind(this.openCommentDialog, this); - this.$scope.openDialog = this.openCommentDialog; - this.$scope.closeDialog = this.closeCommentDialog; - this.$scope.doComment = this.doComment; - this.$scope.back = this.back; - this.$ionicModal.fromTemplateUrl('templates/modal/comment.html', (function(_this) { - return function(modal) { - return _this.$scope.modal = modal; - }; - })(this), { - scope: this.$scope, - animation: 'slide-in-up' - }); - this.Books.get({ - book_id: this.$stateParams.isbn - }, (function(_this) { - return function(result) { - _this.$scope.book = result; - _this.$scope.usersAccount = result.users.length; - _this.$scope.bookName = _this.$scope.book.name; - _this.Comments.query({ - book_id: result.id - }, function(data) { - console.log(data, '!!!!!'); - return _this.$scope.comments = data; - }); - return _this.DoubanService.bookDetail(result.isbn, function(data) { - console.log(data); - return _this.$scope.bookDetail = data; - }, function(error) { - return console.log('error', error); - }); - }; - })(this)); - this.$scope.$on('$destroy', (function(_this) { - return function() { - return _this.$scope.modal.remove(); - }; - })(this)); - } - - BookDetailController.prototype.openCommentDialog = function() { - return this.$scope.modal.show(); - }; - - BookDetailController.prototype.closeCommentDialog = function() { - return this.$scope.modal.hide(); - }; - - BookDetailController.prototype.doComment = function() { - var text; - text = angular.element(document.getElementById('comment')).val(); - if (text.trim() === '') { - alert('请输入有效字符'); - return false; - } else { - return this.Comments.save({ - book_id: this.$scope.book.id, - content: text - }, null, (function(_this) { - return function(data) { - if (data.id === null) { - return alert('添加图书失败'); - } else { - console.log('成功。。。。。。。'); - _this.$scope.comments.push(data); - return _this.closeCommentDialog(); - } - }; - })(this)); - } - }; - - BookDetailController.prototype.back = function() { - return this.$window.history.back(); - }; - - return BookDetailController; - - })(); - - libr.controller('BookDetailController', BookDetailController); - -}).call(this); - -(function() { - var BooksController, libr, - __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - - libr = angular.module('libr.controllers.books', ['ionic']); - - BooksController = (function() { - BooksController.$inject = ['$scope', 'Books', 'ScanService', '$ionicModal', 'DoubanService', 'IonicUtils', 'LocalStorageUtils']; - - function BooksController($scope, Books, ScanService, $ionicModal, DoubanService, IonicUtils, LocalStorageUtils) { - var currentPage; - this.$scope = $scope; - this.Books = Books; - this.ScanService = ScanService; - this.$ionicModal = $ionicModal; - this.DoubanService = DoubanService; - this.IonicUtils = IonicUtils; - this.LocalStorageUtils = LocalStorageUtils; - this.submitDoubanUser = __bind(this.submitDoubanUser, this); - this.scanBooks = __bind(this.scanBooks, this); - this.searchDoubanUser = __bind(this.searchDoubanUser, this); - this.closeDialog = __bind(this.closeDialog, this); - this.loadMore = __bind(this.loadMore, this); - this.refresh = __bind(this.refresh, this); - currentPage = localStorage.setItem('user_books_current_page', 0); - this.$scope.books = []; - this.$scope.moreItemsAvailable = true; - this.$scope.submitAllowed = false; - this.$ionicModal.fromTemplateUrl('templates/modal/import_books.html', (function(_this) { - return function(modal) { - return _this.$scope.modal = modal; - }; - })(this), { - scope: this.$scope, - animation: 'slide-in-up' - }); - this.$scope.data = { - isLoading: false, - text: null - }; - this.IonicUtils.initCustomLoading(this.$scope); - this.$scope.onRefresh = this.refresh; - this.$scope.loadMore = this.loadMore; - this.$scope.closeDialog = this.closeDialog; - this.$scope.searchDoubanUser = this.searchDoubanUser; - this.$scope.scanBooks = this.scanBooks; - this.$scope.submitDoubanUser = this.submitDoubanUser; - this.$scope.doubanInputDisabled = this.LocalStorageUtils.getDoubanUser() !== null; - this.$scope.doubanUsername = this.LocalStorageUtils.getDoubanUser(); - } - - BooksController.prototype.refresh = function() { - var afterBookId; - afterBookId = localStorage.getItem('user_max_book_id'); - return this.Books.fetchNew({ - afterId: afterBookId - }, (function(_this) { - return function(data) { - _this.$scope.$broadcast('scroll.refreshComplete'); - if (data.books.length !== 0) { - localStorage.setItem('user_max_book_id', data.books[0].id); - return data.books.forEach(function(item, index, array) { - return _this.$scope.books.push(item); - }); - } - }; - })(this)); - }; - - BooksController.prototype.loadMore = function() { - var currentPage, maxPage; - currentPage = localStorage.getItem('user_books_current_page'); - maxPage = localStorage.getItem('user_books_max_page'); - maxPage = parseInt(maxPage); - currentPage = parseInt(currentPage); - if (!(currentPage >= maxPage)) { - return this.Books.query({ - page: currentPage + 1 - }, (function(_this) { - return function(data) { - if (data.books.length !== 0) { - localStorage.setItem('user_max_book_id', data.books[0].id); - localStorage.setItem('user_books_current_page', data.current_page); - localStorage.setItem('user_books_max_page', data.total_page); - data.books.forEach(function(item, index, array) { - return _this.$scope.books.push(item); - }); - } else { - _this.$scope.moreItemsAvailable = false; - } - return _this.$scope.$broadcast('scroll.infiniteScrollComplete'); - }; - })(this)); - } else { - this.$scope.$broadcast('scroll.infiniteScrollComplete'); - return this.$scope.moreItemsAvailable = false; - } - }; - - BooksController.prototype.closeDialog = function() { - return this.$scope.modal.hide(); - }; - - BooksController.prototype.searchDoubanUser = function(user) { - console.log(user, '...'); - if (user === void 0 || user.trim() === '') { - return this.IonicUtils.showLoading(this.$scope, '请输入有效昵称'); - } else { - return this.DoubanService.userInfo(user, (function(_this) { - return function(data) { - _this.$scope.resultEnabled = true; - _this.$scope.submitAllowed = true; - return _this.$scope.doubanUser = data; - }; - })(this), (function(_this) { - return function(error) { - _this.IonicUtils.showLoading(_this.$scope, '查找豆瓣用户失败,请稍后再试'); - console.log(error); - _this.$scope.resultEnabled = false; - return _this.$scope.submitAllowed = false; - }; - })(this)); - } - }; - - BooksController.prototype.scanBooks = function() { - return this.ScanService.scan((function(_this) { - return function(result) { - navigator.notification.alert("添加图书《" + result.book.name + "》成功", null, "Libr", "确定"); - return _this.$scope.books.unshift(result.book); - }; - })(this), (function(_this) { - return function(msg) { - console.log('trying to show loading...', msg); - _this.IonicUtils.showLoading(_this.$scope, msg); - _this.$scope.$apply(); - return console.log('applied'); - }; - })(this)); - }; - - BooksController.prototype.submitDoubanUser = function() { - var username; - username = angular.element(document.getElementById('douban-username')); - username = username.val(); - return this.DoubanService.submitUser(username, (function(_this) { - return function(data) { - _this.$scope.doubanInputDisabled = true; - _this.LocalStorageUtils.storeDoubanUser(username); - return alert('成功绑定豆瓣用户,请返回,系统将自动为你导入豆瓣图书'); - }; - })(this), (function(_this) { - return function(data) { - return _this.IonicUtils.showLoading(_this.$scope, '绑定豆瓣用户失败,请稍后再试'); - }; - })(this)); - }; - - return BooksController; - - })(); - - libr.controller('BooksController', BooksController); - -}).call(this); - -(function() { - var HomeController, libr, - __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - - libr = angular.module('libr.controllers.home', ['ionic']); - - HomeController = (function() { - var showLoading; - - HomeController.$inject = ['$scope', '$location', 'ScanService', '$ionicLoading', '$ionicActionSheet', 'RecommendService', 'ErrorHandler', 'LocalStorageUtils']; - - function HomeController($scope, $location, ScanService, $ionicLoading, $ionicActionSheet, RecommendService, ErrorHandler, LocalStorageUtils) { - this.$scope = $scope; - this.$location = $location; - this.$ionicLoading = $ionicLoading; - this.$ionicActionSheet = $ionicActionSheet; - this.RecommendService = RecommendService; - this.ErrorHandler = ErrorHandler; - this.LocalStorageUtils = LocalStorageUtils; - this.changeRecommend = __bind(this.changeRecommend, this); - this.showRecommendActionSheet = __bind(this.showRecommendActionSheet, this); - this.$scope.showRecommendActionSheet = this.showRecommendActionSheet; - if (this.LocalStorageUtils.isUserLogedIn()) { - showLoading(this.$scope, this.$ionicLoading); - this.$scope.title = '随便看看吧'; - if (localStorage.getItem('home.books') === null) { - this.RecommendService.randomBooks((function(_this) { - return function(result) { - _this.$scope.books = result; - localStorage.setItem('home.books', JSON.stringify(result)); - return _this.$ionicLoading.hide(); - }; - })(this), (function(_this) { - return function(error) { - return _this.ErrorHandler.loadingHandler(_this.$scope, null); - }; - })(this)); - } else { - this.$scope.books = JSON.parse(localStorage.getItem('home.books')); - this.$ionicLoading.hide(); - } - } else { - this.$location.path('/tab/settings'); - return; - } - this.$scope.changeRecommend = this.changeRecommend; - } - - showLoading = function($scope, $ionicLoading) { - return $scope.loading = $ionicLoading.show({ - content: '加载中', - animation: 'fade-in', - showBackdrop: true, - maxWidth: 200, - showDelay: 500 - }); - }; - - HomeController.prototype.showRecommendActionSheet = function() { - return this.$ionicActionSheet.show({ - titleText: 'Libr 为你推荐', - buttons: this.RecommendService.getActionSheetList(), - cancelText: '取消', - cancel: function() { - return console.log('CANCELLED'); - }, - buttonClicked: (function(_this) { - return function(index) { - console.log("" + index + " has been taped"); - _this.changeRecommend(index); - return true; - }; - })(this) - }); - }; - - HomeController.prototype.changeRecommend = function(index) { - var msg; - msg = '喔,看来附近还没有好书推荐,快去推荐你的朋友也来使用吧!'; - return this.RecommendService.changeRecommendAction(index, (function(_this) { - return function(result) { - var listArray; - if (result.length === 0) { - return navigator.notification.alert(msg, null, 'libr', '确定'); - } else { - _this.$scope.books = result; - localStorage.setItem('home.books', JSON.stringify(result)); - listArray = JSON.parse(localStorage.getItem('recommend_action_sheet_full_arr')); - console.log('=========='); - console.log(listArray, index); - return _this.$scope.title = listArray[index].text; - } - }; - })(this), (function(_this) { - return function(error) { - return _this.ErrorHandler.whenError(null); - }; - })(this)); - }; - - return HomeController; - - })(); - - libr.controller('HomeCtrl', HomeController); - -}).call(this); - -(function() { - var LocationController, libr, - __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - - libr = angular.module('libr.controllers.location', ['ionic']); - - LocationController = (function() { - LocationController.$inject = ['$scope', '$location', 'GeolocationService', 'IonicUtils']; - - function LocationController($scope, $location, GeolocationService, IonicUtils) { - this.$scope = $scope; - this.$location = $location; - this.GeolocationService = GeolocationService; - this.IonicUtils = IonicUtils; - this.deleteItem = __bind(this.deleteItem, this); - this.addLocation = __bind(this.addLocation, this); - this.$scope.addLocation = this.addLocation; - this.$scope.itemButtons = [ - { - text: '删除', - type: 'button-assertive', - onTap: (function(_this) { - return function(item) { - return _this.GeolocationService.deleteLocation(item, function(result) { - return _this.$scope.locations.splice(_this.$scope.locations.indexOf(item), 1); - }); - }; - })(this) - } - ]; - this.GeolocationService.getLocations((function(_this) { - return function(locations) { - return _this.$scope.locations = locations; - }; - })(this)); - this.GeolocationService.getDetailAddress((function(_this) { - return function(position) { - localStorage.setItem('cur_address_detail', position.result.formatted_address); - localStorage.setItem('cur_lat', position.result.location.lat); - localStorage.setItem('cur_lng', position.result.location.lng); - return _this.$scope.address = position.result.formatted_address; - }; - })(this)); - this.IonicUtils.initCustomLoading(this.$scope); - this.$scope.deleteItem = this.deleteItem; - } - - LocationController.prototype.addLocation = function() { - if (this.$scope.locations.length >= 3) { - return this.IonicUtils.showLoading(this.$scope, '只能创建3个常用的地址,请先删除部分再添加'); - } else if ((localStorage.getItem('cur_address_detail') === null) || (localStorage.getItem('cur_address_detail') === void 0)) { - return this.IonicUtils.showLoading(this.$scope, '定位成功后方可添加常用地址'); - } else if (this.$scope.address === null || this.$scope.address === '') { - return this.IonicUtils.showLoading(this.$scope, '定位成功后方可添加常用地址'); - } else { - return this.GeolocationService.createLocation((function(_this) { - return function(result) { - return _this.$scope.locations.push(result); - }; - })(this)); - } - }; - - LocationController.prototype.deleteItem = function(item) { - return this.GeolocationService.deleteLocation(item, (function(_this) { - return function(result) { - return _this.$scope.locations.splice(_this.$scope.locations.indexOf(item), 1); - }; - })(this)); - }; - - return LocationController; - - })(); - - libr.controller('LocationController', LocationController); - -}).call(this); - -(function() { - var LoginController, libr, - __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - - libr = angular.module('libr.controllers.login', ['ionic']); - - LoginController = (function() { - LoginController.$inject = ['$scope', 'AuthService', '$state', '$ionicModal', 'IonicUtils', 'LocalStorageUtils']; - - function LoginController($scope, AuthService, $state, $ionicModal, IonicUtils, LocalStorageUtils) { - this.$scope = $scope; - this.AuthService = AuthService; - this.$state = $state; - this.$ionicModal = $ionicModal; - this.IonicUtils = IonicUtils; - this.LocalStorageUtils = LocalStorageUtils; - this.closeDialog = __bind(this.closeDialog, this); - this.registerUser = __bind(this.registerUser, this); - this.registerForm = __bind(this.registerForm, this); - this.login = __bind(this.login, this); - if (this.LocalStorageUtils.isUserLogedIn()) { - this.$state.go('tab.home'); - } - this.$scope.login = this.login; - this.$scope.registerForm = this.registerForm; - this.$scope.registerUser = this.registerUser; - this.$scope.closeDialog = this.closeDialog; - this.$ionicModal.fromTemplateUrl('templates/modal/registration.html', (function(_this) { - return function(modal) { - return _this.$scope.modal = modal; - }; - })(this), { - scope: this.$scope, - animation: 'slide-in-up' - }); - this.IonicUtils.initCustomLoading(this.$scope); - } - - LoginController.prototype.login = function(user) { - if (!user || user.email === '' || user.password === '' || user.email === void 0 || user.password === void 0) { - this.IonicUtils.showLoading(this.$scope, '请输入有效的用户名和密码'); - return; - } - return this.AuthService.login(user, (function(_this) { - return function(result) { - localStorage.setItem('token', result.user.token); - localStorage.setItem('avatar', result.user.avatar); - localStorage.setItem('username', result.user.name); - localStorage.setItem('email', user.email); - localStorage.setItem('user', JSON.stringify(result.user)); - return _this.$state.go('tab.home'); - }; - })(this), (function(_this) { - return function(data) { - return _this.IonicUtils.showLoading(_this.$scope, data); - }; - })(this)); - }; - - LoginController.prototype.registerForm = function() { - return this.$scope.modal.show(); - }; - - LoginController.prototype.registerUser = function(user) { - if (!user || user.email === '' || user.password === '' || user.email === void 0 || user.password === void 0) { - this.IonicUtils.showLoading(this.$scope, '用户名或密码错误,请重试'); - } else { - return this.AuthService.register(user, (function(_this) { - return function(result, status) { - if (status === 201) { - alert('注册成功,请返回登录'); - return _this.$scope.modal.hide(); - } else { - return _this.IonicUtils.showLoading(_this.$scope, '注册失败,请确认是否输入正确,并重试'); - } - }; - })(this), (function(_this) { - return function(error) { - _this.IonicUtils.showLoading(_this.$scope, '注册失败,请确认是否输入正确,并重试'); - return console.log("registerError", error); - }; - })(this)); - } - }; - - LoginController.prototype.closeDialog = function() { - return this.$scope.modal.hide(); - }; - - return LoginController; - - })(); - - libr.controller('LoginController', LoginController); - -}).call(this); - -(function() { - var MainController, libr; - - libr = angular.module('libr.controllers.main', ['ionic']); - - MainController = (function() { - MainController.$inject = ['$scope', '$location', '$ionicModal', '$state']; - - function MainController($scope, $location, $ionicModal, $state) { - this.$scope = $scope; - this.$location = $location; - this.$ionicModal = $ionicModal; - this.$state = $state; - } - - return MainController; - - })(); - - libr.controller('MainCtrl', MainController); - -}).call(this); - -(function() { - var SettingsController, libr, - __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - - libr = angular.module('libr.controllers.settings', ['ionic']); - - SettingsController = (function() { - var isUserLogedIn; - - SettingsController.$inject = ['$scope', '$ionicModal', 'AuthService', '$state', '$cacheFactory', 'LocalStorageUtils']; - - function SettingsController($scope, $ionicModal, AuthService, $state, $cacheFactory, LocalStorageUtils) { - this.$scope = $scope; - this.$ionicModal = $ionicModal; - this.AuthService = AuthService; - this.$state = $state; - this.$cacheFactory = $cacheFactory; - this.LocalStorageUtils = LocalStorageUtils; - this.logout = __bind(this.logout, this); - this.$scope.logout = this.logout; - this.$scope.feedback = this.feedback; - this.$scope.showMe = this.showMe; - if (isUserLogedIn(this.LocalStorageUtils)) { - this.$scope.isLogedIn = true; - } else { - this.$scope.isLogedIn = false; - } - this.$scope.avatar = this.LocalStorageUtils.getUserAvatar(); - this.$scope.username = this.LocalStorageUtils.getUserName(); - } - - SettingsController.prototype.logout = function() { - var httpDefaultCache; - localStorage.clear(); - httpDefaultCache = this.$cacheFactory.get('$http'); - console.log('cacheFactory', httpDefaultCache); - httpDefaultCache.removeAll(); - return this.$state.go('login'); - }; - - SettingsController.prototype.feedback = function() { - return window.open('https://jinshuju.net/f/F96z3s', '_blank', 'location=no'); - }; - - SettingsController.prototype.showMe = function() { - return window.open('http://librme.com', '_blank', 'location=no'); - }; - - isUserLogedIn = function(localStorageUtils) { - if (localStorageUtils.getUserToken() !== null && localStorageUtils.getUserEmail() !== null) { - return true; - } else { - return false; - } - }; - - return SettingsController; - - })(); - - libr.controller('SettingsController', SettingsController); - -}).call(this); - -(function() { - var Constant, libr; - - libr = angular.module('libr.constant', []); - - Constant = {}; - - Constant.baseUrl = "http://192.168.1.108:3000/api/v1"; - - libr.constant('Constant', Constant); - -}).call(this); +(function(){var IonicUtils,libr;libr=angular.module("libr.services.utils",[]),IonicUtils=function(){function IonicUtils($timeout){this.$timeout=$timeout}return IonicUtils.$inject=["$timeout"],IonicUtils.prototype.initCustomLoading=function(scope){return scope.data={isLoading:!1,text:null}},IonicUtils.prototype.showLoading=function(scope,text,timing){return null==timing&&(timing=3e3),scope.data={isLoading:!0,text:text},this.$timeout(function(_this){return function(){return _this.initCustomLoading(scope)}}(this),timing)},IonicUtils.prototype.cacheImage=function(imageUrl){return ImgCache.isCached(imageUrl)?void 0:ImgCache.cacheFile(imageUrl,null)},IonicUtils}(),libr.service("IonicUtils",IonicUtils)}).call(this); +(function(){var LocalStorageUtils,libr;libr=angular.module("libr.services.localstorage",[]),LocalStorageUtils=function(){function LocalStorageUtils(){}return LocalStorageUtils.prototype.getUser=function(){return JSON.parse(localStorage.getItem("user"))},LocalStorageUtils.prototype.getUserId=function(){var user;return user=this.getUser(),user.id},LocalStorageUtils.prototype.getUserName=function(){var user;return user=this.getUser(),user.name},LocalStorageUtils.prototype.getUserToken=function(){var user;return user=this.getUser(),user.token},LocalStorageUtils.prototype.getUserAvatar=function(){var user;return user=this.getUser(),user.avatar},LocalStorageUtils.prototype.getUserEmail=function(){var user;return user=this.getUser(),user.email},LocalStorageUtils.prototype.isUserLogedIn=function(){var user;return user=this.getUser(),null!==user&&null!==this.getUserEmail()&&null!==this.getUserToken()},LocalStorageUtils.prototype.storeDoubanUser=function(name){return localStorage.setItem("doubanUser",name)},LocalStorageUtils.prototype.getDoubanUser=function(){var user;return user=this.getUser(),null!==user.douban_user?user.douban_user:null!==localStorage.getItem("doubanUser")?localStorage.getItem("doubanUser"):null},LocalStorageUtils}(),libr.service("LocalStorageUtils",LocalStorageUtils)}).call(this); +(function(){var ErrorHandler,libr;libr=angular.module("libr.handlers.errorHandler",[]),ErrorHandler=function(){function ErrorHandler(){}return ErrorHandler.prototype.loadingHandler=function($scope,callback){var message;return $scope.loading.hide(),message="加载失败,请确认有良好网络连接,并重试",navigator.notification.confirm(message,function(){return function(){return callback()}}(this),"加载失败",["确定","取消"])},ErrorHandler.prototype.whenError=function(callback){var message;return message="加载失败,请确认有良好网络连接,并重试",navigator.notification.confirm(message,function(){return function(){return callback()}}(this),"加载失败",["确定","取消"])},ErrorHandler}(),libr.service("ErrorHandler",ErrorHandler)}).call(this); +(function(){var AuthicationService,libr,__bind=function(fn,me){return function(){return fn.apply(me,arguments)}};libr=angular.module("libr.services.auth",[]),AuthicationService=function(){function AuthicationService($http,Constant){this.$http=$http,this.Constant=Constant,this.register=__bind(this.register,this),this.login=__bind(this.login,this),console.log("init auth service")}return AuthicationService.$inject=["$http","Constant"],AuthicationService.prototype.login=function(user,callback,errorCallback){var baseUrl;return baseUrl=this.Constant.baseUrl+"/sessions",this.$http({method:"POST",url:baseUrl,data:"user[email]="+user.email+"&user[password]="+user.password,headers:{"Content-Type":"application/x-www-form-urlencoded"}}).success(function(result){return result.success?callback(result):errorCallback("登录失败,请输入正确的用户名和密码")}).error(function(){return errorCallback("登录失败,请输入正确的用户名和密码")})},AuthicationService.prototype.register=function(user,callback,onError){var url;return url=this.Constant.baseUrl+"/registrations",this.$http({method:"POST",url:url,data:"user[email]="+user.email+"&user[password]="+user.password,headers:{"Content-Type":"application/x-www-form-urlencoded"}}).success(function(result,status){return callback(result,status)}).error(function(data){return onError(data)})},AuthicationService}(),libr.service("AuthService",AuthicationService)}).call(this); +(function(){var Books,libr;libr=angular.module("libr.services.books",["ngResource"]),Books=function(){function Books($resource,Constant,LocalStorageUtils){var url;return this.$resource=$resource,this.Constant=Constant,this.LocalStorageUtils=LocalStorageUtils,url=this.Constant.baseUrl+"/users/:user_id/books/:book_id",this.$resource(url,{user_email:this.LocalStorageUtils.getUserEmail(),user_token:this.LocalStorageUtils.getUserToken(),user_id:this.LocalStorageUtils.getUserId(),book_id:"@bookId"},{get:{cache:!0,method:"GET"},query:{method:"GET",isArray:!1,cache:!1},fetchNew:{method:"GET",isArray:!1,cache:!0,url:this.Constant.baseUrl+"/books/newbooks/:afterId"}})}return Books.$inject=["$http","$resource","Constant","LocalStorageUtils"],Books}(),libr.factory("Books",["$resource","Constant","LocalStorageUtils",Books])}).call(this); +(function(){var CommentService,libr;libr=angular.module("libr.services.comment",["ngResource"]),CommentService=function(){function CommentService($resource,Constant){var baseUrl;return this.$resource=$resource,this.Constant=Constant,baseUrl=this.Constant.baseUrl+"/books/:book_id/comments/:comment_id",this.$resource(baseUrl,{user_email:localStorage.getItem("email"),user_token:localStorage.getItem("token"),book_id:"@bookId",comment_id:"@commentId"},{query:{method:"GET",isArray:!0,cache:!1}},{save:{params:{comment_id:"@commentId"}}})}return CommentService.$inject=["$http","$resource","Constant"],CommentService}(),libr.factory("Comments",["$resource","Constant",CommentService])}).call(this); +(function(){var DoubanService,libr,__bind=function(fn,me){return function(){return fn.apply(me,arguments)}};libr=angular.module("libr.services.douban",[]),DoubanService=function(){function DoubanService($http,Constant,LocalStorageUtils){this.$http=$http,this.Constant=Constant,this.LocalStorageUtils=LocalStorageUtils,this.submitUser=__bind(this.submitUser,this)}return DoubanService.$inject=["$http","Constant","LocalStorageUtils"],DoubanService.prototype.userInfo=function(user,callback,error){return this.$http({url:"http://api.douban.com/v2/user/"+user,method:"GET",timeout:1e4,cache:!0}).success(function(data,status){return 200===status?callback(data):error(data)}).error(function(data){return error(data)})},DoubanService.prototype.bookDetail=function(isbn,callback,error){return this.$http({url:"https://api.douban.com/v2/book/isbn/"+isbn,method:"GET",timeout:1e4,cache:!0}).success(function(data,status){return 200===status?callback(data):error(data)}).error(function(data){return error(data)})},DoubanService.prototype.submitUser=function(user,callback,error){var email,token,userId;return email=localStorage.getItem("email"),token=localStorage.getItem("token"),userId=this.LocalStorageUtils.getUserId(),this.$http({url:""+this.Constant.baseUrl+"/users/"+userId+"/link/douban/"+user+"?user_email="+email+"&user_token="+token,method:"POST",timeout:1e4}).success(function(data){return callback(data)}).error(function(data){return error(data)})},DoubanService}(),libr.service("DoubanService",DoubanService)}).call(this); +(function(){var GeolocationService,libr,__bind=function(fn,me){return function(){return fn.apply(me,arguments)}};libr=angular.module("libr.services.geolocation",[]),GeolocationService=function(){function GeolocationService($http,Constant){this.$http=$http,this.Constant=Constant,this.getDetailAddress=__bind(this.getDetailAddress,this)}var getLocation,onError,onSuccess;return GeolocationService.$inject=["$http","Constant"],onSuccess=function(position){return alert("lat"+position.coords.latitude),{Latitude:position.coords.latitude,Longitude:position.coords.longitude,Altitude:position.coords.altitude,Accuracy:position.coords.accuracy,"Altitude Accuracy":position.coords.altitudeAccuracy,Heading:position.coords.heading,Speed:position.coords.speed,Timestamp:position.timestamp}},onError=function(error){throw"code: "+error.code+" \n message: "+error.message},GeolocationService.prototype.getCurrentLocation=function(callback,error){return navigator.geolocation.getCurrentPosition(callback,error)},GeolocationService.prototype.getDetailAddress=function(callback){var baseUrl;return baseUrl=this.Constant.baseUrl+"/locations/detail",this.getCurrentLocation(function(_this){return function(position){return _this.$http({url:""+baseUrl+"?lat="+position.coords.latitude+"&lng="+position.coords.longitude,cache:!0,method:"GET"}).success(function(data){return callback(data)})}}(this),function(error){throw Error(error)})},GeolocationService.prototype.getLocations=function(callback,error){var baseUrl,email,token;return baseUrl=this.Constant.baseUrl+"/locations",email=localStorage.getItem("email"),token=localStorage.getItem("token"),this.$http({url:""+baseUrl+"?user_email="+email+"&user_token="+token,method:"GET",cache:!1}).success(function(data){return callback(data)}).error(function(){throw Error(error)})},GeolocationService.prototype.createLocation=function(callback){var baseUrl,email,location,token;return baseUrl=this.Constant.baseUrl+"/locations",location=getLocation(),email=localStorage.getItem("email"),token=localStorage.getItem("token"),this.$http({method:"POST",url:baseUrl+("?user_email="+email+"&user_token="+token),data:"address="+location.address+"&lat="+location.lat+"&lng="+location.lng,headers:{"Content-Type":"application/x-www-form-urlencoded"}}).success(function(data){return callback(data)})},GeolocationService.prototype.deleteLocation=function(item,callback){var baseUrl,email,token;return baseUrl=this.Constant.baseUrl+"/locations",email=localStorage.getItem("email"),token=localStorage.getItem("token"),this.$http({method:"DELETE",url:baseUrl+("?user_email="+email+"&user_token="+token+"&id="+item.id),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).success(function(data){return console.log("=====",data),callback(data)})},getLocation=function(){var location;return location={},location.address=localStorage.getItem("cur_address_detail"),location.lat=localStorage.getItem("cur_lat"),location.lng=localStorage.getItem("cur_lng"),location},GeolocationService}(),libr.service("GeolocationService",GeolocationService)}).call(this); +(function(){var RecommendService,libr,__bind=function(fn,me){return function(){return fn.apply(me,arguments)}};libr=angular.module("libr.services.recommend",[]),RecommendService=function(){function RecommendService(GeolocationService,$http,Constant){this.GeolocationService=GeolocationService,this.$http=$http,this.Constant=Constant,this.changeRecommendAction=__bind(this.changeRecommendAction,this),this.popularBooksAroundMe=__bind(this.popularBooksAroundMe,this)}return RecommendService.$injector=["GeolocationService","$http","Constant"],RecommendService.prototype.getActionSheetList=function(){var actionList;return actionList=[],actionList.push({text:"随便看看吧"}),actionList.push({text:"你可能喜欢的书"}),this.GeolocationService.getLocations(function(){return function(locations){var locationIds;return locationIds=[],locations.map(function(location){return locationIds.push(location.id),location={text:""+location.address+"附近流行的书"},actionList.push(location)}),localStorage.setItem("recommend_action_sheet_arr",JSON.stringify(locationIds)),localStorage.setItem("recommend_action_sheet_full_arr",JSON.stringify(actionList))}}(this)),actionList},RecommendService.prototype.popularBooksForMe=function(callback,error){var email,token;return email=localStorage.getItem("email"),token=localStorage.getItem("token"),this.$http({url:this.Constant.baseUrl+("/recommend/me?user_email="+email+"&user_token="+token),method:"GET",timeout:15e3}).success(function(data){return callback(data)}).error(function(data){return error(data)})},RecommendService.prototype.randomBooks=function(callback,error){var email,token;return email=localStorage.getItem("email"),token=localStorage.getItem("token"),this.$http({url:this.Constant.baseUrl+("/recommend/random?user_email="+email+"&user_token="+token),method:"GET",timeout:15e3,cache:!1}).success(function(data){return callback(data)}).error(function(data){return error(data)})},RecommendService.prototype.popularBooksAroundMe=function(locationId,callback,error){var email,token;return email=localStorage.getItem("email"),token=localStorage.getItem("token"),this.$http({url:this.Constant.baseUrl+("/recommend/locations/"+locationId+"?user_email="+email+"&user_token="+token),method:"GET",timeout:15e3,cache:!0}).success(function(data){return console.log("数据",data),callback(data)}).error(function(data){return error(data)})},RecommendService.prototype.changeRecommendAction=function(index,callback,error){var locations;return console.log("index====",index),0===index?this.randomBooks(callback,error):1===index?this.popularBooksForMe(callback,error):(locations=JSON.parse(localStorage.getItem("recommend_action_sheet_arr")),console.log(locations[index-2],"index......"),this.popularBooksAroundMe(locations[index-2],function(result){return console.log("callback....",result),callback(result)},function(errorMessage){return error(errorMessage)}))},RecommendService}(),libr.service("RecommendService",RecommendService)}).call(this); +(function(){var ScanService,libr;libr=angular.module("libr.services.scan",[]),ScanService=function(){function ScanService(Books){this.Books=Books}return ScanService.$inject=["Books"],ScanService.prototype.scan=function(callback,errorCallback){return navigator.notification.vibrate(50),cordova.plugins.barcodeScanner.scan(function(_this){return function(result){return console.log("got scan result",result),1!==result.cancelled?"EAN_13"!==result.format?(console.log("条码不匹配"),void errorCallback("条形码类型错误,请确认所扫为书籍,并更换角度")):_this.Books.save({isbn:result.text},null,function(data){return console.log("get server response"),"error"===data.status?errorCallback(data.message):callback(data)},function(error){return errorCallback("添加图书失败"+error.data.message)}):void 0}}(this),function(error){return errorCallback("扫描图书失败:"+error+" ")})},ScanService}(),libr.service("ScanService",ScanService)}).call(this); +(function(){var BookDetailController,libr,__bind=function(fn,me){return function(){return fn.apply(me,arguments)}};libr=angular.module("libr.controllers",["ionic"]),BookDetailController=function(){function BookDetailController($scope,$stateParams,Books,$window,$ionicModal,Comments,DoubanService,$ionicActionSheet){this.$scope=$scope,this.$stateParams=$stateParams,this.Books=Books,this.$window=$window,this.$ionicModal=$ionicModal,this.Comments=Comments,this.DoubanService=DoubanService,this.$ionicActionSheet=$ionicActionSheet,this.swipeRight=__bind(this.swipeRight,this),this.closeShare=__bind(this.closeShare,this),this.goShare=__bind(this.goShare,this),this.back=__bind(this.back,this),this.doComment=__bind(this.doComment,this),this.closeCommentDialog=__bind(this.closeCommentDialog,this),this.openCommentDialog=__bind(this.openCommentDialog,this),this.$scope.openDialog=this.openCommentDialog,this.$scope.closeDialog=this.closeCommentDialog,this.$scope.doComment=this.doComment,this.$scope.back=this.back,this.$scope.goShare=this.goShare,this.$scope.closeShare=this.closeShare,this.$scope.swipeRight=this.swipeRight,this.$ionicModal.fromTemplateUrl("templates/modal/comment.html",function(_this){return function(modal){return _this.$scope.modal=modal}}(this),{scope:this.$scope,animation:"slide-in-up"}),this.$ionicModal.fromTemplateUrl("templates/modal/share.html",function(_this){return function(modal){return _this.$scope.shareModal=modal}}(this),{scope:this.$scope,animation:"slide-in-up"}),this.Books.get({book_id:this.$stateParams.isbn},function(_this){return function(result){return _this.$scope.book=result,_this.$scope.usersAccount=result.users.length,_this.$scope.bookName=_this.$scope.book.name,_this.Comments.query({book_id:result.id},function(data){return console.log(data,"!!!!!"),_this.$scope.comments=data}),_this.DoubanService.bookDetail(result.isbn,function(data){return console.log(data),_this.$scope.bookDetail=data},function(error){return console.log("error",error)})}}(this)),this.$scope.$on("$destroy",function(_this){return function(){return _this.$scope.modal.remove()}}(this))}return BookDetailController.$inject=["$scope","$stateParams","Books","$window","$ionicModal","Comments","DoubanService","$ionicActionSheet"],BookDetailController.prototype.openCommentDialog=function(){return this.$scope.modal.show()},BookDetailController.prototype.closeCommentDialog=function(){return this.$scope.modal.hide()},BookDetailController.prototype.doComment=function(){var text;return text=angular.element(document.getElementById("comment")).val(),""===text.trim()?(alert("请输入有效字符"),!1):this.Comments.save({book_id:this.$scope.book.id,content:text},null,function(_this){return function(data){return null===data.id?alert("添加图书失败"):(console.log("成功。。。。。。。"),_this.$scope.comments.push(data),_this.closeCommentDialog())}}(this))},BookDetailController.prototype.back=function(){return this.$window.history.back()},BookDetailController.prototype.goShare=function(){return this.$scope.shareModal.show()},BookDetailController.prototype.closeShare=function(){return this.$scope.shareModal.hide()},BookDetailController.prototype.swipeRight=function(){return this.$window.history.back(),console.log("swipe right..")},BookDetailController}(),libr.controller("BookDetailController",BookDetailController)}).call(this); +(function(){var BooksController,libr,__bind=function(fn,me){return function(){return fn.apply(me,arguments)}};libr=angular.module("libr.controllers.books",["ionic"]),BooksController=function(){function BooksController($scope,Books,ScanService,$ionicModal,DoubanService,IonicUtils,LocalStorageUtils){var currentPage;this.$scope=$scope,this.Books=Books,this.ScanService=ScanService,this.$ionicModal=$ionicModal,this.DoubanService=DoubanService,this.IonicUtils=IonicUtils,this.LocalStorageUtils=LocalStorageUtils,this.submitDoubanUser=__bind(this.submitDoubanUser,this),this.scanBooks=__bind(this.scanBooks,this),this.searchDoubanUser=__bind(this.searchDoubanUser,this),this.closeDialog=__bind(this.closeDialog,this),this.loadMore=__bind(this.loadMore,this),this.refresh=__bind(this.refresh,this),currentPage=localStorage.setItem("user_books_current_page",0),this.$scope.books=[],this.$scope.moreItemsAvailable=!0,this.$scope.submitAllowed=!1,this.$ionicModal.fromTemplateUrl("templates/modal/import_books.html",function(_this){return function(modal){return _this.$scope.modal=modal}}(this),{scope:this.$scope,animation:"slide-in-up"}),this.$scope.data={isLoading:!1,text:null},this.IonicUtils.initCustomLoading(this.$scope),this.$scope.onRefresh=this.refresh,this.$scope.loadMore=this.loadMore,this.$scope.closeDialog=this.closeDialog,this.$scope.searchDoubanUser=this.searchDoubanUser,this.$scope.scanBooks=this.scanBooks,this.$scope.submitDoubanUser=this.submitDoubanUser,this.$scope.doubanInputDisabled=null!==this.LocalStorageUtils.getDoubanUser(),this.$scope.doubanUsername=this.LocalStorageUtils.getDoubanUser()}return BooksController.$inject=["$scope","Books","ScanService","$ionicModal","DoubanService","IonicUtils","LocalStorageUtils"],BooksController.prototype.refresh=function(){var afterBookId;return afterBookId=localStorage.getItem("user_max_book_id"),this.Books.fetchNew({afterId:afterBookId},function(_this){return function(data){return _this.$scope.$broadcast("scroll.refreshComplete"),0!==data.books.length?(localStorage.setItem("user_max_book_id",data.books[0].id),data.books.forEach(function(item){return _this.$scope.books.push(item)})):void 0}}(this))},BooksController.prototype.loadMore=function(){var currentPage,maxPage;return currentPage=localStorage.getItem("user_books_current_page"),maxPage=localStorage.getItem("user_books_max_page"),maxPage=parseInt(maxPage),currentPage=parseInt(currentPage),currentPage>=maxPage?(this.$scope.$broadcast("scroll.infiniteScrollComplete"),this.$scope.moreItemsAvailable=!1):this.Books.query({page:currentPage+1},function(_this){return function(data){return 0!==data.books.length?(localStorage.setItem("user_max_book_id",data.books[0].id),localStorage.setItem("user_books_current_page",data.current_page),localStorage.setItem("user_books_max_page",data.total_page),data.books.forEach(function(item){return _this.$scope.books.push(item)})):_this.$scope.moreItemsAvailable=!1,_this.$scope.$broadcast("scroll.infiniteScrollComplete")}}(this))},BooksController.prototype.closeDialog=function(){return this.$scope.modal.hide()},BooksController.prototype.searchDoubanUser=function(user){return console.log(user,"..."),void 0===user||""===user.trim()?this.IonicUtils.showLoading(this.$scope,"请输入有效昵称"):this.DoubanService.userInfo(user,function(_this){return function(data){return _this.$scope.resultEnabled=!0,_this.$scope.submitAllowed=!0,_this.$scope.doubanUser=data}}(this),function(_this){return function(error){return _this.IonicUtils.showLoading(_this.$scope,"查找豆瓣用户失败,请稍后再试"),console.log(error),_this.$scope.resultEnabled=!1,_this.$scope.submitAllowed=!1}}(this))},BooksController.prototype.scanBooks=function(){return this.ScanService.scan(function(_this){return function(result){return navigator.notification.alert("添加图书《"+result.book.name+"》成功",null,"Libr","确定"),_this.$scope.books.unshift(result.book)}}(this),function(_this){return function(msg){return console.log("trying to show loading...",msg),_this.IonicUtils.showLoading(_this.$scope,msg),_this.$scope.$apply(),console.log("applied")}}(this))},BooksController.prototype.submitDoubanUser=function(){var username;return username=angular.element(document.getElementById("douban-username")),username=username.val(),this.DoubanService.submitUser(username,function(_this){return function(){return _this.$scope.doubanInputDisabled=!0,_this.LocalStorageUtils.storeDoubanUser(username),alert("成功绑定豆瓣用户,请返回,系统将自动为你导入豆瓣图书")}}(this),function(_this){return function(){return _this.IonicUtils.showLoading(_this.$scope,"绑定豆瓣用户失败,请稍后再试")}}(this))},BooksController}(),libr.controller("BooksController",BooksController)}).call(this); +(function(){var HomeController,libr,__bind=function(fn,me){return function(){return fn.apply(me,arguments)}};libr=angular.module("libr.controllers.home",["ionic"]),HomeController=function(){function HomeController($scope,$location,ScanService,$ionicLoading,$ionicActionSheet,RecommendService,ErrorHandler,LocalStorageUtils){return this.$scope=$scope,this.$location=$location,this.$ionicLoading=$ionicLoading,this.$ionicActionSheet=$ionicActionSheet,this.RecommendService=RecommendService,this.ErrorHandler=ErrorHandler,this.LocalStorageUtils=LocalStorageUtils,this.changeRecommend=__bind(this.changeRecommend,this),this.showRecommendActionSheet=__bind(this.showRecommendActionSheet,this),this.$scope.showRecommendActionSheet=this.showRecommendActionSheet,this.LocalStorageUtils.isUserLogedIn()?(showLoading(this.$scope,this.$ionicLoading),this.$scope.title="随便看看吧",null===localStorage.getItem("home.books")?this.RecommendService.randomBooks(function(_this){return function(result){return _this.$scope.books=result,localStorage.setItem("home.books",JSON.stringify(result)),_this.$ionicLoading.hide()}}(this),function(_this){return function(){return _this.ErrorHandler.loadingHandler(_this.$scope,null)}}(this)):(this.$scope.books=JSON.parse(localStorage.getItem("home.books")),this.$ionicLoading.hide()),void(this.$scope.changeRecommend=this.changeRecommend)):void this.$location.path("/tab/settings")}var showLoading;return HomeController.$inject=["$scope","$location","ScanService","$ionicLoading","$ionicActionSheet","RecommendService","ErrorHandler","LocalStorageUtils"],showLoading=function($scope,$ionicLoading){return $scope.loading=$ionicLoading.show({content:"加载中",animation:"fade-in",showBackdrop:!0,maxWidth:200,showDelay:500})},HomeController.prototype.showRecommendActionSheet=function(){return this.$ionicActionSheet.show({titleText:"Libr 为你推荐",buttons:this.RecommendService.getActionSheetList(),cancelText:"取消",cancel:function(){return console.log("CANCELLED")},buttonClicked:function(_this){return function(index){return console.log(""+index+" has been taped"),_this.changeRecommend(index),!0}}(this)})},HomeController.prototype.changeRecommend=function(index){var msg;return msg="喔,看来附近还没有好书推荐,快去推荐你的朋友也来使用吧!",this.RecommendService.changeRecommendAction(index,function(_this){return function(result){var listArray;return 0===result.length?navigator.notification.alert(msg,null,"libr","确定"):(_this.$scope.books=result,localStorage.setItem("home.books",JSON.stringify(result)),listArray=JSON.parse(localStorage.getItem("recommend_action_sheet_full_arr")),console.log("=========="),console.log(listArray,index),_this.$scope.title=listArray[index].text)}}(this),function(_this){return function(){return _this.ErrorHandler.whenError(null)}}(this))},HomeController}(),libr.controller("HomeCtrl",HomeController)}).call(this); +(function(){var LocationController,libr,__bind=function(fn,me){return function(){return fn.apply(me,arguments)}};libr=angular.module("libr.controllers.location",["ionic"]),LocationController=function(){function LocationController($scope,$location,GeolocationService,IonicUtils){this.$scope=$scope,this.$location=$location,this.GeolocationService=GeolocationService,this.IonicUtils=IonicUtils,this.deleteItem=__bind(this.deleteItem,this),this.addLocation=__bind(this.addLocation,this),this.$scope.addLocation=this.addLocation,this.$scope.itemButtons=[{text:"删除",type:"button-assertive",onTap:function(_this){return function(item){return _this.GeolocationService.deleteLocation(item,function(){return _this.$scope.locations.splice(_this.$scope.locations.indexOf(item),1)})}}(this)}],this.GeolocationService.getLocations(function(_this){return function(locations){return _this.$scope.locations=locations}}(this)),this.GeolocationService.getDetailAddress(function(_this){return function(position){return localStorage.setItem("cur_address_detail",position.result.formatted_address),localStorage.setItem("cur_lat",position.result.location.lat),localStorage.setItem("cur_lng",position.result.location.lng),_this.$scope.address=position.result.formatted_address}}(this)),this.IonicUtils.initCustomLoading(this.$scope),this.$scope.deleteItem=this.deleteItem}return LocationController.$inject=["$scope","$location","GeolocationService","IonicUtils"],LocationController.prototype.addLocation=function(){return this.$scope.locations.length>=3?this.IonicUtils.showLoading(this.$scope,"只能创建3个常用的地址,请先删除部分再添加"):null===localStorage.getItem("cur_address_detail")||void 0===localStorage.getItem("cur_address_detail")?this.IonicUtils.showLoading(this.$scope,"定位成功后方可添加常用地址"):null===this.$scope.address||""===this.$scope.address?this.IonicUtils.showLoading(this.$scope,"定位成功后方可添加常用地址"):this.GeolocationService.createLocation(function(_this){return function(result){return _this.$scope.locations.push(result)}}(this))},LocationController.prototype.deleteItem=function(item){return this.GeolocationService.deleteLocation(item,function(_this){return function(){return _this.$scope.locations.splice(_this.$scope.locations.indexOf(item),1)}}(this))},LocationController}(),libr.controller("LocationController",LocationController)}).call(this); +(function(){var LoginController,libr,__bind=function(fn,me){return function(){return fn.apply(me,arguments)}};libr=angular.module("libr.controllers.login",["ionic"]),LoginController=function(){function LoginController($scope,AuthService,$state,$ionicModal,IonicUtils,LocalStorageUtils){this.$scope=$scope,this.AuthService=AuthService,this.$state=$state,this.$ionicModal=$ionicModal,this.IonicUtils=IonicUtils,this.LocalStorageUtils=LocalStorageUtils,this.closeDialog=__bind(this.closeDialog,this),this.registerUser=__bind(this.registerUser,this),this.registerForm=__bind(this.registerForm,this),this.login=__bind(this.login,this),this.LocalStorageUtils.isUserLogedIn()&&this.$state.go("tab.home"),this.$scope.login=this.login,this.$scope.registerForm=this.registerForm,this.$scope.registerUser=this.registerUser,this.$scope.closeDialog=this.closeDialog,this.$ionicModal.fromTemplateUrl("templates/modal/registration.html",function(_this){return function(modal){return _this.$scope.modal=modal}}(this),{scope:this.$scope,animation:"slide-in-up"}),this.IonicUtils.initCustomLoading(this.$scope)}return LoginController.$inject=["$scope","AuthService","$state","$ionicModal","IonicUtils","LocalStorageUtils"],LoginController.prototype.login=function(user){return user&&""!==user.email&&""!==user.password&&void 0!==user.email&&void 0!==user.password?this.AuthService.login(user,function(_this){return function(result){return localStorage.setItem("token",result.user.token),localStorage.setItem("avatar",result.user.avatar),localStorage.setItem("username",result.user.name),localStorage.setItem("email",user.email),localStorage.setItem("user",JSON.stringify(result.user)),_this.$state.go("tab.home")}}(this),function(_this){return function(data){return _this.IonicUtils.showLoading(_this.$scope,data)}}(this)):void this.IonicUtils.showLoading(this.$scope,"请输入有效的用户名和密码")},LoginController.prototype.registerForm=function(){return this.$scope.modal.show()},LoginController.prototype.registerUser=function(user){return user&&""!==user.email&&""!==user.password&&void 0!==user.email&&void 0!==user.password?this.AuthService.register(user,function(_this){return function(result,status){return 201===status?(alert("注册成功,请返回登录"),_this.$scope.modal.hide()):_this.IonicUtils.showLoading(_this.$scope,"注册失败,请确认是否输入正确,并重试")}}(this),function(_this){return function(error){return _this.IonicUtils.showLoading(_this.$scope,"注册失败,请确认是否输入正确,并重试"),console.log("registerError",error)}}(this)):void this.IonicUtils.showLoading(this.$scope,"用户名或密码错误,请重试")},LoginController.prototype.closeDialog=function(){return this.$scope.modal.hide()},LoginController}(),libr.controller("LoginController",LoginController)}).call(this); +(function(){var MainController,libr;libr=angular.module("libr.controllers.main",["ionic"]),MainController=function(){function MainController($scope,$location,$ionicModal,$state){this.$scope=$scope,this.$location=$location,this.$ionicModal=$ionicModal,this.$state=$state}return MainController.$inject=["$scope","$location","$ionicModal","$state"],MainController}(),libr.controller("MainCtrl",MainController)}).call(this); +(function(){var SettingsController,libr,__bind=function(fn,me){return function(){return fn.apply(me,arguments)}};libr=angular.module("libr.controllers.settings",["ionic"]),SettingsController=function(){function SettingsController($scope,$ionicModal,AuthService,$state,$cacheFactory,LocalStorageUtils){this.$scope=$scope,this.$ionicModal=$ionicModal,this.AuthService=AuthService,this.$state=$state,this.$cacheFactory=$cacheFactory,this.LocalStorageUtils=LocalStorageUtils,this.logout=__bind(this.logout,this),this.$scope.logout=this.logout,this.$scope.feedback=this.feedback,this.$scope.showMe=this.showMe,this.$scope.isLogedIn=isUserLogedIn(this.LocalStorageUtils)?!0:!1,this.$scope.avatar=this.LocalStorageUtils.getUserAvatar(),this.$scope.username=this.LocalStorageUtils.getUserName()}var isUserLogedIn;return SettingsController.$inject=["$scope","$ionicModal","AuthService","$state","$cacheFactory","LocalStorageUtils"],SettingsController.prototype.logout=function(){var httpDefaultCache;return localStorage.clear(),httpDefaultCache=this.$cacheFactory.get("$http"),console.log("cacheFactory",httpDefaultCache),httpDefaultCache.removeAll(),this.$state.go("login")},SettingsController.prototype.feedback=function(){return window.open("https://jinshuju.net/f/F96z3s","_blank","location=no")},SettingsController.prototype.showMe=function(){return window.open("http://librme.com","_blank","location=no")},isUserLogedIn=function(localStorageUtils){return null!==localStorageUtils.getUserToken()&&null!==localStorageUtils.getUserEmail()?!0:!1},SettingsController}(),libr.controller("SettingsController",SettingsController)}).call(this); +(function(){var Constant,libr;libr=angular.module("libr.constant",[]),Constant={},Constant.baseUrl="http://librme.com/api/v1",libr.constant("Constant",Constant)}).call(this); \ No newline at end of file diff --git a/platforms/ios/www/js/umeng/social.umeng.js b/platforms/ios/www/js/umeng/social.umeng.js index ea38fda..cbfc6eb 100644 --- a/platforms/ios/www/js/umeng/social.umeng.js +++ b/platforms/ios/www/js/umeng/social.umeng.js @@ -203,13 +203,14 @@ c.name = $.fn.umshare.defaults.data.platform[plat].name; } var sharePanel = function (plat, c) { - var panel = $('
\ -
\ - \ - 分享到' + c.name + '\ - \ -
\ + var panel = $('
\ + \ +

分享到' + c.name + '

\ + \ +
\ +
\ \ +
\
\ \ \ diff --git a/platforms/ios/www/templates/book-detail.html b/platforms/ios/www/templates/book-detail.html index addeded..4b1b2d2 100644 --- a/platforms/ios/www/templates/book-detail.html +++ b/platforms/ios/www/templates/book-detail.html @@ -3,7 +3,7 @@ - +

{{book.name}}

@@ -27,7 +27,7 @@ 评论 - + 分享 diff --git a/templates/book-detail.html b/templates/book-detail.html index addeded..9cf39cd 100644 --- a/templates/book-detail.html +++ b/templates/book-detail.html @@ -3,7 +3,7 @@ - +

{{book.name}}

@@ -27,7 +27,7 @@ 评论 - + 分享 diff --git a/templates/modal/share.html b/templates/modal/share.html new file mode 100644 index 0000000..cf65dc1 --- /dev/null +++ b/templates/modal/share.html @@ -0,0 +1,16 @@ +