// Vesion : 4 function clsForm() { var that = this; this.dt = new DataTable(); this.dt_detail = new DataTable(); this.str_namespace = "display.form"; this.str_form_name = "FormName"; this.str_display_name = "%namespace%.%FormName%.%EleName%"; this.flg_error = false; this.error_msg = null; this.event_defined = []; this.functions = null; this.required_mark = " *"; // 必輸欄位顯示的符號 this.refreshing_listbox = false; this.set_message = function (ele_name, str) { try { if (str == "") $(this.str_namespace + "." + this.str_form_name + "." + ele_name + ".message").innerHTML = ""; else $(this.str_namespace + "." + this.str_form_name + "." + ele_name + ".message").innerHTML = str; } catch (e) { //window.status = "clsForm.set_message() 錯誤訊息:" + e.Message; try { $(ele_name + ".message").innerHTML = "
" + str; } catch (e) { } } } this.clear_message = function () { var dt = this.dt; for (var row = 0; row < dt.MaxRow(); row++) { var ele_name = dt.getValueByRow(row, "ELE_NAME"); this.set_message(ele_name, ""); } } this.clear_detail_message = function (dt) { if (typeof(dt) == "undefined") return; for (var row = 0; row < dt.MaxRow(); row++) { var ele_name = dt.getValueByRow(row, "ELE_NAME"); this.set_message(ele_name, ""); } } this.get_schema = function (str_url, str_element_list) { var _dt = new DataTable(); this.dt = new DataTable(); alert("clsForm.get_schema()"); try { var str_result = _dt.connect(str_url, str_element_list); this.dt.ImportXML(_dt.getValue("XML"), "NewDataSet", "", 0, -1); return (true); } catch (e) { alert("clsForm.get_schema() " + locales[l_key].clsForm.error + "\n " + locales[l_key].clsForm.error_message + e.Message); return (false); } } this.create_address = function (row, element_name, element_param, str_url, str_element_list, schema_dt, detail_row, control_name, _value, _name) //*************************************************************************************************** { if (typeof (schema_dt) == "undefined") { var detail = false var dt = this.dt; } else { var detail = true; var dt = schema_dt; } var str_HEAD = dt.getValueByRow(row, "HEAD"); var _display_content = str_HEAD; var str_NOT_NULL = dt.getValueByRow(row, "NOT_NULL"); var str_NUMERIC = dt.getValueByRow(row, "NUMERIC"); var str_TYPE = dt.getValueByRow(row, "TYPE"); var str_LEN = dt.getValueByRow(row, "LEN"); var str_display_name = this.str_display_name; var required = (str_NOT_NULL == "1"); var str_TAIL = dt.getValueByRow(row, "TAIL"); var element_disabled = dt.getValueByRow(row, "ELE_DISABLED"); var str_display_name = this.str_display_name; str_display_name = str_display_name.ReplaceAll("%namespace%", this.str_namespace); str_display_name = str_display_name.ReplaceAll("%FormName%", this.str_form_name); str_display_name = str_display_name.ReplaceAll("%EleName%", element_name); // -------------- 以下自訂 HTML Format -------------------------- if (str_TYPE == "label") { _display_content += ""; // -------------------------------------------------------------- _display_content = _display_content.ReplaceAll("%name%", element_name); _display_content = _display_content.ReplaceAll("%param%", element_param); _display_content += str_TAIL; if (required) { _display_content += this.required_mark; }; $(str_display_name).innerHTML = _display_content; $j("[name='" + element_name + "']").address({ // url: "/" + COMPANY_CODE + "/" + COMPANY_CODE + "/Common/Address.aspx" url: "/GE/GE/Common/Address.aspx" }); } else { _display_content += "
"; // -------------------------------------------------------------- _display_content = _display_content.ReplaceAll("%name%", element_name); _display_content = _display_content.ReplaceAll("%param%", element_param); _display_content += str_TAIL; if (required) { _display_content += this.required_mark; }; $(str_display_name).innerHTML = _display_content; $j("[name='" + element_name + "']").address({ // url: "/" + COMPANY_CODE + "/" + COMPANY_CODE + "/Common/Address.aspx" url: "/GE/GE/Common/Address.aspx" }); } // ----- 指定HTML後要做的事 if (required) { $j("[name='" + element_name + "']").css("border", "1px"); $j("[name='" + element_name + "']").css("border-color", "red"); }; // get_element_value 時呼叫 function getValue(ele_name) { var empty_flag = true; var jObject = $j("[name='" + element_name + "']").address("getValue"); $j.each(jObject, function (index, item) { if (item != null) empty_flag = false; } ) eval("var str = '" + JSON.stringify(jObject) + "';"); // var ret = JSON.stringify(jObject); // return empty_flag ? "" : encodeURIComponent(ret); return empty_flag ? "" : str; } // set_element_value 時呼叫 function setValue(ele_name, ele_value) { if (ele_value != "") $j("[name='" + element_name + "']").address("setValue", $j.parseJSON(ele_value)); else $j("[name='" + element_name + "']").address("setValue"); $j("[name='" + element_name + "']").one("complete", function (e) { $j("[name='" + element_name + "_label']").val($j("[name='" + element_name + "']").address("getStringValue")); } ); } // 加入共用控制項 controls.add(element_name, getValue, setValue); } //*************************************************************************************************** // schema_dt, detail_row, control_name 為 Grid 使用 this.create_textbox = function (row, element_name, element_param, str_url, str_element_list, schema_dt, detail_row, control_name, _value, _name) //*************************************************************************************************** { var required = false; if (typeof (schema_dt) == "undefined") { var detail = false var dt = this.dt; } else { var detail = true; var dt = schema_dt; } var str_HEAD = dt.getValueByRow(row, "HEAD"); var _display_content = new StringBuilder(); _display_content.Append(str_HEAD); var str_NOT_NULL = dt.getValueByRow(row, "NOT_NULL"); var str_NUMERIC = dt.getValueByRow(row, "NUMERIC"); var str_TYPE = dt.getValueByRow(row, "TYPE"); var str_DECIMAL = dt.getValueByRow(row, "DECIMAL"); var str_LEN = dt.getValueByRow(row, "LEN"); var str_TAIL = dt.getValueByRow(row, "TAIL"); var str_WATERMARK = dt.getValueByRow(row, "WATERMARK"); var str_URL = dt.getValueByRow(row, "URL"); str_URL = str_URL.ReplaceAll("%page_name%", str_page_name); var str_display_name = this.str_display_name; var element_id = ""; // if (detail) // element_id = element_name + "_" + detail_row.toString(); // else element_id = element_name; // var style = ""; switch (str_TYPE.toUpperCase()) { case "FILE": _display_content.Append("
"); _display_content.replace("%name%", element_name); str_display_name = str_display_name.ReplaceAll("%namespace%", this.str_namespace); str_display_name = str_display_name.ReplaceAll("%FormName%", this.str_form_name); str_display_name = str_display_name.ReplaceAll("%EleName%", element_name); $(str_display_name).innerHTML = _display_content.ToString(); function createUploader() { var uploader = new qq.FileUploader({ element: document.getElementById(element_name), action: str_URL }); } if (this.functions == null) this.functions = new Array(); this.functions.push(createUploader); return; break; case "String".toUpperCase(): element_param += " size='%len%' maxlength='%len%'"; element_param = element_param.ReplaceAll("%len%", str_LEN); break; case "Numeric".toUpperCase(): var _length = parseInt(str_LEN, 10); if (str_DECIMAL != "" && str_DECIMAL != "0") _length += 1; element_param += " size='%len%' maxlength='%len%'"; style += "text-align:right;" element_param += " onblur=\"this.value=FormatKendo(this.value, " + str_LEN + ",'" + str_DECIMAL + "');\""; element_param = element_param.ReplaceAll("%len%", _length); break; case "Integer".toUpperCase(): element_param += " size='%len%' maxlength='%len%'"; style += "text-align:right;" element_param = element_param.ReplaceAll("%len%", str_LEN); break; case "Date".toUpperCase(): element_param += " size='9' maxlength='9'"; element_param = element_param.ReplaceAll("%len%", "9"); element_param += " onblur=\"if (this.value.length==7) this.value=this.value.substring(0,3)+'/'+this.value.substring(3,5)+'/'+this.value.substring(5,7);\"" case "Time".toUpperCase(): element_param += " size='%len%' maxlength='%len%'"; element_param = element_param.ReplaceAll("%len%", "5"); break; case "DateTime".toUpperCase(): element_param += " size='20' maxlength='20'"; break; case "YearMon".toUpperCase(): element_param += " size='7' maxlength='7' pacleholder='yyyy/mm'"; break; default: element_param += " size='20' maxlength='20'"; break; } var element_disabled = dt.getValueByRow(row, "ELE_DISABLED"); if (str_NOT_NULL == "1" && (this.str_namespace == "display.Edit.form" || this.str_namespace == "display.AddNew.form" || this.str_namespace == "display.Search.form" || detail == true) && element_disabled != "1") { required = true; style += "border-color:red;"; } if (style != "") element_param += " style=\"" + style + "\""; str_display_name = str_display_name.ReplaceAll("%namespace%", this.str_namespace); str_display_name = str_display_name.ReplaceAll("%FormName%", this.str_form_name); str_display_name = str_display_name.ReplaceAll("%EleName%", element_name); if (str_TYPE.toUpperCase() == "FILE") { _display_content.Append(""); } else _display_content.Append(""); if (str_TYPE.toUpperCase() == "BUTTON" && element_disabled != "1") { _display_content.Append(" "); } if (str_TYPE.toUpperCase() == "Date".toUpperCase() && element_disabled != "1") { var t_func = function () { var year = (new Date()).getFullYear() + 10 - 1911; $j("[name='" + element_id + "']").datepicker({ dateFormat: 'Rmmdd', showOn: 'button', buttonImage: '/' + COMPANY_CODE + '/' + COMPANY_CODE + '/img/Calendar.png', buttonImageOnly: true, showButtonPanel: true, changeYear: true, // yearRange: "100:" + year, onSelect: function (dateText, inst) { calendarOnUpdate(this.id); }, onClose: function (dateText, inst) { calendarOnClose(this.id); } }); } this.push_function(t_func) controls.add(element_name, getValue, setValue); } if (str_TYPE.toUpperCase() == "YearMon".toUpperCase() && element_disabled != "1") { var t_func = function () { $j("[id='" + element_id + "']").kendoDatePicker({ format: 'yyyy/MM', start: "year", depth: "year" }); } this.push_function(t_func); } if (str_TYPE.toUpperCase() == "Date".toUpperCase() || str_TYPE.toUpperCase() == "YearMon".toUpperCase()) controls.add(element_name, getValue, setValue); if (str_TYPE.toUpperCase() == "Numeric".toUpperCase()) controls.add(element_name, getNumValue, setNumValue); _display_content.Append(str_TAIL); if (required) { _display_content.Append(this.required_mark); }; _display_content.replace("%name%", element_name); _display_content.replace("%param%", element_param); // 定義取得value的function function getValue(ele_name) { if ($(ele_name).value == str_WATERMARK) return ""; if (str_TYPE.toUpperCase() == "Date".toUpperCase() || str_TYPE.toUpperCase() == "YearMon".toUpperCase()) { return $(ele_name).value.ReplaceAll("/", "") } return $j.trim($(ele_name).value); } function setValue(ele_name, ele_value) { ele_value = $j.trim(ele_value); if (str_TYPE.toUpperCase() == "Date".toUpperCase()) { if (ele_value.length == 7) { $(ele_name).value = ele_value.toString().substring(0, 3) + "/" + ele_value.toString().substring(3, 5) + "/" + ele_value.toString().substring(5, 7); return; } else { $(ele_name).value = (ele_value == "" ? "" : ele_value.toString().substring(0, 9)); return; } } if (str_TYPE.toUpperCase() == "YearMon".toUpperCase()) { $(ele_name).value = (ele_value == "" ? "" : ele_value.toString().substring(0, 4) + "/" + ele_value.toString().substring(4, 6)); return; } $(ele_name).value = ele_value; } function getNumValue(ele_name) { return $(ele_name).value.ReplaceAll(",", ""); } function setNumValue(ele_name, ele_value) { $(ele_name).value = FormatKendo(ele_value, str_LEN, str_DECIMAL); } if (str_TYPE.toUpperCase() == "Date".toUpperCase()) { // alert (_display_content); } try { $(str_display_name).innerHTML = _display_content.ToString(); if ((str_TYPE.toUpperCase() == "Date".toUpperCase() || str_TYPE.toUpperCase() == "YearMon".toUpperCase()) && element_disabled != "1") t_func(); } catch (e) { alert(locales[l_key].clsForm.no_object + "display." + element_name); } } //*************************************************************************************************** this.create_html = function (row, element_name, element_param, str_url, str_element_list, schema_dt, detail_row, control_name, _value, _name) //*************************************************************************************************** { if (typeof(schema_dt) == "undefined") { var detail = false var dt = this.dt; } else { var detail = true; var dt = schema_dt; } var str_HEAD = dt.getValueByRow(row, "HEAD"); var _display_content = str_HEAD; var str_NOT_NULL = dt.getValueByRow(row, "NOT_NULL"); var str_NUMERIC = dt.getValueByRow(row, "NUMERIC"); var str_TYPE = dt.getValueByRow(row, "TYPE"); var str_LEN = dt.getValueByRow(row, "LEN"); var str_display_name = this.str_display_name; var required = false; var str_TAIL = dt.getValueByRow(row, "TAIL"); if (element_param == "") { switch (str_TYPE.toUpperCase()) { case "String".toUpperCase(): case "Numeric".toUpperCase(): element_param = "size='%len%' maxlength='%len%'"; element_param = element_param.ReplaceAll("%len%", str_LEN); break; case "DateTime".toUpperCase(): element_param = "size='20' maxlength='20'"; break; default: element_param = "size='20' maxlength='20'"; break; } var element_disabled = dt.getValueByRow(row, "ELE_DISABLED"); if (str_NOT_NULL == "1" && (this.str_namespace == "display.Edit.form" ||this.str_namespace == "display.AddNew.form") && element_disabled != "1") { element_param += " style=\"border-color:red\""; required = true; } } var str_display_name = this.str_display_name; str_display_name = str_display_name.ReplaceAll("%namespace%", this.str_namespace); str_display_name = str_display_name.ReplaceAll("%FormName%", this.str_form_name); str_display_name = str_display_name.ReplaceAll("%EleName%", element_name); _display_content += ""; _display_content = _display_content.ReplaceAll("%name%", element_name); _display_content = _display_content.ReplaceAll("%param%", element_param); _display_content += str_TAIL; if (required) { _display_content += this.required_mark; } ; $(str_display_name).innerHTML = _display_content; function getValue(ele_name) { return $j("[name='" + element_name + "']").html(); } function setValue(ele_name, ele_value) { $j("[name='" + element_name + "']").html(ele_value); } // 加入共用控制項 controls.add(element_name, getValue, setValue); } //*************************************************************************************************** this.create_daterange = function (row, element_name, element_param) //*************************************************************************************************** { var dt = this.dt; var str_HEAD = dt.getValueByRow(row, "HEAD"); var _display_content = "" + str_HEAD; var str_NOT_NULL = dt.getValueByRow(row, "NOT_NULL"); var str_NUMERIC = dt.getValueByRow(row, "NUMERIC"); var str_TYPE = dt.getValueByRow(row, "TYPE"); var str_DECIMAL = dt.getValueByRow(row, "DECIMAL"); var str_LEN = dt.getValueByRow(row, "LEN"); var str_display_name = this.str_display_name; var required = false; var str_TAIL = dt.getValueByRow(row, "TAIL"); var element_id = element_name + "1" ; var element_id2 = element_name + "2" ; if (element_param == "") { element_param = "size='10' maxlength='10'"; element_param = element_param.ReplaceAll("%len%", "10"); element_param += " onblur=\"if (this.value.length==8) this.value=this.value.substring(0,4)+'/'+this.value.substring(4,6)+'/'+this.value.substring(6,8);\""; var element_disabled = dt.getValueByRow(row, "ELE_DISABLED"); if (str_NOT_NULL == "1" && (this.str_namespace == "display.Edit.form" || this.str_namespace == "display.AddNew.form" || this.str_namespace == "display.Search.form") && element_disabled != "1") { required = true; //element_param += " style='border: 1px solid #f00;' "; } } str_display_name = str_display_name.ReplaceAll("%namespace%", this.str_namespace); str_display_name = str_display_name.ReplaceAll("%FormName%", this.str_form_name); str_display_name = str_display_name.ReplaceAll("%EleName%", element_name); _display_content += ""; var year = (new Date()).getFullYear() + 5; var t_func = function () { $j("[id='" + element_id + "']").kendoDatePicker({ format: "yyyy/MM/dd" }); if (required) { $j("[id='" + element_id + "']").parent().attr("style" ,"border: 1px solid #f00;") } } this.push_function (t_func) var t_func = function () { $j("[id='" + element_id2 + "']").kendoDatePicker({ format: "yyyy/MM/dd" }); if (required) { $j("[id='" + element_id2 + "']").parent().attr("style", "border: 1px solid #f00;") } } this.push_function (t_func) _display_content2 = _display_content; _display_content = _display_content.ReplaceAll("%name%", element_name + "1"); _display_content = _display_content.ReplaceAll("%param%", element_param); _display_content2 = _display_content2.ReplaceAll("%name%", element_name + "2"); _display_content2 = _display_content2.ReplaceAll("%param%", element_param); _display_content = _display_content + "~" + "  " + _display_content2; _display_content += str_TAIL + "" ; if (required) { _display_content += this.required_mark; } ; try { $(str_display_name).innerHTML = _display_content; } catch (e) { alert(locales[l_key].clsForm.no_object + "display." + element_name); } // 定義取得value的function function getValue(ele_name) { var _element = document.getElementsByName(ele_name+"1"); var _element2 = document.getElementsByName(ele_name+"2"); if (_element.length == 1 && _element2.length == 1) { return (_element[0].value.ReplaceAll("/", "") + "," + _element2[0].value.ReplaceAll("/", "")); } } function setValue(ele_name, ele_value) { if (ele_value == "") ele_value = ","; var values = ele_value.split(","); var _element = document.getElementsByName(ele_name+"1"); var _element2 = document.getElementsByName(ele_name+"2"); if (_element.length == 1 && _element2.length == 1) { _element[0].value = (values[0] == "" ? "" : values[0].toString().substring(0, 4) + "/" + values[0].toString().substring(4, 6) + "/" + values[0].toString().substring(6, 8)); _element2[0].value = (values[1] == "" ? "" : values[1].toString().substring(0, 4) + "/" + values[1].toString().substring(4, 6) + "/" + values[1].toString().substring(6, 8)); } } // 加入共用控制項 controls.add(element_name, getValue, setValue); } //*************************************************************************************************** this.create_time = function (row, element_name, element_param, str_url, str_element_list, schema_dt, detail_row, control_name, _value, _name) //*************************************************************************************************** { if (typeof(schema_dt) == "undefined") { var detail = false var dt = this.dt; } else { var detail = true; var dt = schema_dt; } var str_HEAD = dt.getValueByRow(row, "HEAD"); var _display_content = ""; var str_NOT_NULL = dt.getValueByRow(row, "NOT_NULL"); var str_NUMERIC = dt.getValueByRow(row, "NUMERIC"); var str_TYPE = dt.getValueByRow(row, "TYPE"); var str_DECIMAL = dt.getValueByRow(row, "DECIMAL"); var str_LEN = dt.getValueByRow(row, "LEN"); var str_display_name = this.str_display_name; var required = false; var str_TAIL = dt.getValueByRow(row, "TAIL"); var element_disabled = dt.getValueByRow(row, "ELE_DISABLED"); var len = dt.getValueByRow(row, "LEN"); element_param += " size='%len%' maxlength='%len%' "; if (str_NOT_NULL == "1" && (this.str_namespace == "display.Edit.form" ||this.str_namespace == "display.AddNew.form") && element_disabled != "1") { required = true; element_param += " style=\"border-color:red\""; } if (element_disabled == "1") { element_param += " disabled=\"true\""; } str_display_name = str_display_name.ReplaceAll("%namespace%", this.str_namespace); str_display_name = str_display_name.ReplaceAll("%FormName%", this.str_form_name); str_display_name = str_display_name.ReplaceAll("%EleName%", element_name); _display_content += ""; // ----------------------------------------------------------------------------- _display_content2 = _display_content; _display_content = _display_content.ReplaceAll("%events%", "onkeyup='autoTab(\"" + element_name + "_h\", \"" + element_name + "_m\",\"" + len + "\");'"); _display_content = _display_content.ReplaceAll("%name%", element_name + "_h"); _display_content = _display_content.ReplaceAll("%param%", element_param); _display_content2 = _display_content2.ReplaceAll("%name%", element_name + "_m"); _display_content2 = _display_content2.ReplaceAll("%param%", element_param); _display_content2 = _display_content2.ReplaceAll("%events%", ""); _display_content = _display_content.ReplaceAll("%len%", len); _display_content2 = _display_content2.ReplaceAll("%len%", 2); _display_content = _display_content + " : " + _display_content2; _display_content += str_TAIL; if (required) { _display_content += this.required_mark; } ; try { $(str_display_name).innerHTML = str_HEAD + _display_content; } catch (e) { alert(locales[l_key].clsForm.no_object + "display." + element_name); } // 定義取得value的function, 由 get_element_value 呼叫 function getValue(ele_name) { var _element = document.getElementsByName(ele_name+"_h"); var _element2 = document.getElementsByName(ele_name+"_m"); if (_element.length == 1 && _element2.length == 1) { if (_element[0].value == "" || _element2[0].value == "") return (""); else return (parseInt(_element[0].value,10) * 60 + parseInt(_element2[0].value,10)); } } function setValue(ele_name, ele_value) { var _element = document.getElementsByName(ele_name+"_h"); var _element2 = document.getElementsByName(ele_name+"_m"); if (_element.length == 1 && _element2.length == 1) { if (ele_value == "") { _element[0].value=""; _element2[0].value=""; } else { _element[0].value = Format(parseInt(ele_value / 60,10), "00"); _element2[0].value = Format(parseInt(ele_value % 60,10), "00"); } } } // 加入共用控制項 controls.add(element_name, getValue, setValue); } //*************************************************************************************************** this.create_iframe = function (row, element_name, element_param) //*************************************************************************************************** { var dt = this.dt; var str_URL = dt.getValueByRow(row, "URL"); var _display_content = ""; var str_NOT_NULL = dt.getValueByRow(row, "NOT_NULL"); var str_NUMERIC = dt.getValueByRow(row, "NUMERIC"); var str_TYPE = dt.getValueByRow(row, "TYPE"); var str_DECIMAL = dt.getValueByRow(row, "DECIMAL"); var LEN = dt.getValueByRow(row, "LEN"); var str_display_name = this.str_display_name; var required = false; var element_disabled = dt.getValueByRow(row, "ELE_DISABLED"); // element_param = "width='%width%' height='%height%'"; //element_param = element_param.ReplaceAll("%width%", LEN[0]); //element_param = element_param.ReplaceAll("%height%", LEN[1]); if (str_NOT_NULL == "1" && (this.str_namespace == "display.Edit.form" ||this.str_namespace == "display.AddNew.form") && element_disabled != "1") { required = true; element_param += " style=\"border-color:red\""; } if (element_disabled == "1") { element_param += " disabled=\"true\""; } str_display_name = str_display_name.ReplaceAll("%namespace%", this.str_namespace); str_display_name = str_display_name.ReplaceAll("%FormName%", this.str_form_name); str_display_name = str_display_name.ReplaceAll("%EleName%", element_name); // _display_content += ""; _display_content = "