mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-13 22:01:06 +00:00
update render dirents
This commit is contained in:
@@ -276,11 +276,8 @@ def list_lib_dir(request, repo_id):
|
|||||||
return HttpResponse(json.dumps({'error': err_msg}),
|
return HttpResponse(json.dumps({'error': err_msg}),
|
||||||
status=500, content_type=content_type)
|
status=500, content_type=content_type)
|
||||||
|
|
||||||
offset = int(request.GET.get('start', 0))
|
|
||||||
limit = 100
|
|
||||||
dir_list = []
|
dir_list = []
|
||||||
file_list = []
|
file_list = []
|
||||||
dirent_more = False
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
dir_id = seafile_api.get_dir_id_by_path(repo.id, path)
|
dir_id = seafile_api.get_dir_id_by_path(repo.id, path)
|
||||||
@@ -295,7 +292,8 @@ def list_lib_dir(request, repo_id):
|
|||||||
return HttpResponse(json.dumps({'error': err_msg}),
|
return HttpResponse(json.dumps({'error': err_msg}),
|
||||||
status=404, content_type=content_type)
|
status=404, content_type=content_type)
|
||||||
|
|
||||||
dirs = seafserv_threaded_rpc.list_dir_with_perm(repo_id, path, dir_id, username, offset, limit)
|
dirs = seafserv_threaded_rpc.list_dir_with_perm(repo_id, path, dir_id,
|
||||||
|
username, -1, -1)
|
||||||
starred_files = get_dir_starred_files(username, repo_id, path)
|
starred_files = get_dir_starred_files(username, repo_id, path)
|
||||||
|
|
||||||
for dirent in dirs:
|
for dirent in dirs:
|
||||||
@@ -319,11 +317,6 @@ def list_lib_dir(request, repo_id):
|
|||||||
|
|
||||||
file_list.append(dirent)
|
file_list.append(dirent)
|
||||||
|
|
||||||
more_start = None
|
|
||||||
if limit == len(dirs):
|
|
||||||
dirent_more = True
|
|
||||||
more_start = offset + 100
|
|
||||||
|
|
||||||
if is_org_context(request):
|
if is_org_context(request):
|
||||||
repo_owner = seafile_api.get_org_repo_owner(repo.id)
|
repo_owner = seafile_api.get_org_repo_owner(repo.id)
|
||||||
else:
|
else:
|
||||||
@@ -335,9 +328,6 @@ def list_lib_dir(request, repo_id):
|
|||||||
result["user_perm"] = user_perm
|
result["user_perm"] = user_perm
|
||||||
result["encrypted"] = repo.encrypted
|
result["encrypted"] = repo.encrypted
|
||||||
|
|
||||||
result["dirent_more"] = dirent_more
|
|
||||||
result["more_start"] = more_start
|
|
||||||
|
|
||||||
dirent_list = []
|
dirent_list = []
|
||||||
for d in dir_list:
|
for d in dir_list:
|
||||||
d_ = {}
|
d_ = {}
|
||||||
|
@@ -182,7 +182,6 @@ define([
|
|||||||
},
|
},
|
||||||
|
|
||||||
/***** private functions *****/
|
/***** private functions *****/
|
||||||
|
|
||||||
addOne: function(dirent) {
|
addOne: function(dirent) {
|
||||||
var view;
|
var view;
|
||||||
if (this.view_mode == 'list') {
|
if (this.view_mode == 'list') {
|
||||||
@@ -194,13 +193,28 @@ define([
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
render_dirents_slice: function(start, limit) {
|
||||||
|
var dir = this.dir;
|
||||||
|
_.each(dir.slice(start, start + limit), this.addOne, this);
|
||||||
|
if (dir.length > start + limit) {
|
||||||
|
dir.dirent_more = true;
|
||||||
|
dir.last_start = start + limit;
|
||||||
|
} else {
|
||||||
|
dir.dirent_more = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
reset: function() {
|
reset: function() {
|
||||||
this.renderPath();
|
this.renderPath();
|
||||||
this.renderDirOpBar();
|
this.renderDirOpBar();
|
||||||
if (this.view_mode == 'list') {
|
if (this.view_mode == 'list') {
|
||||||
this.renderDirentsHd();
|
this.renderDirentsHd();
|
||||||
}
|
}
|
||||||
this.dir.each(this.addOne, this);
|
|
||||||
|
this.dir.last_start = 0;
|
||||||
|
this.dir.limit = 100;
|
||||||
|
this.render_dirents_slice(this.dir.last_start, this.dir.limit);
|
||||||
|
|
||||||
this.fileUploadView.setFileInput();
|
this.fileUploadView.setFileInput();
|
||||||
this.getImageThumbnail();
|
this.getImageThumbnail();
|
||||||
},
|
},
|
||||||
@@ -325,12 +339,8 @@ define([
|
|||||||
'p': dir.path,
|
'p': dir.path,
|
||||||
'thumbnail_size': thumbnail_size
|
'thumbnail_size': thumbnail_size
|
||||||
},
|
},
|
||||||
success: function(collection, response, opts) {
|
success: function() {
|
||||||
dir.last_start = 0; // for 'more'
|
loading_tip.hide();
|
||||||
if (response.dirent_list.length == 0 || // the dir is empty
|
|
||||||
!response.dirent_more ) { // no 'more'
|
|
||||||
loading_tip.hide();
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
error: function(collection, response, opts) {
|
error: function(collection, response, opts) {
|
||||||
loading_tip.hide();
|
loading_tip.hide();
|
||||||
@@ -641,7 +651,7 @@ define([
|
|||||||
};
|
};
|
||||||
dirents.sort();
|
dirents.sort();
|
||||||
this.$dirent_list_body.empty();
|
this.$dirent_list_body.empty();
|
||||||
dirents.each(this.addOne, this);
|
this.render_dirents_slice(0, this.dir.limit);
|
||||||
el.toggleClass('icon-caret-up icon-caret-down').show();
|
el.toggleClass('icon-caret-up icon-caret-down').show();
|
||||||
dirents.comparator = null;
|
dirents.comparator = null;
|
||||||
},
|
},
|
||||||
@@ -667,7 +677,7 @@ define([
|
|||||||
dirents.sort();
|
dirents.sort();
|
||||||
|
|
||||||
this.$dirent_list_body.empty();
|
this.$dirent_list_body.empty();
|
||||||
dirents.each(this.addOne, this);
|
this.render_dirents_slice(0, this.dir.limit);
|
||||||
el.toggleClass('icon-caret-up icon-caret-down').show();
|
el.toggleClass('icon-caret-up icon-caret-down').show();
|
||||||
dirents.comparator = null;
|
dirents.comparator = null;
|
||||||
},
|
},
|
||||||
@@ -1057,37 +1067,11 @@ define([
|
|||||||
|
|
||||||
onWindowScroll: function () {
|
onWindowScroll: function () {
|
||||||
// 'more'
|
// 'more'
|
||||||
var dir = this.dir,
|
if (this.dir.dirent_more &&
|
||||||
start = dir.more_start;
|
$(window).scrollTop() + $(window).height() > $(document).height() - $('#footer').outerHeight(true)) {
|
||||||
if (dir.dirent_more &&
|
|
||||||
$(window).scrollTop() + $(window).height() > $(document).height() - $('#footer').outerHeight(true) &&
|
this.render_dirents_slice(this.dir.last_start, this.dir.limit);
|
||||||
start != dir.last_start) {
|
this.getImageThumbnail();
|
||||||
var loading_tip = this.$('.loading-tip'),
|
|
||||||
_this = this;
|
|
||||||
dir.last_start = start;
|
|
||||||
var thumbnail_size = app.pageOptions.thumbnail_default_size;
|
|
||||||
if (this.view_mode == 'grid') {
|
|
||||||
thumbnail_size = app.pageOptions.thumbnail_size_for_grid;
|
|
||||||
}
|
|
||||||
dir.fetch({
|
|
||||||
cache: false,
|
|
||||||
remove: false,
|
|
||||||
data: {
|
|
||||||
'p': dir.path,
|
|
||||||
'thumbnail_size': thumbnail_size,
|
|
||||||
'start': dir.more_start
|
|
||||||
},
|
|
||||||
success: function (collection, response, opts) {
|
|
||||||
if (!response.dirent_more ) { // no 'more'
|
|
||||||
loading_tip.hide();
|
|
||||||
}
|
|
||||||
_this.getImageThumbnail();
|
|
||||||
},
|
|
||||||
error: function(xhr, textStatus, errorThrown) {
|
|
||||||
loading_tip.hide();
|
|
||||||
Common.ajaxErrorHandler(xhr, textStatus, errorThrown);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// fixed 'dir-op-bar'
|
// fixed 'dir-op-bar'
|
||||||
|
@@ -19,6 +19,5 @@ class ListLibDirTest(BaseTestCase):
|
|||||||
self.assertEqual(200, resp.status_code)
|
self.assertEqual(200, resp.status_code)
|
||||||
|
|
||||||
json_resp = json.loads(resp.content)
|
json_resp = json.loads(resp.content)
|
||||||
assert len(json_resp) == 8
|
|
||||||
assert self.folder_name == json_resp['dirent_list'][0]['obj_name']
|
assert self.folder_name == json_resp['dirent_list'][0]['obj_name']
|
||||||
assert self.repo.name == json_resp['repo_name']
|
assert self.repo.name == json_resp['repo_name']
|
||||||
|
Reference in New Issue
Block a user