PortaleOrdiniGruppo/PortalStudio/visualquery/treedrawfile/logicNode.js
2025-03-24 15:28:26 +01:00

173 lines
4.1 KiB
JavaScript

//funzione che prende una stringa e fa in modo che ogni parola cominci con la lettera grande se è composta da sole lettere grandi. Aggiunta alla classe String, non e' parte di NodoLogico
String.prototype.adjustLowerUpCase = function() {
var i;
var stringCapatilize = this;
//separatore spazio
var words = stringCapatilize.split(" ");
for(i = 0; i < words.length; ++i) {
if(words[i].match(/^[A-Z]+$/)) {
words[i] = words[i].charAt(0).toUpperCase() + words[i].slice(1).toLowerCase();
}
}
stringCapatilize = words.join(" ");
//separatore -
words = stringCapatilize.split("-");
for(i = 0; i < words.length; ++i) {
if(words[i].match(/^[A-Z]+$/)) {
words[i] = words[i].charAt(0).toUpperCase() + words[i].slice(1).toLowerCase();
}
}
stringCapatilize = words.join("-");
return stringCapatilize
}
/*
Dipendenze:
Nessuna
Descrizione:
questa classe gestisce un nodo dal punto di vista delle informazioni
Metodi disponibili:
init, costruttore
----- metodi get -----
getNome
getColore
getProprieta
getNomiProprieta
getValRow
Membri:
_nome,
_colore,
_proprieta,
_nomiProprieta;
*/
/* exported NodoLogico */
function NodoLogico() {
var _nome,
_colore,
_proprieta, // valori delle informazioni aggiuntive
_nomiProprieta; //nomi delle informazioni aggiuntive
//il costruttore controlla di ricevere i parametri di tipo corretto, che il valore delle proprieta e il loro nome siano in numero uguale
this.init = function(nome, colore, proprieta, nomiProprieta) {
if(typeof nome!="string" || typeof colore!="string") {
alert("Nome o colore non sono stringhe!");
return;
}
if(!(proprieta instanceof Array)) {
alert("proprieta non \350 un array");
return;
}
if(!(nomiProprieta instanceof Array)) {
alert("nomiProprieta non \350 un array");
return;
}
if(proprieta.length == 0) {
alert("proprieta \350 vuoto");
return;
}
if(nomiProprieta.length == 0) {
alert("nomiProprieta \350 vuoto");
return;
}
if(nomiProprieta.length != proprieta.length) {
alert("I nomi delle propriet\340 e i loro valori sono in numero differente");
return;
}
//Sistemo i vari valori
_nome = nome.adjustLowerUpCase();
switch(colore) {
case "red":
_colore = "#ff0000";
break;
case "pink":
_colore = "#ff66a7";
break;
case "yellow":
_colore = "#f9f006";
break;
case "green":
_colore = "#00CC00";
break;
case "blue":
_colore = "#0000ff";
break;
default :
_colore = "#666666";
}
_proprieta = proprieta;
_nomiProprieta = nomiProprieta;
//cambio etichetta di due proprieta, se si cambia lato server il nome farlo anche qui
var idx = _nomiProprieta.indexOf("time");
if(idx!= -1) {
// _nomiProprieta[idx] = "tempo impiegato";
_nomiProprieta[idx] = "time";
}
else {
alert("Un'operazione non ha il tempo associato");
}
idx = _nomiProprieta.indexOf("row");
if(idx!= -1) {
// _nomiProprieta[idx] = "righe restituite";
_nomiProprieta[idx] = "row returned";
}
else {
alert("Un'operazione non ha il numero di righe associato");
}
//sposto il nome come primo elemento se non lo e' gia'
idx = _nomiProprieta.indexOf("nome");
if(idx == -1) {
alert("Un'operazione non ha il valore di nome (nodoLogico)");
}
else if(idx != 0) {
var scambio = _nomiProprieta[0];
_nomiProprieta[0] = _nomiProprieta[idx];
_nomiProprieta[idx] = scambio;
scambio = _proprieta[0];
_proprieta[0] = _proprieta[idx];
_proprieta[idx] = scambio;
}
_proprieta[0] = _proprieta[0].adjustLowerUpCase(); //il primo e' sempre il nodo
for(var i = 0; i < _proprieta.length; ++i) { //pulisco le informazioni
_proprieta[i] = _proprieta[i].toString().trim();
}
}
this.getNome = function() {
return _nome;
}
this.getColore = function() {
return _colore;
}
this.getProprieta = function() {
return _proprieta;
}
this.getNomiProprieta = function() {
_nomiProprieta[0]="name";
return _nomiProprieta;
}
//restituisce il valore della proprieta' row. Ogni operazione ha row.
this.getValRow = function () {
var idx =_nomiProprieta.indexOf("row returned");
if(idx == -1) {
alert("Un'operazione non ha righe restituite");
return;
}
return _proprieta[idx];
}
}