Skip to content
This repository has been archived by the owner on Jul 18, 2019. It is now read-only.

Commit

Permalink
Add extension for the header area in a console to display the contain…
Browse files Browse the repository at this point in the history
…er name and a back link
  • Loading branch information
gashcrumb committed May 29, 2015
1 parent 51db914 commit 81ea7aa
Show file tree
Hide file tree
Showing 6 changed files with 71 additions and 2 deletions.
4 changes: 4 additions & 0 deletions d.ts/jvm/ts/header.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/// <reference path="jvmPlugin.d.ts" />
declare module JVM {
var HeaderController: ng.IModule;
}
1 change: 1 addition & 0 deletions defs.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
/// <reference path="d.ts/jvm/ts/jvmPlugin.d.ts"/>
/// <reference path="d.ts/jvm/ts/connect.d.ts"/>
/// <reference path="d.ts/jvm/ts/discover.d.ts"/>
/// <reference path="d.ts/jvm/ts/header.d.ts"/>
/// <reference path="d.ts/jvm/ts/jolokiaPreferences.d.ts"/>
/// <reference path="d.ts/jvm/ts/jolokiaService.d.ts"/>
/// <reference path="d.ts/jvm/ts/local.d.ts"/>
Expand Down
22 changes: 21 additions & 1 deletion dist/hawtio-jmx.js
Original file line number Diff line number Diff line change
Expand Up @@ -4281,7 +4281,11 @@ var JVM;
$routeProvider.when('/jvm', { redirectTo: '/jvm/connect' }).when('/jvm/welcome', { templateUrl: UrlHelpers.join(JVM.templatePath, 'welcome.html') }).when('/jvm/discover', { templateUrl: UrlHelpers.join(JVM.templatePath, 'discover.html') }).when('/jvm/connect', { templateUrl: UrlHelpers.join(JVM.templatePath, 'connect.html') }).when('/jvm/local', { templateUrl: UrlHelpers.join(JVM.templatePath, 'local.html') });
}]);
JVM._module.constant('mbeanName', 'hawtio:type=JVMList');
JVM._module.run(["HawtioNav", "$location", "workspace", "viewRegistry", "layoutFull", "helpRegistry", "preferencesRegistry", "ConnectOptions", "locationChangeStartTasks", "HawtioDashboard", function (nav, $location, workspace, viewRegistry, layoutFull, helpRegistry, preferencesRegistry, ConnectOptions, locationChangeStartTasks, dash) {
JVM._module.run(["HawtioNav", "$location", "workspace", "viewRegistry", "layoutFull", "helpRegistry", "preferencesRegistry", "ConnectOptions", "locationChangeStartTasks", "HawtioDashboard", "HawtioExtension", "$templateCache", "$compile", function (nav, $location, workspace, viewRegistry, layoutFull, helpRegistry, preferencesRegistry, ConnectOptions, locationChangeStartTasks, dash, extensions, $templateCache, $compile) {
extensions.add('hawtio-header', function ($scope) {
var template = $templateCache.get(UrlHelpers.join(JVM.templatePath, 'navbarHeaderExtension.html'));
return $compile(template)($scope);
});
if (!dash.inDashboard) {
// ensure that if the connection parameter is present, that we keep it
locationChangeStartTasks.addTask('ConParam', function ($event, newUrl, oldUrl) {
Expand Down Expand Up @@ -4569,6 +4573,21 @@ var JVM;
}]);
})(JVM || (JVM = {}));

/// <reference path="jvmPlugin.ts"/>
var JVM;
(function (JVM) {
JVM.HeaderController = JVM._module.controller("JVM.HeaderController", ["$scope", "ConnectOptions", function ($scope, ConnectOptions) {
if (ConnectOptions) {
$scope.containerName = ConnectOptions.name || "";
if (ConnectOptions.returnTo) {
$scope.goBack = function () {
window.location.href = ConnectOptions.returnTo;
};
}
}
}]);
})(JVM || (JVM = {}));

/// <reference path="../../includes.ts"/>
/// <reference path="./jvmPlugin.ts"/>
var JVM;
Expand Down Expand Up @@ -5360,6 +5379,7 @@ $templateCache.put("plugins/jvm/html/discover.html","<div ng-controller=\"JVM.Di
$templateCache.put("plugins/jvm/html/jolokiaPreferences.html","<div ng-controller=\"JVM.JolokiaPreferences\">\n <div hawtio-form-2=\"config\" entity=\"entity\"></div>\n\n <div class=\"control-group\">\n <div class=\"controls\">\n <button class=\"btn btn-primary\" ng-click=\"reboot()\">Apply</button>\n <span class=\"help-block\">Restart hawtio with the new values in effect</span>\n </div>\n </div>\n\n</div>\n");
$templateCache.put("plugins/jvm/html/layoutConnect.html","<ul class=\"nav nav-tabs connected\" ng-controller=\"JVM.NavController\">\n <li ng-repeat=\"link in breadcrumbs\" ng-show=\"isValid(link)\" ng-class=\'{active : isActive(link.href)}\'>\n <a ng-href=\"{{link.href}}{{hash}}\" ng-bind-html=\"link.content\"></a>\n </li>\n</ul>\n<div class=\"row\">\n <div ng-view></div>\n</div>\n");
$templateCache.put("plugins/jvm/html/local.html","<div ng-controller=\"JVM.JVMsController\">\n\n <div class=\"row\">\n <div class=\"pull-right\">\n <button class=\"btn\" ng-click=\"fetch()\" title=\"Refresh\"><i class=\"fa fa-refresh\"></i></button>\n </div>\n <div class=\"pull-right\">\n <input class=\"search-query\" type=\"text\" ng-model=\"filter\" placeholder=\"Filter...\">\n </div>\n </div>\n\n <div ng-hide=\"initDone\">\n <div class=\"alert alert-info\">\n <i class=\"fa fa-spinner icon-spin\"></i> Please wait, discovering local JVM processes ...\n </div>\n </div>\n\n <div ng-hide=\'data.length > 0\' class=\'row\'>\n {{status}}\n </div>\n\n <div ng-show=\'data.length > 0\' class=\"row\">\n <table class=\'centered table table-bordered table-condensed table-striped\'>\n <thead>\n <tr>\n <th style=\"width: 70px\">PID</th>\n <th>Name</th>\n <th style=\"width: 300px\">Agent URL</th>\n <th style=\"width: 50px\"></th>\n </tr>\n </thead>\n <tbody>\n <tr ng-repeat=\"jvm in data track by $index\" ng-show=\"filterMatches(jvm)\">\n <td>{{jvm.id}}</td>\n <td title=\"{{jvm.displayName}}\">{{jvm.alias}}</td>\n <td><a href=\'\' title=\"Connect to this agent\"\n ng-click=\"connectTo(jvm.url, jvm.scheme, jvm.hostname, jvm.port, jvm.path)\">{{jvm.agentUrl}}</a></td>\n <td>\n <a class=\'btn control-button\' href=\"\" title=\"Stop agent\" ng-show=\"jvm.agentUrl\"\n ng-click=\"stopAgent(jvm.id)\"><i class=\"fa fa-off\"></i></a>\n <a class=\'btn control-button\' href=\"\" title=\"Start agent\" ng-hide=\"jvm.agentUrl\"\n ng-click=\"startAgent(jvm.id)\"><i class=\"icon-play-circle\"></i></a>\n </td>\n </tr>\n\n </tbody>\n </table>\n\n </div>\n\n\n</div>\n");
$templateCache.put("plugins/jvm/html/navbarHeaderExtension.html","<style>\n .navbar-header-hawtio-jvm {\n float: left;\n margin: 0;\n }\n\n .navbar-header-hawtio-jvm h4 {\n color: white;\n margin: 0px;\n }\n\n .navbar-header-hawtio-jvm li {\n list-style-type: none;\n display: inline-block;\n margin-right: 10px;\n margin-top: 4px;\n }\n</style>\n<ul class=\"navbar-header-hawtio-jvm\" ng-controller=\"JVM.HeaderController\">\n <li ng-show=\"containerName\"><h4 ng-bind=\"containerName\"></h4></li>\n <li ng-show=\"goBack\"><strong><a href=\"\" ng-click=\"goBack()\">Back</a></strong></li>\n</ul>\n");
$templateCache.put("plugins/jvm/html/reset.html","<div ng-controller=\"JVM.ResetController\">\n <form class=\"form-horizontal\">\n <fieldset>\n <div class=\"control-group\">\n <label class=\"control-label\">\n <strong>\n <i class=\'yellow text-shadowed icon-warning-sign\'></i> Clear saved connections\n </strong>\n </label>\n <div class=\"controls\">\n <button class=\"btn btn-danger\" ng-click=\"doClearConnectSettings()\">Clear saved connections</button>\n <span class=\"help-block\">Wipe all saved connection settings stored by {{branding.appName}} in your browser\'s local storage</span>\n </div>\n </div>\n </fieldset>\n </form>\n</div>\n\n");
$templateCache.put("plugins/threads/html/index.html","<div ng-controller=\"Threads.ThreadsController\">\n\n <div>\n <div class=\"pull-right\">\n <hawtio-filter ng-model=\"searchFilter\" placeholder=\"Filter...\" save-as=\"threads-text-filter\"></hawtio-filter>\n </div>\n\n <p></p>\n\n <table class=\"table table-condensed table-striped\"\n hawtio-simple-table=\"threadGridOptions\"></table>\n\n <div ng-show=\"threadSelected\" class=\"log-info-panel\">\n <div class=\"log-info-panel-frame\">\n <div class=\"log-info-panel-header\">\n <div class=\"row-fluid\">\n <button class=\"btn\" ng-click=\"deselect()\"><i class=\"icon-remove\"></i> Close</button>\n <div class=\"btn-group\"\n style=\"margin-top: 9px;\"\n hawtio-pager=\"hawtioSimpleTable.threads.rows\"\n on-index-change=\"selectThreadByIndex\"\n row-index=\"selectedRowIndex\">\n </div>\n\n <span><strong>Thread ID:</strong> {{row.threadId}}</span>\n </div>\n\n <div class=\"row-fluid\">\n <span><strong>Thread Name:</strong> {{row.threadName}}</span>\n </div>\n\n </div>\n <div class=\"log-info-panel-body\">\n\n <div class=\"row-fluid\">\n <span><strong>Waited Count:</strong> {{row.waitedCount}}</span>\n <span><strong>Waited Time:</strong> {{row.waitedTime}}ms</span>\n </div>\n\n <div class=\"row-fluid\">\n <span><strong>Blocked Count:</strong> {{row.blockedCount}}</span>\n <span><strong>Blocked Time:</strong> {{row.blockedTime}}ms</span>\n </div>\n\n <div class=\"row-fluid\" ng-show=\"row.lockInfo != null\">\n <span><strong>Lock Name:</strong> {{row.lockName}}</span>\n <span><strong>Lock Class Name:</strong> {{row.lockInfo.className}}</span>\n <span><strong>Lock Identity Hash Code:</strong> {{row.lockInfo.identityHashCode}}</span>\n </div>\n\n <div class=\"row-fluid\" ng-show=\"row.lockOwnerId > 0\">\n <span>Waiting for lock owned by <a href=\"\" ng-click=\"selectThreadById(row.lockOwnerId)\">{{row.lockOwnerId}}</a></span>\n <span><strong>Owner Name:</strong> {{row.lockOwnerName}}</span>\n </div>\n\n <dl ng-show=\"row.lockedSynchronizers.length > 0\">\n <dt>Locked Synchronizers</dt>\n <dd>\n <ol class=\"zebra-list\">\n <li ng-repeat=\"synchronizer in row.lockedSynchronizers\">\n <span><strong>Class Name:</strong> {{synchronizer.className}}</span>\n <span><strong>Identity Hash Code:</strong> {{synchronizer.identityHashCode}}</span>\n </li>\n </ol>\n </dd>\n </dl>\n\n <dl ng-show=\"row.lockedMonitors.length > 0\">\n <dt>Locked Monitors</dt>\n <dd>\n <ol class=\"zebra-list\">\n <li ng-repeat=\"monitor in row.lockedMonitors\">\n Frame: <strong>{{monitor.lockedStackDepth}}</strong>\n <span class=\"green\">{{monitor.lockedStackFrame.className}}</span>\n <span class=\"bold\">.</span>\n <span class=\"blue bold\">{{monitor.lockedStackFrame.methodName}}</span>\n &nbsp;({{monitor.lockedStackFrame.fileName}}<span ng-show=\"frame.lineNumber > 0\">:{{monitor.lockedStackFrame.lineNumber}}</span>)\n <span class=\"orange\" ng-show=\"monitor.lockedStackFrame.nativeMethod\">(Native)</span>\n </li>\n </ol>\n </dd>\n </dl>\n\n <!-- a simple stack trace display, ideally we\n could show maven links eventually -->\n <dl>\n <dt>Stack Trace</dt>\n <dd>\n <ol class=\"zebra-list\">\n <li ng-repeat=\"frame in row.stackTrace\">\n <span class=\"green\">{{frame.className}}</span>\n <span class=\"bold\">.</span>\n <span class=\"blue bold\">{{frame.methodName}}</span>\n &nbsp;({{frame.fileName}}<span ng-show=\"frame.lineNumber > 0\">:{{frame.lineNumber}}</span>)\n <span class=\"orange\" ng-show=\"frame.nativeMethod\">(Native)</span>\n </li>\n </ol>\n </dd>\n </dl>\n\n <!--\n <div class=\"expandable\" model=\"showRaw\">\n <div class=\"title\">\n <i class=\"expandable-indicator\"></i><span> Show JSON</span>\n </div>\n <div class=\"expandable-body\">\n <div hawtio-editor=\"selectedRowJson\" mode=\"javascript\"></div>\n </div>\n </div>\n -->\n\n </div>\n </div>\n </div>\n\n </div>\n</div>\n\n\n\n");
$templateCache.put("plugins/threads/html/toolbar.html","<div ng-controller=\"Threads.ToolbarController\">\n <script type=\"text/ng-template\" id=\"threadStateTemplate\">\n <div class=\"thread-state-indicator\"\n title=\"{{row.entity.threadState | humanize}}\"\n ng-switch on=\"row.entity.threadState\">\n <i ng-switch-when=\"NEW\"\n class=\"lightgreen icon-bolt\"></i>\n <i ng-switch-when=\"RUNNABLE\"\n class=\"green icon-play-circle\"></i>\n <i ng-switch-when=\"BLOCKED\"\n class=\"red icon-stop\"></i>\n <i ng-switch-when=\"WAITING\"\n class=\"darkgray icon-pause\"></i>\n <i ng-switch-when=\"TIMED_WAITING\"\n class=\"orange icon-time\"></i>\n <i ng-switch-default=\"TERMINATED\"\n class=\"darkred icon-remove\"></i>\n </div>\n </script>\n\n <div class=\"state-panel inline-block\">\n <ul class=\"inline\">\n <li ng-click=\"filterOn(\'NONE\')\"\n title=\"Clear state filter\"\n ng-class=\"selectedFilterClass(\'NONE\')\">\n <span class=\"clickable no-fade total\">Total:</span> {{unfilteredThreads.length}}\n </li>\n <li ng-repeat=\"(state, total) in totals track by $index\"\n ng-click=\"filterOn(state)\"\n title=\"Filter by {{state}}\"\n ng-class=\"selectedFilterClass(state)\">\n <span class=\"clickable no-fade {{state.dasherize()}}\">{{state | humanize}}:</span> {{total}}\n </li>\n </ul>\n </div>\n\n <div class=\"inline-block support-panel pull-right\">\n <ul class=\"inline\">\n <li ng-repeat=\"(name, value) in support track by $index\">\n <span class=\"monitor-indicator {{getMonitorClass(name, value)}}\" ng-click=\"maybeToggleMonitor(name, value)\">{{getMonitorName(name)}}</span>\n </li>\n <li ng-hide=\"inDashboard\">\n <a ng-href=\"{{addToDashboardLink()}}\" title=\"Add this view to a dashboard\">\n <i class=\"icon-share\"></i>\n </a>\n </li>\n </ul>\n </div>\n\n</div>\n\n");}]); hawtioPluginLoader.addModule("hawtio-jmx-templates");
22 changes: 22 additions & 0 deletions plugins/jvm/html/navbarHeaderExtension.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<style>
.navbar-header-hawtio-jvm {
float: left;
margin: 0;
}

.navbar-header-hawtio-jvm h4 {
color: white;
margin: 0px;
}

.navbar-header-hawtio-jvm li {
list-style-type: none;
display: inline-block;
margin-right: 10px;
margin-top: 4px;
}
</style>
<ul class="navbar-header-hawtio-jvm" ng-controller="JVM.HeaderController">
<li ng-show="containerName"><h4 ng-bind="containerName"></h4></li>
<li ng-show="goBack"><strong><a href="" ng-click="goBack()">Back</a></strong></li>
</ul>
17 changes: 17 additions & 0 deletions plugins/jvm/ts/header.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/// <reference path="jvmPlugin.ts"/>

module JVM {

export var HeaderController = _module.controller("JVM.HeaderController", ["$scope", "ConnectOptions", ($scope, ConnectOptions) => {
if (ConnectOptions) {
$scope.containerName = ConnectOptions.name || "";
if (ConnectOptions.returnTo) {
$scope.goBack = () => {
window.location.href = ConnectOptions.returnTo;
}
}
}

}]);

}
7 changes: 6 additions & 1 deletion plugins/jvm/ts/jvmPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,12 @@ module JVM {

_module.constant('mbeanName', 'hawtio:type=JVMList');

_module.run(["HawtioNav", "$location", "workspace", "viewRegistry", "layoutFull", "helpRegistry", "preferencesRegistry", "ConnectOptions", "locationChangeStartTasks", "HawtioDashboard", (nav:HawtioMainNav.Registry, $location, workspace:Workspace, viewRegistry, layoutFull, helpRegistry, preferencesRegistry, ConnectOptions:Core.ConnectOptions, locationChangeStartTasks, dash) => {
_module.run(["HawtioNav", "$location", "workspace", "viewRegistry", "layoutFull", "helpRegistry", "preferencesRegistry", "ConnectOptions", "locationChangeStartTasks", "HawtioDashboard", "HawtioExtension", "$templateCache", "$compile", (nav:HawtioMainNav.Registry, $location, workspace:Workspace, viewRegistry, layoutFull, helpRegistry, preferencesRegistry, ConnectOptions:Core.ConnectOptions, locationChangeStartTasks, dash, extensions, $templateCache, $compile) => {

extensions.add('hawtio-header', ($scope) => {
var template = $templateCache.get(UrlHelpers.join(templatePath, 'navbarHeaderExtension.html'));
return $compile(template)($scope);
});

if (!dash.inDashboard) {
// ensure that if the connection parameter is present, that we keep it
Expand Down

0 comments on commit 81ea7aa

Please sign in to comment.