v3.9.9.12

- 优化后台数据处理性能
- 优化Jupyter使用体验
- 修复主题tips背景色显示
This commit is contained in:
JohnYan 2021-07-06 17:55:50 +08:00
parent b70fb8395a
commit fec4cda342
25 changed files with 47 additions and 79 deletions

View File

@ -45,21 +45,17 @@
### 简介
- SmartChart基于Echarts/Django的微代码开发平台,适用于任何WEB项目
- 简单, 敏捷, 高效,通用化, 高度可定制化, 让你的项目瞬间档次提升, 比拖拽开发更方便
- 完全真正打通前后端, 图形数据联动, 筛选开发毫无压力, 支持几乎常见的所有数据库
- 完全真正打通前后端, 支持图形数据联动,筛选,钻取, 支持几乎常见的所有数据库
- 积木式的开发模式, 开箱即用, 安装简单, 依赖少, 适应各种平台
- 我们让简单和通用化不再是个矛盾体, Like it Star it
- 高度可定制化, 注意是高度可定制化!!
![舆情分析](https://images.gitee.com/uploads/images/2019/0614/130021_887dc34c_2327318.png "舆情分析.png")
![smartchart](http://smartchart.cn/media/editor/qyj01show_20210306112736437498.png)
![smartchartvoice](http://smartchart.cn/media/editor/smartvoice_20201224085323156045.png)
### 样列
- [SmartChart大屏样列-智慧城市_大数据大屏](https://www.smartchart.cn/echart/?type=智慧城市_大数据大屏 "大屏样列-智慧城市_大数据大屏")
- [SmartChart集成DataV](https://www.smartchart.cn/echart/?type=Smartchart_DataV "集成DATAV")
- [Smartchart图形数据联动](https://www.smartchart.cn/echart/?type=评论分析 "图形数据联动")
- [Smartchart无关重要的视屏](https://www.ixigua.com/6910413586208653837?id=6910161770221044237 "smartchart")
- [Smartchart与Jupyter](https://www.ixigua.com/6910413586208653837?id=6912682016601440772 "smartchart")
### 快速开始
#### 安装Python环境
@ -90,12 +86,8 @@
```
**管理员帐号密码: admin/admin, 请及时更改密码**
**开发前请 观看视屏说明!!! 重要!! 重要!!**
- [Smartchart数据库与数据集SQL](https://www.ixigua.com/6910413586208653837?id=6902584882958959116 "SQL")
- [Smartchart页面快速布局](https://www.ixigua.com/6910413586208653837?id=6907784122065191438 "布局")
- [Smartchart数据库与图形的对话](https://www.ixigua.com/6910413586208653837?id=6910373199603565063 "布局")
- [SmartChart大屏模板转化](https://www.ixigua.com/6910825442245083660/ "模板")
- [SmartChart最新开发界面](https://www.ixigua.com/6936381900768412198/ "开发界面")
[SmartChart入门文档入口](https://gitee.com/smartchart/smartchart/wikis/pages "SmartChart入门")
-------------------------------------------------------------------------------
@ -104,45 +96,7 @@
**仅仅只有两个命令,get and set, 简化数据分析工作**
![](https://www.smartchart.cn/media/editor/WX20210103-181343@2x_20210103181856302575.png)
- [Smartchart与Pandas](https://www.ixigua.com/6910413586208653837?id=6918162479646245389 "smartchart")
- [Smartchart与Jupyter](https://www.ixigua.com/6910413586208653837?id=6917989046132310535 "smartchart")
- [SmartChart大屏新思路](https://www.ixigua.com/6921133676189352456 "smartchart")
- [SmartChart的Python连接器](https://www.ixigua.com/6944159294069670437 "smartchart")
```python
from smart_chart.common.tools import Smart
mysmart = Smart()
dataset = [['A','B','C'],[12,34,23],[22,33,37]]
# 可从数据库中获取数据, id 为smarchart中的数据集id
a=mysmart.get(100)
#把数据写入数据集并显示图形
mysmart.set(1,dataset,embed=1,height=200,editor='')
dataset.append([35,44,67]) #追加数据
#随意命名数据集, 不一定需要smartchart中数据集已有的
mysmart.set('DD', dataset)
mysmart.set('barxxx', dataset) #显示柱形数, 另外还有linexxx, piexxx
####### dateset也可以直接是pandas的df ########
import pandas as pd
# 从数据集1中获取数据直接转成pandas df
df = pddf(1)
# 读取excel数据
df = pd.read_excel('manual_smartdemo.xlsx', 'sheet1')
#sample = df.sample(10)
#mysmart.set('df0', sample)
df1 = df.groupby('province').agg({'qty':'sum'}).reset_index()
mysmart.set('pie', df1)
####### 你也可以全局初始化设定 #######
mychart = Smart(width=xx, height=xx, embed=1, editor='')
# width, height指定图形嵌入显示的宽高
# embed 默认不嵌入, embed=1 嵌入, embed='' 不嵌入
# editor 是否显示图形菜单
# push 是否持久化数据集 push=1, 无则新建有则保存数据
# url 报表访问的url,默认是localhost
```
-------------------------------------------------------------------------------
### 应用场景三: 外部系统对接方式
```python
@ -187,7 +141,7 @@ pip install smartchart
- ....
### 联系我们与帮助
**安装及使用问题,可加以下微信号拉你入群**
**安装及使用问题,可加以下微信号**
<img src="https://www.smartchart.cn/media/editor/QQ20201201-140615@2x_20201201140657981573.png" alt="smartchart" height="150" />
@ -231,6 +185,7 @@ v3.9.9.1 开发界面美化
v3.9.9.5 开发界面优化,fix定时刷新BUG,新增批量数据集删除
v3.9.9.7 增加python连接器,数据池,自定义主模板,优化开发界面
v3.9.9.10 DIV设定中可以写css,新增内置动态表格,优化布局支持,增加config文件
v3.9.9.12 优化后台数据处理性能,Jupyter使用体验
```
-------------------------------------------------------------------------------
@ -246,4 +201,17 @@ v3.9.9.10 DIV设定中可以写css,新增内置动态表格,优化布局支持
- 但如果要使用好smart chart, 建意了解下javascript, H5, Echarts这些前端知识, 可以让你的应用更加得心应手,创作更炫的效果
- 如果你需要更进一步订制你的数据, 你需要了解下SQL的使用,本项目高级应用语言都是通用的技能, 象js, h5,sql 学习成本低
- [SmartChart入门文档入口, 以视屏为准](https://www.smartchart.cn/blog/article/2019/6/1/3.html "SmartChart入门")
- [SmartChart入门文档入口](https://gitee.com/smartchart/smartchart/wikis/pages "SmartChart入门")
**参考视屏,建意观看,有些可能有些久,可进入后关注作者头条号, 查看最新视屏, 请对比最新文档**
- [Smartchart数据库与数据集SQL](https://www.ixigua.com/6910413586208653837?id=6902584882958959116 "SQL")
- [Smartchart页面快速布局](https://www.ixigua.com/6910413586208653837?id=6907784122065191438 "布局")
- [Smartchart数据库与图形的对话](https://www.ixigua.com/6910413586208653837?id=6910373199603565063 "布局")
- [SmartChart大屏模板转化](https://www.ixigua.com/6910825442245083660/ "模板")
- [SmartChart最新开发界面](https://www.ixigua.com/6936381900768412198/ "开发界面")
**Jupyter相关**
- [Smartchart与Pandas](https://www.ixigua.com/6910413586208653837?id=6918162479646245389 "smartchart")
- [Smartchart与Jupyter](https://www.ixigua.com/6910413586208653837?id=6917989046132310535 "smartchart")
- [SmartChart大屏新思路](https://www.ixigua.com/6921133676189352456 "smartchart")
- [SmartChart的Python连接器](https://www.ixigua.com/6944159294069670437 "smartchart")

View File

@ -78,9 +78,9 @@ var JavaScriptHighlightRules = function(options) {
"storage.type":
"const|let|var|function",
"constant.language":
"null|Infinity|NaN|undefined|__dataset__|__name__|vapp",
"null|Infinity|NaN|undefined|__dataset__|__name__|vapp|filter_param",
"support.function":
"alert|ds_transform|ds_pivot|ds_split|ds_rowname|ds_remove_column|ds_createMap_all|ds_createMap|ds_fontSize|ds_toThousands|ds_getUpdown|ds_distinct|ds_crossjoin|ds_leftjoin|ds_fulljoin|ds_union|startSelectAnimate|ds_round|ds_param",
"alert|ds_transform|ds_pivot|ds_split|ds_rowname|ds_remove_column|ds_createMap_all|ds_createMap|ds_fontSize|ds_toThousands|ds_getUpdown|ds_distinct|ds_crossjoin|ds_leftjoin|ds_fulljoin|ds_union|startSelectAnimate|ds_round|ds_param|ds_refresh",
"constant.language.boolean": "true|false"
}, "identifier");
var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void";

View File

@ -9,9 +9,9 @@ var SqlHighlightRules = function() {
var keywords = (
"select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|" +
"when|else|end|type|left|right|join|on|outer|desc|asc|union|create|table|primary|key|if|" +
"foreign|not|references|default|null|inner|cross|natural|database|drop|grant|" +
"refresh|overwrite|load|upset|partitioned|partition|rownum|inpath|ds_distinct|ds_crossjoin|ds_fulljoin|ds_union|"+
"df|p|axis"
"foreign|not|references|default|null|inner|cross|natural|database|drop|grant|import|" +
"refresh|overwrite|load|upset|partitioned|partition|rownum|inpath|"+
"ds|axis"
);
var builtinConstants = (
@ -21,7 +21,7 @@ var SqlHighlightRules = function() {
var builtinFunctions = (
"avg|count|first|last|max|min|sum|ucase|lcase|mid|len|round|rank|now|format|to_char|decode|trunc|" +
"coalesce|ifnull|isnull|nvl|from_unixtime|date_format|current_timestamp|date_add|date_sub|"+
"pddf|pdcsv|append|concat|reset_index|groupby||loc|iloc|apply|fillna|drop_duplicates|append|merge|pivot|pivot_table"
"ds_get|ds_sql|ds_df|ds_list|read_csv|agg|read_excel|append|concat|reset_index|groupby|loc|iloc|apply|fillna|drop_duplicates|append|merge|pivot|pivot_table"
);
var dataTypes = (

View File

View File

@ -53,7 +53,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -53,7 +53,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -53,7 +53,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -53,7 +53,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -53,7 +53,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -55,7 +55,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -53,7 +53,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -53,7 +53,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -53,7 +53,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -51,7 +51,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -53,7 +53,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -49,7 +49,7 @@
},
tooltip: {
backgroundColor: 'rgba(50,50,50,0.5)',
// backgroundColor: 'rgba(50,50,50,0.5)',
axisPointer : {
type : 'line',
lineStyle : {

View File

@ -53,7 +53,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -53,7 +53,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -53,7 +53,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -51,7 +51,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -53,7 +53,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -56,7 +56,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -53,7 +53,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -55,7 +55,7 @@
},
tooltip: {
backgroundColor: 'rgba(0,0,0,0.5)',
// backgroundColor: 'rgba(0,0,0,0.5)',
axisPointer: {
// Axis indicator, coordinate trigger effective
type: 'line', // The default is a straight line 'line' | 'shadow'

View File

@ -1 +1 @@
eval(function(p,a,c,k,e,r){e=function(c){return(c<62?'':e(parseInt(c/62)))+((c=c%62)>35?String.fromCharCode(c+29):c.toString(36))};if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'([4-9e-hln-rt-xzA-Z]|1\\w)'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('5 1k(f,x){4 i=f.8;1l(i--){7(f[i]===x){6 B}}6 J}5 ds_transform(e){4 t=[];g(4 i=0;i<e[1].8;i++){t[i]=[]}g(i=0;i<e.8;i++){g(4 j=0;j<e[i].8;j++){t[j][i]=e[i][j]}}6 t}5 ds_split(9,18=\',\',19=[]){4 e=[];7(19){e.h(19.r(9[0].u(1)))}F{e.h(9[0][0].1a(18).r(9[0].u(1)))}g(4 i=1;i<9.8;i++){e.h(9[i][0].1a(18).r(9[i].u(1)))}6 e}5 ds_rowname(e,1b=1){4 t=[];g(4 i=1b;i<e.8;i++){t[i-1b]=e[i][0]}6 t}5 ds_remove_column(e,1m=[0]){4 t=[];g(4 i=0;i<e.8;i++){t[i]=[]}g(i=0;i<e.8;i++){4 k=0;g(4 j=0;j<e[i].8;j++){7(1k(1m,j)===J){t[i][k]=e[i][j];k=k+1}}}6 t}5 ds_createMap(9){4 X={};g(4 i=0;i<9.8;i++){4 Y=[];g(4 j=1;j<9[i].8;j++){Y.h(9[i][j])}7(9[i][0].8>0){X[9[i][0]]=Y}F{X[\'0\']=Y}}6 X}5 ds_createMap_all(9){4 e=[];4 Z={};g(4 i=1;i<9.8;i++){Z={};g(4 j=0;j<9[i].8;j++){Z[9[0][j]]=9[i][j]}e.h(Z)}6 e}5 ds_fontSize(1n){4 docEl=U.1o;4 V=window.innerWidth||U.1o.V||U.W.V;7(!V)6;4 1p=100*(V/1920);6 1n*1p}5 addWaterMarker(10){4 z=U.createElement(\'canvas\');4 W=U.W;W.appendChild(z);z.1q=400;z.1r=200;z.K.display=\'none\';4 G=z.getContext(\'2d\');G.rotate(-20*1s.PI/180);G.font="16px Microsoft JhengHei";G.fillStyle="rgba(17, 17, 17, 0.50)";G.textAlign=\'left\';G.textBaseline=\'Middle\';G.fillText(10,z.1q/3,z.1r/2);W.K.backgroundImage="url("+z.toDataURL("image/png")+")"}5 ds_getUpdown(H,l=0){4 11="1t";4 12="1u";7(l>0){11="1u";12="1t"}7(H>0){6\'<C K="13:\'+11+\'">\'+H+\'<C K="13:\'+11+\'" 1v="14 14-1w-up"></C></C>\'}F{6\'<C K="13:\'+12+\'">\'+H+\'<C K="13:\'+12+\'" 1v="14 14-1w-down"></C></C>\'}}5 ds_toThousands(l){l=(l||0).toString(),o=\'\';4 v=l<0?"-":"";4 9=(1s.abs(l)+"").1a(\'\\.\');l=9[0];1l(l.8>3){o=\',\'+l.u(-3)+o;l=l.u(0,l.8-3)}7(l){o=l+o}7(9.8===1){6 v+o}6 v+o+\'.\'+9[1]}5 ds_distinct(a,b=[]){4 f=a.r(b);4 o=[];4 x={};g(4 i=0;i<f.8;i++){7(!x[f[i]]){o.h(f[i]);x[f[i]]=1}}6 o}5 ds_pivot(f){4 L=[];4 M=[];4 1c={};4 1d={};4 x={};4 o=[];4 N=[f[0][0]];4 i=0;g(i=1;i<f.8;i++){7(!1c[f[i][0]]){L.h(f[i][0]);1c[f[i][0]]=1}7(!1d[f[i][1]]){M.h(f[i][1]);1d[f[i][1]]=1}x[f[i][0]+f[i][1]]=f[i][2]}o.h(N.r(M));g(i=0;i<L.8;i++){N=[L[i]];g(4 j=0;j<M.8;j++){7(!x[L[i]+M[j]]){N.h(0)}F{N.h(x[L[i]+M[j]])}}o.h(N)}6 o}5 1e(a,b,D=B,A=1){4 c=[];4 O=[];4 v=J;4 i=1;g(i=1;i<b[0].8;i++){O.h(0)}7(D){c.h(a[0].r(b[0].u(1)));a=a.u(1);b=b.u(1)}a.1f(5(15){v=B;b.1f(5(I){7(15[0]===I[0]){c.h(15.r(I.u(1)));v=J}});7(v&&A){c.h(15.r(O))}});7(A===2){O=[];g(i=1;i<a[0].8;i++){O.h(0)}b.1f(5(I){v=B;g(i=0;i<a.8;i++){7(a[i][0]===I[0]){v=J;break}}7(v){c.h([I[0]].r(O).r(I.u(1)))}})}6 c}5 ds_crossjoin(a,b,D=B){6 1e(a,b,D,0)}5 ds_fulljoin(a,b,D=B){6 1e(a,b,D,2)}5 ds_union(a,b,D=B){4 c=[];7(D){c=a.r(b.u(1))}F{c=a.r(b)}6 c}5 1x(H,1y){7(!H){6 1y}6 H}5 ds_round(l,1z=2){6 l.toFixed(1z)}5 ds_param(1A){7("undefined"!=typeof 1B){6(1x(1B[1A],\'\'))}F{6\'\'}}5 Decimal(10){6 parseFloat(10)}5 1C(){1D.1E=5(y,m,d,P,Q,s,R){P=P||0;Q=Q||0;s=s||0;R=R||0;6\'\'+y+\'-\'+m+\'-\'+d};1D.date=5(y,m,d,P,Q,s,R){P=P||0;Q=Q||0;s=s||0;R=R||0;6\'\'+y+\'-\'+m+\'-\'+d}}16 1E=new 1C;16 None=null;16 False=J;16 True=B;5 startSelectAnimate(w,1F,1G=1000,1H=1){4 S=-1;setInterval(5(){w.T({A:\'1g\',q:0,n:S});S=(S+1)%1F;w.T({A:\'1h\',q:0,n:S});7(1H){w.T({A:\'showTip\',q:0,n:S})}},1G)}5 dismissChangeRelatedObjectPopup(1I,objId,newRepr,1J){1I.close();console.log(1J);location.reload()}5 clickaction(w,p=\'\'){4 1K=`1L q${p}=-1;1L n${p}=-1;w.on(\'click\',5(E){w.T({A:\'1g\',q:q${p},n:n${p}});4 1i=\'1h\';7(q${p}===E.1j&&n${p}===E.n){q${p}=-1;n${p}=-1;1i=\'1g\'}F{q${p}=E.1j;n${p}=E.n}w.T({A:1i,q:E.1j,n:E.n})});w.on(\'mouseout\',5(E){7(q${p}>-1){w.T({A:"1h",q:q${p},n:n${p}})}});`;eval(1K)}',[],110,'||||let|function|return|if|length|data|||||dataset|arr|for|push||||num||dataIndex|result|seq|seriesIndex|concat||seted|slice|flag|myChart|obj||can|type|true|span|withhead|params|else|cans|param|val2|false|style|c1|c2|tmp|blank|hh|mm|ss|currentIndex|dispatchAction|document|clientWidth|body|map|t1|tmpmap|str|colorUp|colorDown|color|glyphicon|val|const||sep|head_add|split|start_row|obj1|obj2|ds_leftjoin|forEach|downplay|highlight|acttype|componentIndex|lst_contains|while|remove_list|res|documentElement|fontSize|width|height|Math|green|red|class|arrow|getUndefined|defaultValue|qty|name|filter_param|Mytime|this|datetime|dataLen|interval|showtip|win|newId|actionstr|var'.split('|'),0,{}))
eval(function(p,a,c,k,e,r){e=function(c){return(c<62?'':e(parseInt(c/62)))+((c=c%62)>35?String.fromCharCode(c+29):c.toString(36))};if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'([4-9e-hln-rt-xzA-Z]|1\\w)'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('5 1l(f,z){4 i=f.8;1m(i--){7(f[i]===z){6 C}}6 J}5 ds_transform(e){4 u=[];g(4 i=0;i<e[1].8;i++){u[i]=[]}g(i=0;i<e.8;i++){g(4 j=0;j<e[i].8;j++){u[j][i]=e[i][j]}}6 u}5 ds_split(9,19=\',\',1a=[]){4 e=[];7(1a){e.h(1a.t(9[0].v(1)))}G{e.h(9[0][0].1b(19).t(9[0].v(1)))}g(4 i=1;i<9.8;i++){e.h(9[i][0].1b(19).t(9[i].v(1)))}6 e}5 ds_rowname(e,1c=1){4 u=[];g(4 i=1c;i<e.8;i++){u[i-1c]=e[i][0]}6 u}5 ds_remove_column(e,1n=[0]){4 u=[];g(4 i=0;i<e.8;i++){u[i]=[]}g(i=0;i<e.8;i++){4 k=0;g(4 j=0;j<e[i].8;j++){7(1l(1n,j)===J){u[i][k]=e[i][j];k=k+1}}}6 u}5 ds_createMap(9){4 X={};g(4 i=0;i<9.8;i++){4 Y=[];g(4 j=1;j<9[i].8;j++){Y.h(9[i][j])}7(9[i][0].8>0){X[9[i][0]]=Y}G{X[\'0\']=Y}}6 X}5 ds_createMap_all(9){4 e=[];4 Z={};g(4 i=1;i<9.8;i++){Z={};g(4 j=0;j<9[i].8;j++){Z[9[0][j]]=9[i][j]}e.h(Z)}6 e}5 ds_fontSize(1o){4 docEl=U.1p;4 V=window.innerWidth||U.1p.V||U.W.V;7(!V)6;4 1q=100*(V/1920);6 1o*1q}5 addWaterMarker(10){4 A=U.createElement(\'canvas\');4 W=U.W;W.appendChild(A);A.1r=400;A.1s=200;A.K.display=\'none\';4 H=A.getContext(\'2d\');H.rotate(-20*1t.PI/180);H.font="16px Microsoft JhengHei";H.fillStyle="rgba(17, 17, 17, 0.50)";H.textAlign=\'left\';H.textBaseline=\'Middle\';H.fillText(10,A.1r/3,A.1s/2);W.K.backgroundImage="url("+A.toDataURL("image/png")+")"}5 ds_getUpdown(q,l=0){4 11="1u";4 12="1v";7(l>0){11="1v";12="1u"}7(q>0){6\'<D K="13:\'+11+\'">\'+q+\'<D K="13:\'+11+\'" 1w="14 14-1x-up"></D></D>\'}G{6\'<D K="13:\'+12+\'">\'+q+\'<D K="13:\'+12+\'" 1w="14 14-1x-down"></D></D>\'}}5 ds_toThousands(l){l=(l||0).toString(),o=\'\';4 w=l<0?"-":"";4 9=(1t.abs(l)+"").1b(\'\\.\');l=9[0];1m(l.8>3){o=\',\'+l.v(-3)+o;l=l.v(0,l.8-3)}7(l){o=l+o}7(9.8===1){6 w+o}6 w+o+\'.\'+9[1]}5 ds_distinct(a,b=[]){4 f=a.t(b);4 o=[];4 z={};g(4 i=0;i<f.8;i++){7(!z[f[i]]){o.h(f[i]);z[f[i]]=1}}6 o}5 ds_pivot(f){4 L=[];4 M=[];4 1d={};4 1e={};4 z={};4 o=[];4 N=[f[0][0]];4 i=0;g(i=1;i<f.8;i++){7(!1d[f[i][0]]){L.h(f[i][0]);1d[f[i][0]]=1}7(!1e[f[i][1]]){M.h(f[i][1]);1e[f[i][1]]=1}z[f[i][0]+f[i][1]]=f[i][2]}o.h(N.t(M));g(i=0;i<L.8;i++){N=[L[i]];g(4 j=0;j<M.8;j++){7(!z[L[i]+M[j]]){N.h(0)}G{N.h(z[L[i]+M[j]])}}o.h(N)}6 o}5 1f(a,b,E=C,B=1){4 c=[];4 O=[];4 w=J;4 i=1;g(i=1;i<b[0].8;i++){O.h(0)}7(E){c.h(a[0].t(b[0].v(1)));a=a.v(1);b=b.v(1)}a.1g(5(15){w=C;b.1g(5(I){7(15[0]===I[0]){c.h(15.t(I.v(1)));w=J}});7(w&&B){c.h(15.t(O))}});7(B===2){O=[];g(i=1;i<a[0].8;i++){O.h(0)}b.1g(5(I){w=C;g(i=0;i<a.8;i++){7(a[i][0]===I[0]){w=J;break}}7(w){c.h([I[0]].t(O).t(I.v(1)))}})}6 c}5 ds_crossjoin(a,b,E=C){6 1f(a,b,E,0)}5 ds_fulljoin(a,b,E=C){6 1f(a,b,E,2)}5 ds_union(a,b,E=C){4 c=[];7(E){c=a.t(b.v(1))}G{c=a.t(b)}6 c}5 1y(q,1z){7(!q){6 1z}6 q}5 ds_round(l,1A=2){6 l.toFixed(1A)}5 ds_param(1B){7("1C"!=1D 16){6(1y(16[1B],\'\'))}G{6\'\'}}5 Decimal(10){6 parseFloat(10)}5 1E(){1F.1G=5(y,m,d,P,Q,s,R){P=P||0;Q=Q||0;s=s||0;R=R||0;6\'\'+y+\'-\'+m+\'-\'+d};1F.date=5(y,m,d,P,Q,s,R){P=P||0;Q=Q||0;s=s||0;R=R||0;6\'\'+y+\'-\'+m+\'-\'+d}}18 1G=new 1E;18 None=null;18 False=J;18 True=C;5 startSelectAnimate(x,1H,1I=1000,1J=1){4 S=-1;setInterval(5(){x.T({B:\'1h\',r:0,n:S});S=(S+1)%1H;x.T({B:\'1i\',r:0,n:S});7(1J){x.T({B:\'showTip\',r:0,n:S})}},1I)}5 dismissChangeRelatedObjectPopup(1K,objId,newRepr,1L){1K.close();console.log(1L);location.reload()}5 clickaction(x,p=\'\'){4 1M=`1N r${p}=-1;1N n${p}=-1;x.on(\'click\',5(F){x.T({B:\'1h\',r:r${p},n:n${p}});4 1j=\'1i\';7(r${p}===F.1k&&n${p}===F.n){r${p}=-1;n${p}=-1;1j=\'1h\'}G{r${p}=F.1k;n${p}=F.n}x.T({B:1j,r:F.1k,n:F.n})});x.on(\'mouseout\',5(F){7(r${p}>-1){x.T({B:"1i",r:r${p},n:n${p}})}});`;1P(1M)}5 ds_refresh(1Q,q){7("1C"!=1D 16){q=q||16}4 1R=\'&q=\'+JSON.stringify(q);1P(`refresh_ds_${1Q}(q=\\`${1R}\\`)`)}',[],116,'||||let|function|return|if|length|data|||||dataset|arr|for|push||||num||dataIndex|result|seq|param|seriesIndex||concat|seted|slice|flag|myChart||obj|can|type|true|span|withhead|params|else|cans|val2|false|style|c1|c2|tmp|blank|hh|mm|ss|currentIndex|dispatchAction|document|clientWidth|body|map|t1|tmpmap|str|colorUp|colorDown|color|glyphicon|val|filter_param||const|sep|head_add|split|start_row|obj1|obj2|ds_leftjoin|forEach|downplay|highlight|acttype|componentIndex|lst_contains|while|remove_list|res|documentElement|fontSize|width|height|Math|green|red|class|arrow|getUndefined|defaultValue|qty|name|undefined|typeof|Mytime|this|datetime|dataLen|interval|showtip|win|newId|actionstr|var||eval|ds_id|myparam'.split('|'),0,{}))