public Column(string column, KCore.Dynamic value, string type) { Name = column; Value = value.Value; Type = type; }
/// <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); }