Esto me está volviendo loco. Estoy mostrando una nube de etiquetas basada en el conteo de una etiqueta en la base de datos basada en un valor%. Me di cuenta de que cuando se retrived una etiqueta, el tamaño de fuente asociado era enorme (ya que el 100% fue recuperado), por lo que algunos me propuso esto:Lógica de cálculo del tamaño de fuente de la nube de etiquetas
var tagSummaryNegative = from af in db.AgileFactors
join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID
join s in db.Stories on psf.StoryID equals s.StoryID
join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID
join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID
join pro in db.Projects on it.ProjectID equals pro.ProjectID
where pro.ProjectID == pro_id &&
pro.ProjectID == it.ProjectID &&
it.ProjectIterationID == pim.ProjectIterationID &&
pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 1 &&
s.StoryID == psf.StoryID &&
psf.AgileFactorID == af.AgileFactorID
group af by af.Name into tagGroup
select new
{
Tag = tagGroup.Key,
tagCount = tagGroup.Count()
};
int maxTagFrequencyNegative = (from t in tagSummaryNegative select (int?)t.tagCount).Max() ?? 0;
var tagCloudNegative = from af in db.AgileFactors
join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID
join s in db.Stories on psf.StoryID equals s.StoryID
join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID
join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID
join pro in db.Projects on it.ProjectID equals pro.ProjectID
where pro.ProjectID == pro_id &&
pro.ProjectID == it.ProjectID &&
it.ProjectIterationID == pim.ProjectIterationID &&
pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 1 &&
s.StoryID == psf.StoryID &&
psf.AgileFactorID == af.AgileFactorID
group af by af.Name into tagGroup
select new
{
Tag = tagGroup.Key,
**weight = (tagGroup.Count() == 1) ? (double)1 : ((double)tagGroup.Count()/maxTagFrequencyNegative * 100)**
};
Ahora, cuando el número es 1, la fuente es pequeña, pero cuando 2, ha vuelto a ser enorme de nuevo. Las etiquetas con el recuento más pequeño se vuelven más pequeñas en relación con la etiqueta con el recuento más grande, pero necesito que comience pequeño y siga creciendo. ¡Por favor ayuda!
public string GetTagSize(double weight)
{
if (weight >= 99)
return "36pt";
else if (weight >= 80)
return "29pt";
else if (weight >= 64)
return "23pt";
else if (weight >= 48)
return "18pt";
else if (weight >= 32)
return "14pt";
else if (weight >= 10)
return "11pt";
else
return "8pt";
}
¿Cuál es el valor de 'maxTagFrequencyNegative'? ¿Por qué usarías un valor negativo para dividir? – Justin
No es un valor negativo. Estoy usando LINQ ... maxTagFrequencyNegative es solo un alias para las etiquetas con historias negativas asociadas ... – user618616
+1 por recomendar ser amable con las personas, solo fomenta una buena comunidad si premia respuestas te gustó/usaste –