<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="utf-8"%>
<%@include file="/WEB-INF/ehr/commons/jsp/commonInclude.jsp" %>

<script>
    var editorSource={
        actionUrl:"${contextRoot}/datasource/addDatasource",
        //初始化
        init: function ()
        {
            var me = this;

            me.initForm();
            me.bindEvents();
        },
        //初始化表单控件
        initForm:function(){
            var me = this;
            $('input[name="format"]').ligerRadio();
            $('input[name="type"]').ligerRadio();

            $("#orgId").ligerComboBox({dict:true,dictName:"SYSTEM_ORGANIZATION"});
            $("#dataSource").ligerComboBox({dict:true,dictName:"DB_TYPE"});

            var modelString = "${model.id}";
            var data;
            if(modelString!=undefined && modelString!=null && modelString.length>0)
            {
                me.actionUrl = "${contextRoot}/datasource/updateDatasource";
                var configStr = '${model.config}';
                var type = '${model.type}';
                data = {
                    id:"${model.id}",
                    name: "${model.name}",
                    orgId: "${model.orgId}",
                    type: type,
                    config: configStr
                };


                me.showConfigPanel(type);
                //反解析连接字符串
                if(configStr!=null && configStr.length>0)
                {
                    if(type=="0"){//数据库
                        $("#dataSource").ligerComboBox("setValue",(configStr.split("\/")[0]).split(":")[1]);
                        var dataSourceType = $("#dataSource").ligerComboBox("getValue");

                        if( dataSourceType == "mysql" || dataSourceType == "sqlserver"){

                            $("#ip").val((configStr.split("\/")[2]).split(":")[0]);
                            $("#port").val((configStr.split("\/")[2]).split(":")[1]);
                            $("#dataSourceName").val((configStr.split("\/")[3]).split("?")[0]);
                            $("#userName").val((configStr.split("\/")[3]).split("?")[1].split("&")[0].split("=")[1]);
                            $("#password").val((configStr.split("\/")[3]).split("?")[1].split("&")[1].split("=")[1]);
                        }else{
                            $("#ip").val(configStr.split("\/")[3].split(":")[0]);
                            $("#port").val(configStr.split("\/")[3].split(":")[1]);
                            $("#dataSourceName").val(configStr.split("\/")[4]);
                            $("#userName").val(configStr.split("\/")[0].split(":")[3]);
                            $("#password").val(configStr.split("\/")[1].split("@")[0]);
                        }
                    }
                    else if(type=="1"){//Web Service
                        configStr = $.parseJSON(configStr);

                        $("#protocol").val(configStr.protocol);
                        $("#url").val(configStr.url);
                        $("#secret").val(configStr.secret);
                        $("#trustPath").val(configStr.trust_store.path);
                        $("#trustPassword").val(configStr.trust_store.password);
                    }else if(type=="2"){//文件系统
                        configStr = $.parseJSON(configStr);

                        $("#file_ip").val(configStr.host);
                        $("#file_port").val(configStr.port);
                        $("#file_userName").val(configStr.username);
                        $("#file_password").val(configStr.password);
                    }
                }
            }

            $("#div_info_form").ligerAutoForm({
                data:data,
                validate:{
                    name:"required",
                    orgId:"required"
                },
                message:{
                    name:"数据源名不能为空！",
                    orgId:"所属机构不能为空！"
                }
            });

        },
        //绑定按钮事件
        bindEvents: function ()
        {
            var me = this;
            //监听文本框的blur事件，联动生成数据库连接串
            $(document).on('blur','#ip,#port,#dataSourceName,#userName,#password,#protocol,#url,#secret,#trustPath,#trustPassword,#file_ip,#file_port,#file_userName,#file_password',function(){
                me.generateDataSourceStr();
            });

            //数据源类型change事件
            $(document).on('click','input[name="type"]',function(){
                var value = $(this).val();
                me.showConfigPanel(value);
            });

            //关闭弹窗
            $("#btnCancel").click(function () {
                parent.configSources.dialog.close();
            });

            //保存按钮
            $("#btnSave").click(function () {
                me.save();
            });

            //测试按钮
            $("#btnTest").click(function () {
                me.test();
            });
        },
        //展示/隐藏面板
        showConfigPanel:function(value){
            if(value=="0"){//数据库
                $("#dataBaseDiv").show();
                $("#webServiceDiv").hide();
                $("#fileSystemDiv").hide();
            }else if(value=="1"){//web service
                $("#dataBaseDiv").hide();
                $("#webServiceDiv").show();
                $("#fileSystemDiv").hide();
            }else if(value=="2"){//文件系统
                $("#dataBaseDiv").hide();
                $("#webServiceDiv").hide();
                $("#fileSystemDiv").show();
            }
        },
        //生成数据库连接字符串
        generateDataSourceStr:function(){
            var type=$('input:radio[name="type"]:checked').val();
            var resultStr="";
            if(type=="0" || type=="2"){
                if(type=="0"){//数据库
                    var dataSourceType = $("#dataSource").ligerComboBox("getValue");
                    if(dataSourceType=="mysql"){//mysql
                        resultStr ="jdbc:mysql://"+$("#ip").val()+":"+$("#port").val()+"/"+$("#dataSourceName").val()+"?user="+$("#userName").val()+"&password="+$("#password").val();
                    }else if(dataSourceType=="oracle"){//oracle
                        resultStr ="jdbc:oracle:thin:"+$("#userName").val()+"/"+$("#password").val()+"@//"+$("#ip").val()+":"+$("#port").val()+"/"+$("#dataSourceName").val();
                    }else{//sqlserver
                        resultStr ="jdbc:sqlserver://"+$("#ip").val()+":"+$("#port").val()+"/"+$("#dataSourceName").val()+"?user="+$("#userName").val()+"&password="+$("#password").val();
                    }
                }else{//文件系统
                    resultStr = ' {"username" : "'+$("#file_userName").val()+'","password" : "'+$("#file_password").val()+'","host" : "'+$("#file_ip").val()+'","port" : '+$("#file_port").val()+'}';
                }
            }else if(type=="1"){//web service
                resultStr = '{"protocol" : "'+$("#protocol").val()+'","url" : "'+$("#url").val()+'","secret":"'+$("#secret").val()+'","trust_store" : {"path" : "'+$("#trustPath").val()+'","password" : "'+$("#trustPassword").val()+'"}}';
            }

            $("#config").val(resultStr);
        },
        //保存操作
        save:function(){
            var me = this;
            if(!$("#div_info_form").ligerAutoForm("validate"))
            {
                return;
            }
            var data = $("#div_info_form").ligerAutoForm("getData");


            $.ajax({ //ajax处理
                type: "POST",
                url : me.actionUrl,
                dataType : "json",
                data:data,
                cache:false,
                success :function(data){
                    if(data.successFlg) {
                        parent.configSources.callbackDialog(data.message);
                    }
                    else{
                        $.ligerDialog.error(data.message);
                    }
                },
                error :function(data){
                    $.ligerDialog.error("Status:"+data.status +"(" +data.statusText+")");
                }
            });
        },
        //测试操作
        test:function(){
            var me = this;
            if(!$("#div_info_form").ligerAutoForm("validate"))
            {
                return;
            }
            var data = $("#div_info_form").ligerAutoForm("getData");

            $.ajax({ //ajax处理
                type: "POST",
                url : "${contextRoot}/datasource/testDatasource",
                dataType : "json",
                data:{
                    dataSource:$("#dataSource").val(),
                    config:data.config
                },
                cache:false,
                success :function(data){
                    if(data.successFlg) {
                        $.ligerDialog.success(data.message);
                    }
                    else{
                        $.ligerDialog.error(data.message);
                    }
                },
                error :function(data){
                    $.ligerDialog.error("Status:"+data.status +"(" +data.statusText+")");
                }
            });
        }
    }

    $(function () {
        editorSource.init();
    });
</script>