欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > asp.net >内容正文

asp.net

asp.net必须要放在form中吗_传闻:已经有人在0.33或0.34集成了Echarts(更新中)

发布时间:2025/3/12 asp.net 37 豆豆
生活随笔 收集整理的这篇文章主要介绍了 asp.net必须要放在form中吗_传闻:已经有人在0.33或0.34集成了Echarts(更新中) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

据说后面会共享完整的步骤,有更详细的信息再更新。


2019-11-04 更新:

搜集到的一些说明(以下引文来自微信群,作者Ayu,侵删。说明为老王所加。):

具体集成无非是仿 官方插件,在对应 index.js 中注册图,编写左测控制面板 js,注册控制面板,npm build 即可

说明:

官方插件,来自以下两个github仓库:

apache-superset/superset-ui-plugins​github.comapache-superset/superset-ui​github.com

控制面板 js 加在这里:superset/assets/src/explore/controlPanels注册控制面板在 superset/assets/src/explore/controlPanels/index.js图表的注册在 superset/assets/src/visualizations/presets/MainPreset.js 对应获取数据则在superset/viz.py中新增一个对应的 Viz 类,注意重写 get_data 和 query_obj 方法即可

说明:还没写过Echarts的后端代码,以下仅为现有图表类型的注释

class TimeTableViz(BaseViz):"""A data table with rich time-series related columns"""viz_type = 'time_table'verbose_name = _('Time Table View')credits = 'a <a href="apache/incubator-superset">Superset</a> original'is_timeseries = Truedef query_obj(self):d = super().query_obj()fd = self.form_dataif not fd.get('metrics'):raise Exception(_('Pick at least one metric'))if fd.get('groupby') and len(fd.get('metrics')) > 1:raise Exception(_("When using 'Group By' you are limited to use a single metric"))return ddef get_data(self, df):fd = self.form_datacolumns = Nonevalues = self.metric_labelsif fd.get('groupby'):values = self.metric_labels[0]columns = fd.get('groupby')pt = df.pivot_table(index=DTTM_ALIAS,columns=columns,values=values,dropna=False,)pt.index = pt.index.map(str)pt = pt.sort_index()return dict(records=pt.to_dict(orient='index'),columns=list(pt.columns),is_group_by=len(fd.get('groupby')) > 0,)

后端的类必须从BaseViz继承而来。

在注册后端图表类型时,要用到BaseViz,只有是BaseViz子类的class,才能把viz_type的值加入到列表:

viz_types = {o.viz_type: o for o in globals().values()if (inspect.isclass(o) andissubclass(o, BaseViz) ando.viz_type not in config.get('VIZ_TYPE_BLACKLIST'))}

query_obj和get_data函数:

这两个函数,从功能上说,比较容易理解:

只有某种viz_type对应的类,才知道如何处理前端传来的参数(form_data),这就是query_obj函数。

才知道如何处理数据库返回的结果,从原始的行列(或者叫矩阵),转换成前端图表控件需要的格式,这就是get_data函数。

放到BaseViz里面就能看到流程了。

query_obj函数:

是为了构造query_obj 对象,这个对象用于控制如何生成sql语句,把前端传过来的参数(form_data)转换成sqla能理解的格式(代码在connectors/sqla/models.py)。

get_data函数:

是在全流程里面起作用的,可以加一个traceback到get_data函数里面,输出堆栈。大致上,是前端调用经过web服务,映射到views/core.py中的函数。

core.py中的Superset::generate_json函数,调用viz的get_data函数。

总结

以上是生活随笔为你收集整理的asp.net必须要放在form中吗_传闻:已经有人在0.33或0.34集成了Echarts(更新中)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。