/* * 备品借出申请 */ (function(win) { //******************************************************************************************************* // パラメータ //******************************************************************************************************* TEXT_AREA_ID = "00N10000003MspG"; LOCAL_HREF = document.location.href; SPLIT_ROW = "\n"; SPLIT_COL1 = ","; SPLIT_COL2 = "("; SPLIT_COL3 = ")"; //******************************************************************************************************* // textareaをtableに変換 //******************************************************************************************************* win._sfMakeTextAreaTable = function() { var ins = document.getElementById(TEXT_AREA_ID); var insVal = ins.value; var tbl = document.createElement("table"); // ヘッダ作成 var th1 = document.createElement("th");th1.style.width="150px"; var th2 = document.createElement("th");th2.style.width="30px"; var th3 = document.createElement("th");th3.style.width="150px"; th1.innerHTML = "型式"; th2.innerHTML = "数量"; th3.innerHTML = "备注"; tbl.appendChild(th1); tbl.appendChild(th2); tbl.appendChild(th3); var tr; var td; if (insVal != "") { var rows = insVal.split(SPLIT_ROW); for (var i = 0; i < rows.length; i++) { tr = document.createElement("tr"); var idx1 = rows[i].indexOf(SPLIT_COL1); if (idx1 > 0) { var col1 = rows[i].substring(0, idx1); var col2 = rows[i].substring(idx1 + 1); td = document.createElement("td"); td.innerHTML = ""; tr.appendChild(td); var cols = col2.split(SPLIT_COL2); td = document.createElement("td"); td.innerHTML = ""; tr.appendChild(td); if (cols.length > 1) { td = document.createElement("td"); td.innerHTML = ""; tr.appendChild(td); } else { td = document.createElement("td"); td.innerHTML = ""; tr.appendChild(td); } } else { td = document.createElement("td"); td.innerHTML = ""; tr.appendChild(td); td = document.createElement("td"); td.innerHTML = ""; tr.appendChild(td); td = document.createElement("td"); td.innerHTML = ""; tr.appendChild(td); } tbl.appendChild(tr); } } // 後ろ常に五行追加 for (var i = 0; i < 5; i++) { tr = document.createElement("tr"); for (var j = 0; j < 3; j++) { td = document.createElement("td"); td.innerHTML = ""; tr.appendChild(td); } tbl.appendChild(tr); } tbl.id = ins.id+"_new"; tbl.name = ins.name; var insertedNode = ins.parentNode.insertBefore(tbl, ins); ins.style.display="none"; // インラインDialogの場合 var origEnter = sfdcPage.getDialogById('InlineEditDialog').enter; var origCancel = sfdcPage.getDialogById('InlineEditDialog').cancel; var inlineEnter = function() { sfdcPage.getDialogById('InlineEditDialog').enter = origEnter; sfdcPage.getDialogById('InlineEditDialog').cancel = origCancel; _sfMakeTextAreaStr(); if (sfdcPage.getInlineEditData().closeCurrentField()) { sfdcPage.getDialogById("InlineEditDialog").hide(); } ins.style.display="block"; ins.parentNode.removeChild(insertedNode); } var inlineCancel = function() { sfdcPage.getDialogById('InlineEditDialog').enter = origEnter; sfdcPage.getDialogById('InlineEditDialog').cancel = origCancel; ins.value = insVal; if (sfdcPage.getInlineEditData().closeCurrentField()) { sfdcPage.getDialogById("InlineEditDialog").hide(); } ins.style.display="block"; ins.parentNode.removeChild(insertedNode); } sfdcPage.getDialogById('InlineEditDialog').enter = inlineEnter; sfdcPage.getDialogById('InlineEditDialog').cancel = inlineCancel; // インラインDialogの場合、OKとキャンセルボタンがあります。 var e = document.getElementById("InlineEditDialog_buttons"); if (e) { if (e = e.firstChild) { e.setAttribute("onclick", "sfdcPage.getDialogById('InlineEditDialog').enter();"); } if (e = e.nextSibling) { e.setAttribute("onclick", "sfdcPage.getDialogById('InlineEditDialog').cancel();"); } } } //******************************************************************************************************* // tableの値をtextareaに書き戻す //******************************************************************************************************* win._sfMakeTextAreaStr = function() { var tbl = document.getElementById(TEXT_AREA_ID + "_new"); var trs = tbl.getElementsByTagName('tr'); var finalStr = ""; for (var i = 0; i < trs.length; i++) { for (var j = 0; j < trs[i].cells.length; j++) { var cell = trs[i].cells[j]; var cellVal = cell.childNodes[0].value; if (j == 0) { if (cellVal == "") break;; finalStr += cellVal; } if (j == 1) { if (cellVal == "") cellVal = 0; finalStr += SPLIT_COL1 + cellVal; } if (j == 2) { if (cellVal == "") { finalStr += SPLIT_ROW; } else { finalStr += SPLIT_COL2 + cellVal + SPLIT_COL3 + SPLIT_ROW; } } } } // trim finalStr = finalStr.replace(/(^\s+)|(\s+$)/g, ""); // テキストエリア項目に書き戻す document.getElementById(TEXT_AREA_ID).value = finalStr; } //******************************************************************************************************* // 初期処理 //******************************************************************************************************* var run = function() { if (LOCAL_HREF.match(/\/e/)) { _sfMakeTextAreaTable(); } else { // インライン編集の対応 var originalEvent = document.getElementById(TEXT_AREA_ID + "_ilecell"); if (originalEvent) { addEvent(originalEvent, "dblclick", function(elems) { return function(deepDataAndEvents) { if (win.sfdcPage) { if (win.sfdcPage.hasRun) { sfdcPage.dblClickField(deepDataAndEvents, elems); setTimeout("_sfMakeTextAreaTable()", 500); } } }; }(originalEvent)); addEvent(originalEvent, "keypress", function(elems) { return function(e) { if (win.sfdcPage) { if (win.sfdcPage.hasRun && (e && e.keyCode == KEY_ENTER)) { sfdcPage.dblClickField(e, elems); setTimeout("_sfMakeTextAreaTable()", 500); } } }; }(originalEvent)); } } } if (win.sfdcPage) { sfdcPage.appendToOnloadQueue(function() { if (LOCAL_HREF.match(/\/a0t/)) { run(); } }); } })(window);