Пример #1
0
 public Column(string column, KCore.Dynamic value, string type)
 {
     Name  = column;
     Value = value.Value;
     Type  = type;
 }
Пример #2
0
        /// <summary>
        /// Load the LinkTo tag and change and remove the tag in the value.
        /// </summary>
        /// <param name="val">Value with tag</param>
        /// <returns></returns>
        public static Model.LinkTo LinkTo(string val)
        {
            val = val.Trim();

            var tagOpen       = GetHeaderValue(C.Tags.SPECIAL_NAMEOPEN, ref val) ?? C.Tags.SPECIAL_OPEN;
            var tagSplit      = GetHeaderValue(C.Tags.SPECIAL_NAMESPLIT, ref val) == null ? C.Tags.SPECIAL_SPLIT : GetHeaderValue(C.Tags.SPECIAL_NAMESPLIT, ref val)[0];
            var tagClose      = GetHeaderValue(C.Tags.SPECIAL_NAMECLOSE, ref val) ?? C.Tags.SPECIAL_CLOSE;
            var tagParamSplit = GetHeaderValue(C.Tags.SPECIAL_NAMEPARAMSPLIT, ref val) == null ? C.Tags.SPECIAL_PARAMSPLIT : GetHeaderValue(C.Tags.SPECIAL_NAMEPARAMSPLIT, ref val)[0];
            var tagInput      = C.Tags.SPECIAL_INPUT;

            if (!val.StartsWith(tagOpen) || !val.EndsWith(tagClose))
            {
                return(null);
            }

            // Removing the open and close tag
            val = val.Substring(1, val.Length - 2);


            if (!val.StartsWith(C.Tags.SPECIAL_LINKTO))
            {
                throw new KDBException(LOG, C.MessageEx.LinkToIncorrectFormat3_1, val);
            }


            var values = val.Split(tagSplit);

            var linkto = new Model.LinkTo();

            foreach (var value in values)
            {
                var index = value.IndexOf(':');
                if (index < 1)
                {
                    throw new KDBException(LOG, C.MessageEx.LinkToIncorrectFormat3_1, val);
                }

                var           tag  = value.Substring(0, index);
                KCore.Dynamic val1 = value.Substring(index + 1);

                switch (tag)
                {
                case C.Tags.SPECIAL_LINKTO:
                    linkto.Type = (C.LinkTo.Type)val1.GetEnumByName <C.LinkTo.Type>(); break;

                case C.Tags.SPECIAL_VALUE:
                    linkto.Value = val1.ToString(); break;

                case C.Tags.SPECIAL_PARAMETERS:
                    // Has input parameter?
                    var input = val1.ToString().Contains(tagInput);

                    if (input)
                    {
                        var list = new List <KCore.Model.Select_v1>();

                        foreach (var param in val1.Split(tagParamSplit))
                        {
                            if (param.ToString().StartsWith(tagInput))
                            {
                                var foo = param.Substring(tagInput.Length, param.Length - tagInput.Length - 1).Split('`');
                                if (foo.Length > 1)
                                {
                                    list.Add(new KCore.Model.Select_v1(foo[0].ToLower(), foo[1], input));
                                }
                                else
                                {
                                    list.Add(new KCore.Model.Select_v1(foo[0].ToLower(), null, input));
                                }
                            }
                            else
                            {
                                list.Add(new KCore.Model.Select_v1(param));
                            }
                        }

                        linkto.Parameters = list.ToArray();
                    }
                    else
                    {
                        linkto.Parameters = KCore.Model.Select_v1.Split(val1.ToString(), tagParamSplit);
                    }
                    break;

                case C.Tags.SPECIAL_DISPLAY:
                    linkto.Display = val1.ToString(); break;

                case C.Tags.SPECIAL_OPENAS:
                    linkto.OpenAs = (C.LinkTo.OpenAs)val1.GetEnumByIndex <C.LinkTo.OpenAs>(); break;

                default:
                    KCore.Diagnostic.Warning(R.ID, LOG, 0, $"The tag {tag} not exists");
                    break;
                }
            }

            return(linkto);
        }