From b8a41572d07e1c228039d67fe761cef9367dd95c Mon Sep 17 00:00:00 2001 From: samuele Date: Mon, 13 Sep 2010 10:44:22 +0000 Subject: [PATCH] Aggiunto esito ricerca, manca provider risultati celle e rimbalzi git-svn-id: https://keyhammer.ath.cx/svn/GMW/trunk@230 365432ac-a1b5-4ffd-bb28-6d3099d32164 --- GMW/GMW_Term/GMW_Term.csproj | 3 + GMW/GMW_Term/WebUserControls/mod_search.ascx | 19 +- .../mod_search.ascx.designer.cs | 18 - .../WebUserControls/mod_searchResults.ascx | 30 +- .../WebUserControls/mod_searchResults.ascx.cs | 251 +- GMW/GMW_Term/bin/GMW_Term.dll | Bin 41472 -> 41472 bytes GMW/GMW_Term/bin/GMW_data.dll | Bin 942080 -> 942080 bytes GMW/GMW_Term/bin/SteamWare.XML | 3156 +++++++++++++++++ GMW/GMW_Term/bin/SteamWare.dll | Bin 359936 -> 359936 bytes GMW/GMW_Term/images/Cella.png | Bin 0 -> 1622 bytes GMW/GMW_Term/images/Part.png | Bin 0 -> 1558 bytes GMW/GMW_Term/images/Udc.png | Bin 0 -> 1642 bytes .../GMW_Term.csproj.FileListAbsolute.txt | 2 +- GMW/GMW_Term/obj/Debug/GMW_Term.dll | Bin 41472 -> 41472 bytes .../obj/Debug/ResolveAssemblyReference.cache | Bin 49783 -> 49783 bytes GMW/GMW_data/bin/Debug/GMW_data.dll | Bin 942080 -> 942080 bytes GMW/GMW_data/bin/Debug/SteamWare.dll | Bin 359936 -> 359936 bytes GMW/GMW_data/bin/Debug/SteamWare.xml | 3156 +++++++++++++++++ GMW/GMW_data/obj/Debug/GMW_data.dll | Bin 942080 -> 942080 bytes .../obj/Debug/ResolveAssemblyReference.cache | Bin 27478 -> 27478 bytes 20 files changed, 6412 insertions(+), 223 deletions(-) create mode 100644 GMW/GMW_Term/images/Cella.png create mode 100644 GMW/GMW_Term/images/Part.png create mode 100644 GMW/GMW_Term/images/Udc.png diff --git a/GMW/GMW_Term/GMW_Term.csproj b/GMW/GMW_Term/GMW_Term.csproj index 93a73a9e..3ff2ead6 100644 --- a/GMW/GMW_Term/GMW_Term.csproj +++ b/GMW/GMW_Term/GMW_Term.csproj @@ -263,6 +263,9 @@ + + + diff --git a/GMW/GMW_Term/WebUserControls/mod_search.ascx b/GMW/GMW_Term/WebUserControls/mod_search.ascx index 3413f8c3..c629289f 100644 --- a/GMW/GMW_Term/WebUserControls/mod_search.ascx +++ b/GMW/GMW_Term/WebUserControls/mod_search.ascx @@ -1,11 +1,8 @@ <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="mod_search.ascx.cs" Inherits="GMW_Term.WebUserControls.mod_search" %> -<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> -<%@ Register src="mod_searchResults.ascx" tagname="mod_searchResults" tagprefix="uc1" %> - - +<%@ Register Src="mod_searchResults.ascx" TagName="mod_searchResults" TagPrefix="uc1" %>
-
+
- - -
- - -
-
-
+
+ +
- diff --git a/GMW/GMW_Term/WebUserControls/mod_search.ascx.designer.cs b/GMW/GMW_Term/WebUserControls/mod_search.ascx.designer.cs index 7b4addeb..146ff09b 100644 --- a/GMW/GMW_Term/WebUserControls/mod_search.ascx.designer.cs +++ b/GMW/GMW_Term/WebUserControls/mod_search.ascx.designer.cs @@ -13,15 +13,6 @@ namespace GMW_Term.WebUserControls { public partial class mod_search { - /// - /// ScriptManager1 control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.ScriptManager ScriptManager1; - /// /// lblInput control. /// @@ -49,15 +40,6 @@ namespace GMW_Term.WebUserControls { /// protected global::System.Web.UI.WebControls.Button btnButtonsHome; - /// - /// updPanel1 control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.UpdatePanel updPanel1; - /// /// txtRicerca control. /// diff --git a/GMW/GMW_Term/WebUserControls/mod_searchResults.ascx b/GMW/GMW_Term/WebUserControls/mod_searchResults.ascx index 4abf8b0b..63576d35 100644 --- a/GMW/GMW_Term/WebUserControls/mod_searchResults.ascx +++ b/GMW/GMW_Term/WebUserControls/mod_searchResults.ascx @@ -4,7 +4,7 @@
+ Width="100%" DataKeyNames="tipo,valore" DataSourceID="ods" OnRowUpdating="grView_RowUpdating"> @@ -17,30 +17,26 @@ - <%-- - - - - - - --%> - + - + +
+ +
- + <%-- - + --%> <%--
@@ -73,10 +69,8 @@    - + diff --git a/GMW/GMW_Term/WebUserControls/mod_searchResults.ascx.cs b/GMW/GMW_Term/WebUserControls/mod_searchResults.ascx.cs index 590f101d..5a81d45f 100644 --- a/GMW/GMW_Term/WebUserControls/mod_searchResults.ascx.cs +++ b/GMW/GMW_Term/WebUserControls/mod_searchResults.ascx.cs @@ -28,49 +28,6 @@ namespace GMW_Term.WebUserControls return user_std.UtSn.Traduci(lemma); } - - /// - /// imposta errore non cancellabilità per record correlati - /// - protected void setNoDeletableErrorMessage() - { - // mostro avviso di non cancellabilità... - lblWarning.Text = traduci("notDeletable_hasChild"); - lblWarning.Visible = true; - grView.DataBind(); - } - /// - /// esegue cancellazioen record - /// - protected void doDelete() - { - // posso cancellare... - lblWarning.Visible = false; - ods.Delete(); - } - /// - /// Valida la cancellazione per i dati mostrati dal gridView - /// richiede sia preventivamentedichiarato _idxGridView - /// - /// - /// - protected virtual void validaDelete(object sender, ObjectDataSourceMethodEventArgs e) - { - int idx = Convert.ToInt32(e.InputParameters[string.Format("Original_{0}", _idxGridView)]); - if (objIsNotRelated(idx)) - { - // annullo cancellazione... - e.Cancel = true; - // seleziono record... metto in session valore idx e poi ridisegno... - SteamWare.memLayer.ML.setSessionVal(_idxGridView, idx); - setNoDeletableErrorMessage(); - } - else - { - doDelete(); - } - } - /// /// recupera i dati di un nuovo record contenuti nel footer di un gridView; /// questi devono esses opportunamente nominati (es: txt{0}, dl{0}, ...) @@ -242,7 +199,7 @@ namespace GMW_Term.WebUserControls #endregion - + /// /// metodi al caricamento della pagina /// @@ -278,7 +235,7 @@ namespace GMW_Term.WebUserControls { base.OnInit(e); _idxGridView = "TipoSearch"; - + aggiornaControlliDataGL(); } /// @@ -286,10 +243,10 @@ namespace GMW_Term.WebUserControls /// protected void aggiornaControlliDataGL() { - grView.PageSize = 5; + grView.PageSize = 4; } - + /// /// gestione cambio selezione valore @@ -339,6 +296,7 @@ namespace GMW_Term.WebUserControls string CodSoggetto = MagClass.magazzino.CodSoggCurrUser; switch (_comando) { +#if false case "IniziaListaPrelievo": GMW_data.MagClass.magazzino.iniziaListaPrelievo(memLayer.ML.StringSessionObj("CodCS"), codLista, CodSoggetto); updateOds(); @@ -366,13 +324,14 @@ namespace GMW_Term.WebUserControls memLayer.ML.emptySessionVal("CodLista_sel"); // blocco update! e.Cancel = true; - break; - default: + break; +#endif + default: // faccio update! break; } } - + /// /// chiamato post modifica valore check/selezione nel selettore filtro stato /// @@ -387,22 +346,18 @@ namespace GMW_Term.WebUserControls /// private void checkFixOds() { -#if false - ods.FilterParameters.Clear(); - ods.FilterExpression = "(CodLista LIKE '%{0}%' OR Particolare LIKE '%{0}%' OR DescParticolare LIKE '%{0}%')"; - // parametro ricerca attuale - SessionParameter parametroFiltro = new SessionParameter(); - parametroFiltro.SessionField = "valoreCercato"; - parametroFiltro.Name = "ricerca"; - parametroFiltro.DefaultValue = "*"; - ods.FilterParameters.Add(parametroFiltro); - -#endif // chiamo procedura che aggiorna ods principale grView.SelectedIndex = -1; updateOds(); } /// + /// aggiorno il gridview + /// + protected void updateOds() + { + grView.DataBind(); + } + /// /// chiamato post modifica valore check/selezione nel selettore filtro tipo /// /// @@ -473,116 +428,6 @@ namespace GMW_Term.WebUserControls return answ; } - /// - /// determina se sia abilitato il pulsante x iniziare una lista di prelievo - /// - /// - /// - public bool iniziaEnabled(object codStato) - { - bool answ = false; - try - { - answ = ((int)codStato == (int)statoLista.generata); - } - catch - { } - return answ; - } - /// - /// determina se sia abilitato il pulsante x completare una lista di prelievo - /// - /// - /// - public bool completaEnabled(object codStato) - { - bool answ = false; - try - { - answ = ((int)codStato == (int)statoLista.iniziata); - } - catch - { } - return answ; - } - /// - /// verifica se sia prelevabile - /// - /// - /// - /// - public bool prelevaEnabled(object statoPrelevata, object udc) - { - bool answ = prelievoEnabled; - if (prelievoEnabled) - { - // controllo se non risulti prelevato l'UDC in un altra lista... - if (udcPrelevato(udc)) - { - answ = false; - } - else - { - try - { - answ = !Convert.ToBoolean(statoPrelevata); - } - catch - { } - } - } - return answ; - } - /// - /// verifica se sia annullabile il prelievo - /// - /// - /// - public bool annullaEnabled(object annullaPrelevata) - { - bool answ = prelievoEnabled; - if (prelievoEnabled) - { - try - { - answ = Convert.ToBoolean(annullaPrelevata); - } - catch - { } - } - return answ; - } - /// - /// determina se le righe di prelievo siano confermabili per prelievo (durante pick-up) - se c'è lista prelievo attiva ed è quella corrente!!! - /// - public bool prelievoEnabled - { - get - { - bool ListaInPrelievo = memLayer.ML.isInSessionObject("CodListaAttiva"); - bool ListaSelOk = (memLayer.ML.StringSessionObj("CodListaAttiva") == memLayer.ML.StringSessionObj("CodLista_sel")); - return (ListaInPrelievo && ListaSelOk); - } - } - /// - /// fornisce verifica se l'udc sia già stato prelevato altrove... - /// - /// - /// - public bool udcPrelevato(object udc) - { - return GMW_data.MagClass.magazzino.taRigheListePrelievo.getPrelevateByUdc(udc.ToString()).Rows.Count > 0; - } - - /// - /// restituisce tooltip da mostrare x STATO lista - /// - /// - /// - public string tooltipStato(object codice) - { - return traduci(string.Format("StatoLista_{0}", codice)); - } /// /// restituisce URL immagine del codice da mostrare x TIPO lista /// @@ -590,7 +435,23 @@ namespace GMW_Term.WebUserControls /// public string pathImgTipo(object codice) { - return string.Format("~/images/lista_{0}_m.png", codice); + string answ = ""; + string tipo = codice.ToString(); + switch (tipo) + { + case "UDC": + answ = string.Format("~/images/UDC.png", codice); + break; + case "Particolare": + answ = string.Format("~/images/Part.png", codice); + break; + case "Cella": + answ = string.Format("~/images/Cella.png", codice); + break; + default: + break; + } + return answ; } /// /// restituisce tooltip da mostrare x TIPO lista @@ -661,5 +522,51 @@ namespace GMW_Term.WebUserControls SteamWare.memLayer.ML.setSessionVal("nextObjCommand", "annullaPrelievo"); } + /// + /// formatta una stringa di descrizione a aprtire dal tipo oggetto + /// + /// + /// + /// + public string descOggetto(object _tipo, object _valore) + { + string tipo = _tipo.ToString(); + string valore = _valore.ToString(); + string answ = ""; + switch (tipo) + { + case "UDC": + try + { + DS_magazzino.v_UdcDetailRow rigaUdc = MagClass.magazzino.taDettUDC.getByFullUdc(valore, memLayer.ML.StringSessionObj("CodCS"))[0]; + answ = string.Format("{0} {1:##} pz (cella {2})", rigaUdc.Particolare, rigaUdc.Qta, rigaUdc.CodCella); + } + catch (Exception e) + { + logger.lg.scriviLog(string.Format("Eccezione {0}", e), tipoLog.EXCEPTION); + answ = string.Format("{0} - {1}", tipo, valore); + } + break; + case "Particolare": + try + { + DS_magazzino.V_ParticolariOverviewRow rigaPart = MagClass.magazzino.taVParticolariOverwiew.getByParticolareFull(valore, memLayer.ML.StringSessionObj("CodCS"))[0]; + answ = string.Format("UDC: {0} ({2} a mag.) - {1:##} pz", rigaPart.NumUDC, rigaPart.TotQta, rigaPart.NumInMag); + } + catch (Exception e) + { + logger.lg.scriviLog(string.Format("Eccezione {0}", e), tipoLog.EXCEPTION); + answ = string.Format("{0} - {1}", tipo, valore); + } + break; + case "Cella": + answ = string.Format("{0} - {1}", tipo, valore); + break; + default: + break; + } + return answ; + } + } } \ No newline at end of file diff --git a/GMW/GMW_Term/bin/GMW_Term.dll b/GMW/GMW_Term/bin/GMW_Term.dll index 00ac49db624ff9f48bd67804d484c5ae6ffbf912..1debf2930282886ae1938012074b1d2708c8de79 100644 GIT binary patch literal 41472 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 diff --git a/GMW/GMW_Term/bin/GMW_data.dll b/GMW/GMW_Term/bin/GMW_data.dll index 70754cd4bf3cc47479c518250ba3b1ab573834d5..79266c24a1746884a58d1fbc982d04da675f3a13 100644 GIT binary patch delta 114 zcmZoTVA*iMazY2Q`}N+&?$&O`)^4WOZsyi*mey|8)^4`eZuZu0j@E9@)^4uWZtm7@ zp4M*Ot=)WU1q8ls)M^&uEAVWweN?4uJbCeU4?(^VcaTBT=ST2K3VyYJG4a5>qi+5A SwP#LAIYcpTKN-Pi&JF-w$}SfG delta 114 zcmZoTVA*iMazY35v!JfV?$&O`)^4WOZsyi*mey|8)^4`eZuZu0j@E9@)^4uWZtm7@ zp4M*Ot=)WU1q2u_iJMr~-0<46A;x4%rs$IG9)f%!?jVDv&yV1f6bzH9KUXI1>)Y?N SasJ&OoNY|oPe$;WvjYG&8Z46l diff --git a/GMW/GMW_Term/bin/SteamWare.XML b/GMW/GMW_Term/bin/SteamWare.XML index 6809ec2a..64eda3e0 100644 --- a/GMW/GMW_Term/bin/SteamWare.XML +++ b/GMW/GMW_Term/bin/SteamWare.XML @@ -4,5 +4,3161 @@ SteamWare + + + classe gesione log files applicazioni + + + + + directory base x logs + + + + + nome del file corrente + + + + + max mb di log da accumulare + + + + + singleton del logger + + + + + avvio del logger nella dir desiderata + + + + + avvio del logger nella dir desiderata + + + + + avvio del logger nella dir desiderata con il max di dati indicato + + + + + scrive sul file log di default il valore della variabile string passata su una riga... (tab delim?!?) + + testo iniziale del log + + + + + scrive un messaggio di log con etichetta pre + + testo messaggio + tipo di log da registrare (etichetta [...]) + + + + + fornisce il nome del file in cui loggare (ed eventualmente crea...) + + + + + provvede a verificare la dim della cartella dei log e cancella i + vecchi fino a restare a dim inferiori a _logMaxMb + + + + + fornisce il file + vecchio + + + + + + + tipo di log ammesso + + + + + informazioni di debug + + + + + errori + + + + + eccezioni nell'esecuzione try/catch + + + + + errori fatali + + + + + informazioni opzionali + + + + + fase di avvio componente + + + + + avvisi + + + + + classe di wrap verso i TableAdapter impiegati + + + + + metodo protected di avvio della classe + + + + + procedura di avvio dei tableAdapter + + + + + procedura di avvio dei tableAdapter + + + + + effettua setup dei connection strings da web.config delal singola applicazione + + + + + effettua setup dei connection strings da web.config delal singola applicazione + + + + + setup delle tabelle vocabolario + + + + + prende l'oggetto tabVocabolario in ram e lo trasforma in dictionary + + + + + + tableAdapter diritti + + + + + tableAdapter permessi + + + + + tableAdapter funzione + + + + + tableAdapter permessi2funzione + + + + + tableAdapter CdC + + + + + tableAdapter utenti + + + + + table adapter lingue + + + + + table adapter vocabolario + + + + + table adapter versione vocabolario + + + + + table adapter versione anagrafica + + + + + oggetto vocabolario organizzato come dizionario con chiave lang#lemma e valore la traduzione + + + + + resetta il vocabolario rileggendo i dati... + + + + + crea nel db corrente il lemma richiesto e lo valorizza come "--{0}--" + + + + + + + classe singleton x la gestione dei tableadapters + + + + + elenco lingue ammesse da vocabolario... + + + + + classe di gestione lettura + + + + + esegue parsing fornendo dati ed headers + + + + + + + + esegue parsing fornendo dati + + + + + + + esegue parsing fornendo dati come stream + + + + + + + esegue parsing fornendo dati come stream ed headers + + + + + + + + struttura di comando da input utente (es: via barcode) + + + + + definisce se il comando sia valido o no + + + + + testo da mostrare dato il comando + + + + + comando registrato + + + + + comando precedentemente inserito + + + + + descrizione del comando + + + + + descrizione del comando precedente + + + + + valore del comando + + + + + valore tradotto del comando + + + + + costruttore del metodo... + + + + + Base class for every user control in the application, containing some common + behaviour and utility methods. + It is not meant to be be used directly. + + + + + tipo id controllo con classi di base comune da cui derivare gli *.asmx + + + + + nome della pagina correntemente caricata + + + + + memorizza la pagina precedente (ovvero la corrente ma non da page-object ma in session... + + + + + stringa con CDC in (...) dei cdc abilitati (da permesso gerarchicamente a discendere...) + + + + + stringa con elenco CDC abilitati (da permesso gerarchicamente a discendere...) + + + + + tabella diritti + + + + + tabella di tutti i cdc + + + + + tipo di anagrafica usata + + + + + importo il tipo di vista del modulo + + + + + elenco testuale csv dei cdc accessibili all'utente (x filtri tipo IN(...)) + + + + + numero di righe standard x i datagrid + + + + + numero di righe standard x i datagrid di anagrafica + + + + + numero di righe standard x i datagrid lunghi + + + + + numero di righe standard x i datagrid medi + + + + + numero di righe standard x i datagrid su mezza pagina + + + + + numero di righe standard x i selettori popup + + + + + indirizzo email dell'admin applicativo cui vanno le email in caso di anomalie... + + + + + indirizzo email dell'applicativo da cui partono le email in caso di anomalie... + + + + + indirizzo server SMTP + + + + + elenco delle pagine "safe" ovvero da non autorizzare - da web.config + + + + + elenco delle pagine "common" ovvero da autorizzare ma senza bisogno diritti in anagrafica - da web.config + + + + + valore che determina se è possibile forzare impersonificazioen utente... + + + + + livello di log (1-->5) + + + + + dir di logging + + + + + MAIN: esecuzione al caricamento del modulo delle routines di controllo utente e creazione pagina + + + + + + + predisposizione dati x pagina da cache/database a seconda della disponibilità in cache o refresh (B.1.4) + + + + + popola gli oggetti e le labels... (B.1.6) + + + + + disegna la pagina: prima i controlli poi il datagrid + + + + + aggiunge i link x i selettori + + + + + sistema i vari controlli della pagina + + + + + aggiorna eventuali datalist e datagrid + + + + + sistema tutte le labels traducendo i lemmi nella lingua utente ed in inglese + + + + + calcola come percentuale la radio dividendo/divisore + + + + + + + + limita una stringa al numero max di caratteri imposto + + + + + + + + Reads data from a stream until the end is reached. The + data is returned as a byte array. An IOException is + thrown if any of the underlying IO calls fail. + + The stream to read data from + The initial buffer length + + + + converte una data in formato aaaammgg in stringa gg/mm/aaaa + + + + + + + converte una data in formato aaaammgg in stringa aaaa-mm-gg + + + + + + + converte una stringa in formato gg/mm/aaaa in stringa(intero data) in formato aaaammgg + + + + + + + converte una datetime in un intero tipo yyyymmddhhmmss + + + + + + + formatta la data in formato dateTime in una data formato italiano come stringa gg/mm/aaaa + + + + + + + invia un alert jscript con messaggio indicato... + + messaggio dell'alert da mandare + + + + scrive immediatamente sulla pagina web il messaggio di avanzamento... + + + + + + restituisce una scringa formattata in testa e coda x essere un corretto comando javascript + + + + + + + invio email senza log + + + + + + + + + + invio email con log + + + + + + + + + + caricamento dati applicazione da sessione (B.1.3) + + + + + setup datamanagers... + + + + + reset update del modulo corrente + + + + + (ri)carica i dataset del modulo + + + + + verifica se tutti i dataset richiesti sono disponibili i cache + + + + + + salva nella cache i dataset caricati + + + + + carica dalla cache i dataset necessari + + + + + legge i valori standard x dataset e parametri + + + + + leggi i parametri di configurazione standard dell'applicativo + + + + + genera la stringa dei cdc autorizzati dell'utente + + + + + legge il dataset dei CdC + + + + + caricamento dati user da sessione (B.1.1) + + + + + verifica che l'utente abbia almeno un permesso per la pagina corrente altrimenti redirect ad unauthorized + + + + + salva in variabile pagina il nome della pagina corrente + + + + + selezione delle posizioni cdc autorizzate come stringa di filtraggio su POSIZIONE LIKE, se non ce ne fossero redirige su unauthorized.aspx + + + + + + risponde alla domanda se l'utente abbia permesso tipo writable (S) nel permessi2funzione + + + + + + verifica la condizione booleana e formatta di conseguenza la stringa di filtraggio da accodare al filtro x CdC autorizzati + + condizione + tipo di eguaglianza + nome parametro + valore parametro + + + + + crea la stringa di filtraggio x data secondo modalità tipo inizio/fine/durante... + + + + + + crea la stringa di filtraggio x data secondo modalità tipo minoreUguale / uguale / maggioreUguale... + + + + + + verifica la condizione booleana e formatta di conseguenza la stringa di filtraggio tipo LIKE x i campi inseriti separati da # SE valParam !="" + + + + + + + + esegue la ricerca dei cdc nelle posizioni indicate dal filtro e restituisce elenco distinct degli stessi + + filtro con cui cercare i cdc (del tipo " (POSIZIONE LIKE 'T.1.2.3%') OR ... " + stringa di filtraggio ricostruita per l'elenco dei cdc fino a quel momento trovati + ultimo cdc trovato + cdc corrente + + + + + restituisce il cdc dell'utente data la sua matricola + + + + + + + restituisce l'utente AS dall'utente win + + + + + + + restituisce la descr del CdC + + + + + + + invia la stringa jscript di conferma pre-cancellazione + + + + + + restituisce la stringa del path corretto per l'immagine richiesta nel formato "~/images/{0}{1}" + + verrà usato x posizione {0}, tipo "view" + verrà usato x posizione {1}, tipo "_s.png" + + + + + restituisce la stringa del path corretto per l'immagine richiesta nel formato "~/images/{0}{1}" + + verrà usato x posizione {0}, tipo "view" + verrà usato x posizione {1}, tipo "_s.png" + tipo del file richiesto..." + + + + + effettua traduzione del lemma + + + + + + + effettua traduzione in inglese del lemma + + + + + + + definisce visibilità + + + + + + + effettua la registrazione degli eventi + + + + + effettua l'inserimento vero e proprio dell'evento letto dai valori in session x l'utente corrente... + + evento da loggare + valori originali + nuovi valori + filtro associato + + + + salva in sessione i valori indicati + + dictionary dei valori vecchi + dictionary dei valori nuovi + bool su abilitazione al log dell'oggetto + descrizione evento da loggare + filtro associato all'evento + restituisce il numero di elementi contenuti, -1 significa nessuna differenza... + + + + salva in sessione i valori per un oggetto che sta x essere eliminato + + dictionary dei valori vecchi + bool su abilitazione al log dell'oggetto + descrizione evento da loggare + filtro associato all'evento + restituisce il numero di elementi contenuti, -1 significa nessuna differenza... + + + + imposto il tipo di anagrafica del controlloS + + + + + variabile salvata in view state x la stringa di sorting - dg 2 + + + + + variabile salvata in view state x la stringa di sorting - dg 2 + + + + + legge e scrive in viewState la stringa di filtraggio... + + + + + variabile salvata in viewstate x la direzione del sorting + + + + + genera la stringa filtro x i cdc autorizzati x l'user + + + + + + tipo di vista del modulo + + + + + Summary description for selettori + + + + + + + + + + + + + + + carica i dati CdC se in cache o da TableAdapter + + + + + restituisce l'elenco di tutti i cdc + + + + + + restituisce l'elenco di tutti i cdc della gerarchia dell'utente + + + + + + Represents a strongly typed in-memory cache of data. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + classe di gestione dei db x creazione/update alla versione richiesta + + + + + oggetto connessione + + + + + stringa di connessione + + + + + dir che contiene gli script da eseguire... + + + + + formato del file SQL impiegato (nel senso di formato come iFormat del tipo "App_{0:0000}.sql" --> da App_0001.sql ad App_9999.sql) + + + + + avvio protected della classe + + + + + esegue gli script di sql di update dal file richiesto + + + + + + + + Aggiorna il db eseguendo gli script dalla versione di partenza a quella di arrivo + + NB: per definizione rev 0 = resetta svuotando DB, rev 1 crea tabelle iniziali, rev 2 inserisce i valori di default + + nome DB di cui cercare script + revisione di partenza + revisione di arrivo + timeout max per ogni operazione + + + + + verifica se il db indicato esiste o meno... + + + + + + + + crea il db indicato con i parametri di connessione specificati + + + + + + + + Represents a strongly typed in-memory cache of data. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + classe con funzioni specifiche di calcolo + + + + + inizializzazione classe + + + + + elenco dei caratteri base 36: 0..9A..Z + + + + + + converte da base di dimensione nBase a valore intero + + valore in formato nBase + base, max 36 (0..9A..Z) + + + + + metodo di accesso singleton + + + + + tipo di chart (2D/3D) + + + + + 2D + + + + + 3D + + + + + web control che disegna un grafico a torta + + + + + altezza di default + + + + + larghezza di default + + + + + padding di default + + + + + legenda visibile di default + + + + + soglia minima 5% per mostrare il dato + + + + + renderizza il contenuto + + + + + + disegna la leggenda html laterale... + + + + + + disegna piechart 2-dim + + + + + + disegna piechart 3d ellittica + + + + + + traduce la stringa colore in oggetto colore + + + + + + + converte intero a stringa esadecimale + + + + + + + converte stringa esadecimale a intero + + + + + + + tipo di grafico (2D/3D) + + + + + ampiezza del grafico + + + + + altezza del grafico + + + + + padding grafico/container + + + + + boolean se si debba mostrale la legenda + + + + + percentuale minima da mostrare + + + + + serie di dati (tipizzata) ma mostrare + + + + + testo associato al controllo + + + + + layer gestione vari tipi di memoria: cache, session... + + + + + lettore file configurazione + + + + + oggetto singleton x accesso al layer di memoria + + + + + classe gestione accessi a Session, cache, viewstate, configuration... + + + + + legge dalla config un valore bool + + + + + + + legge dalla config un valore string + + + + + + + legge dalla config un valore int + + + + + + + carica dalla sessione un dato di tipo object generico + + + + + + + carica dalla sessione un dato di tipo boolean (se vuoto false) + + + + + + + carica dalla sessione un dato di tipo string + + + + + + + carica dalla sessione un dato di tipo long + + + + + + + carica dalla sessione un dato di tipo int + + + + + + + inserisce in session un valore + + + + + + + salvo un valore come cookie + + + + + + + + restituisco un valore da cookie + + + + + + + inserisce in session un valore + + nome della variabile + valore associato + indica se debba sopravvivere ad update (inserita in elenco valSess2SurvUpd) + + + + + svuota una variabile dalla session + + + + + + restituisce true se è presente in session l'oggetto richiesto + + + + + + + carica dalla Cache un dato di tipo object generico + + + + + + + carica dalla Cachee un dato di tipo boolean (se vuoto false) + + + + + + + carica dalla Cachee un dato di tipo string + + + + + + + inserisce in Cache un valore + + nome della variabile + valore + + + + inserisce in Cache un valore e su richiesta regitra tra le tab in cache da svuotare on update.. + + nome della variabile + valore + da registrare come tabella da svuotare on update? + + + + + svuota una variabile dalla Cache + + + + + + restituisce true se è presente in cache l'oggetto richiesto + + + + + + + aggiunge la stringa corrente nel dictionary delle tabelle messe in cache e da aggiornare su comando update + + + + + + aggiunge la stringa corrente nel dictionary delle tabelle messe in session che vanno preservate da comando update (es: oggetto selezionato...) + + + + + + + forza lo svuotamento delel tabelle indicate come in cache... + + + + + elenco dictionary delle tab in cache da aggiornare con update svuotando da cache... + + + + + elenco dictionary dei valori in session da NON aggiornare con update... + + + + + classe gestione parametri deviceper stampa + + + + + creazione oggetto parametri per stampa + + + + + + + + + + + + formato output + + + + + altezza + + + + + larghezza + + + + + margine Sx + + + + + margine Dx + + + + + margine Top + + + + + margine Bottom + + + + + enumeratore modalità login + + + + + login AD normale + + + + + forza utente fornendo password + + + + + forza ad un utente standard scelto dall'elenco + + + + + enumeratore modalità scrittura tag siteMap + + + + + nodo di tipo iniziale - apertura + + + + + nodo di tipo foglia + + + + + nodo di tipo finale - chiusura + + + + + enumeratore tipi di anagrafica + + + + + tipo di anagrafica Brembo + + + + + tipo di anagrafica generica + + + + + tipo di vista del modulo + + + + + modalità selezione + + + + + modalità editing + + + + + tipologia di file immagine + + + + + formato gif (no alpha channel) + + + + + formato jpeg + + + + + formato png + + + + + tipo di immagini usate per le icone di comando in web applications + + + + + icona annulla (croce rossa) + + + + + icona approva (simbolo coccarda) + + + + + icona barcode in campo bianco + + + + + icona barcode in campo arancio + + + + + icona clona (magic wand) + + + + + icona converma (spunta verde) + + + + + icona elimina (cestino) + + + + + icona modifica (matita) + + + + + icona notepad (blocco note) + + + + + icona notepad + pdf (blocco note) + + + + + icona nuovo (segno +) + + + + + icona seleziona (lente) + + + + + icona semaforo giallo + + + + + icona semaforo rosso + + + + + icona semaforo verde + + + + + icona stampa (printer) + + + + + dimensione immagini usate per le icone di comando in web applications + + + + + formato piccolo + + + + + formato medio + + + + + formato grande + + + + + definisce un intervalo di 2 date + + + + + data inizio + + + + + data fine + + + + + struttura orario ordinarie/strordinarie + + + + + ore ordinarie + + + + + ore straordinarie + + + + + classe di funzioni inerenti le date + + + + + inizializzazione empty + + + + + effettua l'operazione di intersezione tra 2 intervali di date restituendo ulteriore intervallo: NB se sono intervali disgiunti restituisce 9/9/9999 x inizio e fine + + + + + + + + oggetto mese precedente alla dataLilmite + + + + + + oggetto mese corrente fino alla dataLilmite + + + + + + confronta le date e restituisce true se le date sono nello stesso mese + + + + + + + + restituisce l'intervallo del giorno completo che comprende la data indicata + + + + + + + restituisce l'intervallo di N giorni fino alla data indicata + + + + + + + + restituisce l'intervallo della settimana corrente per la data indicata + + + + + + + restituisce l'intervallo del mese corrente per la data indicata + + + + + + + restituisce l'intervallo del mese che comprendela data indicata + + + + + + + restituisce l'intervallo dell'anno corrente per la data indicata + + + + + + + classe di gestione delle email + + + + + stringa nel nome DNS o dell'ip del server SMTP + + + + + metodo static per la gestione delle email + + + + + + metodo static per la gestione delle email + + + + + + + procedura invio email + + email mittente + email destinatario + oggetto dell'email + corpo del messaggio + + + + procedura invio email + scrittura in log! + + email mittente + email destinatario + oggetto dell'email + corpo del messaggio + + + + metodo singleton gestione email... + + + + + Tipo di comparazione, Binary == CaseSensitive, Text = insensitive + + + + + tipo controllo : binario + + + + + tipo controllo : text + + + + + Funzione di splitting compatibile con multi-character e multi-line + + + + + stringa da splittare + + + + + Delimiter con cui splittare + + + + + Costruttore dello Splitter + + + + + comparatore case sensitive + + + + + + + + comparatore case insensitive + + + + + + + + parte principale dello splitter + + stringa da splittare + delimitatore ricercato + true=il delimiter è un blocco unico, false=qualsiasi oggetto del delimiter fa split (come split base) + + 0 -> Binary=CaseSensitive, 1 -> Text=case insensitive + + + + + elimina dal nome file il tipo (desinenza) + + + + + + + Classe di metodi che estendono quelli base applicati alle string + + + + + Trasforma in MAIUSCOLo il primo carattere della stringa + + stringa da processare + stringa processata + + + + restituisce la stringa completa e corretta del filepath del server (anche con vDir) + + path relativo alla cartella iis dell'applicativo + path fisico tradotto + + + + effettua escape di stringhe di ricerca di tipo filtro per apici e altri caratteri non ammessi + + + + + + + fornisce dati di base per l'utente + + + + + fornisce cognome e nome utente formattati a partire dall'username e dalla tabella UTENTE + + + + + + + restituisce la riga completa dall'username richiesto + + + + + + + Represents a strongly typed in-memory cache of data. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + classe gestione utente: auth e permission/ruoli - versione GENERICA + + + + + cancella da session l'utente + + + + + carica la riga dati utente + + + + + Carica la tabella diritti dell'utente da db e salva in session + + + + + Carica la tabella diritti dell'utente da db e salva in session SOLO per il CDC indicato + + + + + + Effettua setup dei permessi una volta salvati i diritti + + + + + imposta la lingua utente dal valore della riga DB + + + + + costruisce la mappa del sito per l'utente + + + + + formatta un nodo in modo corretto dai dati indicati + + + + + + + + + inizializza la gestione utente... + + + + + traduce il lemma nella lingua dell'user corrente + + + + + + + traduce il lemma in inglese + + + + + + + traduce il lemma nella lingua dell'user e in inglese tra parentesi + + + + + + + LogOff utente con reset dati + + + + + + + + Procedura da chiamare DOPO aver messo in session i dati utente/dominio x caricare gli altri dati + + + + + + + + Procedura da chiamare DOPO aver messo in session i dati utente/dominio x caricare gli altri dati CON I DIRITTI SOLO per il CDC indicato + + + + + + + + + salva dati accessori quali il cdc dell'utente... + + + + + verifica nella tab diritti se l'utente abbia il right richiesto e fornisce bool in risposta + + + + + + + verifica le credenziali AD dell'utente... + + + + + + + + conta il numero di permessi utente per la pagina attuale e restituisce true se ne trova almeno 1 + + + + + + + verifica se il permesso utente per la pagina attuale sia write per almeno 1 diritto assegnato (restituisce true se ne trova almeno 1 con permessi2funzione.readwrite='S') + + + + + + + ricarica e ri-traduce la mappa sito per l'utente... + + + + + retituisce il nome apgina dai permessi utente + + + + + + restituisce cognome e nome di un utente dato username... + + username + + + + + restituisce cognome e nome di un utente data la matricola... + + matricola + + + + + restituisce cognome e nome di un utente dato username e dominio... + + username + dominio + + + + + restituisce cognome e nome di un utente dato username... + + username + + + + + restituisce cognome e nome di un utente dato username e dominio... + + username + dominio + + + + + restituisce cognome e nome di un utente dato username eventualmente comprensivo di dominio... + + {dominio\}userName + + + + + restituisce l'elenco delle funzioni abilitate dato modulo ed username partendo dalla radice dell'albero dei diritti + + + + + + + + restituisce l'elenco degli utenti dato i diritti che devono avere come modulo/funzione + + nome del modulo + nome della funzione + tabella utenti + + + + restituisce l'elenco delle email degli utenti dato i diritti che devono avere come modulo/funzione + + nome del modulo + nome della funzione + stringa di email separate da "," + + + + crea un nuovo utente con le credenziali indicate + + + + + + + + + + + + assegna il diritto all'utente indicato + + + + + + + + + + + toglier il diritto all'utente indicato + + + + + + + + + + + restituisce la tabella (per utente corrente) dei CDC abilitati per l'applicazione attuale da sessione (se non c'è salva...) + + modulo di cui si testano i diritti + + + + + versione statica della classe utente come singleton UtenTeSignletoN + + + + + restituisce la tabella diritti da session + + + + + tabella dei permessi utente + + + + + tabella dei permessi utente di tipo "WRITE" enabled + + + + + retituisce username AD + + + + + oggetto utente con metodi get/set + + + + + oggetto dominio con metodi get/set + + + + + oggetto modulo (applicazione) con metodi get/set + + + + + oggetto lingua utente con metodi get/set + + + + + restituisce true se utente forzato da forceUser.aspx + + + + + restituisce i valori della riga utente da db + + + + + restituisce una stringa formattata con cognome, nome e matricola + + + + + restituisce una stringa della sigla dell'utente + + + + + restituisce una stringa formattata con cognome e nome + + + + + restituisce una stringa formattata con cognome + + + + + restituisce una stringa formattata con nome + + + + + fornisce un file XML della mappa del sito abilitato per l'utente... + + + + + è un boolean che indica se in session ci siano user/dominio e quindi utente autenticato in rpecedenza... + + + + + Accesso in lettura e scrittura al filesystem per gestione files upload e download + + + + + path di lavoro dei metodi leggi/scrivi + + + + + verifica esistenza directory ed eventualmente crea restituendo nome completo di "/" finale + + + + + + + restituisce una tab di files dato l'elenco dei files + + + + + + + setta le directory + + + + + + oggetto WebClient + + + + + inizializza il metodo alla cartella indicata + + + non serve +... x retrocompatibilità... + + + + metodo di avvio empty + + + + + cerca di caricare il fileinfo o da httpcontext-application re-position o direttamente come workpath + nomefile + + + + + + + cerca di caricare il fileinfo o da httpcontext-application re-position o direttamente come workpath + nomefile + + + + + + + + cerca di caricare la directoryInfo o da httpcontext-application re-position o direttamente come workpath + + + + + + + Legge i dati da uno stream fino a quando arriva alla fine. + I dati sono restituiti come un byte[] array. un eccezione IOException è + sollevata se una delle chiamate IO sottostanti fallisce. + + Lo stream da cui leggere + Lunghezza buffer iniziale (-1 = default 32k) + + + + verifica esistenza directory, eventualmente crea e restituisce controllo DirectoryInfo + + + + + + ottiene il dataset dei files presenti nella directory indicata esplicitamente + + dir da indicizzare... già mappata! ( es SteamwareStrings.getFilePath(...) ) + + + + + ottiene il dataset dei files presenti nella directory indicata all'istanziazione dell'oggetto + + + + + + ottiene il dataset dei files DEL TIPO "like {param}" presenti nella directory indicata all'istanziazione dell'oggetto + + + + + + elenco dei files come array di oggetti FileInfo + + + + + + elenco dei files come array di oggetti FileInfo filtrati per parametro + + + + + + + elimina la directory di lavoro se è dir virtuale mappata + + + + + + elimina tutti i files con la regexp indicata da una directory, true se cancellato almeno uno + + regexp selezione files in dir (* = tutti!!!) + + + + + verifica se il file indicato esista in workDir + + + + + + + elimina il file indicato dalla directory di lavoro + + + + + + + restituisce lo stream del file richiesto + + + + + + + restituisce la stringa letta dal file richiesto + + + + + + + scrive il file dallo stream byte[] inviato + + + + + + + + scrive il file dalla stringa inviata + + + + + + + + converte una string in un byte[] + + + + + + + converte un byte[] in una string + + + + + + + sposta il file da From a To... + + + + + + + + + copia il file da From a To... + + + + + + + + + copia il file da From a To... + + + + + + + + + + imposta la dir di lavoro + + + + + + imposta la dir di lavoro + + + non serve +... x retrocompatibilità... + + + + imposta la dir di lavoro impostandola dal mapPath corretto della web app... + + + + + + esegue un comando in shell + + + + + + + + + esegue un comando in shell + + + + + + + + + Scarica un file dall'url fornito nella directory indicata x il filemover col nome richiesto + + url del file + nome con cui salvare il file + + + + + comprime zip il file indicato + + + + + + + comprime zip i files corrispondenti alla RegExp indicata nella dir corrente + + Espressione ricerca, come *.txt + Nome del file zip da creare + + + + + calcola la dim della directory corrente... + + + + + + + elimina il file + vecchio + + + + + + + versione statica (singleton) del'oggetto fileMover + + + + + classe per effettuare confronto tra valori disomogeneri per tipo e costruire diff testuali + + + + + valore originale + + + + + nuovo valore + + + + + dictionary dei parametri vecchi + + + + + dictionary dei parametri nuovi + + + + + inizializzazione classe + + + + + valorizza i diff dei valori old e new + + + + + calcola solo il vettore dei valori old (x delete) + + + + + oggetto statico per il confronto valori + + + + + stringa diff dei valori originali modificati + + + + + stringa diff dei valori nuovi modificati + + + + + dictionary dei parametri old + + + + + dictionary dei parametri new + + + + + classe gestione logging esteso di eventi e note utente (correlabili) + + + + + TableAdapter di accesso alla tabella anagrafica filtraggi + + + + + TableAdapter di accesso alla tabella anagrafica record + + + + + TableAdapter di accesso alla tabella logging record di eventi + + + + + TableAdapter di accesso alla tabella logging utente + + + + + TableAdapter di accesso alla vista logging eventi + + + + + TableAdapter di accesso alla vista logging utente + + + + + effettua setup dei connection strings da web.config delal singola applicazione + + + + + avvio i tari tableAdapters + + + + + avvio della classe istanziando db e + + + + + oggetto statico di accesso ai metodi della classe... + + + + + tabella eventi + + + + + + tabella note + + + + + + tabella eventi secondo filtro + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + + + + + tabella note secondo filtro + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + + + + + tabella eventi secondo filtro e condizione ulteriore WHERE esplicitata + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + ulteriore condizione WHERE per filtrare i dati (testo {0} della condizione "WHERE {0}" + + + + + tabella note secondo filtro e condizione ulteriore WHERE esplicitata + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + ulteriore condizione WHERE per filtrare i dati (testo {0} della condizione "WHERE {0}" + + + + + tabella note secondo filtro + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + + + + + inserisce l'evento indicato dai parametri + + user che ha generato l'evento + pagina/form applicaizone in cui l'evento si è generato + valore originale(se c'è) + valore nuovo/modificato + descrizione evento (poi gestita con anagrafica interna) + filtro logico evento (poi gestita con anagrafica interna) + + + + inserisce la nota utente indicata dai parametri, restituisce idx della nota creata... + + user che ha inserito la nota + testo della nota + valore ulteriore da associare alla nota (es: label, codice, versione, ...) + filtro logico evento (poi gestita con anagrafica interna) + intero dell'idx della nota creata + + + + associa l'evento e la nota indicati + + idx del record da associare + idx chiave della nota da associare + + + + associa l'ultimo evento del filtro indicato alla nota + + filtro associato all'ultimo evento... + idx chiave della nota da associare + + + + segna come cestinati tutti gli eventi dell'utente indicato non ancora associati o cestinati + + utente generatore dell'evento + + + + segna come cestinati tutti gli eventi dell'utente indicato non ancora associati o cestinati + + utente generatore dell'evento + + + + Elimina gli eventi cestinati generati dall'utente indicato + + utente generatore dell'evento + + + + Elimina gli eventi cestinati anteriori alla data selezionata + + dataOra dell'evento + + + + effettua la registrazione dell'evento in session + + + + + metodo di comportamento del controllo di logging + + + + + nasconde pannello log + + + + + memorizza log inserito + + + + + mostra pannello log + + + + + metodo di comportamento del controllo di logging + + + + + indica il primo step del doppio livello di approvazione (completamento) + + + + + SOLO con incremento indice di revisione dell'oggetto approvato + + + + + SOLO mantenendo indice di revisione corrente + + + + + permette SIA con revisione che senza (e anche rev -1) + + + + + Pagina base applicazioni SteamWare da cui derivare le altre + + + + + Iniziazlizzazione void (non fa nulla) + + + + + Metodo MAIN: viene eseguita al caricamento ed effettua delle routines per il controllo utente e istanzia l'oggetto memLayer + + + + + + + rimanda alla pagina di Work In Progress salvando in session un titolo ed una descrizione che al pagina wip poi mostrerà all'utente + + titolo da mostrare nella pagina WIP + descrizione da mostrare nella pagina WIP + diff --git a/GMW/GMW_Term/bin/SteamWare.dll b/GMW/GMW_Term/bin/SteamWare.dll index 1a2b6945f6e052c34ef4b018f40037cd1f64f0c0..9c3c41667893b2f76089eb59052463586e324ae8 100644 GIT binary patch delta 86 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 IM6N<$f=*rgtpET3 literal 0 HcmV?d00001 diff --git a/GMW/GMW_Term/images/Udc.png b/GMW/GMW_Term/images/Udc.png new file mode 100644 index 0000000000000000000000000000000000000000..f7a82ffa2c70a64e2c780fe2bf85afa3ed7a2579 GIT binary patch literal 1642 zcmV-w29^1VP)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBU%=t)FDR5(u+lW9;>R}{xDC=|n@q|pLugn?pPWl_Np*+c;a6j_Qz zlto1;P=SI~WD^v_W(de016g=4c`wP!Tk?{Zl|WFe<4iwvndx-8%~+MGwliI(%ZGM) zJM)_}ckbMK{^$J9y*_^r_WKJ2;GchipC8z;k!7uK?A(zc5`Xjbsl&Va?8l${0t1s% z(|94luBGLw3pIKp`R(`LGgy-u~lJ zv5a)GC@yI`@Hu-ZYgw&ZQehUk`rXv5mNV7YYa4QtQ^)!wS;^w=*7oYtXRFF8IzPGr zqzQ4a#z%jfoBds>Sf80x6cv>O1+8QFGrh4OJR%Z+9RM5=M$+Sx2L$2r?!Nl`A^`v? z+aui?omXe_;$%%;@yV1-X-98z%sZnuC3$H_8*45%Uv4bPE0lEK0u@2LFNO!6EAGEg zExgoeU0q!V0C+Mp_rmV1O-qmV@eKnYh8K*=#t-a@Y&lmo(b4ld08s%!y3u=Uqy^Gb z-y)9Ps~8zSxO;DJTgQd6b7lEOcRG4=(~peY8URTEaNS)`G5wbs%~x7%ZE7|efXORO zPYlKz=c={>5CT9T07IRf#W^_{`;!zyQa|y`;(TG&aoMe*w0+{C9!cTRf|g5H zK&)R-aiR!L%)Nlv6>3hgSdyBRu_wV}Vv#BNEoDLC0#)PRj79D**iFm>yQi|G zJTD`A_~xC&=)J?;lG5B$F#EOo*8KEbAZhB1*tlh;Px_E_+80TS+BhQ_}jw%=Jc+PFp1tTdn#%J5Bs8}(P6CR=0G`@uee+jxR4 z{+nAaH`i8N5baBzkjg>>gP}(K#X8zRLXCwfd0BqR+~{;yb2~DlTAWsCrj(qXH7ar7 zM$NlJg-zv`Y#I^*1?(stzvHdSg7+SA-npU4008IwKiQ%z_%^~e3#RVMGLjDow?@Fi z2?XbiETbclIW>h6R@@9RYbgi8Ei;}+_BFsMji*G}S$jl`0`uS&7*_~eQQGkszR-$L z#5}gmKa>ajB6wR*WaiBbPm~@nq)=SeKRnVav71;36mZdYCuK9Ju!lA;Ozk4=7L1`Z zBm~Gh`fk)V3ODib$@vw+N-0o}fo-pC-V+gn&8VFQYjbr2H1vAI)%h_wjSz+fbk*u! zqHQazbJgl$P?LkOa(eR;?bOffVEHDsVTp3HTJx&K>n2^GI{%d9!)sANq3{R6Uqde- zZauYlPcH51x1gj$Z-IB9n-<*s*tKReuns*-sWFeq%3-8w0i#rUFXPhBYu%Is9)r+` zX~n$EAT+edNjSijigR<4!TQtX$oK?@Xc-O4>GVz`{m|;R;uN96S)69HlnEhdl+-B@ zPD>f&nuoN5)0$ic%Q9(yZ1dW2vr(b5<18#$JBw;2)q@=aEwwFeb#1^XmwPE{jb%Lq zVaN3>f|`^X7eU#LW(!7oSeK2kFc|G(oG>~_Zk2JdDjW(})OxtKq9nUWtWb^ztOxoz oFH@A}l%&O{LK31ADvK-s1KQNq2Pv&$4*&oF07*qoM6N<$f>@~v8~^|S literal 0 HcmV?d00001 diff --git a/GMW/GMW_Term/obj/Debug/GMW_Term.csproj.FileListAbsolute.txt b/GMW/GMW_Term/obj/Debug/GMW_Term.csproj.FileListAbsolute.txt index 6a627e52..d073ad8f 100644 --- a/GMW/GMW_Term/obj/Debug/GMW_Term.csproj.FileListAbsolute.txt +++ b/GMW/GMW_Term/obj/Debug/GMW_Term.csproj.FileListAbsolute.txt @@ -1,3 +1,4 @@ +c:\Users\samuele.STEAMWAREWIN\Documents\Visual Studio 2008\Projects\GMW\GMW_Term\obj\Debug\ResolveAssemblyReference.cache c:\Users\samuele.STEAMWAREWIN\Documents\Visual Studio 2008\Projects\GMW\GMW_Term\bin\GMW_Term.dll c:\Users\samuele.STEAMWAREWIN\Documents\Visual Studio 2008\Projects\GMW\GMW_Term\bin\GMW_Term.pdb c:\Users\samuele.STEAMWAREWIN\Documents\Visual Studio 2008\Projects\GMW\GMW_Term\bin\AjaxControlToolkit.dll @@ -24,6 +25,5 @@ c:\Users\samuele.STEAMWAREWIN\Documents\Visual Studio 2008\Projects\GMW\GMW_Term c:\Users\samuele.STEAMWAREWIN\Documents\Visual Studio 2008\Projects\GMW\GMW_Term\bin\tr-TR\AjaxControlToolkit.resources.dll c:\Users\samuele.STEAMWAREWIN\Documents\Visual Studio 2008\Projects\GMW\GMW_Term\bin\zh-CHS\AjaxControlToolkit.resources.dll c:\Users\samuele.STEAMWAREWIN\Documents\Visual Studio 2008\Projects\GMW\GMW_Term\bin\zh-CHT\AjaxControlToolkit.resources.dll -c:\Users\samuele.STEAMWAREWIN\Documents\Visual Studio 2008\Projects\GMW\GMW_Term\obj\Debug\ResolveAssemblyReference.cache c:\Users\samuele.STEAMWAREWIN\Documents\Visual Studio 2008\Projects\GMW\GMW_Term\obj\Debug\GMW_Term.dll c:\Users\samuele.STEAMWAREWIN\Documents\Visual Studio 2008\Projects\GMW\GMW_Term\obj\Debug\GMW_Term.pdb diff --git a/GMW/GMW_Term/obj/Debug/GMW_Term.dll b/GMW/GMW_Term/obj/Debug/GMW_Term.dll index 00ac49db624ff9f48bd67804d484c5ae6ffbf912..1debf2930282886ae1938012074b1d2708c8de79 100644 GIT binary patch literal 41472 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 diff --git a/GMW/GMW_Term/obj/Debug/ResolveAssemblyReference.cache b/GMW/GMW_Term/obj/Debug/ResolveAssemblyReference.cache index eedd9775b3e332b0c94e73a2e359b347b9b02c21..cb348e7729d8b85d92de8a1196a6ab141febb887 100644 GIT binary patch delta 4849 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 ZbiH?2|6xDA delta 4949 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 diff --git a/GMW/GMW_data/bin/Debug/GMW_data.dll b/GMW/GMW_data/bin/Debug/GMW_data.dll index 70754cd4bf3cc47479c518250ba3b1ab573834d5..79266c24a1746884a58d1fbc982d04da675f3a13 100644 GIT binary patch delta 114 zcmZoTVA*iMazY2Q`}N+&?$&O`)^4WOZsyi*mey|8)^4`eZuZu0j@E9@)^4uWZtm7@ zp4M*Ot=)WU1q8ls)M^&uEAVWweN?4uJbCeU4?(^VcaTBT=ST2K3VyYJG4a5>qi+5A SwP#LAIYcpTKN-Pi&JF-w$}SfG delta 114 zcmZoTVA*iMazY35v!JfV?$&O`)^4WOZsyi*mey|8)^4`eZuZu0j@E9@)^4uWZtm7@ zp4M*Ot=)WU1q2u_iJMr~-0<46A;x4%rs$IG9)f%!?jVDv&yV1f6bzH9KUXI1>)Y?N SasJ&OoNY|oPe$;WvjYG&8Z46l diff --git a/GMW/GMW_data/bin/Debug/SteamWare.dll b/GMW/GMW_data/bin/Debug/SteamWare.dll index 1a2b6945f6e052c34ef4b018f40037cd1f64f0c0..9c3c41667893b2f76089eb59052463586e324ae8 100644 GIT binary patch delta 86 zcmZqpBiissbV3KS+x6bY?$&O`)^4WOZsyi*maW~ao_+#eyE86Iap?QczGQ=mp59%?DkSteamWare + + + classe gesione log files applicazioni + + + + + directory base x logs + + + + + nome del file corrente + + + + + max mb di log da accumulare + + + + + singleton del logger + + + + + avvio del logger nella dir desiderata + + + + + avvio del logger nella dir desiderata + + + + + avvio del logger nella dir desiderata con il max di dati indicato + + + + + scrive sul file log di default il valore della variabile string passata su una riga... (tab delim?!?) + + testo iniziale del log + + + + + scrive un messaggio di log con etichetta pre + + testo messaggio + tipo di log da registrare (etichetta [...]) + + + + + fornisce il nome del file in cui loggare (ed eventualmente crea...) + + + + + provvede a verificare la dim della cartella dei log e cancella i + vecchi fino a restare a dim inferiori a _logMaxMb + + + + + fornisce il file + vecchio + + + + + + + tipo di log ammesso + + + + + informazioni di debug + + + + + errori + + + + + eccezioni nell'esecuzione try/catch + + + + + errori fatali + + + + + informazioni opzionali + + + + + fase di avvio componente + + + + + avvisi + + + + + classe di wrap verso i TableAdapter impiegati + + + + + metodo protected di avvio della classe + + + + + procedura di avvio dei tableAdapter + + + + + procedura di avvio dei tableAdapter + + + + + effettua setup dei connection strings da web.config delal singola applicazione + + + + + effettua setup dei connection strings da web.config delal singola applicazione + + + + + setup delle tabelle vocabolario + + + + + prende l'oggetto tabVocabolario in ram e lo trasforma in dictionary + + + + + + tableAdapter diritti + + + + + tableAdapter permessi + + + + + tableAdapter funzione + + + + + tableAdapter permessi2funzione + + + + + tableAdapter CdC + + + + + tableAdapter utenti + + + + + table adapter lingue + + + + + table adapter vocabolario + + + + + table adapter versione vocabolario + + + + + table adapter versione anagrafica + + + + + oggetto vocabolario organizzato come dizionario con chiave lang#lemma e valore la traduzione + + + + + resetta il vocabolario rileggendo i dati... + + + + + crea nel db corrente il lemma richiesto e lo valorizza come "--{0}--" + + + + + + + classe singleton x la gestione dei tableadapters + + + + + elenco lingue ammesse da vocabolario... + + + + + classe di gestione lettura + + + + + esegue parsing fornendo dati ed headers + + + + + + + + esegue parsing fornendo dati + + + + + + + esegue parsing fornendo dati come stream + + + + + + + esegue parsing fornendo dati come stream ed headers + + + + + + + + struttura di comando da input utente (es: via barcode) + + + + + definisce se il comando sia valido o no + + + + + testo da mostrare dato il comando + + + + + comando registrato + + + + + comando precedentemente inserito + + + + + descrizione del comando + + + + + descrizione del comando precedente + + + + + valore del comando + + + + + valore tradotto del comando + + + + + costruttore del metodo... + + + + + Base class for every user control in the application, containing some common + behaviour and utility methods. + It is not meant to be be used directly. + + + + + tipo id controllo con classi di base comune da cui derivare gli *.asmx + + + + + nome della pagina correntemente caricata + + + + + memorizza la pagina precedente (ovvero la corrente ma non da page-object ma in session... + + + + + stringa con CDC in (...) dei cdc abilitati (da permesso gerarchicamente a discendere...) + + + + + stringa con elenco CDC abilitati (da permesso gerarchicamente a discendere...) + + + + + tabella diritti + + + + + tabella di tutti i cdc + + + + + tipo di anagrafica usata + + + + + importo il tipo di vista del modulo + + + + + elenco testuale csv dei cdc accessibili all'utente (x filtri tipo IN(...)) + + + + + numero di righe standard x i datagrid + + + + + numero di righe standard x i datagrid di anagrafica + + + + + numero di righe standard x i datagrid lunghi + + + + + numero di righe standard x i datagrid medi + + + + + numero di righe standard x i datagrid su mezza pagina + + + + + numero di righe standard x i selettori popup + + + + + indirizzo email dell'admin applicativo cui vanno le email in caso di anomalie... + + + + + indirizzo email dell'applicativo da cui partono le email in caso di anomalie... + + + + + indirizzo server SMTP + + + + + elenco delle pagine "safe" ovvero da non autorizzare - da web.config + + + + + elenco delle pagine "common" ovvero da autorizzare ma senza bisogno diritti in anagrafica - da web.config + + + + + valore che determina se è possibile forzare impersonificazioen utente... + + + + + livello di log (1-->5) + + + + + dir di logging + + + + + MAIN: esecuzione al caricamento del modulo delle routines di controllo utente e creazione pagina + + + + + + + predisposizione dati x pagina da cache/database a seconda della disponibilità in cache o refresh (B.1.4) + + + + + popola gli oggetti e le labels... (B.1.6) + + + + + disegna la pagina: prima i controlli poi il datagrid + + + + + aggiunge i link x i selettori + + + + + sistema i vari controlli della pagina + + + + + aggiorna eventuali datalist e datagrid + + + + + sistema tutte le labels traducendo i lemmi nella lingua utente ed in inglese + + + + + calcola come percentuale la radio dividendo/divisore + + + + + + + + limita una stringa al numero max di caratteri imposto + + + + + + + + Reads data from a stream until the end is reached. The + data is returned as a byte array. An IOException is + thrown if any of the underlying IO calls fail. + + The stream to read data from + The initial buffer length + + + + converte una data in formato aaaammgg in stringa gg/mm/aaaa + + + + + + + converte una data in formato aaaammgg in stringa aaaa-mm-gg + + + + + + + converte una stringa in formato gg/mm/aaaa in stringa(intero data) in formato aaaammgg + + + + + + + converte una datetime in un intero tipo yyyymmddhhmmss + + + + + + + formatta la data in formato dateTime in una data formato italiano come stringa gg/mm/aaaa + + + + + + + invia un alert jscript con messaggio indicato... + + messaggio dell'alert da mandare + + + + scrive immediatamente sulla pagina web il messaggio di avanzamento... + + + + + + restituisce una scringa formattata in testa e coda x essere un corretto comando javascript + + + + + + + invio email senza log + + + + + + + + + + invio email con log + + + + + + + + + + caricamento dati applicazione da sessione (B.1.3) + + + + + setup datamanagers... + + + + + reset update del modulo corrente + + + + + (ri)carica i dataset del modulo + + + + + verifica se tutti i dataset richiesti sono disponibili i cache + + + + + + salva nella cache i dataset caricati + + + + + carica dalla cache i dataset necessari + + + + + legge i valori standard x dataset e parametri + + + + + leggi i parametri di configurazione standard dell'applicativo + + + + + genera la stringa dei cdc autorizzati dell'utente + + + + + legge il dataset dei CdC + + + + + caricamento dati user da sessione (B.1.1) + + + + + verifica che l'utente abbia almeno un permesso per la pagina corrente altrimenti redirect ad unauthorized + + + + + salva in variabile pagina il nome della pagina corrente + + + + + selezione delle posizioni cdc autorizzate come stringa di filtraggio su POSIZIONE LIKE, se non ce ne fossero redirige su unauthorized.aspx + + + + + + risponde alla domanda se l'utente abbia permesso tipo writable (S) nel permessi2funzione + + + + + + verifica la condizione booleana e formatta di conseguenza la stringa di filtraggio da accodare al filtro x CdC autorizzati + + condizione + tipo di eguaglianza + nome parametro + valore parametro + + + + + crea la stringa di filtraggio x data secondo modalità tipo inizio/fine/durante... + + + + + + crea la stringa di filtraggio x data secondo modalità tipo minoreUguale / uguale / maggioreUguale... + + + + + + verifica la condizione booleana e formatta di conseguenza la stringa di filtraggio tipo LIKE x i campi inseriti separati da # SE valParam !="" + + + + + + + + esegue la ricerca dei cdc nelle posizioni indicate dal filtro e restituisce elenco distinct degli stessi + + filtro con cui cercare i cdc (del tipo " (POSIZIONE LIKE 'T.1.2.3%') OR ... " + stringa di filtraggio ricostruita per l'elenco dei cdc fino a quel momento trovati + ultimo cdc trovato + cdc corrente + + + + + restituisce il cdc dell'utente data la sua matricola + + + + + + + restituisce l'utente AS dall'utente win + + + + + + + restituisce la descr del CdC + + + + + + + invia la stringa jscript di conferma pre-cancellazione + + + + + + restituisce la stringa del path corretto per l'immagine richiesta nel formato "~/images/{0}{1}" + + verrà usato x posizione {0}, tipo "view" + verrà usato x posizione {1}, tipo "_s.png" + + + + + restituisce la stringa del path corretto per l'immagine richiesta nel formato "~/images/{0}{1}" + + verrà usato x posizione {0}, tipo "view" + verrà usato x posizione {1}, tipo "_s.png" + tipo del file richiesto..." + + + + + effettua traduzione del lemma + + + + + + + effettua traduzione in inglese del lemma + + + + + + + definisce visibilità + + + + + + + effettua la registrazione degli eventi + + + + + effettua l'inserimento vero e proprio dell'evento letto dai valori in session x l'utente corrente... + + evento da loggare + valori originali + nuovi valori + filtro associato + + + + salva in sessione i valori indicati + + dictionary dei valori vecchi + dictionary dei valori nuovi + bool su abilitazione al log dell'oggetto + descrizione evento da loggare + filtro associato all'evento + restituisce il numero di elementi contenuti, -1 significa nessuna differenza... + + + + salva in sessione i valori per un oggetto che sta x essere eliminato + + dictionary dei valori vecchi + bool su abilitazione al log dell'oggetto + descrizione evento da loggare + filtro associato all'evento + restituisce il numero di elementi contenuti, -1 significa nessuna differenza... + + + + imposto il tipo di anagrafica del controlloS + + + + + variabile salvata in view state x la stringa di sorting - dg 2 + + + + + variabile salvata in view state x la stringa di sorting - dg 2 + + + + + legge e scrive in viewState la stringa di filtraggio... + + + + + variabile salvata in viewstate x la direzione del sorting + + + + + genera la stringa filtro x i cdc autorizzati x l'user + + + + + + tipo di vista del modulo + + + + + Summary description for selettori + + + + + + + + + + + + + + + carica i dati CdC se in cache o da TableAdapter + + + + + restituisce l'elenco di tutti i cdc + + + + + + restituisce l'elenco di tutti i cdc della gerarchia dell'utente + + + + + + Represents a strongly typed in-memory cache of data. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + classe di gestione dei db x creazione/update alla versione richiesta + + + + + oggetto connessione + + + + + stringa di connessione + + + + + dir che contiene gli script da eseguire... + + + + + formato del file SQL impiegato (nel senso di formato come iFormat del tipo "App_{0:0000}.sql" --> da App_0001.sql ad App_9999.sql) + + + + + avvio protected della classe + + + + + esegue gli script di sql di update dal file richiesto + + + + + + + + Aggiorna il db eseguendo gli script dalla versione di partenza a quella di arrivo + + NB: per definizione rev 0 = resetta svuotando DB, rev 1 crea tabelle iniziali, rev 2 inserisce i valori di default + + nome DB di cui cercare script + revisione di partenza + revisione di arrivo + timeout max per ogni operazione + + + + + verifica se il db indicato esiste o meno... + + + + + + + + crea il db indicato con i parametri di connessione specificati + + + + + + + + Represents a strongly typed in-memory cache of data. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + classe con funzioni specifiche di calcolo + + + + + inizializzazione classe + + + + + elenco dei caratteri base 36: 0..9A..Z + + + + + + converte da base di dimensione nBase a valore intero + + valore in formato nBase + base, max 36 (0..9A..Z) + + + + + metodo di accesso singleton + + + + + tipo di chart (2D/3D) + + + + + 2D + + + + + 3D + + + + + web control che disegna un grafico a torta + + + + + altezza di default + + + + + larghezza di default + + + + + padding di default + + + + + legenda visibile di default + + + + + soglia minima 5% per mostrare il dato + + + + + renderizza il contenuto + + + + + + disegna la leggenda html laterale... + + + + + + disegna piechart 2-dim + + + + + + disegna piechart 3d ellittica + + + + + + traduce la stringa colore in oggetto colore + + + + + + + converte intero a stringa esadecimale + + + + + + + converte stringa esadecimale a intero + + + + + + + tipo di grafico (2D/3D) + + + + + ampiezza del grafico + + + + + altezza del grafico + + + + + padding grafico/container + + + + + boolean se si debba mostrale la legenda + + + + + percentuale minima da mostrare + + + + + serie di dati (tipizzata) ma mostrare + + + + + testo associato al controllo + + + + + layer gestione vari tipi di memoria: cache, session... + + + + + lettore file configurazione + + + + + oggetto singleton x accesso al layer di memoria + + + + + classe gestione accessi a Session, cache, viewstate, configuration... + + + + + legge dalla config un valore bool + + + + + + + legge dalla config un valore string + + + + + + + legge dalla config un valore int + + + + + + + carica dalla sessione un dato di tipo object generico + + + + + + + carica dalla sessione un dato di tipo boolean (se vuoto false) + + + + + + + carica dalla sessione un dato di tipo string + + + + + + + carica dalla sessione un dato di tipo long + + + + + + + carica dalla sessione un dato di tipo int + + + + + + + inserisce in session un valore + + + + + + + salvo un valore come cookie + + + + + + + + restituisco un valore da cookie + + + + + + + inserisce in session un valore + + nome della variabile + valore associato + indica se debba sopravvivere ad update (inserita in elenco valSess2SurvUpd) + + + + + svuota una variabile dalla session + + + + + + restituisce true se è presente in session l'oggetto richiesto + + + + + + + carica dalla Cache un dato di tipo object generico + + + + + + + carica dalla Cachee un dato di tipo boolean (se vuoto false) + + + + + + + carica dalla Cachee un dato di tipo string + + + + + + + inserisce in Cache un valore + + nome della variabile + valore + + + + inserisce in Cache un valore e su richiesta regitra tra le tab in cache da svuotare on update.. + + nome della variabile + valore + da registrare come tabella da svuotare on update? + + + + + svuota una variabile dalla Cache + + + + + + restituisce true se è presente in cache l'oggetto richiesto + + + + + + + aggiunge la stringa corrente nel dictionary delle tabelle messe in cache e da aggiornare su comando update + + + + + + aggiunge la stringa corrente nel dictionary delle tabelle messe in session che vanno preservate da comando update (es: oggetto selezionato...) + + + + + + + forza lo svuotamento delel tabelle indicate come in cache... + + + + + elenco dictionary delle tab in cache da aggiornare con update svuotando da cache... + + + + + elenco dictionary dei valori in session da NON aggiornare con update... + + + + + classe gestione parametri deviceper stampa + + + + + creazione oggetto parametri per stampa + + + + + + + + + + + + formato output + + + + + altezza + + + + + larghezza + + + + + margine Sx + + + + + margine Dx + + + + + margine Top + + + + + margine Bottom + + + + + enumeratore modalità login + + + + + login AD normale + + + + + forza utente fornendo password + + + + + forza ad un utente standard scelto dall'elenco + + + + + enumeratore modalità scrittura tag siteMap + + + + + nodo di tipo iniziale - apertura + + + + + nodo di tipo foglia + + + + + nodo di tipo finale - chiusura + + + + + enumeratore tipi di anagrafica + + + + + tipo di anagrafica Brembo + + + + + tipo di anagrafica generica + + + + + tipo di vista del modulo + + + + + modalità selezione + + + + + modalità editing + + + + + tipologia di file immagine + + + + + formato gif (no alpha channel) + + + + + formato jpeg + + + + + formato png + + + + + tipo di immagini usate per le icone di comando in web applications + + + + + icona annulla (croce rossa) + + + + + icona approva (simbolo coccarda) + + + + + icona barcode in campo bianco + + + + + icona barcode in campo arancio + + + + + icona clona (magic wand) + + + + + icona converma (spunta verde) + + + + + icona elimina (cestino) + + + + + icona modifica (matita) + + + + + icona notepad (blocco note) + + + + + icona notepad + pdf (blocco note) + + + + + icona nuovo (segno +) + + + + + icona seleziona (lente) + + + + + icona semaforo giallo + + + + + icona semaforo rosso + + + + + icona semaforo verde + + + + + icona stampa (printer) + + + + + dimensione immagini usate per le icone di comando in web applications + + + + + formato piccolo + + + + + formato medio + + + + + formato grande + + + + + definisce un intervalo di 2 date + + + + + data inizio + + + + + data fine + + + + + struttura orario ordinarie/strordinarie + + + + + ore ordinarie + + + + + ore straordinarie + + + + + classe di funzioni inerenti le date + + + + + inizializzazione empty + + + + + effettua l'operazione di intersezione tra 2 intervali di date restituendo ulteriore intervallo: NB se sono intervali disgiunti restituisce 9/9/9999 x inizio e fine + + + + + + + + oggetto mese precedente alla dataLilmite + + + + + + oggetto mese corrente fino alla dataLilmite + + + + + + confronta le date e restituisce true se le date sono nello stesso mese + + + + + + + + restituisce l'intervallo del giorno completo che comprende la data indicata + + + + + + + restituisce l'intervallo di N giorni fino alla data indicata + + + + + + + + restituisce l'intervallo della settimana corrente per la data indicata + + + + + + + restituisce l'intervallo del mese corrente per la data indicata + + + + + + + restituisce l'intervallo del mese che comprendela data indicata + + + + + + + restituisce l'intervallo dell'anno corrente per la data indicata + + + + + + + classe di gestione delle email + + + + + stringa nel nome DNS o dell'ip del server SMTP + + + + + metodo static per la gestione delle email + + + + + + metodo static per la gestione delle email + + + + + + + procedura invio email + + email mittente + email destinatario + oggetto dell'email + corpo del messaggio + + + + procedura invio email + scrittura in log! + + email mittente + email destinatario + oggetto dell'email + corpo del messaggio + + + + metodo singleton gestione email... + + + + + Tipo di comparazione, Binary == CaseSensitive, Text = insensitive + + + + + tipo controllo : binario + + + + + tipo controllo : text + + + + + Funzione di splitting compatibile con multi-character e multi-line + + + + + stringa da splittare + + + + + Delimiter con cui splittare + + + + + Costruttore dello Splitter + + + + + comparatore case sensitive + + + + + + + + comparatore case insensitive + + + + + + + + parte principale dello splitter + + stringa da splittare + delimitatore ricercato + true=il delimiter è un blocco unico, false=qualsiasi oggetto del delimiter fa split (come split base) + + 0 -> Binary=CaseSensitive, 1 -> Text=case insensitive + + + + + elimina dal nome file il tipo (desinenza) + + + + + + + Classe di metodi che estendono quelli base applicati alle string + + + + + Trasforma in MAIUSCOLo il primo carattere della stringa + + stringa da processare + stringa processata + + + + restituisce la stringa completa e corretta del filepath del server (anche con vDir) + + path relativo alla cartella iis dell'applicativo + path fisico tradotto + + + + effettua escape di stringhe di ricerca di tipo filtro per apici e altri caratteri non ammessi + + + + + + + fornisce dati di base per l'utente + + + + + fornisce cognome e nome utente formattati a partire dall'username e dalla tabella UTENTE + + + + + + + restituisce la riga completa dall'username richiesto + + + + + + + Represents a strongly typed in-memory cache of data. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + classe gestione utente: auth e permission/ruoli - versione GENERICA + + + + + cancella da session l'utente + + + + + carica la riga dati utente + + + + + Carica la tabella diritti dell'utente da db e salva in session + + + + + Carica la tabella diritti dell'utente da db e salva in session SOLO per il CDC indicato + + + + + + Effettua setup dei permessi una volta salvati i diritti + + + + + imposta la lingua utente dal valore della riga DB + + + + + costruisce la mappa del sito per l'utente + + + + + formatta un nodo in modo corretto dai dati indicati + + + + + + + + + inizializza la gestione utente... + + + + + traduce il lemma nella lingua dell'user corrente + + + + + + + traduce il lemma in inglese + + + + + + + traduce il lemma nella lingua dell'user e in inglese tra parentesi + + + + + + + LogOff utente con reset dati + + + + + + + + Procedura da chiamare DOPO aver messo in session i dati utente/dominio x caricare gli altri dati + + + + + + + + Procedura da chiamare DOPO aver messo in session i dati utente/dominio x caricare gli altri dati CON I DIRITTI SOLO per il CDC indicato + + + + + + + + + salva dati accessori quali il cdc dell'utente... + + + + + verifica nella tab diritti se l'utente abbia il right richiesto e fornisce bool in risposta + + + + + + + verifica le credenziali AD dell'utente... + + + + + + + + conta il numero di permessi utente per la pagina attuale e restituisce true se ne trova almeno 1 + + + + + + + verifica se il permesso utente per la pagina attuale sia write per almeno 1 diritto assegnato (restituisce true se ne trova almeno 1 con permessi2funzione.readwrite='S') + + + + + + + ricarica e ri-traduce la mappa sito per l'utente... + + + + + retituisce il nome apgina dai permessi utente + + + + + + restituisce cognome e nome di un utente dato username... + + username + + + + + restituisce cognome e nome di un utente data la matricola... + + matricola + + + + + restituisce cognome e nome di un utente dato username e dominio... + + username + dominio + + + + + restituisce cognome e nome di un utente dato username... + + username + + + + + restituisce cognome e nome di un utente dato username e dominio... + + username + dominio + + + + + restituisce cognome e nome di un utente dato username eventualmente comprensivo di dominio... + + {dominio\}userName + + + + + restituisce l'elenco delle funzioni abilitate dato modulo ed username partendo dalla radice dell'albero dei diritti + + + + + + + + restituisce l'elenco degli utenti dato i diritti che devono avere come modulo/funzione + + nome del modulo + nome della funzione + tabella utenti + + + + restituisce l'elenco delle email degli utenti dato i diritti che devono avere come modulo/funzione + + nome del modulo + nome della funzione + stringa di email separate da "," + + + + crea un nuovo utente con le credenziali indicate + + + + + + + + + + + + assegna il diritto all'utente indicato + + + + + + + + + + + toglier il diritto all'utente indicato + + + + + + + + + + + restituisce la tabella (per utente corrente) dei CDC abilitati per l'applicazione attuale da sessione (se non c'è salva...) + + modulo di cui si testano i diritti + + + + + versione statica della classe utente come singleton UtenTeSignletoN + + + + + restituisce la tabella diritti da session + + + + + tabella dei permessi utente + + + + + tabella dei permessi utente di tipo "WRITE" enabled + + + + + retituisce username AD + + + + + oggetto utente con metodi get/set + + + + + oggetto dominio con metodi get/set + + + + + oggetto modulo (applicazione) con metodi get/set + + + + + oggetto lingua utente con metodi get/set + + + + + restituisce true se utente forzato da forceUser.aspx + + + + + restituisce i valori della riga utente da db + + + + + restituisce una stringa formattata con cognome, nome e matricola + + + + + restituisce una stringa della sigla dell'utente + + + + + restituisce una stringa formattata con cognome e nome + + + + + restituisce una stringa formattata con cognome + + + + + restituisce una stringa formattata con nome + + + + + fornisce un file XML della mappa del sito abilitato per l'utente... + + + + + è un boolean che indica se in session ci siano user/dominio e quindi utente autenticato in rpecedenza... + + + + + Accesso in lettura e scrittura al filesystem per gestione files upload e download + + + + + path di lavoro dei metodi leggi/scrivi + + + + + verifica esistenza directory ed eventualmente crea restituendo nome completo di "/" finale + + + + + + + restituisce una tab di files dato l'elenco dei files + + + + + + + setta le directory + + + + + + oggetto WebClient + + + + + inizializza il metodo alla cartella indicata + + + non serve +... x retrocompatibilità... + + + + metodo di avvio empty + + + + + cerca di caricare il fileinfo o da httpcontext-application re-position o direttamente come workpath + nomefile + + + + + + + cerca di caricare il fileinfo o da httpcontext-application re-position o direttamente come workpath + nomefile + + + + + + + + cerca di caricare la directoryInfo o da httpcontext-application re-position o direttamente come workpath + + + + + + + Legge i dati da uno stream fino a quando arriva alla fine. + I dati sono restituiti come un byte[] array. un eccezione IOException è + sollevata se una delle chiamate IO sottostanti fallisce. + + Lo stream da cui leggere + Lunghezza buffer iniziale (-1 = default 32k) + + + + verifica esistenza directory, eventualmente crea e restituisce controllo DirectoryInfo + + + + + + ottiene il dataset dei files presenti nella directory indicata esplicitamente + + dir da indicizzare... già mappata! ( es SteamwareStrings.getFilePath(...) ) + + + + + ottiene il dataset dei files presenti nella directory indicata all'istanziazione dell'oggetto + + + + + + ottiene il dataset dei files DEL TIPO "like {param}" presenti nella directory indicata all'istanziazione dell'oggetto + + + + + + elenco dei files come array di oggetti FileInfo + + + + + + elenco dei files come array di oggetti FileInfo filtrati per parametro + + + + + + + elimina la directory di lavoro se è dir virtuale mappata + + + + + + elimina tutti i files con la regexp indicata da una directory, true se cancellato almeno uno + + regexp selezione files in dir (* = tutti!!!) + + + + + verifica se il file indicato esista in workDir + + + + + + + elimina il file indicato dalla directory di lavoro + + + + + + + restituisce lo stream del file richiesto + + + + + + + restituisce la stringa letta dal file richiesto + + + + + + + scrive il file dallo stream byte[] inviato + + + + + + + + scrive il file dalla stringa inviata + + + + + + + + converte una string in un byte[] + + + + + + + converte un byte[] in una string + + + + + + + sposta il file da From a To... + + + + + + + + + copia il file da From a To... + + + + + + + + + copia il file da From a To... + + + + + + + + + + imposta la dir di lavoro + + + + + + imposta la dir di lavoro + + + non serve +... x retrocompatibilità... + + + + imposta la dir di lavoro impostandola dal mapPath corretto della web app... + + + + + + esegue un comando in shell + + + + + + + + + esegue un comando in shell + + + + + + + + + Scarica un file dall'url fornito nella directory indicata x il filemover col nome richiesto + + url del file + nome con cui salvare il file + + + + + comprime zip il file indicato + + + + + + + comprime zip i files corrispondenti alla RegExp indicata nella dir corrente + + Espressione ricerca, come *.txt + Nome del file zip da creare + + + + + calcola la dim della directory corrente... + + + + + + + elimina il file + vecchio + + + + + + + versione statica (singleton) del'oggetto fileMover + + + + + classe per effettuare confronto tra valori disomogeneri per tipo e costruire diff testuali + + + + + valore originale + + + + + nuovo valore + + + + + dictionary dei parametri vecchi + + + + + dictionary dei parametri nuovi + + + + + inizializzazione classe + + + + + valorizza i diff dei valori old e new + + + + + calcola solo il vettore dei valori old (x delete) + + + + + oggetto statico per il confronto valori + + + + + stringa diff dei valori originali modificati + + + + + stringa diff dei valori nuovi modificati + + + + + dictionary dei parametri old + + + + + dictionary dei parametri new + + + + + classe gestione logging esteso di eventi e note utente (correlabili) + + + + + TableAdapter di accesso alla tabella anagrafica filtraggi + + + + + TableAdapter di accesso alla tabella anagrafica record + + + + + TableAdapter di accesso alla tabella logging record di eventi + + + + + TableAdapter di accesso alla tabella logging utente + + + + + TableAdapter di accesso alla vista logging eventi + + + + + TableAdapter di accesso alla vista logging utente + + + + + effettua setup dei connection strings da web.config delal singola applicazione + + + + + avvio i tari tableAdapters + + + + + avvio della classe istanziando db e + + + + + oggetto statico di accesso ai metodi della classe... + + + + + tabella eventi + + + + + + tabella note + + + + + + tabella eventi secondo filtro + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + + + + + tabella note secondo filtro + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + + + + + tabella eventi secondo filtro e condizione ulteriore WHERE esplicitata + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + ulteriore condizione WHERE per filtrare i dati (testo {0} della condizione "WHERE {0}" + + + + + tabella note secondo filtro e condizione ulteriore WHERE esplicitata + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + ulteriore condizione WHERE per filtrare i dati (testo {0} della condizione "WHERE {0}" + + + + + tabella note secondo filtro + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + + + + + inserisce l'evento indicato dai parametri + + user che ha generato l'evento + pagina/form applicaizone in cui l'evento si è generato + valore originale(se c'è) + valore nuovo/modificato + descrizione evento (poi gestita con anagrafica interna) + filtro logico evento (poi gestita con anagrafica interna) + + + + inserisce la nota utente indicata dai parametri, restituisce idx della nota creata... + + user che ha inserito la nota + testo della nota + valore ulteriore da associare alla nota (es: label, codice, versione, ...) + filtro logico evento (poi gestita con anagrafica interna) + intero dell'idx della nota creata + + + + associa l'evento e la nota indicati + + idx del record da associare + idx chiave della nota da associare + + + + associa l'ultimo evento del filtro indicato alla nota + + filtro associato all'ultimo evento... + idx chiave della nota da associare + + + + segna come cestinati tutti gli eventi dell'utente indicato non ancora associati o cestinati + + utente generatore dell'evento + + + + segna come cestinati tutti gli eventi dell'utente indicato non ancora associati o cestinati + + utente generatore dell'evento + + + + Elimina gli eventi cestinati generati dall'utente indicato + + utente generatore dell'evento + + + + Elimina gli eventi cestinati anteriori alla data selezionata + + dataOra dell'evento + + + + effettua la registrazione dell'evento in session + + + + + metodo di comportamento del controllo di logging + + + + + nasconde pannello log + + + + + memorizza log inserito + + + + + mostra pannello log + + + + + metodo di comportamento del controllo di logging + + + + + indica il primo step del doppio livello di approvazione (completamento) + + + + + SOLO con incremento indice di revisione dell'oggetto approvato + + + + + SOLO mantenendo indice di revisione corrente + + + + + permette SIA con revisione che senza (e anche rev -1) + + + + + Pagina base applicazioni SteamWare da cui derivare le altre + + + + + Iniziazlizzazione void (non fa nulla) + + + + + Metodo MAIN: viene eseguita al caricamento ed effettua delle routines per il controllo utente e istanzia l'oggetto memLayer + + + + + + + rimanda alla pagina di Work In Progress salvando in session un titolo ed una descrizione che al pagina wip poi mostrerà all'utente + + titolo da mostrare nella pagina WIP + descrizione da mostrare nella pagina WIP + diff --git a/GMW/GMW_data/obj/Debug/GMW_data.dll b/GMW/GMW_data/obj/Debug/GMW_data.dll index 70754cd4bf3cc47479c518250ba3b1ab573834d5..79266c24a1746884a58d1fbc982d04da675f3a13 100644 GIT binary patch delta 114 zcmZoTVA*iMazY2Q`}N+&?$&O`)^4WOZsyi*mey|8)^4`eZuZu0j@E9@)^4uWZtm7@ zp4M*Ot=)WU1q8ls)M^&uEAVWweN?4uJbCeU4?(^VcaTBT=ST2K3VyYJG4a5>qi+5A SwP#LAIYcpTKN-Pi&JF-w$}SfG delta 114 zcmZoTVA*iMazY35v!JfV?$&O`)^4WOZsyi*mey|8)^4`eZuZu0j@E9@)^4uWZtm7@ zp4M*Ot=)WU1q2u_iJMr~-0<46A;x4%rs$IG9)f%!?jVDv&yV1f6bzH9KUXI1>)Y?N SasJ&OoNY|oPe$;WvjYG&8Z46l diff --git a/GMW/GMW_data/obj/Debug/ResolveAssemblyReference.cache b/GMW/GMW_data/obj/Debug/ResolveAssemblyReference.cache index ef95f8f8072e8aae2b4b33a2ea9599745ec21bb3..17be30d8010d6bc433c77fc66d5015b662ca1448 100644 GIT binary patch delta 21 dcmcb1jq%zw#tjoV+2$+^|6s4Uc^c<|L;!S*3IPBB delta 21 dcmcb1jq%zw#tjoV*$ibrpZ_7Zc^c<|L;!R=3PS(@