Clumsy handling of user inputs

Thinger.io currently provides very little to enter user input values in dashboards.
Indeed the only solution is currently to use a slider.
But a slider cannot handle floating point values.

So currently the only solution to create a user entry for floating point values is to create a pair of widgets:
A slider and the floating-point value display under it.
image
The slide must be made taller as the minimum, since else the “full-screen” hotspot would overlap the slider space and perturb the user input at the right 70% of the slider range.
In that example, the user must guess where the input could have been in mV and move the slider accordingly, once he is finished, he will get the reading ~one second later in the field below.
That is pretty clumsy, isn’t it?

Thinger.io does not provide radio button widget either.
So currently the only solution to create a multiple-choice is to create a pair of widgets:
A slider and a text value display under it.
In that example, the user must guess where the input (1 of 6) could have been and place the slider.
Once he is finished, he will get the reading ~one second later in the field below.
Not very user-friendly, isn’t it?

Then you also need a lot of code to get all that working:

String modus_description[] = {"CVFX","CVTR","CCFX","PVFX","MPPT","AUTO"}; // for dashboard.Modus

thing["scc"]  = [](pson & in, pson & out)
        {
          if (in.is_empty())
          {
            in = CCbat;
          } else {
            CCbat = in;
          }
          dashboard.CCbat = float(in) / 1000;
          out["batCC"] = dashboard.CCbat;
        };

    thing["scv"]  = [](pson & in, pson & out)
    {
      if (in.is_empty())
      {
        in = CVbat;
      } else {
        CVbat = in;
      }
      dashboard.CVbat = float(in) / 1000;
      out["batCV"] = dashboard.CVbat;
    };
    thing["scp"]  = [](pson & in, pson & out)
    {
      if (in.is_empty())
      {
        in = CVpan;
      } else {
        CVpan = in;
      }      dashboard.CVpan = float(in) / 1000;
      out["panCV"] = dashboard.CVpan;
    };
    thing["aux"]  = [](pson & in, pson & out)
    {
      if (in.is_empty())
      {
        in = CVaux;
      } else {
        CVaux = in;
      }
      dashboard.CVaux = float(in) / 1000;
      out["auxCV"] = dashboard.CVaux;
    };
    thing["mode"]  = [](pson & in, pson & out)
    {
      if (in.is_empty())
      {
        in = dashboard.modus;
      } else {
        dashboard.modus = in;
      }
      out["modusTXT"]        = modus_description[dashboard.modus];
    };

I really hope, the development team would consider providing better widgets to enter floating-point values (directly numerical or/and over increments arrows) and radio buttons (that every standard for user input is usually providing, why not Thinger.io?).

Hi @rin67630,

thank you very much for your detailed feedback and your contribution to the community. Would include new control widgets in the next release! :wink:

Based on your feedback:

  • Direct input value, i.e, a text field
  • Radio Buttons for selecting alternatives
  • List Option selector
  • Will check the increment arrows also.

Thanks for your feedback!

1 Like