<?xml version="1.0" encoding="UTF-8"?>
<a:screen xmlns:c="leaf.application.action" xmlns:a="http://www.leaf-framework.org/application" xmlns:p="uncertain.proc" trace="true">
    <a:init-procedure>
        <a:model-query defaultWhereClause="t1.workflow_id=${/parameter/@workflow_id}" model="zjwfl.zj_wfl_workflow" rootPath="workflow_record"/>
        <a:model-query defaultWhereClause="v.code=&apos;ZJ_WFL_NODE_TYPE&apos; and (${/model/workflow_record/record/@sub_category} = &apos;MAIN_PROCESS&apos; or v.code_value != &apos;SUB_PROCESS&apos; ) and v.code_value not in (&apos;START_NODE&apos;,&apos;END_NODE&apos;) " model="zjwfl.sys_code_default_value" rootPath="node_type_list"/>
        <a:model-query defaultWhereClause="v.code=&apos;ZJ_WFL_NODE_TYPE&apos; and v.code_value=&apos;NORMAL_NODE&apos;" model="zjwfl.sys_code_default_value" rootPath="node_type_default_value"/>
        <a:model-query defaultWhereClause="v.code=&apos;ZJ_WFL_WORKFLOW_STATUS&apos; and v.code_value in (&apos;-1&apos;,&apos;10&apos;,&apos;-1000&apos;)" fetchAll="true" model="zjwfl.sys_code_default_value" rootPath="workflow_status_list"/>
    </a:init-procedure>
    <a:view>
        <a:link id="pageLink_end_proc_para" url="${/request/@context_path}/modules/zjwfl/WFL2012/zj_wfl_workflow_node_proc_para_end.lview"/>
        <a:link id="bmLink_calc_wfl_complete" model="zjwfl.zj_wfl_workflow_node_complete_rate" modelaction="update"/>
        <script type="text/javascript"><![CDATA[
            function close_nodePage() {
                $('zj_wfl_workflow_node_window').close();
            }
            
            function refresh_nodeDs()
            {
                var ds=$('nodeDs');
                ds.query(ds.currentPage);
            }
            
            function winOpen_node_edit(node_id ,node_type) {
                var win = new Leaf.Window({
                    id: 'zj_wfl_workflow_node_edit_window',
                    url: 'zj_wfl_workflow_node_edit.lview',
                    params: {
                    	node_id:node_id,
                    	node_type : node_type,
                    	workflow_id:'${/parameter/@workflow_id}'
                    },
                    title: '编辑节点',
                    fullScreen: true
                });
                win.on('close', function() {
                    refresh_nodeDs();
                });
                
            }
            
            function nodePage_get_completeRate_color(score)
            {
                if(score<60)
        	    {
        	        return 'red';
        	    }
        	    else if(score>=90)
        	    {
        	        return '#33FF00';
        	    }
        	    else
        	    {
        	        return '#FFCC00';
        	    }
            }
            
            function get_format_number(value)
            {
                var num = Number(value);
				if(!isNaN(num))
				{
				    return num;
				}
                return 0;
                
            }
            
            function nodePage_get_completeRate_info(info_complete_rate)
            {
                var score = get_format_number(info_complete_rate);
        	    
        	    var color = nodePage_get_completeRate_color(score);
        	    var info={
        	        'score':score,
        	        'style':{
        	        	'color':color,
        	        	'font-weight':'bold'
        	        }
        	    };
        	    return info;
            }
            
            function get_completeRate_styleStr(score)
            {
                var info = nodePage_get_completeRate_info(score);
                var str='';
                for(var prop in info['style'])
                {
                    str=str + prop +':'+ info['style'][prop]+';';
                }
                
                return 'style="'+ str +'"';
            }
            
            function render_nodeDs_grid(value, record, name) {
                if(!record.isNew)
                {
                    if(name=='node_edit')
	                {
	                    var node_type = record.get('node_type');
	                    if (node_type == "NORMAL_NODE" || node_type == "BRANCH_NODE" || node_type == "VIRTUAL_NODE" ||node_type=='END_NODE' ||node_type=='START_NODE')
	                    {
	                        //普通节点、分支节点、虚拟节点,都可编辑节点
                        	return '<a href="javascript:winOpen_node_edit(' + record.get('node_id') + ',\'' + node_type + '\')">编辑节点</a>';
                    	}
                    	return '';
	                }
	                if(name=='info_complete_rate')
	            	{
	            	    var score = get_format_number(value);
	            	    var msg = $L.escapeHtml(record.get('info_complete_note'));
	            	    if(Ext.isEmpty(msg)){
	            	        return '<span ' + get_completeRate_styleStr(score) + '>'+ score +'%<span>';
	            	    }else{
		            	    return '<span onmouseover="$L.ToolTip.show(Ext.get(this).parent(\'td\'),\''+msg+'\')"' + get_completeRate_styleStr(score) + '>'+ score +'%<span>';
	            	    }
	            	}
	                return '';
                }
                return '';
            }
            
            
            function editorFun_nodeDs_grid(record, name)
            {
                var field=record.getField(name);
                if(name=='node_type_desc')
                {
                    var node_type=record.get('node_type');
                    var config={
                    	'NORMAL_NODE':'正常推进的节点',
                    	'BRANCH_NODE':'正常推进的节点,并在节点结束后根据分支函数,选择后续过程',
                    	'SUB_PROCESS':'工作流子流程嵌套',
                    	'VIRTUAL_NODE':'不会在工作流推进过程中触发,只在主动跳转时生效'
                    };
                    if(config[node_type] != undefined)
                    {
                        field.setPropertity('tooltip',config[node_type]);
                    }
                    if (node_type=='START_NODE' || node_type=='END_NODE'){
                        return '';
                    }
                    return 'nodeDs_grid_editor_comb';
                    
                }
                if(name=='link_workflow_code')
                {
                    if (name == 'link_workflow_code') {
                        if (record.get('node_type')=='SUB_PROCESS') {
                            //判断条件:节点类型=链接流程
                            //LOV条件:工作流类型相同&&工作流主从=子流程
                            field.setLovPara('workflow_type_id', '${/model/workflow_record/record/@workflow_type_id}');
                            field.setLovPara('sub_category', 'SUB_PROCESS');
                            field.setRequired(true);
                            return 'nodeDs_grid_editor_lov';
                        }
                        else
                        {
                            field.setRequired(false);
                            return '';
                        }
                    }
                }
            }
            
            
            function onUpdate_nodeDs(ds, record, name, value, oldvalue) {
            
                // var approval_type_factor_ds = record.get("approval_type_factor");
                //如果"节点类型"的值发生改变,则将"链接流程","分支判断过程","审批规则"的值清空
                if (name == "node_type_desc") {
                    record.set('link_workflow_id', null);
                    record.set('link_workflow_code', null);
                    record.set('link_workflow_desc', null);
                }
                if(name=='info_complete_rate')
                {
                    record.getField(name).setPropertity('tooltip',record.get('info_complete_note'));
                }
            
            }
            
            // function winOpen_define_proc() {
                // new Leaf.Window({
                    // id: 'zj_wfl_workflow_Procedure',
                    // url: '${/request/@context_path}/modules/zjwfl/WFL2012/zj_wfl_workflow_end_procedure_edit.lview',
                    // params:{
                    	// workflow_id:'${/parameter/@workflow_id}'
                    // },
                    // title: '工作流结束过程定义',
                    // fullScreen: true
                // });
            // }
            
            function winOpen_workflow_service_para(service_id) {
                new Leaf.Window({
                    id: 'zj_wfl_workflow_display_service_para',
                    url: 'zj_wfl_workflow_display_service_para.lview',
                    params:{
                        service_id:service_id,
                    	workflow_id: '${/parameter/@workflow_id}'
                    },
                    title: '工作流页面参数定义',
                    height: 450,
                    width: 1000
                });
            }
            
            function define_workflow_service_para()
            {
                var record = $('wflUpdateDs').getAt(0);
                
                if(record.get('node_display_type')=='NORMAL')
                {
                    Leaf.showMessage('提示信息', '非自定义无需定义参数');
                    return;
                }
                
                if( record.get('display_type_change') == 'Y')
                {
                    Leaf.showMessage('提示信息', '我提交的页面已经更改,保存后继续');
                	return;
                }
                var service_id = record.get('display_service_id');
                    
                winOpen_workflow_service_para(service_id);
            }
            
            function handle_field(record,name,type)
            {
                var field=record.getField(name);
                if(type=='READ')
                {
                    field.setRequired(false);
                    field.setReadOnly(true);
                }
                else if(type=='REQUIRED')
                {
                    field.setReadOnly(false);
                    field.setRequired(true);
                }
            }
            
            function control_workflow_display(record)
            {
                var display_type = record.get('display_type');
                if(display_type=='NORMAL')
                {
                    handle_field(record,'display_service_desc','READ');
                }
                else
                {
                    handle_field(record,'display_service_desc','REQUIRED');
                }
            }
            
            
            function onUpdate_wflUpdateDs(ds,record,name,value,oldValue)
            {
                if(name=='display_type')
                {
                    control_workflow_display(record);
                }
                if(name=='display_service_id')
                {
                    record.set('display_type_change','Y');
                }
                if(name=='show_all_approve_ht_flag')
                {
                    if(value=='Y'&&record.get('show_approve_history_flag')!='Y')
                    {
                        record.set('show_approve_history_flag','Y');
                    }
                }
                if(name=='show_approve_history_flag')
                {
                    if(value=='N'&&record.get('show_all_approve_ht_flag')!='N')
                    {
                        record.set('show_all_approve_ht_flag','N');
                    }
                }
            }
            
            
            function onSubmitSuccess_wflUpdateDs(ds)
			{
			    ds.getAt(0).set('display_type_change','N');
			}
			
			function winOpen_end_proc_para(workflow_procedure_id ,procedure_id) {
                new Leaf.Window({
                    id: 'zj_wfl_workflow_node_proc_para_window',
                    url: $('pageLink_end_proc_para').getUrl(),
                    title: '结束过程参数定义',
                    params:{
                    	workflow_procedure_id: workflow_procedure_id,
                    	procedure_id: procedure_id,
                    	workflow_id: '${/parameter/@workflow_id}'
                    },
                    width:1000,
                    height:500
                });
               
            }
            
            function render_endProcDs_grid(value, record, name) {
                if(name=='proc_para')
                {
                    if (!record.isNew)
                    {
	                    return '<a href="javascript:winOpen_end_proc_para(' + record.get('workflow_procedure_id') + ',' + record.get('procedure_id') + ')">结束过程参数定义</a>';
	                }
	                return '';
                }
                return '';
                
            }
            
            function save_wflUpdateDs()
            {
                var ds = $('wflUpdateDs');
                if(ds.validate())
                {
                    $('wflUpdateDs').submit();
                }
                
            }
            function befremove_nodes(ds,rs){
                for(var i=0;i<rs.length;i++){
                    node_type=rs[i].get('node_type');
                    if (node_type =='END_NODE' || node_type =='START_NODE'){
	                    Leaf.showMessage('提示','起始节点不能做删除');
	                    return false;
                	}
                	
                }
                return true;
            }
            function sequence_vali_fun(record,name,value){
                var node_type= record.get('node_type');
                
                if (node_type=='START_NODE' || node_type=='END_NODE'){
                    return true;
                }
                if (value<1000 && value>0){
                    return true;
                }
                return '只能输入1-999的整数';
            }
        ]]></script>
        <a:dataSets>
            <a:dataSet id="node_type_ds">
                <a:datas dataSource="/model/node_type_list"/>
            </a:dataSet>
            <a:dataSet id="wflUpdateDs" model="zjwfl.zj_wfl_workflow" submitUrl="zj_wfl_workflow_edit.lsc">
                <a:datas dataSource="/model/workflow_record"/>
                <a:fields>
                    <a:field name="show_approve_history_flag" checkedValue="Y" uncheckedValue="N"/>
                    <a:field name="show_all_approve_ht_flag" checkedValue="Y" uncheckedValue="N"/>
                    <a:field name="display_type" checkedValue="CUSTOM" uncheckedValue="NORMAL"/>
                    <a:field name="workflow_code" readOnly="true"/>
                    <a:field name="workflow_desc" readOnly="true"/>
                    <a:field name="workflow_type_code" readOnly="true"/>
                    <a:field name="sub_category_desc" readOnly="true"/>
                    <a:field name="display_service_name" readOnly="true"/>
                    <a:field name="display_service_desc" lovGridHeight="300" lovHeight="450" lovService="zjwfl.zj_wfl_workflow_service_lov" lovWidth="500" title="我提交的">
                        <a:mapping>
                            <a:map from="service_id" to="display_service_id"/>
                            <a:map from="service_desc" to="display_service_desc"/>
                            <a:map from="service_name" to="display_service_name"/>
                        </a:mapping>
                    </a:field>
                </a:fields>
                <a:events>
                    <a:event name="update" handler="onUpdate_wflUpdateDs"/>
                    <a:event name="submitsuccess" handler="onSubmitSuccess_wflUpdateDs"/>
                </a:events>
            </a:dataSet>
            <script type="text/javascript"><![CDATA[
            	(
            	function ()
            	{
            	    var record = $('wflUpdateDs').getAt(0);
            	    control_workflow_display(record);
            	    record.set('display_type_change','N',true);
            	    
            	})();
            ]]></script>
            <a:dataSet id="nodeDs" autoQuery="true" bindName="node_info" bindTarget="wflUpdateDs" fetchAll="true" model="zjwfl.zj_wfl_workflow_node" queryUrl="${/request/@context_path}/autocrud/zjwfl.zj_wfl_workflow_node/query?workflow_id=${/parameter/@workflow_id}" selectable="true" submitUrl="zj_wfl_workflow_node_edit.lsc">
                <a:fields>
                    <a:field name="sequence_num" required="true" validator="sequence_vali_fun"/>
                    <a:field name="workflow_id" defaultValue="${/parameter/@workflow_id}"/>
                    <a:field name="node_type" defaultValue="${/model/node_type_default_value/record/@code_value}"/>
                    <a:field name="node_type_desc" defaultValue="${/model/node_type_default_value/record/@code_value_name}" displayField="code_value_name" options="node_type_ds" required="true" returnField="node_type" valueField="code_value"/>
                    <a:field name="approval_type_factor"/>
                    <a:field name="link_workflow_code" lovGridHeight="300" lovHeight="450" lovService="zjwfl.zj_wfl_workflow_lov" lovWidth="500" title="链接流程选择">
                        <a:mapping>
                            <a:map from="workflow_id" to="link_workflow_id"/>
                            <a:map from="workflow_code" to="link_workflow_code"/>
                            <a:map from="workflow_desc" to="link_workflow_desc"/>
                        </a:mapping>
                    </a:field>
                    <a:field name="node_desc" maxLength="2000" required="true"/>
                </a:fields>
                <a:events>
                    <a:event name="update" handler="onUpdate_nodeDs"/>
                    <a:event name="beforeremove" handler="befremove_nodes"/>
                </a:events>
            </a:dataSet>
            <a:dataSet id="endProcPage_workflowStatusDs">
                <a:datas dataSource="/model/workflow_status_list"/>
            </a:dataSet>
        </a:dataSets>
        <a:screenBody>
            <a:form column="4" labelWidth="100" marginWidth="30" title="工作流信息">
                <a:textField name="workflow_type_code" bindTarget="wflUpdateDs" prompt="工作流类型"/>
                <a:textField name="workflow_code" bindTarget="wflUpdateDs" prompt="工作流代码"/>
                <a:textField name="workflow_desc" bindTarget="wflUpdateDs" prompt="工作流描述"/>
                <a:textField name="sub_category_desc" bindTarget="wflUpdateDs" prompt="主从属性"/>
            </a:form>
            <a:hBox>
                <a:button click="close_nodePage" text="返回"/>
                <a:button click="save_wflUpdateDs" text="保存"/>
            </a:hBox>
            <a:tabPanel id="nodePage_tabPanel" marginHeight="200" marginWidth="30">
                <a:tabs>
                    <a:tab prompt="节点信息" width="100">
                        <script type="text/javascript"><![CDATA[
			            	function calc_wfl_complete()
				            {
				                Leaf.request({
					                url: $('bmLink_calc_wfl_complete').getUrl(),
					                para: {
					                    workflow_id:'${/parameter/@workflow_id}'
					                },
					                success: function(res) {
					                    refresh_nodeDs();
					                },
					                failure: function() {
					                },
					                error: function() {
					                },
					                scope: this
					            });
				            }
				            
				            function graphics_preview_refresh()
				            {
				                var tabPanel = $('nodePage_tabPanel');
				                tabPanel.reloadTab(1, tabPanel.items[1].ref);
				                
				            }
			            	
			            	function nodeDs_grid_editor_nf_integer_fun(record,name){
			            	    var node_type = record.get('node_type');
			            	    if (node_type=='START_NODE' || node_type=='END_NODE'){
			                        return '';
			                    }
			            	    return 'nodeDs_grid_editor_nf_integer';
			            	}
			            	function nodeDs_grid_editor_tf_fun(record,name){
			            	   var node_type = record.get('node_type');
			            	    if (node_type=='START_NODE' || node_type=='END_NODE'){
			                        return '';
			                    }
			            	    return 'nodeDs_grid_editor_tf'; 
			            	}
			            ]]></script>
                        <a:grid id="nodeDs_grid" bindTarget="nodeDs" marginHeight="230" marginWidth="60">
                            <a:toolBar>
                                <a:button type="add"/>
                                <a:button type="delete"/>
                                <a:button click="calc_wfl_complete" icon="${/request/@context_path}/images/zjwfl/zjwfl_refresh.png" text="刷新数据完整度"/>
                            </a:toolBar>
                            <a:columns>
                                <a:column name="sequence_num" align="right" editorFunction="nodeDs_grid_editor_nf_integer_fun" prompt="节点序号" width="100"/>
                                <a:column name="node_desc" editorFunction="nodeDs_grid_editor_tf_fun" prompt="节点描述" width="250"/>
                                <a:column name="node_type_desc" editorFunction="editorFun_nodeDs_grid" prompt="节点类型" width="200"/>
                                <a:column name="info_complete_rate" align="right" prompt="数据完整度" renderer="render_nodeDs_grid"/>
                                <a:column name="node_edit" align="center" prompt="编辑节点" renderer="render_nodeDs_grid" width="100"/>
                                <a:column name="link_workflow_code" editorFunction="editorFun_nodeDs_grid" prompt="链接流程代码" width="200"/>
                                <a:column name="link_workflow_desc" prompt="链接流程描述" width="200"/>
                            </a:columns>
                            <a:editors>
                                <a:numberField id="nodeDs_grid_editor_nf_integer" allowDecimals="false" allowNegative="false"/>
                                <a:textField id="nodeDs_grid_editor_tf"/>
                                <a:comboBox id="nodeDs_grid_editor_comb"/>
                                <a:lov id="nodeDs_grid_editor_lov"/>
                                <a:checkBox id="nodeDs_grid_editor_check"/>
                            </a:editors>
                        </a:grid>
                    </a:tab>
                    <a:tab prompt="节点图形" ref="${/request/@context_path}/modules/zjwfl/zj_wfl_graphics_preview.lview?workflow_id=${/parameter/@workflow_id}" width="100"><![CDATA[
                    ]]></a:tab>
                    <a:placeHolder id="main_process_define"/>
                </a:tabs>
            </a:tabPanel>
        </a:screenBody>
    </a:view>
    <a:view-config>
        <c:create-config targetId="main_process_define">
            <p:switch test="/model/workflow_record/record/@sub_category">
                <p:case value="MAIN_PROCESS">
                    <c:process-config>
                        <a:tab prompt="页面显示" width="100">
                            <a:screenBody>
                                <a:fieldSet labelWidth="110" marginWidth="60" padding="0" title="页面显示信息">
                                    <table>
                                        <tr>
                                            <td style="text-align:right;" width="100px"><![CDATA[自定义]]></td>
                                            <td width="160px">
                                                <a:checkBox name="display_type" bindTarget="wflUpdateDs" prompt="自定义"/>
                                            </td>
                                            <td style="text-align:right;" width="100px">
                                                <a href="javascript:define_workflow_service_para();"><![CDATA[参数定义]]></a>
                                            </td>
                                            <td><![CDATA[
	                                            
	                                        ]]></td>
                                        </tr>
                                        <tr>
                                            <td style="text-align:right;" width="100px"><![CDATA[显示页面]]></td>
                                            <td>
                                                <a:lov name="display_service_desc" bindTarget="wflUpdateDs" prompt="显示页面"/>
                                            </td>
                                            <td style="text-align:right;" width="100px"><![CDATA[页面名称]]></td>
                                            <td>
                                                <a:textField name="display_service_name" bindTarget="wflUpdateDs" prompt="页面名称" width="500"/>
                                            </td>
                                        </tr>
                                    </table>
                                    <!-- <a:checkBox name="display_type" bindTarget="wflUpdateDs" prompt="自定义"/>
                                    <a href="javascript:define_workflow_service_para();"><![CDATA[参数定义]]></a>
                                    <a:lov name="display_service_desc" bindTarget="wflUpdateDs" prompt="显示页面"/>
                                    <a:textField name="display_service_name" bindTarget="wflUpdateDs" prompt="页面名称" width="300" /> -->
                                </a:fieldSet>
                                <a:fieldSet labelWidth="110" marginWidth="60" padding="0" title="审批历史">
                                    <table>
                                        <tr>
                                            <td style="text-align:right;" width="100px"><![CDATA[显示审批历史]]></td>
                                            <td width="160px">
                                                <a:checkBox name="show_approve_history_flag" bindTarget="wflUpdateDs" prompt="显示审批历史"/>
                                            </td>
                                            <td style="text-align:right;" width="100px"><![CDATA[显示所有审批历史]]></td>
                                            <td>
                                                <a:checkBox name="show_all_approve_ht_flag" bindTarget="wflUpdateDs" prompt="显示所有审批历史"/>
                                            </td>
                                        </tr>
                                    </table>
                                </a:fieldSet>
                            </a:screenBody>
                        </a:tab>
                    </c:process-config>
                </p:case>
            </p:switch>
        </c:create-config>
    </a:view-config>
</a:screen>