diff --git a/src/_h5ai/client/css/inc/topbar.less b/src/_h5ai/client/css/inc/topbar.less
index 9b5577a7..3c5eae01 100644
--- a/src/_h5ai/client/css/inc/topbar.less
+++ b/src/_h5ai/client/css/inc/topbar.less
@@ -3,6 +3,7 @@
position: fixed;
z-index: 5;
width: 100%;
+ height: 30px;
left: 0;
top: 0;
.vert-gradient(rgb(241,241,241), rgb(228,228,228));
diff --git a/src/_h5ai/client/css/inc/tree.less b/src/_h5ai/client/css/inc/tree.less
index 0d369fdd..75d0a7d8 100644
--- a/src/_h5ai/client/css/inc/tree.less
+++ b/src/_h5ai/client/css/inc/tree.less
@@ -93,6 +93,11 @@
margin: 0;
padding: 0 0 0 24px;
}
+ .summary {
+ margin: 0 0 0 24px;
+ color: #999;
+ font-style: italic;
+ }
.current {
> a, > a:active, > a:visited {
background-color: rgba(255,255,255,0.5);
diff --git a/src/_h5ai/client/js/inc/ext/crumb.js b/src/_h5ai/client/js/inc/ext/crumb.js
index dd631d41..d48fa005 100644
--- a/src/_h5ai/client/js/inc/ext/crumb.js
+++ b/src/_h5ai/client/js/inc/ext/crumb.js
@@ -82,6 +82,9 @@ modulejs.define('ext/crumb', ['_', '$', 'core/settings', 'core/resource', 'core/
_.each(crumb, function (e) {
$ul.append(update(e));
+
+ // needed by aai
+ // e.fetchStatus(function (e) { update(e); });
});
event.sub('entry.created', onContentChanged);
diff --git a/src/_h5ai/client/js/inc/ext/tree.js b/src/_h5ai/client/js/inc/ext/tree.js
index 5f0b8a92..7271b752 100644
--- a/src/_h5ai/client/js/inc/ext/tree.js
+++ b/src/_h5ai/client/js/inc/ext/tree.js
@@ -3,7 +3,8 @@ modulejs.define('ext/tree', ['_', '$', 'core/settings', 'core/resource', 'core/e
var settings = _.extend({
enabled: false,
- slide: true
+ slide: true,
+ maxSubfolders: 50
}, allsettings.tree),
template = '
' +
@@ -75,10 +76,17 @@ modulejs.define('ext/tree', ['_', '$', 'core/settings', 'core/resource', 'core/e
// does it have subfolders?
if (subfolders.length) {
- var $ul = $('
').appendTo($html);
+ var $ul = $('
').appendTo($html),
+ counter = 0;
_.each(subfolders, function (e) {
- $('
').append(update(e)).appendTo($ul);
+ counter += 1;
+ if (counter <= settings.maxSubfolders) {
+ $('
').append(update(e)).appendTo($ul);
+ }
});
+ if (subfolders.length > settings.maxSubfolders) {
+ $('
… ' + (subfolders.length - settings.maxSubfolders) + ' more subfolders').appendTo($ul);
+ }
if (!entry.isContentVisible) {
$ul.hide();
}
@@ -232,9 +240,11 @@ modulejs.define('ext/tree', ['_', '$', 'core/settings', 'core/resource', 'core/e
});
event.sub('ready', adjustSpacing);
- event.sub('entry.changed', onContentChanged);
- event.sub('entry.created', onContentChanged);
- event.sub('entry.removed', onContentChanged);
+
+ // strong negative performance impact in aai mode
+ // event.sub('entry.changed', onContentChanged);
+ // event.sub('entry.created', onContentChanged);
+ // event.sub('entry.removed', onContentChanged);
$(window).on('resize', function () {
diff --git a/src/_h5ai/client/js/inc/view/extended.js b/src/_h5ai/client/js/inc/view/extended.js
index 42e81263..e531df9f 100644
--- a/src/_h5ai/client/js/inc/view/extended.js
+++ b/src/_h5ai/client/js/inc/view/extended.js
@@ -4,7 +4,9 @@ modulejs.define('view/extended', ['_', '$', 'core/settings', 'core/resource', 'c
var settings = _.extend({
modes: ['details', 'icons'],
setParentFolderLabels: false,
- binaryPrefix: false
+ binaryPrefix: false,
+ maxFolders: 16,
+ delay: 2000
}, allsettings.view),
template = '
' +
@@ -111,9 +113,6 @@ modulejs.define('view/extended', ['_', '$', 'core/settings', 'core/resource', 'c
_.each(entry.content, function (e) {
$ul.append(update(e));
-
- // needed by aai
- e.fetchStatus(function (e) { update(e); });
});
$extended.append($ul);
@@ -154,6 +153,20 @@ modulejs.define('view/extended', ['_', '$', 'core/settings', 'core/resource', 'c
});
}
});
+
+
+ // needed by aai
+ if (_.size(entry.content) <= settings.maxFolders) {
+
+ _.each(entry.content, function (e) {
+
+ if (e.isFolder() && e.status === null) {
+ setTimeout(function () {
+ e.fetchStatus(function (e) { update(e); });
+ }, settings.delay);
+ }
+ });
+ }
};
init(entry);
diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json
index cdd8ebb5..511341ef 100644
--- a/src/_h5ai/conf/options.json
+++ b/src/_h5ai/conf/options.json
@@ -33,16 +33,20 @@ Options
The user selected view mode is also stored local in modern browsers
so that it will be persistent.
- Set parent folder labels to real folder names.
- Binary prefix set to true uses 1024B=1KiB when formatting
- file sizes (see http://en.wikipedia.org/wiki/Binary_prefix).
+ - setParentFolderLabels [all]: set parent folder labels to real folder names
+ - binaryPrefix [all]: set to true uses 1024B=1KiB when formatting file sizes
+ (see http://en.wikipedia.org/wiki/Binary_prefix)
+ - indexFiles [php]: consider folder with those files as non {{pkg.name}} folders
+ - ignore [php]: don't list items matching these regular expressions
+ - maxFolders [aai]: max folders to trigger folder status checks
*/
"view": {
"modes": ["details", "list", "grid", "icons"],
"setParentFolderLabels": true,
"binaryPrefix": false,
"indexFiles": ["index.html", "index.htm", "index.php"],
- "ignore": ["^\\.", "^_{{pkg.name}}"]
+ "ignore": ["^\\.", "^_{{pkg.name}}"],
+ "maxFolders": 16
},
@@ -274,7 +278,7 @@ Options
},
/* [php]
- Show thumbnails for image files. Needs the "/_h5ai/cache" folder to be
+ Show thumbnails for image files. Needs the "/_{{pkg.name}}/cache" folder to be
writable for the web Server.
- img thumbnails depend on PHP-GD
- mov thumbnails depend on ffmpeg
@@ -303,6 +307,7 @@ Options
*/
"tree": {
"enabled": true,
- "slide": true
+ "slide": true,
+ "maxSubfolders": 50
}
}