Skip to content
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

Open
wants to merge 6 commits into
base: develop
Choose a base branch
from

Conversation

THEBOSS0369
Copy link
Contributor

@THEBOSS0369 THEBOSS0369 commented Oct 26, 2024

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!

@THEBOSS0369
Copy link
Contributor Author

@quest-bot loot #1248

Copy link

quest-bot bot commented Oct 26, 2024

Quest PR submitted! image Quest PR submitted!

@THEBOSS0369, you are attempting to solve the issue and loot this Quest. Will you be successful?


Questions? Check out the docs.

@quest-bot quest-bot bot added the ⚔️ Quest Tracks quest-bot quests label Oct 26, 2024
@quest-bot quest-bot bot mentioned this pull request Oct 26, 2024
4 tasks
Copy link
Member

@FredLL-Avaiga FredLL-Avaiga left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs tests

frontend/taipy/src/DataNodeViewer.tsx Outdated Show resolved Hide resolved
frontend/taipy/src/DataNodeViewer.tsx Outdated Show resolved Hide resolved
@@ -756,6 +757,29 @@ const DataNodeViewer = (props: DataNodeViewerProps) => {
) : null}
</Stack>
</Box>
<div>
{ dtType === "json" ? (
Copy link
Member

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 ?

Copy link
Contributor Author

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.

Copy link
Member

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.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as per

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

return json.load(f, cls=self._decoder)

Copy link
Contributor Author

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.

@THEBOSS0369 THEBOSS0369 force-pushed the feature/#1248-cover-json-data-node-control-new branch from 12fb4e6 to 7daba5e Compare October 29, 2024 15:22
@THEBOSS0369
Copy link
Contributor Author

Needs tests

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

image

@FredLL-Avaiga
Copy link
Member

Needs tests

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

image

What does this show ? that you can display some json data in a markdown page ?
I don't understand how this would use the data_node control ?

Copy link
Member

@FredLL-Avaiga FredLL-Avaiga left a 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

@FredLL-Avaiga
Copy link
Member

please fix the failing checks

@THEBOSS0369
Copy link
Contributor Author

please fix the failing checks

Yes sir i will fix these errors.

@THEBOSS0369 THEBOSS0369 force-pushed the feature/#1248-cover-json-data-node-control-new branch from 58feaaa to 00272c1 Compare October 31, 2024 07:13
@THEBOSS0369
Copy link
Contributor Author

THEBOSS0369 commented Oct 31, 2024

@FredLL-Avaiga The test is failing because of the <Grid > component as in file it has been imported from @mui/material/Grid2
and when i'm using it this error is showing
image

it can resolve if i import it from @mui/material/Grid which is definitely not good option , so can you tell me how to use Grid in this file.

@THEBOSS0369
Copy link
Contributor Author

  • example of the data_node control usage with json

Sir, I will be adding this in the next commit

@FredLL-Avaiga
Copy link
Member

@FredLL-Avaiga The test is failing because of the <Grid > component as in file it has been imported from @mui/material/Grid2
and when i'm using it this error is showing
image

it can resolve if i import it from @mui/material/Grid which is definitely not good option , so can you tell me how to use Grid in this file.

You have to update your dependencies
Grid2 comes with Mui6 which is what we use in Taipy

@THEBOSS0369
Copy link
Contributor Author

@FredLL-Avaiga The test is failing because of the <Grid > component as in file it has been imported from @mui/material/Grid2
and when i'm using it this error is showing
image

it can resolve if i import it from @mui/material/Grid which is definitely not good option , so can you tell me how to use Grid in this file.

You have to update your dependencies
Grid2 comes with Mui6 which is what we use in Taipy

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 😀

@FredLL-Avaiga
Copy link
Member

Also I won't be able to share any update till tomorrow due to Diwali Festival. Hope you understand 😀

Enjoy the festival 🙏

Copy link
Member

@FredLL-Avaiga FredLL-Avaiga left a 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

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|>
Copy link
Member

@FredLL-Avaiga FredLL-Avaiga Oct 31, 2024

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")

Copy link
Member

@FredLL-Avaiga FredLL-Avaiga left a 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}>
Copy link
Member

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}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
⚔️ Quest Tracks quest-bot quests
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Cover JSON data in Data node control
2 participants