Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_22812535
incubator-superset
提交
f039e17c
I
incubator-superset
项目概览
qq_22812535
/
incubator-superset
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
incubator-superset
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
f039e17c
编写于
8月 12, 2019
作者:
E
Erik Ritter
提交者:
Krist Wongsuphasawat
8月 12, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[SQL Lab] Improve perf for filterable table rendering (#8011)
上级
2476814a
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
30 addition
and
20 deletion
+30
-20
superset/assets/package-lock.json
superset/assets/package-lock.json
+3
-3
superset/assets/package.json
superset/assets/package.json
+1
-1
superset/assets/src/components/FilterableTable/FilterableTable.jsx
...assets/src/components/FilterableTable/FilterableTable.jsx
+22
-16
superset/assets/src/components/FilterableTable/FilterableTableStyles.css
.../src/components/FilterableTable/FilterableTableStyles.css
+4
-0
未找到文件。
superset/assets/package-lock.json
浏览文件 @
f039e17c
...
...
@@ -2616,9 +2616,9 @@
}
},
"@superset-ui/dimension": {
"version": "0.11.1
0
",
"resolved": "https://registry.npmjs.org/@superset-ui/dimension/-/dimension-0.11.1
0
.tgz",
"integrity": "sha512-
gOP32Ibf0FwElD8ImDbfUkw0e+Sw9x0cP2ZXlgp2n00360inq8XC4Bq62t1B6oFrMRRoeCDGzYb5pe6QrIPvSg
=="
"version": "0.11.1
5
",
"resolved": "https://registry.npmjs.org/@superset-ui/dimension/-/dimension-0.11.1
5
.tgz",
"integrity": "sha512-
VpEggw1taDSNOfYGlh1HovCDRdkSvfG5UMe40j5iqOLcxqCfXAUbmMc8Z9ganZsoQMTA1F9H31kCdSsc7lUfMw
=="
},
"@superset-ui/legacy-plugin-chart-calendar": {
"version": "0.10.11",
...
...
superset/assets/package.json
浏览文件 @
f039e17c
...
...
@@ -51,7 +51,7 @@
"@superset-ui/color"
:
"^0.11.9"
,
"@superset-ui/connection"
:
"^0.11.14"
,
"@superset-ui/core"
:
"^0.11.10"
,
"@superset-ui/dimension"
:
"^0.11.1
0
"
,
"@superset-ui/dimension"
:
"^0.11.1
5
"
,
"@superset-ui/legacy-plugin-chart-calendar"
:
"^0.10.11"
,
"@superset-ui/legacy-plugin-chart-chord"
:
"^0.10.11"
,
"@superset-ui/legacy-plugin-chart-country-map"
:
"^0.10.11"
,
...
...
superset/assets/src/components/FilterableTable/FilterableTable.jsx
浏览文件 @
f039e17c
...
...
@@ -29,7 +29,7 @@ import {
SortIndicator
,
Table
,
}
from
'
react-virtualized
'
;
import
{
get
TextDimension
}
from
'
@superset-ui/dimension
'
;
import
{
get
MultipleTextDimensions
}
from
'
@superset-ui/dimension
'
;
import
{
t
}
from
'
@superset-ui/translation
'
;
import
Button
from
'
../Button
'
;
...
...
@@ -37,10 +37,6 @@ import CopyToClipboard from '../CopyToClipboard';
import
ModalTrigger
from
'
../ModalTrigger
'
;
import
TooltipWrapper
from
'
../TooltipWrapper
'
;
function
getTextWidth
(
text
,
font
=
'
12px Roboto
'
)
{
return
getTextDimension
({
text
,
style
:
{
font
}
}).
width
;
}
function
safeJsonObjectParse
(
data
)
{
// First perform a cheap proxy to avoid calling JSON.parse on data that is clearly not a
// JSON object or array
...
...
@@ -159,17 +155,27 @@ export default class FilterableTable extends PureComponent {
getWidthsForColumns
()
{
const
PADDING
=
40
;
// accounts for cell padding and width of sorting icon
const
widthsByColumnKey
=
{};
this
.
props
.
orderedColumnKeys
.
forEach
((
key
)
=>
{
const
colWidths
=
this
.
list
// get width for each value for a key
.
map
(
d
=>
getTextWidth
(
this
.
getCellContent
({
cellData
:
d
[
key
],
columnKey
:
key
}))
+
PADDING
,
)
// add width of column key to end of list
.
push
(
getTextWidth
(
key
)
+
PADDING
);
// set max width as value for key
widthsByColumnKey
[
key
]
=
Math
.
max
(...
colWidths
);
const
cellContent
=
[].
concat
(...
this
.
props
.
orderedColumnKeys
.
map
(
key
=>
this
.
list
.
map
(
data
=>
this
.
getCellContent
({
cellData
:
data
[
key
],
columnKey
:
key
}))
.
push
(
key
)
.
toJS
(),
));
const
colWidths
=
getMultipleTextDimensions
(
{
className
:
'
cell-text-for-measuring
'
,
texts
:
cellContent
,
},
).
map
(
dimension
=>
dimension
.
width
);
this
.
props
.
orderedColumnKeys
.
forEach
((
key
,
index
)
=>
{
widthsByColumnKey
[
key
]
=
Math
.
max
(...
colWidths
.
slice
(
index
*
(
this
.
list
.
size
+
1
),
(
index
+
1
)
*
(
this
.
list
.
size
+
1
),
))
+
PADDING
;
});
return
widthsByColumnKey
;
}
...
...
@@ -411,7 +417,7 @@ export default class FilterableTable extends PureComponent {
// sort list
if
(
sortBy
)
{
sortedAndFilteredList
=
sortedAndFilteredList
.
sort
(
this
.
sortResults
(
sortBy
,
sortDirection
===
SortDirection
.
DESC
));
.
sort
(
this
.
sortResults
(
sortBy
,
sortDirection
===
SortDirection
.
DESC
));
}
let
{
height
}
=
this
.
props
;
...
...
superset/assets/src/components/FilterableTable/FilterableTableStyles.css
浏览文件 @
f039e17c
...
...
@@ -88,3 +88,7 @@
white-space
:
nowrap
;
color
:
#aaa
;
}
.cell-text-for-measuring
{
font-family
:
Helvetica
,
Arial
,
sans-serif
;
font-size
:
12px
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录