1/** 2 * @typedef {Object} AlertDefaultOptions 3 * @property {boolean} encodeMessage ÐÑизнак Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи кодиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑообÑÐµÐ½Ð¸Ñ 4 * @property {string} defaultAlertClass ÐлаÑÑ ÑообÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ 5 * @property {string} defaultShowClass ÐлаÑÑ, оÑвеÑаÑÑий за видимоÑÑÑ ÑообÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ 6 * @property {number} alertHideTimeout ТаймаÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð·Ð°ÐºÑÑÑÐ¸Ñ ÑообÑÐµÐ½Ð¸Ñ 7 */ 8/** 9 * @typedef {Object} AlertOptions 10 * @property {boolean} [encode] ÐÑизнак Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи кодиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑообÑÐµÐ½Ð¸Ñ 11 * @property {string} [alertClass] ÐлаÑÑ ÑообÑениÑ, напÑимеÑ, "alert-success" 12 * @property {string} [showClass] ÐлаÑÑ, оÑвеÑаÑÑий за видимоÑÑÑ ÑообÑениÑ, напÑимеÑ, "in" (Bootstrap 3) или 13 * "show" (Bootstrap 4) 14 * @property {number} [hideTimeout] ТаймаÑÑ Ð´Ð»Ñ Ð·Ð°ÐºÑÑÑÐ¸Ñ ÑообÑениÑ, false Ð´Ð»Ñ Ð¾ÑклÑÑÐµÐ½Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑкого закÑÑÑÐ¸Ñ 15 */ 16(function ($) { 17 /** @type {jQuery} */ 18 var $container; 19 var MAX_MESSAGE_LENGTH = 1000; 20 21 /** 22 * ФоÑмаÑиÑÑÐµÑ ÑообÑение message, заменÑÑ ÑÐ°Ð±Ð»Ð¾Ð½Ñ `{клÑÑ}` на знаÑÐµÐ½Ð¸Ñ Ð¸Ð· аÑÑоÑиаÑивного маÑÑива replacements. 23 * ÐÑли клÑÑ Ð² маÑÑиве не найден, Ñо Ñаблон заменÑеÑÑÑ Ð½Ð° Ñам клÑÑ. 24 * 25 * @param {string} message 26 * @param {Object.<string, string>} replacements 27 * @return {string} 28 */ 29 function formatMessage(message, replacements) { 30 return message.replace(/{([^}]+?)}/g, function (/** {string} */ match, /** {string} */ replaceKey) { 31 return replacements[replaceKey] || replaceKey; 32 }); 33 } 34 35 /** 36 * СкÑÑÐ²Ð°ÐµÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ðµ ÑообÑение-"алеÑÑ" ÑеÑез Ñказанное вÑемÑ. 37 * 38 * @param {jQuery|HTMLElement|string} alert 39 * @param {number} timeout 40 * @return {void} 41 */ 42 function hideAlert(alert, timeout) { 43 window.setTimeout(function () { 44 $(alert).alert("close"); 45 }, timeout); 46 } 47 48 $.fn.cisAlerts = function () { 49 return this.each(function () { 50 $container = $(this); 51 }); 52 }; 53 54 var CisAlerts = {}; 55 /** @type {AlertDefaultOptions} */ 56 CisAlerts.defaults = { 57 encodeMessage: true, 58 defaultAlertClass: "alert-danger", 59 defaultShowClass: "in", 60 alertHideTimeout: 5000 // 5 ÑекÑнд 61 }; 62 63 /** 64 * ÐонÑигÑÑиÑÑÐµÑ Ð¾Ð¿Ñии по ÑмолÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñа 65 * 66 * @param {object} options новÑе опÑии 67 */ 68 CisAlerts.config = function (options) { 69 CisAlerts.defaults = $.extend({}, CisAlerts.defaults, options); 70 }; 71 72 /** 73 * ФоÑмиÑÑÐµÑ ÑообÑение об оÑибке ÑеÑвеÑа. 74 * 75 * @param {{name?: string, status?: string, message?: string}} json обÑекÑ, ÑодеÑжаÑий даннÑе об оÑибке, обÑÑно 76 * в ÑоÑмаÑе иÑклÑÑений Yii 77 * @return {string} СообÑение об оÑибке ÑеÑвеÑа 78 */ 79 CisAlerts.formatServerResponse = function (json) { 80 var message = json.hasOwnProperty("name") && json.name.length > 0 ? [json.name] : []; 81 if (json.hasOwnProperty("status")) { 82 message.push("(#" + json.status + ")"); 83 } 84 if (json.hasOwnProperty("message") && json.message.length > 0) { 85 if (message.length > 0) { 86 message[message.length - 1] = message[message.length - 1] + ":"; 87 } 88 message.push(json.message); 89 } 90 91 return message.join(" "); 92 }; 93 94 /** 95 * ÐобавлÑÐµÑ ÑообÑение-"алеÑÑ" в обÑий конÑÐµÐ¹Ð½ÐµÑ Ð½Ð° ÑÑÑаниÑе. 96 * 97 * @param {string} message ÑекÑÑ Ð¸Ð»Ð¸ HTML-ÑодеÑжимое ÑообÑÐµÐ½Ð¸Ñ 98 * @param {Object.<string, string>} [messageData] даннÑе Ð´Ð»Ñ ÑоÑмиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑообÑÐµÐ½Ð¸Ñ Ð² виде 99 * "клÑÑШаблона: подÑÑавлÑемоеÐнаÑение" 100 * @param {AlertOptions|number|boolean} [options] паÑамеÑÑÑ ÑообÑениÑ, ÑаймаÑÑ Ð°Ð²ÑомаÑиÑеÑкого закÑÑÑÐ¸Ñ ÑообÑÐµÐ½Ð¸Ñ 101 * в миллиÑекÑÐ½Ð´Ð°Ñ Ð¸Ð»Ð¸ false Ð´Ð»Ñ ÐµÐ³Ð¾ оÑÐ¼ÐµÐ½Ñ 102 * @return {boolean} РезÑлÑÑÐ°Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑаÑии 103 */ 104 CisAlerts.addAlert = function (message, messageData, options) { 105 if (undefined === $container) { 106 return false;
107 } 108 if ("object" !== typeof options) { 109 options = {hideTimeout: options}; 110 } 111 message = formatMessage(message, messageData || {}); 112 if (message.length > MAX_MESSAGE_LENGTH) { 113 message = message.substring(0, MAX_MESSAGE_LENGTH) + "..."; 114 } 115 var encodeMessage = options.encode || CisAlerts.defaults.encodeMessage, 116 alertClass = options.alertClass || CisAlerts.defaults.defaultAlertClass, 117 hideTimeout = options.hasOwnProperty("hideTimeout") ? 118 options.hideTimeout : 119 CisAlerts.defaults.alertHideTimeout; 120 var $alert = $("<div>", { 121 "class": "alert fade", 122 "role": "alert" 123 }), 124 $message = $("<span>"); 125 $alert.addClass(options.showClass || CisAlerts.defaults.defaultShowClass); 126 if (alertClass.length > 0) { 127 $alert.addClass(alertClass); 128 } 129 $("<button>", { 130 "class": "close", 131 "data-dismiss": "alert", 132 "aria-hidden": true, 133 "html": "×", 134 "type": "button" 135 }).appendTo($alert); 136 $message[encodeMessage ? "text" : "html"](message); 137 $alert 138 .append($message) 139 .appendTo($container) 140 .alert(); 141 if (false !== hideTimeout) { 142 hideAlert($alert, parseInt(hideTimeout, 10)); 143 } 144 145 return true; 146 }; 147 148 /** 149 * СкÑÑÐ²Ð°ÐµÑ Ð²Ñе ÑообÑÐµÐ½Ð¸Ñ ÑеÑез заданное вÑемÑ. 150 * 151 * @param {number} timeout ТаймаÑÑ Ð´Ð»Ñ Ð·Ð°ÐºÑÑÑÐ¸Ñ ÑообÑений, в мÑек. 152 * @return {void} 153 */ 154 CisAlerts.hideAllAlerts = function (timeout) { 155 $container.find(".alert").each(function () { 156 hideAlert(this, timeout); 157 }); 158 }; 159 160 $.CisAlerts = CisAlerts; 161})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.