using System.Collections.Generic; using System.ComponentModel; using TSLab.Script.Handlers; using TSLab.Script.Handlers.Options; namespace GanovCubes { #region CubeDescription [System.Obsolete] [HandlerCategory("Ganov Cubes. DateTime")] [HandlerName("DoubleToTextDate", Language = "ru-ru")] [Description("Кубик принимает на вход шести или пятизначное число без дробной части и возвращает текстовое представление даты для вывода на контрольную панель, например," + " при поступлении на вход 90101 кубик вернет 01.01.2009. Если на вход поступает число больше 6-ти или меньше 5-ти цифр, либо имеющее дробную часть, либо число меньше 10101," + " то кубик вернет значение \"NoDate\"")] [HelperLink("http://forum.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=87153&page=1", "Описание на форуме ТСлаб", "ru-ru")] [InputsCount(1)] [Input(0, TemplateTypes.DOUBLE, Name = "Дата")] [OutputsCount(1)] [OutputType(TemplateTypes.STRING)] #endregion public class DoubleToTextDate : IStreamHandler, IContextUses, IStringReturns, ICustomListValues { private string _text; private IList _dates; public IContext Context { get; set; } public IList Execute(IList dates) { _dates = dates; _text = "NoDate"; var retCollection = GetValuesList(_text); if (dates.Count == 0) return retCollection; _text = dates[dates.Count - 1].ToString(); if (_text.Length > 6 || _text.Length < 5 || dates[dates.Count - 1] < 10101 || dates[dates.Count - 1] % 1 != 0) return retCollection; _text = $"{_text.Substring(_text.Length - 2, 2)}.{_text.Substring(_text.Length - 4, 2)}.20{(_text.Length == 5 ? "0" : "")}{_text.Substring(0, _text.Length == 5 ? 1 : 2)}"; retCollection = GetValuesList(_text); return retCollection; } /// /// Метод возвращает коллекцию элементов по кол-ву баров /// /// Значение элемента /// Коллекция IList GetValuesList(string value) { var retCollection = new List(); if (_dates.Count == 0) retCollection.Add(_text); for (int i = 0; i < _dates.Count; i++) retCollection.Add(value); return retCollection; } public IEnumerable GetValuesForParameter(string paramName) => new string[] { _text }; } }