예제 #1
0
        /// <summary>
        ///     Increment row or column on or after.
        /// </summary>
        /// <param name="startIndex">
        ///     The start index.
        /// </param>
        /// <param name="incrementValue">
        ///     The increment value.
        /// </param>
        /// <param name="spanType">
        ///     Type of the span.
        /// </param>
        private void IncrementRowOrColumnOnOrAfter(int startIndex,
                                                   int incrementValue, SpanType spanType)
        {
            string spanName = spanType == SpanType.Column ? "Grid.Column" :
                              "Grid.Row";

            foreach (var xmlNode in (from XmlNode x in
                                     this.UsersXamlDocument.ChildNodes[0].ChildNodes
                                     where x.Name.StartsWith("Grid.") == false && x.Name != "#whitespace"
                                     select x))
            {
                XmlAttribute attribute =
                    (from XmlAttribute a in xmlNode.Attributes where a.Name == spanName select
                     a).FirstOrDefault();

                int gridSpanIndex = int.Parse(attribute.Value);

                if (gridSpanIndex >= startIndex)
                {
                    attribute.Value =
                        (gridSpanIndex + incrementValue > 0 ? gridSpanIndex + incrementValue :
                         0).ToString();
                }
            }
        }
        public async void ProcessAsync_Should_Set_ClassAttribute(SpanType type)
        {
            _tagHelper.SpanType = type;
            await _tagHelper.ProcessAsync(_tagHelperContext, _tagHelperOutput);

            Assert.Equal(CssClasses.NhsUkErrorMessage, _tagHelperOutput.Attributes[HtmlAttributes.ClassAttribute].Value);
        }
예제 #3
0
        /// <summary>
        /// Utility method to get span tag name from its type.
        /// </summary>
        /// <param name="spanType">Span type.</param>
        /// <returns>Tag name for the span.</returns>
        private static string GetSpanTagName(
            SpanType spanType)
        {
            switch (spanType)
            {
            case SpanType.Class:
                return(Constants.ClassSpanName);

            case SpanType.Italics:
                return(Constants.ItalicsSpanName);

            case SpanType.Bold:
                return(Constants.BoldSpanName);

            case SpanType.Underline:
                return(Constants.UnderlineSpanName);

            case SpanType.Ruby:
                return(Constants.RubySpanName);

            case SpanType.RubyText:
                return(Constants.RubyTextSpanName);

            case SpanType.Voice:
                return(Constants.VoiceSpanName);

            case SpanType.Language:
                return(Constants.LanguageSpanName);

            default:
                throw new ArgumentOutOfRangeException(string.Format("Unknown cue span type '{0}'.", spanType.ToString()));
            }
        }
예제 #4
0
        private SpanType GetSpanType(int point)
        {
            if (point < this.TopPoint || point >= this.BottomPoint)
            {
                // Outside the root node
                return(SpanType.OutSide);
            }
            if (point < this._startTag.BottomPoint)
            {
                return(this.IsSelfClosing ? SpanType.SelfClosingTag : SpanType.StartingTag);
            }
            if (point >= this._endTag.TopPoint)
            {
                return(SpanType.EndingTag);
            }

            //! The point is somewhere between this node's two tags.

            if (!this.HasChildren)
            {
                return(SpanType.BetweenNodeTags);
            }

            foreach (var node in this.ChildrenContainer)
            {
                SpanType temp = node.GetSpanType(point);
                if (temp != SpanType.OutSide)
                {
                    return(temp);
                }
            }
            return(SpanType.BetweenNodes);
        }
예제 #5
0
        private void parseSpan()
        {
            try
            {
                string[] parts = this.textBox.Text.Split(new string[] { "..." }, StringSplitOptions.RemoveEmptyEntries);
                if (parts.Count() != 2)
                {
                    this.showSpan();
                    return;
                }

                DateTime df = DateTime.Parse(parts[0].Trim());
                DateTime dt = DateTime.Parse(parts[1].Trim()).AddDays(1).AddSeconds(-1);

                if (df.Ticks > dt.Ticks)
                {
                    this.showSpan();
                    return;
                }

                this.dateFrom = df;
                this.dateTo   = dt;
                this.timeSpan = dateTo - dateFrom;
                this.spanType = SpanType.AnySpan;
                this.OnChanged(null);
            }
            catch {
                this.showSpan();
            }
        }
예제 #6
0
파일: ExcelHelper.cs 프로젝트: ntzw/cms
 public Merge(int startRowIndex, int endRowIndex, int startColIndex, int endColIndex, SpanType type)
 {
     StartRowIndex = startRowIndex;
     EndRowIndex   = endRowIndex;
     StartColIndex = startColIndex;
     EndColIndex   = endColIndex;
     Type          = type;
 }
예제 #7
0
 public SegmentContext(UniqueId traceId, UniqueId segmentId, bool sampled, int serviceId, int serviceInstanceId,
                       string operationName, SpanType spanType)
 {
     TraceId           = traceId;
     Sampled           = sampled;
     SegmentId         = segmentId;
     ServiceId         = serviceId;
     ServiceInstanceId = serviceInstanceId;
     Span = new SegmentSpan(operationName, spanType);
 }
예제 #8
0
 public SegmentContext(string traceId, string segmentId, bool sampled, string serviceId, string serviceInstanceId,
                       string operationName, SpanType spanType, long startTimeMilliseconds = default)
 {
     TraceId           = traceId;
     Sampled           = sampled;
     SegmentId         = segmentId;
     ServiceId         = serviceId;
     ServiceInstanceId = serviceInstanceId;
     Span = new SegmentSpan(operationName, spanType, startTimeMilliseconds);
 }
예제 #9
0
        /// <summary>
        /// Utility method to get span type by the tag name.
        /// </summary>
        /// <param name="tagName">Name of the tag.</param>
        /// <param name="spanType">If successful, type of the span for this name.</param>
        /// <returns>True if the tag name matches one of the cue spans; otherwise false.</returns>
        private static bool TryGetSpanTypeFromName(
            string tagName,
            out SpanType spanType)
        {
            if (string.Equals(tagName, Constants.ClassSpanName, StringComparison.Ordinal))
            {
                spanType = SpanType.Class;
                return(true);
            }

            if (string.Equals(tagName, Constants.ItalicsSpanName, StringComparison.Ordinal))
            {
                spanType = SpanType.Italics;
                return(true);
            }

            if (string.Equals(tagName, Constants.BoldSpanName, StringComparison.Ordinal))
            {
                spanType = SpanType.Bold;
                return(true);
            }

            if (string.Equals(tagName, Constants.LanguageSpanName, StringComparison.Ordinal))
            {
                spanType = SpanType.Language;
                return(true);
            }

            if (string.Equals(tagName, Constants.RubySpanName, StringComparison.Ordinal))
            {
                spanType = SpanType.Ruby;
                return(true);
            }

            if (string.Equals(tagName, Constants.RubyTextSpanName, StringComparison.Ordinal))
            {
                spanType = SpanType.RubyText;
                return(true);
            }

            if (string.Equals(tagName, Constants.UnderlineSpanName, StringComparison.Ordinal))
            {
                spanType = SpanType.Underline;
                return(true);
            }

            if (string.Equals(tagName, Constants.VoiceSpanName, StringComparison.Ordinal))
            {
                spanType = SpanType.Voice;
                return(true);
            }

            spanType = default(SpanType);
            return(false);
        }
예제 #10
0
        static void Main(string[] args)
        {
            Console.WriteLine("CSharpIsFun");

            //RunStringComparison.Run();

            //SpanType.TestSpan();
            //SpanType.TestReadOnlySpan();
            //SpanType.TestSpanStackAlloc();
            Console.WriteLine(SpanType.TestMemoryType());

            Console.ReadKey();
        }
예제 #11
0
        // private
        private static Word _createWord(SpanType type, string text, HSLColor?color, string differentCopyText = null)
        {
            var link = _createLink(text);

            return(new Word
            {
                Type = type,
                Value = text,
                Color = (link == null ? color : HSLColor.FromRGB(-8355712)),
                CopyText = differentCopyText ?? text,
                Link = link,
            });
        }
예제 #12
0
        private SegmentContext GetParentSegmentContext(SpanType spanType)
        {
            switch (spanType)
            {
            case SpanType.Entry:
                return(null);

            case SpanType.Local:
            case SpanType.Exit:
                return(_localSegmentContextAccessor.Context ?? _entrySegmentContextAccessor.Context);

            default:
                throw new ArgumentOutOfRangeException(nameof(spanType), spanType, "Invalid SpanType.");
            }
        }
예제 #13
0
        public SpanType[] GetSpanTypes(int point1, int point2)
        {
            int min       = Math.Min(point1, point2);
            int max       = Math.Max(point1, point2);
            var spanTypes = new List <SpanType>();
            var spanType  = SpanType.Unknown;

            for (int i = min; i <= max; i++)
            {
                SpanType temp = this.GetSpanType(i);
                if (temp == spanType)
                {
                    continue;
                }
                spanType = temp;
                spanTypes.Add(spanType);
            }
            return(spanTypes.ToArray());
        }
예제 #14
0
        public void SetSpan(SpanType spanType, int?year, int?month, int?day)
        {
            DateTime d = DateTime.Now;

            switch (spanType)
            {
            case SpanType.Day:
                this.dateFrom = new DateTime(d.Year, d.Month, d.Day, 0, 0, 0);
                this.dateTo   = this.dateFrom.AddDays(1).AddSeconds(-1);
                break;

            case SpanType.Week:
                DayOfWeek dw = d.DayOfWeek;
                this.dateFrom = new DateTime(d.Year, d.Month, d.Day, 0, 0, 0).AddDays(-(int)dw);
                this.dateTo   = this.dateFrom.AddDays(7).AddSeconds(-1);
                break;

            case SpanType.Month:
                this.dateFrom = new DateTime(year == null ? d.Year : year.Value, month == null ? d.Month : month.Value, 1, 0, 0, 0);
                this.dateTo   = this.dateFrom.AddMonths(1).AddDays(-1).Date;
                break;

            case SpanType.Year:
                this.dateFrom = new DateTime(year == null ? d.Year : year.Value, 1, 1, 0, 0, 0);
                this.dateTo   = this.dateFrom.AddYears(1).AddSeconds(-1);
                break;

            case SpanType.Full:
                this.dateFrom = new DateTime(1979, 1, 1, 0, 0, 0);
                this.dateTo   = new DateTime(2059, 12, 31, 23, 59, 59);
                break;

            case SpanType.AnyMonth:
                this.dateFrom = new DateTime(d.Year, (int)month, 1, 0, 0, 0);
                this.dateTo   = this.dateFrom.AddMonths(1).AddSeconds(-1);
                break;
            }

            this.spanType = spanType;
            this.showSpan();
            this.OnChanged(null);
        }
예제 #15
0
        public BarUnsettled(
            SpanType barSpan,
            DateTime timeStamp,
            Tick tick = null)
            : base()
        {
            _span = barSpan;
            var time = TrimFractions(timeStamp, barSpan);

            if (time == timeStamp)
            {
                Available = true;
            }
            TimeStamp = time;

            if (tick != null)
            {
                Update(tick);
            }

            StartTimer();
        }
예제 #16
0
        /// <summary>
        /// Processes all provided blocks based on the separators and span type.
        /// <see cref="blocks"/> must at least contain one element.
        /// </summary>
        private static void SplitBlocks(IList<Block> blocks, string[] separators, SpanType spanType)
        {
            for (var i = 0; i < blocks.Count; i++)
            {
                var splitText = blocks[i].Text.Split(separators.ToArray(), StringSplitOptions.None);
                if (splitText.Length > 1)
                {
                    // remove old block
                    var oldBlock = blocks[i];
                    blocks.RemoveAt(i);

                    // add new blocks
                    for (var j = 0; j < splitText.Length; j++)
                    {
                        var block = new Block(splitText[j], j % 2 == 1 ? spanType : oldBlock.SpanType);

                        // insert and skip block in outer loop
                        blocks.Insert(i++, block);
                    }
                }
            }
        }
예제 #17
0
        /// <summary>
        /// Logs the given data.
        /// </summary>
        /// <typeparam name="T">Type of payload.</typeparam>
        /// <param name="logger"><see cref="ILogger"/> instance.</param>
        /// <param name="logLevel"><see cref="ILogger"/> value.</param>
        /// <param name="payload">Payload to log.</param>
        /// <param name="eventType"><see cref="EventType"/> value.</param>
        /// <param name="eventStatus"><see cref="EventStatusType"/> value.</param>
        /// <param name="eventId">Event ID.</param>
        /// <param name="spanType"><see cref="SpanType"/> value.</param>
        /// <param name="spanStatus"><see cref="SpanStatusType"/> value.</param>
        /// <param name="spanId">Span ID.</param>
        /// <param name="interfaceType"><see cref="InterfaceType"/> value.</param>
        /// <param name="correlationId">Correlation ID.</param>
        /// <param name="clientRequestId">Client request ID from Table Storage transaction.</param>
        /// <param name="messageId">Message ID for Service Bus.</param>
        /// <param name="recordId">Record ID of Cosmos DB.</param>
        /// <param name="ex"><see cref="Exception"/> instance.</param>
        /// <param name="message">Log message.</param>
        public static void LogData <T>(this ILogger logger,
                                       LogLevel logLevel, T payload,
                                       EventType eventType, EventStatusType eventStatus, Guid eventId,
                                       SpanType spanType, SpanStatusType spanStatus, Guid spanId,
                                       InterfaceType interfaceType, Guid correlationId,
                                       string clientRequestId = null,
                                       string messageId       = null,
                                       string recordId        = null,
                                       Exception ex           = null,
                                       string message         = null)
        {
            var @event     = new EventId((int)eventType, eventType.ToString());
            var entityType = payload.GetType().Name;

            if (ex == null)
            {
                logger.Log(logLevel, @event, template, logLevel, message, eventType, eventStatus, eventId, entityType, spanType, spanStatus, spanId, interfaceType, correlationId, clientRequestId, messageId, recordId);

                return;
            }

            logger.Log(logLevel, @event, ex, template, logLevel, message, eventType, eventStatus, eventId, entityType, spanType, spanStatus, spanId, interfaceType, correlationId, clientRequestId, messageId, recordId);
        }
예제 #18
0
 public SegmentContext(long traceId, long segmentId, bool sampled, string serviceName, string operationName, SpanType spanType, string identity)
 {
     TraceId     = traceId;
     Sampled     = sampled;
     SegmentId   = segmentId;
     ServiceName = serviceName;
     Identity    = identity;
     Span        = new SegmentSpan(operationName, spanType);
 }
예제 #19
0
 public ISpan StartSpan(string spanName, string serviceName, SpanType spanType)
 {
     return tracer.StartSpan(spanName, serviceName, spanType);
 }
예제 #20
0
 public SegmentSpan(string operationName, SpanType spanType)
 {
     OperationName = new StringOrIntValue(operationName);
     SpanType      = spanType;
 }
예제 #21
0
 public void SetSpan(SpanType spanType)
 {
     this.SetSpan(spanType, null, null, null);
 }
예제 #22
0
파일: SpanInfo.cs 프로젝트: ugurak/nemerle
 public SpanInfo(Span span, SpanType type)
 {
     Span = span;
     Type = type;
 }
예제 #23
0
 public ISpan StartSpan(string spanName, string serviceName, SpanType spanType, ISampler sampler)
 {
     return tracer.StartSpan(spanName, serviceName, spanType, sampler);
 }
예제 #24
0
        /// <summary>
        ///     Inserts a span.
        /// </summary>
        /// <exception cref="ArgumentOutOfRangeException">
        ///     Thrown when one or more arguments are outside the required range.
        /// </exception>
        /// <param name="spanIndex">
        ///     Zero-based index of the span.
        /// </param>
        /// <param name="loc">
        ///     The location.
        /// </param>
        /// <param name="spanType">
        ///     Type of the span.
        /// </param>
        private void InsertSpan(int spanIndex, InsertLocation loc, SpanType spanType)
        {
            string orientationSizeName;
            string orientationSpanName;

            if (spanType == SpanType.Row)
            {
                orientationSizeName = "Height";
                orientationSpanName = "Row";
            }
            else
            {
                orientationSizeName = "Width";
                orientationSpanName = "Column";
            }

            string orientationDefinition  = String.Format("{0}Definition", orientationSpanName);
            string orientationDefinitions = String.Format("Grid.{0}s", orientationDefinition);

            XmlNode definitionNodeCollection =
                (from XmlNode x in this.UsersXamlDocument.ChildNodes[0].ChildNodes
                 where x.Name == orientationDefinitions
                 select x).First();

            XmlNode spanDefinitionWhiteSpaceNode           = null;
            var     spanDefinifitionNodesWithoutWhiteSpace = new List <XmlNode>();

            foreach (XmlNode node in definitionNodeCollection.ChildNodes)
            {
                if (node.NodeType != XmlNodeType.Whitespace && node.NodeType != XmlNodeType.Comment)
                {
                    spanDefinifitionNodesWithoutWhiteSpace.Add(node);
                }
                else
                {
                    spanDefinitionWhiteSpaceNode = node.CloneNode(true);
                }
            }

            List <RowDefinition>    rowDefinitions   = null;
            List <ColumnDefinition> columnDefintions = null;
            XmlElement newSpanElement = null;

            if (spanType == SpanType.Row)
            {
                this.GetSpanDefinitions(out rowDefinitions);
                newSpanElement =
                    this.UsersXamlDocument.CreateNode(XmlNodeType.Element, "", orientationDefinition, string.Empty) as
                    XmlElement;
                newSpanElement.SetAttribute(orientationSizeName,
                                            this.ParseGridDefinitionLength(rowDefinitions[spanIndex].Height));
            }
            else
            {
                this.GetSpanDefinitions(out columnDefintions);
                newSpanElement =
                    this.UsersXamlDocument.CreateNode(XmlNodeType.Element, "", orientationDefinition, string.Empty) as
                    XmlElement;
                newSpanElement.SetAttribute(orientationSizeName,
                                            this.ParseGridDefinitionLength(columnDefintions[spanIndex].Width));
            }
            newSpanElement.SetAttribute("Tag", "New");

            if (loc == InsertLocation.Before)
            {
                definitionNodeCollection.InsertBefore(newSpanElement, spanDefinifitionNodesWithoutWhiteSpace[spanIndex]);

                if (spanDefinitionWhiteSpaceNode != null)
                {
                    definitionNodeCollection.InsertBefore(spanDefinitionWhiteSpaceNode,
                                                          spanDefinifitionNodesWithoutWhiteSpace[spanIndex]);
                }

                this.IncrementRowOrColumnOnOrAfter(spanIndex, 1, spanType);
            }
            else if (loc == InsertLocation.After)
            {
                definitionNodeCollection.InsertAfter(newSpanElement, spanDefinifitionNodesWithoutWhiteSpace[spanIndex]);

                if (spanDefinitionWhiteSpaceNode != null)
                {
                    definitionNodeCollection.InsertAfter(spanDefinitionWhiteSpaceNode,
                                                         spanDefinifitionNodesWithoutWhiteSpace[spanIndex]);
                }

                this.IncrementRowOrColumnOnOrAfter(spanIndex + 1, 1, spanType);
            }
            else
            {
                throw new ArgumentOutOfRangeException("loc", loc, "The value passed in was not programmed.");
            }

            this.BuildGrid();
        }
 private SemanticVersionSpan(int major, int minor, int patch)
     : this(major, minor, patch, false, false)
 {
     Span = SpanType.Specified;
 }
예제 #26
0
 private TootSpan(SpanType type, string text, string url)
 {
     this.Type = type;
     this.Text = text;
     this.Url  = url;
 }
예제 #27
0
        public SpanStats(SpanType type,
                         string description,
                         IList <GameDto> gamesInLeague,
                         IList <GameDto> htGames,
                         IList <GameDto> atGames,
                         GameDto lastGame = null)
        {
            SpanType = type;

            var leagueGames = gamesInLeague
                              .Where(l => l.State == 1 &&
                                     l.P1_Home > 0 && l.P1_Away > 0 &&
                                     l.P2_Home > 0 && l.P2_Away > 0 &&
                                     l.P3_Home > 0 && l.P3_Away > 0 &&
                                     l.P4_Home > 0 && l.P4_Away > 0)
                              .OrderBy(x => x.DateStart)
                              .ThenBy(x => x.Id)
                              .ToList();

            lastGame = lastGame ?? leagueGames.Last();

            GameId = lastGame.Id;

            FirstGameId = leagueGames.First().Id;

            var homeTeamId = lastGame.TeamHomeId;

            var awayTeamId = lastGame.TeamAwayId;

            var homeTeamGames = htGames
                                .Where(l => l.State == 1 &&
                                       l.P1_Home > 0 && l.P1_Away > 0 &&
                                       l.P2_Home > 0 && l.P2_Away > 0 &&
                                       l.P3_Home > 0 && l.P3_Away > 0 &&
                                       l.P4_Home > 0 && l.P4_Away > 0 &&
                                       (l.TeamHomeId == homeTeamId || l.TeamAwayId == homeTeamId))
                                .OrderBy(x => x.DateStart)
                                .ThenBy(x => x.Id)
                                .ToList();

            var awayTeamGames = atGames
                                .Where(l => l.State == 1 &&
                                       l.P1_Home > 0 && l.P1_Away > 0 &&
                                       l.P2_Home > 0 && l.P2_Away > 0 &&
                                       l.P3_Home > 0 && l.P3_Away > 0 &&
                                       l.P4_Home > 0 && l.P4_Away > 0 &&
                                       (l.TeamHomeId == awayTeamId || l.TeamAwayId == awayTeamId))
                                .OrderBy(x => x.DateStart)
                                .ThenBy(x => x.Id)
                                .ToList();

            #region LeagueGamesStats

            League_GP_Count = leagueGames.Count;

            var gameplays = League_GP_Count;

            if (gameplays >= MIN_STATS_THRESHOLD)
            {
                P1_League_BT_Percent = (double)leagueGames.Count(x => x.HasSameOdd(x.P1_Home + x.P1_Away)) /
                                       gameplays * 100;
                P1_League_HT_Percent = (double)leagueGames.Count(x => x.HasSameOdd(x.P1_Home)) /
                                       gameplays * 100;
                P1_League_AT_Percent = (double)leagueGames.Count(x => x.HasSameOdd(x.P1_Away)) /
                                       gameplays * 100;

                P2_League_BT_Percent = (double)leagueGames.Count(x => x.HasSameOdd(x.P2_Home + x.P2_Away)) /
                                       gameplays * 100;
                P2_League_HT_Percent = (double)leagueGames.Count(x => x.HasSameOdd(x.P2_Home)) /
                                       gameplays * 100;
                P2_League_AT_Percent = (double)leagueGames.Count(x => x.HasSameOdd(x.P2_Away)) /
                                       gameplays * 100;

                P3_League_BT_Percent = (double)leagueGames.Count(x => x.HasSameOdd(x.P3_Home + x.P3_Away)) /
                                       gameplays * 100;
                P3_League_HT_Percent = (double)leagueGames.Count(x => x.HasSameOdd(x.P3_Home)) /
                                       gameplays * 100;
                P3_League_AT_Percent = (double)leagueGames.Count(x => x.HasSameOdd(x.P3_Away)) /
                                       gameplays * 100;

                P4_League_BT_Percent = (double)leagueGames.Count(x => x.HasSameOdd(x.P4_Home + x.P4_Away)) /
                                       gameplays * 100;
                P4_League_HT_Percent = (double)leagueGames.Count(x => x.HasSameOdd(x.P4_Home)) /
                                       gameplays * 100;
                P4_League_AT_Percent = (double)leagueGames.Count(x => x.HasSameOdd(x.P4_Away)) /
                                       gameplays * 100;
            }

            #endregion

            #region HomeTeam Any Games Stats

            HT_AtAny_Count = homeTeamGames.Count;

            if (HT_AtAny_Count >= MIN_STATS_THRESHOLD)
            {
                P1_HT_AtAny_Percent = (double)homeTeamGames
                                      .Count(x => x.TeamHomeId == homeTeamId && x.HasSameOdd(x.P1_Home) ||
                                             x.TeamAwayId == homeTeamId && x.HasSameOdd(x.P1_Away)) /
                                      homeTeamGames.Count * 100;

                P2_HT_AtAny_Percent = (double)homeTeamGames
                                      .Count(x => x.TeamHomeId == homeTeamId && x.HasSameOdd(x.P2_Home) ||
                                             x.TeamAwayId == homeTeamId && x.HasSameOdd(x.P2_Away)) /
                                      homeTeamGames.Count * 100;

                P3_HT_AtAny_Percent = (double)homeTeamGames
                                      .Count(x => x.TeamHomeId == homeTeamId && x.HasSameOdd(x.P3_Home) ||
                                             x.TeamAwayId == homeTeamId && x.HasSameOdd(x.P3_Away)) /
                                      homeTeamGames.Count * 100;

                P4_HT_AtAny_Percent = (double)homeTeamGames
                                      .Count(x => x.TeamHomeId == homeTeamId && x.HasSameOdd(x.P4_Home) ||
                                             x.TeamAwayId == homeTeamId && x.HasSameOdd(x.P4_Away)) /
                                      homeTeamGames.Count * 100;
            }

            #endregion

            #region HomeTeam Home Games Stats

            var htAtHomeGames = homeTeamGames
                                .Where(l => l.TeamHomeId == homeTeamId)
                                .ToList();

            HT_AtHome_Count = htAtHomeGames.Count;

            if (HT_AtHome_Count >= MIN_STATS_THRESHOLD)
            {
                P1_HT_AtHome_Percent = (double)htAtHomeGames
                                       .Count(x => x.TeamHomeId == homeTeamId && x.HasSameOdd(x.P1_Home)) /
                                       htAtHomeGames.Count * 100;

                P2_HT_AtHome_Percent = (double)htAtHomeGames
                                       .Count(x => x.TeamHomeId == homeTeamId && x.HasSameOdd(x.P2_Home)) /
                                       htAtHomeGames.Count * 100;

                P3_HT_AtHome_Percent = (double)htAtHomeGames
                                       .Count(x => x.TeamHomeId == homeTeamId && x.HasSameOdd(x.P3_Home)) /
                                       htAtHomeGames.Count * 100;

                P4_HT_AtHome_Percent = (double)htAtHomeGames
                                       .Count(x => x.TeamHomeId == homeTeamId && x.HasSameOdd(x.P4_Home)) /
                                       htAtHomeGames.Count * 100;
            }

            #endregion

            #region AwayTeam Any Games Stats

            AT_AtAny_Count = awayTeamGames.Count;

            if (AT_AtAny_Count >= MIN_STATS_THRESHOLD)
            {
                P1_AT_AtAny_Percent = (double)awayTeamGames
                                      .Count(x => x.TeamHomeId == awayTeamId && x.HasSameOdd(x.P1_Home) ||
                                             x.TeamAwayId == awayTeamId && x.HasSameOdd(x.P1_Away)) /
                                      awayTeamGames.Count * 100;

                P2_AT_AtAny_Percent = (double)awayTeamGames
                                      .Count(x => x.TeamHomeId == awayTeamId && x.HasSameOdd(x.P2_Home) ||
                                             x.TeamAwayId == awayTeamId && x.HasSameOdd(x.P2_Away)) /
                                      awayTeamGames.Count * 100;

                P3_AT_AtAny_Percent = (double)awayTeamGames
                                      .Count(x => x.TeamHomeId == awayTeamId && x.HasSameOdd(x.P3_Home) ||
                                             x.TeamAwayId == awayTeamId && x.HasSameOdd(x.P3_Away)) /
                                      awayTeamGames.Count * 100;

                P4_AT_AtAny_Percent = (double)awayTeamGames
                                      .Count(x => x.TeamHomeId == awayTeamId && x.HasSameOdd(x.P4_Home) ||
                                             x.TeamAwayId == awayTeamId && x.HasSameOdd(x.P4_Away)) /
                                      awayTeamGames.Count * 100;
            }

            #endregion

            #region AwayTeam Away Games Stats

            var atAtAwayGames = awayTeamGames
                                .Where(l => l.TeamAwayId == awayTeamId)
                                .ToList();

            AT_AtAway_Count = atAtAwayGames.Count;

            if (AT_AtAway_Count >= MIN_STATS_THRESHOLD)
            {
                P1_AT_AtAway_Percent = (double)atAtAwayGames
                                       .Count(x => x.TeamAwayId == awayTeamId && x.HasSameOdd(x.P1_Away)) /
                                       atAtAwayGames.Count * 100;

                P2_AT_AtAway_Percent = (double)atAtAwayGames
                                       .Count(x => x.TeamAwayId == awayTeamId && x.HasSameOdd(x.P2_Away)) /
                                       atAtAwayGames.Count * 100;

                P3_AT_AtAway_Percent = (double)atAtAwayGames
                                       .Count(x => x.TeamAwayId == awayTeamId && x.HasSameOdd(x.P3_Away)) /
                                       atAtAwayGames.Count * 100;

                P4_AT_AtAway_Percent = (double)atAtAwayGames
                                       .Count(x => x.TeamAwayId == awayTeamId && x.HasSameOdd(x.P4_Away)) /
                                       atAtAwayGames.Count * 100;
            }

            #endregion

            #region HTvsAT Any Games Stats

            var htVsAtAnyGames = homeTeamGames
                                 .Where(h => h.TeamHomeId == awayTeamId || h.TeamAwayId == awayTeamId)
                                 .ToList();

            HTvsAT_AtAny_Count = htVsAtAnyGames.Count;

            if (HTvsAT_AtAny_Count >= MIN_STATS_THRESHOLD)
            {
                P1_HTvsAT_AtAny_Percent =
                    (double)htVsAtAnyGames.Count(x => x.HasSameOdd(x.P1_Home + x.P1_Away)) /
                    HTvsAT_AtAny_Count * 100;

                P2_HTvsAT_AtAny_Percent =
                    (double)htVsAtAnyGames.Count(x => x.HasSameOdd(x.P2_Home + x.P2_Away)) /
                    HTvsAT_AtAny_Count * 100;

                P3_HTvsAT_AtAny_Percent =
                    (double)htVsAtAnyGames.Count(x => x.HasSameOdd(x.P3_Home + x.P3_Away)) /
                    HTvsAT_AtAny_Count * 100;

                P4_HTvsAT_AtAny_Percent =
                    (double)htVsAtAnyGames.Count(x => x.HasSameOdd(x.P4_Home + x.P4_Away)) /
                    HTvsAT_AtAny_Count * 100;
            }

            #endregion

            #region HTvsAT Alike Games Stats

            var htVsAtAlikeGames = htAtHomeGames
                                   .Where(h => h.TeamAwayId == awayTeamId)
                                   .ToList();

            HTvsAT_AtAlike_Count = htVsAtAlikeGames.Count;

            if (HTvsAT_AtAlike_Count >= MIN_STATS_THRESHOLD)
            {
                P1_HTvsAT_AtAlike_Percent =
                    (double)htVsAtAlikeGames.Count(x => x.HasSameOdd(x.P1_Home + x.P1_Away)) /
                    HTvsAT_AtAlike_Count * 100;

                P2_HTvsAT_AtAlike_Percent =
                    (double)htVsAtAlikeGames.Count(x => x.HasSameOdd(x.P2_Home + x.P2_Away)) /
                    HTvsAT_AtAlike_Count * 100;

                P3_HTvsAT_AtAlike_Percent =
                    (double)htVsAtAlikeGames.Count(x => x.HasSameOdd(x.P3_Home + x.P3_Away)) /
                    HTvsAT_AtAlike_Count * 100;

                P4_HTvsAT_AtAlike_Percent =
                    (double)htVsAtAlikeGames.Count(x => x.HasSameOdd(x.P4_Home + x.P4_Away)) /
                    HTvsAT_AtAlike_Count * 100;
            }

            #endregion

            if (gameplays >= MIN_STATS_THRESHOLD)
            {
                #region P2P1 повторы

                var p2p1List = gamesInLeague.Where(x =>
                                                   x.HasSameOdd(x.P2_Home + x.P2_Away) &&
                                                   x.HasSameOdd(x.P1_Home + x.P1_Away))
                               .ToList();

                P2P1_League_Count = p2p1List.Count;

                P2P1_League_Percent = (double)P2P1_League_Count / League_GP_Count * 100;

                if (P2P1_League_Count > 0)
                {
                    P2P1_League_GamesAway = leagueGames.Count - 1 - leagueGames
                                            .FindLastIndex(
                        x => x.HasSameOdd(x.P2_Home + x.P2_Away) &&
                        x.HasSameOdd(x.P1_Home + x.P1_Away));
                }

                #endregion

                #region P3P2P1 повторы

                var p3p2p1List = gamesInLeague.Where(x =>
                                                     x.HasSameOdd(x.P3_Home + x.P3_Away) &&
                                                     x.HasSameOdd(x.P2_Home + x.P2_Away) &&
                                                     x.HasSameOdd(x.P1_Home + x.P1_Away))
                                 .ToList();

                P3P2P1_League_Count = p3p2p1List.Count;

                P3P2P1_League_Percent = (double)P3P2P1_League_Count / League_GP_Count * 100;

                if (P3P2P1_League_Count > 0)
                {
                    P3P2P1_League_GamesAway =
                        leagueGames.Count - 1 - leagueGames.FindLastIndex(x =>
                                                                          x.HasSameOdd(x.P3_Home + x.P3_Away) &&
                                                                          x.HasSameOdd(x.P2_Home + x.P2_Away) &&
                                                                          x.HasSameOdd(x.P1_Home + x.P1_Away));
                }

                #endregion

                #region P4P3P2P1 повторы

                var p4p3p2p1List = gamesInLeague.Where(x =>
                                                       x.HasSameOdd(x.P4_Home + x.P4_Away) &&
                                                       x.HasSameOdd(x.P3_Home + x.P3_Away) &&
                                                       x.HasSameOdd(x.P2_Home + x.P2_Away) &&
                                                       x.HasSameOdd(x.P1_Home + x.P1_Away))
                                   .ToList();

                P4P3P2P1_League_Count = p4p3p2p1List.Count;

                P4P3P2P1_League_Percent = (double)P4P3P2P1_League_Count / League_GP_Count * 100;

                if (P4P3P2P1_League_Count > 0)
                {
                    P4P3P2P1_League_GamesAway =
                        leagueGames.Count - 1 - leagueGames.FindLastIndex(x =>
                                                                          x.HasSameOdd(x.P4_Home + x.P4_Away) &&
                                                                          x.HasSameOdd(x.P3_Home + x.P3_Away) &&
                                                                          x.HasSameOdd(x.P2_Home + x.P2_Away) &&
                                                                          x.HasSameOdd(x.P1_Home + x.P1_Away));
                }

                #endregion

                #region PnotPprev Percent

                P2notP1_BT_Percent = (double)gamesInLeague.Count(x =>
                                                                 (x.P2_Home + x.P2_Away) % 2 != (x.P1_Home + x.P1_Away) % 2) /
                                     leagueGames.Count * 100;

                P2notP1_HT_Percent = (double)gamesInLeague.Count(x =>
                                                                 x.P2_Home % 2 != x.P1_Home % 2) /
                                     leagueGames.Count * 100;

                P2notP1_AT_Percent = (double)gamesInLeague.Count(x =>
                                                                 x.P2_Away % 2 != x.P1_Away % 2) /
                                     leagueGames.Count * 100;

                P3notP2_BT_Percent = (double)gamesInLeague.Count(x =>
                                                                 (x.P3_Home + x.P3_Away) % 2 != (x.P2_Home + x.P2_Away) % 2) /
                                     leagueGames.Count * 100;

                P3notP2_HT_Percent = (double)gamesInLeague.Count(x =>
                                                                 x.P3_Home % 2 != x.P2_Home % 2) /
                                     leagueGames.Count * 100;

                P3notP2_AT_Percent = (double)gamesInLeague.Count(x =>
                                                                 x.P3_Away % 2 != x.P2_Away % 2) /
                                     leagueGames.Count * 100;

                P4notP3_BT_Percent = (double)gamesInLeague.Count(x =>
                                                                 (x.P4_Home + x.P4_Away) % 2 != (x.P3_Home + x.P3_Away) % 2) /
                                     leagueGames.Count * 100;

                P4notP3_HT_Percent = (double)gamesInLeague.Count(x =>
                                                                 x.P4_Home % 2 != x.P3_Home % 2) /
                                     leagueGames.Count * 100;

                P4notP3_AT_Percent = (double)gamesInLeague.Count(x =>
                                                                 x.P4_Away % 2 != x.P3_Away % 2) /
                                     leagueGames.Count * 100;

                #endregion
            }
        }
예제 #28
0
 public SegmentSpan(string operationName, SpanType spanType, long startTimeMilliseconds = default)
 {
     OperationName = new StringOrIntValue(operationName);
     SpanType      = spanType;
     StartTime     = startTimeMilliseconds == default ? DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() : startTimeMilliseconds;
 }
예제 #29
0
파일: Bar.cs 프로젝트: sakiyama/Trade
        /// <summary>
        /// <para>指定された時間が含まれるべきタイムスタンプを計算します。</para>
        /// <para>指定された時間がリアルタイムの場合そのタイムスタンプの足は作成中なので取得可能ではないはずです。</para>
        /// </summary>
        /// <param name="dateTime"></param>
        /// <param name="barSpan"></param>
        /// <param name="prices1min"></param>
        /// <returns></returns>
        public static DateTime TrimFractions(
            DateTime dateTime,
            SpanType barSpan)
        {
            if (barSpan < SpanType.hour1)
            {
                var minute = dateTime.Minute - dateTime.Minute % Bar.SpanTable[barSpan].Minutes;
                return new DateTime(
                    dateTime.Year,
                    dateTime.Month,
                    dateTime.Day,
                    dateTime.Hour,
                    minute,
                    0);
            }

            if (SpanType.hour1 <= barSpan &&
                barSpan < SpanType.day1)
            {
                var hour = dateTime.Hour - dateTime.Hour % Bar.SpanTable[barSpan].Hours;
                return new DateTime(
                    dateTime.Year,
                    dateTime.Month,
                    dateTime.Day,
                    hour,
                    0,
                    0);
            }

            if (SpanType.day1 <= barSpan)
            {
                // 2日足とかの時の為
                var day = dateTime.Day - dateTime.Day % Bar.SpanTable[barSpan].Days;

                var created = new DateTime(
                    dateTime.Year,
                    dateTime.Month,
                    day,
                    0,
                    0,
                    0);

                return created;
            }
            throw new NotImplementedException("足あたらしくつくった?");
        }
예제 #30
0
 public SegmentSpan(string operationName, SpanType spanType)
 {
     OperationName = operationName;
     SpanType      = spanType;
 }
 private SemanticVersionSpan(SpanType spanType)
 {
     Span = spanType;
 }
예제 #32
0
 public Block(string text, SpanType spanType)
 {
     Text = text;
     SpanType = spanType;
 }
예제 #33
0
파일: Bar.cs 프로젝트: sakiyama/Trade
        public bool ContainTime(
            DateTime dateTime,
            SpanType barSpan)
        {
            if (this.TimeStamp == DateTime.MinValue)
            {
                throw new NotSupportedException();
            }

            if (this.TimeStamp == dateTime)
            {
                return true;
            }
            return false;
        }
예제 #34
0
 public ISpan ContinueSpan(string spanName, string serviceName, long traceId, long parentId, SpanType spanType)
 {
     return tracer.ContinueSpan(spanName, serviceName, traceId, parentId, spanType);
 }