Try your search with a different keyword or use * as a wildcard.
using Nop.Web.Framework.Models;
namespace Nop.Web.Models.Catalog;
public partial record PopularProductTagsModel : BaseNopModel
{
public PopularProductTagsModel()
{
Tags = new List<ProductTagModel>();
}
#region Utilities
protected virtual int GetFontSize(double weight, double mean, double stdDev)
{
var factor = (weight - mean);
if (factor != 0 && stdDev != 0)
factor /= stdDev;
return (factor > 2) ? 150 :
(factor > 1) ? 120 :
(factor > 0.5) ? 100 :
(factor > -0.5) ? 90 :
(factor > -1) ? 85 :
(factor > -2) ? 80 :
75;
}
protected virtual double Mean(IEnumerable<double> values)
{
double sum = 0;
var count = 0;
foreach (var d in values)
{
sum += d;
count++;
}
if (count == 0)
return 0;
return sum / count;
}
protected virtual double StdDev(IEnumerable<double> values, out double mean)
{
mean = Mean(values);
double sumOfDiffSquares = 0;
var count = 0;
foreach (var d in values)
{
var diff = (d - mean);
sumOfDiffSquares += diff * diff;
count++;
}
if (count == 0)
return 0;
return Math.Sqrt(sumOfDiffSquares / count);
}
#endregion
#region Methods
public virtual int GetFontSize(ProductTagModel productTag)
{
var itemWeights = new List<double>();
foreach (var tag in Tags)
itemWeights.Add(tag.ProductCount);
var stdDev = StdDev(itemWeights, out double mean);
return GetFontSize(productTag.ProductCount, mean, stdDev);
}
#endregion
#region Properties
public int TotalTags { get; set; }
public List<ProductTagModel> Tags { get; set; }
#endregion
}