From 0d876f90108f32f27a0bf2d8d4f5cca0966e5410 Mon Sep 17 00:00:00 2001 From: samuele Date: Wed, 25 Aug 2010 09:46:31 +0000 Subject: [PATCH] Iniziata aggiunta funzioni liste prelievo git-svn-id: https://keyhammer.ath.cx/svn/GMW/trunk@194 365432ac-a1b5-4ffd-bb28-6d3099d32164 --- GMW/GMW/bin/GMW.dll | Bin 598528 -> 598528 bytes GMW/GMW/bin/GMW_data.dll | Bin 929792 -> 929792 bytes GMW/GMW/bin/SteamWare.dll | Bin 359936 -> 359936 bytes GMW/GMW/obj/Debug/GMW.dll | Bin 598528 -> 598528 bytes .../obj/Debug/ResolveAssemblyReference.cache | Bin 55799 -> 55799 bytes GMW/GMW_Term/GMW_Term.csproj | 42 +- GMW/GMW_Term/ListePrelievo.aspx | 2 - GMW/GMW_Term/Style.css | 46 +- .../WebUserControls/mod_listePrelievo.ascx | 256 +- .../WebUserControls/mod_listePrelievo.ascx.cs | 578 ++- .../mod_listePrelievo.ascx.designer.cs | 31 +- .../WebUserControls/mod_periodoAnalisi.ascx | 33 + .../mod_periodoAnalisi.ascx.cs | 204 ++ .../mod_periodoAnalisi.ascx.designer.cs | 68 + GMW/GMW_Term/bin/GMW_Term.dll | Bin 20992 -> 30720 bytes GMW/GMW_Term/bin/GMW_data.dll | Bin 929792 -> 929792 bytes GMW/GMW_Term/bin/SteamWare.XML | 3156 +++++++++++++++++ GMW/GMW_Term/bin/SteamWare.dll | Bin 359936 -> 359936 bytes GMW/GMW_Term/images/apply_l.png | Bin 0 -> 1732 bytes GMW/GMW_Term/images/apply_m.png | Bin 0 -> 1192 bytes GMW/GMW_Term/images/apply_s.png | Bin 0 -> 1195 bytes GMW/GMW_Term/images/cancel_l.png | Bin 0 -> 2478 bytes GMW/GMW_Term/images/cancel_m.png | Bin 0 -> 1572 bytes GMW/GMW_Term/images/cancel_s.png | Bin 0 -> 1406 bytes GMW/GMW_Term/images/circle_s_0.png | Bin 0 -> 773 bytes GMW/GMW_Term/images/circle_s_1.png | Bin 0 -> 1034 bytes GMW/GMW_Term/images/circle_s_2.png | Bin 0 -> 1195 bytes GMW/GMW_Term/images/circle_s_3.png | Bin 0 -> 1358 bytes GMW/GMW_Term/images/circle_s_4.png | Bin 0 -> 1513 bytes GMW/GMW_Term/images/lista_01-PreFus_l.png | Bin 0 -> 1709 bytes GMW/GMW_Term/images/lista_01-PreFus_m.png | Bin 0 -> 1202 bytes GMW/GMW_Term/images/lista_01-PreFus_s.png | Bin 0 -> 784 bytes GMW/GMW_Term/images/lista_02-PreCli_l.png | Bin 0 -> 1724 bytes GMW/GMW_Term/images/lista_02-PreCli_m.png | Bin 0 -> 1025 bytes GMW/GMW_Term/images/lista_02-PreCli_s.png | Bin 0 -> 797 bytes GMW/GMW_Term/images/lista_02-TerFus_l.png | Bin 0 -> 1716 bytes GMW/GMW_Term/images/lista_02-TerFus_m.png | Bin 0 -> 984 bytes GMW/GMW_Term/images/lista_02-TerFus_s.png | Bin 0 -> 670 bytes GMW/GMW_Term/images/lista_03-TerWip_l.png | Bin 0 -> 1716 bytes GMW/GMW_Term/images/lista_03-TerWip_m.png | Bin 0 -> 1045 bytes GMW/GMW_Term/images/lista_03-TerWip_s.png | Bin 0 -> 699 bytes GMW/GMW_Term/images/view_l.png | Bin 0 -> 2282 bytes GMW/GMW_Term/images/view_m.png | Bin 0 -> 1329 bytes GMW/GMW_Term/images/view_s.png | Bin 0 -> 1232 bytes GMW/GMW_Term/obj/Debug/GMW_Term.dll | Bin 20992 -> 30720 bytes .../obj/Debug/ResolveAssemblyReference.cache | Bin 49783 -> 49783 bytes GMW/GMW_data/bin/Debug/GMW_data.dll | Bin 929792 -> 929792 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 929792 -> 929792 bytes .../obj/Debug/ResolveAssemblyReference.cache | Bin 27478 -> 26863 bytes 51 files changed, 7378 insertions(+), 194 deletions(-) create mode 100644 GMW/GMW_Term/WebUserControls/mod_periodoAnalisi.ascx create mode 100644 GMW/GMW_Term/WebUserControls/mod_periodoAnalisi.ascx.cs create mode 100644 GMW/GMW_Term/WebUserControls/mod_periodoAnalisi.ascx.designer.cs create mode 100644 GMW/GMW_Term/images/apply_l.png create mode 100644 GMW/GMW_Term/images/apply_m.png create mode 100644 GMW/GMW_Term/images/apply_s.png create mode 100644 GMW/GMW_Term/images/cancel_l.png create mode 100644 GMW/GMW_Term/images/cancel_m.png create mode 100644 GMW/GMW_Term/images/cancel_s.png create mode 100644 GMW/GMW_Term/images/circle_s_0.png create mode 100644 GMW/GMW_Term/images/circle_s_1.png create mode 100644 GMW/GMW_Term/images/circle_s_2.png create mode 100644 GMW/GMW_Term/images/circle_s_3.png create mode 100644 GMW/GMW_Term/images/circle_s_4.png create mode 100644 GMW/GMW_Term/images/lista_01-PreFus_l.png create mode 100644 GMW/GMW_Term/images/lista_01-PreFus_m.png create mode 100644 GMW/GMW_Term/images/lista_01-PreFus_s.png create mode 100644 GMW/GMW_Term/images/lista_02-PreCli_l.png create mode 100644 GMW/GMW_Term/images/lista_02-PreCli_m.png create mode 100644 GMW/GMW_Term/images/lista_02-PreCli_s.png create mode 100644 GMW/GMW_Term/images/lista_02-TerFus_l.png create mode 100644 GMW/GMW_Term/images/lista_02-TerFus_m.png create mode 100644 GMW/GMW_Term/images/lista_02-TerFus_s.png create mode 100644 GMW/GMW_Term/images/lista_03-TerWip_l.png create mode 100644 GMW/GMW_Term/images/lista_03-TerWip_m.png create mode 100644 GMW/GMW_Term/images/lista_03-TerWip_s.png create mode 100644 GMW/GMW_Term/images/view_l.png create mode 100644 GMW/GMW_Term/images/view_m.png create mode 100644 GMW/GMW_Term/images/view_s.png diff --git a/GMW/GMW/bin/GMW.dll b/GMW/GMW/bin/GMW.dll index 5e411a541bed119635204ed6615b6ffd3c579dee..6020c1b62482a830a872f8c4433c11d730aa62ef 100644 GIT binary patch delta 126 zcmZoTqSA0gWkLt@(laHE-L2h>t=&wm-OR1sEUn$Ft=(*`-RxVtIS$@Zc5$>cGBb44 zbv86{)ip74G1ql;F>}*3F)^|*G<7zya5Zw;N_fDY*au delta 126 zcmZoTqSA0gWkLt@Tbanl?$&O`)^4WOZsyi*mey|8)^4`eZuYI+90zYHyBQn0Ik`IN zTDV!7=$bg0o9jARI=kr_xHwukIXgNV8W1q>FiRRnyf4g3=GcOO{F+bvjYG?vMNph diff --git a/GMW/GMW/bin/GMW_data.dll b/GMW/GMW/bin/GMW_data.dll index 099ebed05de92bb11f8f20622db2934fe383bc87..ee0f4aa617dad2c19e8a5d005820c9634cae06d5 100644 GIT binary patch delta 130 zcmZp8VA1fvVnPS=w^zlD-L2h>t=&wm-OR1sEUn$Ft=(*`-R!O19If4)t=(L$-Q2C+ zJX^bY*FF%qIFn7#(X_;4BSWfoSpKVq?H&(#Yut2!ruZ-b0TU260P!7HK88E$d<;Rs fF2T_c8n?$&O`)^4WOZsyi*mey|8)^4`eZuZu0j@E9@)^4uWZtm7@ zo~_-yYaa+St~&GJQbLZ)6b;q$leGTxZufY|TjQn+G{uJj2$+Dl0f_Io@-f^|=VJ&8 fb_qW3*zlva~Sxc#F#A3p~GTv9V+ diff --git a/GMW/GMW/bin/SteamWare.dll b/GMW/GMW/bin/SteamWare.dll index aa0111acafe00457ed677aace1f2858e7cd7b107..72325207b1b8cb8967677c9006c77146b31d60b3 100644 GIT binary patch delta 86 zcmZqpBiissbV3Jn`MjdW?$&O`)^4WOZsyi*maW~ao_+%F#O5i)9r^6E{^Xqi^ZVwr qw?FY?U7`+BJ-xe(RZ<{k@U4>gnBOtdauxFU)I?S-*CfB|lAOe}BS;?OV!Neb@oQgeOt} diff --git a/GMW/GMW/obj/Debug/GMW.dll b/GMW/GMW/obj/Debug/GMW.dll index 5e411a541bed119635204ed6615b6ffd3c579dee..6020c1b62482a830a872f8c4433c11d730aa62ef 100644 GIT binary patch delta 126 zcmZoTqSA0gWkLt@(laHE-L2h>t=&wm-OR1sEUn$Ft=(*`-RxVtIS$@Zc5$>cGBb44 zbv86{)ip74G1ql;F>}*3F)^|*G<7zya5Zw;N_fDY*au delta 126 zcmZoTqSA0gWkLt@Tbanl?$&O`)^4WOZsyi*mey|8)^4`eZuYI+90zYHyBQn0Ik`IN zTDV!7=$bg0o9jARI=kr_xHwukIXgNV8W1q>FiRRnyf4g3=GcOO{F+bvjYG?vMNph diff --git a/GMW/GMW/obj/Debug/ResolveAssemblyReference.cache b/GMW/GMW/obj/Debug/ResolveAssemblyReference.cache index 5ea3acdc43984752295a19729b81ba49de8dcaa0..b0da372ca4a5d5d44dbea49166b7f5cf972fd61a 100644 GIT binary patch delta 4895 zcmZve32;Dob1@;4gOC#lF(yW0I7Fh5;mHvY13?iThY-U+l7UQs0Ad6Y zL9kY7byrzATwInTLVSwg!Qr*LRR~ES0cxv|uvx(ibpfMpA=`h?yq5{_RlUytb@$(Y zcmMyJKV52Mmm0ZmEr1=@K^hvPrm7CfCP5{p8H(|oArmaP1LlDhABcK2$`%n3QHi@D zXt86mpqlcp)YTF;R#~xXm1AETN%sGJa@&I%SH`-Y3LVA?_EVRETLp zOh<1_9F$>wj2qiy@<+*Dp`9&6xe#-Ns374OL_$0;n8W~j<;O^vAWOqa%(l4G=L(BY zhs@iSX`tV48LJkg@h5g=Y+OkPPNhiJQaKy;c{T15ln zQ@qkJv66W;DdeYxScB*6{SzHxE5rjMNbsBuG%!Vv#9u5$Z#g=p)V}x3^VW~`*VNVe ztETz=Rr7sy@+RTaK*IRv2s8{Bk5#c>g9B&ut8L&IJB1y@&N1#{6nn_Hn^Ej0;~vII z8a6VD4KAYB_$CRtw64NiJ;PgDVUqU}^UC{ZQ2m&%s$yhbUf$S|dD8 z( z#3;UA#;+LXljKysrh#kx*wVS)+680%xGvG={DxHWw(J;H0k6ppQ~A!!yTQ=QYVc z5pphFH1Olw{TDR+Oe2V|hp|aliU9KB=LTaixZ_ zjN%uVYwSlDwuNzoT%rrBQ|cPx3E^URXbzemL< zGHeJDw1?N%)}y{t;q{#i)#r#%Yg1nW{O_DMFebgIZzL@!o>fbOe+{pzFyuTWj-lZF zN|y%eDynm5RLstG*Vk3l1bqIQfI1Bj z^bvLJEAlir+Ds$iXav?AbirplFXrzwPb)`#Y09mVS*wQHrgluF)>D_%q-kNBG_j1d zx0mFpYaht&_NVPuKbc9EkEW)n(GO=!G2z9l6FfPRF?gw|8@xG^?dD=y%g0HEX3k2o zNVsoi93H83LrYK-E8*o?33$!thSs1aNy0o&GUim#p*YE^#B_;HUx}~0)*tXcR+n4m z3oPC{BLQBOPg z4enjI(^l8`~^1dt`lSr2;pCOWRi)FtafgQ&+noLcML(c`(ln zOJUv`1%TByKdH6y#HaYiS}I*q_pR#$Q}<1SyVffZ$up!C5^hON$ByR|b==YpaIU5Z zH=mZc=f}m^#N{L&3Ho4uvr95qIDln+kE}f#6|e?#*%+3KX!XVy6|k|%{tB6Tbm7>` z3fS3Z-byyDxt3QHa0H|62#Y2vyLXcUebwhTbwaPh-SCu%0tCN2}-OT?(YBckk|m@Gl?7G%AqJ-qtV4J8YvC?NuOyEz)!60tM!d65TUP%eT*Uh2nqK#R zTQVp1t8Lcwdgv{@+LaSw3BS#*@AYzh zpIx^!%O?Hj;3ItVc)ar;nybFrKRLvSUixOCceHDIEep(V$>?s_IbLUROColjap1O= z0<-1^SAzZRYH?#livvqq6Y)~3!)XcZ@yH}`N@X^+IXTGM__y2aG$7LtO_UUe3wfUr5WQBuH&9re=S_)9kp?q2>T|ZCE zb1vwmUnunEC8QUR1oa$0wJi~cQ)ec&$=yd}4Tsp!E5viGM@_Fc;6)B~j6&#HY+_Yc zTS2#KC#y=@!xq{nRI&TDfcjB*SHiu=UCs|RgC6z}$2d+gbk(P<`la2CmDHyxr@3F| zi!?P@=Owl`pAK90d(1x*@4Ti(*X#I+T?d>Ai+)|GVk7Bl?Ad)oB>gAlQtQq<1^)+- C0#YCV delta 4824 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 bkN&`w_9oDS%G<)s&6+?zzI=My;nnazzIRe_ diff --git a/GMW/GMW_Term/GMW_Term.csproj b/GMW/GMW_Term/GMW_Term.csproj index dc34d406..8ff0bfc3 100644 --- a/GMW/GMW_Term/GMW_Term.csproj +++ b/GMW/GMW_Term/GMW_Term.csproj @@ -74,13 +74,6 @@ Default.aspx - - mod_taskUdc.ascx - ASPXCodeBehind - - - mod_taskUdc.ascx - UDC.aspx ASPXCodeBehind @@ -130,6 +123,13 @@ mod_menuTop.ascx + + mod_periodoAnalisi.ascx + ASPXCodeBehind + + + mod_periodoAnalisi.ascx + mod_search.ascx ASPXCodeBehind @@ -181,7 +181,32 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -189,6 +214,7 @@ + diff --git a/GMW/GMW_Term/ListePrelievo.aspx b/GMW/GMW_Term/ListePrelievo.aspx index 531bb55f..de3aa472 100644 --- a/GMW/GMW_Term/ListePrelievo.aspx +++ b/GMW/GMW_Term/ListePrelievo.aspx @@ -1,11 +1,9 @@ <%@ Page Title="" Language="C#" MasterPageFile="~/WebMasterPages/Compact.Master" AutoEventWireup="true" CodeBehind="ListePrelievo.aspx.cs" Inherits="GMW_Term.ListePrelievo" %> -<%--<%@ Register src="WebUserControls/mod_userBar.ascx" tagname="mod_userBar" tagprefix="uc1" %>--%> <%@ Register src="WebUserControls/mod_listePrelievo.ascx" tagname="mod_listePrelievo" tagprefix="uc2" %> - <%----%> diff --git a/GMW/GMW_Term/Style.css b/GMW/GMW_Term/Style.css index 8c024f70..0e04206f 100644 --- a/GMW/GMW_Term/Style.css +++ b/GMW/GMW_Term/Style.css @@ -27,7 +27,11 @@ } #smallTable { - font-size: 10pt; + font-size: 9pt; +} +#smallGrid +{ + font-size: 8pt; } .quadro1, .quadro2 { @@ -63,3 +67,43 @@ text-align: center; color: Black; } +.ctrHeaderPager +{ + background-color: #b8b8b8; + font-weight: bold; + color: White; +} +.ctrRowStyle +{ + vertical-align: top; + background-color: #EFF3FB; +} +.ctrAltRowStyle +{ + vertical-align: top; + background-color: White; +} +.ctrRowStyleRight +{ + background-color: #EFF3FB; + text-align: right; +} +.ctrAltRowStyleRight +{ + background-color: White; + text-align: right; +} +.ctrInsRowStyle +{ + background-color: #b8b8b8; +} +.ctrEditRowStyle +{ + background-color: #D1DDF1; +} +.ctrSelRowStyle +{ + font-weight: bold; + color: #333333; + background-color: #D1DDF1; +} diff --git a/GMW/GMW_Term/WebUserControls/mod_listePrelievo.ascx b/GMW/GMW_Term/WebUserControls/mod_listePrelievo.ascx index 1759e8d3..bb297dc2 100644 --- a/GMW/GMW_Term/WebUserControls/mod_listePrelievo.ascx +++ b/GMW/GMW_Term/WebUserControls/mod_listePrelievo.ascx @@ -1,161 +1,111 @@ <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="mod_listePrelievo.ascx.cs" Inherits="GMW_Term.WebUserControls.mod_listePrelievo" %> - - <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> +<%@ Register Src="mod_periodoAnalisi.ascx" TagName="mod_periodoAnalisi" TagPrefix="uc1" %>
-
- - -
-
-
-
- -<%-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --%> -    - - - - - - - - - - - - - - - -
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+
+ + +
+
+
+ +
+
+
+ <%-- + + + + --%> + + + + + + + + + + + + <%----%> + + + + + + + + + <%----%> + + +
+
+    + + + + + + + + + + + + + +
+
diff --git a/GMW/GMW_Term/WebUserControls/mod_listePrelievo.ascx.cs b/GMW/GMW_Term/WebUserControls/mod_listePrelievo.ascx.cs index 39e18917..18919b3a 100644 --- a/GMW/GMW_Term/WebUserControls/mod_listePrelievo.ascx.cs +++ b/GMW/GMW_Term/WebUserControls/mod_listePrelievo.ascx.cs @@ -1,33 +1,591 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; +using System.Data; using System.Web.UI; using System.Web.UI.WebControls; using SteamWare; +using GMW_data; namespace GMW_Term.WebUserControls { public partial class mod_listePrelievo : System.Web.UI.UserControl { - protected void Page_Load(object sender, EventArgs e) - { + #region area da NON modificare - } + #region area protected + + protected string _idxGridView; + protected string _idxGridViewExt; + protected string _tabCache; + protected bool _showNewBtn = false; /// - /// wrapper traduzione + /// wrapper traduzione termini /// /// /// - public string traduci(object lemma) + public string traduci(string lemma) { - return user_std.UtSn.Traduci(lemma.ToString()); + 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}, ...) + /// + /// + /// + protected void recuperaFooter(object sender, ObjectDataSourceMethodEventArgs e) + { + //recupero la riga footer... + DataColumnCollection colonne = colonneObj(); + string nomeCol; + string tipoColonna = ""; + foreach (DataColumn colonna in colonne) + { + nomeCol = colonna.ColumnName; + // cerco un textbox o quello che sia... + if (grView.FooterRow.FindControl(string.Format("txt{0}", nomeCol)) != null) + { + tipoColonna = "textBox"; + } + else if (grView.FooterRow.FindControl(string.Format("dl{0}", nomeCol)) != null) + { + tipoColonna = "dropDownList"; + } + else if (grView.FooterRow.FindControl(string.Format("chk{0}", nomeCol)) != null) + { + tipoColonna = "checkBox"; + } + else if (grView.FooterRow.FindControl(string.Format("selAjax_{0}", nomeCol)) != null) + { + tipoColonna = "selAjax"; + } + // in base al tipo salvo negli inputparameters dell'ODS + switch (tipoColonna) + { + case "textBox": + e.InputParameters[nomeCol] = ((TextBox)grView.FooterRow.FindControl(string.Format("txt{0}", nomeCol))).Text; + break; + case "dropDownList": + e.InputParameters[nomeCol] = ((DropDownList)grView.FooterRow.FindControl(string.Format("dl{0}", nomeCol))).SelectedValue; + break; + case "checkBox": + e.InputParameters[nomeCol] = ((CheckBox)grView.FooterRow.FindControl(string.Format("chk{0}", nomeCol))).Checked; + break; + default: + break; + } + tipoColonna = ""; + } + } + /// + /// inserisce nuovo valore da footer + /// + /// + /// + protected void lblIns_click(object sender, EventArgs e) + { + // click su inserimento, chiamo il metodo insert dell'ObjectDataSource + ods.Insert(); + SteamWare.memLayer.ML.emptyCacheVal(_tabCache); + } + /// + /// annulla inserimento nuovo valore da footer + /// + /// + /// + protected void lblCanc_click(object sender, EventArgs e) + { + // annullo inserimento: nascondo footer, bind controlli... + grView.FooterRow.Visible = false; + } + + + /// + /// traduce gli header delle colonne + /// + /// + /// + protected void grView_DataBound(object sender, EventArgs e) + { + if (grView.Rows.Count > 0) + { + LinkButton lb; + // aggiorno gli headers + foreach (TableCell cella in grView.HeaderRow.Cells) + { + try + { + lb = (LinkButton)cella.Controls[0]; + lb.Text = traduci(lb.Text); + } + catch + { } + } + int totRecord = grView.Rows.Count + grView.PageSize * (grView.PageCount - 1); + lblNumRec.Text = string.Format("{0} records of ~ {1}", grView.Rows.Count, totRecord); + } + else + { + lblNumRec.Text = ""; + } + } + /// + /// gestione evento richeista nuovo valore (mostra footer, ...) + /// + /// + /// + protected void btnNew_Click(object sender, EventArgs e) + { + // reset selezione... + resetSelezione(); + // mostro il footer oppure la riga dei dettagli x nuovo... + if (grView.FooterRow != null) + { + grView.FooterRow.Visible = true; + } + // sollevo evento nuovo valore... + if (eh_nuovoValore != null) + { + eh_nuovoValore(this, new EventArgs()); + } + } + /// + /// reset della selezione + /// + /// + /// protected void btnReset_Click(object sender, EventArgs e) { - //resetSelezione(); + resetSelezione(); } + + #endregion + + #region gestione eventi + + public event EventHandler eh_resetSelezione; + public event EventHandler eh_nuovoValore; + public event EventHandler eh_selValore; + + #endregion + + #region public + + /// + /// definisce visibilità btnNew + /// + public bool showNewBtn + { + get + { + return _showNewBtn; + } + set + { + _showNewBtn = value; + } + } + /// + /// effettua update del modulo + /// + public void doUpdate() + { + resetSelezione(); + } + + + #endregion + + #endregion + + #region area codice variabile + + /// + /// verifica complessiva non esistenza record child + /// + /// + /// + protected bool objIsNotRelated(object idxObj) + { + bool answ = true; + return answ; + } + /// + /// elenco colonne del datagrid + /// + /// + protected DataColumnCollection colonneObj() + { + DS_magazzino.ElencoListePrelievoDataTable tabella = new DS_magazzino.ElencoListePrelievoDataTable(); + DataColumnCollection colonne = tabella.Columns; + return colonne; + } + /// + /// inizializzazione valori di default + /// + /// + protected override void OnInit(EventArgs e) + { + base.OnInit(e); + _idxGridView = "CodLista"; + if (!Page.IsPostBack) + { + mod_periodoAnalisi1.setPeriodoFree(); + } + // registro evento update + mod_periodoAnalisi1.eh_doUpdate += new EventHandler(mod_periodoAnalisi1_eh_doUpdate); + aggiornaControlliDataGL(); + } + /// + /// aggiorna controlli datagrid e numero righe in pagina + /// + protected void aggiornaControlliDataGL() + { + grView.PageSize = 4; + } + + /// + /// aggiorno x update selettore date + /// + /// + /// + void mod_periodoAnalisi1_eh_doUpdate(object sender, EventArgs e) + { + // aggiorno controllo corrente! + updateOds(); + } + /// + /// svuoto da cache post update + /// + /// + /// + protected void ods_Updated(object sender, ObjectDataSourceStatusEventArgs e) + { + resetSelezione(); + } + /// + /// aggiorno visualizzazione + /// + private void updateOds() + { + grView.DataBind(); + } + + /// + /// determina se sia abilitato il pulsante x attivare una lista di prelievo + /// + /// + /// + public bool attivaEnabled(object codStato) + { + bool answ = false; + try + { + answ = ((int)codStato == (int)statoLista.bozza); + } + catch + { } + 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; + } + /// + /// determina se sia abilitato il pulsante x approvare e scaricare una lista di prelievo + /// + /// + /// + public bool ScaricaEnabled(object codStato) + { + bool answ = false; + try + { + answ = ((int)codStato == (int)statoLista.completata); + } + catch + { } + return answ; + } + + /// + /// gestione cambio selezione valore + /// + /// + /// + protected void grView_SelectedIndexChanged(object sender, EventArgs e) + { + } + /// + /// resetta la selezione dei valori in caso di modifiche su altri controlli + /// + public void resetSelezione() + { + SteamWare.memLayer.ML.emptySessionVal(string.Format("{0}_sel", _idxGridView)); + grView.SelectedIndex = -1; + grView.DataBind(); + lblWarning.Visible = false; + } + + /// + /// salvo in session che il prox comando è iniziare attivare prelievo... + /// + /// + /// + protected void imgAttivaLista_Click(object sender, ImageClickEventArgs e) + { + SteamWare.memLayer.ML.setSessionVal("nextObjCommand", "attivaListaPrelievo"); + } + /// + /// salvo in session che il prox comando è iniziare lista prelievo... + /// + /// + /// + protected void imgIniziaLista_Click(object sender, ImageClickEventArgs e) + { + SteamWare.memLayer.ML.setSessionVal("nextObjCommand", "iniziaListaPrelievo"); + } + /// + /// salvo in session che il prox comando è completare lista prelievo... + /// + /// + /// + protected void imgCompletaLista_Click(object sender, ImageClickEventArgs e) + { + SteamWare.memLayer.ML.setSessionVal("nextObjCommand", "completaListaPrelievo"); + } + /// + /// salvo in session che il prox comando è completare lista prelievo... + /// + /// + /// + protected void imgScaricaLista_Click(object sender, ImageClickEventArgs e) + { + SteamWare.memLayer.ML.setSessionVal("nextObjCommand", "scaricaListaPrelievo"); + } + /// + /// in caso di aggiornamento verifico se sia salvato un comando inizia o completa lista prelievo... + /// + /// + /// + protected void grView_RowUpdating(object sender, GridViewUpdateEventArgs e) + { + // carico l'idx dell'oggetto + string codLista = e.Keys["CodLista"].ToString(); + // quale comando? + string _comando = ""; + if (SteamWare.memLayer.ML.isInSessionObject("nextObjCommand")) + { + _comando = SteamWare.memLayer.ML.StringSessionObj("nextObjCommand"); + SteamWare.memLayer.ML.emptySessionVal("nextObjCommand"); + } + string CodSoggetto = MagClass.magazzino.CodSoggCurrUser; + switch (_comando) + { + case "attivaListaPrelievo": + GMW_data.MagClass.magazzino.attivaListaPrelievo(memLayer.ML.StringSessionObj("CodCS"), codLista, CodSoggetto); + updateOds(); + grView.EditIndex = -1; + grView.DataBind(); + // sollevo evento nuovo valore... + if (eh_nuovoValore != null) + { + eh_nuovoValore(this, new EventArgs()); + } + // blocco update! + e.Cancel = true; + break; + case "iniziaListaPrelievo": + GMW_data.MagClass.magazzino.iniziaListaPrelievo(memLayer.ML.StringSessionObj("CodCS"), codLista, CodSoggetto); + updateOds(); + grView.EditIndex = -1; + grView.DataBind(); + // sollevo evento nuovo valore... + if (eh_nuovoValore != null) + { + eh_nuovoValore(this, new EventArgs()); + } + // blocco update! + e.Cancel = true; + break; + case "completaListaPrelievo": + GMW_data.MagClass.magazzino.completaListaPrelievo(memLayer.ML.StringSessionObj("CodCS"), codLista, CodSoggetto); + updateOds(); + grView.EditIndex = -1; + grView.DataBind(); + // sollevo evento nuovo valore... + if (eh_nuovoValore != null) + { + eh_nuovoValore(this, new EventArgs()); + } + // blocco update! + e.Cancel = true; + break; + case "scaricaListaPrelievo": + GMW_data.MagClass.magazzino.scaricaListaPrelievo(memLayer.ML.StringSessionObj("CodCS"), codLista, CodSoggetto); + updateOds(); + grView.EditIndex = -1; + grView.DataBind(); + // sollevo evento nuovo valore... + if (eh_nuovoValore != null) + { + eh_nuovoValore(this, new EventArgs()); + } + // blocco update! + e.Cancel = true; + break; + default: + // faccio update! + break; + } + } + /// + /// chiamato post modifica valore check/selezione nel selettore filtro stato + /// + /// + /// + public void eh_selectedStato(object sender, EventArgs e) + { + checkFixOds(); + } + /// + /// ssitema visualizzazione dal filtraggi + /// + 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(); + } + /// + /// chiamato post modifica valore check/selezione nel selettore filtro tipo + /// + /// + /// + public void eh_selectedTipo(object sender, EventArgs e) + { + checkFixOds(); + } + /// + /// restituisce URL immagine del codice da mostrare x stato lista + /// + /// + /// + public string pathImgStato(object codStato) + { + return string.Format("~/images/circle_s_{0}.png", codStato); + } + /// + /// 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 + /// + /// + /// + public string pathImgTipo(object codice) + { + return string.Format("~/images/lista_{0}_s.png", codice); + } + /// + /// restituisce tooltip da mostrare x TIPO lista + /// + /// + /// + public string tooltipTipo(object codice) + { + return traduci(codice.ToString()); + } + + #endregion } } \ No newline at end of file diff --git a/GMW/GMW_Term/WebUserControls/mod_listePrelievo.ascx.designer.cs b/GMW/GMW_Term/WebUserControls/mod_listePrelievo.ascx.designer.cs index c9416352..6d535085 100644 --- a/GMW/GMW_Term/WebUserControls/mod_listePrelievo.ascx.designer.cs +++ b/GMW/GMW_Term/WebUserControls/mod_listePrelievo.ascx.designer.cs @@ -13,15 +13,6 @@ namespace GMW_Term.WebUserControls { public partial class mod_listePrelievo { - /// - /// 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. /// @@ -32,13 +23,22 @@ namespace GMW_Term.WebUserControls { protected global::System.Web.UI.WebControls.Label lblInput; /// - /// updPanel1 control. + /// mod_periodoAnalisi1 control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.UpdatePanel updPanel1; + protected global::mod_periodoAnalisi mod_periodoAnalisi1; + + /// + /// grView control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.GridView grView; /// /// lblNumRec control. @@ -67,15 +67,6 @@ namespace GMW_Term.WebUserControls { /// protected global::System.Web.UI.WebControls.ObjectDataSource ods; - /// - /// GridView1 control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.GridView GridView1; - /// /// btn1 control. /// diff --git a/GMW/GMW_Term/WebUserControls/mod_periodoAnalisi.ascx b/GMW/GMW_Term/WebUserControls/mod_periodoAnalisi.ascx new file mode 100644 index 00000000..031b5689 --- /dev/null +++ b/GMW/GMW_Term/WebUserControls/mod_periodoAnalisi.ascx @@ -0,0 +1,33 @@ +<%@ Control Language="C#" AutoEventWireup="true" Inherits="mod_periodoAnalisi" CodeBehind="mod_periodoAnalisi.ascx.cs" %> +<%--<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>--%> +
+
+ + + + + + + +
+
+ + <%-- + --%> + +
+
+ + <%-- + --%> + +
+
diff --git a/GMW/GMW_Term/WebUserControls/mod_periodoAnalisi.ascx.cs b/GMW/GMW_Term/WebUserControls/mod_periodoAnalisi.ascx.cs new file mode 100644 index 00000000..547b8503 --- /dev/null +++ b/GMW/GMW_Term/WebUserControls/mod_periodoAnalisi.ascx.cs @@ -0,0 +1,204 @@ +using System; +using System.Data; +using System.Configuration; +using System.Collections; +using System.Web; +using System.Web.Security; +using System.Web.UI; +using System.Web.UI.WebControls; +using System.Web.UI.WebControls.WebParts; +using System.Web.UI.HtmlControls; +using SteamWare; + +public partial class mod_periodoAnalisi : System.Web.UI.UserControl +{ + #region area protected + + protected intervalloDate _intervallo; + + protected override void OnInit(EventArgs e) + { + base.OnInit(e); + setIntervallo(); + } + + /// + /// gestione del selettore rapido dell'intervallo temporale... + /// + /// + /// + protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) + { + intervalloDate _intervallo = new intervalloDate(); + // verifico cosa sia cambiato ed imposto date... + datario _datario = new datario(); + switch (DropDownList1.SelectedValue) + { + case "1_today": + _intervallo = _datario.giornata(DateTime.Now); + break; + case "2_yesterday": + _intervallo = _datario.giornata(DateTime.Now.AddDays(-1)); + break; + case "3_last_7": + _intervallo = _datario.ultimiGiorni(DateTime.Now, 7); + break; + case "4_this_week": + _intervallo = _datario.questaSett(DateTime.Now); + break; + case "5_last_30": + _intervallo = _datario.ultimiGiorni(DateTime.Now, 30); + break; + case "6_this_month": + _intervallo = _datario.questoMese(DateTime.Now); + break; + case "7_last_month": + _intervallo = _datario.estremiMese(DateTime.Now.AddMonths(-1)); + break; + case "8_this_year": + _intervallo = _datario.estremiAnno(DateTime.Now); + break; + case "9_last_year": + _intervallo = _datario.estremiAnno(DateTime.Now.AddYears(-1)); + break; + default: + break; + } + intervalloAnalisi = _intervallo; + aggiornaDateMostrate(); + } + + private void aggiornaDateMostrate() + { + txtInizio.Text = intervalloAnalisi.inizio.ToShortDateString(); + txtFine.Text = intervalloAnalisi.fine.AddDays(-1).ToShortDateString(); // mostro 1 gg in meno xché termina alle 00:00... + reportUpdate(); + } + + private void setIntervallo() + { + intervalloDate _intervallo; + try + { + _intervallo = (intervalloDate)Session["_intervallo"]; + } + catch + { + _intervallo = new intervalloDate(); + _intervallo.fine = DateTime.Now.Subtract(DateTime.Now.TimeOfDay).AddDays(1); + _intervallo.inizio = _intervallo.fine.AddMonths(-1); + Session["_intervallo"] = _intervallo; + Session["_inizio"] = _intervallo.inizio; + Session["_fine"] = _intervallo.fine; + } + txtInizio.Text = _intervallo.inizio.ToShortDateString(); + txtFine.Text = _intervallo.fine.ToShortDateString(); + } + /// + /// wrapper traduzione + /// + /// + /// + public string traduci(object lemma) + { + return user_std.UtSn.Traduci(lemma.ToString()); + } + protected void Page_Load(object sender, EventArgs e) + { + if (!Page.IsPostBack) + { + txtInizio.ToolTip = traduci("inizioPeriodo"); + txtFine.ToolTip = traduci("finePeriodo"); + } + } + protected void txtInizio_TextChanged(object sender, EventArgs e) + { + // imposto il selettore a discesa... + DropDownList1.SelectedIndex = 0; + // se campo vuoto imposto oggi... + if (txtInizio.Text == "") + { + txtInizio.Text = DateTime.Now.ToShortDateString(); + } + else + { + txtInizio.Text = Convert.ToDateTime(txtInizio.Text).ToShortDateString(); + } + // aggiorno dati in session... + aggiornaPeriodo(); + } + + private void aggiornaPeriodo() + { + _intervallo = new intervalloDate(); + _intervallo.inizio = Convert.ToDateTime(txtInizio.Text); + _intervallo.fine = ((DateTime)Convert.ToDateTime(txtFine.Text)).Date.AddDays(1); + //_intervallo.fine = ((DateTime)Convert.ToDateTime(txtFine.Text)).Date.AddDays(1).AddMinutes(-1); + intervalloAnalisi = _intervallo; + reportUpdate(); + + } + protected void txtFine_TextChanged(object sender, EventArgs e) + { + // imposto il selettore a discesa... + DropDownList1.SelectedIndex = 0; + // se campo vuoto imposto oggi... + if (txtFine.Text == "") + { + txtFine.Text = DateTime.Now.AddDays(1).ToShortDateString(); + } + else + { + txtFine.Text = Convert.ToDateTime(txtFine.Text).ToShortDateString(); + } + // aggiorno dati in session... + aggiornaPeriodo(); + } + + protected void reportUpdate() + { + // alzo l'evento d update/inserimento e ricarico cache... + if (eh_doUpdate != null) + { + eh_doUpdate(this, new EventArgs()); + } + } + + #endregion + + #region area public + + public intervalloDate intervalloAnalisi + { + get + { + return (intervalloDate)Session["_intervallo"]; + } + set + { + intervalloDate interv = value; + Session["_intervallo"] = interv; + Session["_inizio"] = interv.inizio; + Session["_fine"] = interv.fine; + } + } + + public void doUpdate() + { + aggiornaDateMostrate(); + } + + public void setPeriodoFree() + { + DropDownList1.SelectedIndex = 0; + } + + #region gestione eventi + + public event EventHandler eh_doUpdate; + + #endregion + + #endregion + +} diff --git a/GMW/GMW_Term/WebUserControls/mod_periodoAnalisi.ascx.designer.cs b/GMW/GMW_Term/WebUserControls/mod_periodoAnalisi.ascx.designer.cs new file mode 100644 index 00000000..6e21898e --- /dev/null +++ b/GMW/GMW_Term/WebUserControls/mod_periodoAnalisi.ascx.designer.cs @@ -0,0 +1,68 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.4927 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + + + +public partial class mod_periodoAnalisi { + + /// + /// DropDownList1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList DropDownList1; + + /// + /// odsPeriodi control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.ObjectDataSource odsPeriodi; + + /// + /// txtInizio control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtInizio; + + /// + /// RequiredFieldValidator1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1; + + /// + /// txtFine control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtFine; + + /// + /// RequiredFieldValidator2 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator2; +} diff --git a/GMW/GMW_Term/bin/GMW_Term.dll b/GMW/GMW_Term/bin/GMW_Term.dll index 38f19bfb00a6dd127b3c4c33ec87fcea9d732766..d1ccaf5df612f2a6be2caa514971c736b77d6724 100644 GIT binary patch literal 30720 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 Z$E&)3qIgzX|D6j=kL#QMzy^w3{{s=Ja-IMH diff --git a/GMW/GMW_Term/bin/GMW_data.dll b/GMW/GMW_Term/bin/GMW_data.dll index aa642de067766fb4891730eca85ea463f8d3c651..ee0f4aa617dad2c19e8a5d005820c9634cae06d5 100644 GIT binary patch delta 95 zcmZp8VA1fvVnPS=w^zlD-L2h>t=&wm-OR1sEUn$Ft=(*`-R!O19If4)t=(L$-Q2C+ yJX^bY*FF%qIFn7#(X_;4BSWfoSpKVq?H&(#YurGlOh2y9r^(2){i8Y`KL-GvJtlqt delta 95 zcmZp8VA1fvVnPS=Yx&5=?$&O`)^4WOZsyi*mey|8)^4`eZuZu0j@E9@)^4uWZtm7@ yo~_-yYaa;6m~*a5Ke)lA%WhZZ{rL{r+dUrg*0_O8nSNZIPm_^x`$u&?ehvU$BPFl^ 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 3c3872e76f28f0abcb5cf4c6060319896c72d567..72325207b1b8cb8967677c9006c77146b31d60b3 100644 GIT binary patch delta 86 zcmZqpBiissbV3Jn`MjdW?$&O`)^4WOZsyi*maW~ao_+%F#O5i)9r^6E{^Xqi^ZVwr qw?FY?U7`+BJ-xe(RZ<{Q=mp59%?Dk<=-SK|VIteabFQrXKS5zD&mTgq5{*a2|8B#i(7 diff --git a/GMW/GMW_Term/images/apply_l.png b/GMW/GMW_Term/images/apply_l.png new file mode 100644 index 0000000000000000000000000000000000000000..592ce6f4a573e0feb59e1368f831b5e2d0362f86 GIT binary patch literal 1732 zcmV;#20QtQP)HQ)VHhfZl9CCSkAi|JU=1eq2ZunR z)3Z+}=?}}fA~Qh55LdAE&$YY*P6%;CIw1@{y$$*LZZjf#88QolRFzG4G=&ycfj92f4v!)n0FXz zX+#$~*f8)hvoier`u71$9w2~NXlC<&2EpII{xxuj^5=w_Xfs7?s4~pGdV^up;VX}s ze*cGu06+lI!~y^Q{4@K-#Ly?FCTX2*sn6ggF3B+A#&w2u2d;f&`td)7k)7#0Of5hF zQQHBme}4ZA4 z_PTlI%@Q_7up{t?#6JdsKmY#Ku!ynex>!iDMeC?A$g>MD{QCQi;oysx42yQ%WBB>( zPb(W6TMsDInSZe}FrrmG009Jd%Ae1Sn?Aqz#SmsC%OI~KeWvlnSQb|6uKBOh^uq^{{HiSHc*NOEqk#8?WkhlW!Y$KD{NfqZph#(Z2M zeai6W%J0o=%q;1QOu#al000Oecp6~($MTo$H{+r!mp=yX)49SNE*Hq~-R(QWJcesA zpRO?cW%|!>{67zKy|NL9WT=G#gO!LbFb!}reEjtpsQD|yHK64S_dR2He){)bHYTQo z|BU~L%1HnLgmAzwRt8{j?EL+l@#LNx*RAZtZ5RTj{TaSHeP>wo`9b`zFHG^K)|?EX z`q~U?TpA2NfB$9p{tsw5;}3=h-ySopI`W+1`KiBG*%_FV{xbi2M{F|(Ab=1K_`?dK zezE>wSaS2qFRK$;M;V+%ycxVCT^T;PZU@Hi9|liFJqBTB8HUflzBBy%{}ots{$P0e z^C83PW6v2L9Qk*b^*3|OfA)WmNGU%60tn%N{}3i4Bg2{>cNq!}-n^}*&Ub@>}6|f2<7ee|`YQ_fMe0UkuNGKVn#O;wi)JeTuct(tjlj){ljqm<85Fte`NUn=O4qjUw;`s{r-pylclWY>Wc|jJ%E-cW7MQ<)c0mdn#(yBp%)kh0Q((a`01!Zk5I_U3>Zl=;Jp)M|@@Y@b@LdvD>d1 zZfxadV0_A6$H>Ysm(uDJAb=1d@P`EjGyi8k&G3R_|Gn$X46l9y9r6D)!-Xer8E)oFI@|0{g!nb>|618dcP)M~*11Q1d| z#Eeb;Gvi;Tj&FM;S{c7Hodp){*+9#GP_qdI5I~Fr-8TdXpaJh00R+&1I{+Yn2HXJv a0R{l;6O2K0J{)=g0000=-4jhk)T-#`D9!G1*pzkmM=VB%#y?`EfH(d=o>U?nWcu3kDxYHJKlbfA{?R!@vQu;3xCn6DkILX(fRcEK%wf3>^R284kaE zz%Y07ga4l&{%z-AV_pu)yZ<4O5yArqAV?T9aIC+5?c39f58laCI)*a5|FTf+#I6rl zSh<<_>>R~K6D^GyWI3f7e*F5(aPu3`&@B%bUS9b-mxGJB_AlcftnmR5KwuXGbKDP> zPwdM#oxaS#_>Y~Tz|M!kz@A6h$46Q;&(@Jaf<=zu6VTB6KOQnH+4F$m$?1QGxR{w! zvBd=p00a=&V5Z+}4D5e7`X5~W@qPD$BMg!p(hNn;9t@HCHb6OUhWEeTF+BbCh+*0O z`wX`Z{JYHYpV^y%Kn?&1Ah^LS46M(8Kj++Y^zuW7XFne>a5M5V{QUKo;RDdnxBs3o zY&!9f;mR(C7i>S7JsFr8z7R_9009IE3Sfc5@|&H3?H5PS?F+yDU4D0y;q9*%K$pH@ zc*pRJVdwdW3>UUAe`5Q}>chyw@DvnLV9W@?|IsiA00a;?@>qUA(jLoSh9lqavfVg; zUe z{y)agjPvfF``e?a@tEPw>;DWFHt_sodcj`G#Pw$@!*5Q8|9?0c7=HXm6dK?}h6w-y z2olD?au|kzaN*Beyzehu`onN>10TcRTYOzC?EfdjOk%|5Vl)f_00D$yFcTy58>UYj z^Ioiz`|O6n|qFJ2>5MTf`)x9?y`Qb7E00004Tx0C=30k-tkDVHn3h?`aW41Ep6LLAasX3~33v zL=nMcP_aV{0h4T(yK4-bmzTTOU!A(>CJJui;1B3j#7P{pxVaUIg9w6ufFg8gk?Zib zWT{9Wc;NH>!o%|mjHWH6Zvcyd3JX(Nt5mL79hbDz2>`Ye$;o{F15d_}?+Acz?`$dk zmt$Ll9-r?wuFpReH%mXCt^=SeER`!DOu(#ZP6B3C^EhCxD5*f?0n=HqT@Wsi3X6pt zh;1NI)4UHPs+v!L#IjRUAeulraO(kxJ0RnFkpo5&P>u{07<<5*Qn_O3(bOzV3_#mO z%d152^$YY4wY+2>yq<@%k(T!`hX6#+Mf7oG7y!|gg%{Ux{4fL^JMg$2$G;Ba`0)tZ zuAmt>OX2dLy9i?xp3{0at@RH;_x(5P{Q*eB!8FWw!t6Ti-oV>qcy$W-ZYYjoWN!ba zz7+udIoq#SLtA;SRhY_JxrW~eBWXL{Gmrk?P~NHn$Tj3zSg$Q8Yf?(zOIb64^FCz_ zr_&jJ13A8RjNR>nDgXcg32;bRa{vGf6951U69E94oEQKA0;EYqK~y-6l~Zd-lTjFc zzRNCYx>?@MD4nLOaGQ$eg_)FPk!CVX!Az2n&>$(g5PYrrkrYJz5V{Nm^^c=kq{JjP zXGtZ9C1M$(k~#&QWzKAF`%XXRWrSose-4~;p7(v;=R61aA8??-f%e{_{+Zki22r4q z1ShUT=^G(Fz>BCx&!Gm)UyE^IK?o(6Lx>9~PBF^9>^4Rb_Muqqxj;an8O$0~3e^w+ z0CM3^UlZIe>P)oP4Cav7rtNL0K!~S$>Be9XP)qYsE2_+30RSfi$_;meOf`Mkq~2CS z6b&(bIE;7zK=>V*GW4FT-}lD0GLKxj5E{*@no4PDl_EXfG#<`nXXXN9Kwz zerLC4sGp@0wIOK+#nPioBhgTX2H{-z{S1Bbg28r%e?4DCQW{k@luPpg01qGlKrxG- zX6+$+B9f1#C&=f3ePi_0yMU$y;-hAs7v{tlT-m>u5wnE9YUpxzw$EII&f196i2`UR zTmT3I2NuSqltdM~Bll!>n$H{SWS($~yRur7Dl1c@lX>?KQrptSnA&W&h;E=399Z~G z@UVaYSaRNf^XyNl^Uy(sB0w1%CQ`)(`DR5XVA?%FbnQL#tJd!g4jo&A<_rp!oj_eb zzibiB5zy$oG&DNkXl?oM9=pOKNSuE(Mi)nT{o6j;WUw3O9tT!|bi1Gjpx3*--H(Vj_%*j_xJbjI3{N1ugGcv0th7v{{8*S^qY~f$5vlI%LV8{K47Sr z{P@A(CMxR9$ig!J@BjaNL|D%H_us$C=1NM5Mv{^Y+bTwq8Dpj!^~0LyqBfVzK(1oD7U%VGQhUZVU`hpE59;n=>$4TQeAGXfRmE#s)GnGk3uB0R#}-0lcE3 zp;n-vVFC)}=QA)od&a=<=@Zxh4lgeT#>z?tWgy>~nb{K8Z zahfbF42+SH3|t_~U%q5u`1~16Gn$w%FbD}T=mH%fqM_jq(+dzla0mQ&_wLYDkmbOf z@PGb%aBg7u{vBcfFeEsE1~LI1q4e`7gVUcs-YiT^OMn&&0Wm1SO*3aRVEFr&;s5E=U=Q5~dg#;r`)6SG0t65|7ySG2qjbmN!(t3pRzBvd zRx$hmTF&C*!@%$rnrMLraRZ}<;rDL_rRHV^HUbul~!`s^1oGlLRPKYL~-gP^Z3 zL@mfnkXm+jhClc3GccV$&+rhKoA$3>ed^D*Z=o#g?2nS59s>v>Eyn(2J z2K(=;R~h~vIl}N57!?QCuRr(a>(?+AHnvB|1s6a7p@aZP6WB$6{z$TNaxQRDQ*+Y+ zCPqeJu(DZM0Tap(gzvbx7(N_2!~isuK?D@%FgXwg`ux}9#|(eZoMCtdOjCys960~$ z^XG7&&u_ylPXaj-2mk^Is{@!pMd_bEd`zsYi(QnI{B)i_XZR2FAt%TYAdN6bu(3gM z4a{Yz(mwnlKrV>jI#Ie%!pt@C%sY-vHCh;R_c||NZ$h5SDH$VWU$|VOt7zCow$g20hPOoHi(L~U; zGsGBI1Qz7+oey9`LXJbuQLPX(lsl9hG+0G0rPr-2EAf+!9E84Rw~n3$&9Dk~>yy?Vv)_TfW@-=H)Kau_h7 z0qYL1LzzGrm=;)oMKCiE3rR^afV_S5^y#gPz#0(f%y;Mx2!q-S5I{H^B*1E!6OKWRyAbpej)qQW;?YkR!eT z>kuViwQLm_=myNvbN@lKpa6gXVnVZ=0~qYntZZ%LOn}wzx3gzad=3L(%YpI#8<^+6 z0<)elFa-X=at_=DKps%dS76l114F_rG}IHAXqN!Z6GB!75J1Qc5*}bvY^sHuTdD;x z&c6e*(_d`S1F{@w@h@N;A7f&=e3XIV)JLFig@Iz&LIM;;-|pUJP?3;eFo})z2G%to zM@Yb=0Ro5#Dacx^-QAOHftLRP7P0@Z_#7n05489T&_{=V|33Zm|9>x_nCtQH-?zL5 zhJYY2YySO*<_u^^{JedeK^@q{GfhwTWa8xPgGmDf5ZnRWVq!jee89xIXAf4NgQ9{T zDF0bhl;OyyPp5wU{Tl+zUQd7qd;*4E!s)kfx4s4zQi4D=z^KGXH~)bl@fTP*DFYiM z0xBx@FmZqYf;-^*t5@Fe3~V9tp- z`{c>?x4=@6AK3Ewj~)_0ab{IjhDX5C^5gycr(wbX0R(pd)8D_fN49TYe-2oPu$h@L zAg4}VVEnz6m1Q{a^y&GZKYvEBGBG{GNX<-4AAtRe0V+*RQA}Ted8_2y_G|u+jlZ@&JAP0;u`m z-Mc4$e*Yc-Y>M5+S*S2EJqJ1>^vtD8o1Owg6XbAUam>ICY!N>KX6X~NXYc#_=~ED} z)VK@N0}wzc*^rr)^#{xU|7j=o?OS(MM1+CE#)jb;FyS1!diC@lP_4$y{0Jj$fa(II zS`=6;e*#8F;)OG3c02=G$_Whir@+$k?CRA=ffZOR(DIka`T+t6UKdOS#v82C0LGUf z(4bxsNlB-VZ{A!0HluQZE#b%5e9Z~172!1~lm?n2!o^4q4E_}r9NT{WTzmKT?>LTs|5hU#`s@FHdpRzy%`WQdyh0fn z3=EQz3@&_pEKDpc3-6ylF9K9D86bebE|!sznH?!1!NHrH%)nr3%D`Y@!5~;w#o*1s z!J+o=-=begF8{^AU@ptTvc*+amRBS_oq<7Dmw`b*fPvk|hruN*j8)#qs1u|PAb`LI z1HfF7~Z^LV0iF=fyvmIfv>WX!HJWTLj~yaKTJ#>KtoNX{`}cxFD%R> z2sD(*z<`0_(Ibc+px%GLU;vo~G7}(xzy?2g_%Lzx)2BZ^FImFCuw@I-S--#*`o#DsMoecX|toZ%t z%$Y)vnE(LapRr4cY`;+dGq7znl%gzd-pOhfGh^OoJB{6L7=FJ!Q%gaHtU~1 zIfT;E7}#Jg{qck0|E*gLKMx*cIJ|S`pSx$zrZX`y%?6nX5I~HeblfN*0gORla{K>3 zR8w4hkp~wShoGw~0|Uqapk@Xh9)_>Sk2C!H`ICXy-kyQs>sJN_78Zv8FJCfzIdg{L z_{EEVZeP2W4|L!(MrLM))Zf1u00M{w9@W4wX8Zqt_08wczy22zTI;cKBM0B7PYf)2 zdJGKj-!pKlszTI(ywA$Y@aM$~hOcMOG915t{m z`|sZQ?BwO$>bPSEyD%`kSv54khJyjnMZbZ;@bSb6hSLuo{JH<)MIGF`LlOl8Kmeh*7)1a0``1ENQgWvoFeUs28t@5d(C=NlK zXeh|`|4>)(1H+ad7-`J#=wJj}%=q>#gSC|vhrEu?BB0^$910LXV1t3S+e>R`?DQ5A z;$a8I^bcT!!3+f%#LLCSaD#*6&t+!j-`qgMSwLY8iYTBDegj?308Am4j*c8M`uc1C zLR}6JKwyK#m6TTdNl5VX17rFZlA$0;PC-G2s~jA^@BaH2|M2f$@5?`b{$K}&GbmX8 z10xD#_#a@pWdj;+v1SJ(#MMZ|QY;1pSy?>t%G;}^Jwt=~8+rzhS<1RdT@`Ht!mw^>%7|0Mtd3lD@ zM~?h^eEfJ9NF6``fei*~oP6`_+4uv0|Na4$Sgh*m45yfw{@i;0JPlYQOk+f^b{H8~ zKYaNz_`;n#KbSy8rmQT(#q;O?-Q2UM3|N-eg46&65DP5Fu`@9(zjyU2&p$c2eqbi} z_xRDHe4qjI!I=WhV30+uz;yfK>C=cajEoD|czHP?j00004Tx0C=30k-tkDVHn3h?`aW41Ep6LLAasX3~33v zL=nMcP_aV{0h4T(yK4-bmzTTOU!A(>CJJui;1B3j#7P{pxVaUIg9w6ufFg8gk?Zib zWT{9Wc;NH>!o%|mjHWH6Zvcyd3JX(Nt5mL79hbDz2>`Ye$;o{F15d_}?+Acz?`$dk zmt$Ll9-r?wuFpReH%mXCt^=SeER`!DOu(#ZP6B3C^EhCxD5*f?0n=HqT@Wsi3X6pt zh;1NI)4UHPs+v!L#IjRUAeulraO(kxJ0RnFkpo5&P>u{07<<5*Qn_O3(bOzV3_#mO z%d152^$YY4wY+2>yq<@%k(T!`hX6#+Mf7oG7y!|gg%{Ux{4fL^JMg$2$G;Ba`0)tZ zuAmt>OX2dLy9i?xp3{0at@RH;_x(5P{Q*eB!8FWw!t6Ti-oV>qcy$W-ZYYjoWN!ba zz7+udIoq#SLtA;SRhY_JxrW~eBWXL{Gmrk?P~NHn$Tj3zSg$Q8Yf?(zOIb64^FCz_ zr_&jJ13A8RjNR>nDgXcg32;bRa{vGf6951U69E94oEQKA19wS8K~y-6b(2qMlXo1( zpI_d;$(uJdp-Gc0wrPtgiLEYnaoeFzv(!ylSz+uSlpTg36NG_+xUzL)Fg)sR8|+YU z9Sa7ghta94o!WtQnQOI4+Z5B(#U`d})g(=mH1BtpW_a0i`d&T{Jbd|p00saryIlGc zUT^O)x7!W?Lx2ujso!52jn*?J(`%=I1^}qD03e<9c!qE7-c8@T-GB78w6xa2I(!(g zUvRr8rh-8lX>X7C03!fkKOmp;`OeSv_mg({a`n-`0G(IWnU6X;I_mAmoX+h(sOseM z(W9iz&Q|_Dd6L3yZI?~~4fxpa4^8gdM_MGZQ7x57o1U&d>g}ZwS&n_^_dDP2?rs>- z>!ZtkeWcyJTdiiZq}{t$P8>Nx-`Z>;ZkHsLR6#iCdi>aFP?Q>}Dz5|rWQ)bDEE+xF z$!6c*9|!~-gM%7z9H)Euu(m!vF2ru!SV+yzp5>xXo)l24{URHpWea!>OBh?z}k&Bsc=td&T0KUa$X^WwSl5WYR91 z%>-FyMz5C|0s(N6#E{9LFgC_+j*ccK6Nz^|2c`&M+!p}C0QXrwpChyRqLfa*YJ2d& zp;#=$84OIv7^7T{RJBuGQ-2f zTrLJ8XoUh*%VowCrBcl0@^~hU0LB3N0C?_DXXk}i^7)srv_xw}Yy%(yAe&6A!Qmj$ zZfAdGGE6fE0C2pqXV1mp#>QUp{(UNJm5MyiBw1#>q7Vdu$vjWn+uQA& zUVp%w$&B^@YupK-vA4VXQgCx~uM&^fo)YO8KstkgB}6f{0;CqKdn#Yp2m>^Kmb%uKuGl8h2W(R-bKUrCPFD`Due;F}kwy)=;G~a~mjhmP%Je zo)20Z8=K4)OLa|>#CSCNTPm462LSK^#vi@j$b459U1@2Feuf`mVM0;2DRb`TunO25>}7rq{nV8m)EqUwc|^Z!4CWvH$=8 M07*qoM6N<$f;%vkm;e9( literal 0 HcmV?d00001 diff --git a/GMW/GMW_Term/images/circle_s_0.png b/GMW/GMW_Term/images/circle_s_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a6c029a05eec46b95481641b7ed181a3158fe3c6 GIT binary patch literal 773 zcmV+g1N!`lP)<{98FWQhbW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE;UJt{NMlp0)k0IK~zXfrByp@r!?{zUNQ8ObM7;${}op7@^$Kw(6`CJWae_-p+X0y3Ggt7B`I-M3|9&LKhB)$8Z>T?*UNA&1SO`l}be&Vz3RoT@wrjDZk%8F&d4# z;8LknhM)q0;N)0f(BmYLNKk=5;Bhb*T)gbZp5p5>_39Ag%|6h>8jHnl*UzZF*=$Ck zF5e4GQPde|GtFc&LIQdtLG@n?weJun#<)kP(~)pX2vAc6mLZwg;yN4PYPG5ak`tm{ zuRj+G1y;ZwkLSg1ZxQkNd^7!9@=+ST~U2lHqXpWgpI8E>B6mOG43I00000NkvXXu0mjf Dv5Qat literal 0 HcmV?d00001 diff --git a/GMW/GMW_Term/images/circle_s_1.png b/GMW/GMW_Term/images/circle_s_1.png new file mode 100644 index 0000000000000000000000000000000000000000..27ad16389f820b20f3bfee1d7a602eafe3a38430 GIT binary patch literal 1034 zcmV+l1oiugP)<{98FWQhbW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE;UJt{NMlp1BXdOK~zXfrIk%gT3HmwuTmY0mS|&*k%U=HlUccFnwZXJoOUru z6H;CVlBt9USmB|-fC2dwR49mH&ZY(KqlAj6Tzt}(kS?Z zNY6Ks#)gKaD=hopag2SoWHKo;o6XbVaQIiR*Bh~zOd6BLqAAlWp=vGx4bd<(IUMkn zT#@`f5MYV|x3{;qpwbNlpBo+?u1=*=C*EJI@Y|sF@gLCecmpJVKY_aBGKlqEuRp(h zMLRJva<-rYsZ`3ewzk@5XJ;=Qb*RekLg*v-^wGZ{S$_`V-*ZsA^bgc}5}+|z(<8Ci zVYpVSZBeOI_U7j1J%tD1)&5?PY&-?YpU*)2%X6r|mw_{jS*W?40g-(SI^F)weRpPN zW@HYBV`E`q;Yg+L57+pDAo(i;;`_VMyBRo5p|^4%ype%ZSNmTpzm>~&&X0|a35`Z$ zlIE1J2sQ2yh=0pMeF~LQ=t34m^I538nS+XnJe-I;gt`mgBr&BzGB`NM^!N8Kc6D`~ zgqhM)Od2H3naNEoDesTN{I0!w04IDr*?dEa%=S#qcX< zQRyzU1fk@57D}}on4G}}Bo>RsJswX{V4-OMPT$!A(N8a-a_$vW{P+sWMz)|Nwgn{g z0*L=95OxKaYfhkG=;`U<1y4>)xXM*7DEna*bGZV7z|Tt4VzDrhNMvz-exA48iUHFOQ>)bs>Fw3y7FFt}#5TFn?i!68&g zF&(YrTYV?X1h?N;{oSb0Ou0z!XaFDin&NXEKH3A7f3aRBC9x4mvmp z#^^*CI%~7p)(b*Eh9Fpmy|_s$OxuUrrlzJYVW>OphV7)Jwm=}T+1=eeeJK3niZwbq zdXWyOcs!oQC^)yR07*qoM6N<$ Eg6N~(g8%>k literal 0 HcmV?d00001 diff --git a/GMW/GMW_Term/images/circle_s_2.png b/GMW/GMW_Term/images/circle_s_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f19c8433301aeb550111e0c492ec87c9356c88f8 GIT binary patch literal 1195 zcmV;c1XTNpP)<{98FWQhbW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE;UJt{NMlp1Sm;FK~zXfjg)&#TV)u=4-2Hgf!ab47@;hY7_uxeMzh3tVVH?V z$*3k2O3Q|n*1EP}p`$HbThg_`3mwQFN1>&-=XZ^Tsd{j@@ogTwh-=+}PM)^YZd8EG;fF3#%(kc5W_n z?e;DCQ}OKIg5>0DU0q%4kr+FEw_2^mDwS%$>2zMLuCA_ZX=$l!B~PsOI1;b)Am#J( zc+zgifuiC8sYD`<3hwRg%`Go4FR81m8+AAwPrKdjgav$a}dofBV)n~ zq2BS2v_?OFQlZG*^#TfYxm@0giV9sM1<6)3_Rq~A=Z`-jy0wg~n*pRx`5|cT!;6v= zUWHt~6JA2xwWQqk1X_er%bq>Xc7Xg>$GmnbFBxN||o5GdmefKiS?`flUz zOh-otT3cK91ZK7GBjvkQ@V{CCd*MFfyH^o+eibq9zX+6oZA)M@zv3mS0Ze^;J=)vb zqk_-2d}xX<(Ie^X4@h)Pf!8#NSkn|@>ZS;6f+!sYb9@BMn_uG4t4c6rZbNFdddOff zJo0(FvT|tOE6;;xItkWT3%=v@R?v%CYXdT7 z??5zj4>@<2kp0^-GJjge<>e~ z4G?Gm$rlOOIDm4Ep__tfKt3U3$B$-*(B>d}!XH*jp%WBJl@e$lNnba4Co!%`B$9$n zmRv3umz9;Bhzf3WB6~WpUH%p{fW$9Wz%!5HxuZqlNdI>%7Rz)~Q)gZT_YtTkgt%reG7GDGHL8m3B}Cy0vQNp#d7GP?Bd<-plXRa8m;W{Olq$Wy2|Xk; zLZ;9h*|ln735DO*Xf$e~e23?3jSHz`K>{Uf@=_29o*;Oq$B|xG?UO0qIWjpkB#3Bd zPfw4?Y&Ls{E%Q}XRh6Bco#ph;!-In_^HgWR_Aer#!;5&!FfydpwP%hV^N^4|T>hh) zMRs%n0gK7j^U_qBO~z2pYZ4q(Sy7~EL~*sgyYTg6;qLEp{so-qc^^Se2%-Q0002ov JPDHLkV1mnUFVFx0 literal 0 HcmV?d00001 diff --git a/GMW/GMW_Term/images/circle_s_3.png b/GMW/GMW_Term/images/circle_s_3.png new file mode 100644 index 0000000000000000000000000000000000000000..70ea5a694251a65934bcc4ddf6f85ccf61848150 GIT binary patch literal 1358 zcmV-U1+n^xP)<{98FWQhbW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE;UJt{NMlp1j|W8K~zXfjg)IllXn!x|6qaA3sM*iskWMxFVkcpCfkxNBWy-9 zZ&Zdruy#!D&?2J&tE&aGv$GptzI-W+iHSMoa5&iHjEBh-3f6P~zUl+M z@UKv@xTm?fd3G_zThEO~V?u6jZimfg>(0r^Nw2G`OK+f?r%^+20x zj^xBd<&xl*mKH@?TG~#XPSx2LKQ?OBwi1E9SJ{X5=dmBu}gtN%WaU} zrt;^Yl8Y{coF(XSH~7sS@apYYpQw3$pvD}}Xi!RS`u`r(LWhLtZHT(=Mnoqmy+lw> zsTb-7uh9el@24SBHABAsb0yPiwYxGiGt-w+%e@!vtwBVudk*TR@_o<%g8C7Z*<4`R z-AK(TA7xEVO=xUv{9j<9rWRpWpCP1U2EtQM!Eb$vfWyz=SN{yGhQLM#SpE<`ODzG@ z>vTBO(6A)9v9_i>=qoKm-}OOY?nO{#FP4?|z;AC4SZ){Co?pRK7r+wQux?`p*w(ZZ zEGyWBK*L_}4P_8kR6@MZ1YxNef+92c1!e@~TEW|)!Lm)CfNvytr5?-4)8Um>2s4-= zDYYP^*aDHpf}ji|)^1G!%QIF$aP=f2ChsA7avX9>lx)Ne=^YQEZg>#UH;vG%Pa!-w z0DgrQl7~ZBF)<3+<384xI{f7 z^E=+~sn=5N(-7GDAlj!x)PoVo{(K1ehy$yJrm*7r6e4?_2*2V)=mi>P!yr^8)zp&Y zWaWEiGkrW4Q!Y{D(|5Q;anN%#{gY1+RMm&&hH}~wb|3T(L2oz_*~dX$1a(1l#*N_8 zvruVDT3L2>wqWJvZ5`1Azf<;|uVd|DdBY>b>OqtCMmU#ssg(gG}xaS5%Q0l4R#~B1# z2NAX*V|eBJu?z2HRZ@~-)7N=+LDmuQ4nBr|Jt?(POe-IOsegee--Pfkk9YdwpF9X| zbtACkl2_@X&{r+F+pPHa9DsP>i{sN%C0myU_BBg$d Q%m4rY07*qoM6N<$f`&YS+yDRo literal 0 HcmV?d00001 diff --git a/GMW/GMW_Term/images/circle_s_4.png b/GMW/GMW_Term/images/circle_s_4.png new file mode 100644 index 0000000000000000000000000000000000000000..bb56b4b99365cd3336de17a95e6a4da4c6ff940d GIT binary patch literal 1513 zcmV<{98FWQhbW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE;UJt{NMlp1!hS^K~zXfg_V0uQwJ2rFOS+cmdZ;jg^ezmE=H66u_ar!=`t3S z+R9LZFcF1HSPRHQprZu@j51KBQ&uM;C?bLn5Dh9wsb;$95M|0^sPqj>Oct|^|Mu;) z#p0rF_s^S?-~GOG&Uda4^P0zCDCJFz{T|&pG|ot)-deT5_ixS2A5R&nEQ;y5e?R#h z7U$1Uk?6|d!-xNR9pk08KeC zjrTCWVAqTyLo=2fA1{052YNc&WcfPX;Np^Mgj^j(NWUEmx~&kMu|m-50B4s8g1j6^ zMjs&J!DC48njyJmMW~5tYEI+bbxDJAx%_4L@|f7v#ky*Q86P90&+3H=Pujq3bb?iC z!u-4fM2X9p=@U%`gVd{hZ)Lf{Wj~~sl=fN(YJsT3 z3So;CyrVX->z(i`G9fUx2-15N547I{6?a+?aGL5)kSq03q^7GH-C#p$DewK&iuRxr z*T_Eg)McNbf)?8>)DFM8Dfr});w&vBKUrUZS`pA@1;5z_&JT95>L#&7p?O-cU9*zO z%~mUyX=wUa&2v2^rCd@vub!a$?C{y`1f#x&fJ`mIOg04fxRer}css15w%FG3w)s;po#2k@mv z2WC}z)_%dkK8VgwL3nBkyrwD4Gfczp+iCdhnFdo%#o9+;QZ9hMRY&VLjerhXzm_R* z8m7TII1S(0-v~;s^pjw+2C*V8AI$o+OmItD!QW#9r=lOMl79H^Fv2IhA56v-Fk3Ey zNjeAS^ICA^+aTOG0A7_5?6Q9N7gJrX(cLDOBPOK_O#CTCtV{tg za8pYV@mU;+D$#;>=>&qu2O$|BLFCvZq{CJ$zHLX?bvuH49T1a!;ei`q7i1vt*P93% zy9ep`1R@_=Xs2yhbjyxVqXR*g9T0Swv6Mc*$kwe*3T*ryl82P2UmndZziUsu(|3Tk z+XQ}|8etb+c#pFVgOxrNP$^Attk!S`inge6xHfq~4g$CdvzS zP2T}_g$V(9xdo6sT4Tldc=9Q?nWvl}g21NCA-q33}3#(#VtwY)DM>T)fzr7^SGVdM0eZ z>al;GV(Nl6&F<-UPWTp3q;rZ9K4^8@cPR~W*{37rh90AElnr1_!sfd@9UX6b?}c2Y z9uw7`ftU`;Tuh%QY6?vD0OqT;SoEU}q3)i}+IK@K&eg++P^zD;kByx>LN0ndoxByw zq(MPdHysqGC;RT0I^a`D>C3nZVTKl=bWhw$pW7#;tZ#-9l~|10eRa*Ryvg$DXxWDw z(k3`x9i@X}rbLm_N*fs6V|P#lX<7vJ*xl0?p0a~`%z=5OMpCMIR#Q{ke6F!k^xD6P z!B8jNl$zeSWL@@C&gN#yzAIUGz$CPTy{QO-(@(%XGz5_@IrLHel@OSkE;nyy@IT28};#AIbxN6XxxUI6|Bis`@FsI`lG P00000NkvXXu0mjfMxMV1 literal 0 HcmV?d00001 diff --git a/GMW/GMW_Term/images/lista_01-PreFus_l.png b/GMW/GMW_Term/images/lista_01-PreFus_l.png new file mode 100644 index 0000000000000000000000000000000000000000..2070ee1d603e5571139ee4fb7afd7c800418c016 GIT binary patch literal 1709 zcmV;e22%NnP)Vl&|00004XF*Lt006O% z3;baP0000WV@Og>004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00009 za7bBm000id000id0mpBsWB>pF8FWQhbW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE;UJt z{NMlp1^!7yK~z{r?N(__lXo1h93CH*eQ-NLcvUTC?m_vOx&ge zMQ+Mn3W}N$2k}609xw!<$J>^cvLGsFDJ>K{&>5Kmg|^UAK@bnNJo~lE#Dg&%E?KfB zPyT)T{`>x(-|;;Em&N+8eGJwiFm-K^s;+{mZNr(SU-7TyaIVdSz#ZjS6;cH6Pyzh6 zokX?f+RG=6juGI)CX5YCsu&9(F`=#OjAd|)PDzZwH|^-%9;WTRg}5b3|WH#3L=mxY6B;_ z5NxgpUf~kN9<0Fa(b1_PP#YBdpqKs+6mAXD8{-}fFA}&0G^HDZktpK%h2baZolKmZV~qYdm-->LJ(IvL^yfW<(xQ z!6!mQy9R-_fRz?XuvW6Egw#7IAW?)if^UhRRXp%X%l9@6tx1SL!0@LnPu zTzBIQPd+YmblD#|bnkbZ*6AsD4{6_w;>Lb_wM$9mC+m%tVNGNKYA)&jK7lTqf75^o z$xNg=6S5WUnC;Dnqgy&yixa@j6hHQ`b`!NnO&&n|vlRQ^7clJ;#Rw(hHi zPoxl@T!yMp0QuQVlLx=teUmgz{i7brbw=@RwD4=q%FC6Sis zXhvFZ;%Jo_fyoN^#fV6HQfy2SL*G9zF@eF`_n>T|{;B#QA?GUA7~s0$AO%gKlBZxc zn~&(+YNX}YAvLcS{Jc8w^K0q42C4b=2;EnS&3h~HZB`Aw&aTIr6a^i-blykH@j)1a zeWIF)gX^waA)vA`Y70tREQrXh!wi>Xl2#fV-4n2Q;}NjKMeqy}z-y}jo`hA~O0Z)4 zDXgSJ#Vbrm6HfPSh_Fq(82$uK41-lP{hyEtwRQD9O~5>OhqS7vX*G~x^rE0zkGDSF z3&*8tm`<90&3`u?9x`y~^zw^k9)bLv!xg}fRzETq8#r{|p8^KZInRla!8cAwd#Lwe zrR0#O9}hnA+kMntq5&hHX4IWf=&ab3u7uN)M9gr{z%2JvEZ=+zs}q$7h^JD4FlX~(^C^$gyk7sBhLY3emeCAYi-b9{J|aVlmm zPsb}OcVgb>xmfVUAfE;+;s==&iVuN+X2k+&%%cI z!bjN;-M^2@76WD8OD_mR_>{^x%_Yv>Yg^Vc3C_!C;$0KT;hsb?{l@zXq`=9I{$ocH zSPR0CakTRB(zhFjY0^#jUT^`gu1EmOoqBB#Oatf6djRtE>F#`z-FT$J$%6tsgfp$q z9z4R>O2j^kfWi8VSFLhg4;BXP2WwsoSc?+Dde;UbV#nC^6RU0CBDz0@ zvHc6i^QXl?*!~Yd{feQQq=@jwytJVZ#00000NkvXXu0mjf Djr1L7 literal 0 HcmV?d00001 diff --git a/GMW/GMW_Term/images/lista_01-PreFus_m.png b/GMW/GMW_Term/images/lista_01-PreFus_m.png new file mode 100644 index 0000000000000000000000000000000000000000..e06cf998bcdccd9e7673d9cd46f029be26f8e2d1 GIT binary patch literal 1202 zcmV;j1Wo&iP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00009 za7bBm000id000id0mpBsWB>pF8FWQhbW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE;UJt z{NMlp1OrJ#K~zXf<&$kpQ)d*%*#hX?#C_O@eb8i4`5=2qj1i@oBtivjHe@>EHW!nT zMPV>A29zxkTIh6;=`Kv(WE%<$5Z3m#&|(TwUdrn&LV?N4S{Rnv-rE8qtupA$e-9m) z8De05-A#UZp6A~4{O`&6pX24Vj^~bjHkfW7ilW$~}sDCdIvr7?Cc??#`^eXg_@5keXQLh%j5{HS&2t!Ea$Gws~Xn5IB? zSy9$9f#|FTgeFOG>bwfgeG>)GENryR8fq8|>ObL`AI*#>j5_ z&*JR#e5AJD=9H3bW!)U)3e6BzC?cTL+@e$U!se9N_rR=t% zy3>ZZiyGwDnV=*;DA0`IXnHLUB`J`S*MOG(@fddQ;d5(>&;IH5HrZXpnmz|;B7C9T zfLB8@aU{7Kl{yP#T^v%&ZXsN##Nm`*QCi=R&f&Wo*AzBSJ6~Z;)5I_im8}-=<4W*C zU>d?cy|O@em=~0tEJ|A}IQ4Bk4kpU+p;(3P(Yx7e3Y*xOMw*#~yoW^*1ws-O5a!kowf;8w`cuWt4(E~P0h?XQSW&8*#2Y7a z@%(O*?dd|-z=U~^bK%h*#>ly3OSSJ{5t~hnOr&vKL_?z=8+0wWx2_VOa?S6$ZN5jG zXHi8AJ1J4YcfS}r-pK^5HPo$KFqr3f&9|qCkt~WDCh&nogM*~E6S6gE>;EHqm9S;X zRix=9ZAEJPyYni@gdO+i{o6(yRw>DL3I5p%Y}hNpmJkWv{;UFrzL0s~CrHU~R3nrO2%i`i zO5i8S5k?3h?e|fJ>QQ6g*moZBhkq>wjB|5_8oiB7mkpVf25ja@h_Dy|Cx1eCN-e^K zHOnXwkwTMqN>96mCo2#^2q)jeiIInsYmr>oXi)2o0bX{OOF#@E(`84A)(qY!S3IJd zf->-0)MfY|&%@4R|Kex?c6!Lijuqa^CHu?RPT~(l|A@0$3W1k%anXNha+XmtEaE9G zHV0>51F7xCeQEIBo9e+QFcsc}mDQW{^%6eItLIGOeFD$ngs=p4?ZX03IZQU!)^hEr z<<0kV;1`tcVaxLBM>2m5kL-Eke+XKJbdKNtG|zcks2G=iX}WHmx$pPbL`~0d>gSnK zD((VJ#hzbH%r|l>M)D+QBr@uBx|E6)U#HH9D=5(qGRk7VcWlim{C@@f4a2$AsCt9a QYybcN07*qoM6N<$g21aYEC2ui literal 0 HcmV?d00001 diff --git a/GMW/GMW_Term/images/lista_01-PreFus_s.png b/GMW/GMW_Term/images/lista_01-PreFus_s.png new file mode 100644 index 0000000000000000000000000000000000000000..db7156afca27da7046c499acd2939eb31e068b5a GIT binary patch literal 784 zcmV+r1MmEaP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00009 za7bBm000id000id0mpBsWB>pF8FWQhbW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE;UJt z{NMlp0%1u+K~y+T#gSb|lVKFcWqDy2T}0|#SK&oO7cMgNVi`_%5lJ5um4-%ND~O^s z6JN`BI+spOf=ZBO5n74vecf^&X%?*|x~;{m)`xBC#148`1^*r=WKb*bdf><5 zIh^x*4(CZpNpk!%(X2tci`EW*poeU(tYmdb^H$e%vs5*Tf^$8P-!b{8V+$KsEb-3F z?;UV(=rT>=P@NvTs#x?qeRpHU0^8@HlNs@Yv3@~w?^_f}dvUVS7_^LYoBt_sPDT#v zYyosUaiiVnf_gZB6RkrKNm+CbINW~~L>A)N&z<2}b~J!uNe^<5s?crrq5ZKNJFB!P zsng=c8}G5Ck}*%XtIxurv3m?_1+~~-cFR5Rnscj1I8=66P$20;?On6~j{;99y47I! zMIVm%kW;QgX1)T~A3UR`LQzU@_oLI~!vUHsw35N#E4TVLiDP1xjLzXgn;B`jG8~~g zKTQO}>lX{{lXE(al|vKz5rt9)XIqS4z2QjSPswC(UZN!%zi0AbLvbtC2xQnpzOKC9 zfHH+1r3xMP)%0U`je#taf$*XRH`!5LLJ<4@P4M!4D9%^{D5W1EEk}k;B`Sz2v?wBo zD*7P0M5xe^W)h_&lHC3){c)XjT#zyyi&0wA+@^OSV}~58x5Uv#y(@J6Yp(iP?gl?HSLb*d=6M_Pe2fZw zjY|BCANd=X1+J+KTKnY4m(PONHHTALj+^{(a>HMdrd=`Ao>*#M+{UpBnBd!v?xIu`1E(BO*~Y&80z=>UH7$IAdT2cr2PT7vNEFkT-)D+h0a z(H4ex;b=dOj+5X=pfeI(Q4mB!5QCn0^d_M1ECv!WZ~=o{yida4srZnN;ma7gg3)Uj zy^itkF_DeQJDAMDWG<%iFm(??9)$NHEWmUjri&mdf#@Mbk1+ESW=b*hGiJ*%TY=e1 zh=0Y$YJ7YKNgX8hki5WL6Xu#BZGrR^q^+2Li}^pX(18U$WId4eLe>x20A%kWAA)=s z@=+)zpqPY02*os%vrtM@Yx*DmMgj^ihYmv2NUX0H8~<$(wshG>RmPf8?gv%BMYrJ- z)eJUya8;&pEIlxm9eFG^AtWY@utH9pinZ{f`tqwYVvOisxKL>Dm-Bw!dp9Dr^$PKZcvBUM)l<9i(T9EP1i?2%#DyHaEv(nRTM89#d#0sOc=;qnGLUz%NnB(JU8Am*m&I ze0cki^i17{L$F>W9r=7ogiJ88jb!BzjbYkDI*l^pK9Lh{{ xSVh004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00009 za7bBm000ic000ic0Tn1pfB*mh8FWQhbW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE;UJt z{NMlp15!yuK~zXf<&<4alUEqWG1NM zP5$Y7&Uw!7ea`cL&KngK!H>Y>WCqTpF;JX_=R$G>TOtd=d%XqQX1K8dY}@w@1FILlc5)wdHVeF|=-#mtM(b)H!WRIAg9a2t527k5x9A zczb^@)=e=uO9b|&Nao}Oj*hiGo>DnUDeg*Hll2~Dq-3n% zZMhD-SK}vz6MV89Z*9MxRU!BGCvke&H+1GN8pdx+lD=ISy+3|1f3 z;L_l6Vu~Gig?7BqgFI^28z>iW|B*!9Agg2@mKulk@x1z$v~3Yqd0Z4@uTsSjy###) zbR0?6pqF!I)4MyCz60O!>W>6o?$;H5cJ52y#oqW2)Uzj!=f~xQx7MXf#zQgq?KYLI zt3H=Y>*s2WEBZJ>BuYFxH)K4bUtOaz~P_1;7VEW2sVHgY@5$gRwYYRNFt vylSGFRvJ;dvBD@9#YpgR`jofu{}u2KtBo?m40^|n00000NkvXXu0mjfcn8$( literal 0 HcmV?d00001 diff --git a/GMW/GMW_Term/images/lista_02-PreCli_s.png b/GMW/GMW_Term/images/lista_02-PreCli_s.png new file mode 100644 index 0000000000000000000000000000000000000000..a92d6668e0627f0660d1535fffbfc8db00749c54 GIT binary patch literal 797 zcmV+&1LFLNP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00009 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 Ef_`8trT_o{ literal 0 HcmV?d00001 diff --git a/GMW/GMW_Term/images/lista_03-TerWip_l.png b/GMW/GMW_Term/images/lista_03-TerWip_l.png new file mode 100644 index 0000000000000000000000000000000000000000..b9bb07fac51c6a281736ccf2ca4554afe39af4e0 GIT binary patch literal 1716 zcmeHH`&-j>6#giNOTwfgl(KwqauFS_X_3BTNA|9rIaXE$yZ00kZF%1i`Frgu_wB1DIS3p{b^8y9TwU(Cxl260 zZT0kMCwof0$Xyg_??In_-vD`F(0DLyA|zOGG-N9D=rlcaCXD_%JWLr8J{uV^7Zv#? zI%+;9df`~iV(c+BgR#Vn(;R31&0;N|JO%NmAt4^lBtYUBNJ@mWNsxRN*vXK>hSU`J zF%{C%;M`A;ehxA+AS)AoJ`cIMa3K%!^P#X1E?xvK2QG2p*Gq7@2(A$GazJ7T87zPGl@CiH}g5hC!_6(lC0GSNr zau^wfmoH�wyOxp@69=n4X528F=*?luDSLgEwzLrGoi+SXc!0U$BHt>VN#}4&1%z z;D^u(#PTLn;lB+;Rj=NH8T=u`^)U8Z)=J)Ug}$jf8%u6rIUizCW9h6@G-fEG&?1hp z2xMoUO(%B|tO?d`S#RZ-i?7_ANIrYK+6oju^jWU&Ao<;F^KJES$&}yxD#C_V^2HRp zli!dqqFd67_Z;M_4)pVlN}`ih9>YiU=WAp(3KN-3g^#$LGbC2bDi*@pslzs->aq(d zhaMQrE?KMWeah;2F&l@H#%vqP@um--Y&&Ywe@8P9pQ(cDJS zn^7GedpX5-nb=ZJ3no@L#9bf4{hpY4f}{Klw}Ep|FGj`F+Zs5gjpOHjLg|X`*E+AM zG1?u6$I;E|>G*?*v*{3&Hx`f~6NQH~aP!Ofxq(*$vD;_8vz#RQ`IERWg8YjXmIk#6 z6CKWY?UrV|Ulz+G#X!WI)a=dn(pQ?)h5bate!o^P9O^kZ)uk zq4B~Q2y`4LFAg)S!k_AxnHDd9FO$`-+&R~|?#aGu6Dr{q-j_V7?tW{cpIWIK?3Eth zW3l!M-Dz~Lxw4W%76>PXH)Yt{8?Icf|2W+^FfMUni{zxSDX!un{?lyy{ywY4ygW0N zjDt%$9rUrd)`D5`sH{od+`*@fn|Dje+VLbrGmwvDiv+gQ9Gxc73bEEmi0qj<)`fV> zK`TcOH$!I>3)M+4jy7@#2?6UDq@{fd)!{{+M%l3_S`;tGavPZppU-c*W7~n;oXJiC I$Dq`I07sBe7XSbN literal 0 HcmV?d00001 diff --git a/GMW/GMW_Term/images/lista_03-TerWip_m.png b/GMW/GMW_Term/images/lista_03-TerWip_m.png new file mode 100644 index 0000000000000000000000000000000000000000..1bd5552a5225a71bc19c3828efaec3d0fd13a175 GIT binary patch literal 1045 zcmV+w1nT>VP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00009 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 literal 0 HcmV?d00001 diff --git a/GMW/GMW_Term/images/view_s.png b/GMW/GMW_Term/images/view_s.png new file mode 100644 index 0000000000000000000000000000000000000000..2833b7a0f047e0ca49e8d310d2b3abba20b28c65 GIT binary patch literal 1232 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 Z$E&)3qIgzX|D6j=kL#QMzy^w3{{s=Ja-IMH diff --git a/GMW/GMW_Term/obj/Debug/ResolveAssemblyReference.cache b/GMW/GMW_Term/obj/Debug/ResolveAssemblyReference.cache index 907e2f20b17ccbd5f93b646148584954dc655841..b58517c9e1aad232d9785a1f70fe602ec4cd302a 100644 GIT binary patch delta 4949 zcmZve3v`oJ5`cUEJevRSBTb`iS}5gJff8EKKCrUZ(xw4LKwbp|A+)6w(iYMp6vR+g z-l*UJ%2RYzM3EMLq~&G7D#3 z8Cne8g$8F0b43gcHEy@WqNO_QI>8i&iYgph0_#kDF?O@5N-lx2;3bIi80Yt+7IP%}u}fx>h<2A%_-TU`Err0b7DB%vVxsE&lh5488! zr~|OCW|A0)LL{Rg`@&)WD?dXqon#tBA`69ZpkRNwnQSr*CNYHUDbgM{+|KduLJk!5Nj!$aM#n}?&`EKeW!TZ8?_wni zGc7@X%o?k}OZIg8N>r()%33YYedDRW-E2vlZqTu;n#m>0d z)!xd2?Ck9Fg6vV%vwR+Cw-x*Mp+!u>xS=&n3<4T(4HJ+;YZ#9}Yp}6t1WMla0mhLM zn;Gwy*uwaL#Dk2Zg6LNdF+V8HI^$@GhZ)C6e3Nmk#3PIkNo-{tC$WujJW9^gQS2m- zEFM3{v z1(9!|dY+kXBaU@}k?tkNj~Hi2{FrejO5WSwq9DD(ahrM(73wD_I02txX92#nwFMPk zulgC1=oj3RaXG>rK|lj;Fas&H!M+GwA>d0XAH*y8nn%&)#Z!KR9gF+HvKbYg29Kux z3y~+i1ow4ofF-H9{y=i(qJjM{V@DJ7B!186m3W1*M&f@MYb9P~tdsZy<9vxfGA@w# z6QeHyz~18JSA7IbhLO^m8i0iAU$uKN#Q)dz4kq(ytFhk8SQ=dQn!U z5*rhYRf5H+KRVc{m;)EKe(+AGVvUzppJ!2ZZI%9Aj#Ejr1(gqaYCTnzHI=muFd)BF zF+Qgc$?Xtg7R;QT3b_R?v5ggJ)tDlO4208Ujq!QPy_Ln@YI2=B%q_MDJm!`9oOI*!i2hf*#XoW6 z;=O_{_%-<8D!45f5coA7;7P2Hqd{gA^8K1P zTpG~kc8h~-g^rO%=vCo>A4j^xAy%2TqXSoxIZ#Q^dz4$~Y>RmTZNXE6>7(7^FssF@ zoWxyYUE)nvSetR2TqT}6{BxXJ9AT6F2%5Sa6!e)w-B-HxtUqFTkBr>qxYZ-{@|B%JjD;Vz_JK8PUHbObog$_T2g&k$ zcfDIbyS7unl_w|ZaT_{Cd?i}L{|sR0#!|ibsjq~|i+cItumC*c7C!|xRF8(P8~V%U zQpI|WUvK)laB}5kD1L=OLmlEb_J*rljS-1Wd=^t!K08@=Z_8AmWnWMI@f{IY;Gtc= zbAMfbKH@T@Y~TH2sljLvx)|}Lh<^!J7cNH_{_+UL7%+*~p?Q4@tlH~ROaV>8Asl>D zVn5u6`-q077yAPiik&_bHy4TqzqKYCjMhMaxT6>#Tqa_FM0E^1;8fyozGC$H7Thjg zEc*UKxLw-!<--xBL$6Qo*0Eaal4+Atayr(EWH@-j0h?QAgjG&b+3%DK3nlq35XT(0 zySwV)p|(C+XiyO}A9ujkHWwV8YO_!5I#^8N`I3+B=u5kfY}UoM3~uCLSB|Da+X@+k&Zd*mvBb-^uzHr9KqzPaN;+G1VefAdZg?Z?26q^VThX z?d-SnIIjcVJ06kDf3QoZbP46@D|V?rkrSS(`9#E2*V&$aQq2uruO_SndWWe+Ua!^| zDiKsFa@8UhJnas9qSS|GwUZw9oXiRDsTU9JCx?bY^k;pR)Q3W3bBIxItqT{-1FZV> ztyDO2+-9FFT|%LzuzhrUb~G(r5mg+zMve=Gu7!iA9B{5(wMZ3owCBK_b{k}zidgbG z8fV`q{X_F?;(2zTN+lQj?py57^Sm!hy_^L97Eo5wPe;r<_;jD}{tmN!;pvF8I*9g= n|NCUW?VOAoD!=mzUir!PPoyEV&`&wwsJGQ{j4x1?EMoo-OnLpF delta 4849 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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 aa642de067766fb4891730eca85ea463f8d3c651..ee0f4aa617dad2c19e8a5d005820c9634cae06d5 100644 GIT binary patch delta 95 zcmZp8VA1fvVnPS=w^zlD-L2h>t=&wm-OR1sEUn$Ft=(*`-R!O19If4)t=(L$-Q2C+ yJX^bY*FF%qIFn7#(X_;4BSWfoSpKVq?H&(#YurGlOh2y9r^(2){i8Y`KL-GvJtlqt delta 95 zcmZp8VA1fvVnPS=Yx&5=?$&O`)^4WOZsyi*mey|8)^4`eZuZu0j@E9@)^4uWZtm7@ yo~_-yYaa;6m~*a5Ke)lA%WhZZ{rL{r+dUrg*0_O8nSNZIPm_^x`$u&?ehvU$BPFl^ diff --git a/GMW/GMW_data/bin/Debug/SteamWare.dll b/GMW/GMW_data/bin/Debug/SteamWare.dll index 3c3872e76f28f0abcb5cf4c6060319896c72d567..72325207b1b8cb8967677c9006c77146b31d60b3 100644 GIT binary patch delta 86 zcmZqpBiissbV3Jn`MjdW?$&O`)^4WOZsyi*maW~ao_+%F#O5i)9r^6E{^Xqi^ZVwr qw?FY?U7`+BJ-xe(RZ<{Q=mp59%?Dk<=-SK|VIteabFQrXKS5zD&mTgq5{*a2|8B#i(7 diff --git a/GMW/GMW_data/bin/Debug/SteamWare.xml b/GMW/GMW_data/bin/Debug/SteamWare.xml index 6809ec2a..64eda3e0 100644 --- a/GMW/GMW_data/bin/Debug/SteamWare.xml +++ b/GMW/GMW_data/bin/Debug/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_data/obj/Debug/GMW_data.dll b/GMW/GMW_data/obj/Debug/GMW_data.dll index aa642de067766fb4891730eca85ea463f8d3c651..ee0f4aa617dad2c19e8a5d005820c9634cae06d5 100644 GIT binary patch delta 95 zcmZp8VA1fvVnPS=w^zlD-L2h>t=&wm-OR1sEUn$Ft=(*`-R!O19If4)t=(L$-Q2C+ yJX^bY*FF%qIFn7#(X_;4BSWfoSpKVq?H&(#YurGlOh2y9r^(2){i8Y`KL-GvJtlqt delta 95 zcmZp8VA1fvVnPS=Yx&5=?$&O`)^4WOZsyi*mey|8)^4`eZuZu0j@E9@)^4uWZtm7@ yo~_-yYaa;6m~*a5Ke)lA%WhZZ{rL{r+dUrg*0_O8nSNZIPm_^x`$u&?ehvU$BPFl^ diff --git a/GMW/GMW_data/obj/Debug/ResolveAssemblyReference.cache b/GMW/GMW_data/obj/Debug/ResolveAssemblyReference.cache index 671b43b68255ccb22e069440bf1a688248df4434..9b82d1c47bff883f6d74954565ba652615dc3dc2 100644 GIT binary patch literal 26863 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 literal 27478 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