blob: fc7a4b0b429ddbaf993c93af5ace4affbc4d3b71 [file] [log] [blame]
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
define(["qpid/common/util",
"dojo/query",
"dojo/number",
"dojo/_base/lang",
"dojo/_base/connect",
"dojox/html/entities",
"dojo/text!logger/file/fileBrowser.html",
"dojox/grid/EnhancedGrid",
"qpid/common/UpdatableStore",
"dijit/registry",
"dojo/domReady!"],
function (util, query, number, lang, connect, entities, template, EnhancedGrid, UpdatableStore, registry)
{
function FileBrowser(params)
{
var that = this;
this.management = params.management;
this.modelObj = params.modelObj;
util.parse(params.containerNode, template, function ()
{
that.postParse(params);
});
}
FileBrowser.prototype.postParse = function (params)
{
var that = this;
var gridProperties = {
height: 400,
selectionMode: "extended",
plugins: {
indirectSelection: true,
pagination: {
pageSizes: [10, 25, 50, 100],
description: true,
sizeSwitch: true,
pageStepper: true,
gotoButton: true,
maxPageStep: 4,
position: "bottom"
}
}
};
this.downloadButton = registry.byNode(query(".downloadButton", params.containerNode)[0]);
this.downloadButton.on("click", function (e)
{
that.downloadSelectedFiles()
});
this.downloadAllButton = registry.byNode(query(".downloadAllButton", params.containerNode)[0]);
this.downloadAllButton.on("click", function (e)
{
that.downloadAllFiles()
});
this.logFiles = this.addIdToFileObjects(params.data);
this.logFileGrid = new UpdatableStore(this.logFiles, query(".logFilesGrid", params.containerNode)[0], [{
name: "Name",
field: "name",
width: "40%"
}, {
name: "Size",
field: "size",
width: "20%",
formatter: function (val)
{
return val > 1024 ? (val > 1048576 ? number.round(val / 1048576) + " MB" : number.round(val / 1024)
+ " KB") : val + " B";
}
}, {
name: "Last Modified",
field: "lastModified",
width: "40%",
formatter: function (val)
{
return that.management.userPreferences.formatDateTime(val, {
addOffset: true,
appendTimeZone: true
});
}
}], function (obj)
{
obj.grid.on("rowDblClick", function (evt)
{
var idx = evt.rowIndex;
var theItem = this.getItem(idx);
that.download(theItem);
});
}, gridProperties, EnhancedGrid);
}
FileBrowser.prototype.download = function (item)
{
var parentModelObj = this.modelObj;
var modelObj = {
type: parentModelObj.type,
name: "getFile",
parent: parentModelObj
}
this.management.download(modelObj, {fileName: item.name});
}
FileBrowser.prototype.addIdToFileObjects = function (data)
{
var fileItems = [];
var logFiles = data.logFiles;
for (var idx in logFiles)
{
var item = lang.mixin(logFiles[idx], {id: logFiles[idx].name});
fileItems.push(item);
}
return fileItems;
}
FileBrowser.prototype.downloadSelectedFiles = function ()
{
var data = this.logFileGrid.grid.selection.getSelected();
this.downloadFiles(data);
}
FileBrowser.prototype.downloadAllFiles = function ()
{
var parentModelObj = this.modelObj;
var modelObj = {
type: parentModelObj.type,
name: "getAllFiles",
parent: parentModelObj
}
this.management.download(modelObj, {});
}
FileBrowser.prototype.downloadFiles = function (fileItems)
{
if (fileItems.length)
{
var parentModelObj = this.modelObj;
var modelObj = {
type: parentModelObj.type,
name: "getFiles",
parent: parentModelObj
}
var items = [];
for (var i = 0; i < fileItems.length; i++)
{
items.push(fileItems[i].id);
}
this.management.download(modelObj, {fileName: items});
}
}
FileBrowser.prototype.update = function (restData)
{
if (this.logFileGrid)
{
this.logFiles = this.addIdToFileObjects(restData);
if (this.logFileGrid.update(this.logFiles))
{
//this.logFileGrid.grid._refresh();
}
}
}
return FileBrowser;
});