1/* 2 * ì¬ì´ë²ì´ë©ì§ë¤ì´ì 3 * ìµì´ ìì±ì : [email protected] 4 * ë§ì§ë§ ìì ì : [email protected] 5 * ë§ì§ë§ ìì ë ì§ : 16.10.28 6 */ 7(function() { 8 9 var productName = 'webPonent CHART 2.0'; 10 var productId = 'WC2'; 11 12 if (typeof WEBPONENT_CHART_LICENSE_KEY === 'undefined') { 13 14 $.ajax({ 15 url : '/webponent.licenseKey.js', 16 dataType : 'script', 17 async : false 18 }); 19 20 if (typeof WEBPONENT_CHART_LICENSE_KEY === 'undefined' || WEBPONENT_CHART_LICENSE_KEY === '') { 21 22 alert(productName + 'ì ë¼ì´ì¼í¸í¤ë¥¼ ì ë ¥í´ì£¼ì¸ì.'); 23 return; 24 } 25 } 26 27 var key = "SXGWLZPDOKFIVUHJYTQBNMACERxswgzldpkoifuvjhtybqmncare"; 28 29 function decodeStr(coded) { 30 coded = decodeURIComponent(coded); 31 var uncoded = ""; 32 var chr; 33 for (var i = coded.length - 1; i >= 0; i--) { 34 chr = coded.charAt(i); 35 uncoded += (chr >= "a" && chr <= "z" || chr >= "A" && chr <= "Z") ? String 36 .fromCharCode(65 + key.indexOf(chr) % 26) 37 : chr; 38 } 39 return uncoded; 40 } 41 42 function appendTrialUi(wrapper) { 43 44 wrapper = $(wrapper); 45 46 var trialUiWrapper = $('<div class="WEBPONENT-TRIAL-UI">'); 47 48 trialUiWrapper 49 .css({ 50 'position' : 'absolute', 51 'top' : '0', 52 'left' : '0', 53 'width' : '100%', 54 'height' : '100%', 55 'background-image' : "url('data:image/png;base64,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')", 56 'background-repeat' : 'no-repeat', 57 'background-position' : 'center center', 58 'z-index' : '1', 59 'opacity' : '0.3' 60 }); 61 62 var img = $('<img src="http://www.webponent.com/img/webponent.png"/>'); 63 64 trialUiWrapper.append(img); 65 66 wrapper.prepend(trialUiWrapper); 67 68 wrapper.on('mouseenter', function() { 69 70 trialUiWrapper.stop(true, true); 71 trialUiWrapper.hide(); 72 }); 73 74 wrapper.on('mouseleave', function() { 75 76 trialUiWrapper.stop(true, true); 77 trialUiWrapper.fadeIn(); 78 }); 79 80 wrapper.data('check-trial-ui', setInterval(function() { 81 82 if (wrapper.find('.WEBPONENT-TRIAL-UI').length === 0) { 83 84 clearInterval(wrapper.data('check-trial-ui')); 85 appendTrialUi(wrapper[0]); 86 } 87 }, 5000)); 88 } 89 90 function makeLicenseObject(text) { 91 92 var obj = {}; 93 94 var splitedArray = text.split(';'); 95 96 obj.product = splitedArray[0]; 97 obj.customer = splitedArray[2]; 98 obj.licenseType = splitedArray[3]; 99 obj.domains = splitedArray[5]; 100 obj.expireDate = splitedArray[6]; 101 102 return obj;
103 } 104 105 var TRIAL_UI = false; 106 107 var decodedLicenseKey = decodeStr(WEBPONENT_CHART_LICENSE_KEY); 108 109 var licenseObject = makeLicenseObject(decodedLicenseKey); 110 111 if (licenseObject.licenseType === 'TRIAL') { 112 113 TRIAL_UI = true; 114 115 if (new Date() > new Date(licenseObject.expireDate * 1)) { 116 117 alert(productName + ' ' + licenseObject.licenseType + 'ë²ì ì ë¼ì´ì¼ì¤ ì í¨ê¸°ê°ì´ ì§ë¬ìµëë¤.'); 118 return; 119 } 120 121 } else if (licenseObject.licenseType === 'DEVELOP') { 122 123 if (new Date() > new Date(licenseObject.expireDate * 1)) { 124 125 TRIAL_UI = true; 126 } 127 /** 128 licenseType EDìë¦¬ì¦ ì¡°ê±´ ì¶ê°(ver.150915 íë¤ì§) 129 */ 130 } else if (licenseObject.licenseType === 'OFFICIAL' || licenseObject.licenseType === "ED001" || 131 licenseObject.licenseType === "ED002" || licenseObject.licenseType === "ED003") { 132 133 var domain = window.location.host.toUpperCase(); 134 135 TRIAL_UI = true; 136 137 var splitedDomain = licenseObject.domains.split(','); 138 139 for (var i = 0; i < splitedDomain.length; i++) { 140 141 var regesteredSite = splitedDomain[i]; 142 143 if (domain.indexOf(regesteredSite) > -1) { 144 145 TRIAL_UI = false; 146 } 147 } 148 } else if (licenseObject.product !== productId) { 149 150 TRIAL_UI = true; 151 152 } else { 153 154 alert('ì í¨íì§ ìì ' + productName + ' ë¼ì´ì¼ì¤ì ëë¤.'); 155 TRIAL_UI = true; 156 } 157 158 (function() { 159 160 var self = {}; 161 162 var elementType = getElementType(); 163 var defaultFont = 'Nanum Gothic'; 164 165 /** 166 * 기본ì¼ë¡ ì¤ì ëì´ ìë ì¤íì¼ ë°í 167 * @return {defaultStyles} default styles 168 */ 169 function getDefaultStyles () { 170 171 defaultFont = 'Nanum Gothic'; 172 var defaultStyles = { 173 /** 174 * 기본 ë ì´ìì 175 * @position {Object} : ì°¨í¸ ë´ ìì¹ ì´ë (xì¶, yì¶) 176 * @area {Object} : ë°íìì, í ë리 177 */ 178 layout : { 179 position : { 180 x : 0, 181 y : 0 182 }, 183 area : { 184 color : '#f8f8f8' , 185 border :'#c1c6cc' 186 } 187 }, 188 189 /** 190 * OBJECT STYLES, VALUE 191 * @width {Object} : GAUGE OBJECT'S WIDTH 192 * @height {Object} : GAUGE OBJECT'S HEIGHT 193 */ 194 object : { 195 width: 360, 196 height: 240 197 }, 198 199 /** 200 * COUNTER STYLES 201 * @x {Object} : COUNTER POSITION Xì¶ ìì¹ ì´ë 202 * @y {Object} : COUNTER POSITION Yì¶ ìì¹ ì´ë 203 * @width {Object} : COUNTER ëì´ ë¹ì¨ 204 * @height {Object} : COUNTER ëì´ ë¹ì¨ 205 * @radius {Object} : COUNTER BORDER-RADIUS í ëë¦¬ê° ì¡°ì 206 * @color {Object} : COUNTER BACKGROUND 207 * @border {Object} : COUNTER BORDER COLOR 208 * @text {Object} : COUNTER NUMBER FONT STYLE {font-family, font-size, font-weight} 209 */ 210 counter : { 211 x : 0 , 212 y : 0 , 213 width: 'auto', 214 height: 'auto', 215 radius : 2, 216 color : '#fcfcfc', 217 border : '#bdc2ca', 218 text : { 219 family : 'LCDMono', 220 size : 1, 221 weight : 800, 222 color:'#484b4e' 223 } 224 }, 225 226 /** 227 * AXIS STYLES
228 * @block {Object} : ëê¸ì ì ì¤ì 229 * @interval {Object} : ëê¸ì¬ì´ì ê°ê²© ì ì¤ì 230 * @text {Object} : ì¹ì í ì¤í¸ ê´ë ¨ ì¤ì 231 * @blockLine {Object} : ì¹ì를 ê°ë¦¬í¤ë 긴 ëê¸ 232 * @intervalLine {Object} : ê°ê²©ì ê°ë¥´í¤ë ì¼ë° ëê¸ 233 */ 234 axis : { 235 block : 10 , 236 interval : 4 , 237 text : { 238 num : 5, 239 family: defaultFont, 240 size: 12, 241 weight: "bold", 242 align: "end", 243 color : "#797f85" 244 }, 245 blockLine : { 246 color: "#a3aab1", 247 length : 15 248 }, 249 intervalLine : { 250 color: "#c3c8cd", 251 length: 7.5 252 } 253 }, 254 255 /** 256 * CYLINDER GAUGEì ì¤íì¼ ì¤ì 257 * @border {Object} :border ìì 258 * @fill {Object} : ì±ìì§ ì¤ë¦°ëì 259 * @current {Object} : íì¬ ìì¹í ë¼ì¸ 260 * @prevDataLine {Object} : ì´ì ìì 261 */ 262 cylinder : { 263 border :'#c7cfd9', 264 fill : { 265 color : "100-#2bcdba-#6bdccf", 266 opacity: 0.3, 267 border : 'none' 268 }, 269 current : { 270 color : '#6bdccf' 271 }, 272 prevDataLine : { 273 color : '#c7cfd9' 274 } 275 }, 276 277 /** 278 * Thermometer GAUGEì ì¤íì¼ ì¤ì 279 * @prevBack {Object} :border ìì 280 * @prevBar {Object} : ì±ìì§ ì¤ë¦°ëì 281 * @bottom {Object} : íì¬ ìì¹í ë¼ì¸ 282 * @barLine {Object} : ì´ì ìì 283 * @bar {Object} : ì´ì ìì 284 */ 285 thermometer : { 286 prevBackground: { 287 color : "#fcfcfc", 288 border : 'none' 289 }, 290 prevBar : { 291 size : 1, 292 color : "#ff6360", 293 opacity : 0.5 294 }, 295 bottom : { 296 color : '#ff6360', 297 border : "#bcc7d4" 298 }, 299 back : { 300 color : "#fcfcfc", 301 border : "#bcc7d4" 302 }, 303 bar : { 304 color : "100-#ff6360-#ff908e", 305 border : 'none' 306 } 307 }, 308 309 /** 310 * ìµëê°, íê· ê°, íì¼ íìê° ê´ë ¨ STYLE ì¤ì 311 * @max {Object} : ì ë ¥ë ë°ì´í°ë¤ ê°ì ìµëê° 312 * @avg {Object} : ì ë ¥ë ë°ì´í°ë¤ì íê· ê° 313 * @target {Object} : ì¬ì©ìê° ì¤ì í íìê° 314 */ 315 pointer : { 316 max : { 317 bar : { 318 color : '#ff625f', 319 length :10 320 }, 321 font : { 322 size : 10, 323 color : '#ff625f', 324 align: 'start', 325 position : -18, 326 family: defaultFont 327 } 328 }, 329 avg : { 330 bar : { 331 color : '#2bcdba', 332 length :10 333 }, 334 font : { 335 size : 10, 336 color : '#2bcdba', 337 align: 'start', 338 position : -18, 339 family: defaultFont 340 } 341 }, 342 target : { 343 color : '#8397a6' 344 } 345 } 346 }; 347 return defaultStyles; 348 } 349 350 /** 351 * 기본ì¼ë¡ ì¤ì ëì´ ìë ìµì ë°í 352 * data ë¶ë¶ì í´ë¹íë keyë¤ì ê³ ì ì´ë©° ì¶ê°ëë ë¶ë¶ì ìì ë¡ê² ì¤ì íë¤. 353 * @return {defaultOptions} default options 354 */ 355 function getDefaultOptions() { 356 357 var defaultOptions = { 358 /* DATA SETTING - ë°ì´í° ì¤ì */ 359 data : { 360 data : null , 361 url : null , // Ajax를 íµí´ì ë°ì´í°ë¥¼ ê°ì ¸ì
361¤ê³ ì í ê²½ì° 362 type : null , // json, text íí ì¤ì 363 reverse : false , // ë°ì´í° íë¦ì´ ë°ëë¡ ë¤ì´ì¬ê²½ì° 364 jsonDepth : 'output.result' , // jsonì depth 365 format : null, // ë°ì´í° í¬ë©§ íì ì¤ì 366 use : null // ííí ë°ì´í° key ê° , nullì¸ê²½ì° ë°ì´í°ì ë§ì§ë§keyê° ê¸°ì¤ì´ ëë¤. 367 }, 368 369 /* USING OPTION - ìµì ì¬ì© ì 무 */ 370 use : { 371 axis : true , // ëê¸ 372 axisText : true , // ì¹ì 373 counter : true , // ì¹ìíìí 374 max :true , // ìµëê° íì 375 avg : true , // íê· ê° íì 376 target : false , // íê²ê° íì 377 toolTip : true , // ë§ì°ì¤ì¤ë² í´í 378 animate : true , // ìì§ì´ë í¨ê³¼ 379 resize : false , // ê²ì´ì§ ì¬ì´ì¦ ì¡°ì 380 responsive : true // ë°ìí ì 무 381 }, 382 383 /* TOOLTIP SETTING IN DETAIL- í´í ì¸ë¶ ì¤ì */ 384 toolTip : { 385 className : null , 386 position : { 387 x : 0 , 388 y : 0 389 }, 390 func : null 391 }, 392 393 /* ì¶ì MAX, MIN VALUE SETTINGS - ìµëê°, ìµìê° ì¤ì (DEFAULT - auto ) */ 394 minmax : { 395 min : 'auto' , 396 max : 'auto' 397 }, 398 399 /* ë°ì´í°ì maxê°, íê· ê°, íê²íìê° ì¤ì (DEFAULT - auto ) */ 400 pointer : { 401 max : 'auto' , 402 avg : 'auto' , 403 target : 0 404 } 405 406 }; 407 408 return defaultOptions; 409 } 410 411 /** 412 * Gauge를 그리기 ìí ìì¹ë¤ì ì¤ì 413 * @type {Object} 414 */ 415 function cloneSettingSize(gauge, type) { 416 417 var width = gauge.svg.width, 418 height = gauge.svg.height, 419 styles = gauge.styles, 420 use = gauge.options.use, 421 objWidth = 0, objHeight = 0; 422 423 var centerX = (width / 2) + styles.layout.position.x; 424 var standard = (width > height) ? height : width; 425 var centerY = (height / 2) + styles.layout.position.y; 426 427 switch (type) { 428 case 'cylinder': 429 objWidth = width * 0.237; 430 objHeight = height * 0.543; 431 break; 432 433 case 'thermometer': 434 centerY = centerY - 40; 435 objWidth = standard * 0.1; 436 objHeight = height * 0.5; 437 break; 438 } 439 440 /** 441 * ì¬ì©ìê° CHARTì í¬ê¸°ë¥¼ ë³ê²½ 442 */ 443 if (use.resize) { 444 centerX = centerX + 5; 445 objWidth = standard * (styles.object.width / 400); 446 objHeight = standard * (styles.object.height / 448); 447 } 448 449 var gapX = (objWidth / 2), 450 startX = (centerX - gapX), 451 endX = (startX + objWidth); 452 453 var settingSize = { 454 objWidth : objWidth, 455 objHeight : objHeight, 456 centerX : centerX, 457 gapX : gapX, 458 startX : startX, 459 endX : endX, 460 centerY :centerY , 461 startY :centerY -(objHeight/2), 462 endY :centerY+(objHeight/2) 463 }; 464 return settingSize; 465 466 } 467 468 function cloneSettingModel(gauge) { 469 var settingModel = { 470 data : [ ], 471 wrapper : { 472 width : null 473 } 474 }; 475 return settingModel; 476 } 477 478 /** 479 * defaultStyles ì GAUGE ì¤íì¼ì extend ìì¼ì¤ë¤. 480 * @param {Object} style [GAUGE ì¤íì¼] 481 * @return {Object} [extend ëì´ì§ ì¤íì¼] 482 */ 483 function extendStyles (style) { 484 485 var defaultStyles = getDefaultStyles(); 486 487 var styles = $.extend(true, defaultStyles, style); 488 489 if (elementType === 'VML') { 490 styles.axis.family = "Dotum"; 491 styles.counter.text.family = "Dotum"; 492 } 493 494 return styles; 495 } 496 497 /** 498 * defaultOptions ì GAUGE ìµì ì extend ìì¼ì¤ë¤. 499 * @param {Object} option [GAUGE ìµì ] 500 * @return {Object} [extend ëì´ì§ ìµì ] 501 */ 502 function extendOptions(option) { 503 504 var defaultOptions = getDefaultOptions(); 505 var options = $.extend(true, defaultOptions, option); 506 507 if (elementType === 'VML') { 508 options.use.animate = false; 509 } 510 return options; 511 } 512 513 /** 514 * ë¸ë¼ì°ì ¸ íê²½ì ë°ë¼ SVG ì¸ì§ VML ì¸ì§ 구ë¶í´ì¤ë¤. 515 * @return {String} ['SVG' or 'VML'] 516 */ 517 function getElementType() { 518 519 var g = { 520 doc : document, 521 win : window 522 }; 523 var elementType = (g.win.SVGAngle || 524 g.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1") ? "SVG" : "VML"); 525 526 return elementType; 527 } 528 /** 529 * AJAX 를 ì´ì©íì¬ ë°ì´í°ë¥¼ ì½ì´ì¨ë¤. 530 * @param {Object} options [GAUGE ìµì ] 531 * @return {Array} [íì±ë ë°ì´í° ë°í] 532 */ 533 function loadData(options) { 534 535 var data = []; 536 537 if (options.data.data) { 538 data = options.data.data; 539 } else { 540 $.ajax({
541 url : options.data.url, 542 async : false, 543 dataType : options.data.type, 544 success : function(resp) { 545 546 if (options.data.type === "json") { 547 548 data = loadJson(resp, options); 549 550 } else if (options.data.type === "text") { 551 552 data = loadText(resp, options); 553 } 554 }, 555 error : function(e, a, b) { 556 console.log(e, a, b); 557 } 558 }); 559 } 560 561 return data; 562 } 563 564 /** 565 * ë°ì´í°ê° json íìì¼ ê²½ì° 566 * options.data.jsonDepth ì ë°ë¼ í´ë¹ ë°ì´í°ë¥¼ ë°ííë¤. 567 * @param {Array} data [AJAX ì ìí´ í¸ì¶ëì´ì§ ë°ì´í°] 568 * @param {Object} options [PIE ìµì ] 569 * @return {Array} [PIE ë°ì´í°] 570 */ 571 function loadJson(data, options) { 572 573 var bld_depth = options.data.jsonDepth.split('.'); 574 var outPut = bld_depth[0]; 575 var result = bld_depth[1]; 576 577 var arr = data; 578 579 for (var i = 0; i < bld_depth.length; i++) { 580 581 arr = arr[bld_depth[i]]; 582 } 583 584 return arr; 585 } 586 587 /** 588 * ë°ì´í°ê° text íìì¼ ê²½ì° 589 * '|' ,'\n' ì 기ì¤ì¼ë¡ ë°ì´í°ë¥¼ íì±íë¤. 590 * @param {String} data [AJAX ì ìí´ í¸ì¶ëì´ì§ ë°ì´í°] 591 * @param {Object} options [PIE ìµì ] 592 * @return {Array} [PIE ë°ì´í°] 593 */ 594 function loadText(data2, options) { 595 596 var arr = []; 597 var data = data2; 598 var lineArr = data.split('\n'); 599 var dataTitles = []; 600 var titleCheck = true; 601 602 for (var i = 0; i < lineArr.length; i++) { 603 604 if (lineArr.length <= 1) { 605 606 continue; 607 } 608 609 var objArr = lineArr[i].split('|'); 610 611 if (titleCheck) { 612 613 for (var j = objArr.length; j--;) { 614 615 dataTitles.unshift(trim(objArr[j])); 616 } 617 618 titleCheck = false; 619 620 } else { 621 622 var obj = {}; 623 624 if (objArr.length <= 1) { 625 626 continue; 627 } 628 629 $.each(objArr, function(j, item) { 630 631 obj[dataTitles[j]] = trim(item); 632 }); 633 634 arr.push(obj); 635 } 636 } 637 638 return arr; 639 } 640 641 function drawSvg(gauge) { 642 643 var svgWidth = Math.floor(gauge.wrapper.width()); 644 var svgHeight = Math.floor(gauge.wrapper.height()); 645 646 gauge.svg = Raphael(gauge.wrapper[0],'100%', svgHeight); 647 gauge.svg.canvas.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink'); 648 649 } 650 651 function drawLayout(gauge) { 652 653 var paper = gauge.svg, 654 styles = gauge.styles.layout, 655 width = paper.width, 656 height = paper.height; 657 658 if (elementType === "VML") { 659 paper.canvas.style.background = styles.area.color; 660 } 661 662 gauge.redrawItem.background = paper.rect(0,0, '100%','100%' ); 663 gauge.redrawItem.background.attr({"fill": styles.area.color, "stroke":styles.area.border}); 664 665 } 666 667 function drawCylinderPath(startX, endX, endY, gapX, height) { 668 669 endY = Math.round(endY) - 0.5; 670 height = Math.round(height) - 0.5; 671 672 return 'M' + startX + ',' + height + 673 'L' + startX + ',' + endY + 674 'A' + gapX + ',14,0,0,0,' + endX + ',' + endY + 675 'L' + endX + ',' + height + 676 'A' + gapX + ',14,0,0,0,' + startX + ',' + height; 677 678 } 679 /** 680 * yì¶ ìì¹ ì°¾ê¸° 681 * @param {gauge} gauge ê°ì²´ 682 */ 683 function getPixel(endPoint, data, allData, interval, measureNum) { 684 var res = Math.round(endPoint - (data / (allData / measureNum)) * interval); 685 return (isNaN(res)===true) ? endPoint : res; 686 } 687 688 function setInputData(gauge){ 689 690 var putData = gauge.options.data; 691 var setData = gauge.settings.data; 692 var use = putData.use; 693 var dataLen = putData.data.length; 694 for (var i = 0; i < dataLen; i ++ ){ 695 if( use === null || use === undefined){ 696 for( var x in putData.data[i]){ 697 setData[i] = parseInt(putData.data[i][x]); 698 } 699 }else{ 700 setData[i] = parseInt(putData.data[i][use]); 701 } 702 } 703 704 if ( gauge.options.data.reverse ) { 705 706 setData.reverse(); 707 } 708 709 } 710 /** 711 * gauge ì ë°ì´í° ì¤ ìµëê°,ìµìê°,íê· ê° ì 구íë¤. 712 * @param {gauge} gauge ê°ì²´ 713 */ 714 function setComputedData(gauge){ 715 716 var opt = gauge.options; 717 var datas = gauge.settings.data; 718 var dataLen = datas.length; 719 var maxVal =0, sum=0 , minVal=0; 720 var findMin = []; 721 722 for(var i = 0 ; i < dataLen ; i++){ 723 var inputData = datas[i]; 724 inputData = findFloat(inputData); 725 if(maxVal<inputData){ 726 maxVal = inputData; 727 } 728 if(minVal>inputData){ 729 minVal = inputData; 730 } 731 sum = sum + inputData; 732 findMin.push(minVal); 733 } 734 if(opt.pointer.max==="auto"){ 735 opt.pointer.max = findFloat(maxVal); 736 } 737 if(opt.pointer.avg==="auto"){ 738 opt.pointer.avg = findFloat(sum / dataLen); 739 } 740 if(opt.minmax.min==="auto"){ 741 opt.minmax.min = findFloat(Math.min.apply(null, findMin)); 742 } 743 744 } 745 746 /** 747 * ììì ì리 ëìì¸ì§ë¥¼ íì¸ 748 * @param {num} : ê²ì¬ ëì 749 */ 750 function findFloat(num) { 751 if(num === undefined){ 752 return false; 753 } 754 var stringNum = num.toString(); 755 var idx = stringNum.indexOf('.'); 756 if (idx !== -1) { 757 num = (idx >= (stringNum.length - 3)) ? num : dropNumber(num,-2); 758 } 759 return num; 760 } 761 762 /** 763 * ììì ëì¨ì리 ì´ìì ì«ì를 ë°ì¬ë¦¼ 764 * @param {num} : ê²ì¬ ëì 765 * @param {idx} : ììì ì릿ì (ëì¨ì리) = -2 766 */ 767 function dropNumber(num, idx) { 768 num = parseFloat(num); 769 var minus = ''; 770 if (num < 0) { 771 minus = '-'; 772 } 773 num = Math.abs(num); 774 num = (parseInt((num + 0.5 * Math.pow(10, idx)) * 100)) / 100; 775 var s = minus + num.toString(); 776 777 return parseFloat(s); 778 } 779 780 /** 781 * GAUGE COUNTER : 782 * @param {gauge} gauge ê°ì²´ 783 * @param {type} gauge type 784 */ 785 function drawCounter(gauge) { 786 var pos = gauge.sizes; 787 var counter = gauge.styles.counter; 788 var paper = gauge.svg; 789 var isAnimated = gauge.options.use.animate; 790 791 var dataSet = gauge.settings.data; 792 var currentVal = dataSet[dataSet.length-1]; 793 var prevData = ((dataSet.length-2) > 0 ) ? dataSet[dataSet.length-2] : 0; 794 795 var rectW = (typeof counter.width == "number")? counter.width: (paper.width * 0.1), 796 rectH = (typeof counter.height == "number")? rectW / 2 + ( counter.height - (rectW / 2) ) : rectW / 2, 797 rectX = (pos.endX + rectH * 0.6)+ counter.x , 798 rectY = (pos.endY - rectH)+ counter.y , 799 textSize = rectW * 0.4 * counter.text.size, 800 txtX = rectX + (rectW / 2) , 801 txtY = rectY + (rectH / 2) ; 802
803 var counterBox = paper.rect(rectX, rectY, rectW, rectH, counter.radius) 804 .attr({ "fill" : counter.color, "stroke" : counter.border }); 805 var inputData = paper.text(txtX, txtY, currentVal) 806 .attr({ 807 "font-family" : counter.text.family, 808 "font-size" : textSize, 809 "font-weight" : counter.text.weight, 810 "text-align" : 'center', 811 "fill" : counter.text.color 812 }); 813 gauge.redrawItem.push(counterBox,inputData); 814 815 if(isAnimated){ 816 animNum(currentVal,prevData,inputData,gauge); 817 }else{ 818 819 if (gauge.options.data.format !== null) { 820 currentVal = formatting(currentVal, gauge.options.data.format); 821 } 822 823 inputData.attr({text:currentVal}); 824 } 825 } 826 827 /** GAUEGE function: animNum 828 * ê° ë³ê²½ ì ëë©ì´ì [ COUNTER ë´ì ì«ì ìì§ì ] 829 * (inputData.attr("text")) ì ê°ì ë³ê²½ 830 * @[param] : (ë¹êµê°1, ë¹êµê°2, ëì, GAUGE); 831 */ 832 function animNum(currentVal,prevData,inputData,gauge){ 833 inputData.attr({'text' : prevData}); 834 835 var difference = Math.floor( Math.abs(currentVal-prevData)); 836 var counter = 0, inputText ="", inputNum=0; 837 838 if(currentVal !==prevData ){ 839 var gapNum = setInterval(function() { 840 841 if(currentVal < prevData) { 842 inputNum = parseInt((inputData.attr("text")))-1; 843 } else { 844 inputNum = parseInt((inputData.attr("text")))+1; 845 } 846 847 inputText = (gauge.options.data.format !== null) ? formatting(inputNum,gauge.options.data.format) : inputNum; 848 inputData.attr({ text: inputText } ); 849 850 counter = counter + 1; 851 852 if(inputNum===currentVal || counter === difference){ 853 clearTimeout(gapNum); 854 } 855 }, 1000/difference); 856 } 857 } 858 859 function adjustMinMax(gauge) { 860 861 var range = gauge.options.minmax; 862 var pointer = gauge.options.pointer; 863 var target =parseInt(pointer.target); 864 var axis= gauge.styles.axis; 865 var linesCount = countLine(axis); 866 867 /* ìµìê° */ 868 var arr = [range.min, pointer.max, pointer.avg]; 869 if(gauge.options.use.target){ 870 arr.push(target ); 871 } 872 range.min = Math.min.apply( null ,arr); 873 874 if (range.min < 0) { 875 range.min = (range.min % 10 === 0) ? range.min : range.min- (10 + (range.min % 10)); 876 } else { 877 range.min = (range.min % 10 === 0) ? range.min : range.min- (range.min % 10); 878 } 879 880 if (range.max === "auto" || typeof range.max !== "number") { 881 if (pointer.max === 0 && target === 0){ 882 range.max = 10; 883 } 884 else if (pointer.max < 100 && target < 100) { 885 range.max = 100; 886 } else { 887 range.max = (target > pointer.max) ? target : (pointer.max); 888 if (range.max % linesCount !== 0) { 889 range.max = range.max + (linesCount - (range.max % linesCount))+ range.min; 890 } 891 } 892 } else if (range.max < pointer.max) { 893 range.max = pointer.max; 894 } 895 896 var dataSet = gauge.settings.data; 897 var inputData = dataSet[dataSet.length-1]; 898 899 if (inputData > range.max){ 900 range.max = (10 - (inputData % 10 )) + inputData; 901 } 902 903 } 904 905 /** 906 * CHART ì ëê¸ íì ( ANGULAR || 'COL' || 'ROW' ) 907 */ 908 function drawAxis(gauge, type) { 909 910 var pos = gauge.sizes; 911 var axis = gauge.styles.axis; 912 var paper = gauge.svg; 913 914 var linesCount = countLine(axis); 915 916 var blockLine = paper.set(); 917 var intervalLine = paper.set(); 918 919 if (type === 'thermometer') { 920 pos.objHeight = (pos.objWidth * 5.28); 921 } 922 923 var interval = (pos.objHeight) / linesCount; 924 925 for (var i = 0, len = linesCount+1; i < len; i++) { 926 var lineY = Math.round(pos.startY + i * interval) + 0.5,
927 lineX = Math.round(pos.startX) - 0.5; 928 if (i % axis.interval === 0) { 929 blockLine.push(paper.path("M" + lineX + "," + lineY + "L" + (lineX - axis.blockLine.length) + "," + lineY)); 930 } else { 931 intervalLine.push(paper.path("M" + lineX + "," + lineY + "L" + (lineX - axis.intervalLine.length) + "," + lineY)); 932 } 933 } 934 blockLine.attr({ "stroke" : axis.blockLine.color }); 935 intervalLine.attr({ "stroke" : axis.intervalLine.color }); 936 937 gauge.redrawItem.push(blockLine,intervalLine); 938 939 } 940 941 function countLine(x){ 942 return ( x.block * x.interval === 0) ? x.block : x.block * x.interval; 943 } 944 945 /** 946 * CHART ì ì¹ì íì ( ANGULAR || 'COL' || 'ROW' ) 947 */ 948 function drawTextAxis(gauge, type) { 949 950 var pos = gauge.sizes; 951 var paper = gauge.svg; 952 var axis = gauge.styles.axis; 953 var text = axis.text; 954 var opt = gauge.options; 955 956 var maxAxis = opt.minmax.max; 957 var minAxis = opt.minmax.min; 958 var range = maxAxis - minAxis; 959 960 var textLines = paper.set(); 961 962 if (type === 'thermometer') { 963 pos.objHeight = (pos.objWidth * 5.28); 964 pos.endY = pos.startY + pos.objHeight; 965 } 966 967 for (var i = 0; i < text.num ; i++) { 968 var textValue =Math.ceil((range/(text.num-1))*i); 969 if ( textValue % 5 !== 0 && maxAxis >10) { 970 textValue = textValue + (5 - (textValue % 5)); 971 } 972 var lineY = Math.round(pos.endY - (pos.objHeight / range * textValue)) - 0.5; 973 974 textValue = textValue + minAxis; 975 976 if (type === 'thermometer' && opt.data.format !== null) { 977 textValue = formatting(textValue, "temperature"); 978 } 979 980 textLines.push(paper.text( (pos.startX - (axis.blockLine.length * 1.35)), lineY, textValue) ); 981 982 } 983 textLines.attr({ 984 'font-size' : text.size, 985 'fill' : text.color, 986 "text-anchor" : text.align, 987 "font-family" : text.family, 988 "font-weight" : text.weight 989 }); 990 gauge.redrawItem.push(textLines); 991 } 992 993 /** 994 * GAUEGE CHART ì TARGET íì 995 * @param(type) : GAUGE CHART TYPE 996 * @param(targetVal) : TARGET VALUE 997 */ 998 function drawTarget(gauge, type) { 999 var paper = gauge.svg; 1000 var pos = gauge.sizes; 1001 var pointer = gauge.styles.pointer.target; 1002 1003 var minAxis = gauge.options.minmax.min; 1004 var maxAxis = gauge.options.minmax.max - minAxis; 1005 var targetVal = gauge.options.pointer.target - minAxis; 1006 1007 var linesCount = countLine(gauge.styles.axis);
1008 1009 var interval = pos.objHeight / linesCount, // íì¹¸ë¹ ì ë²ì 1010 targetPath = Math.round(getPixel(pos.endY, targetVal, maxAxis, linesCount, interval)) - 0.5, 1011 targetCmd = make2Line((pos.endX + 1), (targetPath), (pos.endX + 14), (targetPath - 4), (pos.endX + 14), (targetPath + 4)); 1012 1013 var target = paper.path(targetCmd).attr({ "fill" : pointer.color, "stroke" : 'none' }); 1014 1015 gauge.tipItems.targetPointer = target; 1016 gauge.redrawItem.push(target); 1017 } 1018 1019 function drawPointer(gauge, type, pointerType) { 1020 var paper = gauge.svg; 1021 var pos = gauge.sizes; 1022 var styles = gauge.styles; 1023 1024 var maxAxis = gauge.options.minmax.max; 1025 var minAxis = gauge.options.minmax.min; 1026 var range = maxAxis-minAxis; 1027 1028 var pointer = gauge.options.pointer; 1029 var pointerVal = null; 1030 1031 if(pointerType === 'max'){ 1032 pointerVal = pointer.max - minAxis, 1033 styles = styles.pointer.max; 1034 } 1035 else if (pointerType === 'avg') { 1036 pointerVal = pointer.avg - minAxis, 1037 styles = styles.pointer.avg; 1038 } 1039 var linesCount = countLine(gauge.styles.axis);
1040 1041 var interval = pos.objHeight / linesCount, 1042 pointerPath = Math.round( getPixel(pos.endY, pointerVal, range, linesCount, interval) ) - 0.5, 1043 labels = (paper.text((pos.endX + 15), pointerPath, pointerType)), 1044 pointerCmd = ""; 1045 1046 var bar_length= pos.endX + styles.bar.length; 1047 if (type === 'cylinder') { 1048 pointerCmd = makeLine( pos.endX , pointerPath , bar_length , pointerPath ); 1049 } else { 1050 pointerCmd = makeLine( pos.startX , pointerPath , bar_length , pointerPath ); 1051 } 1052 1053 if (pointerType === 'max' && pointer.avg == pointerVal && gauge.options.use.avg) { 1054 labels.translate((styles.font.size+10), 0); 1055 } 1056 labels.attr({ 1057 'font-size' : styles.font.size, 1058 'fill' : styles.font.color, 1059 "text-anchor" : styles.font.align, 1060 "font-family" : styles.font.family 1061 }); 1062 1063 var pointer = paper.path(pointerCmd) 1064 .attr({ "stroke" : styles.bar.color }); 1065 1066 if (type == 'thermometer' ) { 1067 pointer.attr({ "stroke-dasharray" : "- " }); 1068 } 1069 if( pointerType === 'max'){ 1070 gauge.tipItems.max = paper.set(); 1071 gauge.tipItems.max.push(labels, pointer); 1072 } 1073 else if(pointerType ==='avg'){ 1074 gauge.tipItems.avg = paper.set(); 1075 gauge.tipItems.avg.push(labels, pointer); 1076 } 1077 gauge.redrawItem.push(pointer,labels); 1078 1079 } 1080 1081 function makeLine(sX, sY, eX, eY) { 1082 return "M" + sX + "," + sY + "L" + eX + "," + eY; 1083 } 1084 1085 function make2Line(sX, sY, cX, cY, eX, eY) { 1086 return "M" + sX + "," + sY + "L" + cX + "," + cY + "L" + eX + "," + eY; 1087 } 1088 1089 /** 1090 * CYLINDER TYPE_GAUGE CHART 1091 */ 1092 function drawCylinder(gauge) { 1093 1094 var pos = gauge.sizes; 1095 var opt = gauge.options; 1096 var paper = gauge.svg; 1097 var cylinder = gauge.styles.cylinder; 1098 1099 var isAnimated = opt.use.animate; 1100 var linesCount = countLine(gauge.styles.axis);
1101 var interval = pos.objHeight / linesCount; 1102 1103 var minAxis = opt.minmax.min; 1104 var maxAxis = opt.minmax.max- minAxis; 1105 1106 var dataSet = gauge.settings.data; 1107 var inputData = dataSet[dataSet.length-1]- minAxis; 1108 var prevData = ((dataSet.length-2) > 0 ) ? dataSet[dataSet.length-2] - minAxis :0; 1109 1110 var prevHeight = getPixel(pos.endY, prevData, maxAxis, linesCount, interval), 1111 curHeight = getPixel(pos.endY, inputData, maxAxis, linesCount, interval); 1112 1113 var bottom = paper.ellipse(pos.centerX, pos.endY - 0.5, pos.gapX - 1, 14).attr({"stroke" : cylinder.border}), 1114 inside = null, prev = null, 1115 current_line = null; 1116 1117 if (isAnimated) { 1118 prev = paper.ellipse(pos.centerX, prevHeight, pos.gapX - 1, 14).attr({ "stroke" : cylinder.prevDataLine.color }); // 1119 inside = paper.path(drawCylinderPath(pos.startX, pos.endX, pos.endY, pos.gapX, prevHeight)); 1120 current_line = paper.ellipse(pos.centerX, prevHeight, pos.gapX - 1, 14); 1121 1122 inside.animate({ 1123 "path" : drawCylinderPath(pos.startX, pos.endX, pos.endY, pos.gapX, curHeight) 1124 }, 1000); 1125 current_line.animate({ 1126 "transform" : "t0," + (curHeight - prevHeight) 1127 }, 1000); 1128 1129 gauge.tipItems.prev = prev; 1130 1131 } else { 1132 inside = paper.path(drawCylinderPath(pos.startX, pos.endX, pos.endY, pos.gapX, curHeight)); 1133 current_line = paper.ellipse(pos.centerX, curHeight, pos.gapX - 1, 14); 1134 } 1135 var top = paper.ellipse(pos.centerX, pos.startY, pos.gapX, 15) 1136 .attr({"stroke" : cylinder.border}); 1137 var border = paper.path(drawCylinderPath(pos.startX, pos.endX, pos.endY, pos.gapX, pos.startY)); 1138 current_line.attr({ 1139 "stroke" : cylinder.current.color 1140 }); 1141 border.attr({ 1142 "stroke" : cylinder.border 1143 }); 1144 inside.attr({ 1145 "fill" : cylinder.fill.color, 1146 "opacity" : cylinder.fill.opacity, 1147 "stroke" : cylinder.fill.border 1148 }); 1149 1150 gauge.redrawItem.push( top, border, bottom, current_line, inside, prev ); 1151 gauge.tipItems.base = inside; 1152 } 1153 1154 /** 1155 * THERMOMETER TYPE_GAUGE CHART 1156 */ 1157 function drawThermometer(gauge) { 1158 1159 var pos = gauge.sizes ; 1160 var opt = gauge.options; 1161 var styles = gauge.styles; 1162 var paper = gauge.svg; 1163 1164 var thermometer = styles.thermometer; 1165 var isAnimated = opt.use.animate; 1166 1167 var minAxis = opt.minmax.min; 1168 var maxAxis = opt.minmax.max- minAxis ; 1169 1170 var dataSet = gauge.settings.data; 1171 var inputData = dataSet[dataSet.length-1]- minAxis; 1172 var prevData = dataSet[dataSet.length-2]- minAxis; 1173 1174 var linesCount = countLine(styles.axis);
1175 var interval = pos.objHeight / linesCount; // íì¹¸ë¹ ì ë²ì 1176 1177 var prevHeight = getPixel(pos.endY, prevData, maxAxis, interval, linesCount); 1178 pos.objHeight = (pos.objWidth * 5.28); 1179 pos.endY = pos.startY + pos.objHeight; 1180 1181 var curHeight = getPixel(pos.endY, inputData, maxAxis, interval, linesCount); 1182 var bottom = paper.circle(pos.centerX, (pos.endY + (pos.objWidth * 0.85) - (pos.objHeight * 0.03)), pos.objWidth * 0.85); 1183 var back = paper.rect(pos.startX, pos.startY, pos.objWidth, pos.objHeight); 1184 var bar = null; 1185 1186 var rectX = pos.centerX - pos.gapX + 0.5, 1187 rectY = prevHeight, 1188 rectW = pos.objWidth - 1, 1189 rectH = Math.round(pos.objHeight - (prevHeight - pos.startY)); 1190 if (isAnimated && prevData !== inputData) { 1191 var prevBackground = paper.rect(rectX, rectY, rectW, rectH), 1192 prevBar = paper.rect(rectX, rectY , rectW, thermometer.prevBar.size); 1193 1194 bar = paper.rect(rectX, rectY,rectW, rectH + 2) 1195 .animate({ 1196 y : curHeight, 1197 height : rectH + 2 - (curHeight-rectY) 1198 }, 1000); 1199 1200 prevBackground.attr({ 1201 'fill' : thermometer.prevBackground.color, 1202 'stroke' : thermometer.prevBackground.border 1203 }); 1204 prevBar.attr({ 1205 'fill' : thermometer.prevBar.color, 1206 'stroke' : 'none', 1207 'opacity' : 0.5 1208 }); 1209 1210 gauge.tipItems.prev = prevBar; 1211 gauge.redrawItem.push(prevBackground,prevBar); 1212 1213 } else { 1214 bar = paper.rect(rectX, curHeight, rectW, rectH + 2 - (curHeight-rectY)); 1215 } 1216 1217 bottom.attr({ 1218 'fill' : thermometer.bottom.color, 1219 'stroke' : thermometer.bottom.border 1220 }); 1221 back.attr({ 1222 'fill' : thermometer.back.color, 1223 'stroke' : thermometer.back.border 1224 }); 1225 bar.attr({ 1226 'fill' : thermometer.bar.color, 1227 'stroke' : thermometer.bar.border 1228 }); 1229 1230 gauge.tipItems.base =paper.set(); 1231 gauge.tipItems.base.push(bar, bottom); 1232 gauge.redrawItem.push(curHeight,bottom,back, bar); 1233 1234 } 1235 1236 function getMousePosition(e) { 1237 var m = {}; 1238 var target, rect, parent, parentRect; 1239 e = e || window.event; 1240 if (elementType === 'VML') { 1241 target = e.target || e.srcElement, rect = target 1242 .getBoundingClientRect(), parent = target.parentNode, 1243 parentRect = parent.getBoundingClientRect(); 1244 m.x = e.offsetX + rect.left - parentRect.left; 1245 m.y = e.offsetY + rect.top - parentRect.top; 1246 } else { 1247 var appName = navigator.appName.toLowerCase(); 1248 var userAgent = navigator.userAgent.toLowerCase(); 1249 if (userAgent.indexOf('firefox') > -1) { // FireFox 1250 m.x = Math.round(e.layerX); 1251 m.y = Math.round(e.layerY); 1252 } else if (appName === 'opera') { // Opera 1253 target = e.target || e.srcElement, rect = target 1254 .getBoundingClientRect(), 1255 parent = target.parentNode, parentRect = parent 1256 .getBoundingClientRect(); 1257 m.x = e.offsetX + rect.left - parentRect.left; 1258 m.y = e.offsetY + rect.top - parentRect.top; 1259 } else { // etc 1260 m.x = Math.round(e.offsetX); 1261 m.y = Math.round(e.offsetY); 1262 } 1263 } 1264 return m; 1265 } 1266 1267 /** 1268 * mouse move event 1269 */ 1270 function mouseMoveFunc(e, _this, gauge, x) { 1271 var styles = gauge.styles; 1272 var options = gauge.options; 1273 var toolTip = gauge.tipItems.toolTip; 1274 var pointerVal = gauge.options.pointer; 1275 var mousePosition = getMousePosition(e); 1276 1277 var data = gauge.settings.data; 1278 1279 if (options.toolTip.func !== null) { 1280 1281 eval(options.toolTip.func)(gauge, data, toolTip); 1282 1283 } else { 1284 var tip = ""; 1285 switch (x) { 1286 case "all" : 1287 tip += '<span>' + "- data : "+dropNumber(data[data.length-1],-2) +'</span><br />'; 1288 tip += '<span>' + "- Max : "+pointerVal.max +'</span><br />'; 1289 tip += '<span>' + "- Average : "+pointerVal.avg +'</span><br />'; 1290 break; 1291 case "draw" : 1292 tip += '<span>' + " current data : "+dropNumber(data[data.length-1],-2) +'</span><br />'; 1293 break; 1294 case "targetPointer" : 1295 tip += '<span>' + "target : "+pointerVal.target +'</span><br />'; 1296 break; 1297 case "prev" : 1298 tip += '<span>' + "previous data : "+data[data.length-2] +'</span><br />'; 1299 break; 1300 case "max" : 1301 tip += '<span>' + " Max : "+pointerVal.max+'</span><br />'; 1302 break; 1303 case "avg" : 1304 tip += '<span>' + " Average : "+pointerVal.avg +'</span><br />'; 1305 break; 1306 default : 1307 tip += x; 1308 } 1309 var tipElement = '<div class="tip_data">' + tip + '</div>'; 1310 toolTip.html(tipElement); 1311 } 1312 1313 var toolTipWidth = (toolTip.width() / 2), 1314 toolTipHeight = toolTip.height(); 1315 1316 toolTip.css({ 1317 top : mousePosition.y - toolTipHeight + options.toolTip.position.y-15, 1318 left : mousePosition.x - toolTipWidth + options.toolTip.position.x 1319 }); 1320 1321 gauge.redrawItem.push(toolTip); 1322 } 1323 1324 /** 1325 * gauge ì ì´ë²¤í¸ ë°ìì 1326 * @param {gauge} gauge ê°ì²´ 1327 */ 1328 function itemsEvents(gauge) { 1329 1330 var styles = gauge.styles; 1331 var options = gauge.options; 1332 1333 if (!options.use.toolTip) { 1334 return; 1335 } 1336 1337 gauge.tipItems.base.mousemove(function (e) { 1338 1339 gauge.tipItems.toolTip.show(); 1340 mouseMoveFunc(e, this, gauge, "draw"); 1341 1342 }).mouseout(function (e) { 1343 1344 gauge.tipItems.toolTip.hide(); 1345 1346 }); 1347 1348 1349 if (options.use.max && options.toolTip.func === null) { 1350 gauge.tipItems.max.mousemove(function (e) { 1351 1352 gauge.tipItems.toolTip.show(); 1353 var func = '<span>' + " Max : " + gauge.options.pointer.max + '</span><br />'; 1354 gauge.mouseMoveFunc(e, this, gauge, func); 1355 1356 1357 }).mouseout(function (e) { 1358 1359 gauge.tipItems.toolTip.hide(); 1360 1361 }); 1362 } 1363 1364 if (options.use.avg && options.toolTip.func === null) { 1365 gauge.tipItems.avg.mousemove(function (e) { 1366 1367 gauge.tipItems.toolTip.show(); 1368 var func = '<span>' + " Average : " + gauge.options.pointer.avg + '</span><br />'; 1369 gauge.mouseMoveFunc(e, this, gauge, func); 1370 1371 }).mouseout(function (e) { 1372 1373 gauge.tipItems.toolTip.hide(); 1374 1375 }); 1376 } 1377 1378 if (options.use.target && options.toolTip.func === null) { 1379 gauge.tipItems.targetPointer.mousemove( function (e) { 1380 1381 gauge.tipItems.toolTip.show(); 1382 mouseMoveFunc(e, this, gauge,"targetPointer"); 1383 1384 }).mouseout( function(e){
1385 1386 gauge.tipItems.toolTip.hide(); 1387 1388 }); 1389 } 1390 if (options.use.animate && options.toolTip.func === null) { 1391 gauge.tipItems.prev.mousemove(function(e) { 1392 1393 gauge.tipItems.toolTip.show(); 1394 mouseMoveFunc(e, this, gauge, "prev"); 1395 1396 }).mouseout(function(e) { 1397 1398 gauge.tipItems.toolTip.hide(); 1399 1400 }); 1401 } 1402 1403 } 1404 1405 /** 1406 * í´í ì¬ì© ì element 를 ìì± íë¤. 1407 * @param {pie} pie ê°ì²´ 1408 */ 1409 function appendToolTip(gauge) { 1410 var options = gauge.options; 1411 gauge.tipItems.toolTip = $('<div>'); 1412 1413 if (options.toolTip.className === null) { 1414 1415 gauge.tipItems.toolTip.css({ 1416 "background" : "#171717", 1417 "color" : "#fff", 1418 "padding" : "5px 10px", 1419 "font-size" : " 12px", 1420 "font-family" : "NanumGothic" 1421 }); 1422 1423 } else { 1424 1425 gauge.tipItems.toolTip.attr('class', options.toolTip.className); 1426 } 1427 1428 gauge.tipItems.toolTip.css({ 1429 'position' : "absolute", 1430 'white-space' : 'nowrap', 1431 'z-index' : 100000 1432 }); 1433 1434 gauge.tipItems.toolTip.hide(); 1435 1436 gauge.wrapper.append(gauge.tipItems.toolTip); 1437 1438 } 1439 1440 function formatting(num, formatType) { 1441 var res = null; 1442 switch (formatType) { 1443 case "prime": 1444 res = dropNumber(num); 1445 break; 1446 case "percent": 1447 res = num + "%"; 1448 break; 1449 case "temperature": 1450 res = num + "º"; 1451 break; 1452 default: 1453 res = num; 1454 1455 } 1456 return res; 1457 } 1458 1459 function noData(gauge) { 1460 1461 var x = gauge.wrapper.width() / 2; 1462 var y = gauge.wrapper.height() / 2; 1463 var text = gauge.svg.text(x, y, 'ë°ì´í°ê° ë¡ëëì§ ìììµëë¤.'); 1464 1465 text.attr({ 1466 'font-family' : 'dotum', 1467 'font-size' : 12, 1468 fill : '#000' 1469 }); 1470 } 1471 1472 function drawItem(gauge, type) { 1473 var use = gauge.options.use; 1474 1475 if(use.axis){ 1476 drawAxis(gauge,type); 1477 } 1478 if(use.axisText){ 1479 drawTextAxis(gauge,type); 1480 } 1481 1482 switch (type) { 1483 case 'cylinder': 1484 drawCylinder(gauge); 1485 break; 1486 case 'thermometer': 1487 drawThermometer(gauge); 1488 break; 1489 } 1490 1491 if(use.target){ 1492 drawTarget(gauge, type); 1493 } 1494 if(use.max){ 1495 drawPointer(gauge, type, "max"); 1496 } 1497 if(use.avg){ 1498 drawPointer(gauge,type,"avg"); 1499 } 1500 if(use.counter){ 1501 drawCounter(gauge); 1502 } 1503 1504 if (use.toolTip) { 1505 appendToolTip(gauge); 1506 } 1507 } 1508 function reDrawGauge(gauge, type) { 1509 1510 gauge.redrawItem.remove(); 1511 $(".tip_data").parent().remove(); 1512 gauge.redrawItem = gauge.svg.set(); 1513 setWrapper(gauge); 1514 gauge.settings = cloneSettingModel(gauge); 1515 1516 1517 drawLayout(gauge); 1518 if (gauge.options.data.data === 'error' || gauge.options.data.data.length <= 0) { 1519 noData(gauge); 1520 1521 } else { 1522 setInputData(gauge); 1523 setComputedData(gauge); 1524 adjustMinMax(gauge); 1525 1526 gauge.sizes = cloneSettingSize(gauge, type); 1527 drawItem(gauge, type); 1528 } 1529 1530 itemsEvents(gauge); 1531 } 1532 1533 /**
1534 * GAUGE ì ë ëë§ í기 ìí ì ë°ì ì¸ ë¶ë¶ì ì¸í íë¤. 1535 * @param {Gauge} gauge ê°ì²´ 1536 * @param {Node} wrapper gauge ê° append ëë DIV 1537 * @param {Object} styles pie ì¤íì¼ 1538 * @param {Object} options pie ìµì 1539 * @param {String} GAUGE CHARTì TYPE 1540 */ 1541 function setup(gauge, wrapper, styles, options, type) { 1542 gauge.wrapper = wrapper; 1543 1544 gauge.wrapper.css({ 1545 'position' : "relative" 1546 }); 1547 1548 gauge.styles = extendStyles(styles); 1549 1550 gauge.options = extendOptions(options); 1551 1552 gauge.options.data.data = loadData(gauge.options); 1553 1554 drawSvg(gauge); 1555 1556 setWrapper(gauge); 1557 1558 gauge.tipItems ={}; 1559 1560 gauge.redrawItem = gauge.svg.set(); 1561 1562 gauge.settings = cloneSettingModel(gauge); 1563 1564 // ì¬ê¸°ìë¶í° ì¤í¬ë¦½í¸ ìì± 1565 1566 drawLayout(gauge); 1567 if (gauge.options.data.data === 'error' || gauge.options.data.data.length <= 0) { 1568 noData(gauge); 1569 1570 } else { 1571 1572 setInputData(gauge); 1573 setComputedData(gauge); 1574 adjustMinMax(gauge); 1575 1576 gauge.sizes = cloneSettingSize(gauge, type); 1577 1578 drawItem(gauge, type); 1579 1580 } 1581 itemsEvents(gauge); 1582 } 1583 1584 /** 1585 * GAUEGE ì ì´ë²¤í¸ë¥¼ ë¶ì¬ì¤ë¤. 1586 * @param {GAUEGE} gauge ê°ì²´ 1587 */ 1588 function bindEvents(wrapper, gauge) { 1589 /** 1590 * gauge 를 redraw í ë ë°ìíë ì´ë²¤í¸ 1591 */ 1592 gauge.event.on('reDraw', function(e, gauge) { 1593 }); 1594 1595 /** 1596 * gauge ì resize ì´ë²¤í¸ 1597 */ 1598 if (wrapper.data('resizeEventName')) { 1599 1600 $(window).off(wrapper.data('resizeEventName')); 1601 } 1602 var wrapperUniqueId = getUniqueID(); 1603 1604 wrapper.data('resizeEventName', 'resize.' + wrapperUniqueId); 1605 1606 $(window).on( 1607 wrapper.data('resizeEventName'), 1608 function(e) { 1609 1610 var afterWrapperWidth = gauge.settings.wrapper.width; 1611 var beforeWrapperWidth = gauge.wrapper.width(); 1612 var afterWrapperHeight = gauge.settings.wrapper.height; 1613 var beforeWrapperHeight = gauge.wrapper.height(); 1614 1615 if (afterWrapperWidth !== beforeWrapperWidth|| afterWrapperHeight !== beforeWrapperHeight) { 1616 if (gauge.options.use.responsive) { 1617 gauge.resize(); 1618 } 1619 gauge.svg.width = gauge.wrapper.width(); 1620 gauge.svg.height = gauge.wrapper.height(); 1621 } 1622 }); 1623 } 1624 1625 function setWrapper(gauge) { 1626 1627 gauge.svg.width = gauge.wrapper.width(); 1628 gauge.svg.height = gauge.wrapper.height(); 1629 } 1630 1631 function getUniqueID() { 1632 1633 return Math.random().toString(36).substr(2, 9); 1634 } 1635 1636 /** 1637 * GAUEGE ì API 를 ì¶ê°íë¤. 1638 * @param {GAUEGE} gauge ê°ì²´ 1639 */ 1640 function addApis(gauge, type) { 1641 gauge.on = function(eventName, callback) { 1642 1643 gauge.event.on(eventName, callback); 1644 }; 1645 1646 /** 1647 * GAUEGE CHART 를 ë¤ì 그릴 ê²½ì° ì¬ì© 1648 * ì¤ì ê°ì ë°ë¥¸ ì í 1649 * BEFORE REDRAW SETTING USER OPTIONS 1650 */ 1651 gauge.reDraw = function(styles, options) { 1652 1653 gauge.styles = extendStyles(styles); 1654 gauge.options = extendOptions(options); 1655 gauge.options.data.data = loadData(gauge.options); 1656 1657 reDrawGauge(gauge,type); 1658 1659 gauge.event.trigger('reDraw', [ gauge ]); 1660 }; 1661 1662 /** 1663 * resize 1664 */ 1665 gauge.resize = function() { 1666 reDrawGauge(gauge, type); 1667 }; 1668 1669 gauge.mouseMoveFunc = function(e,x,gauge,type){ 1670 mouseMoveFunc(e, x, gauge, type); 1671 }; 1672 1673 } 1674 1675 /** 1676 * GAUGE ì´ê¸°í í¨ì 1677 * @param {Node} wrapper gauge ê° append ëë DIV 1678 * @param {Object} styles gauge ì¤íì¼ 1679 * @param {Object} options gauge ìµì 1680 * @return {gauge} gauge ê°ì²´ 1681 */ 1682 self.init = function(wrapper, styles, options, type) { 1683 var gauge = {}; 1684 1685 gauge.event = $({}); 1686 1687 bindEvents(wrapper, gauge); 1688 1689 gauge.type = type; 1690 1691 setup(gauge, wrapper, styles, options, type); 1692 1693 addApis(gauge, type); 1694 1695 // í¸ë¼ì´ì¼ ìí°ë§í¬ ìì± 1696 if (TRIAL_UI) { 1697 1698 appendTrialUi(wrapper); 1699 } 1700 /** 1701 license object chart ì ì¶ê°(ver.150915 íë¤ì§) 1702 */ 1703 gauge.license = licenseObject; 1704 /** 1705 * wrapper(jQuery selector)ì ì ì¥(ver. 160318 íë¤ì§) 1706 */ 1707 wrapper[0].instance = gauge; 1708 1709 return gauge; 1710 }; 1711 1712 if (!window.webponent) { 1713 window.webponent = {}; 1714 } 1715 if (!window.webponent.visual) { 1716 window.webponent.visual = {}; 1717 } 1718 window.webponent.visual.shaped = self; 1719 1720 })(); 1721 1722})(); 1723
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.