aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vfs/vfs.d.ts26
-rw-r--r--vfs/vfs.js84
-rw-r--r--vfs/vfs.ts90
3 files changed, 92 insertions, 108 deletions
diff --git a/vfs/vfs.d.ts b/vfs/vfs.d.ts
index c15d29c..3be3f6a 100644
--- a/vfs/vfs.d.ts
+++ b/vfs/vfs.d.ts
@@ -22,31 +22,15 @@ export interface VfsOptions {
export declare class Vfs {
opts: VfsOptions;
private el;
- private comPath;
- private comList;
- private pathNode;
+ private com_path;
+ private com_list;
+ private path_node;
constructor(opts: VfsOptions);
- init(): Promise<void>;
- onClickNode(this: Vfs, node: VfsNode): void;
+ private init;
+ private open;
OpenPath(this: Vfs, path: string): void;
- open(node: VfsNode): void;
-}
-declare class VfsNode implements IVfsNode {
- path: string;
- name: string;
- mod_time_epoch: number;
- mod_time_rfc3339: string;
- size: number;
- mode: string;
- is_dir: boolean;
- childs: VfsNode[];
- el: HTMLElement;
- constructor(opts: IVfsNode, onClick: NodeClickHandler);
- onMouseOut(t: VfsNode): void;
- onMouseOver(t: VfsNode): void;
}
declare type IPathNode = {
[key: string]: IVfsNode;
};
-declare type NodeClickHandler = (node: VfsNode) => void;
export {};
diff --git a/vfs/vfs.js b/vfs/vfs.js
index 7674847..0a0ef33 100644
--- a/vfs/vfs.js
+++ b/vfs/vfs.js
@@ -43,74 +43,74 @@ exports.Vfs = void 0;
var Vfs = /** @class */ (function () {
function Vfs(opts) {
this.opts = opts;
- this.el = null;
- this.pathNode = {};
- this.el = document.getElementById(opts.id);
- if (!this.el) {
+ this.path_node = {};
+ var el = document.getElementById(opts.id);
+ if (!el) {
console.error("Vfs: element id", opts.id, "not found");
return;
}
+ this.el = el;
}
+ //
+ // (0) Fetch the list of nodes from remote server and store it in path_node.
+ // (1) Create the VfsPath
+ // (2) Create the VfsList
+ // (3) Open the root "/"
+ //
Vfs.prototype.init = function () {
return __awaiter(this, void 0, void 0, function () {
- var resPathNode, key, value, node;
+ var res_path_node, key, value, node;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
- case 0:
- if (!this.el) {
- return [2 /*return*/];
- }
- return [4 /*yield*/, this.opts.ListNodes()];
+ case 0: return [4 /*yield*/, this.opts.ListNodes()];
case 1:
- resPathNode = _a.sent();
- if (!resPathNode) {
+ res_path_node = _a.sent();
+ if (!res_path_node) {
return [2 /*return*/];
}
- for (key in resPathNode) {
- value = resPathNode[key];
+ for (key in res_path_node) {
+ value = res_path_node[key];
node = new VfsNode(value, function (node) {
- _this.onClickNode(node);
+ if (_this.opts.OnClickNode) {
+ _this.opts.OnClickNode(node.path, node.is_dir);
+ }
+ if (node.is_dir) {
+ _this.open(node);
+ }
});
- this.pathNode[key] = node;
+ this.path_node[key] = node;
}
this.el.innerHTML = "";
- this.comPath = new VfsPath(function (path) {
+ // (1)
+ this.com_path = new VfsPath(function (path) {
_this.OpenPath(path);
});
- this.el.appendChild(this.comPath.el);
- this.comList = new VfsList();
- this.el.appendChild(this.comList.el);
- this.open(this.pathNode["/"]);
+ this.el.appendChild(this.com_path.el);
+ // (2)
+ this.com_list = new VfsList();
+ this.el.appendChild(this.com_list.el);
+ // (3)
+ this.open(this.path_node["/"]);
return [2 /*return*/];
}
});
});
};
- Vfs.prototype.onClickNode = function (node) {
- if (this.opts.OnClickNode) {
- this.opts.OnClickNode(node.path, node.is_dir);
- }
- if (node.is_dir) {
- this.comPath.open(node);
- this.comList.open(node);
- }
+ Vfs.prototype.open = function (node) {
+ this.com_path.open(node);
+ this.com_list.open(node);
};
+ // OpenPath is a handler that will be called when the directory name on
+ // top of UI clicked.
Vfs.prototype.OpenPath = function (path) {
- var node = this.pathNode[path];
+ var node = this.path_node[path];
if (!node) {
console.error("Vfs: OpenPath: invalid path: ", path);
return;
}
- if (this.opts.OnClickNode) {
- this.opts.OnClickNode(node.path, node.is_dir);
- }
this.open(node);
};
- Vfs.prototype.open = function (node) {
- this.comPath.open(node);
- this.comList.open(node);
- };
return Vfs;
}());
exports.Vfs = Vfs;
@@ -201,15 +201,15 @@ var VfsPath = /** @class */ (function () {
paths = node.path.split("/");
}
var _loop_1 = function (x) {
- var fullPath = "";
+ var full_path = "";
var p = "";
if (x == 0) {
p = "/";
- fullPath = "/";
+ full_path = "/";
}
else {
p = paths[x];
- fullPath = paths.slice(0, x + 1).join("/");
+ full_path = paths.slice(0, x + 1).join("/");
}
var crumb = document.createElement("span");
crumb.style.display = "inline-block";
@@ -217,7 +217,7 @@ var VfsPath = /** @class */ (function () {
crumb.style.cursor = "pointer";
crumb.innerHTML = p;
crumb.onclick = function (event) {
- _this.onClick(fullPath);
+ _this.onClick(full_path);
};
crumb.onmouseout = function (event) {
_this.onMouseOut(crumb, event);
@@ -240,4 +240,4 @@ var VfsPath = /** @class */ (function () {
};
return VfsPath;
}());
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidmZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxrRUFBa0U7QUFDbEUseUVBQXlFO0FBQ3pFLDZCQUE2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0I3QjtJQU1DLGFBQW1CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFMM0IsT0FBRSxHQUF1QixJQUFJLENBQUE7UUFHN0IsYUFBUSxHQUFhLEVBQUUsQ0FBQTtRQUc5QixJQUFJLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQ3RELE9BQU07U0FDTjtJQUNGLENBQUM7SUFFSyxrQkFBSSxHQUFWOzs7Ozs7O3dCQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFOzRCQUNiLHNCQUFNO3lCQUNOO3dCQUVpQixxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFBOzt3QkFBekMsV0FBVyxHQUFHLFNBQTJCO3dCQUM3QyxJQUFJLENBQUMsV0FBVyxFQUFFOzRCQUNqQixzQkFBTTt5QkFDTjt3QkFFRCxLQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUU7NEJBQ3hCLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFhLENBQUE7NEJBQ3BDLElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsVUFBQyxJQUFhO2dDQUM3QyxLQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBOzRCQUN2QixDQUFDLENBQUMsQ0FBQTs0QkFDRixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElB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 \ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidmZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxrRUFBa0U7QUFDbEUseUVBQXlFO0FBQ3pFLDZCQUE2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0I3QjtJQU1DLGFBQW1CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFGM0IsY0FBUyxHQUFhLEVBQUUsQ0FBQTtRQUcvQixJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN6QyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQ3RELE9BQU07U0FDTjtRQUNELElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFBO0lBQ2IsQ0FBQztJQUVELEVBQUU7SUFDRiw0RUFBNEU7SUFDNUUseUJBQXlCO0lBQ3pCLHlCQUF5QjtJQUN6Qix3QkFBd0I7SUFDeEIsRUFBRTtJQUNZLGtCQUFJLEdBQWxCOzs7Ozs7NEJBRXFCLHFCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUE7O3dCQUEzQyxhQUFhLEdBQUcsU0FBMkI7d0JBQy9DLElBQUksQ0FBQyxhQUFhLEVBQUU7NEJBQ25CLHNCQUFNO3lCQUNOO3dCQUVELEtBQVcsR0FBRyxJQUFJLGFBQWEsRUFBRTs0QkFDMUIsS0FBSyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQWEsQ0FBQTs0QkFDdEMsSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxVQUFDLElBQWE7Z0NBQzdDLElBQUksS0FBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7b0NBQzFCLEtBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVB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 \ No newline at end of file
diff --git a/vfs/vfs.ts b/vfs/vfs.ts
index a77608a..a39f0f1 100644
--- a/vfs/vfs.ts
+++ b/vfs/vfs.ts
@@ -32,77 +32,77 @@ export interface VfsOptions {
}
export class Vfs {
- private el: HTMLElement | null = null
- private comPath!: VfsPath
- private comList!: VfsList
- private pathNode: PathNode = {}
+ private el!: HTMLElement
+ private com_path!: VfsPath
+ private com_list!: VfsList
+ private path_node: PathNode = {}
constructor(public opts: VfsOptions) {
- this.el = document.getElementById(opts.id)
- if (!this.el) {
+ let el = document.getElementById(opts.id)
+ if (!el) {
console.error("Vfs: element id", opts.id, "not found")
return
}
+ this.el = el
}
- async init() {
- if (!this.el) {
+ //
+ // (0) Fetch the list of nodes from remote server and store it in path_node.
+ // (1) Create the VfsPath
+ // (2) Create the VfsList
+ // (3) Open the root "/"
+ //
+ private async init() {
+ // (0)
+ let res_path_node = await this.opts.ListNodes()
+ if (!res_path_node) {
return
}
- let resPathNode = await this.opts.ListNodes()
- if (!resPathNode) {
- return
- }
-
- for (const key in resPathNode) {
- const value = resPathNode[key] as IVfsNode
+ for (const key in res_path_node) {
+ const value = res_path_node[key] as IVfsNode
const node = new VfsNode(value, (node: VfsNode) => {
- this.onClickNode(node)
+ if (this.opts.OnClickNode) {
+ this.opts.OnClickNode(node.path, node.is_dir)
+ }
+ if (node.is_dir) {
+ this.open(node)
+ }
})
- this.pathNode[key] = node
+ this.path_node[key] = node
}
this.el.innerHTML = ""
- this.comPath = new VfsPath((path: string) => {
+ // (1)
+ this.com_path = new VfsPath((path: string) => {
this.OpenPath(path)
})
- this.el.appendChild(this.comPath.el)
+ this.el.appendChild(this.com_path.el)
- this.comList = new VfsList()
- this.el.appendChild(this.comList.el)
+ // (2)
+ this.com_list = new VfsList()
+ this.el.appendChild(this.com_list.el)
- this.open(this.pathNode["/"])
+ // (3)
+ this.open(this.path_node["/"])
}
- onClickNode(this: Vfs, node: VfsNode) {
- if (this.opts.OnClickNode) {
- this.opts.OnClickNode(node.path, node.is_dir)
- }
- if (node.is_dir) {
- this.comPath.open(node)
- this.comList.open(node)
- }
+ private open(node: VfsNode) {
+ this.com_path.open(node)
+ this.com_list.open(node)
}
- OpenPath(this: Vfs, path: string) {
- const node = this.pathNode[path]
+ // OpenPath is a handler that will be called when the directory name on
+ // top of UI clicked.
+ public OpenPath(this: Vfs, path: string) {
+ const node = this.path_node[path]
if (!node) {
console.error("Vfs: OpenPath: invalid path: ", path)
return
}
- if (this.opts.OnClickNode) {
- this.opts.OnClickNode(node.path, node.is_dir)
- }
this.open(node)
}
-
- open(node: VfsNode) {
- this.comPath.open(node)
- this.comList.open(node)
- }
-
}
class VfsNode implements IVfsNode {
@@ -214,15 +214,15 @@ class VfsPath {
}
for (let x = 0; x < paths.length; x++) {
- let fullPath = ""
+ let full_path = ""
let p = ""
if (x == 0) {
p = "/"
- fullPath = "/"
+ full_path = "/"
} else {
p = paths[x]
- fullPath = paths.slice(0, x + 1).join("/")
+ full_path = paths.slice(0, x + 1).join("/")
}
let crumb = document.createElement("span")
@@ -232,7 +232,7 @@ class VfsPath {
crumb.innerHTML = p
crumb.onclick = (event) => {
- this.onClick(fullPath)
+ this.onClick(full_path)
}
crumb.onmouseout = (event) => {
this.onMouseOut(crumb, event)