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}),
|
||||
status=500, content_type=content_type)
|
||||
|
||||
offset = int(request.GET.get('start', 0))
|
||||
limit = 100
|
||||
dir_list = []
|
||||
file_list = []
|
||||
dirent_more = False
|
||||
|
||||
try:
|
||||
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}),
|
||||
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)
|
||||
|
||||
for dirent in dirs:
|
||||
@@ -319,11 +317,6 @@ def list_lib_dir(request, repo_id):
|
||||
|
||||
file_list.append(dirent)
|
||||
|
||||
more_start = None
|
||||
if limit == len(dirs):
|
||||
dirent_more = True
|
||||
more_start = offset + 100
|
||||
|
||||
if is_org_context(request):
|
||||
repo_owner = seafile_api.get_org_repo_owner(repo.id)
|
||||
else:
|
||||
@@ -335,9 +328,6 @@ def list_lib_dir(request, repo_id):
|
||||
result["user_perm"] = user_perm
|
||||
result["encrypted"] = repo.encrypted
|
||||
|
||||
result["dirent_more"] = dirent_more
|
||||
result["more_start"] = more_start
|
||||
|
||||
dirent_list = []
|
||||
for d in dir_list:
|
||||
d_ = {}
|
||||
|
@@ -182,7 +182,6 @@ define([
|
||||
},
|
||||
|
||||
/***** private functions *****/
|
||||
|
||||
addOne: function(dirent) {
|
||||
var view;
|
||||
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() {
|
||||
this.renderPath();
|
||||
this.renderDirOpBar();
|
||||
if (this.view_mode == 'list') {
|
||||
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.getImageThumbnail();
|
||||
},
|
||||
@@ -325,12 +339,8 @@ define([
|
||||
'p': dir.path,
|
||||
'thumbnail_size': thumbnail_size
|
||||
},
|
||||
success: function(collection, response, opts) {
|
||||
dir.last_start = 0; // for 'more'
|
||||
if (response.dirent_list.length == 0 || // the dir is empty
|
||||
!response.dirent_more ) { // no 'more'
|
||||
loading_tip.hide();
|
||||
}
|
||||
success: function() {
|
||||
loading_tip.hide();
|
||||
},
|
||||
error: function(collection, response, opts) {
|
||||
loading_tip.hide();
|
||||
@@ -641,7 +651,7 @@ define([
|
||||
};
|
||||
dirents.sort();
|
||||
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();
|
||||
dirents.comparator = null;
|
||||
},
|
||||
@@ -667,7 +677,7 @@ define([
|
||||
dirents.sort();
|
||||
|
||||
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();
|
||||
dirents.comparator = null;
|
||||
},
|
||||
@@ -1057,37 +1067,11 @@ define([
|
||||
|
||||
onWindowScroll: function () {
|
||||
// 'more'
|
||||
var dir = this.dir,
|
||||
start = dir.more_start;
|
||||
if (dir.dirent_more &&
|
||||
$(window).scrollTop() + $(window).height() > $(document).height() - $('#footer').outerHeight(true) &&
|
||||
start != dir.last_start) {
|
||||
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);
|
||||
}
|
||||
});
|
||||
if (this.dir.dirent_more &&
|
||||
$(window).scrollTop() + $(window).height() > $(document).height() - $('#footer').outerHeight(true)) {
|
||||
|
||||
this.render_dirents_slice(this.dir.last_start, this.dir.limit);
|
||||
this.getImageThumbnail();
|
||||
}
|
||||
|
||||
// fixed 'dir-op-bar'
|
||||
|
@@ -19,6 +19,5 @@ class ListLibDirTest(BaseTestCase):
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
json_resp = json.loads(resp.content)
|
||||
assert len(json_resp) == 8
|
||||
assert self.folder_name == json_resp['dirent_list'][0]['obj_name']
|
||||
assert self.repo.name == json_resp['repo_name']
|
||||
|
Reference in New Issue
Block a user