var _kim_summary_top = { defaultOption : { "xlsx": true, "indices": [ {"name": "Key Data(분기연결)", "field": "right", "cls": "keyData2"}, {"name": "투자지표", "field": "middle", "cls": "investmentIndex2"} ] }, example: [ { name: "예제1", description: "주식 요약 정보 - 상단", sample: { "type": "kim_summary_top", "processing": false, "id": "test.stock", "visible": true, "options": {"xlsx": true}, get data() { return _kim_summary_top.sample_data; } } } ], sample_data: { "stock": {"stockName": "SK하이닉스", "Industry_index_name": "Kospi_L", "stockCode": "A000660", "sectorName": "반도체", "sectorCode": "WI62010", "QTR_MASTER": "C"}, "forecast": {"month": 1, "state": "down", "accuracy": 0.783702979327273}, "left": [ {"name": "예상수익률(1M/3M/6M)", "value": "-0.01%/0.26%/-0.01%"}, {"name": "전일종가(2019-03-21)", "value": "75,900원"}, {"name": "최근수익률(1M/3M/6M)", "value": "-1.04%/25.87%/-3.68%"}, {"name": "상대수익률(1M/3M/6M)", "value": "-0.68%/13.82%/6.12%"} ], "middle": [ {"name": "시장", "value": "KOSPI"}, {"name": "시가총액", "value": "55조 2,554억원"}, {"name": "시가총액순위", "value": "2위"}, {"name": "섹터", "value": "반도체"}, {"name": "발행주식수", "value": "7억 2,800만주"}, {"name": "외국인보유비율", "value": "50.45%"}, {"name": "1년(240일)\n최고/최저주가", "value": "95,300원\n/57,700원"} ], "right": [ {"name": "PER(배)", "value": "12.97"}, {"name": "PBR(배)", "value": "0.88"}, {"name": "ROE(%)", "value": "0.075"}, {"name": "EV/EBITDA", "value": "6.62"}, {"name": "현금배당수익률(%)", "value": "2.48"}, {"name": "잉여현금흐름수익률(%)", "value": "0.061"}, {"name": "1년(240일)베타", "value": "0.63"} ] }, /* * 에러를 검사하고, 일부 잘못된 형식을 교정 * 에러가 발생하면 console.error로 에러메시지와 unit.id 출력 * 어떻게든 복구가 가능하면 복구하고 true return, 복구 불가능하면 false return */ validateData : function(unit) { var options = unit.options; if (options == null || Object.keys(options).length == 0) { // 옵션이 없는 경우 default 옵션을 넣도록 함 //options = unit.options = cloner.deep.merge({}, _kim_summary_top.defaultOption); options = unit.options = jQuery.extend(true, {}, _kim_summary_top.defaultOption); } else options = unit.options = jQuery.extend(true, {}, _kim_summary_top.defaultOption, unit.options); return true; }, render_top_summary : function($dom, unit) { var data = unit.data; var options = unit.options; var $top_summary = $("
").addClass("topSummary2"); $dom.append($top_summary); var $wrap = $("
").addClass("summaryInfoWarp2"); $top_summary.append($wrap); $wrap.append($("

").addClass("stock").text(data.stock.stockName)); $wrap.append($("").addClass("codeNumber").text(data.stock.stockCode.slice(1))); var $info = $("
").addClass("summaryInfo2"); $wrap.append($info); if (data.forecast.state == "up") $info.append($("

").addClass("forecastProbability up").text("상승확률(" + data.forecast.month + "개월) " + Math.round(data.forecast.accuracy * 100) + "%")); else if (data.forecast.state == "down") $info.append($("

").addClass("forecastProbability down").text("하락확률(" + data.forecast.month + "개월) " + Math.round(data.forecast.accuracy * 100) + "%")); else $info.append($("

").addClass("forecastProbability").text("상승/하락확률(" + data.forecast.month + "개월) N/A%")); var $dl = $("
"); $info.append($dl); jQuery.each(data.left, function (i, d) { $dl.append($("
").text(d.name.replace("\n", "
"))); $dl.append($("
").text(d.value.replace("\n", "
"))); }); if (data.stock.Industry_index_name.slice(0, 5) == "Kospi") $dl.append("

(상대수익률은 코스피대비수익률을 의미함)

"); else $dl.append("

(상대수익률은 코스닥대비수익률을 의미함)

"); jQuery.each(options.indices, function (idx, item) { var $div = $("
").addClass(item.cls); $top_summary.append($div); $div.append($("

").text(item.name)); var $table = $("
"); $div.append($table); var $tbody = $(""); $table.append($tbody); jQuery.each(data[item.field], function (i, d) { var $tr = $(""); $tbody.append($tr); $tr.append("" + d.name.replace("\n", "
") + ""); $tr.append("" + d.value.replace("\n", "
") + ""); }); }); return $top_summary; }, render : function($dom, unit) { if (_kim_summary_top.validateData(unit) == false) { $dom.append("kim_summary_top 데이터가 올바르지 않습니다.
" + JSON.stringify(unit, null, 2) + "
"); return; } return _kim_summary_top.render_top_summary($dom, unit); } }; UnitRendererFactory.add("kim_summary_top", _kim_summary_top.render); // 내부용 //UnitRendererFactory.addExample("kim_summary_top", _kim_summary_top.example);