widgets.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. /* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.*/
  2. var widgets = {
  3. loader: {
  4. //显示loading
  5. showLoader: null,
  6. //设置loading文本,默认文本为'loading'
  7. setLoaderText: null,
  8. //设置loader显示相关属性
  9. setAttributes: null,
  10. //移除掉loader
  11. removeLoader: null
  12. },
  13. alert: {
  14. //弹出自定义弹框
  15. showAlert: null,
  16. //clear alert
  17. clearAlert: null
  18. }
  19. };
  20. (function (widgets, $) {
  21. var alertDiv;
  22. //弹出自定义提示框
  23. // msg:提示语;
  24. // state:提示框颜色(true=success;false=danger);
  25. // width:提示框宽度;opacity:提示框透明度[0,1];
  26. // withBorder:提示框是否加边框;
  27. function showAlert(msg, state, width, withBorder, opacity) {
  28. //提示框颜色
  29. var className = "alert-",
  30. border, alpha;
  31. className += state ? "success" : "danger";
  32. //提示框宽度
  33. if (width === null || typeof (width) === 'undefined') {
  34. //默认值300
  35. width = 300;
  36. }
  37. //是否开启边框
  38. border = withBorder ? {
  39. "border": "1px solid"
  40. } : "none";
  41. //设置透明度[0,1]之间
  42. alpha = opacity;
  43. if (alertDiv) {
  44. $(alertDiv).remove();
  45. }
  46. if (!$('#msg_container')[0]) {
  47. alertDiv = $("<div class='alert alert-dismissible' id='msg_container' role='alert' style='z-index:999999;position: absolute;top: 20px;left: 40%; display: none;text-align: center'><button type='button' class='close' data-dismiss='alert' aria-label='Close'><span aria-hidden='true' >&times;</span></button><strong><p id='msg' style='word-wrap: break-word'></p></strong></div>");
  48. $('body').append(alertDiv)
  49. }
  50. $('#msg_container').css('width', width + 'px');
  51. $('#msg_container').css(border);
  52. $('#msg_container').css('opacity', alpha);
  53. $('#msg_container').addClass(className);
  54. $('#msg_container').slideDown(300);
  55. $('#msg').html(msg);
  56. }
  57. //清除提示框
  58. function clearAlert() {
  59. $('#msg_container').hide();
  60. }
  61. /*显示loading*/
  62. function showLoader(text, type, attributes) {
  63. if (!type) {
  64. type = "loader-default";
  65. attributes = attributes || {
  66. 'data-half': true
  67. }
  68. }
  69. var $body = document.getElementsByTagName('body');
  70. $body = $body && $body[0];
  71. if ($body) {
  72. var $loader = document.getElementsByClassName('loader')[0];
  73. if (!$loader) {
  74. $loader = createLoader(type);
  75. }
  76. $loader.classList.add('is-active');
  77. setLoaderText(text);
  78. setAttributes(attributes);
  79. }
  80. }
  81. /*设置loading文本,默认文本为"loading"*/
  82. function setLoaderText(text, textAttributeField) {
  83. text = text || 'loading...';
  84. var txtAttrField = textAttributeField != null ? textAttributeField : "data-text";
  85. var attributes = {};
  86. attributes[txtAttrField] = text;
  87. setAttributes(attributes);
  88. }
  89. /*设置loader显示相关属性*/
  90. function setAttributes(attributes) {
  91. var $loader = document.getElementsByClassName('loader')[0];
  92. if ($loader && attributes) {
  93. for (var attr in attributes) {
  94. $loader.setAttribute(attr, attributes[attr]);
  95. }
  96. }
  97. }
  98. /*移除loader*/
  99. function removeLoader() {
  100. var $loader = document.getElementsByClassName('loader')[0];
  101. if ($loader) {
  102. $loader.parentNode.removeChild($loader);
  103. }
  104. }
  105. function createLoader(className) {
  106. var $loader, $body = document.getElementsByTagName('body');
  107. $body = $body && $body[0];
  108. if ($body) {
  109. $loader = document.createElement('div');
  110. $loader.className = "loader " + className;
  111. $body.insertBefore($loader, $body.children[0]);
  112. var style = document.createElement('style');
  113. style.type = 'text/css';
  114. style.innerHTML = ".loader.is-active{" +
  115. "background-color: rgba(0, 0, 0, 0.4) !important;" +
  116. "}";
  117. if (document.getElementsByTagName('head')) {
  118. document.getElementsByTagName('head')[0].appendChild(style);
  119. }
  120. }
  121. return $loader;
  122. }
  123. widgets.alert.showAlert = showAlert;
  124. widgets.alert.clearAlert = clearAlert;
  125. widgets.loader.showLoader = showLoader;
  126. widgets.loader.setLoaderText = setLoaderText;
  127. widgets.loader.setAttributes = setAttributes;
  128. widgets.loader.removeLoader = removeLoader;
  129. })(widgets, window.jQuery);