-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added Feature Cover Json Data Node in Data Node control #2164
base: develop
Are you sure you want to change the base?
Added Feature Cover Json Data Node in Data Node control #2164
Conversation
@quest-bot loot #1248 |
Quest PR submitted!@THEBOSS0369, you are attempting to solve the issue and loot this Quest. Will you be successful? Questions? Check out the docs. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Needs tests
@@ -756,6 +757,29 @@ const DataNodeViewer = (props: DataNodeViewerProps) => { | |||
) : null} | |||
</Stack> | |||
</Box> | |||
<div> | |||
{ dtType === "json" ? ( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did you check that this type is set by the backend ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No i didn't checked as on the issue the user was using json data so i thought i will make it in a condition so that only json data will be collapsed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here is what is a taipy.core.data_node
A data_node can contain any type of data (scalar, tabular, structured, db view ...)
the data_node component tries to display a data_node and its underlying data.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
as per
taipy/taipy/gui_core/_adapters.py
Line 205 in 63f0cbf
else type(value).__name__ |
the best we can hope for is a dict
value for dtType
and that's what we get if the DataNode
used is a JSONDataNode
.
Described here
Line 141 in 9373005
return json.load(f, cls=self._decoder) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for sharing this i was having a really hard time with the backend.
12fb4e6
to
7daba5e
Compare
Hey @FredLL-Avaiga ! Apologies for late reply. I have created a test file can you tell me in which folder should i add that file , this is the test file in the root folder |
What does this show ? that you can display some json data in a markdown page ? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this needs:
backend check and modification if necessary- tests
- example of the data_node control usage with json
please fix the failing checks |
Yes sir i will fix these errors. |
58feaaa
to
00272c1
Compare
@FredLL-Avaiga The test is failing because of the it can resolve if i import it from |
Sir, I will be adding this in the next commit |
You have to update your dependencies |
Got it Sir , This will work! Also I won't be able to share any update till tomorrow due to Diwali Festival. Hope you understand 😀 |
Enjoy the festival 🙏 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
to make things work, you will nee to modify the backend also:
in _adapters.py
taipy/taipy/gui_core/_adapters.py
Line 190 in 63f0cbf
return isinstance(datanode, _TabularDataNodeMixin) or isinstance( |
the static method should be
@staticmethod
def _is_tabular_data(datanode: DataNode, value: t.Any):
return isinstance(datanode, _TabularDataNodeMixin) or (
isinstance(value, (pd.DataFrame, pd.Series, list, tuple, dict)) and not isinstance(datanode, JSONDataNode)
)
PS do not forget to import JSONDataNode
from taipy.core.data import JSONDataNode
|
||
# Define the page with the JSON viewer | ||
page = """ | ||
<|{json_data}|json|expandable|> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
did you try to run this ?
This should be something like
import taipy as tp
import taipy.gui.builder as tgb
from taipy import Config, Orchestrator, Scope
from taipy.gui import Gui
json_config_node = Config.configure_json_data_node(
id="json_node",
default_path="./demo-1248-dn.json",
scope=Scope.GLOBAL,
)
with tgb.Page() as data_node_viewer:
tgb.html("h2", "Discovering Data Node json viewer")
tgb.data_node(
data_node="{json_data_node}"
)
gui = Gui(page=data_node_viewer)
if __name__ == "__main__":
Orchestrator().run()
json_data_node = tp.create_global_data_node(json_config_node)
gui.run(title="1248 json data_node")
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You should also have a change in package.json ?
and the package react-json-view
is not maintained any more ... need to change it
<> | ||
<Suspense fallback={<div>Loading JSON...</div>}> | ||
<Grid container spacing={2}> | ||
<Grid xs={12}> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
change xs={12}
to size={12}
This PR fixes #1248
Hey Everyone!
In this PR, The changes has been done in
DataNodeViewer.tsx
file, Now Data in Json can be collapsed or expand as the user wish.I have imported
react-json-view
because it will make our process much easier.Thanks!