]>
git.proxmox.com Git - pve-xtermjs.git/blob - src/www/util.js
1 function urlEncode(object
) {
2 var i
,value
, params
= [];
5 if (object
.hasOwnProperty(i
)) {
7 if (value
=== undefined) value
= '';
8 params
.push(encodeURIComponent(i
) + '=' + encodeURIComponent(String(value
)));
12 return params
.join('&');
22 function showMsg(message
, timeout
, severity
) {
23 var status_bar
= document
.getElementById('status_bar');
24 clearTimeout(msgtimeout
);
26 status_bar
.classList
.remove('normal');
27 status_bar
.classList
.remove('warning');
28 status_bar
.classList
.remove('error');
30 status_bar
.textContent
= message
;
32 severity
= severity
|| severities
.normal
;
35 case severities
.normal
:
36 status_bar
.classList
.add('normal');
38 case severities
.warning
:
39 status_bar
.classList
.add('warning');
41 case severities
.error
:
42 status_bar
.classList
.add('error');
45 throw "unknown severity";
48 status_bar
.classList
.add('open');
51 msgtimeout
= setTimeout(hideMsg
, timeout
|| 1500);
56 clearTimeout(msgtimeout
);
57 status_bar
.classList
.remove('open');
60 function getQueryParameter(name
) {
61 var params
= location
.search
.slice(1).split('&');
63 params
.forEach(function(param
) {
64 var components
= param
.split('=');
65 if (components
[0] === name
) {
66 result
= components
.slice(1).join('=');
75 function Utf8ArrayToStr(arraybuffer
) {
76 var array
= new Uint8Array(arraybuffer
),
78 len
= array
.byteLength
,
84 if (!left
&& c
< 0x80) {
85 out
+= String
.fromCharCode(c
);
89 // 110x xxxx 10xx xxxx
90 cur
= (c
& 0x1F) << 6;
94 // 1110 xxxx 10xx xxxx 10xx xxxx
95 cur
= (c
& 0x0F) << 12;
99 // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx
100 cur
= (c
& 0x07) << 18;
107 } else if (c
>= 0x80 && c
<= 0xBF) {
108 cur
= cur
| ((c
& 0x3F) << (--left
* 6));
110 out
+= String
.fromCharCode(cur
);
123 function API2Request(reqOpts
) {
126 reqOpts
.method
= reqOpts
.method
|| 'GET';
128 var xhr
= new XMLHttpRequest();
130 xhr
.onload = function() {
131 var scope
= reqOpts
.scope
|| this;
135 if (xhr
.readyState
=== 4) {
136 var ctype
= xhr
.getResponseHeader('Content-Type');
137 if (xhr
.status
=== 200) {
138 if (ctype
.match(/application\/json;/)) {
139 result
= JSON
.parse(xhr
.responseText
);
141 errmsg
= 'got unexpected content type ' + ctype
;
144 errmsg
= 'Error ' + xhr
.status
+ ': ' + xhr
.statusText
;
147 errmsg
= 'Connection error - server offline?';
150 if (errmsg
!== undefined) {
151 if (reqOpts
.failure
) {
152 reqOpts
.failure
.call(scope
, errmsg
);
155 if (reqOpts
.success
) {
156 reqOpts
.success
.call(scope
, result
);
159 if (reqOpts
.callback
) {
160 reqOpts
.callback
.call(scope
, errmsg
=== undefined);
164 var data
= urlEncode(reqOpts
.params
|| {});
166 if (reqOpts
.method
=== 'GET') {
167 xhr
.open(reqOpts
.method
, "/api2/json" + reqOpts
.url
+ '?' + data
);
169 xhr
.open(reqOpts
.method
, "/api2/json" + reqOpts
.url
);
171 xhr
.setRequestHeader('Cache-Control', 'no-cache');
172 if (reqOpts
.method
=== 'POST' || reqOpts
.method
=== 'PUT') {
173 xhr
.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
174 xhr
.setRequestHeader('CSRFPreventionToken', PVE
.CSRFPreventionToken
);
176 } else if (reqOpts
.method
=== 'GET') {
179 throw "unknown method";
183 function getTerminalSettings() {
185 var settings
= ['fontSize', 'fontFamily', 'letterSpacing', 'lineHeight'];
187 settings
.forEach(function(setting
) {
188 var val
= localStorage
.getItem('pve-xterm-' + setting
);
189 if (val
!== undefined && val
!== null) {