private static PivotViewerPropertyOptions GetPropertyOptions(FacetCategory category, PivotViewerPropertyType type) { var option = PivotViewerPropertyOptions.None; if (category.Type == FacetType.LongString) { option |= PivotViewerPropertyOptions.WrappingText; } if (!category.IsFilterVisibleSpecified || category.IsFilterVisible) { option |= PivotViewerPropertyOptions.CanFilter; } if (category.IsMetaDataVisibleSpecified && !category.IsMetaDataVisible) { option |= PivotViewerPropertyOptions.Private; } if ((!category.IsWordWheelVisibleSpecified || category.IsWordWheelVisible) && PivotViewerProperty.IsSearchableSchemaType(type)) { option |= PivotViewerPropertyOptions.CanSearchText; } return(option); }
private static Dictionary <string, int> GetSortOrderValues(FacetCategory category, string name) { if (category.Extension?.SortOrder == null) { return(null); } if (category.Type != FacetType.String && category.Type != FacetType.LongString) { throw new InvalidDataException($"A sort order was provided for facet category {name} of type {category.Type}."); } var sortOrderValues = new Dictionary <string, int>(StringComparer.InvariantCultureIgnoreCase); for (int k = 0; k < category.Extension.SortOrder.SortValue.Length; k++) { var key = category.Extension.SortOrder.SortValue[k].Value; if (sortOrderValues.ContainsKey(key)) { throw new InvalidDataException($"The sort order contains contains multiple {key} keys for facet category {name}."); } ; sortOrderValues.Add(category.Extension.SortOrder.SortValue[k].Value, k); } return(sortOrderValues); }
private static string GetFormatString(FacetCategory category, PivotViewerPropertyType propType) { var format = category.Format; // special case for decimal with the "C[#]" format if (propType == PivotViewerPropertyType.Decimal && !string.IsNullOrEmpty(category.Format) && category.Format.StartsWith("C")) { format = "'$'##,0"; if (category.Format.Length <= 1 || !int.TryParse(category.Format.Substring(1, 1), NumberStyles.Any, CultureInfo.InvariantCulture, out int digits)) { digits = 2; } if (digits > 0) { format = string.Concat(format, "."); format.PadRight(digits, '0'); } } return(format); }
private static PivotViewerPropertyType GetPropertyType(FacetCategory category) { switch (category.Type) { case FacetType.String: return(PivotViewerPropertyType.Text); case FacetType.LongString: return(PivotViewerPropertyType.Text); case FacetType.Number: return(PivotViewerPropertyType.Decimal); case FacetType.DateTime: return(PivotViewerPropertyType.DateTime); case FacetType.Link: return(PivotViewerPropertyType.Link); default: throw new ArgumentException($"Facet type {category.Type} is unsupported.", nameof(category)); } }
private static List <CalendarDateRange> GetDateRanges(FacetCategory category, string name) { if (category.Extension?.DateRanges == null) { return(null); } if (category.Type != FacetType.DateTime) { throw new InvalidDataException($"Date ranges were provided on the non-date/time facet category {name}."); } var calendarDateRanges = new List <CalendarDateRange>(); var addedRangeNames = new HashSet <string>(); foreach (var range in category.Extension.DateRanges) { var rangeName = range.Name.Trim(); if (string.IsNullOrEmpty(rangeName)) { throw new InvalidDataException($"Some date ranges do not have a valid name for facet category {name}."); } if (!addedRangeNames.Add(rangeName)) { throw new InvalidDataException($"Duplicate date range name {rangeName} for facet category {name}."); } if (range.UpperBound < range.LowerBound) { throw new InvalidDataException($"Date range upper bown is less than the lower bound for facet category {name}."); } calendarDateRanges.Add(new CalendarDateRange(range.LowerBound, range.UpperBound, rangeName)); } return(calendarDateRanges); }