diff --git a/src/controller/api.js b/src/controller/api.js index e8dc94c..2f9a8b8 100644 --- a/src/controller/api.js +++ b/src/controller/api.js @@ -248,19 +248,58 @@ module.exports = class extends Base { let tagId = this.get("tagId"); let showType = this.get("showType") || "createdAt"; // tagId = -1 个人定制 从自己里面取 - let where = {}; + let condition = {}; let order = showType + ' DESC'; + let page = this.get('page'); + let pageSize = parseInt(this.get('pageSize') || 50); if (tagId == -1) { - where = { userId: this.ctx.state.user.id }; - } else if (tagId == -2) { - where = { userId: ['!=', this.ctx.state.user.id] }; + condition = { userId: this.ctx.state.user.id }; } else { - where = { tagId }; + condition = { tagId }; } try { - let data = await this.model('bookmarks').where(where).order(order).page(this.get('page'), this.get('pageSize')).countSelect(); + // 如果是第0页而且是个人定制的,把 最近点击 与 最近新增 的返回去。 + let data = {}; + if (page == 0 && tagId == -1) { + let count = await this.model('bookmarks').where(condition).count('id'); + let totalPages = Math.ceil(count / pageSize); + // 按照 2:2:1取数据 + let length = Math.ceil(pageSize * 2 / 5); + let bookmarks = await this.model('bookmarks').where(condition).order('createdAt DESC').limit(0, length).select(); // 这个取一半 + + // 取最近点击部分数据 + let cnt = 0; + let bookmarks2 = await this.model('bookmarks').where(condition).order('lastClick DESC').limit(0, pageSize * 2).select(); // 这个多取一点,有可能跟上面的重复了 + for (const bookmark of bookmarks2) { + let find = bookmarks.find(item => item.id == bookmark.id); + if (!find) { + bookmarks.push(bookmark); + cnt++; + if (cnt >= length) break; + } + } + + // 取点击次数最多部分 + let bookmarks3 = await this.model('bookmarks').where(condition).order('clickCount DESC').limit(0, pageSize * 2).select(); // 这个多取一点,有可能跟上面的重复了 + for (const bookmark of bookmarks3) { + let find = bookmarks.find(item => item.id == bookmark.id); + if (!find) { + bookmarks.push(bookmark); + if (bookmarks.length >= pageSize) break; + } + } + + data = { + count, + totalPages, + pageSize, + data: bookmarks + } + } else { + data = await this.model('bookmarks').where(condition).order(order).page(page, pageSize).countSelect(); + } this.json({ code: 0, data }); } catch (error) { this.json({ code: 1, msg: error.toString() }); diff --git a/www/scripts/app-angular.js b/www/scripts/app-angular.js index 44e9061..1090043 100644 --- a/www/scripts/app-angular.js +++ b/www/scripts/app-angular.js @@ -51,9 +51,6 @@ app.config(function ($stateProvider, $urlRouterProvider, $httpProvider) { .state('bookmarks', { url: '/bookmarks', templateUrl: 'views/bookmarks.html', - params: { - showStyle: null, - }, controller: 'bookmarksCtr' }) .state('weixin-article', { @@ -103,9 +100,6 @@ app.config(function ($stateProvider, $urlRouterProvider, $httpProvider) { .state('login', { url: '/login', templateUrl: 'views/login.html', - params: { - showStyle: 'table', - }, controller: 'loginCtr' }) .state('/', { diff --git a/www/scripts/controllers/menus-controller.js b/www/scripts/controllers/menus-controller.js index 4bbfac7..76092ae 100644 --- a/www/scripts/controllers/menus-controller.js +++ b/www/scripts/controllers/menus-controller.js @@ -4,7 +4,6 @@ app.controller('menuCtr', ['$scope', '$stateParams', '$state', '$window', '$time $scope.selectLoginIndex = 0; /**< 默认登陆之后的选择的菜单索引,下表从 0 开始 */ $scope.selectNotLoginIndex = 0; /**< 默认未登陆之后的选择的菜单索引,下表从 0 开始 */ $scope.keyword = ''; /**< 搜索关键字 */ - $scope.showStyle = null; $scope.searchHistory = []; $scope.historyTypes = dataService.historyTypes; $scope.quickUrl = {}; @@ -168,17 +167,6 @@ app.controller('menuCtr', ['$scope', '$stateParams', '$state', '$window', '$time }, 500) } - $scope.updateShowStyle = function (showStyle) { - console.log('updateShowStyle', showStyle); - $scope.showStyle = showStyle; - $('.js-radio-' + showStyle).checkbox('set checked'); - $state.go('bookmarks', { - showStyle: showStyle, - }, { - reload: true, - }) - } - $scope.showAddBookmarkMoadl = function () { pubSubService.publish('MenuCtr.showAddBookmarkMoadl', { 'action': 'add' diff --git a/www/scripts/controllers/tags-controller.js b/www/scripts/controllers/tags-controller.js index a6197f8..6b0b07c 100644 --- a/www/scripts/controllers/tags-controller.js +++ b/www/scripts/controllers/tags-controller.js @@ -20,7 +20,7 @@ app.controller('tagsCtr', ['$scope', '$filter', '$state', '$window', '$statePara $scope.tagsIndex = []; // 书签索引 $scope.bookmarks = []; $scope.totalPages = 0; - $scope.currentPage = 1; + $scope.currentPage = 0; $scope.inputPage = ''; $scope.currentTagId = ($stateParams && $stateParams.tagId) || (-1); $scope.editMode = false; @@ -40,7 +40,7 @@ app.controller('tagsCtr', ['$scope', '$filter', '$state', '$window', '$statePara $scope.bookmarks = []; tagId && ($scope.currentTagId = tagId); - page && ($scope.currentPage = page); + Number.isInteger(page) && ($scope.currentPage = page); showType && ($scope.showType = showType); $scope.loading = true; diff --git a/www/scripts/services/data-service.js b/www/scripts/services/data-service.js index d0e45b6..5002a7c 100644 --- a/www/scripts/services/data-service.js +++ b/www/scripts/services/data-service.js @@ -81,7 +81,6 @@ app.factory('dataService', [function () { return $(selector).length >= 1; }, historyTypes: ['书签', '谷歌', 'Github', '栈溢出', '百度', '备忘录'], - showStyles: ['navigate', 'costomTag', 'card', 'table'], forbidQuickKey: { 'A': '在任意界面,已用做新增备忘录', 'C': '在有关书签页面,用作复制书签链接', diff --git a/www/views/tags.html b/www/views/tags.html index 99b151e..81410a5 100644 --- a/www/views/tags.html +++ b/www/views/tags.html @@ -1,6 +1,6 @@