Avaiga / taipy-gui

Graphical User Interface generator for Taipy
Apache License 2.0
60 stars 18 forks source link

Allow date picker for dates in tables #797

Closed Dr-Irv closed 1 year ago

Dr-Irv commented 1 year ago

What would that feature address We are displaying a table that has editable columns that include dates. Right now, if you leave it as a pandas datetime type, it prompts to enter a very long string. In our case, we just want to let the user pick a date.

Description of the ideal solution We'd like it that if someone clicks on a date field in a table, it pops up a date picker.

Caveats Just makes a better user interfacE!

Other options Not sure.

Acceptance Criteria

FredLL-Avaiga commented 1 year ago

date values are sent to the callback as an UTC ISO string (with additionnal tz) that needs to be parsed to a date

from taipy.gui import Gui, State
import pandas as pd
from dateutil import parser
from zoneinfo import ZoneInfo

dr = pd.date_range(start="3/1/2023", periods=10, freq="D")
df = pd.DataFrame(
    {"dates": list(dr)}
)

def myedit(state: State, var_name: str, action: str, payload: dict):
    val = parser.parse(payload["value"]).astimezone(ZoneInfo(payload["tz"])).replace(tzinfo=None) if payload["col"] == "dates" else payload["value"]
    state.df.at[payload["index"], payload["col"]] = val
    state.refresh("df")

page = "<|{df}|table|id=df|on_edit=myedit|date_format=dd/MM/yy|>"

if __name__ == "__main__":
    Gui(page=page).run()