| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479 |
- var filedTypes = ['check', 'database', 'key', 'page','index'];
- var headerTr = "template_header_";
- var bodytr = "add_column_table_template_";
- var iframeId = "iframe_";
- var fieldData = [];// 字段的数据
- var iframeLoadNumber = 0; // 当前加载的Iframe的数量
- var rownumber = 0 ;//标识当前序号
- var toDelete = []; //保存表单待删除属性字段id
- $(document).ready(iframeLoaded());
- //$("#iframe_check").load(iframeLoaded());
- //$("#iframe_database").load(iframeLoaded());
- //$("#iframe_key").load(iframeLoaded());
- //$("#iframe_page").load(iframeLoaded());
- //add-start author: wangkun date:20160611 for: TASK #1090 【online】online表单缺少索引配置 代码修改痕迹
- //$("#iframe_index").load(iframeLoaded());
- //add-end author: wangkun date:20160611 for: TASK #1090 【online】online表单缺少索引配置 代码修改痕迹
- function iframeLoaded() {
- iframeLoadNumber++;
- if (iframeLoadNumber == 6) {
- $(".datagrid-toolbar").parent().css("width", "auto");
- // setTimeout(initData, 500);
- initData();
- }
- }
- var fixHelper = function(e, ui) {
- ui.children().each(function() {
- $(this).width($(this).width());
- });
- return ui;
- };
- setTimeout(function(){
- $("#tab_div_database tbody").sortable({
- helper: fixHelper,
- items: '> tr',
- forcePlaceholderSize: true,
- stop: function (event, ui) {
- var textContent = ui.item.context.innerText?
- ui.item.context.innerText.toString():
- ui.item.context.textContent.toString();
- var endString = textContent.indexOf("S")!=-1?textContent.indexOf("S"):textContent.length;
- var startRownum = textContent.substring(0,endString).replace(/(^\s*)|(\s*$)/g,'');
- var targetIndex = ui.item.context.rowIndex;
- for (var i = 0; i < filedTypes.length; i++) {
- if(filedTypes[i] == "database" && startRownum != (targetIndex + 1)) continue;
- if(startRownum == (targetIndex + 1)){ //处理当前行和下一行交换位置
- $("#tab_div_" + filedTypes[i]).find("tr").eq(startRownum).insertBefore($("#tab_div_" + filedTypes[i]).find("tr").eq(targetIndex));
- }else if(startRownum > targetIndex){
- $("#tab_div_" + filedTypes[i]).find("tr").eq(startRownum-1).insertBefore($("#tab_div_" + filedTypes[i]).find("tr").eq(targetIndex));
- } else {
- $("#tab_div_" + filedTypes[i]).find("tr").eq(startRownum-1).insertAfter($("#tab_div_" + filedTypes[i]).find("tr").eq(targetIndex));
- }
- }
- for (var i = 0; i < filedTypes.length; i++) {
- resetTrNum("#tab_div_" + filedTypes[i]);
- }
- }
- });
- // .disableSelection()研究下这个的意义好像这里没啥作用,影响了火狐
- }, 2000);
- function initData() {
- addTableHead();
- $.get("cgFormHeadController.do?getColumnList&id=" + $("#id").val(),getDataHanlder);
- $.get("cgFormIndexController.do?getIndexList&id=" + $("#id").val(),getDataHanlderIndex);
- //update---start--author:JueYue---------date:20140824---------for:table adapter size
- $('.t_table').height($(window).height()-300);
- $(window).resize(function(){
- $('.t_table').height($(window).height()-300);
- });
- //update---start--end:JueYue---------date:20140824---------for:table adapter size
-
- }
- /**
- * 添加表头
- */
- function addTableHead() {
- for (var i = 0; i < filedTypes.length; i++) {
- var tr = $(getIframeDocument(filedTypes[i])).find("#"
- + headerTr + filedTypes[i] + " tr").clone();
- $("#tab_div_" + filedTypes[i]+"_title").append(tr);
- }
- }
- // 兼容不同浏览器获取iframe 内容
- //update-begin--Author:JueYue Date:20140213 for:因为Iframe获取失败,而导致详情看不到的情况
- //主要情况是ie11下的版本是火狐的标识倒是出差错
- function getIframeDocument(id){
- //update-begin--Author:zhoujf Date:20150522 for:解决火狐不兼容的问题
- try {
- if (window.frames["iframe_" + id].contentDocument) {
- return window.frames["iframe_" + id].contentDocument;
- }
- return window.frames["iframe_" + id].document;
- } catch (e) {
- }
- return document.getElementById("iframe_" + id).contentDocument;
- //update-end--Author:zhoujf Date:20150522 for:解决火狐不兼容的问题
- }
- //update-begin--Author:JueYue Date:20140213 for:因为Iframe获取失败,而导致详情看不到的情况
- /**
- * 获取数据的回调
- *
- * @param {}
- * data
- */
- function getDataHanlder(data) {
- data = eval("(" + data + ")");
- // 兼容之前order最小为0的问题
- var orderMin = data[0].orderNum == 0;
- $.each(data, function(idx, item) {
- rownumber = idx;//存储当前序号
- for (var i = 0; i < filedTypes.length; i++) {
- //add-start author: wangkun date:20160611 for: TASK #1090 【online】online表单缺少索引配置 代码修改痕迹
- if(i!=4){
- initTrData(item, filedTypes[i], orderMin);
- }
- //add-end author: wangkun date:20160611 for: TASK #1090 【online】online表单缺少索引配置 代码修改痕迹
- }
- });
- jformTypeChange();
- fixTab();
-
- }
- //获取表单的索引配置
- function getDataHanlderIndex(data) {
- data = eval("(" + data + ")");
- //update-begin--author:scott date:20170305 for:索引排序报异常解决-----
- $.each(data, function(idx, item) {
- rownumber = idx;//存储当前序号
- initTrDataIndex(item, 'index', false);
- });
- //update-end--author:scott date:20170305 for:索引排序报异常解决-----
- jformTypeChange();
- fixTab();
-
- }
- /**
- * 添加行数据
- *
- * @param {}
- * item 这个数据
- * @param {}
- * filedType 这一行的类型
- */
- function initTrData(item, filedType, orderMin) {
- var tr = $(getIframeDocument(filedType)).find("#" + bodytr
- + filedType + " tr").clone();
- var isId = item.fieldName == "id";
- $(':input, select,a', $(tr)).each(function() {
- var $this = $(this), name = $this.attr('name'), val = $this.val();
- if(isId){setAttrForThis($this);}
- //自定义一个序号<a> 按名字进行获取对象,并进行序号指定
- if(name.indexOf("#rindex#") > 0){
- $this.attr("name", name.replace('#rindex#',rownumber));
- $this.html(rownumber+1);
- }
- if (name.indexOf("#index#") > 0) {
- var fieldName = name.replace("columns[#index#].", "");
- $this.attr("name", name.replace('#index#',rownumber));
-
- if (item[fieldName] != "Y" && item[fieldName] != "N") {
- //--author: zhoujf -----start----date:20160331 -------for:online开发创建表单时 表属性设置增加一列checkbox设置传不了值的问题
- $this.attr('type')=='checkbox'? $this.attr("checked", false):$this.val(item[fieldName]);
- //--author: zhoujf -----end----date:20160331 -------for:online开发创建表单时 表属性设置增加一列checkbox设置传不了值的问题
- } else {
- item[fieldName] == "Y" ? $this.attr("checked", true) : $this
- .attr("checked", false);
- }
- } else if (name != "ck") {
- $this.attr("name", name.replace('_index',rownumber));
- $this.val(name.indexOf("columnsfieldName") != -1
- ? item.fieldName
- : item.content);
- }
- else{
- $this.val(item.id);
- }
- });
- $("#tab_div_" + filedType).append(tr);
- }
- //add-start author: wangkun date:20160611 for: TASK #1090 【online】online表单缺少索引配置 代码修改痕迹
- function initTrDataIndex(item, filedType, orderMin) {
- var tr = $(getIframeDocument(filedType)).find("#" + bodytr
- + filedType + " tr").clone();
- var isId = item.fieldName == "id";
- $(':input, select,a', $(tr)).each(function() {
- var $this = $(this), name = $this.attr('name'), val = $this.val();
- if(isId){setAttrForThis($this);}
- //自定义一个序号<a> 按名字进行获取对象,并进行序号指定
- if(name.indexOf("#rindex#") > 0){
- $this.attr("name", name.replace('#rindex#',rownumber));
- $this.html(rownumber+1);
- }
- if (name.indexOf("#index#") > 0) {
- var fieldName = name.replace("indexes[#index#].", "");
- $this.attr("name", name.replace('#index#',rownumber));
-
- if (item[fieldName] != "Y" && item[fieldName] != "N") {
- //--author: zhoujf -----start----date:20160331 -------for:online开发创建表单时 表属性设置增加一列checkbox设置传不了值的问题
- $this.attr('type')=='checkbox'? $this.attr("checked", false):$this.val(item[fieldName]);
- //--author: zhoujf -----end----date:20160331 -------for:online开发创建表单时 表属性设置增加一列checkbox设置传不了值的问题
- } else {
- item[fieldName] == "Y" ? $this.attr("checked", true) : $this
- .attr("checked", false);
- }
- } else if (name != "ck") {
- $this.attr("name", name.replace('_index',rownumber));
- $this.val(name.indexOf("columnsfieldName") != -1
- ? item.fieldName
- : item.content);
- }
- else{
- $this.val(item.id);
- }
- });
- $("#tab_div_" + filedType).append(tr);
- }
- //add-end author: wangkun date:20160611 for: TASK #1090 【online】online表单缺少索引配置 代码修改痕迹
- function setAttrForThis($this){
- if($this.is('select')){
- $this.attr("onfocus","this.defOpt=this.selectedIndex");
- $this.attr("onchange","this.selectedIndex=this.defOpt;");
- }else if($this.is('input')&&$this.attr('type')=='text'){
- $this.attr("readonly","readonly");
- }else if($this.is('input')&&$this.attr('type')=='checkbox'){
- $this.attr("onclick","return false;");
- }
- }
- /**
- * 添加行
- */
- function addColumnBtnClick() {
- for (var i = 0; i < filedTypes.length-1; i++) {
- addTrToTable(filedTypes[i]);
- }
- }
- function addIndexBtnClick(){
- addTrToTable('index');
- }
- function addTrToTable(filedType) {
- var tr = $(getIframeDocument(filedType)).find("#" + bodytr
- + filedType + " tr").clone();
- $("#tab_div_" + filedType).append(tr);
- resetTrNum('#tab_div_' + filedType);
- }
- function deleteUnUsedFiled(){
- if(toDelete && toDelete.length>0){
- for(index in toDelete){
- if(toDelete[index] == "on") continue;
- $.post("cgFormHeadController.do?delField&id="+ toDelete[index]);
- }
- }
- return true;
- }
- /**
- * 删除行
- */
- function delColumnBtnClick() {
- // 获取当前的check的行并进行遍历
- $("#tab_div_database").find("input[name='ck']:checked").parent().parent("tr").each(function(index, ele){
- //$.post("cgFormHeadController.do?delField&id="+ $("#tab_div_database").find("input[name='ck']:checked").val());
- toDelete.push($(this).find("input[name='ck']:checked").val());
- var selectIndex = ele.rowIndex;
- for (var i = 0; i < filedTypes.length; i++) {
- $("#tab_div_" + filedTypes[i]).find("tr").eq(selectIndex).remove();
- }
- })
- for (var i = 0; i < filedTypes.length; i++) {
- resetTrNum("#tab_div_" + filedTypes[i]);
- }
- }
- function delIndexBtnClick() {
- $("#tab_div_index").find("input[name='ck']:checked").parent().parent("tr").each(function(index, ele){
- //toDelete.push($(this).find("input[name='ck']:checked").val());
- var selectIndex = ele.rowIndex;
- $("#tab_div_index").find("tr").eq(selectIndex).remove();
- })
- }
- /**
- * 重设table的order
- *
- * @param {}
- * tableId
- */
- function resetTrNum(tableId) {
- $(tableId + " tbody tr").each(function(i) {
- $(':input, select,a', this).each(function() {
- var $this = $(this), name = $this.attr('name'), val = $this
- .val();
- if (name != null && name.indexOf("#index#") >= 0) {
- $this.attr("name", name.replace('#index#', i));
- /*if (name.indexOf('orderNum') >= 0) { Date20131212 liuht取消重置orderNumber
- $this.val(getMaxNum());
- }*/
- } else if (name != null && name.indexOf("_index") >= 0) {
- $this.attr("name", name.replace('_index', i));
- } else if (name != null && name != "ck") {
- $this.attr("name", name.replace(getNowIndex(name), i));
- }
- //代码移动位置,优化调整 Date20131212
- if (name != null && name.indexOf("rownumber") >= 0) {
- $this.html(i+1); // 移动tr|新加行|删除行 ---重置 rownumber值
- }
- if (name != null && name.indexOf("orderNum") >= 0) {
- $this.val(i+1); // 移动tr|新加行|删除行 ---重置 orderNumber值
- }
-
- });
- });
- jformTypeChange();
- }
- /**
- * 获取最大的 orderNum
- */
- function getMaxNum() {
- var maxNum = 0;
- $("input[name*='orderNum']").each(function() {
- maxNum = parseInt($(this).val()) > maxNum
- ? $(this).val()
- : maxNum;
- });
- return parseInt(maxNum) + 1;
- }
- /**
- * 同步fieldName
- */
- $(document).on('change', '.fieldNameInput','columnsfieldName',valueChange);
- /**
- * 同步content
- */
- $(document).on('change', '.contentInput','columnscontent',valueChange);
- function valueChange(e){
- var val = $(this).val();
- var index = getNowIndex($(this).attr('name'));
- for (var i = 0; i < filedTypes.length; i++) {
- $("#tab_div_" + filedTypes[i]).find("input[name='"+e.data+ index + "']").val(val);
- }
- }
- /**
- * 获取当前的索引值
- *
- * @param {}
- * name 这个元素的Name
- * @return {}
- */
- function getNowIndex(name) {
- var s = name.indexOf("[");
- var e = name.indexOf("]");
- if(s>=0 && e>=0){
- return name.substring(s + 1, e);
- } else if(name.indexOf("columnsfieldName")>=0){
- return name.substring(16);
- }else if(name.indexOf("columnscontent")>=0){
- return name.substring(14); //修改字段备注无法同步问题
- }
- }
- /**
- * 主键策略的改变,控制序列的输入
- */
- function jformPkTypeChange(){
- var pkType = $("#jformPkType").val();
- var $idInput=null;
- $("[name$='fieldName']").each(function(){
- var fieldv = $(this).val();
- if(fieldv && fieldv=="id"){
- $idInput=$(this);
- }
- });
- var $idInput_type=$idInput.parent().parent().find("select[name$='type']");
- var $idInput_length=$idInput.parent().parent().find("input[name$='length']");
- $("#jformPkSequence").val("");
- if(pkType && pkType=="SEQUENCE"){
- $("#jformPkTypeTd").attr("colspan","1");
- $("#jformPkSequenceV").attr("style","");
- $("#jformPkSequenceN").attr("style","");
- $("#jformPkSequence").attr("datatype","*");
- $idInput_type.val("int");
- $idInput_length.val("20");
- }else{
- $("#jformPkSequenceV").attr("style","display: none;");
- $("#jformPkSequenceN").attr("style","display: none;");
- $("#jformPkTypeTd").attr("colspan","3");
- $("#jformPkSequence").removeAttr("datatype");
- if(pkType=="NATIVE"){
- $idInput_type.val("int");
- $idInput_length.val("20");
- }else if(pkType=="UUID"){
- $idInput_type.val("string");
- $idInput_length.val("36");
- }
- }
- }
- /**
- * 表类型的改变,附表才可以设置主表
- */
- function jformTypeChange(){
- openOrCloseSetKeyOp($("#jformType").val() == 3);
- openOrCloseRelationTypeDisplay($("#jformType").val() == 3);
- }
- //控制:只有附表才可以选择附表关联类型
- function openOrCloseRelationTypeDisplay(boo){
- if(boo){
- $("#relation_type_div").attr("style","display: block;");
- }else{
- $("#relation_type_div").attr("style","display: none;");
- }
- }
- function openOrCloseSetKeyOp(boo){
- $("#tab_div_key tbody tr").each(function(i) {
- $(':input', this).each(function() {
- var $this = $(this), name = $this.attr('name');
- if (name != null && (name.indexOf("mainTable") >= 0
- ||name.indexOf("mainField") >= 0)&&
- name!="columns[0].mainTable"&&name!="columns[0].mainField") {
- boo?$this.removeAttr("readonly"):
- $this.attr("readonly","readonly");
- }
- });
- });
- }
- /**
- * fix修复
- */
- function fixTab(){
- //update---start--author:scott---------date:20170630---------for:easyui-tabs 宽度自适应------------
- $('#tabs').tabs({
- width: 2000,
- onSelect:function(title){
- if(title=="数据库属性"){fix("database");}
- else if(title=="页面属性"){fix("page");}
- else if(title=="校验字典"){fix("check");}
- else if(title=="外键"){fix("key");}
- else if(title=="索引"){fix("index");}
- }
- });
- //update---end--author:scott---------date:20170630---------for: easyui-tabs 宽度自适应------------
-
- $('#t_table_database').scroll(function(){
- $('#tab_div_database_title').css('margin-left',-($('#t_table_database').scrollLeft()));
- });
- $('#t_table_page').scroll(function(){
- $('#tab_div_page_title').css('margin-left',-($('#t_table_page').scrollLeft()));
- });
- $('#t_table_check').scroll(function(){
- $('#tab_div_check_title').css('margin-left',-($('#t_table_check').scrollLeft()));
- });
- $('#t_table_key').scroll(function(){
- $('#tab_div_key_title').css('margin-left',-($('#t_table_key').scrollLeft()));
- });
- $('#t_table_index').scroll(function(){
- $('#tab_div_index_title').css('margin-left',-($('#t_table_index').scrollLeft()));
- });
- }
- //利用js让头部与内容对应列宽度一致。
- function fix(type){
- for(var i=0;i<=$('#tab_div_'+type+' tr:last').find('td:last').index();i++){
- $('#tab_div_'+type+'_title th').eq(i).css('width',
- $('#tab_div_'+type+' tr:last').find('td').eq(i).width());
- }
- $('#tab_div_'+type+'_title').css('width',
- $('#tab_div_'+type+' tr:last').width());
- }
|