1
- import DrillDown from '../src/DrillDown' ;
1
+ "use strict" ;
2
2
3
- module . exports = DrillDown ;
3
+ Object . defineProperty ( exports , "__esModule" , {
4
+ value : true
5
+ } ) ;
6
+ exports . default = void 0 ;
7
+
8
+ var _react = _interopRequireDefault ( require ( "react" ) ) ;
9
+
10
+ var _propTypes = _interopRequireDefault ( require ( "prop-types" ) ) ;
11
+
12
+ var _ReactFC = _interopRequireDefault ( require ( "../lib/ReactFC" ) ) ;
13
+
14
+ function _interopRequireDefault ( obj ) { return obj && obj . __esModule ? obj : { default : obj } ; }
15
+
16
+ function _extends ( ) { _extends = Object . assign || function ( target ) { for ( var i = 1 ; i < arguments . length ; i ++ ) { var source = arguments [ i ] ; for ( var key in source ) { if ( Object . prototype . hasOwnProperty . call ( source , key ) ) { target [ key ] = source [ key ] ; } } } return target ; } ; return _extends . apply ( this , arguments ) ; }
17
+
18
+ function _typeof ( obj ) { if ( typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ) { _typeof = function _typeof ( obj ) { return typeof obj ; } ; } else { _typeof = function _typeof ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ; } return _typeof ( obj ) ; }
19
+
20
+ function _defineProperty ( obj , key , value ) { if ( key in obj ) { Object . defineProperty ( obj , key , { value : value , enumerable : true , configurable : true , writable : true } ) ; } else { obj [ key ] = value ; } return obj ; }
21
+
22
+ function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _nonIterableRest ( ) ; }
23
+
24
+ function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; }
25
+
26
+ function _iterableToArrayLimit ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _n = ( _s = _i . next ( ) ) . done ) ; _n = true ) { _arr . push ( _s . value ) ; if ( i && _arr . length === i ) break ; } } catch ( err ) { _d = true ; _e = err ; } finally { try { if ( ! _n && _i [ "return" ] != null ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; }
27
+
28
+ function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
29
+
30
+ function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
31
+
32
+ function _possibleConstructorReturn ( self , call ) { if ( call && ( _typeof ( call ) === "object" || typeof call === "function" ) ) { return call ; } return _assertThisInitialized ( self ) ; }
33
+
34
+ function _getPrototypeOf ( o ) { _getPrototypeOf = Object . setPrototypeOf ? Object . getPrototypeOf : function _getPrototypeOf ( o ) { return o . __proto__ || Object . getPrototypeOf ( o ) ; } ; return _getPrototypeOf ( o ) ; }
35
+
36
+ function _defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } }
37
+
38
+ function _createClass ( Constructor , protoProps , staticProps ) { if ( protoProps ) _defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) _defineProperties ( Constructor , staticProps ) ; return Constructor ; }
39
+
40
+ function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function" ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , writable : true , configurable : true } } ) ; if ( superClass ) _setPrototypeOf ( subClass , superClass ) ; }
41
+
42
+ function _setPrototypeOf ( o , p ) { _setPrototypeOf = Object . setPrototypeOf || function _setPrototypeOf ( o , p ) { o . __proto__ = p ; return o ; } ; return _setPrototypeOf ( o , p ) ; }
43
+
44
+ function _assertThisInitialized ( self ) { if ( self === void 0 ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return self ; }
45
+
46
+ var DrillDown =
47
+ /*#__PURE__*/
48
+ function ( _React$Component ) {
49
+ _inherits ( DrillDown , _React$Component ) ;
50
+
51
+ _createClass ( DrillDown , null , [ {
52
+ key : "fcRoot" ,
53
+ // Resolve FusionCharts
54
+ value : function fcRoot ( core ) {
55
+ for ( var _len = arguments . length , modules = new Array ( _len > 1 ? _len - 1 : 0 ) , _key = 1 ; _key < _len ; _key ++ ) {
56
+ modules [ _key - 1 ] = arguments [ _key ] ;
57
+ }
58
+
59
+ _ReactFC . default . fcRoot . apply ( _ReactFC . default , [ core ] . concat ( modules ) ) ;
60
+ }
61
+ } ] ) ;
62
+
63
+ function DrillDown ( props ) {
64
+ var _this$defButtonStyle ;
65
+
66
+ var _this ;
67
+
68
+ _classCallCheck ( this , DrillDown ) ;
69
+
70
+ _this = _possibleConstructorReturn ( this , _getPrototypeOf ( DrillDown ) . call ( this , props ) ) ;
71
+ var btnConfig = props . btnConfig ,
72
+ btnStyle = props . btnStyle ;
73
+ _this . finalBtnConfig = Object . assign ( { } , DrillDown . defaultProps . btnConfig , btnConfig ) ;
74
+
75
+ var _this$finalBtnConfig$ = _this . finalBtnConfig . placement . split ( '-' ) ;
76
+
77
+ var _this$finalBtnConfig$2 = _slicedToArray ( _this$finalBtnConfig$ , 2 ) ;
78
+
79
+ _this . positionV = _this$finalBtnConfig$2 [ 0 ] ;
80
+ _this . positionH = _this$finalBtnConfig$2 [ 1 ] ;
81
+ _this . state = {
82
+ isBtnVisible : true ,
83
+ selectedChild : - 1 ,
84
+ isDrilledDown : false
85
+ } ;
86
+ /* Function Bindings */
87
+
88
+ _this . plotClicked = _this . plotClicked . bind ( _assertThisInitialized ( _assertThisInitialized ( _this ) ) ) ;
89
+ _this . onChildRendered = _this . onChildRendered . bind ( _assertThisInitialized ( _assertThisInitialized ( _this ) ) ) ;
90
+ _this . toggleParentBtnVisibility = _this . toggleParentBtnVisibility . bind ( _assertThisInitialized ( _assertThisInitialized ( _this ) ) ) ;
91
+ _this . onBtnClick = _this . onBtnClick . bind ( _assertThisInitialized ( _assertThisInitialized ( _this ) ) ) ;
92
+ /* Default styles */
93
+
94
+ _this . wrapperStyle = {
95
+ position : 'relative' ,
96
+ display : 'inline-block'
97
+ } ;
98
+ _this . defButtonStyle = ( _this$defButtonStyle = {
99
+ border : "1px solid " . concat ( _this . finalBtnConfig . borderColor ) ,
100
+ backgroundColor : "" . concat ( _this . finalBtnConfig . backgroundColor ) ,
101
+ color : "" . concat ( _this . finalBtnConfig . color ) ,
102
+ fontFamily : "" . concat ( _this . finalBtnConfig . fontFamily ) ,
103
+ fontSize : "" . concat ( _this . finalBtnConfig . fontSize ) ,
104
+ padding : "" . concat ( _this . finalBtnConfig . padding ) ,
105
+ fontWeight : "" . concat ( _this . finalBtnConfig . fontWeight ) ,
106
+ position : 'absolute'
107
+ } , _defineProperty ( _this$defButtonStyle , _this . positionH , "" . concat ( _this . finalBtnConfig . margin ) ) , _defineProperty ( _this$defButtonStyle , _this . positionV , "" . concat ( _this . finalBtnConfig . margin ) ) , _defineProperty ( _this$defButtonStyle , "cursor" , 'pointer' ) , _this$defButtonStyle ) ;
108
+ _this . finBtnStyle = typeof btnStyle === 'undefined' ? _this . defButtonStyle : btnStyle ;
109
+ return _this ;
110
+ }
111
+
112
+ _createClass ( DrillDown , [ {
113
+ key : "determinePlotMapType" ,
114
+ value : function determinePlotMapType ( plotChildMap ) {
115
+ var isNumberFound = false ;
116
+ var isObjectFound = false ;
117
+ plotChildMap . forEach ( function ( val ) {
118
+ if ( typeof val === 'undefined' || val === null ) return ;
119
+ if ( typeof val === 'number' && val > - 1 ) isNumberFound = true ;
120
+ if ( _typeof ( val ) === 'object' ) isObjectFound = true ;
121
+ } ) ;
122
+
123
+ if ( isNumberFound && isObjectFound ) {
124
+ return 'invalid' ;
125
+ }
126
+
127
+ if ( isNumberFound ) return 'number' ;
128
+ if ( isObjectFound ) return 'object' ;
129
+ return 'noop' ;
130
+ }
131
+ } , {
132
+ key : "plotClicked" ,
133
+ value : function plotClicked ( e ) {
134
+ var index = e . data . index ;
135
+ var propChildren = Array . isArray ( this . props . children ) ? this . props . children : [ this . props . children ] ;
136
+ var childrenLen = propChildren . length ;
137
+ var plotChildMap = this . props . plotChildMap ;
138
+ if ( childrenLen === 0 ) return ; // Further Optimization needed.
139
+
140
+ var mapType = this . determinePlotMapType ( plotChildMap ) ; // Case : Array of numbers
141
+
142
+ if ( mapType === 'number' ) {
143
+ var childPosition = plotChildMap [ index ] ;
144
+ if ( childPosition === null || typeof childPosition === 'undefined' || childPosition >= childrenLen || childPosition < 0 ) return ;
145
+ this . setState ( {
146
+ selectedChild : childPosition ,
147
+ isDrilledDown : true
148
+ } ) ;
149
+ } // Case : Array of objects
150
+
151
+
152
+ if ( mapType === 'object' ) {
153
+ for ( var i = 0 ; i < childrenLen ; i ++ ) {
154
+ if ( typeof plotChildMap [ i ] === 'undefined' || plotChildMap [ i ] === null ) continue ;
155
+ var _plotChildMap$i = plotChildMap [ i ] ,
156
+ plotPosition = _plotChildMap$i . plotPosition ,
157
+ _childPosition = _plotChildMap$i . childPosition ;
158
+
159
+ if ( plotPosition === index && _childPosition !== null && typeof _childPosition !== 'undefined' && _childPosition < childrenLen && _childPosition > - 1 ) {
160
+ this . setState ( {
161
+ selectedChild : _childPosition ,
162
+ isDrilledDown : true
163
+ } ) ;
164
+ return ;
165
+ }
166
+ }
167
+ } // Case : Heterogeneous
168
+
169
+
170
+ if ( mapType === 'invalid' ) {
171
+ console . log ( 'Invalid heterogeneous data: Please check proptypes for - plotChildMap' ) ;
172
+ }
173
+ }
174
+ } , {
175
+ key : "cloneReactFCChild" ,
176
+ value : function cloneReactFCChild ( reactFCElem , customProps ) {
177
+ return _react . default . cloneElement ( reactFCElem , customProps ) ;
178
+ }
179
+ } , {
180
+ key : "onChildRendered" ,
181
+ value : function onChildRendered ( ) {
182
+ if ( this . props . toggleParentBtnVisibility ) {
183
+ this . props . toggleParentBtnVisibility ( false ) ;
184
+ }
185
+ }
186
+ } , {
187
+ key : "toggleParentBtnVisibility" ,
188
+ value : function toggleParentBtnVisibility ( isBtnVisible ) {
189
+ this . setState ( {
190
+ isBtnVisible : isBtnVisible
191
+ } ) ;
192
+ }
193
+ } , {
194
+ key : "onBtnClick" ,
195
+ value : function onBtnClick ( ) {
196
+ this . setState ( {
197
+ isDrilledDown : false
198
+ } ) ;
199
+
200
+ if ( this . props . toggleParentBtnVisibility ) {
201
+ this . props . toggleParentBtnVisibility ( true ) ;
202
+ }
203
+ }
204
+ } , {
205
+ key : "render" ,
206
+ value : function render ( ) {
207
+ var component ;
208
+ var _this$state = this . state ,
209
+ selectedChild = _this$state . selectedChild ,
210
+ isBtnVisible = _this$state . isBtnVisible ;
211
+ var _this$props = this . props ,
212
+ children = _this$props . children ,
213
+ width = _this$props . width ,
214
+ height = _this$props . height ;
215
+ var clonedElemConfig = {
216
+ width : width ,
217
+ height : height ,
218
+ onRender : this . onChildRendered ,
219
+ toggleParentBtnVisibility : this . toggleParentBtnVisibility
220
+ } ;
221
+
222
+ if ( ! this . state . isDrilledDown ) {
223
+ component = _react . default . createElement ( _ReactFC . default , _extends ( { } , this . props , {
224
+ "fcEvent-dataplotClick" : this . plotClicked
225
+ } ) ) ;
226
+ } else {
227
+ var propChildren = Array . isArray ( children ) ? children : [ children ] ;
228
+ component = _react . default . createElement ( "div" , {
229
+ style : this . wrapperStyle
230
+ } , this . cloneReactFCChild ( propChildren [ selectedChild ] , clonedElemConfig ) , isBtnVisible ? _react . default . createElement ( "button" , {
231
+ style : this . finBtnStyle ,
232
+ onClick : this . onBtnClick
233
+ } , this . finalBtnConfig . text ) : null ) ;
234
+ }
235
+
236
+ return component ;
237
+ }
238
+ } ] ) ;
239
+
240
+ return DrillDown ;
241
+ } ( _react . default . Component ) ;
242
+
243
+ DrillDown . defaultProps = {
244
+ plotChildMap : [ ] ,
245
+ btnConfig : {
246
+ text : 'Back' ,
247
+ color : '#000000' ,
248
+ backgroundColor : '#F6F6F6' ,
249
+ borderColor : '#000000' ,
250
+ fontSize : '14px' ,
251
+ fontWeight : 'bold' ,
252
+ padding : '3px' ,
253
+ fontFamily : 'Verdana, sans' ,
254
+ placement : 'top-right' ,
255
+ margin : '10px'
256
+ } ,
257
+ btnStyle : undefined ,
258
+ dataSource : { } ,
259
+ dataFormat : 'json' ,
260
+ type : '' ,
261
+ height : '' ,
262
+ width : ''
263
+ } ;
264
+ DrillDown . propTypes = {
265
+ plotChildMap : _propTypes . default . oneOfType ( [ _propTypes . default . arrayOf ( _propTypes . default . shape ( {
266
+ plotPosition : _propTypes . default . number ,
267
+ childPosition : _propTypes . default . number
268
+ } ) ) , _propTypes . default . arrayOf ( _propTypes . default . number ) ] ) ,
269
+ btnConfig : _propTypes . default . shape ( {
270
+ text : _propTypes . default . string ,
271
+ color : _propTypes . default . string ,
272
+ backgroundColor : _propTypes . default . string ,
273
+ borderColor : _propTypes . default . string ,
274
+ fontSize : _propTypes . default . string ,
275
+ fontWeight : _propTypes . default . string ,
276
+ padding : _propTypes . default . string ,
277
+ fontFamily : _propTypes . default . string ,
278
+ placement : _propTypes . default . oneOf ( [ 'top-left' , 'top-right' , 'bottom-left' , 'bottom-right' ] ) ,
279
+ margin : _propTypes . default . string
280
+ } ) ,
281
+ btnStyle : _propTypes . default . object ,
282
+ dataSource : _propTypes . default . object ,
283
+ dataFormat : _propTypes . default . string ,
284
+ type : _propTypes . default . string ,
285
+ height : _propTypes . default . string ,
286
+ width : _propTypes . default . string
287
+ } ;
288
+ var _default = DrillDown ;
289
+ exports . default = _default ;
0 commit comments