File tree 2 files changed +96
-19
lines changed
src/components/pivottable/renderer
2 files changed +96
-19
lines changed Original file line number Diff line number Diff line change
1
+ <template >
2
+ <textarea
3
+ :style =" styles"
4
+ readonly
5
+ :value =" textareaValue"
6
+ ></textarea >
7
+ </template >
8
+
9
+ <script setup>
10
+ import { defaultProps , PivotData } from ' @/helper'
11
+ import { computed } from ' vue'
12
+
13
+ const props = defineProps ({
14
+ ... defaultProps
15
+ })
16
+
17
+ const pivotData = computed (() => {
18
+ try {
19
+ return new PivotData (props)
20
+ } catch (err) {
21
+ console .error (err .stack )
22
+ return null
23
+ }
24
+ })
25
+
26
+ const rowKeys = computed (() => pivotData .value ? .getRowKeys () || [])
27
+ const colKeys = computed (() => pivotData .value ? .getColKeys () || [])
28
+
29
+ const styles = {
30
+ width: ' 100%' ,
31
+ height: ` ${ window .innerHeight / 2 } px`
32
+ }
33
+
34
+ const headerRow = computed (() => {
35
+ const header = [... pivotData .value .props .rows ]
36
+
37
+ if (colKeys .value .length === 1 && colKeys .value [0 ].length === 0 ) {
38
+ header .push (props .aggregatorName )
39
+ } else {
40
+ colKeys .value .forEach ((c ) => header .push (c .join (' -' )))
41
+ }
42
+
43
+ return header
44
+ })
45
+
46
+ const result = computed (() => {
47
+ const data = rowKeys .value .reduce ((acc , r ) => {
48
+ const row = [... r]
49
+ colKeys .value .forEach ((c ) =>
50
+ row .push (pivotData .value .getAggregator (r, c).value () || ' ' )
51
+ )
52
+ return [... acc, row]
53
+ }, [])
54
+ return [headerRow .value , ... data]
55
+ })
56
+
57
+ const textareaValue = computed (() =>
58
+ result .value .map ((r ) => r .join (' \t ' )).join (' \n ' )
59
+ )
60
+ < / script>
61
+
62
+ < style lang= " scss" scoped>< / style>
Original file line number Diff line number Diff line change 1
1
import { defineComponent , h } from 'vue'
2
2
import TableRenderer from './TableRenderer.vue'
3
+ import TSVExportRenderers from './TSVExportRenderers.vue'
3
4
import { defaultProps } from '@/helper'
4
5
5
6
export default {
6
7
'Table' : defineComponent ( {
7
8
name : 'vue-table' ,
8
9
setup ( props ) {
9
- return ( ) => h ( TableRenderer , {
10
- ...defaultProps ,
11
- ...props
12
- } )
10
+ return ( ) =>
11
+ h ( TableRenderer , {
12
+ ...defaultProps ,
13
+ ...props
14
+ } )
13
15
}
14
16
} ) ,
15
17
'Table Heatmap' : defineComponent ( {
16
18
name : 'vue-table-heatmap' ,
17
19
setup ( props ) {
18
- return ( ) => h ( TableRenderer , {
19
- ...defaultProps ,
20
- ...props ,
21
- heatmapMode : 'full'
22
- } )
20
+ return ( ) =>
21
+ h ( TableRenderer , {
22
+ ...defaultProps ,
23
+ ...props ,
24
+ heatmapMode : 'full'
25
+ } )
23
26
}
24
27
} ) ,
25
28
'Table Col Heatmap' : defineComponent ( {
26
29
name : 'vue-table-col-heatmap' ,
27
30
setup ( props ) {
28
- return ( ) => h ( TableRenderer , {
29
- ...defaultProps ,
30
- ...props ,
31
- heatmapMode : 'col'
32
- } )
31
+ return ( ) =>
32
+ h ( TableRenderer , {
33
+ ...defaultProps ,
34
+ ...props ,
35
+ heatmapMode : 'col'
36
+ } )
33
37
}
34
38
} ) ,
35
39
'Table Row Heatmap' : defineComponent ( {
36
40
name : 'vue-table-row-heatmap' ,
37
41
setup ( props ) {
38
- return ( ) => h ( TableRenderer , {
39
- ...defaultProps ,
40
- ...props ,
41
- heatmapMode : 'row'
42
- } )
42
+ return ( ) =>
43
+ h ( TableRenderer , {
44
+ ...defaultProps ,
45
+ ...props ,
46
+ heatmapMode : 'row'
47
+ } )
48
+ }
49
+ } ) ,
50
+ 'Export Table TSV' : defineComponent ( {
51
+ name : 'tsv-export-renderers' ,
52
+ setup ( props ) {
53
+ return ( ) =>
54
+ h ( TSVExportRenderers , {
55
+ ...defaultProps ,
56
+ ...props
57
+ } )
43
58
}
44
59
} )
45
60
}
You can’t perform that action at this time.
0 commit comments