More refactorings.

This commit is contained in:
Lars Jung 2011-10-06 05:12:29 +02:00
parent 4c1ed3d1e8
commit caced60eaa
10 changed files with 150 additions and 165 deletions

View file

@ -16,5 +16,5 @@ release.dir = release
# tools # tools
wepp = tools/wepp tool.wepp = tools/wepp

View file

@ -99,18 +99,14 @@ H5aiJs.factory.Extended = function () {
$(".folderCount").text($("#extended .entry.folder:not(.parentfolder)").size()); $(".folderCount").text($("#extended .entry.folder:not(.parentfolder)").size());
$(".fileCount").text($("#extended .entry.file").size()); $(".fileCount").text($("#extended .entry.file").size());
},
init = function () {
initTitle();
initBreadcrumb();
initExtendedView();
customize();
initCounts();
},
extended = {
init: init
}; };
return extended; this.init = function () {
initTitle();
initBreadcrumb();
initExtendedView();
customize();
initCounts();
};
}; };

View file

@ -2,7 +2,8 @@
H5aiJs.factory.H5ai = function (options, langs) { H5aiJs.factory.H5ai = function (options, langs) {
var defaults = { var $window = $(window),
defaults = {
store: { store: {
viewmode: "h5ai.viewmode", viewmode: "h5ai.viewmode",
lang: "h5ai.lang" lang: "h5ai.lang"
@ -41,7 +42,7 @@ H5aiJs.factory.H5ai = function (options, langs) {
triggerPathClick = function (path, context) { triggerPathClick = function (path, context) {
$.each(settings.callbacks.pathClick, function (idx, callback) { $.each(settings.callbacks.pathClick, function (idx, callback) {
callback.call(window, path, context); callback(path, context);
}); });
}, },
getViewmode = function () { getViewmode = function () {
@ -82,7 +83,7 @@ H5aiJs.factory.H5ai = function (options, langs) {
var adjustTopSpace = function () { var adjustTopSpace = function () {
var winHeight = $(window).height(), var winHeight = $window.height(),
navHeight = $("body > nav").outerHeight(), navHeight = $("body > nav").outerHeight(),
footerHeight = $("body > footer").outerHeight(), footerHeight = $("body > footer").outerHeight(),
contentSpacing = 50, contentSpacing = 50,
@ -103,7 +104,7 @@ H5aiJs.factory.H5ai = function (options, langs) {
} catch (err) {} } catch (err) {}
}; };
$(window).resize(function () { $window.resize(function () {
adjustTopSpace(); adjustTopSpace();
}); });
adjustTopSpace(); adjustTopSpace();
@ -141,7 +142,7 @@ H5aiJs.factory.H5ai = function (options, langs) {
$(".status.default").show(); $(".status.default").show();
$(".status.dynamic").empty().hide(); $(".status.dynamic").empty().hide();
} }
); );
}, },
shiftTree = function (forceVisible, dontAnimate) { shiftTree = function (forceVisible, dontAnimate) {
@ -168,7 +169,7 @@ H5aiJs.factory.H5ai = function (options, langs) {
function () { shiftTree(true); }, function () { shiftTree(true); },
function () { shiftTree(); } function () { shiftTree(); }
); );
$(window).resize(function () { shiftTree(); }); $window.resize(function () { shiftTree(); });
shiftTree(false, true); shiftTree(false, true);
}, },
linkHoverStates = function () { linkHoverStates = function () {
@ -266,7 +267,9 @@ H5aiJs.factory.H5ai = function (options, langs) {
$indicator.addClass("open"); $indicator.addClass("open");
$entry.find("> .content").replaceWith($content); $entry.find("> .content").replaceWith($content);
$("#tree").get(0).updateScrollbar(); $("#tree").get(0).updateScrollbar();
initIndicators(); $content.find(".indicator:not(.initiated)")
.click(onIndicatorClick)
.addClass("initiated");
} }
}); });
} else if ($indicator.hasClass("open")) { } else if ($indicator.hasClass("open")) {
@ -285,16 +288,14 @@ H5aiJs.factory.H5ai = function (options, langs) {
}, },
initIndicators = function () { initIndicators = function () {
$("#tree .entry.folder .indicator:not(.initiated)").each(function () { $("#tree .entry.folder .indicator:not(.initiated)")
.click(onIndicatorClick)
$(this).addClass("initiated").click(onIndicatorClick); .addClass("initiated");
});
}, },
initZippedDownload = function () { initZippedDownload = function () {
var x = 0, var x = 0,
y = 0, y = 0,
$window = $(window),
selected = function (hrefs) { selected = function (hrefs) {
var query, idx; var query, idx;
@ -377,16 +378,15 @@ H5aiJs.factory.H5ai = function (options, langs) {
localize(langs, settings.lang, settings.useBrowserLang); localize(langs, settings.lang, settings.useBrowserLang);
initIndicators(); initIndicators();
initZippedDownload(); initZippedDownload();
},
h5ai = {
settings: settings,
shiftTree: shiftTree,
linkHoverStates: linkHoverStates,
pathClick: pathClick,
triggerPathClick: triggerPathClick,
initIndicators: initIndicators,
init: init
}; };
return h5ai; return {
settings: settings,
shiftTree: shiftTree,
linkHoverStates: linkHoverStates,
pathClick: pathClick,
triggerPathClick: triggerPathClick,
initIndicators: initIndicators,
init: init
};
}; };

View file

@ -2,104 +2,95 @@
H5aiJs.factory.Path = function (folder, tableRow) { H5aiJs.factory.Path = function (folder, tableRow) {
var path, var checkedDecodeUri = function (uri) {
checkedDecodeUri = function (uri) {
try { return decodeURI(uri); } catch (err) {} try { return decodeURI(uri); } catch (err) {}
return uri; return uri;
}, },
isEmpty = function () { $tds, $img, $a, splits;
return !path.content || $.isEmptyObject(path.content); // parentFolder: undefined,
}, // label: undefined,
onClick = function (context) { // date: undefined,
// size: undefined,
// href: undefined,
// absHref: undefined,
// alt: undefined,
// icon16: undefined,
// icon48: undefined,
// isFolder: undefined,
// isParentFolder: undefined,
// isCurrentFolder: undefined,
// isDomain: undefined,
H5aiJs.h5ai.triggerPathClick(path, context); this.status = undefined; // undefined, "h5ai" or HTTP response code
}, this.content = undefined; // associative array path.absHref -> path
init = function () { this.html = {
$crumb: undefined,
$extended: undefined,
$tree: undefined
};
this.treeOpen = false;
var $tds, $img, $a, splits; if (!H5aiJs.pathCache.pathEndsWithSlash(folder)) {
folder += "/";
}
path = { if (tableRow) {
// parentFolder: undefined, $tds = $(tableRow).find("td");
// label: undefined, $img = $tds.eq(0).find("img");
// date: undefined, $a = $tds.eq(1).find("a");
// size: undefined,
// href: undefined,
// absHref: undefined,
// alt: undefined,
// icon16: undefined,
// icon48: undefined,
// isFolder: undefined,
// isParentFolder: undefined,
// isCurrentFolder: undefined,
// isDomain: undefined,
status: undefined, // undefined, "h5ai" or HTTP response code this.parentFolder = folder;
content: undefined, // associative array path.absHref -> path this.label = $a.text();
html: { this.date = $tds.eq(2).text();
$crumb: undefined, this.size = $tds.eq(3).text();
$extended: undefined, this.href = $a.attr("href");
$tree: undefined this.alt = $img.attr("alt");
}, this.icon16 = $img.attr("src");
treeOpen: false, } else {
splits = H5aiJs.pathCache.splitPathname(folder);
isEmpty: isEmpty, this.parentFolder = splits[0];
onClick: onClick this.label = checkedDecodeUri(splits[1]);
}; if (this.label === "/") {
this.label = checkedDecodeUri(document.domain) + "/";
}
this.date = "";
this.size = "";
this.href = splits[1];
this.alt = "[DIR]";
this.icon16 = "/h5ai/icons/16x16/folder.png";
}
if (!H5aiJs.pathCache.pathEndsWithSlash(folder)) { if (H5aiJs.pathCache.pathEndsWithSlash(this.label)) {
folder += "/"; this.label = this.label.slice(0, -1);
} }
if (tableRow) { this.icon48 = this.icon16.replace("16x16", "48x48");
$tds = $(tableRow).find("td"); this.isFolder = (this.alt === "[DIR]");
$img = $tds.eq(0).find("img"); this.isParentFolder = (this.isFolder && this.label === "Parent Directory");
$a = $tds.eq(1).find("a"); this.absHref = this.isParentFolder ? this.href : this.parentFolder + this.href;
this.isCurrentFolder = (this.absHref === document.location.pathname);
this.isDomain = (this.absHref === "/");
path.parentFolder = folder; if (this.isParentFolder && H5aiJs.h5ai.settings.setParentFolderLabels) {
path.label = $a.text(); if (this.isDomain) {
path.date = $tds.eq(2).text(); this.label = checkedDecodeUri(document.domain);
path.size = $tds.eq(3).text(); } else {
path.href = $a.attr("href"); this.label = checkedDecodeUri(H5aiJs.pathCache.splitPathname(H5aiJs.pathCache.splitPathname(this.parentFolder)[0])[1].slice(0, -1));
path.alt = $img.attr("alt"); }
path.icon16 = $img.attr("src"); }
} else { };
splits = H5aiJs.pathCache.splitPathname(folder);
H5aiJs.factory.Path.prototype = {
path.parentFolder = splits[0];
path.label = checkedDecodeUri(splits[1]); isEmpty: function () {
if (path.label === "/") {
path.label = checkedDecodeUri(document.domain) + "/"; return !this.content || $.isEmptyObject(this.content);
} },
path.date = ""; onClick: function (context) {
path.size = "";
path.href = splits[1]; H5aiJs.h5ai.triggerPathClick(this, context);
path.alt = "[DIR]"; }
path.icon16 = "/h5ai/icons/16x16/folder.png";
}
if (H5aiJs.pathCache.pathEndsWithSlash(path.label)) {
path.label = path.label.slice(0, -1);
}
path.icon48 = path.icon16.replace("16x16", "48x48");
path.isFolder = (path.alt === "[DIR]");
path.isParentFolder = (path.isFolder && path.label === "Parent Directory");
path.absHref = path.isParentFolder ? path.href : path.parentFolder + path.href;
path.isCurrentFolder = (path.absHref === document.location.pathname);
path.isDomain = (path.absHref === "/");
if (path.isParentFolder && H5aiJs.h5ai.settings.setParentFolderLabels) {
if (path.isDomain) {
path.label = checkedDecodeUri(document.domain);
} else {
path.label = checkedDecodeUri(H5aiJs.pathCache.splitPathname(H5aiJs.pathCache.splitPathname(path.parentFolder)[0])[1].slice(0, -1));
}
}
};
init();
return path;
}; };

View file

@ -2,8 +2,7 @@
H5aiJs.factory.PathCache = function () { H5aiJs.factory.PathCache = function () {
var pathCache, var cache = {},
cache = {},
rePathnameSplit = /^(\/(.*\/)*)([^\/]+\/?)$/, rePathnameSplit = /^(\/(.*\/)*)([^\/]+\/?)$/,
rePathEndsWithSlash = /\/$/, rePathEndsWithSlash = /\/$/,
splitPathname = function (pathname) { splitPathname = function (pathname) {
@ -50,12 +49,8 @@ H5aiJs.factory.PathCache = function () {
return path; return path;
}; };
pathCache = { this.splitPathname = splitPathname;
splitPathname: splitPathname, this.pathEndsWithSlash = pathEndsWithSlash;
pathEndsWithSlash: pathEndsWithSlash, this.getPath = getPath;
getPath: getPath, this.cache = cache;
cache: cache
};
return pathCache;
}; };

View file

@ -6,6 +6,7 @@
// http://paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/ // http://paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/
// modified // modified
$.log = function () { $.log = function () {
$.log.history = $.log.history || []; $.log.history = $.log.history || [];
$.log.history.push(arguments); $.log.history.push(arguments);
if (window.console) { if (window.console) {
@ -14,17 +15,17 @@
}; };
$.timer = (function () { $.timer = (function () {
var start = $.now(),
last = start,
timer = {
log: function (label) {
var now = $.now();
$.log("timer", label, "+" + (now - last), "=" + (now - start));
last = now;
}
};
return timer; var start = $.now(),
last = start;
return {
log: function (label) {
var now = $.now();
$.log("timer", label, "+" + (now - last), "=" + (now - start));
last = now;
}
};
}()); }());
}(jQuery)); }(jQuery));

View file

@ -9,6 +9,7 @@
var H5aiJs = { var H5aiJs = {
factory: {}, factory: {},
init: function () { init: function () {
this.h5ai = new this.factory.H5ai(h5aiOptions, h5aiLangs); this.h5ai = new this.factory.H5ai(h5aiOptions, h5aiLangs);
this.pathCache = new this.factory.PathCache(); this.pathCache = new this.factory.PathCache();
this.connector = new this.factory.Connector(); this.connector = new this.factory.Connector();

View file

@ -9,6 +9,7 @@
var H5aiJs = { var H5aiJs = {
factory: {}, factory: {},
init: function () { init: function () {
this.h5ai = new this.factory.H5ai(h5aiOptions, h5aiLangs); this.h5ai = new this.factory.H5ai(h5aiOptions, h5aiLangs);
this.h5ai.init(); this.h5ai.init();

View file

@ -6,7 +6,7 @@
<attribute name="toFile" /> <attribute name="toFile" />
<attribute name="args" default="" /> <attribute name="args" default="" />
<sequential> <sequential>
<exec executable="${wepp}"> <exec executable="${tool.wepp}">
<arg line="@{args}" /> <arg line="@{args}" />
<arg value="--in" /> <arg value="--in" />
<arg value="@{file}" /> <arg value="@{file}" />
@ -20,7 +20,7 @@
<attribute name="dir" /> <attribute name="dir" />
<attribute name="args" default="" /> <attribute name="args" default="" />
<sequential> <sequential>
<exec executable="${wepp}"> <exec executable="${tool.wepp}">
<arg line="@{args}" /> <arg line="@{args}" />
<arg value="--inDir" /> <arg value="--inDir" />
<arg value="@{dir}" /> <arg value="@{dir}" />