private void UpdateDates() { if (m_dateDebut == null || m_dateFin == null || DatesAreDirty) { m_dateDebut = ElementsFils.Min(elt => elt.DateDebutPourParent); m_dateFin = ElementsFils.Max(elt => elt.DateFinPourParent); DatesAreDirty = false; } }
//----------------------------------------------- public override void CalcAvancementSurFils(bool bRecursif) { if (ElementsFils.Count() == 0) { SetPctAvancementSansCalculDeParent(ProjetAssocie.CalcProgressDepuisFormule()); } else { base.CalcAvancementSurFils(bRecursif); } }
//------------------------------------------------------ public void RegroupeBarresEnMulti() { //trouve les idgantt avec plusieurs projets Dictionary <string, List <CElementDeGanttProjet> > dicMultiToProjets = new Dictionary <string, List <CElementDeGanttProjet> >(); foreach (IElementDeGantt elt in ElementsFils.ToArray()) { CElementDeGanttProjet eltPrj = elt as CElementDeGanttProjet; if (eltPrj != null && eltPrj.ProjetAssocie.GanttId.Length > 0) { List <CElementDeGanttProjet> lst = null; if (!dicMultiToProjets.TryGetValue(eltPrj.ProjetAssocie.GanttId, out lst)) { lst = new List <CElementDeGanttProjet>(); dicMultiToProjets[eltPrj.ProjetAssocie.GanttId] = lst; } lst.Add(eltPrj); } } Dictionary <string, CElementDeGanttMulti> dicMultis = new Dictionary <string, CElementDeGanttMulti>(); foreach (List <CElementDeGanttProjet> lstPrjs in dicMultiToProjets.Values) { if (lstPrjs.Count > 1) { foreach (CElementDeGanttProjet eltProjet in lstPrjs) { CElementDeGanttMulti eltMulti = null; if (!dicMultis.TryGetValue(eltProjet.ProjetAssocie.GanttId, out eltMulti)) { eltMulti = new CElementDeGanttMulti(this, eltProjet.Libelle, eltProjet.ProjetAssocie.GanttId); dicMultis[eltProjet.ProjetAssocie.GanttId] = eltMulti; } //Ajoute le fils eltMulti.AddElementDeLaLigne(eltProjet); eltProjet.ElementParent = null; foreach (IElementDeGantt eltFils in eltProjet.ElementsFils.ToArray()) { eltFils.ElementParent = eltMulti; } } } } //Regroupe les barres des fils foreach (IElementDeGantt elt in ElementsFils.ToArray()) { elt.RegroupeBarresEnMulti(); } }
//------------------------------------------------------ public virtual void CalcAvancementSurFils(bool bRecursif) { if (ElementsFils.Count() == 0) { return; } double fSomme = 0; foreach (CElementDeGantt projetFils in ElementsFils) { if (bRecursif) { projetFils.CalcAvancementSurFils(true); } fSomme += projetFils.PctAvancement * projetFils.Poids; } double fPoids = Poids; if (fPoids != 0) { m_fAvancement = fSomme / fPoids; } }