/// <summary> /// Sets the value. /// </summary> /// <param name="control">The control.</param> /// <param name="configurationValues">The configuration values.</param> /// <param name="value">The value.</param> public override void SetEditValue(Control control, Dictionary <string, ConfigurationValue> configurationValues, string value) { if (value != null) { var picker = control as MetricCategoryPicker; if (picker != null) { List <MetricCategory> metricCategories = new List <MetricCategory>(); var guidPairs = Rock.Attribute.MetricCategoriesFieldAttribute.GetValueAsGuidPairs(value); MetricCategoryService metricCategoryService = new MetricCategoryService(new RockContext()); foreach (var guidPair in guidPairs) { // first try to get each metric from the category that it was selected from var metricCategory = metricCategoryService.Queryable().Where(a => a.Metric.Guid == guidPair.MetricGuid && a.Category.Guid == guidPair.CategoryGuid).FirstOrDefault(); if (metricCategory == null) { // if the metric isn't found in the original category, just the first one, ignoring category metricCategory = metricCategoryService.Queryable().Where(a => a.Metric.Guid == guidPair.MetricGuid).FirstOrDefault(); } if (metricCategory != null) { metricCategories.Add(metricCategory); } } picker.SetValues(metricCategories); } } }
/// <summary> /// Sets the value. /// </summary> /// <param name="control">The control.</param> /// <param name="configurationValues">The configuration values.</param> /// <param name="value">The value.</param> public override void SetEditValue( Control control, Dictionary<string, ConfigurationValue> configurationValues, string value ) { if ( value != null ) { var picker = control as MetricCategoryPicker; if ( picker != null ) { List<MetricCategory> metricCategories = new List<MetricCategory>(); var guidPairs = Rock.Attribute.MetricCategoriesFieldAttribute.GetValueAsGuidPairs( value ); MetricCategoryService metricCategoryService = new MetricCategoryService( new RockContext() ); foreach (var guidPair in guidPairs) { // first try to get each metric from the category that it was selected from var metricCategory = metricCategoryService.Queryable().Where( a => a.Metric.Guid == guidPair.MetricGuid && a.Category.Guid == guidPair.CategoryGuid ).FirstOrDefault(); if (metricCategory == null) { // if the metric isn't found in the original category, just the first one, ignoring category metricCategory = metricCategoryService.Queryable().Where( a => a.Metric.Guid == guidPair.MetricGuid ).FirstOrDefault(); } if (metricCategory != null) { metricCategories.Add( metricCategory ); } } picker.SetValues( metricCategories ); } } }
/// <summary> /// Shows the settings. /// </summary> protected void ShowSettings() { flotChart.Visible = false; pnlEditModel.Visible = true; var rockContext = new RockContext(); var metricCategoryService = new MetricCategoryService( rockContext ); MetricCategory metricCategory = null; if ( this.MetricId.HasValue ) { metricCategory = metricCategoryService.Queryable().Where( a => a.MetricId == this.MetricId ).FirstOrDefault(); mpMetricCategoryPicker.SetValue( metricCategory ); } if ( this.GetEntityFromContextEnabled ) { rblSelectOrContext.SetValue( "1" ); } else { rblSelectOrContext.SetValue( "0" ); } cbCombineValues.Checked = this.CombineValues; rblSelectOrContext_SelectedIndexChanged( null, null ); if ( metricCategory != null ) { var entityTypeEntityIds = ( GetAttributeValue( "MetricEntityTypeEntityIds" ) ?? string.Empty ).Split( ',' ).Select( a => a.Split( '|' ) ).Where( a => a.Length == 2 ).Select( a => new { EntityTypeId = a[0].AsIntegerOrNull(), EntityId = a[1].AsIntegerOrNull() } ).ToList(); int position = 0; foreach ( var metricPartition in metricCategory.Metric.MetricPartitions.OrderBy( a => a.Order ) ) { var metricPartitionEntityType = EntityTypeCache.Read( metricPartition.EntityTypeId ?? 0 ); var controlId = string.Format( "metricPartition{0}_entityTypeEditControl", metricPartition.Id ); Control entityTypeEditControl = phMetricValuePartitions.FindControl( controlId ); if ( entityTypeEntityIds.Count() > position ) { var entry = entityTypeEntityIds[position]; if ( metricPartitionEntityType != null && metricPartitionEntityType.SingleValueFieldType != null && metricPartitionEntityType.SingleValueFieldType.Field is IEntityFieldType ) { if ( entry != null && entry.EntityTypeId == metricPartitionEntityType.Id) { ( metricPartitionEntityType.SingleValueFieldType.Field as IEntityFieldType ).SetEditValueFromEntityId( entityTypeEditControl, new Dictionary<string, ConfigurationValue>(), entry.EntityId ); } } } position++; } } drpSlidingDateRange.DelimitedValues = GetAttributeValue( "SlidingDateRange" ); mdEdit.Show(); }
/// <summary> /// Shows the settings. /// </summary> protected void ShowSettings() { flotChart.Visible = false; pnlEditModel.Visible = true; var rockContext = new RockContext(); var metricCategoryService = new MetricCategoryService(rockContext); MetricCategory metricCategory = null; if (this.MetricId.HasValue) { metricCategory = metricCategoryService.Queryable().Where(a => a.MetricId == this.MetricId).FirstOrDefault(); mpMetricCategoryPicker.SetValue(metricCategory); } if (this.GetEntityFromContextEnabled) { rblSelectOrContext.SetValue("1"); } else { rblSelectOrContext.SetValue("0"); } cbCombineValues.Checked = this.CombineValues; rblSelectOrContext_SelectedIndexChanged(null, null); if (metricCategory != null) { var entityTypeEntityIds = (GetAttributeValue("MetricEntityTypeEntityIds") ?? string.Empty).Split(',').Select(a => a.Split('|')).Where(a => a.Length == 2).Select(a => new { EntityTypeId = a[0].AsIntegerOrNull(), EntityId = a[1].AsIntegerOrNull() }).ToList(); int position = 0; foreach (var metricPartition in metricCategory.Metric.MetricPartitions.OrderBy(a => a.Order)) { var metricPartitionEntityType = EntityTypeCache.Get(metricPartition.EntityTypeId ?? 0); var controlId = string.Format("metricPartition{0}_entityTypeEditControl", metricPartition.Id); Control entityTypeEditControl = phMetricValuePartitions.FindControl(controlId); if (entityTypeEntityIds.Count() > position) { var entry = entityTypeEntityIds[position]; if (metricPartitionEntityType != null && metricPartitionEntityType.SingleValueFieldType != null && metricPartitionEntityType.SingleValueFieldType.Field is IEntityFieldType) { if (entry != null && entry.EntityTypeId == metricPartitionEntityType.Id) { (metricPartitionEntityType.SingleValueFieldType.Field as IEntityFieldType).SetEditValueFromEntityId(entityTypeEditControl, new Dictionary <string, ConfigurationValue>(), entry.EntityId); } } } position++; } } drpSlidingDateRange.DelimitedValues = GetAttributeValue("SlidingDateRange"); mdEdit.Show(); }