Esempio n. 1
0
def test_merge_js_dependencies_with_mixed_chart_and_string():
    map_chart = MockChart(['echarts', 'fujian'])

    eq_(['echarts', 'zhejiang'], merge_js_dependencies('echarts', 'zhejiang'))
    eq_(['echarts', 'zhejiang'], merge_js_dependencies(['echarts',
                                                        'zhejiang']))
    eq_(['echarts', 'fujian'], merge_js_dependencies('echarts', map_chart))
Esempio n. 2
0
def test_merge_js_dependencies_with_mixed_chart_and_string():
    map_chart = MockChart(["echarts", "fujian"])

    eq_(["echarts", "zhejiang"], merge_js_dependencies("echarts", "zhejiang"))
    eq_(["echarts", "zhejiang"], merge_js_dependencies(["echarts",
                                                        "zhejiang"]))
    eq_(["echarts", "fujian"], merge_js_dependencies("echarts", map_chart))
Esempio n. 3
0
def test_merge_js_dependencies_with_mixed_chart_and_string():
    map_chart = MockChart(["echarts", "fujian"])

    eq_(["echarts", "zhejiang"], merge_js_dependencies("echarts", "zhejiang"))
    eq_(
        ["echarts", "zhejiang"], merge_js_dependencies(["echarts", "zhejiang"])
    )
    eq_(["echarts", "fujian"], merge_js_dependencies("echarts", map_chart))
Esempio n. 4
0
def test_merge_js_dependencies_with_multiple_charts():
    base_chart = MockChart(['echarts'])
    map_chart = MockChart(['echarts', 'fujian'])
    three_d_chart = MockChart(['echarts', 'echartsgl'])
    # Multiple charts
    eq_(['echarts', 'fujian'], merge_js_dependencies(base_chart, map_chart))
    eq_(
        ['echarts', 'echartsgl', 'fujian'],
        merge_js_dependencies(base_chart, map_chart, three_d_chart),
    )
Esempio n. 5
0
def test_merge_js_dependencies_with_multiple_charts():
    base_chart = MockChart(["echarts"])
    map_chart = MockChart(["echarts", "fujian"])
    three_d_chart = MockChart(["echarts", "echartsgl"])
    # Multiple charts
    eq_(["echarts", "fujian"], merge_js_dependencies(base_chart, map_chart))
    eq_(
        ["echarts", "echartsgl", "fujian"],
        merge_js_dependencies(base_chart, map_chart, three_d_chart),
    )
Esempio n. 6
0
def test_merge_js_dependencies_with_multiple_charts():
    base_chart = MockChart(["echarts"])
    map_chart = MockChart(["echarts", "fujian"])
    three_d_chart = MockChart(["echarts", "echartsgl"])
    # Multiple charts
    eq_(["echarts", "fujian"], merge_js_dependencies(base_chart, map_chart))
    eq_(
        ["echarts", "echartsgl", "fujian"],
        merge_js_dependencies(base_chart, map_chart, three_d_chart),
    )
Esempio n. 7
0
def test_merge_js_dependencies_with_one_chart():
    # Prepare some kinds of charts or page.

    base_chart = MockChart(['echarts'])

    # One chart or page
    eq_(['echarts'], merge_js_dependencies(base_chart))
    # A map chart
    ch1 = MockChart(['echarts', 'fujian', 'zhengjiang', 'anhui'])
    eq_(
        ['echarts', 'fujian', 'zhengjiang', 'anhui'],
        merge_js_dependencies(ch1),
    )
Esempio n. 8
0
def test_merge_js_dependencies_with_one_chart():
    # Prepare some kinds of charts or page.

    base_chart = MockChart(["echarts"])

    # One chart or page
    eq_(["echarts"], merge_js_dependencies(base_chart))
    # A map chart
    ch1 = MockChart(["echarts", "fujian", "zhengjiang", "anhui"])
    eq_(
        ["echarts", "fujian", "zhengjiang", "anhui"],
        merge_js_dependencies(ch1),
    )
Esempio n. 9
0
def test_merge_js_dependencies_with_one_chart():
    # Prepare some kinds of charts or page.

    base_chart = MockChart(["echarts"])

    # One chart or page
    eq_(["echarts"], merge_js_dependencies(base_chart))
    # A map chart
    ch1 = MockChart(["echarts", "fujian", "zhengjiang", "anhui"])
    eq_(
        ["echarts", "fujian", "zhengjiang", "anhui"],
        merge_js_dependencies(ch1),
    )
Esempio n. 10
0
    def add(self, chart, time_point):
        """

        :param chart:
            图形实例
        :param time_point:
            指定时间点
        """
        self._js_dependencies = merge_js_dependencies(self._js_dependencies,
                                                      chart.js_dependencies)
        self.__check_components(chart)
        self._time_points.append(time_point)
        self._option.get('baseOption').update(
            backgroundColor=chart.options.get('backgroundColor'))
        self._option.get('baseOption').get('timeline').update(
            data=self._time_points)
        self._option.get('options').append({
            "legend":
            chart.options.get('legend'),
            "series":
            chart.options.get('series'),
            "title":
            chart.options.get('title')
        })
        _tmp_series = copy.deepcopy(chart.options.get('series'))
        for _s in _tmp_series:
            _s.pop("data", None)
            self._option.get("baseOption").get("series").append(_s)
Esempio n. 11
0
    def add(self, chart, time_point):
        """

        :param chart:
            图形实例
        :param time_point:
            指定时间点
        """
        self._js_dependencies = merge_js_dependencies(self._js_dependencies,
                                                      chart.js_dependencies)
        self.__check_components(chart)
        self._time_points.append(time_point)
        self._option.get("baseOption").update(
            backgroundColor=chart.options.get("backgroundColor"))
        self._option.get("baseOption").get("timeline").update(
            data=self._time_points)
        self._option.get("options").append({
            "color":
            chart.options.get("color"),
            "legend":
            chart.options.get("legend"),
            "series":
            chart.options.get("series"),
            "title":
            chart.options.get("title"),
            "tooltip":
            chart.options.get("tooltip"),
        })
        _tmp_series = copy.deepcopy(chart.options.get("series"))
        for _s in _tmp_series:
            if _s.get("type") == "map":
                _s.pop("data", None)
                self._option.get("baseOption").get("series").append(_s)
        return self
Esempio n. 12
0
    def add(self, chart, time_point):
        """

        :param chart:
            图形实例
        :param time_point:
            指定时间点
        """
        self._js_dependencies = merge_js_dependencies(
            self._js_dependencies, chart.js_dependencies
        )
        self.__check_components(chart)
        self._time_points.append(time_point)
        self._option.get("baseOption").update(
            backgroundColor=chart.options.get("backgroundColor")
        )
        self._option.get("baseOption").get("timeline").update(
            data=self._time_points
        )
        self._option.get("options").append(
            {
                "color": chart.options.get("color"),
                "legend": chart.options.get("legend"),
                "series": chart.options.get("series"),
                "title": chart.options.get("title"),
                "tooltip": chart.options.get("tooltip"),
            }
        )
        _tmp_series = copy.deepcopy(chart.options.get("series"))
        for _s in _tmp_series:
            if _s.get("type") == "map":
                _s.pop("data", None)
                self._option.get("baseOption").get("series").append(_s)
Esempio n. 13
0
    def add(self,
            chart,
            xaxis_index=0,
            yaxis_index=0,
            is_add_xaxis=False,
            is_add_yaxis=False):
        """

        :param chart:
            图形实例
        :param xaxis_index:
            x 坐标轴索引,默认为 0
        :param yaxis_index:
            y 坐标轴索引,默认为 0
        :param is_add_xaxis:
            是否新增一个 x 坐标轴,默认为 False
        :param is_add_yaxis:
            是否新增一个 y 坐标轴,默认为 False
        """
        if not self._option:
            self._option = copy.deepcopy(chart.options)
            self._series_id = self._option.get('series')[0].get('seriesId')
            self._js_dependencies = chart.js_dependencies
        else:
            _series = (chart.options.get('legend')[0].get('data'),
                       chart.options.get('series'),
                       chart.options.get('xAxis')[0],
                       chart.options.get('yAxis')[0], is_add_xaxis,
                       is_add_yaxis, xaxis_index, yaxis_index)
            self.__custom(_series)
            self._js_dependencies = merge_js_dependencies(
                self._js_dependencies, chart.js_dependencies)
Esempio n. 14
0
def echarts_js_dependencies_embed(env, *args):
    """
    Render script html nodes in embed mode,Only used for local files.
    """
    current_config = env.pyecharts_config
    dependencies = utils.merge_js_dependencies(*args)
    contents = current_config.read_file_contents_from_local(dependencies)
    return Markup("\n".join(
        [EMBED_SCRIPT_FORMATTER.format(c) for c in contents]))
Esempio n. 15
0
def echarts_js_dependencies_embed(env, *args):
    """
    Render script html nodes in embed mode,Only used for local files.
    """
    current_config = env.pyecharts_config
    dependencies = utils.merge_js_dependencies(*args)
    contents = current_config.read_file_contents_from_local(dependencies)
    return Markup(
        "\n".join([EMBED_SCRIPT_FORMATTER.format(c) for c in contents])
    )
Esempio n. 16
0
def echarts_js_dependencies(env, *args):
    """
    Render script html nodes in external link mode.
    """
    current_config = env.pyecharts_config
    dependencies = utils.merge_js_dependencies(*args)

    if current_config.js_embed:
        contents = current_config.read_file_contents_from_local(dependencies)

        return Markup("\n".join(
            [EMBED_SCRIPT_FORMATTER.format(c) for c in contents]))

    else:
        js_links = current_config.generate_js_link(dependencies)
        return Markup("\n".join(
            [LINK_SCRIPT_FORMATTER.format(j) for j in js_links]))
Esempio n. 17
0
def echarts_js_dependencies(env, *args):
    """
    Render script html nodes in external link mode.
    """
    current_config = env.pyecharts_config
    dependencies = utils.merge_js_dependencies(*args)

    if current_config.js_embed:
        contents = current_config.read_file_contents_from_local(dependencies)

        return Markup(
            "\n".join([EMBED_SCRIPT_FORMATTER.format(c) for c in contents])
        )

    else:
        js_links = current_config.generate_js_link(dependencies)
        return Markup(
            "\n".join([LINK_SCRIPT_FORMATTER.format(j) for j in js_links])
        )
Esempio n. 18
0
    def add(
        self,
        chart,
        xaxis_index=0,
        yaxis_index=0,
        is_add_xaxis=False,
        is_add_yaxis=False,
    ):
        """

        :param chart:
            图形实例
        :param xaxis_index:
            x 坐标轴索引,默认为 0
        :param yaxis_index:
            y 坐标轴索引,默认为 0
        :param is_add_xaxis:
            是否新增一个 x 坐标轴,默认为 False
        :param is_add_yaxis:
            是否新增一个 y 坐标轴,默认为 False
        """
        if not self._option:
            self._option = chart.get_options(remove_none=False)
            self._series_id = self._option.get("series")[0].get("seriesId")
            self._js_dependencies = chart.js_dependencies
        else:
            chart_options = chart.get_options(remove_none=False)
            _series = (
                chart_options.get("legend")[0].get("data"),
                chart_options.get("series"),
                chart_options.get("xAxis")[0],
                chart_options.get("yAxis")[0],
                is_add_xaxis,
                is_add_yaxis,
                xaxis_index,
                yaxis_index,
            )
            self._custom(_series)
            self._js_dependencies = merge_js_dependencies(
                self._js_dependencies, chart.js_dependencies)
            return self
Esempio n. 19
0
    def add(
        self,
        chart,
        xaxis_index=0,
        yaxis_index=0,
        is_add_xaxis=False,
        is_add_yaxis=False,
    ):
        """

        :param chart:
            图形实例
        :param xaxis_index:
            x 坐标轴索引,默认为 0
        :param yaxis_index:
            y 坐标轴索引,默认为 0
        :param is_add_xaxis:
            是否新增一个 x 坐标轴,默认为 False
        :param is_add_yaxis:
            是否新增一个 y 坐标轴,默认为 False
        """
        if not self._option:
            self._option = copy.deepcopy(chart.options)
            self._series_id = self._option.get("series")[0].get("seriesId")
            self._js_dependencies = chart.js_dependencies
        else:
            _series = (
                chart.options.get("legend")[0].get("data"),
                chart.options.get("series"),
                chart.options.get("xAxis")[0],
                chart.options.get("yAxis")[0],
                is_add_xaxis,
                is_add_yaxis,
                xaxis_index,
                yaxis_index,
            )
            self.__custom(_series)
            self._js_dependencies = merge_js_dependencies(
                self._js_dependencies, chart.js_dependencies
            )
Esempio n. 20
0
    def add(
        self,
        chart,
        grid_width=None,
        grid_height=None,
        grid_top=None,
        grid_bottom=None,
        grid_left=None,
        grid_right=None,
    ):
        """

        :param chart:
            图形实例
        :param grid_width:
            grid 组件的宽度。默认自适应。
        :param grid_height:
            grid 组件的高度。默认自适应。
        :param grid_top:
            grid 组件离容器顶部的距离。默认为 None, 有'top', 'center',
            'middle'可选,也可以为百分数或者整数
        :param grid_bottom:
            grid 组件离容器底部的距离。默认为 None, 有'top', 'center',
            'middle'可选,也可以为百分数或者整数
        :param grid_left:
            grid 组件离容器左侧的距离。默认为 None, 有'left', 'center',
            'right'可选,也可以为百分数或者整数
        :param grid_right:
            grid 组件离容器右侧的距离。默认为 None, 有'left', 'center',
            'right'可选,也可以为百分数或者整数
        """
        if not self._option:
            self._option = copy.deepcopy(chart.options)
            self._option.update(grid=[])
            self._js_dependencies = chart.js_dependencies

            _grid = grid(
                grid_width,
                grid_height,
                grid_top,
                grid_bottom,
                grid_left,
                grid_right,
            )
            if _grid:
                for _ in range(len(self._option.get("series"))):
                    self._option.get("grid").append(_grid)
        else:
            _series = (
                chart.options.get("series"),
                chart.options.get("xAxis", None),
                chart.options.get("yAxis", None),
                chart.options.get("legend")[0],
                chart.options.get("title")[0],
            )
            (
                _index,
                _index_once,
                _xaxis,
                _yaxis,
                _legend,
                _title,
            ) = self.__custom(_series)
            self._option.get("legend").append(_legend)
            self._option.get("title").append(_title)

            if _xaxis and _yaxis is not None:
                for _x in _xaxis:
                    _x["gridIndex"] = _index - 1
                    self._option.get("xAxis").append(_x)
                for _y in _yaxis:
                    _y["gridIndex"] = _index - 1
                    self._option.get("yAxis").append(_y)

                # series id 是每个图实例的唯一标识
                _flag = self._option.get("series")[0].get("seriesId")
                _series_index = 0
                for s in self._option.get("series"):
                    if _flag == s.get("seriesId"):
                        s.update(
                            xAxisIndex=_series_index, yAxisIndex=_series_index
                        )
                    else:
                        _series_index += 1
                        s.update(
                            xAxisIndex=_series_index, yAxisIndex=_series_index
                        )
                    _flag = s.get("seriesId")

            _grid = grid(
                grid_width,
                grid_height,
                grid_top,
                grid_bottom,
                grid_left,
                grid_right,
            )
            for _ in range(_index_once):
                self._option.get("grid").append(_grid)
            self._js_dependencies = merge_js_dependencies(
                self._js_dependencies, chart.js_dependencies
            )
        return self
Esempio n. 21
0
 def js_dependencies(self):
     return utils.merge_js_dependencies(self._js_dependencies)
Esempio n. 22
0
 def js_dependencies(self):
     # Treat self as a list,not a page
     return utils.merge_js_dependencies(*self)
Esempio n. 23
0
 def js_dependencies(self):
     # Treat self as a list,not a page
     return utils.merge_js_dependencies(*self)
Esempio n. 24
0
    def add(
        self,
        chart,
        grid_width=None,
        grid_height=None,
        grid_top=None,
        grid_bottom=None,
        grid_left=None,
        grid_right=None,
    ):
        """

        :param chart:
            图形实例
        :param grid_width:
            grid 组件的宽度。默认自适应。
        :param grid_height:
            grid 组件的高度。默认自适应。
        :param grid_top:
            grid 组件离容器顶部的距离。默认为 None, 有'top', 'center',
            'middle'可选,也可以为百分数或者整数
        :param grid_bottom:
            grid 组件离容器底部的距离。默认为 None, 有'top', 'center',
            'middle'可选,也可以为百分数或者整数
        :param grid_left:
            grid 组件离容器左侧的距离。默认为 None, 有'left', 'center',
            'right'可选,也可以为百分数或者整数
        :param grid_right:
            grid 组件离容器右侧的距离。默认为 None, 有'left', 'center',
            'right'可选,也可以为百分数或者整数
        """
        if not self._option:
            self._option = copy.deepcopy(chart.options)
            self._option.update(grid=[])
            self._js_dependencies = chart.js_dependencies

            _grid = grid(
                grid_width,
                grid_height,
                grid_top,
                grid_bottom,
                grid_left,
                grid_right,
            )
            if _grid:
                for _ in range(len(self._option.get("series"))):
                    self._option.get("grid").append(_grid)
        else:
            _series = (
                chart.options.get("series"),
                chart.options.get("xAxis", None),
                chart.options.get("yAxis", None),
                chart.options.get("legend")[0],
                chart.options.get("title")[0],
            )
            (
                _index, _index_once, _xaxis, _yaxis, _legend, _title
            ) = self.__custom(
                _series
            )
            self._option.get("legend").append(_legend)
            self._option.get("title").append(_title)

            if _xaxis and _yaxis is not None:
                for _x in _xaxis:
                    _x["gridIndex"] = _index - 1
                    self._option.get("xAxis").append(_x)
                for _y in _yaxis:
                    _y["gridIndex"] = _index - 1
                    self._option.get("yAxis").append(_y)

                # series id 是每个图实例的唯一标识
                _flag = self._option.get("series")[0].get("seriesId")
                _series_index = 0
                for s in self._option.get("series"):
                    if _flag == s.get("seriesId"):
                        s.update(
                            xAxisIndex=_series_index, yAxisIndex=_series_index
                        )
                    else:
                        _series_index += 1
                        s.update(
                            xAxisIndex=_series_index, yAxisIndex=_series_index
                        )
                    _flag = s.get("seriesId")

            _grid = grid(
                grid_width,
                grid_height,
                grid_top,
                grid_bottom,
                grid_left,
                grid_right,
            )
            for _ in range(_index_once):
                self._option.get("grid").append(_grid)
            self._js_dependencies = merge_js_dependencies(
                self._js_dependencies, chart.js_dependencies
            )
Esempio n. 25
0
 def js_dependencies(self):
     return utils.merge_js_dependencies(self._js_dependencies)