language.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. (function ($) {
  2. function xml2json(Xml) {
  3. var tempvalue, tempJson = {};
  4. $(Xml).each(function() {
  5. var tagName = ($(this).attr('id') || this.tagName);
  6. tempvalue = (this.childElementCount == 0) ? this.textContent : xml2json($(this).children());
  7. switch ($.type(tempJson[tagName])) {
  8. case 'undefined':
  9. tempJson[tagName] = tempvalue;
  10. break;
  11. case 'object':
  12. tempJson[tagName] = Array(tempJson[tagName]);
  13. case 'array':
  14. tempJson[tagName].push(tempvalue);
  15. }
  16. });
  17. return tempJson;
  18. }
  19. function setCookie (c_name, value, expiredays) {
  20. var exdate = new Date();
  21. exdate.setDate(exdate.getDate() + expiredays);
  22. document.cookie = c_name + '=' + escape(value) + ((expiredays == null) ? '' : ';expires=' + exdate.toGMTString())+ '; path='+window.nps.web_base_url+'/;';
  23. }
  24. function getCookie (c_name) {
  25. if (document.cookie.length > 0) {
  26. c_start = document.cookie.indexOf(c_name + '=');
  27. if (c_start != -1) {
  28. c_start = c_start + c_name.length + 1;
  29. c_end = document.cookie.indexOf(';', c_start);
  30. if (c_end == -1) c_end = document.cookie.length;
  31. return unescape(document.cookie.substring(c_start, c_end));
  32. }
  33. }
  34. return null;
  35. }
  36. function setchartlang (langobj,chartobj) {
  37. if ( $.type (langobj) == 'string' ) return langobj;
  38. if ( $.type (langobj) == 'chartobj' ) return false;
  39. var flag = true;
  40. for (key in langobj) {
  41. var item = key;
  42. children = (chartobj.hasOwnProperty(item)) ? setchartlang (langobj[item],chartobj[item]) : setchartlang (langobj[item],undefined);
  43. switch ($.type(children)) {
  44. case 'string':
  45. if ($.type(chartobj[item]) != 'string' ) continue;
  46. case 'object':
  47. chartobj[item] = (children['value'] || children);
  48. default:
  49. flag = false;
  50. }
  51. }
  52. if (flag) { return {'value':(langobj[languages['current']] || langobj[languages['default']] || 'N/A')}}
  53. }
  54. $.fn.cloudLang = function () {
  55. $.ajax({
  56. type: 'GET',
  57. url: window.nps.web_base_url + '/static/page/languages.xml',
  58. dataType: 'xml',
  59. success: function (xml) {
  60. languages['content'] = xml2json($(xml).children())['content'];
  61. languages['menu'] = languages['content']['languages'];
  62. languages['default'] = languages['content']['default'];
  63. languages['navigator'] = (getCookie ('lang') || navigator.language || navigator.browserLanguage);
  64. for(var key in languages['menu']){
  65. $('#languagemenu').next().append('<li lang="' + key + '"><a><img src="' + window.nps.web_base_url + '/static/img/flag/' + key + '.png"> ' + languages['menu'][key] +'</a></li>');
  66. if ( key == languages['navigator'] ) languages['current'] = key;
  67. }
  68. $('#languagemenu').attr('lang',(languages['current'] || languages['default']));
  69. $('body').setLang ('');
  70. }
  71. });
  72. };
  73. $.fn.setLang = function (dom) {
  74. languages['current'] = $('#languagemenu').attr('lang');
  75. if ( dom == '' ) {
  76. $('#languagemenu span').text(' ' + languages['menu'][languages['current']]);
  77. if (languages['current'] != getCookie('lang')) setCookie('lang', languages['current']);
  78. if($("#table").length>0) $('#table').bootstrapTable('refreshOptions', { 'locale': languages['current']});
  79. }
  80. $.each($(dom + ' [langtag]'), function (i, item) {
  81. var index = $(item).attr('langtag');
  82. string = languages['content'][index.toLowerCase()];
  83. switch ($.type(string)) {
  84. case 'string':
  85. break;
  86. case 'array':
  87. string = string[Math.floor((Math.random()*string.length))];
  88. case 'object':
  89. string = (string[languages['current']] || string[languages['default']] || null);
  90. break;
  91. default:
  92. string = 'Missing language string "' + index + '"';
  93. $(item).css('background-color','#ffeeba');
  94. }
  95. if($.type($(item).attr('placeholder')) == 'undefined') {
  96. $(item).text(string);
  97. } else {
  98. $(item).attr('placeholder', string);
  99. }
  100. });
  101. if ( !$.isEmptyObject(chartdatas) ) {
  102. setchartlang(languages['content']['charts'],chartdatas);
  103. for(var key in chartdatas){
  104. if ($('#'+key).length == 0) continue;
  105. if($.type(chartdatas[key]) == 'object')
  106. charts[key] = echarts.init(document.getElementById(key));
  107. charts[key].setOption(chartdatas[key], true);
  108. }
  109. }
  110. }
  111. })(jQuery);
  112. $(document).ready(function () {
  113. $('body').cloudLang();
  114. $('body').on('click','li[lang]',function(){
  115. $('#languagemenu').attr('lang',$(this).attr('lang'));
  116. $('body').setLang ('');
  117. });
  118. });
  119. var languages = {};
  120. var charts = {};
  121. var chartdatas = {};
  122. var postsubmit;
  123. function langreply(langstr) {
  124. var langobj = languages['content']['reply'][langstr.replace(/[\s,\.\?]*/g,"").toLowerCase()];
  125. if ($.type(langobj) == 'undefined') return langstr
  126. langobj = (langobj[languages['current']] || langobj[languages['default']] || langstr);
  127. return langobj
  128. }
  129. function submitform(action, url, postdata) {
  130. postsubmit = false;
  131. switch (action) {
  132. case 'start':
  133. case 'stop':
  134. case 'delete':
  135. var langobj = languages['content']['confirm'][action];
  136. action = (langobj[languages['current']] || langobj[languages['default']] || 'Are you sure you want to ' + action + ' it?');
  137. if (! confirm(action)) return;
  138. postsubmit = true;
  139. case 'add':
  140. case 'edit':
  141. $.ajax({
  142. type: "POST",
  143. url: url,
  144. data: postdata,
  145. success: function (res) {
  146. alert(langreply(res.msg));
  147. if (res.status) {
  148. if (postsubmit) {document.location.reload();}else{history.back(-1);}
  149. }
  150. }
  151. });
  152. }
  153. }
  154. function changeunit(limit) {
  155. var size = "";
  156. if (limit < 0.1 * 1024) {
  157. size = limit.toFixed(2) + "B";
  158. } else if (limit < 0.1 * 1024 * 1024) {
  159. size = (limit / 1024).toFixed(2) + "KB";
  160. } else if (limit < 0.1 * 1024 * 1024 * 1024) {
  161. size = (limit / (1024 * 1024)).toFixed(2) + "MB";
  162. } else {
  163. size = (limit / (1024 * 1024 * 1024)).toFixed(2) + "GB";
  164. }
  165. var sizeStr = size + "";
  166. var index = sizeStr.indexOf(".");
  167. var dou = sizeStr.substr(index + 1, 2);
  168. if (dou == "00") {
  169. return sizeStr.substring(0, index) + sizeStr.substr(index + 3, 2);
  170. }
  171. return size;
  172. }