做了一下卡片

This commit is contained in:
luchenqun 2017-02-21 22:38:05 +08:00
parent cb62f6cdb4
commit 82f58160f2
7 changed files with 59 additions and 25 deletions

View File

@ -30,6 +30,7 @@ code {
display: -webkit-box;
-webkit-box-orient: vertical;
height: 40px;
line-height: 20px;
}
.bookmarkNormalHover {
white-space: nowrap;
@ -44,6 +45,9 @@ code {
.bookmarkOperaterHover {
cursor: pointer;
}
.tags {
cursor: default;
}
.bookmarkEditHover {
white-space: nowrap;
text-overflow: ellipsis;

View File

@ -56,5 +56,6 @@
<script src="/scripts/externe/semantic.min.js"></script>
<script src="/scripts/externe/calendar.min.js"></script>
<script src="/scripts/externe/jquery.uploadfile.min.js"></script>
<script src="/scripts/externe/ng-infinite-scroll.min.js"></script>
</body>
</html>

View File

@ -1,4 +1,4 @@
var app = angular.module('bookmarkApp', ['ui.router', 'ngCookies']);
var app = angular.module('bookmarkApp', ['ui.router', 'ngCookies', 'infinite-scroll']);
app.config(function($stateProvider, $urlRouterProvider, $httpProvider) {
$httpProvider.interceptors.push('httpInterceptor');

View File

@ -4,14 +4,15 @@ app.controller('bookmarksCtr', ['$scope', '$state', '$stateParams', '$filter', '
$scope.showSearch = false; // 搜索对话框
$scope.bookmarkNormalHover = false;
$scope.bookmarkEditHover = false;
$scope.showStyle = ($stateParams && $stateParams.showStyle) || 'navigate'; // 显示风格'navigate', 'card', 'table'
$scope.showStyle = 'card';
($stateParams && $stateParams.showStyle) || 'navigate'; // 显示风格'navigate', 'card', 'table'
$('.js-radio-' + $scope.showStyle).checkbox('set checked');
$scope.edit = false;
const perPageItems = 20;
$scope.totalPages = 0;
$scope.currentPage = 1;
$scope.inputPage = '';
$scope.loadBusy = false;
$scope.changeCurrentPage = function(currentPage) {
currentPage = parseInt(currentPage) || 0;
console.log(currentPage);
@ -93,6 +94,13 @@ app.controller('bookmarksCtr', ['$scope', '$state', '$stateParams', '$filter', '
$(".js-msg").remove();
}
$scope.loadCardData = function() {
console.log('loadCardData.........')
$scope.currentPage += 1;
$scope.changeCurrentPage($scope.currentPage);
$scope.loadBusy = true;
}
pubSubService.subscribe('EditCtr.inserBookmarsSuccess', $scope, function(event, params) {
params.showStyle = $scope.showStyle;
console.log('subscribe EditCtr.inserBookmarsSuccess', params);
@ -113,7 +121,14 @@ app.controller('bookmarksCtr', ['$scope', '$state', '$stateParams', '$filter', '
toastr.info('您还没有书签,请点击菜单栏的添加按钮进行添加', "提示");
}
} else {
$scope.bookmarks = data;
if (params.showStyle == 'card') {
console.log('loadCardData end.........')
$scope.bookmarks = $scope.bookmarks.concat(data);
$scope.loadBusy = false;
} else {
$scope.bookmarks = data;
}
if ($scope.bookmarks.length <= 2) {
$(".js-msg").removeClass("hidden");
}

View File

@ -0,0 +1,2 @@
/* ng-infinite-scroll - v1.0.0 - 2013-02-23 */
var mod;mod=angular.module("infinite-scroll",[]),mod.directive("infiniteScroll",["$rootScope","$window","$timeout",function(i,n,e){return{link:function(t,l,o){var r,c,f,a;return n=angular.element(n),f=0,null!=o.infiniteScrollDistance&&t.$watch(o.infiniteScrollDistance,function(i){return f=parseInt(i,10)}),a=!0,r=!1,null!=o.infiniteScrollDisabled&&t.$watch(o.infiniteScrollDisabled,function(i){return a=!i,a&&r?(r=!1,c()):void 0}),c=function(){var e,c,u,d;return d=n.height()+n.scrollTop(),e=l.offset().top+l.height(),c=e-d,u=n.height()*f>=c,u&&a?i.$$phase?t.$eval(o.infiniteScroll):t.$apply(o.infiniteScroll):u?r=!0:void 0},n.on("scroll",c),t.$on("$destroy",function(){return n.off("scroll",c)}),e(function(){return o.infiniteScrollImmediateCheck?t.$eval(o.infiniteScrollImmediateCheck)?c():void 0:c()},0)}}}]);

View File

@ -92,19 +92,31 @@
</tfoot>
</table>
<div class="ui segment" ng-if="showStyle === 'card'">
<div class="ui five stackable cards">
<div class="card link raised" ng-repeat="bookmark in bookmarks">
<div class="image">
<div class="ui five link stackable cards" infinite-scroll='loadCardData()' infinite-scroll-disabled='loadBusy' infinite-scroll-distance='1'>
<div class="card" ng-repeat="bookmark in bookmarks">
<div class="image" href="{{ bookmark.url }}" ng-click="jumpToUrl(bookmark.url, bookmark.id)">
<img ng-src="./images/snap/{{bookmark.id}}.png" err-src="./images/snap/default.png"/>
</div>
<div class="content" href="{{ bookmark.url }}">
<div class="content" ng-click="jumpToTags(tag.id)">
<div class="description bookmarkTitle">
{{bookmark.title}}
</div>
<div class="meta">
<span class="date">{{ bookmark.created_at }}</span>
</div>
<div class="extra content tags">
<div class="ui label" ng-repeat="tag in bookmark.tags" tag-id="{{ tag.id }}" ng-click="jumpToTags(tag.id)">
{{ tag.name }}
</div>
</div>
<div class="extra content" ng-click="jumpToUrl(bookmark.url, bookmark.id)">
<span class="left floated like">
<i class="add to calendar icon"></i>
{{ bookmark.created_at }}
</span>
<span class="right floated like">
<i class="pointing up icon"></i>
{{ bookmark.click_count }}
</span>
</div>
</div>
</div>
</div>

View File

@ -8,14 +8,6 @@ var multer = require('multer');
var webshot = require('webshot');
var fs = require('fs');
var webshotOptions = {
shotSize: {
width: 320,
height: 320
},
timeout: 50000,
};
var storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, 'uploads/')
@ -535,13 +527,13 @@ api.post('/uploadBookmarkFile', upload.single('bookmark'), function(req, res) {
var tags = [];
item.tags.forEach((tag) => {
allTags.forEach((at) => {
if (at.name == tag) {
tags.push(at.id);
}
})
allTags.forEach((at) => {
if (at.name == tag) {
tags.push(at.id);
}
})
// 插入书签
})
// 插入书签
db.addBookmark(userId, bookmark) // 插入书签
.then((bookmark_id) => {
db.delBookmarkTags(bookmark_id); // 不管3721先删掉旧的分类
@ -627,6 +619,7 @@ api.post('/getTitle', function(req, response) {
api.getSnapByTimer = function() {
console.log('getSnapByTimer...........');
var timeout = 5000
setInterval(function() {
var today = new Date().getDate();
db.getBookmarkWaitSnap(today)
@ -644,6 +637,13 @@ api.getSnapByTimer = function() {
db.updateBookmarkSnapState(id, today + 31);
return;
}
var webshotOptions = {
shotSize: {
width: 320,
height: 160
},
timeout: timeout,
};
webshot(url, finePath, webshotOptions, function(err) {
var newSnapState = -1;
if (err) {
@ -661,7 +661,7 @@ api.getSnapByTimer = function() {
}
})
.catch((err) => console.log('getBookmarkWaitSnap err', err));
}, 60000);
}, timeout + 1000);
}
function md5(str) {