PortaleOrdiniGruppo/SPAdministration/spextender/table_from.htm
2025-03-24 15:28:26 +01:00

249 lines
7.6 KiB
HTML

<html>
<head>
<title>Table properties</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<link rel="stylesheet" href="extender.css" type="text/css">
<script src="../stdFunctions.js"></script>
<script src="../spadministration_help.js"></script>
<script src="../controls.js"></script>
<script>
function ManageKeys(e) {
if(e.keyCode==13) SetTableAndField();
else if(e.keyCode==27) CloseWindow();
}
QueryString.keys = new Array();
QueryString.values = new Array();
function QueryString(key) {
var value = null;
for (var i=0;i<QueryString.keys.length;i++) {
if (QueryString.keys[i]==key) {
value = QueryString.values[i];
break;
}
}
return value;
}
function QueryString_Parse() {
var query = window.location.search.substring(1);
var pairs = query.split("&");
for (var i=0;i<pairs.length;i++) {
var pos = pairs[i].indexOf('=');
if (pos >= 0) {
var argname = pairs[i].substring(0,pos);
var value = pairs[i].substring(pos+1);
QueryString.keys[QueryString.keys.length] = argname;
QueryString.values[QueryString.values.length] = value;
}
}
}
var action;
function DoLoad(){
QueryString_Parse();
action=QueryString('action')
var listServers=new JSURL("../servlet/SPExtenderProxy?action=servers", true).Response();
listServers = JSON.parse(listServers);
// if (listServers.length==0){
// document.getElementById('import_table').innerHTML='No external server found';
// }
// else {
var optionsServer="<option value='default'>Application DB Server</option>",optionsDatabase="<option value='default'> </option>";
for (var i=0; i<listServers.length; i++){
optionsServer+="<option value='"+listServers[i].ODBCDataSource+"'>"+listServers[i].serverName+"</option>"
optionsDatabase+="<option value='"+listServers[i].serverName+"'>"+listServers[i].serverName+"</option>"
}
document.getElementById("connection").innerHTML=optionsServer;
if (action=='table'){
document.getElementById("database_server").innerHTML=optionsDatabase;
document.getElementById("div_mergeField").style.display='none'
}
else if (action=='field')
document.getElementById("div_db_server").style.display='none'
// }
}
function GetTableList(){
var server=document.getElementById("connection").value;
var listTable=new JSURL("../servlet/SPExtenderProxy?action=tables&server="+URLenc(server), true).Response();
if (listTable=="-1"){
document.getElementById("error").innerHTML="Need Administrator User";
}
else {
// listTable=listTable.split(",");
listTable = JSON.parse(listTable);
var optionsTables=""
for (var i=0; i<listTable.length; i++){
optionsTables+="<option value='"+listTable[i]+"'>"+listTable[i]+"</option>"
}
document.getElementById("table").innerHTML=optionsTables;
}
}
var column=[];
function GetColumnList(){
var server=document.getElementById("connection").value;
var table=document.getElementById("table").value;
if (!Empty(server) && !Empty(table)){
var listColumn=new JSURL("../servlet/SPExtenderProxy?action=columns&server="+URLenc(server)+"&table="+URLenc(table), true).Response();
column=JSON.parse(listColumn)
var htmlColumnName="",htmlColumnType=""
for (var i=0; i<column.length; i++){
htmlColumnName+="<li> "+column[i].name+" </li>"
htmlColumnType+="<li> "+column[i].type+" </li>"
}
document.getElementById("fieldName").innerHTML=htmlColumnName
document.getElementById("fieldType").innerHTML=htmlColumnType
}
}
function SetTableAndField(){
var tableName=document.getElementById("table").value;
if (!Empty(tableName)){
if (action=='table'){
var table = new Array(tableName,
tableName,
false, // company
'', //check
false,
document.getElementById('database_server').value) //external
GetOpener().UpdateTable(table, 'add');
GetOpener().selectTable(GetOpener().allTables.length-1);
}
var fields=[]
for (var i=0; i<column.length; i++){
var type = column[i].type.charAt(0);
var len = 10;
var dec = 0;
switch (type){
case 'C':
len=parseInt(column[i].type.substr(2,column[i].type.length-3),10)
break;
case 'N':
var len_dec=column[i].type.substr(2,column[i].type.length-3).split(',')
len=parseInt(len_dec[0],10)
dec=parseInt(len_dec[1],10)
break;
case 'D':
len=8;
break;
case 'T':
len=14;
break;
case 'L':
len=1;
break;
case 'M':
len=10;
break;
}
var field = new Array(column[i].name,
type,
len,
dec,
"", // comment
"", //check
"", //default
true,
""); //key
fields.push(field);
if (action=='table')
GetOpener().UpdateField(field, 'add' , GetOpener().extendedItems.length-1,0,GetOpener().allTables.length-1)
}
var merge=document.getElementById('merge_field').checked
if (action=='field'){
if (merge)
GetOpener().MergeFields(fields, QueryString('et'),0,QueryString('t'))
else
GetOpener().ReplaceFields(fields, QueryString('et'),0,QueryString('t'))
}
WindowClose();
}
}
</script>
<style>
body {
width: 430px;
}
#import_table {
display: grid;
height: calc( 100% - 47px);
width: 100%;
padding: 10px;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: 25px 25px 25px auto;
grid-column-gap: 7px;
grid-gap: 7px;
box-sizing: border-box;
}
#div_mergeField {
grid-column: 2 / 3;
}
#div_db_server,
#div_mergeField {
display: contents;
}
#merge_field {
width: min-content;
}
#list-container {
overflow: auto;
grid-column: 1 /4;
border: 1px solid #dadada;
}
</style>
</head>
<body onload="DoLoad()" onhelp="CancelHelp(event)" onkeydown="ManageKeys(event)">
<div id='import_table'>
<label for='connection' class='_label'>Connection:</label>
<select name='connection' id='connection'>
</select>
<input type='button' name='getTable' value='Get table list' class='bottoni confirm' onclick='GetTableList()'/>
<label for='table' class='_label'>Table:</label>
<select name='table' id='table'>
</select>
<input type='button' name='getColumn' value='Get column list' class='bottoni confirm' onclick='GetColumnList()'/>
<div id='div_db_server'>
<label for='database_server' class='_label'>Database Server:</label>
<select name='database_server' id='database_server'>
</select>
</div>
<div id='div_mergeField'>
<label for='merge_field' class='_label' style='text-align:right' >Merge Existing field:</label>
<input type='checkbox' checked='true' id='merge_field'/>
</div>
<div id="error">
</div>
<div id="list-container">
<div class="titoli" style="position: sticky;top:0;">Fields</div>
<ul style='width:30%; padding-left:45px' id='fieldName' class='list'>
</ul>
<ul style='width:20%;' id='fieldType' class='list'>
</ul>
</div>
</div>
<div class="footer-button-container">
<button onclick="SetTableAndField()" accesskey="o" class="bottoni confirm"><u>O</u>K</button>&nbsp;
<button onclick="WindowClose();" accesskey="c" class="bottoni"><u>C</u>ancel</button>
</div>
</body>
</html>