做了一下卡片

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

View File

@ -56,5 +56,6 @@
<script src="/scripts/externe/semantic.min.js"></script> <script src="/scripts/externe/semantic.min.js"></script>
<script src="/scripts/externe/calendar.min.js"></script> <script src="/scripts/externe/calendar.min.js"></script>
<script src="/scripts/externe/jquery.uploadfile.min.js"></script> <script src="/scripts/externe/jquery.uploadfile.min.js"></script>
<script src="/scripts/externe/ng-infinite-scroll.min.js"></script>
</body> </body>
</html> </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) { app.config(function($stateProvider, $urlRouterProvider, $httpProvider) {
$httpProvider.interceptors.push('httpInterceptor'); $httpProvider.interceptors.push('httpInterceptor');

View File

@ -4,14 +4,15 @@ app.controller('bookmarksCtr', ['$scope', '$state', '$stateParams', '$filter', '
$scope.showSearch = false; // 搜索对话框 $scope.showSearch = false; // 搜索对话框
$scope.bookmarkNormalHover = false; $scope.bookmarkNormalHover = false;
$scope.bookmarkEditHover = 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'); $('.js-radio-' + $scope.showStyle).checkbox('set checked');
$scope.edit = false; $scope.edit = false;
const perPageItems = 20; const perPageItems = 20;
$scope.totalPages = 0; $scope.totalPages = 0;
$scope.currentPage = 1; $scope.currentPage = 1;
$scope.inputPage = ''; $scope.inputPage = '';
$scope.loadBusy = false;
$scope.changeCurrentPage = function(currentPage) { $scope.changeCurrentPage = function(currentPage) {
currentPage = parseInt(currentPage) || 0; currentPage = parseInt(currentPage) || 0;
console.log(currentPage); console.log(currentPage);
@ -93,6 +94,13 @@ app.controller('bookmarksCtr', ['$scope', '$state', '$stateParams', '$filter', '
$(".js-msg").remove(); $(".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) { pubSubService.subscribe('EditCtr.inserBookmarsSuccess', $scope, function(event, params) {
params.showStyle = $scope.showStyle; params.showStyle = $scope.showStyle;
console.log('subscribe EditCtr.inserBookmarsSuccess', params); console.log('subscribe EditCtr.inserBookmarsSuccess', params);
@ -112,8 +120,15 @@ app.controller('bookmarksCtr', ['$scope', '$state', '$stateParams', '$filter', '
if (data.totalItems == 0) { if (data.totalItems == 0) {
toastr.info('您还没有书签,请点击菜单栏的添加按钮进行添加', "提示"); toastr.info('您还没有书签,请点击菜单栏的添加按钮进行添加', "提示");
} }
} else {
if (params.showStyle == 'card') {
console.log('loadCardData end.........')
$scope.bookmarks = $scope.bookmarks.concat(data);
$scope.loadBusy = false;
} else { } else {
$scope.bookmarks = data; $scope.bookmarks = data;
}
if ($scope.bookmarks.length <= 2) { if ($scope.bookmarks.length <= 2) {
$(".js-msg").removeClass("hidden"); $(".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,18 +92,30 @@
</tfoot> </tfoot>
</table> </table>
<div class="ui segment" ng-if="showStyle === 'card'"> <div class="ui segment" ng-if="showStyle === 'card'">
<div class="ui five stackable cards"> <div class="ui five link stackable cards" infinite-scroll='loadCardData()' infinite-scroll-disabled='loadBusy' infinite-scroll-distance='1'>
<div class="card link raised" ng-repeat="bookmark in bookmarks"> <div class="card" ng-repeat="bookmark in bookmarks">
<div class="image"> <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"/> <img ng-src="./images/snap/{{bookmark.id}}.png" err-src="./images/snap/default.png"/>
</div> </div>
<div class="content" href="{{ bookmark.url }}"> <div class="content" ng-click="jumpToTags(tag.id)">
<div class="description bookmarkTitle"> <div class="description bookmarkTitle">
{{bookmark.title}} {{bookmark.title}}
</div> </div>
<div class="meta">
<span class="date">{{ bookmark.created_at }}</span>
</div> </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>
</div> </div>

View File

@ -8,14 +8,6 @@ var multer = require('multer');
var webshot = require('webshot'); var webshot = require('webshot');
var fs = require('fs'); var fs = require('fs');
var webshotOptions = {
shotSize: {
width: 320,
height: 320
},
timeout: 50000,
};
var storage = multer.diskStorage({ var storage = multer.diskStorage({
destination: function(req, file, cb) { destination: function(req, file, cb) {
cb(null, 'uploads/') cb(null, 'uploads/')
@ -627,6 +619,7 @@ api.post('/getTitle', function(req, response) {
api.getSnapByTimer = function() { api.getSnapByTimer = function() {
console.log('getSnapByTimer...........'); console.log('getSnapByTimer...........');
var timeout = 5000
setInterval(function() { setInterval(function() {
var today = new Date().getDate(); var today = new Date().getDate();
db.getBookmarkWaitSnap(today) db.getBookmarkWaitSnap(today)
@ -644,6 +637,13 @@ api.getSnapByTimer = function() {
db.updateBookmarkSnapState(id, today + 31); db.updateBookmarkSnapState(id, today + 31);
return; return;
} }
var webshotOptions = {
shotSize: {
width: 320,
height: 160
},
timeout: timeout,
};
webshot(url, finePath, webshotOptions, function(err) { webshot(url, finePath, webshotOptions, function(err) {
var newSnapState = -1; var newSnapState = -1;
if (err) { if (err) {
@ -661,7 +661,7 @@ api.getSnapByTimer = function() {
} }
}) })
.catch((err) => console.log('getBookmarkWaitSnap err', err)); .catch((err) => console.log('getBookmarkWaitSnap err', err));
}, 60000); }, timeout + 1000);
} }
function md5(str) { function md5(str) {