internal FlexLabelItem(SectionDeletedFromTemplate row) : base(row) { Height = row.Height; Width = row.Width; Top = row.Top; Left = row.Left; Order = row.Order; FontSize = ReportSettings.DefaultFontSize; Text = row.DefaultName; }
public static FlexNode CreateFlexNodeForTemplate(this Template template, long?idfObservation, EditableList <ActivityParameter> activityParameters, List <PredefinedStub> predefinedStubRows, FFPresenterModel model) { var rootNode = new FlexNode(null, null, null, null) { FormKey = idfObservation.HasValue ? DataHelper.GetFFParameterKey(template.idfsFormTemplate, idfObservation.Value) : DataHelper.GetFFParameterSimpleKey(template.idfsFormTemplate) }; //начинаем с корня шаблона и внутрь CreateFlexNodeForSection(rootNode, null, template, activityParameters, predefinedStubRows, model); //рекурсивная сортировка узлов rootNode.SortRecursive(); //динамические параметры FlexNode dynamicSectNode = null; if (idfObservation.HasValue) { var deletedFromTemplates = FFHelper.GetDeletedParameters(activityParameters, idfObservation.Value, template); if (deletedFromTemplates.Count > 0 || model.DynamicParameterEnabled) { FlexNode prevNode = rootNode.ChildListCount == 0 ? null : (FlexNode)rootNode.ChildList[rootNode.ChildListCount - 1]; var sectCaption = new SectionDeletedFromTemplate(EidssMessages.Get("DynamicParametersGroupControlCaption")); sectCaption.intLeft = prevNode == null ? 4 : prevNode.Coord.X; sectCaption.intTop = prevNode == null ? 4 : prevNode.Coord.Y + prevNode.Height; sectCaption.intOrder = prevNode == null ? 1 : prevNode.Order + 1; sectCaption.intHeight = 0; //создаём псевдосекцию, в которой будем размещать эти параметры dynamicSectNode = new FlexNode(null, new FlexItem(sectCaption), activityParameters, model); for (var i = 0; i < deletedFromTemplates.Count; i++) { var dp = deletedFromTemplates[i]; // calculate section size from its content if (sectCaption.intWidth == null || dp.intWidth > sectCaption.intWidth) { sectCaption.intWidth = dp.intWidth; } dp.intTop = sectCaption.Height + 4; sectCaption.intHeight += dp.intHeight + 4; dp.intLeft = sectCaption.Left; var ap = activityParameters.FirstOrDefault(c => c.idfsParameter == dp.idfsParameter); if (ap != null) { ap.IsDynamicParameter = true; } var node = dynamicSectNode.Add(dp, activityParameters, model); node.FormKey = dynamicSectNode.FormKey; node.Order = i; } //если динамическая секция есть, то добавляем её в самый конец списка if (dynamicSectNode != null) { rootNode.Add(dynamicSectNode); } } } return(rootNode); }