var mok = {}; window.fdi = window.fdi || {}; console.clear(); console.log("begin fdi"); window.fdi.log = function(message){ console.log(message); } //do a Get Request verbose or nometadata window.fdi.get = function (requestUrl, siteUrl = null, odata = "verbose") { var request = new XMLHttpRequest(); // Return it as a Promise return new Promise(function (resolve, reject) { // Setup our listener to process compeleted requests request.onreadystatechange = function () { // Only run if the request is complete if (request.readyState !== 4) return; window.fdi.log("request.status:" + request.status); // Process the response if (request.status >= 200 && request.status < 300) { // If successful console.log("request.responseText"); console.log(request.responseText); var ret = { status: request.status, result: JSON.parse(request.responseText), }; resolve(ret); } else { // If failed var fdiError = document.getElementById("fdiError"); fdiError.innerText = "an error occured status: " + request.status + " statusText " +request.responseText; reject({ status: request.status, statusText: request.responseText, }); } }; var usedUrl = requestUrl; if ( siteUrl == null && _spPageContextInfo !== "undefined" && _spPageContextInfo != null ) { usedUrl = _spPageContextInfo.webAbsoluteUrl + requestUrl; } else if (siteUrl != null) { usedUrl = siteUrl + requestUrl; } window.fdi.log("request GET url : " + usedUrl); // Setup our HTTP request request.open("GET", usedUrl); request.setRequestHeader("Accept", "application/json; odata=" + odata); //nometadata // Send the request request.send(); }); }; //do a Get Request window.fdi.post = function (requestUrl, siteUrl = null, odata = "verbose") { var tt = window.fdi.get( "/_api/contextinfo", siteUrl ); tt.then( function (data) { console.log("get contextinfo"); console.dir(data); var request = new XMLHttpRequest(); // Return it as a Promise return new Promise(function (resolve, reject, odata) { // Setup our listener to process compeleted requests request.onreadystatechange = function () { // Only run if the request is complete if (request.readyState !== 4) return; window.fdi.log("request.status:" + request.status); // Process the response if (request.status >= 200 && request.status < 300) { // If successful var ret = { status: request.status, result: JSON.parse(request.responseText), }; resolve(ret); } else { // If failed reject({ status: request.status, statusText: request.statusText, }); } }; var usedUrl = requestUrl; if ( siteUrl == null && _spPageContextInfo !== "undefined" && _spPageContextInfo != null ) { usedUrl = _spPageContextInfo.webAbsoluteUrl + requestUrl; } else if (siteUrl != null) { usedUrl = siteUrl + requestUrl; } window.fdi.log("request GET url : " + usedUrl); // Setup our HTTP request request.open("POST", usedUrl); request.setRequestHeader("Accept", "application/json; odata=" + odata); //nometadata // Send the request request.send(); }); }, function () { console.log("an error occured"); } ); }; var fdi = fdi || {}; fdi.fdilog = function(msg){ console.log(msg); if(msg === typeof(string)) console.dir(msg); } fdi.fdidebuglog = function(msg){ console.log(msg); if(msg === typeof(string)) console.dir(msg); } fdi.isNullOrEmpty = function(str){ if(str === typeof(undefined)){ return true; } if(str == null){ return true; } try{ if(str.trim() == ""){ return true; } } catch(e){ debugger } return false; } fdi.isNullOrEmpty = function(str){ if(str === typeof(undefined)){ return true; } if(str == null){ return true; } try{ if(str.trim() == ""){ return true; } } catch(e){ debugger } return false; } //tag html fdi.createTable = function( columns, datas, target, backGroundColor, showHidden=true){ if(fdi.isNullOrEmpty(target)) return; // var targetDiv = document.getElementsByClassName("SPCanvas"); // targetDiv[0]; var targetDiv = document.getElementById(target); targetDiv.innerHTML = ""; var tbl = document.createElement('table'); var att = document.createAttribute("class"); //var thead = document.createElement('thead'); var tr1 = document.createElement('tr'); var columnArray = columns.split(","); var att = null; for(var i = 0 ; i < columnArray.length ; i++){ var th = document.createElement('th'); fdi.fdidebuglog(columnArray[i]); th.innerText = columnArray[i]; att = document.createAttribute("style"); att.value = "border:1px solid #000;width:230px"; th.setAttributeNode(att); tr1.appendChild(th); } tbl.appendChild(tr1); for(var j = 0 ; j < datas.length ; j++){ if(showHidden == false && datas[j].Hidden) continue; var tr2 = document.createElement('tr'); //background-color: #EEEEEE if(j % 2 == 0 && typeof(backGroundColor) !== "undefined"){ att = document.createAttribute("style"); att.value = "background-color:#EEEEEE;"; tr2.setAttributeNode(att); } tr2.setAttribute("onclick","addSelectedField('selectedFields', '" + datas[j].InternalName+ "');"); for(var i = 0 ; i < columnArray.length ; i++){ var td = document.createElement('td'); if(columnArray[i].indexOf('/') == -1) td.innerText = datas[j][columnArray[i]]; else{ var tb = columnArray[i].split('/'); td.innerText = datas[j][tb[0]][tb[1]]; } att = document.createAttribute("style"); att.value = "border:1px solid #000;width:230px"; td.setAttributeNode(att); tr2.appendChild(td); } tbl.appendChild(tr2); } targetDiv.appendChild(tbl); } //tag html fdi.createTableOneColumn = function(data, columns, target, additionallCols){ if(fdi.isNullOrEmpty(target)) return; var targetDiv = document.getElementById(target); targetDiv.innerHTML = ""; var tbl = document.createElement('table'); //var thead = document.createElement('thead'); var columnArray = columns.split(","); if( typeof(additionallCols) !== typeof(undefined)) var columndisplay = additionallCols.split(","); for(var i = 0 ; i < columnArray.length ; i++){ if(data[columnArray[i]] === typeof(undefined)) continue; if(data[columnArray[i]] == null) continue; var tr1 = document.createElement('tr'); var th = document.createElement('td'); fdi.fdidebuglog(columnArray[i]); th.innerText = columnArray[i]; var att = document.createAttribute("style"); att.value = "border:1px solid #000;"; th.setAttributeNode(att); tr1.appendChild(th); if(additionallCols !== typeof(undefined)){ th = document.createElement('td'); fdi.fdidebuglog(columndisplay[i]); th.innerText = columndisplay[i]; att = document.createAttribute("style"); att.value = "border:1px solid #000;width:230px"; th.setAttributeNode(att); tr1.appendChild(th); } th = document.createElement('td'); fdi.fdidebuglog(data[columnArray[i]]); th.innerText = data[columnArray[i]]; att = document.createAttribute("style"); att.value = "border:1px solid #000;"; th.setAttributeNode(att); tr1.appendChild(th); tbl.appendChild(tr1); } targetDiv.appendChild(tbl); } function addSelectedField(target, fieldName){ var target = document.getElementById(target); target.value += fieldName + ","; } function getFieldByInternalName(fields, fieldName){ for(var i = 0 ; i < fields.length ; i++){ var field = fields[i]; if(field.InternalName == fieldName) return field; } var fdiError = document.getElementById("fdiError"); fdiError.innerText = "getFieldByInternalName fieldName '" + fieldName + "' not found"; throw "getFieldByInternalName fieldName '" + fieldName + "' not found"; } function getDatasToDisplay(datas, fields, fieldsToDisplay){ var fieldsToDisplays = fieldsToDisplay.split(","); var ret = {}; for(var i = 0 ; i < fieldsToDisplays.length ; i++){ var fieldName = fieldsToDisplays[i]; if(fieldName.indexOf("/") != -1){ fieldName = fieldName.split('/'); console.log("fieldName"); console.log(fieldName[0]); console.log(datas[fieldName[0]][fieldName[1]]); ret[fieldName[0]] = {}; ret[fieldName[0]] = getFieldByInternalName(fields, fieldName[0]); ret[fieldName[0]].data = datas[fieldName[0]][fieldName[1]]; } else{ console.log("fieldName"); console.log(fieldName); console.log(datas[fieldName]); ret[fieldName] = {}; ret[fieldName] = getFieldByInternalName(fields, fieldName); ret[fieldName].data = datas[fieldName] } } console.dir(ret); var ret1 = []; ret1.push(ret); console.dir(ret1); return ret; } //tag html fdi.createTableOneColumn2 = function(data, columns, selectFields, target){ if(fdi.isNullOrEmpty(target)) return; //var targetDiv = document.getElementById("fdiTarget"); var targetDiv = document.getElementById(target); targetDiv.innerHTML = ""; var tbl = document.createElement('table'); var columnArray = columns.split(","); var fields = selectFields.split(","); var tr1 = document.createElement('tr'); for(var i = 0 ; i < columnArray.length ; i++){ var th = document.createElement('th'); fdi.fdidebuglog(columnArray[i]); th.innerText = columnArray[i]; var att = document.createAttribute("style"); att.value = "border:1px solid #000;"; th.setAttributeNode(att); tr1.appendChild(th); } tbl.appendChild(tr1); for(var j = 0 ; j < fields.length ; j++){ var tr1 = document.createElement('tr'); if(j % 2 == 0 ){ att = document.createAttribute("style"); att.value = "background-color:#EEEEEE;"; tr1.setAttributeNode(att); } for(var i = 0 ; i < columnArray.length ; i++){ var th = document.createElement('td'); if(fields[j].indexOf("/") == -1) th.innerText = data[fields[j]][columnArray[i]]; else{ var field = fields[j].split("/"); if(columnArray[i] != "data") th.innerText = data[field[0]][columnArray[i]]; else th.innerText = data[field[0]][columnArray[i]][field[1]]; } var att = document.createAttribute("style"); att.value = "border:1px solid #000;"; th.setAttributeNode(att); tr1.appendChild(th); } tbl.appendChild(tr1); } targetDiv.appendChild(tbl); } var mokData = {}; function test1(){ //fdi.createTable = function( columns, datas, target, backGroundColor) var fdiError = document.getElementById("fdiError"); fdiError.innerText = ""; var showHidden = document.getElementById("showHidden"); var justSeleted = getDatasToDisplay(mokData, mok.value, "Referenced_x0020_Supplier,Requester"); fdi.createTableOneColumn2( justSeleted, "Title,InternalName,TypeAsString,Hidden,Required,data", "Referenced_x0020_Supplier,Requester/Name", "fdiTarget1"); } function getListFields(){ var fdiError = document.getElementById("fdiError"); fdiError.innerText = ""; var showHidden = document.getElementById("showHidden"); var selectedList = document.getElementById("selectedList"); console.log(" 1 before get"); var tt = window.fdi.get("/_api/web/lists/getbytitle('"+selectedList.value+"')/fields?$select=InternalName,Title,Hidden,TypeAsString,Group,Required&$orderby=Title asc", null, "nometadata");//fdi 1 tt.then(function(data){ console.log("then 2 after get"); console.dir(data); mok = data.result; fdi.createTable( "Title,InternalName,TypeAsString,Hidden,Required,Group", mok.value, "fdiTarget1", "#11999638",showHidden.checked); },function (){ console.log("an error occured"); fdiError.innerText += " | an error occured"; }); } function queryList(){ var fdiError = document.getElementById("fdiError"); fdiError.innerText = ""; console.log(" 1 before get"); var selectedList = document.getElementById("selectedList"); var selectedFields = document.getElementById("selectedFields"); var itemId = document.getElementById("itemId"); var queryFields = document.getElementById("queryFields"); var expandFields = document.getElementById("expandFields"); var tt = window.fdi.get("/_api/web/lists/getbytitle('"+selectedList.value+"')/items("+itemId.value+")?$select=" + queryFields.value + expandFields.value, null, "nometadata");//fdi 1 tt.then(function(data){ console.log("then 2 after get"); mokData = data; var justSeleted = getDatasToDisplay(mokData.result, mok.value, queryFields.value); console.dir(justSeleted); fdi.createTableOneColumn2( justSeleted, "Title,InternalName,TypeAsString,Hidden,Required,data", selectedFields.value, "fdiTarget1");//,Requester/Name,Approver_x0020_1/Name },function (){ fdiError.innerText += " | an error occured"; }); }