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

377 lines
10 KiB
HTML

<html>
<head>
<title>Field 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>
QueryString.keys = new Array();
QueryString.values = new Array();
var action;
var m_cProgName = "spadministration_table_extender_field";
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;
}
}
}
function DoLoad() {
var fieldName;
QueryString_Parse();
action = QueryString("action");
if (action == "edit") {
var field = GetOpener().extendedItems[QueryString("et")][6][QueryString("ef")];
fieldName = field[0];
if (Left(fieldName, 5) == "[XML:") {
document.getElementById("extension_field").value = 'XML';
document.getElementById("extension_field_name").value = Substr(fieldName, At("[XML:", fieldName) + 5, At("]", fieldName) - 6);
fieldName = Substr(fieldName, At("]", fieldName) + 1);
} else if (Left(fieldName, 6) == "[JSON:") {
document.getElementById("extension_field").value = 'JSON';
document.getElementById("extension_field_name").value = Substr(fieldName, At("[JSON:", fieldName) + 6, At("]", fieldName) - 7);
fieldName = Substr(fieldName, At("]", fieldName) + 1);
}
document.getElementById("name").value = fieldName;
document.getElementById("type").value = field[1];
document.getElementById("len").value = field[2];
document.getElementById("dec").value = field[3];
document.getElementById("comment").value = field[4];
document.getElementById("check").value = field[5];
document.getElementById("default").value = field[6];
document.getElementById("notnull").checked = field[7] == "false";
document.getElementById("key").value = field[8];
}
EnableExtensionField();
UpdateSizeControls();
document.getElementById("name").focus();
}
function SetField() {
var fieldName;
if (document.getElementById("name").value == "") {
alert("Field name undefined.");
document.getElementById("name").focus();
}
else if (GetOpener().At(" ", document.getElementById("name").value) > 0) {
alert("Field name must not contain spaces.");
document.getElementById("name").focus();
}
else if (document.getElementById("len").value < 1) {
alert("Field length undefined.");
document.getElementById("len").focus();
}
else {
fieldName = document.getElementById("name").value;
switch (document.getElementById("extension_field").value) {
case 'XML':
fieldName = "[XML:" + document.getElementById("extension_field_name").value + "]" + fieldName;
break;
case 'JSON':
fieldName = "[JSON:" + document.getElementById("extension_field_name").value + "]" + fieldName;
break;
}
var field = new Array(fieldName,
document.getElementById("type").value,
document.getElementById("len").value,
document.getElementById("dec").value,
document.getElementById("comment").value,
document.getElementById("check").value,
document.getElementById("default").value,
!document.getElementById("notnull").checked + "",
document.getElementById("key").value);
GetOpener().UpdateField(field, action, QueryString("et"), QueryString("ef"), QueryString("t"), QueryString("f"));
WindowClose();
}
}
function UpdateSizeControls() {
if (document.getElementById("type").value == "N") {
document.getElementById("len").disabled = false;
document.getElementById("dec").disabled = false;
} else if (document.getElementById("type").value == "C") {
document.getElementById("len").disabled = false;
document.getElementById("dec").disabled = true;
} else {
document.getElementById("len").disabled = true;
document.getElementById("dec").disabled = true;
}
switch (document.getElementById("type").value) {
case "D":
document.getElementById("len").value = "8";
document.getElementById("dec").value = "0";
break;
case "T":
document.getElementById("len").value = "14";
document.getElementById("dec").value = "0";
break;
case "L":
document.getElementById("len").value = "1";
document.getElementById("dec").value = "0";
break;
case "M":
case "S":
document.getElementById("len").value = "10";
document.getElementById("dec").value = "0";
break;
}
}
function EnableExtensionField() {
document.getElementById("extension_field_name").disabled = (document.getElementById("extension_field").value == "");
document.getElementById("extension_type").innerText = document.getElementById("extension_field").value || 'XML';
}
function CloseWindow() {
WindowClose();
}
function ManageKeys(e) {
if (e.keyCode == 13) SetField();
else if (e.keyCode == 27) CloseWindow();
}
function CancelEvent(e) {
e.cancelBubble = true
if (e.stopPropagation) e.stopPropagation();
e.returnValue = false
}
function CancelHelp(e) {
CancelEvent(e);
Help();
}
</script>
<style>
body {
font-size: 13px;
width: 560px;
}
.container {
padding: 10px;
box-sizing: border-box;
display: grid;
grid-template-areas:
"a b c d"
"e f . ."
"g h i l"
"m n . ."
"o p q r"
"s t t t"
"u v v v"
"z x x x"
;
grid-template-rows: repeat(8, min-content);
height: calc(100% - 47px);
width: 100%;
row-gap: 10px;
grid-template-columns: repeat(4, 1fr);
column-gap: 7px;
}
#comment,
#check,
#default {
grid-column: 2 / 5;
}
label[for=name] {
grid-area: a;
}
#name {
grid-area: b;
}
label[for=key] {
grid-area: c;
}
#key {
grid-area: d;
}
label[for=type] {
grid-area: e;
}
#type {
grid-area: f;
}
label[for=len] {
grid-area: g;
}
#len {
grid-area: h;
}
label[for=dec] {
grid-area: i;
}
#dec {
grid-area: l;
}
label[for=notnull] {
grid-area: m;
}
#notnull {
grid-area: n;
width: min-content;
}
label[for=extension_field] {
grid-area: o;
}
#extension_field {
grid-area: p;
width: min-content;
}
label[for=extension_field_name] {
grid-area: q;
}
#extension_field_name {
grid-area: r;
}
label[for=comment] {
grid-area: s;
}
#comment {
grid-area: t;
}
label[for=check] {
grid-area: u;
}
#check {
grid-area: v;
}
label[for=default] {
grid-area: z;
}
#default {
grid-area: x;
}
</style>
</head>
<body onload="DoLoad()" onhelp="CancelHelp(event)" onkeydown="ManageKeys(event)">
<div class="container">
<label for="name">Name:</label>
<input id="name" type="text" maxlength="202">
<label for="key">Key/Index:</label>
<select id="key" disabled>
<option value="0" selected>No index/key</option>
<!--option value="1">Primary key</option-->
<option value="2">Secondary index</option>
<option value="3"> 3rd Index</option>
<option value="4"> 4th Index</option>
<option value="5"> 5th Index</option>
<option value="6"> 6th Index</option>
<option value="7"> 7th Index</option>
<option value="8"> 8th Index</option>
<option value="9"> 9th Index</option>
<option value="10">10th Index</option>
<option value="11">11th Index</option>
<option value="12">12th Index</option>
<option value="13">13th Index</option>
<option value="14">14th Index</option>
</select>
<label for="type">Type:</label>
<select id="type" onchange="UpdateSizeControls()">
<option value="C" selected>Character</option>
<option value="N">Numeric</option>
<option value="D">Date</option>
<option value="L">Logical</option>
<option value="M">Memo</option>
<option value="S">Small Memo</option>
<option value="T">DateTime</option>
<option value="X">XML</option>
</select>
<!--input id="repeated" type="checkbox" >
<label >Repeated</label-->
<label for="len">Length:</label>
<input id="len" type="text" value="0" maxlength="34">
<label for="dec">Decimals:</label>
<input id="dec" type="text" value="0" maxlength="34" disabled>
<label for="notnull">Allow nulls:</label>
<input id="notnull" type="checkbox" checked>
<label for="extension_field">Field Extension:</label>
<select id="extension_field" onchange="EnableExtensionField()">
<option value="" selected></option>
<option value="XML">XML</option>
<option value="JSON">JSON</option>
</select>
<label for="extension_field_name"><span id="extension_type">XML</span> field:</label>
<input id="extension_field_name" type="text" maxlength="34">
<label for="comment">Description:</label>
<input id="comment" type="text" maxlength="382">
<label for="check">Check:</label>
<input id="check" type="text" maxlength="382">
<label for="default">Default:</label>
<input id="default" type="text" maxlength="382">
</div>
<div class="footer-button-container">
<button onclick="SetField()" 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>