diff --git a/src/_h5ai/client/js/inc/view/item.js b/src/_h5ai/client/js/inc/view/item.js
deleted file mode 100644
index a770e05b..00000000
--- a/src/_h5ai/client/js/inc/view/item.js
+++ /dev/null
@@ -1,61 +0,0 @@
-modulejs.define('view/item', ['_', '$', 'core/format', 'core/location', 'core/resource', 'core/settings'], function (_, $, format, location, resource, allsettings) {
-
- var settings = _.extend({
- setParentFolderLabels: false
- }, allsettings.view);
- var template =
- '
' +
- '' +
- '
' +
- '
' +
- '' +
- '' +
- '' +
- '' +
- '';
-
-
- function render(item) {
-
- var $html = $(template);
- var $a = $html.find('a');
- var $iconImg = $html.find('.icon img');
- var $label = $html.find('.label');
- var $date = $html.find('.date');
- var $size = $html.find('.size');
-
- $html
- .addClass(item.isFolder() ? 'folder' : 'file')
- .data('item', item);
-
- location.setLink($a, item);
-
- $label.text(item.label).attr('title', item.label);
- $date.data('time', item.time).text(format.formatDate(item.time));
- $size.data('bytes', item.size).text(format.formatSize(item.size));
- item.icon = resource.icon(item.type);
-
- if (item.isFolder() && !item.isManaged) {
- $html.addClass('page');
- item.icon = resource.icon('folder-page');
- }
-
- if (item.isCurrentParentFolder()) {
- item.icon = resource.icon('folder-parent');
- if (!settings.setParentFolderLabels) {
- $label.addClass('l10n-parentDirectory');
- }
- $html.addClass('folder-parent');
- }
- $iconImg.attr('src', item.icon).attr('alt', item.type);
-
- item.$view = $html;
-
- return $html;
- }
-
-
- return {
- render: render
- };
-});
diff --git a/src/_h5ai/client/js/inc/view/view.js b/src/_h5ai/client/js/inc/view/view.js
index 9a0fa82c..80abb9a2 100644
--- a/src/_h5ai/client/js/inc/view/view.js
+++ b/src/_h5ai/client/js/inc/view/view.js
@@ -1,9 +1,10 @@
-modulejs.define('view/view', ['_', '$', 'core/event', 'core/format', 'core/settings', 'view/content', 'view/item'], function (_, $, event, format, allsettings, content, viewitem) {
+modulejs.define('view/view', ['_', '$', 'core/event', 'core/format', 'core/location', 'core/resource', 'core/settings', 'view/content'], function (_, $, event, format, location, resource, allsettings, content) {
var settings = _.extend({
binaryPrefix: false,
hideFolders: false,
- hideParentFolder: false
+ hideParentFolder: false,
+ setParentFolderLabels: false
}, allsettings.view);
var template =
'' +
@@ -17,11 +18,60 @@ modulejs.define('view/view', ['_', '$', 'core/event', 'core/format', 'core/setti
'' +
'
' +
'
';
+ var itemTemplate =
+ '' +
+ '' +
+ '
' +
+ '
' +
+ '' +
+ '' +
+ '' +
+ '' +
+ '';
var $view = $(template);
var $items = $view.find('#items');
var $empty = $view.find('.empty');
+ function itemToHtml(item) {
+
+ var $html = $(itemTemplate);
+ var $a = $html.find('a');
+ var $iconImg = $html.find('.icon img');
+ var $label = $html.find('.label');
+ var $date = $html.find('.date');
+ var $size = $html.find('.size');
+
+ $html
+ .addClass(item.isFolder() ? 'folder' : 'file')
+ .data('item', item);
+
+ location.setLink($a, item);
+
+ $label.text(item.label).attr('title', item.label);
+ $date.data('time', item.time).text(format.formatDate(item.time));
+ $size.data('bytes', item.size).text(format.formatSize(item.size));
+ item.icon = resource.icon(item.type);
+
+ if (item.isFolder() && !item.isManaged) {
+ $html.addClass('page');
+ item.icon = resource.icon('folder-page');
+ }
+
+ if (item.isCurrentParentFolder()) {
+ item.icon = resource.icon('folder-parent');
+ if (!settings.setParentFolderLabels) {
+ $label.addClass('l10n-parentDirectory');
+ }
+ $html.addClass('folder-parent');
+ }
+ $iconImg.attr('src', item.icon).attr('alt', item.type);
+
+ item.$view = $html;
+
+ return $html;
+ }
+
function onMouseenter() {
var item = $(this).closest('.item').data('item');
@@ -39,13 +89,13 @@ modulejs.define('view/view', ['_', '$', 'core/event', 'core/format', 'core/setti
$items.find('.item').remove();
if (item.parent && !settings.hideParentFolder) {
- $items.append(viewitem.render(item.parent));
+ $items.append(itemToHtml(item.parent));
}
_.each(item.content, function (e) {
if (!(e.isFolder() && settings.hideFolders)) {
- $items.append(viewitem.render(e));
+ $items.append(itemToHtml(e));
}
});
@@ -63,7 +113,7 @@ modulejs.define('view/view', ['_', '$', 'core/event', 'core/format', 'core/setti
_.each(added, function (item) {
if (!(item.isFolder() && settings.hideFolders)) {
- viewitem.render(item).hide().appendTo($items).fadeIn(400);
+ itemToHtml(item).hide().appendTo($items).fadeIn(400);
}
});
diff --git a/test/tests/unit/view/item.js b/test/tests/unit/view/item.js
deleted file mode 100644
index a99c5d38..00000000
--- a/test/tests/unit/view/item.js
+++ /dev/null
@@ -1,134 +0,0 @@
-(function () {
-'use strict';
-
-var ID = 'view/item';
-var DEPS = ['_', '$', 'core/format', 'core/location', 'core/resource', 'core/settings'];
-
-describe('module \'' + ID + '\'', function () {
-
- before(function () {
-
- this.definition = modulejs._private.definitions[ID];
-
- this.xFormat = {
- formatDate: sinon.stub().returns(util.uniqId()),
- formatSize: sinon.stub().returns(util.uniqId())
- };
- this.xLocation = {
- setLink: sinon.stub().returns(util.uniqId())
- };
- this.xResource = {
- icon: sinon.stub().returns(util.uniqId())
- };
- this.xSettings = {view: {
- setParentFolderLabels: false
- }};
-
- this.applyFn = function () {
-
- this.xFormat.formatDate.reset();
- this.xFormat.formatSize.reset();
- this.xLocation.setLink.reset();
- this.xResource.icon.reset();
-
- return this.definition.fn(_, $, this.xFormat, this.xLocation, this.xResource, this.xSettings);
- };
- });
-
- describe('definition', function () {
-
- it('is defined', function () {
-
- assert.isPlainObject(this.definition);
- });
-
- it('has correct id', function () {
-
- assert.strictEqual(this.definition.id, ID);
- });
-
- it('requires correct', function () {
-
- assert.deepEqual(this.definition.deps, DEPS);
- });
-
- it('args for each request', function () {
-
- assert.strictEqual(this.definition.deps.length, this.definition.fn.length);
- });
-
- it('has no instance', function () {
-
- assert.notProperty(modulejs._private.instances, ID);
- });
-
- it('inits without errors', function () {
-
- this.applyFn();
- });
- });
-
- describe('application', function () {
-
- it('returns object with 1 property', function () {
-
- var instance = this.applyFn();
- assert.isPlainObject(instance);
- assert.lengthOfKeys(instance, 1);
- });
- });
-
- describe('.render()', function () {
-
- before(function () {
-
- this.createItem = function () {
-
- return {
- isFolder: sinon.stub().returns(false),
- label: util.uniqId(),
- time: 0,
- size: 0,
- type: util.uniqId(),
- isManaged: false,
- icon: null,
- isCurrentParentFolder: sinon.stub().returns(false)
- };
- };
- });
-
- it('is function', function () {
-
- var instance = this.applyFn();
- assert.isFunction(instance.render);
- });
-
- it('returns jQuery instance of single HTML element', function () {
-
- var item = this.createItem();
- var instance = this.applyFn();
- var $item = instance.render(item);
- assert.isObject($item);
- assert.lengthOf($item, 1);
- assert.isString($item.jquery);
- });
-
- it('$item.data(\'item\') is back reference to item', function () {
-
- var item = this.createItem();
- var instance = this.applyFn();
- var $item = instance.render(item);
- assert.strictEqual($item.data('item'), item);
- });
-
- it('sets item.$view as reference to $item', function () {
-
- var item = this.createItem();
- var instance = this.applyFn();
- var $item = instance.render(item);
- assert.strictEqual(item.$view, $item);
- });
- });
-});
-
-}());
diff --git a/test/tests/unit/view/view.js b/test/tests/unit/view/view.js
index 0058a9e9..1134b823 100644
--- a/test/tests/unit/view/view.js
+++ b/test/tests/unit/view/view.js
@@ -2,7 +2,7 @@
'use strict';
var ID = 'view/view';
-var DEPS = ['_', '$', 'core/event', 'core/format', 'core/settings', 'view/content', 'view/item'];
+var DEPS = ['_', '$', 'core/event', 'core/format', 'core/location', 'core/resource', 'core/settings', 'view/content'];
describe('module \'' + ID + '\'', function () {
@@ -15,20 +15,32 @@ describe('module \'' + ID + '\'', function () {
pub: sinon.stub()
};
this.xFormat = {
- setDefaultMetric: sinon.stub()
+ setDefaultMetric: sinon.stub(),
+ formatDate: sinon.stub().returns(util.uniqId()),
+ formatSize: sinon.stub().returns(util.uniqId())
};
- this.xSettings = util.uniqObj();
+ this.xLocation = {
+ setLink: sinon.stub().returns(util.uniqId())
+ };
+ this.xResource = {
+ icon: sinon.stub().returns(util.uniqId())
+ };
+ this.xSettings = {view: {
+ setParentFolderLabels: false
+ }};
this.xContent = {$el: null};
- this.xItem = {render: sinon.stub()};
this.applyFn = function () {
this.xEvent.sub.reset();
this.xEvent.pub.reset();
this.xFormat.setDefaultMetric.reset();
- this.xItem.render.reset();
+ this.xFormat.formatDate.reset();
+ this.xFormat.formatSize.reset();
+ this.xLocation.setLink.reset();
+ this.xResource.icon.reset();
- return this.definition.fn(_, $, this.xEvent, this.xFormat, this.xSettings, this.xContent, this.xItem);
+ return this.definition.fn(_, $, this.xEvent, this.xFormat, this.xLocation, this.xResource, this.xSettings, this.xContent);
};
});
@@ -147,6 +159,58 @@ describe('module \'' + ID + '\'', function () {
assert.strictEqual(instance.$items.attr('id'), 'items');
});
});
+
+ // describe('.render()', function () {
+
+ // before(function () {
+
+ // this.createItem = function () {
+
+ // return {
+ // isFolder: sinon.stub().returns(false),
+ // label: util.uniqId(),
+ // time: 0,
+ // size: 0,
+ // type: util.uniqId(),
+ // isManaged: false,
+ // icon: null,
+ // isCurrentParentFolder: sinon.stub().returns(false)
+ // };
+ // };
+ // });
+
+ // it('is function', function () {
+
+ // var instance = this.applyFn();
+ // assert.isFunction(instance.render);
+ // });
+
+ // it('returns jQuery instance of single HTML element', function () {
+
+ // var item = this.createItem();
+ // var instance = this.applyFn();
+ // var $item = instance.render(item);
+ // assert.isObject($item);
+ // assert.lengthOf($item, 1);
+ // assert.isString($item.jquery);
+ // });
+
+ // it('$item.data(\'item\') is back reference to item', function () {
+
+ // var item = this.createItem();
+ // var instance = this.applyFn();
+ // var $item = instance.render(item);
+ // assert.strictEqual($item.data('item'), item);
+ // });
+
+ // it('sets item.$view as reference to $item', function () {
+
+ // var item = this.createItem();
+ // var instance = this.applyFn();
+ // var $item = instance.render(item);
+ // assert.strictEqual(item.$view, $item);
+ // });
+ // });
});
}());