@@ -10,8 +10,10 @@ import { wrapText } from '../utils';
10
10
import { TemplateIcon , AddIcon , DeleteIcon , EmptyStateIcon , OverwriteStateIcon } from './Icons' ;
11
11
import '../../sass/components/_view.scss' ;
12
12
import Menu from './Menu' ;
13
+ import InfoFootnote from './InfoFootnote' ;
13
14
14
15
type TViewItemProps = {
16
+ disabled ?: boolean ;
15
17
onClick : ( event : React . MouseEvent < HTMLElement > ) => void ;
16
18
view : ArrayElement < TViews > ;
17
19
remove : ( event : React . MouseEvent < HTMLElement > ) => void ;
@@ -30,6 +32,7 @@ type TOverwriteViewProps = {
30
32
} ;
31
33
32
34
type TActiveListViewProps = {
35
+ allowTickChartTypeOnly : TMainStore [ 'state' ] [ 'allowTickChartTypeOnly' ] ;
33
36
removeAll : TMainStore [ 'view' ] [ 'removeAll' ] ;
34
37
views : TMainStore [ 'view' ] [ 'sortedItems' ] ;
35
38
applyLayout : TMainStore [ 'view' ] [ 'applyLayout' ] ;
@@ -38,18 +41,22 @@ type TActiveListViewProps = {
38
41
onGranularity : ( granularity ?: TGranularity ) => void ;
39
42
} ;
40
43
41
- const ViewItem = ( { view, remove, onClick } : TViewItemProps ) => (
44
+ const ViewItem = ( { disabled , view, remove, onClick } : TViewItemProps ) => (
42
45
< Tooltip
43
46
className = 'sc-views__views__list__item'
44
- onClick = { onClick }
47
+ onClick = { disabled ? undefined : onClick }
45
48
enabled = { view . name . length > 27 }
46
49
content = { wrapText ( view . name , 26 ) }
47
50
>
48
- < div className = 'text' > { view . name } </ div >
51
+ < div className = { classNames ( 'text' , { 'text--disabled' : disabled } ) } > { view . name } </ div >
49
52
< DeleteIcon onClick = { remove } />
50
53
</ Tooltip >
51
54
) ;
52
55
56
+ ViewItem . defaultProps = {
57
+ disabled : false ,
58
+ } ;
59
+
53
60
const EmptyView = ( { onClick } : { onClick : ( event : React . MouseEvent < HTMLElement > ) => void } ) => (
54
61
< div className = 'sc-views--empty' >
55
62
< EmptyStateIcon />
@@ -83,6 +90,7 @@ const OverwriteView = ({ templateName, onCancel, onOverwrite }: TOverwriteViewPr
83
90
) ;
84
91
85
92
const ActiveListView = ( {
93
+ allowTickChartTypeOnly,
86
94
views,
87
95
removeAll,
88
96
applyLayout,
@@ -92,6 +100,12 @@ const ActiveListView = ({
92
100
} : TActiveListViewProps ) => {
93
101
if ( ! views . length ) return null ;
94
102
103
+ const isDisabled = ( layout : TMainStore [ 'view' ] [ 'sortedItems' ] [ number ] [ 'layout' ] ) => {
104
+ const { chartType, timeUnit } = layout ?? { } ;
105
+ const oneTickChartTemplate = chartType === 'line' && timeUnit === 'tick' ;
106
+ return allowTickChartTypeOnly && ! oneTickChartTemplate ;
107
+ } ;
108
+
95
109
return (
96
110
< div className = 'sc-views__views' >
97
111
< div className = 'sc-views__views__head' >
@@ -104,6 +118,7 @@ const ActiveListView = ({
104
118
< div className = 'sc-views__views__list' >
105
119
{ views . map ( ( view , i ) => (
106
120
< ViewItem
121
+ disabled = { isDisabled ( view . layout ) }
107
122
view = { view }
108
123
key = { view . name }
109
124
onClick = { e => applyLayout ( i , e as TCustomEvent , onGranularity , onChartType ) }
@@ -117,7 +132,9 @@ const ActiveListView = ({
117
132
} ;
118
133
119
134
const Views = ( { portalNodeId, onChartType, onGranularity } : TViewsProps ) => {
120
- const { view } = useStores ( ) ;
135
+ const { view, state, chart } = useStores ( ) ;
136
+ const { allowTickChartTypeOnly } = state ;
137
+ const { isMobile } = chart ;
121
138
122
139
const {
123
140
sortedItems : views ,
@@ -161,7 +178,7 @@ const Views = ({ portalNodeId, onChartType, onGranularity }: TViewsProps) => {
161
178
{ currentRoute === 'new' ? (
162
179
< EmptyView onClick = { onToggleNew } />
163
180
) : (
164
- < React . Fragment >
181
+ < >
165
182
{ currentRoute !== 'overwrite' ? (
166
183
''
167
184
) : (
@@ -209,6 +226,7 @@ const Views = ({ portalNodeId, onChartType, onGranularity }: TViewsProps) => {
209
226
</ div >
210
227
</ div >
211
228
< ActiveListView
229
+ allowTickChartTypeOnly = { allowTickChartTypeOnly }
212
230
views = { views }
213
231
removeAll = { removeAll }
214
232
applyLayout = { applyLayout }
@@ -217,9 +235,15 @@ const Views = ({ portalNodeId, onChartType, onGranularity }: TViewsProps) => {
217
235
onGranularity = { onGranularity }
218
236
/>
219
237
</ Scroll >
220
- </ React . Fragment >
238
+ </ >
221
239
) }
222
240
</ div >
241
+ { allowTickChartTypeOnly && (
242
+ < InfoFootnote
243
+ isMobile = { isMobile }
244
+ text = { t . translate ( 'Some of your templates may not work with this trade type.' ) }
245
+ />
246
+ ) }
223
247
</ Menu . Body >
224
248
</ Menu >
225
249
) ;
0 commit comments