Example #1
0
        /// <inheritdoc cref="TextBox{TRenderHookState}.IContentsRenderer.Render"/>
        public void Render(bool active, TextBox <State> textBox, State state, int startOffset)
        {
            var text   = textBox.Value.ToUpperInvariant();
            var parser = new MrrcParser(text);

            var tokens = parser.Tokenise(true, false);

            var lastIndex = 0;

            foreach (var token in tokens)
            {
                var startedBefore = lastIndex <= startOffset;

                var source = text.Substring(lastIndex, token.Content.Length);
                lastIndex += token.Content.Length;

                if (lastIndex <= startOffset)
                {
                    continue;
                }

                Console.ForegroundColor = TokenColours[token.Type];
                Console.Write(startedBefore ? source.Substring(startOffset - lastIndex + source.Length) : source);
            }
        }
Example #2
0
        private void FleetSearchOnSearch(object sender, Form.SubmittedEventArgs e)
        {
            var options = _fleet.Vehicles.Select(v => new[]
            {
                new Tuple <string, Vehicle>(v.Registration.ToString(), v),
                new Tuple <string, Vehicle>(v.Grade.ToString(), v),
                new Tuple <string, Vehicle>(v.Make, v),
                new Tuple <string, Vehicle>(v.Model, v),
                new Tuple <string, Vehicle>(v.Year.ToString(), v),
                new Tuple <string, Vehicle>(v.SeatCount.ToString(), v),
                new Tuple <string, Vehicle>(v.Transmission.ToString(), v),
                new Tuple <string, Vehicle>(v.Fuel.ToString(), v),
                new Tuple <string, Vehicle>(v.HasGps ? "GPS" : "No GPS", v),
                new Tuple <string, Vehicle>(v.HasSunRoof ? "Sun roof" : "No sun roof", v),
                new Tuple <string, Vehicle>(v.Colour, v),
                new Tuple <string, Vehicle>($"{v.SeatCount} seats", v),
            }).SelectMany(it => it).ToArray();

            if (e.Data.Get <string>("Search").IsEmpty())
            {
                e.Result = "Enter a search term";
                return;
            }

            var parser = new MrrcParser(e.Data.Get <string>("Search").ToUpperInvariant());
            var result = parser.Parse(parser.Tokenise());

            if (result is FailedParseResult <Expression> failure)
            {
                e.Result = failure.Message;
                return;
            }

            var success = (SuccessfulParseResult <Expression>)result;

            var matches = success.Result.Matches(options);

            var individualMatches = matches.Item1
                                    .Select(it => it.Item2)
                                    .Distinct()
                                    .Where(it => !matches.Item2.Contains(it))
                                    .ToArray();

            if (individualMatches.Length == 0)
            {
                e.Result = "No results where found";
                return;
            }

            var fleetList = FleetSearch.GetComponent <Form>("customer list");

            fleetList.Set("Search", e.Data.Get <string>("Search"));
            fleetList.GetComponent <Select>("Results")
            .SetNewMembers(individualMatches.Select(m => m.ToString()).ToArray());

            FleetSearch.ActiveComponent = "customer list";
        }
Example #3
0
        private void CustomerSearchOnSearch(object sender, Form.SubmittedEventArgs e)
        {
            var options = _crm.Customers.Select(c => new[]
            {
                new Tuple <string, Customer>(c.Id.ToString(), c),
                new Tuple <string, Customer>(c.Title.ToString(), c),
                new Tuple <string, Customer>(c.GivenNames, c),
                new Tuple <string, Customer>(c.Surname, c),
                new Tuple <string, Customer>(c.Gender.ToString(), c)
            }).SelectMany(it => it).ToArray();

            if (e.Data.Get <string>("Search").IsEmpty())
            {
                e.Result = "Enter a search term";
                return;
            }

            var parser = new MrrcParser(e.Data.Get <string>("Search").ToUpperInvariant());
            var result = parser.Parse(parser.Tokenise());

            if (result is FailedParseResult <Expression> failure)
            {
                e.Result = failure.Message;
                return;
            }

            var success = (SuccessfulParseResult <Expression>)result;

            var matches = success.Result.Matches(options);

            var individualMatches = matches.Item1
                                    .Select(it => it.Item2)
                                    .Distinct()
                                    .Where(it => !matches.Item2.Contains(it))
                                    .ToArray();

            if (individualMatches.Length == 0)
            {
                e.Result = "No results where found";
                return;
            }

            var customerList = CustomerSearch.GetComponent <Form>("customer list");

            customerList.Set("Search", e.Data.Get <string>("Search"));
            customerList.GetComponent <Select>("Results")
            .SetNewMembers(individualMatches.Select(m => m.ToString()).ToArray());

            CustomerSearch.ActiveComponent = "customer list";
        }