/*
 * @(#)dataVisualChartB3.js 1.0 2023/04/11
 * 응급의료통계포털 - 데이터시각화 스크립트
 * 응급의학 전문의 수
 */

/**------------------------------------------------------------------------------
 * 응급의학 전문의 수 - 연도별 시계열 데이터
 *-----------------------------------------------------------------------------*/
function chartB30(data){

	if ( data.length > 0 ) {

		/* 차트 시계열 및 범례 고유값 데이터 담기 Start */
		
		var uniqCategories = new Array(); //차트 시계열값 데이터 담기 - 연도 고유값
		var legends = new Array(); //차트 범례  데이터 담기
		
		var chkWrttimeId = "";
		var uniqWrttimeId = "";
		$.each(data, function(index, value){
			if(index == 0){
				uniqWrttimeId = value.WRTTIME_IDTFR_ID;
				
				$("#goStatblId").val(value.STATBL_ID);
			}

			//차트 시계열 고유값 처리
			if(chkWrttimeId != value.WRTTIME_IDTFR_ID){
				uniqCategories.push(value.WRTTIME_IDTFR_ID.substring(0,4)+"년");
				chkWrttimeId = value.WRTTIME_IDTFR_ID;
			}

			//차트 범례 고유값 처리
			if(uniqWrttimeId == value.WRTTIME_IDTFR_ID){
				legends.push(value.VIEW_ITM_NM);
			}
			
		});
		
		/* 차트 시계열 및 범례 고유값 데이터 담기 End */
		
		/* 차트 수치 데이터 담기 Start */
		var danwiArr = new Array();
		var valSeries =  new Array();
		for(var i = legends.length-1; i >= 0; i--){ //범례값 
			var valSeriesName = new Object();
			var valSeriesData = new Array();
			valSeriesName.name = legends[i].replace(">계","");
			var setData = new Array();
			$.each(data, function(key, value){
				if(legends[i] == value.VIEW_ITM_NM){
					setData.push(value.DTA_VAL);
					valSeriesName.danwi = value.UI_NM;
					danwiArr.push(value.UI_NM);
				}
			});
			valSeriesName.data = setData;
			valSeries.push(valSeriesName);
		}
		
		let top_danwi = danwiArr.filter((v, i) => danwiArr.indexOf(v) === i);
		$("#top_danwi").text("(단위 : "+top_danwi+")");
		
		/* 차트 수치 데이터 담기 End */
		Highcharts.setOptions({
			colors: [ '#aacd6e','#6c49b8', '#67d5b5',
				'#ee7785', '#c89ec4', '#84b1ed', '#4f86c6',
				'#cc8f64', '#77aaad', '#6e7783', '#d8e6e7',
				'#379392', '#4fb0c6',],
			lang: {thousandsSep: ','}
		});
		$("#theme_chart_top").highcharts({
			
		    chart: {
		        type: 'column',
				events: {
					load:function () {
						var addAlt = $('#theme_chart_top image').eq(0);
						addAlt.attr('alt', '연간 응급의학 전문의 수'+' 이미지추출');
						return;
					}
				}
		    },
		    title: { 
		    	text: '연간 응급의학 전문의 수',
		        style: {
		        	color: '#2b0070',
		            fontWeight: 'bold'
		        }
		    },
		    xAxis: {
		        categories: uniqCategories
		    },
		    yAxis: {
				title: {
					text: ''
				},
				labels: {
					x: -5,
					formatter: function() {
						return Highcharts.numberFormat(this.value,0,'.',',');
					}
				}
		    
		    },
		    legend: {
		        reversed: true
		    },
		    plotOptions: {
		        series: {
		            stacking: 'normal'
		        }
		    },
		    series: valSeries,
			tooltip: {
				formatter: function() {
					return '<b>'+this.key+'</b><br/>'+this.series.name + ' : '+Highcharts.numberFormat(this.point.y,0,'.',',')+this.series.userOptions.danwi;
				}
			},
			exporting: {
		    	chartOptions: {
		    		plotOptions: {
		    			series: {
		    				dataLabels: {
		    					enabled: true
		    				}
		    			}
		    		}
		    	},
		    	fallbackToExportServer: false,
		    	buttons: {
		    		contextButton: {enabled: false},
		    		exportButton: {
	            		symbol: 'url(/images/nemc/soportal/chart/charbtn18.png)',
	            		symbolX: 20,
	            		symbolY: 20,
	            		width: 20,
	            		height: 20,
	            		symbolSize: 20,
		    			menuItems: [
		    				'downloadPNG', 'downloadJPEG', 'downloadSVG'
		    			]
		    		}
		    	}
			},
			credits:{ enabled: false }
		});
		
	}
	
}

/**------------------------------------------------------------------------------
 * 응급의학 전문의 수 - 연도선택 > 전문의 데이터
 *-----------------------------------------------------------------------------*/
function chartB31(data){

	if ( data.length > 0 ) {
		
		/* 차트 수치 데이터 담기 Start */
		
		var valSeries =  new Array();
		var clsNms =  new Array();
		
		var valSeriesMale = new Object();
		valSeriesMale.name = "남자";
		valSeriesMale.drilldown = "남자";
		valSeriesMale.y = 0;
		
		var valSeriesFemale = new Object();
		valSeriesFemale.name = "여자";
		valSeriesFemale.drilldown = "여자";
		valSeriesFemale.y = 0;
		
		$.each(data, function(key, value){
			if(value.ITM_DATANO == "10004"){
				valSeriesMale.y += value.DTA_VAL;

				clsNms.push(value.VIEW_CLS_NM);
			}
			if(value.ITM_DATANO == "10005"){
				valSeriesFemale.y += value.DTA_VAL;
			}
		});
		valSeries.push(valSeriesMale);
		valSeries.push(valSeriesFemale);

		var valDrilldowns =  new Array();
		valSeriesMale = new Object();
		valSeriesMale.name = "남자";
		valSeriesMale.id = "남자";
		
		var setData =  new Array();
		$.each(data, function(key, value){
			if(value.ITM_DATANO == "10004"){
				setData.push([value.VIEW_CLS_NM, Number(value.DTA_VAL)]);
			}
		});
		valSeriesMale.data = setData;
		valDrilldowns.push(valSeriesMale);

		valSeriesFemale = new Object();
		valSeriesFemale.name = "여자";
		valSeriesFemale.id = "여자";
		
		setData =  new Array();
		$.each(data, function(key, value){
			if(value.ITM_DATANO == "10005"){
				setData.push([value.VIEW_CLS_NM, Number(value.DTA_VAL)]);
			}
		});
		valSeriesFemale.data = setData;
		valDrilldowns.push(valSeriesFemale);
		
		
		/* 차트 수치 데이터 담기 End */
		
		var yearText = $("#setYear option:checked").text();

		$("#theme_chart_sub61").highcharts({
			
		    chart: {
		        type: 'pie',
				events: {
					load:function () {
						var addAlt = $('#theme_chart_sub61 image').eq(0);
						addAlt.attr('alt', yearText + ' 응급의학 전문의 수 - 성별, 지역별'+' 이미지추출');
						return;
					}
				}
		    },
            title: {
            	text: yearText + ' 응급의학 전문의 수 - 성별, 지역별',
		        style: {
		        	color: '#2b0070',
		            fontWeight: 'bold'
		        }
            },
		    accessibility: {
		        announceNewData: {
		            enabled: true
		        },
		        point: {
		            valueSuffix: '명'
		        }
		    },
		    plotOptions: {
		        series: {
		            dataLabels: {
		                enabled: true,
		                format: '{point.name}: {point.y:,.0f}명'
		            }
		        }
		    },
		    series: [{
		        name: '응급의학 전문의 수',
		        colorByPoint: true,
		        innerSize: '55%',
		        data: valSeries
		    }],
		    drilldown: {
		    	series: valDrilldowns
		    },
			tooltip: {
				formatter: function() {
					var yearText = $("#setYear option:checked").text();
					return '<b>'+ yearText +' '+ this.key+'</b><br/>'+this.series.name + ' : '+Highcharts.numberFormat(this.point.y,0,'.',',')+'명';
				}
			},
			exporting: {
		    	chartOptions: {
		    		plotOptions: {
		    			series: {
		    				dataLabels: {
		    					enabled: true
		    				}
		    			}
		    		}
		    	},
		    	fallbackToExportServer: false,
		    	buttons: {
		    		contextButton: {enabled: false},
		    		exportButton: {
	            		symbol: 'url(/images/nemc/soportal/chart/charbtn18.png)',
	            		symbolX: 20,
	            		symbolY: 20,
	            		width: 20,
	            		height: 20,
	            		symbolSize: 20,
		    			menuItems: [
		    				'downloadPNG', 'downloadJPEG', 'downloadSVG'
		    			]
		    		}
		    	}
			},
			credits:{ enabled: false }
		});
		
	}
	
}

/**------------------------------------------------------------------------------
 * 응급의학 전문의 수 - 연도선택 > 전문의 지도 데이터
 *-----------------------------------------------------------------------------*/
function chartB32(data){
	
	mapProcessData = new Array(); //조건에 따른 지도데이터
	
	var yearText = $("#setYear option:checked").text();
	
	var mapTitle =  yearText + ' 지역별 인구 십만 명당 응급의학전문의 수';
	var mapYearText = yearText + ' 인구 십만 명당 응급의학전문의 수';
	var mapChgUiNm = "";
	
    if ( data.length > 0 ) {
        $.each(data, function(index, value){
        	
        	if(index == 0){
        		mapChgUiNm = value.UI_NM;
        	}
        	
        	if(value.ITM_DATANO == "10006"){
        		
                if (value.CLS_DATANO == 50002) {
                    value.code = "11"; //서울
                }
                else if(value.CLS_DATANO == 50005) {
                    value.code = "26"; //부산
                }
                else if(value.CLS_DATANO == 50006) {
                    value.code = "27"; //대구
                }
                else if(value.CLS_DATANO == 50003) {
                    value.code = "28"; //인천
                }
                else if(value.CLS_DATANO == 50007) {
                    value.code = "29"; //광주
                }
                else if(value.CLS_DATANO == 50008) {
                    value.code = "30"; //대전
                }
                else if(value.CLS_DATANO == 50009) {
                    value.code = "31"; //울산
                }
                else if(value.CLS_DATANO == 50010) {
                    value.code = "36"; //세종
                }
                else if(value.CLS_DATANO == 50004) {
                    value.code = "41"; //경기
                }
                else if(value.CLS_DATANO == 50011) {
                    value.code = "42"; //강원
                }
                else if(value.CLS_DATANO == 50012) {
                    value.code = "43"; //충북
                }
                else if(value.CLS_DATANO == 50013) {
                    value.code  = "44"; //충남
                }
                else if(value.CLS_DATANO == 50014) {
                    value.code =  "45"; //전북
                }
                else if(value.CLS_DATANO == 50015) {
                    value.code = "46"; //전남
                }
                else if(value.CLS_DATANO == 50016) {
                    value.code = "47"; //경북
                }
                else if(value.CLS_DATANO == 50017) {
                    value.code = "48"; //경남
                }
                else if(value.CLS_DATANO == 50018) {
                    value.code = "50"; //제주
                }
                
        	}

        });

        mapProcessData = data;

        var mapLoad = new visualMaps(); //맵 JS함수 정의
        mapLoad.makeMap("theme_chart_sub62", '', mapTitle, mapYearText, mapChgUiNm); // 차트 생성 - 시도
        
		setTimeout(function(){
		    //지도화면 사이트 재조정
		    hightMap.mapView.setView(
		    	    [1066956, 1757267],
		            -10.16
		    );
		}, 200);
    }
	
	
}

/**------------------------------------------------------------------------------
 * 응급의학 전문의 수 - 연도선택 > 전공의 데이터
 *-----------------------------------------------------------------------------*/
function chartB33(data){
	
	if ( data.length > 0 ) {
		
		/* 차트 수치 데이터 담기 Start */
		
		var valSeries =  new Array();
		var clsNms =  new Array();
		
		var valSeriesMale = new Object();
		valSeriesMale.name = "남자";
		valSeriesMale.drilldown = "남자";
		valSeriesMale.y = 0;
		
		var valSeriesFemale = new Object();
		valSeriesFemale.name = "여자";
		valSeriesFemale.drilldown = "여자";
		valSeriesFemale.y = 0;
		
		$.each(data, function(key, value){
			if(value.ITM_DATANO == "10008"){
				valSeriesMale.y += value.DTA_VAL;

				clsNms.push(value.VIEW_CLS_NM);
			}
			if(value.ITM_DATANO == "10009"){
				valSeriesFemale.y += value.DTA_VAL;
			}
		});
		valSeries.push(valSeriesMale);
		valSeries.push(valSeriesFemale);

		var valDrilldowns =  new Array();
		valSeriesMale = new Object();
		valSeriesMale.name = "남자";
		valSeriesMale.id = "남자";
		
		var setData =  new Array();
		$.each(data, function(key, value){
			if(value.ITM_DATANO == "10008"){
				setData.push([value.VIEW_CLS_NM, Number(value.DTA_VAL)]);
			}
		});
		valSeriesMale.data = setData;
		valDrilldowns.push(valSeriesMale);

		valSeriesFemale = new Object();
		valSeriesFemale.name = "여자";
		valSeriesFemale.id = "여자";
		
		setData =  new Array();
		$.each(data, function(key, value){
			if(value.ITM_DATANO == "10009"){
				setData.push([value.VIEW_CLS_NM, Number(value.DTA_VAL)]);
			}
		});
		valSeriesFemale.data = setData;
		valDrilldowns.push(valSeriesFemale);
		
		
		/* 차트 수치 데이터 담기 End */
		
		var yearText = $("#setYear option:checked").text();

		Highcharts.setOptions({
			colors: [ '#aacd6e','#6c49b8', '#67d5b5',
				'#ee7785', '#c89ec4', '#84b1ed', '#4f86c6',
				'#cc8f64', '#77aaad', '#6e7783', '#d8e6e7',
				'#379392', '#4fb0c6',],
			lang: {thousandsSep: ','}
		});
		$("#theme_chart_sub53").highcharts({
			
		    chart: {
		        type: 'pie',
				events: {
					load:function () {
						var addAlt = $('#theme_chart_sub53 image').eq(0);
						addAlt.attr('alt', yearText + ' 응급의학 전공의 수 - 성별, 지역별'+' 이미지추출');
						return;
					}
				}
		    },
            title: {
            	text: yearText + ' 응급의학 전공의 수 - 성별, 지역별',
		        style: {
		        	color: '#2b0070',
		            fontWeight: 'bold'
		        }
            },
		    accessibility: {
		        announceNewData: {
		            enabled: true
		        },
		        point: {
		            valueSuffix: '명'
		        }
		    },
		    plotOptions: {
		        series: {
		            dataLabels: {
		                enabled: true,
		                format: '{point.name}: {point.y:,.0f}명'
		            }
		        }
		    },
		    series: [{
		        name: '응급의학 전공의 수',
		        colorByPoint: true,
		        innerSize: '55%',
		        data: valSeries
		    }],
		    drilldown: {
		    	series: valDrilldowns
		    },
			tooltip: {
				formatter: function() {
					var yearText = $("#setYear option:checked").text();
					return '<b>'+ yearText +' '+ this.key+'</b><br/>'+this.series.name + ' : '+Highcharts.numberFormat(this.point.y,0,'.',',')+'명';
				}
			},
			exporting: {
		    	chartOptions: {
		    		plotOptions: {
		    			series: {
		    				dataLabels: {
		    					enabled: true
		    				}
		    			}
		    		}
		    	},
		    	fallbackToExportServer: false,
		    	buttons: {
		    		contextButton: {enabled: false},
		    		exportButton: {
	            		symbol: 'url(/images/nemc/soportal/chart/charbtn18.png)',
	            		symbolX: 20,
	            		symbolY: 20,
	            		width: 20,
	            		height: 20,
	            		symbolSize: 20,
		    			menuItems: [
		    				'downloadPNG', 'downloadJPEG', 'downloadSVG'
		    			]
		    		}
		    	}
			},
			credits:{ enabled: false }
		});
		
	}
	
}

/**------------------------------------------------------------------------------
 * 응급의학 전문의 수 - 연도선택 > 전공의 지도 데이터
 *-----------------------------------------------------------------------------*/
function chartB34(data){

	mapProcessData = new Array(); //조건에 따른 지도데이터
	
	var yearText = $("#setYear option:checked").text();
	
	var mapTitle =  yearText + ' 지역별 인구 십만 명당 응급의학전공의 수';
	var mapYearText = yearText + ' 인구 십만 명당 응급의학전공의 수';
	var mapChgUiNm = "";
	
    if ( data.length > 0 ) {
        $.each(data, function(index, value){
        	
        	if(index == 0){
        		mapChgUiNm = value.UI_NM;
        	}
        	
        	if(value.ITM_DATANO == "10010"){
        		
                if (value.CLS_DATANO == 50002) {
                    value.code = "11"; //서울
                }
                else if(value.CLS_DATANO == 50005) {
                    value.code = "26"; //부산
                }
                else if(value.CLS_DATANO == 50006) {
                    value.code = "27"; //대구
                }
                else if(value.CLS_DATANO == 50003) {
                    value.code = "28"; //인천
                }
                else if(value.CLS_DATANO == 50007) {
                    value.code = "29"; //광주
                }
                else if(value.CLS_DATANO == 50008) {
                    value.code = "30"; //대전
                }
                else if(value.CLS_DATANO == 50009) {
                    value.code = "31"; //울산
                }
                else if(value.CLS_DATANO == 50010) {
                    value.code = "36"; //세종
                }
                else if(value.CLS_DATANO == 50004) {
                    value.code = "41"; //경기
                }
                else if(value.CLS_DATANO == 50011) {
                    value.code = "42"; //강원
                }
                else if(value.CLS_DATANO == 50012) {
                    value.code = "43"; //충북
                }
                else if(value.CLS_DATANO == 50013) {
                    value.code  = "44"; //충남
                }
                else if(value.CLS_DATANO == 50014) {
                    value.code =  "45"; //전북
                }
                else if(value.CLS_DATANO == 50015) {
                    value.code = "46"; //전남
                }
                else if(value.CLS_DATANO == 50016) {
                    value.code = "47"; //경북
                }
                else if(value.CLS_DATANO == 50017) {
                    value.code = "48"; //경남
                }
                else if(value.CLS_DATANO == 50018) {
                    value.code = "50"; //제주
                }
                
        	}

        });

        mapProcessData = data;

        var mapLoad = new visualMaps(); //맵 JS함수 정의
        mapLoad.makeMap("theme_chart_sub54", '', mapTitle, mapYearText, mapChgUiNm); // 차트 생성 - 시도
        
		setTimeout(function(){
		    //지도화면 사이트 재조정
		    hightMap.mapView.setView(
		    	    [1066956, 1757267],
		            -10.16
		    );
		}, 200);
    }
	
}