i am using the below folder structure for my project folder structure for pages
in overview.md i have a text where its mentioned "total number of projects:" similarly i have a create project and a dropdown selectorthat list all avaiable projects in create.md, now the problem is when ever i am creating a project the dropdown values are not updating and also in the overview_md "total number of projects:" stays the same.
home.py
from taipy.gui import Gui
import taipy as tp
from user_interface.taipy.pages.create.create import create_md
from user_interface.taipy.pages.overview.overview import overview_md
from user_interface.taipy.pages.upload.upload import upload_md
from user_interface.taipy.pages.root import root
pages = {
'/':root,
"Overview":overview_md,
"create":create_md,
"Upload":upload_md,
}
gui_multi_pages = Gui(pages=pages)
if __name__ == '__main__':
tp.Core().run()
gui_multi_pages.run(title="Dataforge",dark_mode=False)
overview.md
## Quick overview
Total projects : <|{total_projects}|>
overview.py
def get_no_collections():
error,collections = shepard_client.get_all_collections()
print("checked total_projects")
if collections is not None:
for collection in collections:
#print(f"ID: {collection.id}, Name: {collection.name}")
collections_list.append((collection.id, collection.name))
return len(collections_list)
else:
print("Failed to fetch collections.")
return "Error getting collections"
total_projects= get_no_collections()
create.md
`<|{selected_projects}|selector|lov={available_projects}|type=Collection|adapter={lambda c: (str(c.id), c.name)}|label=Select Project|on_change=update_plist|dropdown|>
create.py
class Collection:
def __init__(self, id, name):
self.id = id
self.name = name
error,collection = shepard_client.get_all_collections()
available_projects = [Collection(data.id, data.name) for data in collection]
how can i change the variable value every time i switch pages or refresh page elements so that its updated?
i tried updating using state. when there is create button clicked but doesnt really update the dropdown list.
def update_plist(state) -> None:
"""
Function to update the list of available projects.
"""
try:
error, u_collections = shepard_client.get_all_collections()
if not error:
# Update the state with the new list of collections
state.available_projects = [Collection(data['id'], data['name']) for data in u_collections]
else:
print("Error fetching collections:", error)
except Exception as e:
print("Exception in update_plist:", e)