summaryrefslogtreecommitdiff
path: root/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogFileDownloadDialog.js
diff options
context:
space:
mode:
Diffstat (limited to 'java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogFileDownloadDialog.js')
-rw-r--r--java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogFileDownloadDialog.js175
1 files changed, 175 insertions, 0 deletions
diff --git a/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogFileDownloadDialog.js b/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogFileDownloadDialog.js
new file mode 100644
index 0000000000..c25fd7c609
--- /dev/null
+++ b/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogFileDownloadDialog.js
@@ -0,0 +1,175 @@
+/*
+ *
+ * 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([
+ "dojo/_base/declare",
+ "dojo/_base/event",
+ "dojo/_base/xhr",
+ "dojo/_base/connect",
+ "dojo/dom-construct",
+ "dojo/query",
+ "dojo/parser",
+ "dojo/store/Memory",
+ "dojo/data/ObjectStore",
+ "dojo/date/locale",
+ "dojo/number",
+ "dijit/registry",
+ "dijit/Dialog",
+ "dijit/form/Button",
+ "dojox/grid/EnhancedGrid",
+ "dojo/text!../../../logs/showLogFileDownloadDialog.html",
+ "dojo/domReady!"
+], function(declare, event, xhr, connect, domConstruct, query, parser, Memory, ObjectStore, locale, number,
+ registry, Dialog, Button, EnhancedGrid, template){
+
+
+return declare("qpid.management.logs.LogFileDownloadDialog", null, {
+
+ templateString: template,
+ containerNode: null,
+ widgetsInTemplate: true,
+ logFileDialog: null,
+ logFilesGrid: null,
+ downloadLogsButton: null,
+ closeButton: null,
+
+ constructor: function(args){
+ this.containerNode = domConstruct.create("div", {innerHTML: template});
+ parser.parse(this.containerNode);
+
+ this.logFileTreeDiv = query(".logFilesGrid", this.containerNode)[0];
+ this.downloadLogsButton = registry.byNode(query(".downloadLogsButton", this.containerNode)[0]);
+ this.closeButton = registry.byNode(query(".downloadLogsDialogCloseButton", this.containerNode)[0]);
+
+ var self = this;
+ this.closeButton.on("click", function(e){self._onCloseButtonClick(e);});
+ this.downloadLogsButton.on("click", function(e){self._onDownloadButtonClick(e);});
+ this.downloadLogsButton.set("disabled", true)
+
+ this.logFileDialog = new Dialog({
+ title:"Broker Log Files",
+ style: "width: 600px",
+ content: this.containerNode
+ });
+
+ var layout = [
+ { name: "Appender", field: "appenderName", width: "auto"},
+ { name: "Name", field: "name", width: "auto"},
+ { name: "Size", field: "size", width: "60px",
+ formatter: function(val){
+ return val > 1024 ? (val > 1048576? number.round(val/1048576) + "MB": number.round(val/1024) + "KB") : val + "bytes";
+ }
+ },
+ { name: "Last Modified", field: "lastModified", width: "250px",
+ formatter: function(val) {
+ var d = new Date(val);
+ return locale.format(d, {selector:"date", datePattern: "EEE, MMM d yy, HH:mm:ss z (ZZZZ)"});
+ }
+ }
+ ];
+
+ var gridProperties = {
+ store: new ObjectStore({objectStore: new Memory({data: [], idProperty: "id"}) }),
+ structure: layout,
+ autoHeight: true,
+ plugins: {
+ pagination: {
+ pageSizes: [10, 25, 50, 100],
+ description: true,
+ sizeSwitch: true,
+ pageStepper: true,
+ gotoButton: true,
+ maxPageStep: 4,
+ position: "bottom"
+ },
+ indirectSelection: {
+ headerSelector:true,
+ width:"20px",
+ styles:"text-align: center;"
+ }
+ }
+ };
+
+ this.logFilesGrid = new EnhancedGrid(gridProperties, this.logFileTreeDiv);
+ var self = this;
+ var downloadButtonToggler = function(rowIndex){
+ var data = self.logFilesGrid.selection.getSelected();
+ self.downloadLogsButton.set("disabled",!data.length );
+ };
+ connect.connect(this.logFilesGrid.selection, 'onSelected', downloadButtonToggler);
+ connect.connect(this.logFilesGrid.selection, 'onDeselected', downloadButtonToggler);
+ },
+
+ _onCloseButtonClick: function(evt){
+ event.stop(evt);
+ this.logFileDialog.hide();
+ },
+
+ _onDownloadButtonClick: function(evt){
+ event.stop(evt);
+ var data = this.logFilesGrid.selection.getSelected();
+ if (data.length)
+ {
+ var query = "";
+ for(var i = 0 ; i< data.length; i++)
+ {
+ if (i>0)
+ {
+ query+="&";
+ }
+ query+="l="+encodeURIComponent(data[i].appenderName +'/' + data[i].name);
+ }
+ window.location="rest/logfile?" + query;
+ this.logFileDialog.hide();
+ }
+ },
+
+ destroy: function(){
+ this.inherited(arguments);
+ if (this.logFileDialog)
+ {
+ this.logFileDialog.destroyRecursive();
+ this.logFileDialog = null;
+ }
+ },
+
+ showDialog: function(){
+ var self = this;
+ var requestArguments = {url: "rest/logfiles", sync: true, handleAs: "json"};
+ xhr.get(requestArguments).then(function(data){
+ try
+ {
+ self.logFilesGrid.store.objectStore.setData(data);
+ self.logFilesGrid.startup();
+ self.logFileDialog.startup();
+ self.logFileDialog.show();
+ self.logFilesGrid._refresh();
+
+ }
+ catch(e)
+ {
+ console.error(e);
+ }
+ });
+ }
+
+ });
+
+});