var imnc_filecontent; var imnc_xmlresponse; var imnc_sendobjlist; var addtitle, addmember, addmethod, addpercent, adddue, addlate, addsub, addcomment; function NtuCeibaEvent(){ this.title = ""; this.member = ""; this.method = ""; this.percent = ""; this.duedate = new Date(); this.late = false; this.subdate = ""; this.comment = ""; this.red = false; this.enabled = true; this.key = null; } function imnc_init(){ status_bar_clear(); document.getElementById("imstepforminit").style.display = "none"; document.getElementById("imntuceibainfo").style.display = "block"; } function imnc_deinit(){ document.getElementById("imstepforminit").style.display = "block"; document.getElementById("imntuceibainfo").style.display = "none"; } function imnc_checkopt(){ document.getElementById("imntuceibainfo").style.display = "block"; document.getElementById("imntuceibacheck").style.display = "none"; } function imnc_argok(){ status_bar_clear(); if(document.getElementById("nclogin").checked){ imnc_login(); }else if(document.getElementById("ncupload").checked){ imnc_upload(); }else{ status_bar_warning("請至少選取一種資料取得方式!"); } } function imnc_upload(){ var fileldobj; var filereader; fileldobj = document.getElementById("ncfile"); if(window.FileReader){ /* 支援 HTML5 File API 的話 */ if(fileldobj.files.length <= 0){ status_bar_warning("請選擇檔案!"); return; } filereader = new FileReader(); filereader.onloadend = function(evt){ imnc_filecontent = evt.target.result; imnc_upload_send(); } filereader.readAsText(fileldobj.files[0], document.getElementById("ncfileenc").value); }else{ status_bar_warning("抱歉,尚未支援您的瀏覽器"); return; } } function imnc_upload_send(){ var rq; var sendmsg; var viewonly = false; addtitle = false; addmember = false; addmethod = false; addpercent = false; adddue = false; addlate = false; addsub = false; addcomment = false; rq = create_xmlhttp_object(); rq.open('POST', '/access/imnc'); rq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); sendmsg = "file=" + encodeURIComponent(imnc_filecontent); if(document.getElementById("ncviewagain").checked){ viewonly = true; sendmsg += "&viewonly=1"; } if(document.getElementById("ncmerge").checked){ sendmsg += "&merge=1"; if(document.getElementById("ncdupupdate").checked){ sendmsg += "&overwrite=1"; } } if(document.getElementById("ncaddtitle").checked){ addtitle = true; sendmsg += "&addtitle=1"; } if(document.getElementById("ncaddmember").checked){ addmember = true; sendmsg += "&addmember=1"; } if(document.getElementById("ncaddmethod").checked){ addmethod = true; sendmsg += "&addmethod=1"; } if(document.getElementById("ncaddpercent").checked){ addpercent = true; sendmsg += "&addpercent=1"; } if(document.getElementById("ncadddue").checked){ adddue = true; sendmsg += "&adddue=1"; } if(document.getElementById("ncaddlate").checked){ addlate = true; sendmsg += "&addlate=1"; } if(document.getElementById("ncaddsub").checked){ addsub = true; sendmsg += "&addsub=1"; } if(document.getElementById("ncaddcomment").checked){ addcomment = true; sendmsg += "&addcomment=1"; } status_bar_set("送出連線要求......"); rq.send(sendmsg); rq.onreadystatechange = function(){ var completemsg; var textmsgtuple; if(rq.readyState == 4){ if(rq.status == 200){ status_bar_clear(); if(viewonly){ imnc_xmlresponse = rq.responseXML; imnc_review(); }else{ completemsg = rq.responseText; textmsgtuple = completemsg.split(" "); document.getElementById("imntuceibainfo").style.display = "none"; document.getElementById("imntuceibacomplete").style.display = "block"; document.getElementById("ncimportresult").innerHTML = "臺大 CEIBA 資料總數:" + textmsgtuple[0] + "<br>" + "新增的資料數量:" + textmsgtuple[1] + "<br>" + "取代的資料數量:" + textmsgtuple[2] + "<br>" } }else{ status_bar_warning("伺服器回傳 " + rq.status.toString() + " 錯誤"); } } } } function imnc_review(){ var i; var ncevent; var calevtobj; var tableobj; var newrow; var newdata; var newinput1, newinput2, newinput3; var newtextnode; var univar; /* 萬用暫存變數 */ var defaultenabled; /* 預設情況下要不要插入這項目 */ var dyear, dmonth, ddate, dhour; var eventtitle, eventcontent; var strdate, strtime; document.getElementById("imntuceibainfo").style.display = "none"; document.getElementById("imntuceibacheck").style.display = "block"; ncevent = imnc_xmlresponse.documentElement.getElementsByTagName("ncevent"); if(ncevent.length == 0){ document.getElementById("ncdatalisttitle").innerHTML = "沒有可匯入的資料"; document.getElementById("ncdatalist").style.display = "none"; return; } tableobj = document.getElementById("ncdatalist"); imnc_sendobjlist = new Array(); try{ while(true){ tableobj.removeChild(tableobj.childNodes[2]); } }catch(err){} for(i=0; i<ncevent.length; i++){ /* 新增一個 CalEvent 物件 */ calevtobj = new CalEvent(); calevtobj.datafrom = "ntuceiba"; /* 先抓取 key 和 enabled 相關資料 */ univar = XMLGetDataByTagName(ncevent[i], "key"); if(univar != ""){ calevtobj.key = univar; } univar = XMLGetDataByTagName(ncevent[i], "enabled"); if(univar == "False"){ defaultenabled = false; }else{ defaultenabled = true; } /* 加入編號 */ newrow = document.createElement("tr"); newdata = document.createElement("td"); newdata.innerHTML = (i+1).toString(); newdata.style.textAlign = "right"; newrow.appendChild(newdata); /* 加入動作 */ newdata = document.createElement("td"); newinput1 = document.createElement("input"); newinput1.setAttribute("id", "imncradio" + i.toString() + "create"); newinput1.setAttribute("name", "imncradio" + i.toString()); newinput1.setAttribute("type", "radio"); newdata.appendChild(newinput1); newtextnode = document.createTextNode("新增"); newdata.appendChild(newtextnode); newinput2 = document.createElement("input"); newinput2.setAttribute("id", "imncradio" + i.toString() + "ignore"); newinput2.setAttribute("name", "imncradio" + i.toString()); newinput2.setAttribute("type", "radio"); newdata.appendChild(newinput2); newtextnode = document.createTextNode("忽略"); newdata.appendChild(newtextnode); newinput3 = document.createElement("input"); newinput3.setAttribute("id", "imncradio" + i.toString() + "update"); newinput3.setAttribute("name", "imncradio" + i.toString()); newinput3.setAttribute("type", "radio"); newdata.appendChild(newinput3); newtextnode = document.createTextNode("取代"); newdata.appendChild(newtextnode); newrow.appendChild(newdata); /* 設定 radio button 狀態 */ if(calevtobj.key == null){ newinput3.setAttribute("disabled", 'true'); if(defaultenabled){ newinput1.checked = true; }else{ newinput2.checked = true; } }else{ newinput3.checked = true; } duedate = new Date(); dyear = parseInt(XMLGetDataByTagName(ncevent[i], "dueyear")); dmonth = parseInt(XMLGetDataByTagName(ncevent[i], "duemonth")); ddate = parseInt(XMLGetDataByTagName(ncevent[i], "duedate")); dhour = parseInt(XMLGetDataByTagName(ncevent[i], "duehour")); calevtobj.datetime = duedate; calevtobj.datetime.setFullYear(dyear, dmonth - 1, ddate); calevtobj.datetime.setHours(dhour, 0, 0); strdate = calevtobj.datetime.toISOString().split('T'); strtime = strdate[1].split('.')[0]; strdate = strdate[0]; newdata = document.createElement("td"); newtextnode = document.createTextNode(strdate); newdata.appendChild(newtextnode); newrow.appendChild(newdata); newdata = document.createElement("td"); newtextnode = document.createTextNode(strtime); newdata.appendChild(newtextnode); newrow.appendChild(newdata); eventtitle = XMLGetDataByTagName(ncevent[i], "title"); calevtobj.title = eventtitle; newdata = document.createElement("td"); newtextnode = document.createTextNode(eventtitle); newdata.appendChild(newtextnode); newrow.appendChild(newdata); eventcontent = ""; if(document.getElementById("ncaddmember").checked){ eventcontent += "名稱:" + eventtitle + "\n"; } univar = XMLGetDataByTagName(ncevent[i], "member"); newdata = document.createElement("td"); newtextnode = document.createTextNode(univar); newdata.appendChild(newtextnode); newrow.appendChild(newdata); if(document.getElementById("ncaddmember").checked){ eventcontent += "成員:" + univar + "\n"; } univar = XMLGetDataByTagName(ncevent[i], "method"); newdata = document.createElement("td"); newtextnode = document.createTextNode(univar); newdata.appendChild(newtextnode); newrow.appendChild(newdata); if(document.getElementById("ncaddmethod").checked){ eventcontent += "繳交方法:" + univar + "\n"; } univar = XMLGetDataByTagName(ncevent[i], "percent"); newdata = document.createElement("td"); newtextnode = document.createTextNode(univar); newdata.appendChild(newtextnode); newrow.appendChild(newdata); if(document.getElementById("ncaddpercent").checked){ eventcontent += "成績比重:" + univar + "\n"; } if(document.getElementById("ncadddue").checked){ eventcontent += "繳交期限:" + strdate + " " + strtime + "\n"; } univar = XMLGetDataByTagName(ncevent[i], "late"); univar = univar == 'True' ? "可以" : "不可以"; newdata = document.createElement("td"); newtextnode = document.createTextNode(univar); newdata.appendChild(newtextnode); newrow.appendChild(newdata); if(document.getElementById("ncaddlate").checked){ eventcontent += "逾期繳交:" + univar + "\n"; } univar = XMLGetDataByTagName(ncevent[i], "sub"); newdata = document.createElement("td"); newtextnode = document.createTextNode(univar); newdata.appendChild(newtextnode); newrow.appendChild(newdata); if(document.getElementById("ncaddsub").checked){ eventcontent += "繳交日期:" + univar + "\n"; } univar = XMLGetDataByTagName(ncevent[i], "comment"); newdata = document.createElement("td"); newtextnode = document.createTextNode(univar); newdata.appendChild(newtextnode); newrow.appendChild(newdata); if(document.getElementById("ncaddcomment").checked){ eventcontent += "作業評語:" + univar + "\n"; } /* 完成! */ calevtobj.content = eventcontent; tableobj.appendChild(newrow); imnc_sendobjlist.push(calevtobj); } } function imnc_singlesend(){ var i; document.getElementById("imntuceibacheck").style.display = "none"; document.getElementById("imntuceibacomplete").style.display = "block"; for(i=0; i<imnc_sendobjlist.length; i++){ if(!document.getElementById("imncradio" + i.toString() + "ignore").checked){ if(document.getElementById("imncradio" + i.toString() + "create").checked){ imnc_sendobjlist.key = null; } inccal_send(imnc_sendobjlist[i], function(keytrash, secdata){ var resultobj = document.getElementById("ncimportresult"); var newbr; var newtext; newtext = document.createTextNode("已儲存第 " + secdata.toString() + " 項資料"); newbr = document.createElement("br"); resultobj.appendChild(newtext); resultobj.appendChild(newbr); }, i+1); } } status_bar_set("匯入工作已完成"); } function imnc_login(){ alert("Function not implemented"); }