incremental
diff --git a/static/js/kvmController.js b/static/js/kvmController.js
new file mode 100644
index 0000000..b8b442e
--- /dev/null
+++ b/static/js/kvmController.js
@@ -0,0 +1,93 @@
+angular.module('bmcApp').controller('KvmController',
+['$scope', '$location', '$window',
+function($scope, $location, $window) {
+
+
+ /*jslint white: false */
+ /*global window, $, Util, RFB, */
+ "use strict";
+
+ var rfb;
+ var host = $location.host();
+ var port = $location.port();
+ var encrypt = $location.protocol() === 'https';
+ var password = "";
+ var token = "1234";
+ var path = "kvmws";
+ var target = angular.element(document.querySelector('#noVNC_canvas'))[0];
+ try {
+ rfb = new RFB({'target': target,
+ 'encrypt': encrypt,
+ 'local_cursor': true,
+ 'onUpdateState': updateState,
+ //'onXvpInit': xvpInit,
+ 'onFBUComplete': FBUComplete,
+ 'resize': true});
+ rfb.connect(host, port, password, path);
+ } catch (exc) {
+ updateState(null, 'fatal', null, 'Unable to create RFB client -- ' + exc);
+ return; // don't continue trying to connect
+ }
+
+
+
+ $scope.$on("$destroy", function() {
+ if (rfb) {
+ rfb.disconnect();
+ }
+ });
+
+ function UIresize() {
+ if (WebUtil.getConfigVar('resize', false)) {
+ var innerW = $window.innerWidth;
+ var innerH = $window.innerHeight;
+ var padding = 5;
+ if (innerW !== undefined && innerH !== undefined)
+ rfb.requestDesktopSize(innerW, innerH - controlbarH - padding);
+ }
+ }
+ function FBUComplete(rfb, fbu) {
+ UIresize();
+ rfb.set_onFBUComplete(function() { });
+ }
+ function sendCtrlAltDel() {
+ rfb.sendCtrlAltDel();
+ return false;
+ }
+
+ function updateState(rfb, state, oldstate, msg) {
+ var s, sb, cad, level;
+ s = angular.element(document.querySelector('#noVNC_status'))[0];
+ sb = angular.element(document.querySelector('#noVNC_status_bar'))[0];
+ switch (state) {
+ case 'failed': level = "error"; break;
+ case 'fatal': level = "error"; break;
+ case 'normal': level = "normal"; break;
+ case 'disconnected': level = "normal"; break;
+ case 'loaded': level = "normal"; break;
+ default: level = "warn"; break;
+ }
+
+ if (typeof(msg) !== 'undefined') {
+ // at this point, it's possible the window has already been destroyed, so make sure
+ // the handles exist before writing.
+ if (typeof(sb) !== 'undefined'){
+ sb.setAttribute("class", "noVNC_status_" + level);
+ }
+ if (typeof(sb) !== 'undefined'){
+ s.innerHTML = msg;
+ }
+ }
+ }
+
+ var resizeTimeout;
+ $window.onresize = function () {
+ // When the window has been resized, wait until the size remains
+ // the same for 0.5 seconds before sending the request for changing
+ // the resolution of the session
+ clearTimeout(resizeTimeout);
+ resizeTimeout = setTimeout(function(){
+ UIresize();
+ }, 500);
+ };
+}]);
\ No newline at end of file