From 67c93c4b68538fd3a2ffe80d868eb1cc8c562e5a Mon Sep 17 00:00:00 2001 From: luchenqun Date: Sun, 13 Nov 2016 21:48:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E8=83=BD=E7=94=A8=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/css/externe/toastr.min.css | 1 + public/css/style.css | 9 ++ public/images/detail-hover.png | Bin 0 -> 786 bytes public/images/detail.png | Bin 0 -> 624 bytes public/index.html | 86 +++++------ public/scripts/app-angular.js | 9 +- .../controllers/bookmarks-controller.js | 131 ++++++++--------- public/scripts/controllers/edit-controller.js | 138 +++++++----------- public/scripts/controllers/home-controller.js | 33 ++--- .../scripts/controllers/login-controller.js | 20 +-- .../scripts/controllers/menus-controller.js | 107 ++++++++------ public/scripts/controllers/tags-controller.js | 25 ++-- .../element-render-finish-directive.js | 12 ++ public/scripts/externe/toastr.min.js | 2 + public/scripts/services/bookmark-service.js | 92 ++++-------- public/views/bookmarks.html | 98 ++++++++----- public/views/edit.html | 2 +- public/views/menus.html | 30 ++-- routes/api.js | 38 ++++- 19 files changed, 417 insertions(+), 416 deletions(-) create mode 100644 public/css/externe/toastr.min.css create mode 100644 public/images/detail-hover.png create mode 100644 public/images/detail.png create mode 100644 public/scripts/directives/element-render-finish-directive.js create mode 100644 public/scripts/externe/toastr.min.js diff --git a/public/css/externe/toastr.min.css b/public/css/externe/toastr.min.css new file mode 100644 index 0000000..d109d13 --- /dev/null +++ b/public/css/externe/toastr.min.css @@ -0,0 +1 @@ +.toast-title{font-weight:700}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#fff;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}button.toast-close-button{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999;pointer-events:none}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-position:15px center;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}#toast-container>:hover{-moz-box-shadow:0 0 12px #000;-webkit-box-shadow:0 0 12px #000;box-shadow:0 0 12px #000;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=)!important}#toast-container>.toast-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=)!important}#toast-container>.toast-success{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==)!important}#toast-container>.toast-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=)!important}#toast-container.toast-bottom-center>div,#toast-container.toast-top-center>div{width:300px;margin-left:auto;margin-right:auto}#toast-container.toast-bottom-full-width>div,#toast-container.toast-top-full-width>div{width:96%;margin-left:auto;margin-right:auto}.toast{background-color:#030303}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@media all and (max-width:240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width:241px) and (max-width:480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width:481px) and (max-width:768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}} \ No newline at end of file diff --git a/public/css/style.css b/public/css/style.css index ec83843..4430de0 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -53,3 +53,12 @@ body { .js-navigate-bookmark a{ color:#212121; } + +.ui.menu .selected.item { + background: rgba(1, 1, 1, 0.05); +} + +img.operator{ + width:16px; + height:16px +} diff --git a/public/images/detail-hover.png b/public/images/detail-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..f23ae1f0d529ba01c1ffdcec5d5caaab8bfede64 GIT binary patch literal 786 zcmV+t1MU2YP)lEAW{X!1we2Gb~=!E$pR*4 z9-knD;DLN%HXL}od3WyI`9OH#i(dGAbOK;~Wy?tLo&XEL0O?(>2*8GcC^2voeI|L< zy0ie;9#28IB4Ajt`jkB%m)|q+NQ7B%NjGgM8UcvMW`ZSvab{@Ej8y{okxP$dOlfaUSnAp9U;z>K>Dm_;u6Z63+G+6&Bx@P>g+!g#lDZ!G{Z zU=nV{7&GRfOEaB=tKZlj3y3RuA2TL(Aa(#`Lc7g8{}8(Lz0cwK9?=gGz9}XQOse77 z0bqOVE9x{nx0XD>Zw#t>Xkfw*9GaBZw*VAq8F!&ex$tTUki(5Xc#y^92&3qNHcd>G z9NS{G3P955WM90hsy9jHKjI?{+W_Rck`xUc8s)YM09nfY1h5Vql2mHFR0yOBwRm6B zg9>kK;564l0l;4HH31))aj@|AA-BKqCt@ti`uYbT6JN|2wTY_mXu%Ny95{5^N>^GR zh9==b>PoJ$G6Q1lb>NUzd6omu7R++*u_www7l(;4X8a0Ws@D6x&h-Q!*>aqN-Ua|{ zLWf@I(0Kp@^#JTNp8q8T4BUqfsaAfF2)l-$O@y7(uq%MZH0)D|Is?d4y{-^RJZz7( zOL12b7Nxk7X|>G=z)shy%Z#%Hs|FM}q)PI^%_w6*za4w5YDQb-%m9*y`HM^o zGI||9M_0G!HCPWi4W8P&bHPcy8h8pqw zywgxx4u=urT6%c)P5=p*b=_EQk{ZWlmQd4FHcd~PG@{k{)Q?FzW}lR)mO(Qsr(0Pd zO-;Vn8ECZtY%!8x3Wf#3KzfJr6u1W~Fn(fU_3Xc9eFUhxrxOFZM!S6X7X?PRFiXbn QEdT%j07*qoM6N<$f^+6ry8r+H literal 0 HcmV?d00001 diff --git a/public/images/detail.png b/public/images/detail.png new file mode 100644 index 0000000000000000000000000000000000000000..d3ab7f8a7ccb16eaabfdb76a11ae2ac1f57e9145 GIT binary patch literal 624 zcmV-$0+0QPP)CSE(&_r~CEm zH{ETd1>0!B@zn}oQ_`U%p3C+mhgV5o_Pn!aRc^HajwGE+T8q4X+wV)!-#;W>NCHgO zN&v|8O45#bd60B3=}8hnLIWJ%?MvFT7kqb?V1`w1E+wB9<2LRd$j>wKB-42NyoIyV~#snY`?9}=IKr__UWDZDv zVm+joz&9Y0030nfcj2W7An?1rT(=B!WO-s8R$~UpWHnW<9@RUY+yMGO&Rkc-0Pw^@ z0M!0P5?76@RAaD!m4dr3XJN~=5CXWCbTTL5rNEzBUzzGF1mNhPrz9#5KnZ>%kx`9N zDs(f|SO@@T8&O$GP6-~DvgQo2CZIzAIQ#7B_c@0{0H7CU$0T+PfR`(!6oU721@NCG zc=J*IR}r={kQL#OYuE}Pdku#)qE-OeMufInS~1_Z0Pt4axoPn%@L@DFwGubOTd=p} z+y$x{MmT60$G#($I;SrtGgCITkN|>aG0%mB1s0ukz}Bo}pl5gtu|X@D2SPM#z%T(L zfM{7t*#+@I=8X5=vo&iu{ecw?^Oc;Pp>Hi`9VeJ?Q`8(`CpA(6;B4RoI@y*&OWgvl z8s8Te+FAe}6cGW&|21QLWAt{wKr<|LHs73hS^*3ZV)o3!0sI08V~in@s=k~60000< KMNUMnLSTXeMF61y literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html index 6940e5c..3ad8e2c 100644 --- a/public/index.html +++ b/public/index.html @@ -1,47 +1,47 @@ - - - - - - - 我的书签 - - - - - - - -
- - -
-
-
+ + + + + + 我的书签 + + + + + + + +
+ + +
+
+
+
+
+ +
-
- - -
- - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/public/scripts/app-angular.js b/public/scripts/app-angular.js index 50054eb..f63b5e2 100644 --- a/public/scripts/app-angular.js +++ b/public/scripts/app-angular.js @@ -1,6 +1,7 @@ var app = angular.module('bookmarkApp', ['ui.router']); -app.config(function($stateProvider, $urlRouterProvider) { +app.config(function($stateProvider, $urlRouterProvider, $httpProvider) { + $httpProvider.interceptors.push('httpInterceptor'); $urlRouterProvider.otherwise("/"); @@ -11,7 +12,7 @@ app.config(function($stateProvider, $urlRouterProvider) { params: { foo: null, bar: null, - showStyle: 'table', + showStyle: 'navigate', }, controller: 'bookmarksCtr' }) @@ -48,7 +49,3 @@ app.config(function($stateProvider, $urlRouterProvider) { controller: 'homeCtr' }); }); - -app.config(function ($httpProvider) { - $httpProvider.interceptors.push('TokenInterceptor'); -}); diff --git a/public/scripts/controllers/bookmarks-controller.js b/public/scripts/controllers/bookmarks-controller.js index 4b5f992..45b52fb 100644 --- a/public/scripts/controllers/bookmarks-controller.js +++ b/public/scripts/controllers/bookmarks-controller.js @@ -1,56 +1,57 @@ -app.controller('bookmarksCtr', ['$scope', '$state', '$stateParams', '$filter', '$window', 'bookmarkService', 'pubSubService', function($scope, $state, $stateParams, $filter, $window, bookmarkService, pubSubService) { +app.controller('bookmarksCtr', ['$scope', '$state', '$stateParams', '$filter', '$window', '$timeout', 'bookmarkService', 'pubSubService', function($scope, $state, $stateParams, $filter, $window, $timeout, bookmarkService, pubSubService) { console.log("Hello bookmarksCtr...", $stateParams); $scope.bookmarks = []; // 书签数据 - $scope.showSearch = false; // 书签数据 + $scope.showSearch = false; // 搜索对话框 $scope.bookmarkNormalHover = false; $scope.bookmarkEditHover = false; $scope.showStyle = 'navigate'; // 显示风格'navigate', 'card', 'table' $scope.edit = false; - semanticInit(); - var params = { - show: $scope.showStyle, + showStyle: $scope.showStyle, } + getBookmarks(params); $scope.jumpToUrl = function(url, id) { - if(!$scope.edit){ + if (!$scope.edit) { $window.open(url, '_blank'); bookmarkService.clickBookmark({ id: id }); } } - $scope.toggleMode = function(){ - console.log('toggleMode..........'); + $scope.toggleMode = function() { $scope.edit = !$scope.edit }; - $scope.delBookmark = function(bookmarkId){ - var params = { - id:bookmarkId - } - bookmarkService.delBookmark(params).then( - function(data) { - console.log(data); - $("#"+bookmarkId).remove(); - }, - function(data) { - console.log(data); - } - ); + $scope.delBookmark = function(bookmarkId) { + var params = { + id: bookmarkId + } + bookmarkService.delBookmark(params) + .then((data) => $("#" + bookmarkId).remove()) + .catch((err) => { + console.log('delBookmark err ', err) + }); } - $scope.editBookmark = function(bookmarkId){ + $scope.editBookmark = function(bookmarkId) { pubSubService.publish('bookmarksCtr.editBookmark', { 'bookmarkId': bookmarkId }); } - getBookmarks(params); - pubSubService.subscribe('MenuCtr.bookmarks', $scope, function(event, params) { - console.log('subscribe MenuCtr.bookmarks', params); + $scope.detailBookmark = function(bookmarkId) { + + } + + pubSubService.subscribe('MenuCtr.searchDetail', $scope, function(event, params) { + $scope.showSearch = (params && params.showSearch) + }); + pubSubService.subscribe('MenuCtr.updateShowStyle', $scope, function(event, params) { + $scope.showStyle = (params && params.showStyle); getBookmarks(params); }); + pubSubService.subscribe('MenuCtr.searchBookmarks', $scope, function(event, params) { console.log('subscribe MenuCtr.searchBookmarks', params); getBookmarks(params); @@ -62,52 +63,44 @@ app.controller('bookmarksCtr', ['$scope', '$state', '$stateParams', '$filter', ' }); function getBookmarks(params) { - bookmarkService.getBookmarks(params).then( - function(data) { + bookmarkService.getBookmarks(params) + .then((data) => { $scope.bookmarks = data; - pubSubService.publish('loginCtr.login', { - 'login': true, + pubSubService.publish('Common.menuActive', { + login: true, + index: 0 }); - }, - function(data) { - console.log(data); - $state.go('/'); - pubSubService.publish('loginCtr.login', { - 'login': false, - }); - } - ); + }) + .catch((err) => console.log('getBookmarks err', err)); } - function semanticInit() { - setTimeout(() => { - $('.ui.dropdown').dropdown(); - $('.ui.calendar.js-date-begin').calendar({ - type: 'date', - formatter: { - date: function(date, settings) { - if (!date) return ''; - var day = date.getDate(); - var month = date.getMonth() + 1; - var year = date.getFullYear(); - return year + '/' + month + '/' + day; - } - }, - endCalendar: $('.ui.calendar.js-date-end') - }); - $('.ui.calendar.js-date-end').calendar({ - type: 'date', - formatter: { - date: function(date, settings) { - if (!date) return ''; - var day = date.getDate(); - var month = date.getMonth() + 1; - var year = date.getFullYear(); - return year + '/' + month + '/' + day; - } - }, - startCalendar: $('.ui.calendar.js-date-begin') - }); - }, 100); - } + $scope.$on('elementRenderFinished', function(elementRenderFinishedEvent) { + $('.ui.dropdown').dropdown(); + $('.ui.calendar.js-date-begin').calendar({ + type: 'date', + formatter: { + date: function(date, settings) { + if (!date) return ''; + var day = date.getDate(); + var month = date.getMonth() + 1; + var year = date.getFullYear(); + return year + '/' + month + '/' + day; + } + }, + endCalendar: $('.ui.calendar.js-date-end') + }); + $('.ui.calendar.js-date-end').calendar({ + type: 'date', + formatter: { + date: function(date, settings) { + if (!date) return ''; + var day = date.getDate(); + var month = date.getMonth() + 1; + var year = date.getFullYear(); + return year + '/' + month + '/' + day; + } + }, + startCalendar: $('.ui.calendar.js-date-begin') + }); + }); }]); diff --git a/public/scripts/controllers/edit-controller.js b/public/scripts/controllers/edit-controller.js index 773da97..e3292de 100644 --- a/public/scripts/controllers/edit-controller.js +++ b/public/scripts/controllers/edit-controller.js @@ -1,8 +1,7 @@ app.controller('editCtr', ['$scope', '$state', '$timeout', 'bookmarkService', 'pubSubService', function($scope, $state, $timeout, bookmarkService, pubSubService) { + console.log("Hello editCtr"); var maxSelections = 3; - console.log("Hello , editCtr..."); init(); - semanticInit(); $scope.$watch('url', function(newUrl, oldUrl, scope) { $timeout(function() { @@ -14,13 +13,9 @@ app.controller('editCtr', ['$scope', '$state', '$timeout', 'bookmarkService', 'p var params = { url: newUrl, } - bookmarkService.getTitle(params).then( - function(data) { - console.log(JSON.stringify(data)); - $scope.title = data.title; - }, - function(errorMsg) {} - ); + bookmarkService.getTitle(params) + .then((data) => $scope.title = data.title) + .catch((err) => console.log('getTitle err', err)) } } }); @@ -46,16 +41,15 @@ app.controller('editCtr', ['$scope', '$state', '$timeout', 'bookmarkService', 'p } }); - bookmarkService.addTags(params).then( - function(data) { + bookmarkService.addTags(params) + .then((data) => { $scope.tags = data; - console.log(JSON.stringify(data)); - $timeout(function() { + $timeout(() => { + // 将新增加的分类自动添加到下啦列表中 var count = 0; - params.forEach(function(tagName) { - data.forEach(function(tag) { + params.forEach((tagName) => { + data.forEach((tag) => { if (tagName == tag.name) { - console.log(tag.id); if (count < maxSelections) { $('.ui.fluid.search.dropdown').dropdown('set selected', tag.id); } @@ -64,9 +58,8 @@ app.controller('editCtr', ['$scope', '$state', '$timeout', 'bookmarkService', 'p }); }); }); - }, - function(errorMsg) {} - ); + }) + .catch((err) => console.log('addTags err', err)); } $scope.cancel = function() { console.log('Hello , you have click cancel btn......'); @@ -76,9 +69,8 @@ app.controller('editCtr', ['$scope', '$state', '$timeout', 'bookmarkService', 'p init(); } $scope.ok = function() { - console.log('Hello , you have click ok btn......'); var selectedTags = $('.ui.modal.js-add-bookmark .ui.dropdown').dropdown('get value'); - console.log($scope.url, $scope.title, $scope.description, $scope.public, selectedTags); + console.log('Hello ok clicked', $scope.url, $scope.title, $scope.description, $scope.public, selectedTags); $scope.urlError = $scope.url == ''; $scope.titleError = $scope.title == ''; $scope.tagsError = (selectedTags.length == 0 || selectedTags.length > maxSelections); @@ -91,40 +83,19 @@ app.controller('editCtr', ['$scope', '$state', '$timeout', 'bookmarkService', 'p description: $scope.description } if ($scope.add) { - bookmarkService.addBookmark(params).then( - function(data) { - console.log(data); + bookmarkService.addBookmark(params) + .then((data) => { $('.ui.modal.js-add-bookmark').modal('hide'); - $state.go('bookmarks', { - foo: 'i love you', - bar: 'hello world' - }); - pubSubService.publish('EditCtr.inserBookmarsSuccess', { - show: 'navigate' - }); - }, - function(errorMsg) { - console.log(errorMsg); - } - ); + pubSubService.publish('EditCtr.inserBookmarsSuccess', data); + }) + .catch((err) => console.log('addBookmark err', err)); } else { - console.log('updateBookmark...........', params) - bookmarkService.updateBookmark(params).then( - function(data) { - console.log(data); + bookmarkService.updateBookmark(params) + .then((data) => { $('.ui.modal.js-add-bookmark').modal('hide'); - $state.go('bookmarks', { - foo: 'i love you', - bar: 'hello world' - }); - pubSubService.publish('EditCtr.inserBookmarsSuccess', { - show: 'navigate' - }); - }, - function(errorMsg) { - console.log(errorMsg); - } - ); + pubSubService.publish('EditCtr.inserBookmarsSuccess', data); + }) + .catch((err) => console.log('updateBookmark err', err)); } } @@ -149,17 +120,18 @@ app.controller('editCtr', ['$scope', '$state', '$timeout', 'bookmarkService', 'p }).modal('show'); $('.ui.modal.js-add-bookmark .ui.dropdown').dropdown('clear'); $('.ui.modal.js-add-bookmark .ui.dropdown').addClass('loading'); - bookmarkService.getBookmark(params).then( - function(data) { - var bookmark = data.bookmark; - $scope.add = false; + $scope.add = false; + bookmarkService.getBookmark(params) + .then((data) => { + console.log('getBookmark ', data); + var bookmark = data.bookmark; $scope.id = (bookmark && bookmark.id) || ''; $scope.url = (bookmark && bookmark.url) || ''; $scope.title = (bookmark && bookmark.title) || ''; $scope.description = (bookmark && bookmark.description) || ''; - // $scope.newTags = bookmark && bookmark.url && ''; $scope.tags = data.tags; + $scope.public = (bookmark && bookmark.id) || '1'; $timeout(function() { data.bookmarkTags.forEach((tagId) => { @@ -167,44 +139,34 @@ app.controller('editCtr', ['$scope', '$state', '$timeout', 'bookmarkService', 'p }); }); - $scope.public = '1'; - - console.log(data); $('.ui.modal.js-add-bookmark .ui.dropdown').removeClass('loading'); - }, - function(errorMsg) { - console.log(errorMsg); - } - ); + }) + .catch((err) => console.log('updateBookmark err', err)); }); function getTags(params) { - bookmarkService.getTags(params).then( - function(data) { + bookmarkService.getTags(params) + .then((data) => { $scope.tags = data; - semanticInit(); - $('.ui.modal.js-add-bookmark .ui.dropdown').removeClass('loading'); - }, - function(errorMsg) { - console.log(errorMsg); - } - ); + }) + .catch((err) => console.log('getTags err', err)); } - function semanticInit() { - setTimeout(() => { - $('.ui.dropdown').dropdown({ - forceSelection: false, - maxSelections: maxSelections, - onChange: function(value, text, $choice) { - var selectedTags = $('.ui.modal.js-add-bookmark .ui.dropdown').dropdown('get value'); - $timeout(function() { - $scope.tagsError = (selectedTags.length == 0 || selectedTags.length > maxSelections) && ($('.ui.modal.js-add-bookmark').modal('is active')); - }); - } - }); - }, 1000); - } + // 元素构造完成之后,开始使用jquery初始化 + $scope.$on('elementRenderFinished', function(elementRenderFinishedEvent) { + console.log('edit ui dropdown elementRenderFinished') + $('.ui.modal.js-add-bookmark .ui.dropdown').removeClass('loading'); + $('.ui.dropdown').dropdown({ + forceSelection: false, + maxSelections: maxSelections, + onChange: function(value, text, $choice) { + var selectedTags = $('.ui.modal.js-add-bookmark .ui.dropdown').dropdown('get value'); + $timeout(function() { + $scope.tagsError = (selectedTags.length == 0 || selectedTags.length > maxSelections) && ($('.ui.modal.js-add-bookmark').modal('is active')); + }); + } + }); + }); function init() { $scope.add = true; diff --git a/public/scripts/controllers/home-controller.js b/public/scripts/controllers/home-controller.js index 285c7b0..5653a27 100644 --- a/public/scripts/controllers/home-controller.js +++ b/public/scripts/controllers/home-controller.js @@ -1,14 +1,15 @@ app.controller('homeCtr', ['$scope', '$stateParams', '$filter', '$state', '$window', 'bookmarkService', 'pubSubService', function($scope, $stateParams, $filter, $state, $window, bookmarkService, pubSubService) { console.log('Hello homeCtr......'); - var debug = true; + var debug = false; if (debug) { - bookmarkService.login({ + var params = { username: 'luchenqun', - password: 'fendoubuxi', + password: 'fendoubuxi1', autoLogin: true, - }).then( - function(data) { - console.log(data); + }; + + bookmarkService.login(params) + .then((data) => { if (data.logined) { pubSubService.publish('loginCtr.login', { 'login': data.logined, @@ -19,14 +20,11 @@ app.controller('homeCtr', ['$scope', '$stateParams', '$filter', '$state', '$wind } else { console.log('login failed......................') } - }, - function(errorMsg) { - console.log(errorMsg); - } - ); + }) + .catch((err) => console.log('login err', err)); } else { - bookmarkService.autoLogin().then( - function(data) { + bookmarkService.autoLogin() + .then((data) => { if (data.logined || debug) { pubSubService.publish('loginCtr.login', { 'login': debug || data.logined, @@ -35,12 +33,9 @@ app.controller('homeCtr', ['$scope', '$stateParams', '$filter', '$state', '$wind showStyle: 'navigate', }) } else { - console.log('login failed......................') + console.log('autoLogin failed......................') } - }, - function(errorMsg) { - console.log(errorMsg); - } - ); + }) + .catch((err) => console.log('autoLogin err', err)); } }]); diff --git a/public/scripts/controllers/login-controller.js b/public/scripts/controllers/login-controller.js index 6a4faf9..0109dba 100644 --- a/public/scripts/controllers/login-controller.js +++ b/public/scripts/controllers/login-controller.js @@ -1,6 +1,11 @@ app.controller('loginCtr', ['$scope', '$filter', '$state', 'bookmarkService', 'pubSubService', function($scope, $filter, $state, bookmarkService, pubSubService) { console.log("Hello loginCtr..."); + pubSubService.publish('Common.menuActive', { + login: false, + index: 1 + }); + $scope.username = "luchenqun"; $scope.password = "fendoubuxi"; $scope.showErr = false; @@ -17,11 +22,11 @@ app.controller('loginCtr', ['$scope', '$filter', '$state', 'bookmarkService', 'p console.log($scope.username, $scope.password, autoLogin); var params = { username: $scope.username, - password:$scope.password, - autoLogin:autoLogin, + password: $scope.password, + autoLogin: autoLogin, }; - bookmarkService.login(params).then( - function(data) { + bookmarkService.login(params) + .then((data) => { console.log(data); if (data.logined) { pubSubService.publish('loginCtr.login', { @@ -33,11 +38,8 @@ app.controller('loginCtr', ['$scope', '$filter', '$state', 'bookmarkService', 'p } else { console.log('login failed......................') } - }, - function(errorMsg) { - console.log(errorMsg); - } - ); + }) + .catch((err) => console.log('login err', err)); } } }]); diff --git a/public/scripts/controllers/menus-controller.js b/public/scripts/controllers/menus-controller.js index b25dd61..48d86d2 100644 --- a/public/scripts/controllers/menus-controller.js +++ b/public/scripts/controllers/menus-controller.js @@ -1,27 +1,18 @@ app.controller('menuCtr', ['$scope', '$stateParams', '$state', 'pubSubService', 'bookmarkService', function($scope, $stateParams, $state, pubSubService, bookmarkService) { - $scope.login = $stateParams.login && false; /**< 是否登陆 */ + console.log("Hello menuCtr") + $scope.login = false; /**< 是否登陆 */ $scope.selectLoginIndex = 0; /**< 默认登陆之后的选择的菜单索引,下表从 0 开始 */ $scope.selectNotLoginIndex = 0; /**< 默认未登陆之后的选择的菜单索引,下表从 0 开始 */ $scope.keyword = ''; /**< 搜索关键字 */ - semanticInit(); - - /** - * @todo http://stackoverflow.com/questions/31449948/ui-router-state-go-not-working - */ - // if ($scope.login) { - // setTimeout(() => { - // $state.go('bookmarks', { - // foo: 'i love you', - // bar: 'hello world' - // }) - // }, 0); - // } - - pubSubService.subscribe('loginCtr.login', $scope, function(event, params) { - $scope.login = params.login; + $scope.showSearch = false; + // 防止在登陆的情况下,在浏览器里面直接输入url,这时候要更新菜单选项 + pubSubService.subscribe('Common.menuActive', $scope, function(event, params) { + console.log("subscribe Common.menuActive", params) + $scope.login = (params && params.login) || false; + var index = $scope.login ? ($scope.selectLoginIndex = (params && params.index) || 0) : ($scope.selectNotLoginIndex = (params && params.index) || 0); + updateMenuActive(index); }); - // 登陆之后显示的菜单数据。uiSerf:内部跳转链接。 $scope.loginMenus = [{ uiSref: 'bookmarks', @@ -35,9 +26,6 @@ app.controller('menuCtr', ['$scope', '$stateParams', '$state', 'pubSubService', }, { uiSref: 'settings', title: '设置' - }, { - uiSref: 'intro', - title: '说明' }]; // 未登陆显示的菜单数据 @@ -64,12 +52,24 @@ app.controller('menuCtr', ['$scope', '$stateParams', '$state', 'pubSubService', /** * @func * @desc 点击下拉列表详情搜索 + * @warn 不要使用$('js-checkbox-search').checkbox('is checked')去取,因为dom元素还没更新的。。。 */ $scope.searchDetail = function() { + $scope.showSearch = !$scope.showSearch; + console.log('searchDetail ', $scope.showSearch) pubSubService.publish('MenuCtr.searchDetail', { - 'key': 'JavaScript' + 'showSearch': $scope.showSearch, }); } + + $scope.updateShowStyle = function(showStyle) { + console.log('updateShowStyle', showStyle) + $('.js-radio-' + showStyle).checkbox('set checked'); + pubSubService.publish('MenuCtr.updateShowStyle', { + 'showStyle': showStyle, + }); + } + $scope.showAddBookmarkMoadl = function() { pubSubService.publish('MenuCtr.showAddBookmarkMoadl', { 'action': 'add' @@ -79,34 +79,55 @@ app.controller('menuCtr', ['$scope', '$stateParams', '$state', 'pubSubService', var params = { userName: 'luchenqun' }; - bookmarkService.logout(params).then( - function(data) { + bookmarkService.logout(params) + .then((data) => { console.log('logout..........', data) $scope.login = false; $state.go('login', { foo: 'i love you', bar: 'hello world' }) - }, - function(errorMsg) { - console.log(errorMsg); - } - ); + }) + .catch((err) => console.log('logout err', err)); } - function semanticInit() { - setTimeout(() => { - $('.ui.dropdown').dropdown({ - action: 'nothing', - }); - $('.ui.checkbox').checkbox(); - $('.ui.checkbox.js-radio-navigate').checkbox('check'); - $('.ui.menu a.item').on('click', function() { - $(this) - .addClass('active') - .siblings() - .removeClass('active'); - }); - }, 100); + // 元素构造完成之后,开始使用jquery初始化 + $scope.$on('elementRenderFinished', function(elementRenderFinishedEvent) { + console.log('menus elementRenderFinished') + $scope.showSearch = $('.js-checkbox-search').checkbox('is checked'); + $('.js-bookmark-dropdown').dropdown({ + action: 'hide', + }); + $('.ui.dropdown').dropdown({ + on: 'hover', + }); + + $('.ui.checkbox').checkbox(); + $('.ui.checkbox.js-radio-navigate').checkbox('check'); + $('.ui.menu a.item').on('click', function() { + $(this).addClass('selected').siblings().removeClass('selected'); + }); + + $(".ui.menu a.item:first").hover( + function() { + $('.js-bookmark-dropdown').dropdown('show'); + }, + function() { + setTimeout(() => { + if ($('.js-menu-option:hover').length === 0) { + $('.js-bookmark-dropdown').dropdown('hide'); + } + }, 100) + } + ); + + $('.ui.menu a.item').on('click', function() { + $(this).addClass('selected').siblings().removeClass('selected'); + }); + }); + + function updateMenuActive(index) { + $('.ui.menu a.item').removeClass('selected'); + $('.ui.menu a.item:eq(' + index + ')').addClass('selected'); } }]); diff --git a/public/scripts/controllers/tags-controller.js b/public/scripts/controllers/tags-controller.js index 2e90771..32c016b 100644 --- a/public/scripts/controllers/tags-controller.js +++ b/public/scripts/controllers/tags-controller.js @@ -1,25 +1,24 @@ app.controller('tagsCtr', ['$scope', '$filter', 'bookmarkService', 'pubSubService', function($scope, $filter, bookmarkService, pubSubService) { console.log("Hello tagsCtr..."); - getTags({a:1, b:2, c:3}); + getTags({ + user_id: '1' + }); $scope.tags = []; // 书签数据 pubSubService.subscribe('MenuCtr.tags', $scope, function(event, data) { console.log('subscribe MenuCtr.tags', data); - var params = {a:1, b:2, c:3}; + var params = { + a: 1, + b: 2, + c: 3 + }; getTags(params); }); - function getTags(params){ - bookmarkService.getTags(params).then( - function(data) { - console.log(data); - $scope.tags = data; - }, - function(errorMsg) { - console.log(errorMsg); - } - ); + function getTags(params) { + bookmarkService.getTags(params) + .then((data) => $scope.tags = data) + .catch((err) => console.log('getTags err', err)); } - }]); diff --git a/public/scripts/directives/element-render-finish-directive.js b/public/scripts/directives/element-render-finish-directive.js new file mode 100644 index 0000000..52a2ae6 --- /dev/null +++ b/public/scripts/directives/element-render-finish-directive.js @@ -0,0 +1,12 @@ +app.directive('onFinishRenderFilters', ['$timeout', function($timeout) { + return { + restrict: 'A', + link: function(scope, element, attr) { + if (scope.$last === true) { + $timeout(function() { + scope.$emit('elementRenderFinished'); + }); + } + } + }; +}]); diff --git a/public/scripts/externe/toastr.min.js b/public/scripts/externe/toastr.min.js new file mode 100644 index 0000000..227d9e1 --- /dev/null +++ b/public/scripts/externe/toastr.min.js @@ -0,0 +1,2 @@ +!function(e){e(["jquery"],function(e){return function(){function t(e,t,n){return g({type:O.error,iconClass:m().iconClasses.error,message:e,optionsOverride:n,title:t})}function n(t,n){return t||(t=m()),v=e("#"+t.containerId),v.length?v:(n&&(v=u(t)),v)}function i(e,t,n){return g({type:O.info,iconClass:m().iconClasses.info,message:e,optionsOverride:n,title:t})}function o(e){w=e}function s(e,t,n){return g({type:O.success,iconClass:m().iconClasses.success,message:e,optionsOverride:n,title:t})}function a(e,t,n){return g({type:O.warning,iconClass:m().iconClasses.warning,message:e,optionsOverride:n,title:t})}function r(e,t){var i=m();v||n(i),l(e,i,t)||d(i)}function c(t){var i=m();return v||n(i),t&&0===e(":focus",t).length?void h(t):void(v.children().length&&v.remove())}function d(t){for(var n=v.children(),i=n.length-1;i>=0;i--)l(e(n[i]),t)}function l(t,n,i){var o=i&&i.force?i.force:!1;return t&&(o||0===e(":focus",t).length)?(t[n.hideMethod]({duration:n.hideDuration,easing:n.hideEasing,complete:function(){h(t)}}),!0):!1}function u(t){return v=e("
").attr("id",t.containerId).addClass(t.positionClass).attr("aria-live","polite").attr("role","alert"),v.appendTo(e(t.target)),v}function p(){return{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:void 0,closeMethod:!1,closeDuration:!1,closeEasing:!1,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",escapeHtml:!1,target:"body",closeHtml:'',newestOnTop:!0,preventDuplicates:!1,progressBar:!1}}function f(e){w&&w(e)}function g(t){function i(e){return null==e&&(e=""),new String(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function o(){r(),d(),l(),u(),p(),c()}function s(){y.hover(b,O),!x.onclick&&x.tapToDismiss&&y.click(w),x.closeButton&&k&&k.click(function(e){e.stopPropagation?e.stopPropagation():void 0!==e.cancelBubble&&e.cancelBubble!==!0&&(e.cancelBubble=!0),w(!0)}),x.onclick&&y.click(function(e){x.onclick(e),w()})}function a(){y.hide(),y[x.showMethod]({duration:x.showDuration,easing:x.showEasing,complete:x.onShown}),x.timeOut>0&&(H=setTimeout(w,x.timeOut),q.maxHideTime=parseFloat(x.timeOut),q.hideEta=(new Date).getTime()+q.maxHideTime,x.progressBar&&(q.intervalId=setInterval(D,10)))}function r(){t.iconClass&&y.addClass(x.toastClass).addClass(E)}function c(){x.newestOnTop?v.prepend(y):v.append(y)}function d(){t.title&&(I.append(x.escapeHtml?i(t.title):t.title).addClass(x.titleClass),y.append(I))}function l(){t.message&&(M.append(x.escapeHtml?i(t.message):t.message).addClass(x.messageClass),y.append(M))}function u(){x.closeButton&&(k.addClass("toast-close-button").attr("role","button"),y.prepend(k))}function p(){x.progressBar&&(B.addClass("toast-progress"),y.prepend(B))}function g(e,t){if(e.preventDuplicates){if(t.message===C)return!0;C=t.message}return!1}function w(t){var n=t&&x.closeMethod!==!1?x.closeMethod:x.hideMethod,i=t&&x.closeDuration!==!1?x.closeDuration:x.hideDuration,o=t&&x.closeEasing!==!1?x.closeEasing:x.hideEasing;return!e(":focus",y).length||t?(clearTimeout(q.intervalId),y[n]({duration:i,easing:o,complete:function(){h(y),x.onHidden&&"hidden"!==j.state&&x.onHidden(),j.state="hidden",j.endTime=new Date,f(j)}})):void 0}function O(){(x.timeOut>0||x.extendedTimeOut>0)&&(H=setTimeout(w,x.extendedTimeOut),q.maxHideTime=parseFloat(x.extendedTimeOut),q.hideEta=(new Date).getTime()+q.maxHideTime)}function b(){clearTimeout(H),q.hideEta=0,y.stop(!0,!0)[x.showMethod]({duration:x.showDuration,easing:x.showEasing})}function D(){var e=(q.hideEta-(new Date).getTime())/q.maxHideTime*100;B.width(e+"%")}var x=m(),E=t.iconClass||x.iconClass;if("undefined"!=typeof t.optionsOverride&&(x=e.extend(x,t.optionsOverride),E=t.optionsOverride.iconClass||E),!g(x,t)){T++,v=n(x,!0);var H=null,y=e("
"),I=e("
"),M=e("
"),B=e("
"),k=e(x.closeHtml),q={intervalId:null,hideEta:null,maxHideTime:null},j={toastId:T,state:"visible",startTime:new Date,options:x,map:t};return o(),a(),s(),f(j),x.debug&&console&&console.log(j),y}}function m(){return e.extend({},p(),b.options)}function h(e){v||(v=n()),e.is(":visible")||(e.remove(),e=null,0===v.children().length&&(v.remove(),C=void 0))}var v,w,C,T=0,O={error:"error",info:"info",success:"success",warning:"warning"},b={clear:r,remove:c,error:t,getContainer:n,info:i,options:{},subscribe:o,success:s,version:"2.1.2",warning:a};return b}()})}("function"==typeof define&&define.amd?define:function(e,t){"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):window.toastr=t(window.jQuery)}); +//# sourceMappingURL=toastr.js.map \ No newline at end of file diff --git a/public/scripts/services/bookmark-service.js b/public/scripts/services/bookmark-service.js index b949c11..8b540c6 100644 --- a/public/scripts/services/bookmark-service.js +++ b/public/scripts/services/bookmark-service.js @@ -10,8 +10,7 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) { def.resolve(data); }) .error(function(data) { - console.log('Error: ' + data); - def.reject('Failed to get getTitle'); + def.reject('getTitle error'); }); return def.promise; }, @@ -24,8 +23,7 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) { def.resolve(data); }) .error(function(data) { - console.log('Error: ' + data); - def.reject('Failed to get todos'); + def.reject('login error'); }); return def.promise; }, @@ -38,7 +36,7 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) { def.resolve(data); }) .error(function(data) { - console.log('Error: ' + data); + def.reject('clickBookmark error'); }); return def.promise; }, @@ -51,8 +49,7 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) { def.resolve(data); }) .error(function(data) { - console.log('Error: ' + data); - def.reject('Failed to get todos'); + def.reject('logout error'); }); return def.promise; }, @@ -63,8 +60,7 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) { def.resolve(data); }) .error(function(data) { - console.log('Error: ' + data); - def.reject('Failed to get todos'); + def.reject('autoLogin error'); }); return def.promise; }, @@ -83,8 +79,7 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) { def.resolve(data); }) .error(function(data, status) { - console.log('Error: ' + data, status); - def.reject('Failed to get todos'); + def.reject('getBookmarks error'); }); return def.promise; }, @@ -98,7 +93,7 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) { def.resolve(data); }) .error(function(data, status) { - console.log('Error: ' + data, status); + def.reject('getBookmark error'); }); return def.promise; }, @@ -111,13 +106,11 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) { def.resolve(data); }) .error(function(data) { - console.log('Error: ' + data); - def.reject('Failed to get todos'); + def.reject('addBookmark error'); }); return def.promise; }, updateBookmark: function(params) { - console.log('service updateBookmark') var def = $q.defer(); $http.post('/api/updateBookmark/', { params: params @@ -126,8 +119,7 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) { def.resolve(data); }) .error(function(data) { - console.log('Error: ' + data); - def.reject('Failed to get todos'); + def.reject('updateBookmark error'); }); return def.promise; }, @@ -140,13 +132,9 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) { def.resolve(data); }) .error(function(data) { - console.log('Error: ' + data); - def.reject('delBookmark fail'); + def.reject('delBookmark error'); }); return def.promise; - }, - editBookmark: function(params) { - }, /** * @func @@ -162,8 +150,7 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) { def.resolve(data); }) .error(function(data) { - console.log('Error: ' + data); - def.reject('Failed to get todos'); + def.reject('getTags error'); }); return def.promise; }, @@ -176,8 +163,7 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) { def.resolve(data); }) .error(function(data) { - console.log('Error: ' + data); - def.reject('Failed to get todos'); + def.reject('addTags error'); }); return def.promise; }, @@ -186,47 +172,27 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) { return service; }]); -app.factory('AuthenticationService', function() { - var auth = { - isAuthenticated: false, - isAdmin: false - } - - return auth; -}); - -app.factory('TokenInterceptor', function($q, $window, $location, AuthenticationService) { - return { +app.factory('httpInterceptor', ['$q', '$injector', function($q, $injector) { + var defered = $q.defer(); + var httpInterceptor = { request: function(config) { - config.headers = config.headers || {}; - if ($window.sessionStorage.token) { - config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token; - } return config; }, - - requestError: function(rejection) { - return $q.reject(rejection); + requestError: function(err) { + return $q.reject(err); }, - - /* Set Authentication.isAuthenticated to true if 200 received */ - response: function(response) { - if (response != null && response.status == 200 && $window.sessionStorage.token && !AuthenticationService.isAuthenticated) { - AuthenticationService.isAuthenticated = true; - } - return response || $q.when(response); + response: function(res) { + return $q.resolve(res); }, - - /* Revoke client authentication if 401 is received */ - responseError: function(rejection) { - if (rejection != null && rejection.status === 401 && ($window.sessionStorage.token || AuthenticationService.isAuthenticated)) { - delete $window.sessionStorage.token; - AuthenticationService.isAuthenticated = false; - // $location.path("/admin/login"); - console.log('responseError') + responseError: function(err) { + if (401 === err.status) { + toastr["error"]("警告", "您需要先登录才能使用该功能"); + $injector.get('$state').go('login', {}) + } else { + toastr["error"]("警告", JSON.stringify(err)); } - - return $q.reject(rejection); + return $q.reject(err); } - }; -}); + } + return httpInterceptor; +}]); diff --git a/public/views/bookmarks.html b/public/views/bookmarks.html index cc1b30c..b54aee9 100644 --- a/public/views/bookmarks.html +++ b/public/views/bookmarks.html @@ -1,35 +1,4 @@ -
-
-
-
-
- {{ tag.name }} -
-
-
-
- - - - {{ bookmark.title}} -
-
-
-
-
-
-
-
-
-