예제 #1
0
        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;
        }
예제 #2
0
        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);
        }