Avaiga / taipy

Turns Data and AI algorithms into production-ready web applications in no time.
https://www.taipy.io
Apache License 2.0
14.23k stars 1.7k forks source link

[🐛 BUG] Scenario Selector - Filter on Cycle not working #1374

Closed FlorianJacta closed 4 months ago

FlorianJacta commented 4 months ago

What went wrong? 🤔

Filtering on the cycle start does not work.

C:\Users\jacta\.conda\envs\develop\lib\site-packages\taipy\gui_core\_adapters.py:249: TaipyGuiWarning: Error filtering with cycle.start >= 2024-06-19 22:00:00 on Thursday, 27. June 2024 > g.:
start is not an attribute of cycle CYCLE_Thursday_27._June_2024_dad68cc2-b8a5-4841-a4ca-6dfc107542b3        
  _warn(f"Error filtering with {col} {action} {val} on {ent}.", e)

The filter on the cycle end does not work.

C:\Users\jacta\.conda\envs\develop\lib\site-packages\taipy\gui_core\_adapters.py:249: TaipyGuiWarning: Error filtering with cycle.end >= 2024-06-19 22:00:00 on Thursday, 27. June 2024 > g.:
end is not an attribute of cycle CYCLE_Thursday_27._June_2024_dad68cc2-b8a5-4841-a4ca-6dfc107542b3
  _warn(f"Error filtering with {col} {action} {val} on {ent}.", e)

No filter is applied.

Expected Behavior

The filters should be applied correctly.

Steps to Reproduce Issue

# Import necessary libraries
import pandas as pd
import taipy as tp
from taipy import Config, Scope, Frequency

import datetime as dt

# Function to run a Dataiku scenario
def run_something(input_1, input_2):
    datetime = dt.datetime.now()
    date = dt.date(2018, 1, 1)
    int_var = 10
    string_var = "String"
    return datetime, date, int_var, string_var

data = {"toto": [i for i in range(10_000)], 
        "titi": [2*i for i in range(10_000)],
        "tata": [4*i for i in range(10_000)]}

input_1_cfg = Config.configure_data_node(
    id="input_1_data_node",
    default_data=data,
)

input_2_cfg = Config.configure_data_node(
    id="input_2_data_node",
    default_data=data,
)

datetime_cfg = Config.configure_data_node(id="datetime_data_node")
date_cfg = Config.configure_data_node(id="date_data_node")
int_cfg = Config.configure_data_node(id="int_data_node")
string_cfg = Config.configure_data_node(id="string_data_node")

# Scenario and task configuration in Taipy
scenario_task_cfg = Config.configure_task(
    id="scenario_task",
    function=run_something,
    input=[input_1_cfg, input_2_cfg],
    output=[datetime_cfg, date_cfg, int_cfg, string_cfg]
)

scenario_cfg = Config.configure_scenario(
    id="scenario",
    task_configs=[scenario_task_cfg],
    frequency=Frequency.DAILY)

data_node = None

# GUI Markdown content
scenario_md = """
<|1 1|layout|
<|{scenario}|scenario_selector|>

<|{scenario}|scenario|>
|>

<|{scenario}|>

<|job_selector|>

<|1 1|layout|
Input 1 Dataset:
<|{scenario.input_1_data_node if scenario else None}|data_node|>

Input 2 Dataset:
<|{scenario.input_2_data_node if scenario else None}|data_node|>
|>

<|1 1|layout|
<|{data_node}|data_node_selector|>

<|{data_node}|data_node|>
|>
"""

# Main execution block with GUI setup
if __name__ == "__main__":
    tp.Core().run()
    scenario = tp.create_scenario(scenario_cfg)
    # Run the GUI
    tp.Gui(scenario_md).run(title="Bug replication", port=3248)

Version of Taipy

Develop - 6/6/2024

Code of Conduct

FredLL-Avaiga commented 4 months ago

correct attribute are cycle.start_date and .end_date