diff --git a/database/db.js b/database/db.js index b8ddba2..86ff8bd 100644 --- a/database/db.js +++ b/database/db.js @@ -299,7 +299,7 @@ db.getUser = function(username) { db.getTags = function(user_id) { console.log('getTags'); - var sql = "SELECT t.*, tb.cnt FROM `tags` as t LEFT OUTER JOIN ( SELECT `tag_id`, COUNT(tag_id) as cnt FROM tags_bookmarks GROUP BY tag_id ) tb ON t.id = tb.tag_id WHERE t.user_id = '" + user_id + "' ORDER BY last_use DESC"; + var sql = "SELECT t.id, t.user_id, t.name, DATE_FORMAT(t.last_use, '%Y-%m-%d %H:%i:%s') as last_use, t.sort, tb.cnt FROM `tags` as t LEFT OUTER JOIN ( SELECT `tag_id`, COUNT(tag_id) as cnt FROM tags_bookmarks GROUP BY tag_id ) tb ON t.id = tb.tag_id WHERE t.user_id = '" + user_id + "' ORDER BY t.last_use DESC"; return new Promise(function(resolve, reject) { client.query(sql, (err, result) => { @@ -312,6 +312,21 @@ db.getTags = function(user_id) { }); }; +db.updateTag = function(tag) { + console.log('updateTag'); + var sql = "UPDATE `tags` SET `name`='" + tag.name + "' WHERE (`id`='" + tag.id + "')"; + console.log(sql); + return new Promise(function(resolve, reject) { + client.query(sql, (err, result) => { + if (err) { + reject(err); + } else { + resolve(result.affectedRows); + } + }); + }); +}; + db.getTagsByIds = function(tagIds) { var sql = "SELECT * FROM `tags` WHERE id in(" + (tagIds.toString() || ("-1")) + ") GROUP BY id"; // 如果是空的,那查一个不存在的就行了。 console.log('db getTagsByIds = ', sql); diff --git a/public/scripts/controllers/bookmarks-controller.js b/public/scripts/controllers/bookmarks-controller.js index 2468540..a16230f 100644 --- a/public/scripts/controllers/bookmarks-controller.js +++ b/public/scripts/controllers/bookmarks-controller.js @@ -180,6 +180,5 @@ app.controller('bookmarksCtr', ['$scope', '$state', '$stateParams', '$filter', ' left: left + width - 10, }) } - } }]); diff --git a/public/scripts/controllers/tags-controller.js b/public/scripts/controllers/tags-controller.js index ec3d401..07e970e 100644 --- a/public/scripts/controllers/tags-controller.js +++ b/public/scripts/controllers/tags-controller.js @@ -1,4 +1,4 @@ -app.controller('tagsCtr', ['$scope', '$filter', '$window', '$stateParams', 'bookmarkService', 'pubSubService', function($scope, $filter, $window, $stateParams, bookmarkService, pubSubService) { +app.controller('tagsCtr', ['$scope', '$filter', '$window', '$stateParams', '$timeout', 'bookmarkService', 'pubSubService', function($scope, $filter, $window, $stateParams, $timeout, bookmarkService, pubSubService) { console.log("Hello tagsCtr...", $stateParams); getTags({}); @@ -12,6 +12,7 @@ app.controller('tagsCtr', ['$scope', '$filter', '$window', '$stateParams', 'book $scope.currentPage = 1; $scope.inputPage = ''; $scope.currentTagId = ($stateParams && $stateParams.tagId) || ''; + $scope.edit = true; pubSubService.subscribe('MenuCtr.tags', $scope, function(event, data) { console.log('subscribe MenuCtr.tags', data); @@ -108,10 +109,65 @@ app.controller('tagsCtr', ['$scope', '$filter', '$window', '$stateParams', 'book toastr.warning('功能暂未实现。。。', "警告"); } + $scope.toggleMode = function() { + $scope.edit = !$scope.edit; + if (!$scope.edit) { + getTags({}); + } + setTimeout(updateEditPos, 100); + } + + $scope.editTag = function(tag) { + if (tag.name == "未分类") { + toastr.warning('这个是系统默认分类,暂时不允许更新!', "警告"); + return; + } + tag.oldName = tag.name; + tag.edit = true; + } + $scope.updateTag = function(tag) { + tag.edit = false; + var params = { + id: tag.id, + name: tag.name, + } + + bookmarkService.updateTag(params) + .then((data) => { + if (data.retCode == 0) { + toastr.success(tag.name + ' 更新成功!', "提示"); + } else { + toastr.error(tag.name + ' 更新失败!错误提示:' + data.msg, "提示"); + $scope.backTag(tag); + } + }) + .catch((err) => { + toastr.error(tag.name + ' 更新失败!错误提示:' + err, "提示"); + $scope.backTag(tag); + }); + } + + $scope.delTag = function(tag) { + if (tag.name == "未分类") { + toastr.warning('这个是系统默认分类,暂时不允许删除!', "警告"); + return; + } + } + + $scope.backTag = function(tag) { + tag.edit = false; + tag.name = tag.oldName; + } + function getTags(params) { bookmarkService.getTags(params) .then((data) => { - $scope.tags = data + $scope.tags = [] + data.forEach((tag) => { + tag.edit = false; + tag.oldName = tag.name; + $scope.tags.push(tag); + }) if (!$scope.currentTagId && $scope.tags.length > 0) { $scope.currentTagId = $scope.tags[0].id; @@ -131,4 +187,20 @@ app.controller('tagsCtr', ['$scope', '$filter', '$window', '$stateParams', 'book index: 1 }); } + + // TODO: 我要将编辑按钮固定在容器的右上角 + $(window).resize(updateEditPos); + setTimeout(updateEditPos, 100); + + function updateEditPos() { + var top = $('.js-tags').offset().top; + var left = $('.js-tags').offset().left; + var width = $('.js-tags').width(); + // console.log('js-edit position update', top+10, left+width-10) + $('.js-edit').offset({ + top: top + 10, + left: left + width - 10, + }) + } + }]); diff --git a/public/scripts/services/bookmark-service.js b/public/scripts/services/bookmark-service.js index a21a790..3e9e4bc 100644 --- a/public/scripts/services/bookmark-service.js +++ b/public/scripts/services/bookmark-service.js @@ -221,6 +221,19 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) { }); return def.promise; }, + updateTag: function(params) { + var def = $q.defer(); + $http.post('/api/updateTag/', { + params: params + }) + .success(function(data) { + def.resolve(data); + }) + .error(function(data) { + def.reject('updateTag error'); + }); + return def.promise; + }, getAdvices: function getAdvices(params) { var def = $q.defer(); $http.get('/api/advices/', { diff --git a/public/views/tags.html b/public/views/tags.html index db29ee9..5af8d71 100644 --- a/public/views/tags.html +++ b/public/views/tags.html @@ -1,5 +1,5 @@ -