1/** 2 * yhdatabase javascript library 3 * 4 * @author ryeon 5 * @since 2022. 06. 24. 6 * @version 1.1.0 7 */ 8 9var yhLib = (function () { 10 function removeParams(url) { 11 var startParamsIndex = url.indexOf('?'); 12 return url.substring(0, startParamsIndex > -1 ? startParamsIndex : url.length); 13 } 14 15 function verifiedURL(url) { 16 return exist(yh.contextPath) ? (url.indexOf(yh.contextPath) == 0 ? url : yh.contextPath + url) : url; 17 } 18 19 function ajaxErrorContentFrom(html) { 20 var $html = $(html); 21 var $error = $html.filter('#ajaxErrorContent'); 22 if ($error.length < 1) { 23 $error = $html.find('#ajaxErrorContent'); 24 } 25 26 return $error.children(); 27 } 28 29 var load = { 30 /** 31 jQuery.loadì wrapper í¨ì. íì ì¸ì ì§ì ì $box ììì ajax íµì ê²°ê³¼ë¡ ëì²´íë©°, ì ê·¼ ê¶íì´ ìê±°ë ì¸ì ì´ ìë ê²½ì° ì¤ë¥ ë´ì©ì ë ¸ì¶í¨. 32 33 ##### ì¬ì© ë°©ë² ##### 34 { 35 $box: (íì) ë¡ë© ìì ìë¦¬ë¨¼í¸ jquery ê°ì²´, 36 url: (íì) contents ë¡ë© URL., 37 formId: (ì í) payload ê´ë¦¬ form id. palyload ì°ì ìì 1, 38 $form: (ì í) payload ê´ë¦¬ form. form id를 ë기ë ëì jquery ê°ì²´ë¥¼ ë길 ìë ìì. palyload ì°ì ìì 2, 39 params: (ì í) URL payload palyload ì°ì ìì 3, 40 loadingArea: (ì í) $box ë´ ë¡ë© ë§í¬ ìì ì íì. ë°ëì data-ë¡ ììí´ì¼ íë©°, 미ì§ì ì 기본ê°ì data-loading-area. íëì íì´ì§ ë´ ì¬ë¬ ê°ì data-loading-areaê° ì¡´ì¬í´ ì¶©ëì´ ëë ê²½ì° ì¬ì© ê°ë¥., 41 contentsArea: (ì í) $box ë´ URL í¸ì¶ ê²°ê³¼ ëì²´ ìì ì íì. ë°ëì data-ë¡ ììí´ì¼ íë©°, 미ì§ì ì 기본ê°ì data-content-area., 42 replaceContentsId: (ì í) URL í¸ì¶ í ë°íë html ë´ $box ììì ë ¸ì¶í ììì id. 기본ê°ì aja
42xContent. 43 $replacement: (ì í) URL í¸ì¶ ëì ì´ë¯¸ ì¡´ì¬íë html ììë¡ ë´ì©ì ë³ê²½íê³ ì¶ì ê²½ì° ì ë¬. 44 } 45 */ 46 content: function (args) { 47 var deferred = $.Deferred(); 48 var $loading = yhLib.exist(args.loadingArea) ? args.$box.find("[" + args.loadingArea + "]") : args.$box.find("[data-loading-area]:first"); 49 var $content = yhLib.exist(args.contentsArea) ? args.$box.find("[" + args.contentsArea + "]") : args.$box.find("[data-content-area]:first"); 50 var replaceContentsId = yhLib.exist(args.replaceContentsId) ? args.replaceContentsId : "ajaxContent"; 51 var $form = yhLib.exist(args.formId) ? $('#' + args.formId) : (yhLib.exist(args.$form) ? args.$form : null); 52 var params = yhLib.exist($form) ? $form.serializedJSON() : args.params; 53 var url = yhLib.exist($form) ? $form.attr('action') : args.url; 54 if (yhLib.exist(url)) { 55 url = verifiedURL(url); 56 } 57 58 args.preCallback instanceof Function ? args.preCallback() : null; 59 60 $content.hide().empty(); 61 $loading.show(); 62 if (yhLib.exist(args.$replacement)) { // ëì²´ htmlì ì§ì ì ë¬. 63 $content.empty().append(args.$replacement.children()); 64 65 $loading.yh_animate('fadeOut', 'fast').then(function () { 66 return $content.yh_animate('fadeIn', 'fast'); 67 }).then(function () { 68 deferred.resolve(); 69 }); 70 } else { 71 $content.load(url + " #" + replaceContentsId + " > *", params, function (html, status) { 72 if (status == "error" || $content.is(':empty')) { 73 $content.append(ajaxErrorContentFrom(html)); 74 $loading.yh_animate('fadeOut', 'fast').then(function () { 75 $content.fadeIn('fast'); 76 deferred.reject(); 77 }); 78 } else { 79 $loading.yh_animate('fadeOut', 'fast').then(function () { 80 return $content.yh_animate('fadeIn', 'fast'); 81 }).then(function () { 82 deferred.resolve(); 83 }); 84 } 85 }); 86 } 87 88 return deferred.promise(); 89 } 90 } 91 92 var file = { 93 download: function (atchFileIdEncrypted, fileSnEncrypted) { 94 $.ajax({ 95 type: 'post', 96 url: verifiedURL('/common/file/download/log/saveProc.do'), 97 data: { atchFileId: atchFileIdEncrypted, fileSn: fileSnEncrypted, siteCode: yh.siteCodeFull }, 98 }); 99 100 window.open(verifiedURL('/common/file/download.do?atchFileId=' + atchFileIdEncrypted + '&fileSn=' + (exist(fileSnEncrypted) ? fileSnEncrypted : ''))); 101 return false; 102 }, preview: function (arg0, arg1) { 103 var frm = document.getElementById("filePreviewForm"); 104 105 frm.atchFileId.value = arg0; 106 frm.fileSn.value = arg1; 107 108 frm.submit(); 109 return false; 110 } 111 } 112 113 var _promise = { 114 ajax: function (opt) { // optë 기본 $.ajax ë³ìì ëì¼. 115 var deferred = $.Deferred(); 116 117 var ajaxOptions = { 118 type: "post", dataType: "json", success: function (result) { 119 deferred.resolve(result); 120 }, error: function (e) { 121 console.log(e); 122 deferred.reject(e); 123 alert('ìë²ì íµì ì¤ ì¤ë¥ê° ë°ìíìµëë¤.'); 124 } 125 } 126 $.extend(ajaxOptions, opt); 127 ajaxOptions.url = verifiedURL(ajaxOptions.url); 128 129 if (opt.data instanceof FormData) { 130 ajaxOptions.contentType = false; 131 ajaxOptions.processData = false; 132 } 133 134 $.ajax(ajaxOptions).fail(function (e) { deferred.reject(e); }); 135 136 return deferred.promise(); 137 }, get: function (opt) { 138 var deferred = $.Deferred(); 139 140 $.get(verifiedURL(opt.url), function (html) { 141 deferred.resolve(html); 142 }).fail(function (e) { 143 deferred.reject(e); 144 }); 145 146 return deferred.promise(); 147 } 148 } 149 150 var inline = (function () { 151 var attrs = { 152 id: { 153 form: "data-req-form-id", // íµì ì ì´ì©í form id. ìë ê²½ì° ìì form ê°ì²´ë¥¼ ìì±í´ íµì . 154 // ì´ ê°ì´ ìë ê²½ì° req-form-idì í´ë¹íë formê³¼ req-merge-form-idì í´ë¹íë formì í©ì³ì íµì ì ì´ì©íë¤. ì´ë íµì URLì req-form-id를 ì´ì©íë¤. 155 // mergeíê³ ì¶ì§ ìì ììê° ìë¤ë©´ data-req-not-merge ìì± ë¶ì¬ ì mergeíì§ ìëë¤. 156 // ì´ ê°ì ì´ì© ììë data-req-merge-prefix를 ì§ì í ì ìë¤. 미ì§ì ì 기본ê°ì ìë¤. 157 // data-req-merge-prefixê°ì, mergeíë ¤ë ê°ì²´ì ì¡´ì¬íë ì리먼í¸ì ëª ì¹ ìì prefixë¡ ì´ì©ëë¤. 158 mergeForm: 'data-req-merge-form-id', 159 successForm: 'data-req-success-form-id' // ajax ì²ë¦¬ ì±ê³µ í postí form id. ë¨, req-afterê° ì ì¸ëì´ ìë¤ë©´ 무ìëë©°, success-msgë í¨ê» ì´ì©í ì ìë¤. 160 }, 161 action: "data-req-action", // íµì URL 162 msg: { 163 confirm: "data-req-confirm-msg", // í¸ì¶ ì íì¸ ìë´ ë¬¸êµ¬ 164 success: "data-req-success-msg", // í¸ì¶ í ì±ê³µ ìë´ ë¬¸êµ¬ 165 failed: "data-req-failed-msg" // í¸ì¶ í ì¤í¨ ìë´ ë¬¸êµ¬ 166 }, 167 url: { 168 success: 'data-req-success-url' // ì±ê³µ í ì´ë íë©´ url 169 }, 170 before: "data-req-before", // ajax í¸ì¶ ì ì²ë¦¬. form ë°ì´í° ë³µì¬, alert ë± ì²ë¦¬ ê°ë¥. 171 after: "data-req-after", // ajax í¸ì¶ íì²ë¦¬. ì´ ê°ì´ ìë ê²½ì° success message, url ë± ë¤ë¥¸ ìµì ì 무ìëë¤. 172 target: "data-req-target" // post ì form tag target 173 } 174 175 var temporaryRequestFormName = "temporaryRequestForm"; 176 177 /* ########## private ########## */ 178 179 function paramsOf(thiz) { 180 return $.map(thiz.attributes, function (e) { 181 var converted = {}; 182 converted.key = e.name; 183 converted.value = e.value; 184 return converted; 185 }).filter(function (e) { 186 return e.key.match(/^data-req-p-.+$/ig) != null; 187 }).map(function (e) { 188 e.key = e.key.replace(/data-req-p-/ig, ""); 189 return e; 190 // return e.key.replace(/-[a-zA-Z]{1}/, function(matched) { return matched.substr(1, 2).toUpperCase() }); 191 }); 192 } 193 194 function getParamsOf(thiz) { 195 return $.map(thiz.attributes, function (e) { 196 var converted = {}; 197 converted.key = e.name; 198 converted.value = e.value; 199 return converted; 200 }).filter(function (e) { 201 return e.key.match(/^data-req-get-p-.+$/ig) != null; 202 }).map(function (e) { 203 e.key = e.key.replace(/data-req-get-p-/ig, ""); 204 return e; 205 // return e.key.replace(/-[a-zA-Z]{1}/, function(matched) { return matched.substr(1, 2).toUpperCase() }); 206 }); 207 } 208 209 function prepareFrom(el) { 210 $("form[name=" + temporaryRequestFormName + "]").remove(); 211 212 var $this = exist(el) ? $(el) : $(this); 213 var params = paramsOf($this[0]); 214 var formId = $this.attr(attrs.id.form); 215 var $form = $("#" + formId); 216 var action = $form.length > 0 ? $form.attr('action') : $this.attr(attrs.action); 217 var mergeFormId = $this.attr(attrs.id.mergeForm); 218 219 var getParams = getParamsOf($this[0]); 220 if (getParams.length > 0) { 221 // íì¬ actionì 기ì¬ëì´ ìë ì¸ì ì ë³´. (cache ë°©ì§ì©) 222 var currentQueryString = action.indexOf('?') > -1 ? action.substring(action.indexOf('?') + 1, action.length) : null; 223 var currentQuerySet = yhLib.exist(currentQueryString) 224 ? currentQueryString.split('&').map(function (e) { 225 return { 226 key: e.substring(e, e.indexOf('=')), 227 value: e.substring(e.indexOf('=') + 1, e.length) 228 } 229 }) : []; 230 var currentQueryKeyList = currentQuerySet.map(function (e) { return e.key }) 231 232 // ì¤ë³µ ì¸ì ì ê±°. 233 var duplicatedKeys = getParams.map(function (e) { 234 return e.key.camelcase(); 235 }).filter(function (key) { 236 return currentQueryKeyList.indexOf(key) > -1; 237 }) 238 if (yhLib.exist(duplicatedKeys)) { 239 for (var i = 0; i < duplicatedKeys.length; i++) { 240 var querySets = currentQuerySet.filter(function (e) { return e.key == duplicatedKeys[i]; }) 241 for (var j = 0; j < querySets.length; j++) { 242 var queryString = querySets[j].key + '=' + querySets[j].value; 243 action = action.replace(queryString, ''); 244 } 245 } 246 } 247 248 // ì ê· ì¸ì ì¶ê°. 249 var queryString = getParams.map(function (e) { 250 return e.key.camelcase() + '=' + e.value; 251 }).join('&'); 252 action += ((action.indexOf('?') > -1 ? '&' : '?') + queryString); 253 } 254 255 if ($form.length < 1) { 256 $form = $("<form id='" + temporaryRequestFormName + "' name='" + temporaryRequestFormName + "' method='post'>"); 257 $form.appendTo("body"); 258 } 259 260 exist($this.attr(attrs.target)) ? $form.attr("target", $this.attr(attrs.target)) : null; 261 $form.attr("action", action); 262 263 if (exist(mergeFormId)) { 264 var $mergeForm = $('#' + mergeFormId); 265 var $mergeElems = []; 266 267 var $mergeInputs = $mergeForm.clone().find('input[type=hidden], input[type=text]').not('[data-req-not-merge]').hide(); 268 var $mergeEtcs = $mergeForm.find('select, [type=checkbox]:checked, [type=radio]:checked').not('[data-req-not-merge]').map(function (_, e) { 269 return $('<input type="hidden" name="' + $(e).attr('name') + '" value="' + $(e).val() + '">'); 270 }); 271 272 $mergeElems = $mergeElems.concat($mergeInputs.get()); 273 $mergeElems = $mergeElems.concat($mergeEtcs.get()); 274 275 var prefix = $(el).attr('data-req-merge-prefix'); 276 if ($mergeElems.length > 0) {
277 $mergeElems.forEach(function (e) { 278 $(e).attr('data-merged', 'y'); 279 280 var name = $(e).attr('name'); 281 $(e).attr('name', (exist(prefix) ? (prefix + '_') : '') + name); 282 }); 283 } 284 285 $form.find('[data-merged=y]').remove(); 286 $form.append($mergeElems); 287 } 288 289 Object.keys(params).forEach(function (i) { 290 var keyValue = params[i]; 291 var $target = $form.find('[name="' + keyValue.key.camelcase() + '"]'); 292 if ($target.length < 1) { 293 $target = $("<input type='hidden' name='" + keyValue.key.camelcase() + "' />"); 294 $target.appendTo($form); 295 } 296 $target.val(keyValue.value); 297 }); 298 299 return $form; 300 } 301 302 function ajax(el) { 303 var deferred = $.Deferred(); 304 305 var $this = exist(el) ? $(el) : $(this); 306 var before = $this.attr(attrs.before); // ajax ì ì²ë¦¬ í¨ì 307 308 if (!exist($this.attr(attrs.msg.confirm)) || confirm($this.attr(attrs.msg.confirm))) { 309 var before = exist(before) && window[before] instanceof Function ? window[before]($this) : true; 310 if (before) { 311 var $form = prepareFrom(el); 312 var data = $form.serializedJSON(); 313 var after = $this.attr(attrs.after); 314 var successFormId = $this.attr(attrs.id.successForm); 315 316 yhLib.promise.ajax({ 317 url: verifiedURL($form.attr("action")), data: data 318 }).then(function (result) { 319 if (exist(after) && window[after] instanceof Function) { 320 window[after](result); 321 } else { 322 if (result.success) { 323 yhLib.exist($this.attr(attrs.msg.success)) ? alert($this.attr(attrs.msg.success)) : null; 324 325 if (yhLib.exist(successFormId)) { 326 $('#' + successFormId)[0].submit(); 327 } else { 328 var successURL = $this.attr(attrs.url.success); 329 yhLib.exist(successURL) ? location.href = verifiedURL(successURL) : null; 330 deferred.resolve(result); 331 } 332 } else { 333 var msg = yhLib.exist($this.attr(attrs.msg.failed)) 334 ? $this.attr(attrs.msg.failed) 335 : (yhLib.exist(result.error) 336 ? result.error 337 : (yhLib.exist(result.errors) ? result.errors[0] : null) 338 ); 339 yhLib.exist(msg) ? alert(msg) : null; 340 } 341 } 342 }) 343 344 $form.remove(); 345 } 346 } 347 348 return deferred.promise(); 349 } 350 351 function post(el) { 352 prepareFrom(el)[0].submit(); 353 } 354 355 function get(el) { 356 var $form = prepareFrom(el); 357 $form.attr('method', 'get'); 358 $form.submit(); 359 } 360 361 /** 362 * ì ì°½ ì´ë¦¼. 363 * 364 * data-req-action: (form-id ë³´ë¤ ì°ì ìì ë®ì) 365 * data-req-name: (ì í) ì ì°½ title. 기본ê°: ì ì°½ ì´ë¦¼. 366 * data-req-width: (ì í) ì ì°½ ëë¹. 기본ê°: 500px. 367 * data-req-height: (ì í) ì ì°½ ëì´. 기본ê°: 450px. 368 */ 369 function open(el) { 370 var url = $(el).attr('data-req-action'); 371 var windowName = $(el).attr('data-req-name'); 372 var width = $(el).attr('data-req-width'); 373 var height = $(el).attr('data-req-height'); 374 375 window.open( 376 url, 377 (yhLib.exist(windowName) ? windowName : 'ì ì°½ ì´ë¦¼'), 378 "width=" + (yhLib.exist(width) ? width : '500') + 379 ", height=" + (yhLib.exist(height) ? height : '450') + 380 ", scrollbars=yes, resizable=yes" 381 ); 382 } 383 384 function failCallback(e) { 385 console.log(e); 386 alert("íµì ì¤ ì¤ë¥ê° ë°ìíìµëë¤."); 387 } 388 389 return { 390 ajax: ajax, get: get, post: post, open: open, failCallback: failCallback, paramsOf: paramsOf, prepareFrom: prepareFrom 391 } 392 })(); 393 394 function execute(funcStr) { 395 exist(funcStr) ? window[funcStr]() : null; 396 } 397 398 function exist(obj) { 399 return obj != undefined && obj != null 400 && (obj.constructor.name != "String" || obj.trim().length > 0) 401 && (!(obj instanceof Array) || obj.length > 0); 402 } 403 404 function _eval(funcStr) { 405 return funcStr != undefined && funcStr != null && funcStr.length > 0 ? (new Function("return " + funcStr))() : null; 406 } 407 408 function turnOnAjaxLoadingBox() { 409 var $loadingBox = ajaxLoadingBox(); 410 411 $(document).ajaxStart(function () { $loadingBox.fadeIn('fast'); }); 412 $(document).ajaxStop(function () { $loadingBox.fadeOut('fast'); }); 413 414 function ajaxLoadingBox() { 415 var $box = $('#ajaxLoadingBox'); 416 if ($box.length > 0) { 417 return $box; 418 } else { 419 $('body').append('' 420 + '<div id="ajaxLoadingBox" class="ajax-loading" style="display: none;">' 421 + ' <img src="' + yh.contextPath + '/sys/img/login/ico_load_modal.gif" alt="ìì² ë´ì© ì²ë¦¬ ì¤...">' 422 + '</div>' 423 ); 424 return $('#ajaxLoadingBox'); 425 } 426 } 427 } 428 429 function turnOffAjaxLoadingBox() { 430 $('#ajaxLoadingBox').fadeOut('fast'); 431 $(document).unbind('ajaxStart'); 432 $(document).unbind('ajaxStop'); 433 } 434 435 return {
436 removeParams: removeParams, verifiedURL: verifiedURL, ajaxErrorContentFrom: ajaxErrorContentFrom, 437 file: file, inline: inline, req: inline, exist: exist, eval: _eval, promise: _promise, load: load, 438 turnOnAjaxLoadingBox: turnOnAjaxLoadingBox, turnOffAjaxLoadingBox: turnOffAjaxLoadingBox, 439 execute: execute 440 } 441})(); 442 443String.prototype.camelcase = function() { 444 // test[0].idx -> test_0___idx 445 // test[0].idx-abc -> test_0___idx-abc 446 // [] = __ 447 // . = __ 448 var value = this; 449 450 var listIndexMatches = value.match(/_[\d]_/g); 451 if (listIndexMatches !== null) { 452 listIndexMatches.forEach(function(matched) { 453 value = value.replace(new RegExp(matched, 'g'), '[' + matched.replace(/_/g, '') + ']'); 454 }); 455 } 456 457 value = value.replace(/__/g, '.'); 458 459 return value.toLowerCase().replace(/-+(.)/g, function(_, chr) { 460 return chr.toUpperCase(); 461 }); 462}; 463 464 465/** ê³µíµ íì´ì§ í¨ì */ 466function goPage(page) { 467 var formId; 468 try { 469 formId = yh.formId ? yh.formId : "list"; 470 } catch (e) { 471 formId = "list"; 472 } 473 474 var frm = document.getElementById(formId); 475 frm.page.value = page; 476 frm.submit(); 477} 478 479function goListLimit() { 480 var formId; 481 try { 482 formId = yh.formId ? yh.formId : "list"; 483 } catch (e) { 484 formId = "list"; 485 } 486 487 var frm = document.getElementById(formId); 488 // ì íë ê° ê°ì ¸ì¤ê¸° 489 var selectedValue = document.getElementById("countType").value; 490 frm.listLimit.value = selectedValue; 491 frm.page.value = 1; 492 frm.searchType3.value = "0"; 493 frm.submit(); 494} 495 496$.fn.serializedJSON = function () { 497 var params = $(this).serializeArray(); 498 var keys = params.map(function (e) { return e.name }); 499 var values = params.map(function (e) { return e.value }); 500 501 var rtn = {}; 502 keys.forEach(function (e, i) { 503 rtn[e] = values[i]; 504 }); 505 506 return rtn; 507} 508 509$.fn.yh_animate = function (funcName, speed) { 510 var deferred = $.Deferred(); 511 var $this = $(this); 512 $this[funcName](yhLib.exist(speed) ? speed : 'normal', function () { 513 return deferred.resolve($this); 514 }); 515 516 return deferred.promise(); 517} 518 519$.fn.simpleAjaxForm = function (callback, opt) { 520 $(this).each(function () { 521 var $form = $(this); 522 var options = { 523 url: yhLib.verifiedURL($form.attr('action')), type: 'post', dataType: 'json', resetForm: false, 524 beforeSubmit: function () { 525 var result = $form.find('[data-v-target=y]').validate().alert(); 526 result ? yhLib.turnOnAjaxLoadingBox() : null; 527 return result; 528 }, success: function (result, _, _, form) { 529 yhLib.exist(callback) && callback instanceof Function ? callback(result, form) : null; 530 }, fail: function (e) { 531 console.log(e); 532 alert('ìë²ì íµì ì¤ ì¤ë¥ê° ë°ìíìµëë¤.'); 533 }, error: function (e) { 534 console.log(e); 535 alert('ìë²ì íµì ì¤ ì¤ë¥ê° ë°ìíìµëë¤.'); 536 }, complete: yhLib.turnOffAjaxLoadingBox 537 }; 538 539 yhLib.exist(opt) ? $.extend(options, opt) : null; 540 541 $form.ajaxForm(options); 542 }); 543} 544 545/** 546 * YNê°ì ë°ì¼ë©´ì on-off ëìì¸ì checkbox를 ì ê³µíë íëì ëì ì§ì í¨ì. 547 * YNê°ì ë°ë ì¤ì íë를 hiddenì¼ë¡ ì ì¸ í data-onoff-type="y" ìì± ë¶ì¬, 548 * YNê°ì ë°ë ì¤ì íëì ì´ë¦ + OnOff를 idë¡ íë checkbox ë³ë ì ì¸í´ ì´ì© 549 * 550 * ì) <form:hidden path="test" data-onoff-type="y" /> 551 * <input type="checkbox" id="testOnOff" value="Y"> 552 * <label for="testOnOff" class="chk-onoff">test</label> 553 */ 554$.fn.useOnOffHandler = function () { 555 $(this).get().forEach(function (real) { 556 var $real = $(real); 557 var onOffElementId = yhLib.exist($real.attr('data-onoff-id')) ? $real.attr('data-onoff-id') : $real.attr('name') + 'OnOff'; 558 if (yhLib.exist(onOffElementId)) { 559 var $onOff = $('#' + onOffElementId); 560 $onOff.unbind().change(function () { 561 $real.val($(this).is(':checked') ? 'Y' : 'N').trigger('change'); 562 }); 563 564 $real.syncOnOffHandlerStatus(); // realì íì¬ ì í ê°ì onOff handler ììì ì ì©. real == 'Y'ë¼ë©´ onOffë checkedë ê²ì´ê³ , ìëë¼ë©´ ë°ëê° ëë¤. 565 } 566 }); 567} 568 569/** 570 * YNê°ì ê´ë¦¬íë ì¤ì íëì on-off ëìì¸ì checkbox ììê° ê° ë기í í¨ì. 571 * ì¤ì ê°ì ê´ë¦¬íë íëì YN ê°ì ë°ë¼ on-off ëìì¸ checkboxì ìí를 ë³íìí¨ë¤. 572 * 기본ì ì¼ë¡ ì¸ë¶ í¸ì¶ì useOnOffHandler를 ì¬ì©íë ê²ì¼ë¡ ì¶©ë¶íë(onOff ì´ë²¤í¸ ë°ì¸ë©ê³¼ ì¤ì ìììì ê° ë기í ì§ì), 573 * í¹ë³í ê²½ì° ì¤ì íëì ê°ë§ì´ ë°ë ê²½ì° on-off checkbox를 ë기íí기 ìí´ ì´ì©í ì ìë¤. 574 * ê·¸ ì, ì¦ onoff ìí를 ì¤ì íëë¡ ì ì´íë ¤ë ê²½ì°ë onoff ììì change ì´ë²¤í¸ë¥¼ ì¼ì¼í¤ë©´ ëë¤. 575 * 576 * @param editable true: ìì ê°ë¥, false: ìì ë¶ê°. false í ë¹ ì onOff ììë disabled ìíê° ëë¤. 577 */ 578$.fn.syncOnOffHandlerStatus = function (editable) { 579 editable = yhLib.exist(editable) ? editable : true;
580 $(this).get().forEach(function (real) { 581 var $real = $(real); 582 var onOffElementId = yhLib.exist($real.attr('data-onoff-id')) ? $real.attr('data-onoff-id') : $real.attr('name') + 'OnOff'; 583 if (yhLib.exist(onOffElementId)) { 584 var $onOff = $('#' + onOffElementId); 585 $onOff.prop('checked', $real.val() == 'Y').trigger('change').prop('disabled', !editable); 586 } 587 }); 588}
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.