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

Add custom JsonConverters to ensure that JS function strings are evaluated into function when deserialized by JS #453

Merged
merged 5 commits into from
Apr 28, 2024

Conversation

SparkyTD
Copy link
Contributor

Summary

This PR adds two custom JsonConverters to handle the serialization of function strings/arrays. Every property that represents a function or a CustomFunction will be serialized as a JSON object like the following:

someApexFunction: {
    "@eval": "function (arg1, arg2, ...) {...}"
}

Or in the case of a CustomFunction with multiple values:

someApexMultiFunction: {
    "@eval": [
        "function (arg1, arg2, ...) {...}",
        "function (arg1, arg2, ...) {...}",
        ...
    ]
}

This way, the client side deserialization logic can simply check if a JSON property's value is an object that contains the @eval key, and apply the function evaluations appropriately. This way there is no need to hard-code function names in the deserializer logic to check what needs to be evaluated.

To mark a string property in the data model as a function, simply add the [JsonConverter(typeof(FunctionStringConverter))] attribute to it. In case of CustomFunction properties, use [JsonConverter(typeof(FunctionValueOrListConverterConverter))].

Things to consider

Is there any way this can break existing functionality?

Since this PR includes changes in the JS code, some browsers might load a cached version of the previous blazor-apexcharts.js file, which will lead to an incompatibility unless the user force-reloads the page. One possible solution is to bake the current commit hash into the path of the js file (e.g. var javascriptPath = $".../blazor-apexcharts.js?hash={commitHash}"). The commit-hash can be obtained at build time using the GitInfo package.

@joadan joadan merged commit bf03cd6 into apexcharts:master Apr 28, 2024
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants