Skip to content

DropDownHelper and Cascading DropDowns #1

@fasteddys

Description

@fasteddys

Hello, nice lib, can you also share an easy to use Generic Dropdown helper for ASP Core. I like your color and math parsers, often people type formulas on front end in text and I have to parse it in the backend so I am trying your lib.

Cascading/Related Drop Downs: Also, more often if you have two or three dropdown, where the second drop down depends on the first selection etc.. a flag/option to set that up would be nice. For e.g. country, state, city

Unique items: Another non trivial task with drop down, is when you want to make them unique, lets says they can only pick a combination items once, and not again like a seat reservations in different buses, if you pick the bus (DropDown 1) and pick a Seat (Drop Down 2) you cannot pick it again since its taken.


For color conversion, just wanted to share some ideas:

public static (double, double, double) HsvToHsl(double h, double s, double v)
        {
            s /= 100;
            v /= 100;
            double l = (2 - s) * v / 2;
            if (l != 0)
            {
                if (l == 1) s = 0;
                else if (l < 0.5) s = s * v / (l * 2);
                else s = s * v / (2 - l * 2);
            }
            return (h, s * 100, l * 100);
        }

        //https://stackoverflow.com/questions/36721830/convert-hsl-to-rgb-and-hex
        public static string HslToHex((double, double, double) hsl) { return HslToHex(hsl.Item1, hsl.Item2, hsl.Item3); }
        public static string HslToHex(double h, double s, double l)
        {
            l /= 100;
            double a = s * Math.Min(l, 1 - l) / 100;
            string ToHex(double n)
            {
                double k = (n + h / 30) % 12;
                double colour = l - a * Math.Max(Math.Min(k - 3, Math.Min(9 - k, 1)), -1);
                return ((int)Math.Round(255 * colour)).ToString("X2").PadLeft(2, '0');
            }
            return $"#{ToHex(0)}{ToHex(8)}{ToHex(4)}";
        }

        //http://ariya.blogspot.com/2008/07/converting-between-hsl-and-hsv.html
        public static (double, double, double) HslToHsv((double, double, double) hsv) { return HslToHsv(hsv.Item1, hsv.Item2, hsv.Item3); }
        public static (double, double, double) HslToHsv(double h, double s, double l)
        {
            l *= 2;
            s *= l <= 1 ? l : 2 - l;
            double v = (l + s) / 2;
            s = (2 * s) / (l + s);
            return (h, s, v);
        }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions