def test_create_themed_layout(): # Make an instance of the theme class test_theme = WebvizConfigTheme(theme_name="test") # Add a plotly theme to the new theme test_theme.plotly_theme = { "layout": { "font": { "family": "Arial" }, "colorscale": { "diverging": [ [0, "rgb(255, 0, 0)"], [0.5, "rgb(255, 255, 0)"], [1, "rgb(255, 255, 255)"], ], "sequential": [ [0, "rgb(0, 0, 255)"], [0.5, "rgb(0, 255, 0)"], [1, "rgb(255, 0, 0)"], ], }, "xaxis": { "title": { "text": "Hi", "font": { "size": 10 } } }, "yaxis2": { "color": "#000" }, }, } # Define a layout that should be themed test_layout = { "font": { "size": 12 }, "colorscale": { "sequential": [ [0, "rgb(0, 0, 0)"], [0.25, "rgb(255, 0, 0)"], [0.5, "rgb(0, 255, 0)"], [0.75, "rgb(0, 0, 255)"], [1, "rgb(255, 255, 255)"], ], }, "xaxis": { "title": { "text": "New", "standoff": 2 }, "type": "log" }, "xaxis2": {}, "yaxis": { "color": "#111" }, } # The expected layout after theming is applied expected_themed_layout = { "font": { "family": "Arial", "size": 12 }, "colorscale": { "diverging": [ [0, "rgb(255, 0, 0)"], [0.5, "rgb(255, 255, 0)"], [1, "rgb(255, 255, 255)"], ], "sequential": [ [0, "rgb(0, 0, 0)"], [0.25, "rgb(255, 0, 0)"], [0.5, "rgb(0, 255, 0)"], [0.75, "rgb(0, 0, 255)"], [1, "rgb(255, 255, 255)"], ], }, "xaxis": { "title": { "text": "New", "font": { "size": 10 }, "standoff": 2 }, "type": "log", }, "xaxis2": { "title": { "text": "Hi", "font": { "size": 10 } } }, "yaxis": { "color": "#111" }, "yaxis2": { "color": "#000" }, } # Make a themed layout using the create_themed_layout method themed_layout = test_theme.create_themed_layout(test_layout) # Verify that the themed layout is as expected assert themed_layout == expected_themed_layout # Verify that the theme layout is unchanged (same as when set) assert test_theme.plotly_theme == { "layout": { "font": { "family": "Arial" }, "colorscale": { "diverging": [ [0, "rgb(255, 0, 0)"], [0.5, "rgb(255, 255, 0)"], [1, "rgb(255, 255, 255)"], ], "sequential": [ [0, "rgb(0, 0, 255)"], [0.5, "rgb(0, 255, 0)"], [1, "rgb(255, 0, 0)"], ], }, "yaxis2": { "color": "#000" }, "xaxis": { "title": { "text": "Hi", "font": { "size": 10 } } }, }, } # Verify that the test_layout unchanged (same as when set) assert test_layout == { "font": { "size": 12 }, "colorscale": { "sequential": [ [0, "rgb(0, 0, 0)"], [0.25, "rgb(255, 0, 0)"], [0.5, "rgb(0, 255, 0)"], [0.75, "rgb(0, 0, 255)"], [1, "rgb(255, 255, 255)"], ], }, "xaxis": { "title": { "text": "New", "standoff": 2 }, "type": "log" }, "yaxis": { "color": "#111" }, "xaxis2": {}, }
import glob import pathlib from plotly.io import templates from webviz_config import WebvizConfigTheme default_theme = WebvizConfigTheme(theme_name="default") # pylint: disable=invalid-name default_theme.assets = glob.glob( str(pathlib.Path(__file__).resolve().parent / "default_assets" / "*")) default_theme.plotly_theme = templates["plotly"].to_plotly_json()
equinor_theme.plotly_theme = { "layout": { "font": { "family": "Equinor" }, "hoverlabel": { "font": { "family": "Equinor" } }, "plot_bgcolor": "white", "colorscale": { "diverging": [ [0, "rgb(255, 18, 67)"], [0.1, "rgb(36, 55, 70)"], [0.2, "rgb(0, 112, 121)"], [0.3, "rgb(213, 234, 244)"], [0.4, "rgb(230, 250, 236)"], [0.5, "rgb(255, 231, 214)"], [0.6, "rgb(128, 183, 188)"], [0.7, "rgb(255, 18, 67)"], [0.8, "rgb(145, 155, 162)"], [0.9, "rgb(190, 128, 145)"], [1, "rgb(178, 212, 215)"], ], "sequential": [ [0.0, "rgb(36, 55, 70)"], [0.125, "rgb(102, 115, 125)"], [0.25, "rgb(145, 155, 162)"], [0.375, "rgb(189, 195, 199)"], [0.5, "rgb(255, 231, 214)"], [0.625, "rgb(216, 178, 189)"], [0.75, "rgb(190, 128, 145)"], [0.875, "rgb(164, 76, 101)"], [1.0, "rgb(125, 0, 35)"], ], }, "colorway": [ "#FF1243", "#243746", "#007079", "#80B7BC", "#919BA2", "#BE8091", "#B2D4D7", "#FF597B", "#BDC3C7", "#D8B2BD", "#FFE7D6", "#D5EAF4", "#FF88A1", ], } }
] equinor_theme.adjust_csp( { "font-src": ["https://eds-static.equinor.com"], "img-src": ["https://eds-static.equinor.com"], "style-src": ["https://eds-static.equinor.com"], }, append=True, ) equinor_theme.assets = glob.glob( os.path.join(os.path.dirname(os.path.abspath(__file__)), "assets", "*") ) equinor_theme.plotly_theme = { "layout": { "font": {"family": "Equinor"}, "hoverlabel": {"font": {"family": "Equinor"}}, "plot_bgcolor": "white", "xaxis": {"exponentformat": "SI"}, "yaxis": {"exponentformat": "SI"}, "coloraxis": {"colorbar": {"exponentformat": "SI"}}, "colorscale": { "diverging": colors.get_colorscale("spectral"), "sequential": colors.get_colorscale("viridis"), }, "colorway": colors.qualitative.D3 + colors.qualitative.Light24, } }