@@ -265,22 +265,22 @@ def print_options(self, drop_data=False):
265265 series_count = len (dict_options ['series' ])
266266 for i in range (0 , series_count ):
267267 dict_options ['series' ][i ]['data' ] = []
268- Tools .convert_js_to_dict (self . convert_to_js_options (dict_options ), print_dict = True )
268+ Tools .convert_js_to_dict (Tools . convert_dict_to_js (dict_options ), print_dict = True )
269269
270270 def dump_options (self ):
271271 """
272272 导出 js option字符串表示
273273 :return:
274274 """
275- self .js_options = self . convert_to_js_options (self .options )
275+ self .js_options = Tools . convert_dict_to_js (self .options )
276276 return self .js_options
277277
278278 def render_notebook (self ) -> Html :
279279 """
280280 在jupyter notebook 环境输出
281281 :return:
282282 """
283- self .js_options = self . convert_to_js_options (self .options )
283+ self .js_options = Tools . convert_dict_to_js (self .options )
284284 html = GLOBAL_ENV .from_string (JUPYTER_NOTEBOOK_TEMPLATE ).render (plot = self )
285285 return Html (html )
286286
@@ -289,7 +289,7 @@ def render_jupyterlab(self) -> Html:
289289 在jupyterlab 环境输出
290290 :return:
291291 """
292- self .js_options = self . convert_to_js_options (self .options )
292+ self .js_options = Tools . convert_dict_to_js (self .options )
293293 html = GLOBAL_ENV .from_string (JUPYTER_LAB_TEMPLATE ).render (plot = self )
294294 return Html (html )
295295
@@ -299,40 +299,20 @@ def render_file(self, path: str = "plot.html") -> Html:
299299 :param path:
300300 :return: 文件路径
301301 """
302- self .js_options = self . convert_to_js_options (self .options )
302+ self .js_options = Tools . convert_dict_to_js (self .options )
303303 html = GLOBAL_ENV .from_string (HTML_TEMPLATE ).render (plot = self )
304304 with open (path , "w+" , encoding = "utf-8" ) as html_file :
305305 html_file .write (html )
306306 abs_path = os .path .abspath (path )
307307 return Html ("<p>{path}</p>" .format (path = abs_path ))
308-
309- @staticmethod
310- def convert_to_js_options (options ):
311- json_str = simplejson .dumps (options , indent = 2 , default = json_type_convert , ignore_nan = True )
312- segs = []
313- function_start = 0
314- mask_length = len (FUNCTION_BOUNDARY_MARK )
315- for i in range (mask_length , len (json_str )):
316- if json_str [i - mask_length - 1 :i ] == '"' + FUNCTION_BOUNDARY_MARK :
317- function_start = i - mask_length
318- elif json_str [i - mask_length - 1 :i ] == FUNCTION_BOUNDARY_MARK + '"' :
319- segs .append ([function_start , i ])
320- left_index = 0
321- parts = []
322- for seg in segs :
323- parts .append (json_str [left_index :seg [0 ]])
324- parts .append (json_str [seg [0 ]:(seg [1 ] + 1 )].replace ('\\ "' , '"' ))
325- left_index = seg [1 ] + 1
326- parts .append (json_str [left_index :])
327- dict_str = "" .join (parts )
328- return re .sub ('"?' + FUNCTION_BOUNDARY_MARK + '"?' , "" , dict_str )
308+
329309
330310 def render_html (self ) -> str :
331311 """
332312 渲染html字符串,可以用于 streamlit
333313 :return:
334314 """
335- self .js_options = self . convert_to_js_options (self .options )
315+ self .js_options = Tools . convert_dict_to_js (self .options )
336316 html = GLOBAL_ENV .from_string (HTML_TEMPLATE ).render (plot = self )
337317 return html
338318
@@ -341,7 +321,7 @@ def render_html_fragment(self):
341321 渲染html 片段,方便一个网页输出多个图表
342322 :return:
343323 """
344- self .js_options = self . convert_to_js_options (self .options )
324+ self .js_options = Tools . convert_dict_to_js (self .options )
345325 html = GLOBAL_ENV .from_string (HTML_FRAGMENT_TEMPLATE ).render (plot = self )
346326 return html
347327
@@ -350,6 +330,6 @@ def _repr_html_(self):
350330 jupyter 环境,直接输出
351331 :return:
352332 """
353- self .js_options = self . convert_to_js_options (self .options )
333+ self .js_options = Tools . convert_dict_to_js (self .options )
354334 html = GLOBAL_ENV .from_string (JUPYTER_ALL_TEMPLATE ).render (plot = self )
355335 return Html (html ).data
0 commit comments