<?xml version="1.0" encoding="UTF-8"?> <!-- $Author: xiaobo $Date: 2012-11-26 下午1:33:59 $Revision: 1.0 $Purpose: 数据表关联 --> <a:screen xmlns:a="http://www.leaf-framework.org/application"> <a:init-procedure/> <a:view package="leaf.ui.std" template="default"> <div/> <script type="text/javascript"><![CDATA[ function okFun() { var dataSet = $('datarelation_ds'); // var validate = dataSet.validate(); var correlation_ds = $('correlation_ds'); var correlationRecords = correlation_ds.getSelected(); if (correlationRecords.length > 0) { var record = dataSet.getAt(0); //添加表 var tables_ds = $('psr_report_tables_ds'); var newRecord = new Leaf.Record({ table_name: record.get('table_name_2'), table_description: record.get('table_description_2'), table_alias: record.get('table_alias_2') }); tables_ds.add(newRecord); //添加条件 var conditions_ds = $('psr_report_conditions_ds'); var table_join = record.get('table_join'); for (var i = 0;i < correlationRecords.length;i++) { var correlationRecord = correlationRecords[i]; conditions_ds.add(new Leaf.Record({ logic: 'AND', logic_dis: 'AND', field_1_category: 'FIELD', field_1_category_dis: '字段', field_1: correlationRecord.get('field_1'), table_name_1: record.get('table_name_1'), field_type_1: correlationRecord.get('field_type_1'), condition_type: 'EQ', condition_type_dis: '=', field_2_category: 'FIELD', field_2_category_dis: '字段', field_2: correlationRecord.get('field_2'), table_name_2: correlationRecord.get('table_name_2'), field_type_2: correlationRecord.get('field_type_2'), correlation_mark: record.get('correlation_mark'), editor_flag: 'N' })); } //关闭页面 closeWin(); }else{ Leaf.showMessage('提示','无关联条件!'); } } //表关联 数据变更 function datarelationUpdateFun(dataSet, record, name, value, oldvalue) { if (name == 'table_join') { disCorrelation(record); } if (name == 'table_name_2') { var dataSet_f = $('psr_base_tables_2_fields_ds'); dataSet_f.setQueryParameter('table_name', value); dataSet_f.setQueryParameter('flag', 'Y'); var field = record.getField('table_join_dis'); field.setReadOnly(true); dataSet_f.query(); record.set('table_join', ''); record.set('table_join_dis', ''); record.set('correlation', ''); } } //关联条件 function disCorrelation(record) { var table_join = record.get('table_join'); var dataSet_1 = $('psr_base_tables_1_fields_ds'); var dataSet_2 = $('psr_base_tables_2_fields_ds'); var records_1 = dataSet_1.getAll(); var records_2 = dataSet_2.getAll(); // record.set('correlation', correlation); var correlation_ds = $('correlation_ds'); if (records_1.length > 0){ correlation_ds.removeAll(); } for (var i = 0;i < records_1.length;i++) { var field_1 = records_1[i].get('field_name'); for (var j = 0;j < records_2.length;j++) { var field_2 = records_2[j].get('field_name'); if (field_1 == field_2) { var correlation = record.get('table_alias_1') + '.' + field_1 + ' = ' + record.get('table_alias_2') + '.' + field_2; if (table_join == 'LEFT_JOIN') { correlation = correlation + '(+)'; field_2 = field_2+ '(+)'; } var sysdate = new Date(); var correlation_mark = sysdate.getTime(); correlation_ds.add(new Leaf.Record({ field_1: record.get('table_alias_1') + '.' + field_1, table_name_1: record.get('table_name_1'), field_type_1: record.get('field_type_1'), field_2: record.get('table_alias_2') + '.' + field_2, table_name_2: record.get('table_name_2'), field_type_2: record.get('field_type_2'), correlation_mark: correlation_mark, correlation: correlation })); } } } } function closeWin() { $('report_datarelation_win').close(); } function loadFun(){ var field = $('datarelation_ds').getAt(0).getField('table_join_dis'); field.setReadOnly(false); } ]]></script> <a:dataSets> <a:dataSet id="datarelation_ds"> <a:fields> <a:field name="table_name_1" readOnly="true"/> <a:field name="table_description_1" readOnly="true"/> <a:field name="table_alias_1" readOnly="true"/> <a:field name="table_name_2" autoComplete="true" lovGridHeight="300" lovHeight="440" lovService="psr.PSR1010.psr_base_tables_lov" lovWidth="480" title="基础表"> <a:mapping> <a:map from="table_description" to="table_description_2"/> <a:map from="table_name" to="table_name_2"/> <!-- <a:map from="table_alias" to="table_alias_2"/> --> </a:mapping> </a:field> <a:field name="table_alias_2" readOnly="true"/> <a:field name="table_description_2" readOnly="true"/> <a:field name="correlation_mark"/> <a:field name="table_join" defaultValue="DEFAULT"/> <a:field name="table_join_dis" defaultValue="标准" displayField="code_value_name" options="psr_table_join_code_ds" returnField="table_join" valueField="code_value"/> </a:fields> <a:events> <a:event name="update" handler="datarelationUpdateFun"/> </a:events> </a:dataSet> <a:dataSet id="correlation_ds" selectable="true"/> <a:dataSet id="psr_base_tables_1_fields_ds" fetchAll="true" model="psr.PSR1010.psr_base_tables_fields" queryUrl="${/request/@context_path}/autocrud/psr.PSR1010.psr_base_tables_fields/query?table_name=${/parameter/@table_name}"/> <a:dataSet id="psr_base_tables_2_fields_ds" fetchAll="true" model="psr.PSR1010.psr_base_tables_fields" queryUrl="${/request/@context_path}/autocrud/psr.PSR1010.psr_base_tables_fields/query?table_name=${/parameter/@table_name}"> <a:events> <a:event name="load" handler="loadFun"/> </a:events> </a:dataSet> </a:dataSets> <a:screenBody> <a:hBox labelWidth="60"> <a:textField name="table_name_1" bindTarget="datarelation_ds" prompt="表名" width="150"/> <a:lov name="table_name_2" bindTarget="datarelation_ds" prompt="关联表" width="150"/> </a:hBox> <a:hBox labelWidth="60"> <a:textField name="table_description_1" bindTarget="datarelation_ds" prompt="描述" width="150"/> <a:textField name="table_description_2" bindTarget="datarelation_ds" prompt="描述" width="150"/> </a:hBox> <a:hBox labelWidth="60"> <a:textField name="table_alias_1" bindTarget="datarelation_ds" prompt="别名" width="150"/> <a:textField name="table_alias_2" bindTarget="datarelation_ds" prompt="别名" width="150"/> </a:hBox> <a:hBox labelWidth="60"> <a:comboBox name="table_join_dis" bindTarget="datarelation_ds" prompt="连接方式" width="150"/> </a:hBox> <a:hBox> <a:label width="20"/> <a:grid bindTarget="correlation_ds" height="175" width="400"> <a:columns> <a:column name="correlation" prompt="关联条件" width="375"/> <!-- <a:column name="field_1" prompt="字段1"/> <a:column name="table_name_1" prompt="表1"/> <a:column name="field_2" prompt="字段2"/> <a:column name="table_name_2" prompt="表2"/> --> </a:columns> </a:grid> </a:hBox> <!-- <a:hBox labelWidth="60"> <a:textArea name="correlation" bindTarget="datarelation_ds" prompt="关联关系" width="300"/> </a:hBox> --> <a:hBox height="50" labelWidth="60"> <a:button click="okFun" text="确定"/> <a:button click="closeWin" text="取消"/> </a:hBox> </a:screenBody> <script type="text/javascript"><![CDATA[ function getAlias(alias) { var records = $('psr_report_tables_ds').getAll(); var length = records.length; var alias_number = alias.charCodeAt(); var b_alias; b_alias = String.fromCharCode(97 + length); /* if (alias_number < 90){ b_alias = String.fromCharCode(alias_number + length); }else{ var n = alias_number - 90; b_alias = String.fromCharCode(65 + n); } */ return b_alias; } function init() { var index = '${/parameter/@index}'; var report_datarelation_ds = $('psr_report_tables_ds'); var record = report_datarelation_ds.getAt(index); var datarelation_ds = $('datarelation_ds'); var table_name = record.get('table_name'); var table_description = record.get('table_description'); var table_alias = record.get('table_alias'); datarelation_ds.removeAll(); var table_alias_2 = getAlias(table_alias); var newRecord = new Leaf.Record({ table_name_1: table_name, table_description_1: table_description, table_alias_1: table_alias, table_alias_2: table_alias_2 }); datarelation_ds.add(newRecord); var dataSet_1 = $('psr_base_tables_1_fields_ds'); dataSet_1.setQueryParameter('table_name', table_name); dataSet_1.setQueryParameter('flag', 'Y'); dataSet_1.query(); } Leaf.onReady(init); ]]></script> </a:view> </a:screen>