@@ -30,6 +30,7 @@ import FieldError from "#SRC/js/components/form/FieldError";
30
30
import InfoTooltipIcon from "#SRC/js/components/form/InfoTooltipIcon" ;
31
31
import Loader from "#SRC/js/components/Loader" ;
32
32
import MesosStateStore from "#SRC/js/stores/MesosStateStore" ;
33
+ import dcosVersion$ from "#SRC/js/stores/dcos-version" ;
33
34
34
35
import { formatQuotaID } from "#PLUGINS/services/src/js/utils/QuotaUtil" ;
35
36
import {
@@ -110,36 +111,52 @@ interface ServiceRootGroupModalState {
110
111
error : boolean ;
111
112
isForce : boolean ;
112
113
hasValidated : boolean ;
114
+ showQuotaOptions : boolean ;
113
115
}
114
116
115
117
interface ServiceRootGroupModalProps {
116
118
id : string ;
117
119
}
118
120
119
121
class ServiceRootGroupModal extends React . Component <
120
- ServiceRootGroupModalProps
122
+ ServiceRootGroupModalProps ,
123
+ ServiceRootGroupModalState
121
124
> {
122
- static contextTypes = { router : routerShape } ;
123
- static defaultProps = { id : "" } ;
124
-
125
- state : ServiceRootGroupModalState = {
126
- isOpen : true ,
127
- isPending : false ,
128
- expandAdvancedSettings : false ,
129
- data : ! ! this . props . id ? null : emptyGroupFormData ( ) ,
130
- originalData : null ,
131
- errors : { } ,
132
- isEdit : ! ! this . props . id ,
133
- error : false ,
134
- isForce : false ,
135
- hasValidated : false ,
125
+ public static contextTypes = {
126
+ router : routerShape ,
136
127
} ;
128
+ public static defaultProps = {
129
+ id : "" ,
130
+ } ;
131
+
132
+ state = this . getInitialState ( ) ;
137
133
138
- componentDidMount ( ) {
134
+ public componentDidMount ( ) {
139
135
this . getGroupFormData ( ) ;
136
+ dcosVersion$ . subscribe ( ( { hasQuotaSupport } ) => {
137
+ this . setState ( { showQuotaOptions : hasQuotaSupport } ) ;
138
+ } ) ;
139
+ }
140
+
141
+ public getInitialState (
142
+ props : ServiceRootGroupModalProps = this . props
143
+ ) : ServiceRootGroupModalState {
144
+ return {
145
+ isOpen : true ,
146
+ isPending : false ,
147
+ expandAdvancedSettings : false ,
148
+ data : ! ! props . id ? null : emptyGroupFormData ( ) ,
149
+ originalData : null ,
150
+ errors : { } ,
151
+ isEdit : ! ! props . id ,
152
+ error : false ,
153
+ isForce : false ,
154
+ hasValidated : false ,
155
+ showQuotaOptions : false ,
156
+ } ;
140
157
}
141
158
142
- handleClose = ( ) => {
159
+ public handleClose = ( ) => {
143
160
// Start the animation of the modal by setting isOpen to false
144
161
this . setState (
145
162
{ isOpen : false , isPending : false , data : emptyGroupFormData ( ) } ,
@@ -151,7 +168,7 @@ class ServiceRootGroupModal extends React.Component<
151
168
) ;
152
169
} ;
153
170
154
- handleSave = ( ) => {
171
+ public handleSave = ( ) => {
155
172
let data : GroupFormData | null = this . state . data ;
156
173
const { isPending, originalData, isEdit, isForce } = this . state ;
157
174
if ( isPending || data === null ) {
@@ -226,7 +243,7 @@ class ServiceRootGroupModal extends React.Component<
226
243
} ) ;
227
244
} ;
228
245
229
- handleSaveError = (
246
+ public handleSaveError = (
230
247
message : string ,
231
248
mesos : boolean = false ,
232
249
data : null | OvercommittedQuotaResource [ ] = null
@@ -300,7 +317,7 @@ class ServiceRootGroupModal extends React.Component<
300
317
}
301
318
} ;
302
319
303
- getGroupFormData = ( ) : void => {
320
+ public getGroupFormData = ( ) : void => {
304
321
const { id } = this . props ;
305
322
if ( ! ! id ) {
306
323
getGroup ( id )
@@ -321,7 +338,7 @@ class ServiceRootGroupModal extends React.Component<
321
338
}
322
339
} ;
323
340
324
- getModalContent = ( ) => {
341
+ public getModalContent = ( ) => {
325
342
const { errors, data, isEdit, error } = this . state ;
326
343
// If id exists, then we must be editing.
327
344
@@ -381,15 +398,17 @@ class ServiceRootGroupModal extends React.Component<
381
398
< div > { getPathFromGroupId ( data . id ) } </ div >
382
399
</ FormGroup >
383
400
</ FormRow >
384
- { this . renderQuotaOptions ( data , errors ) }
401
+ { this . state . showQuotaOptions
402
+ ? this . renderQuotaOptions ( data , errors )
403
+ : null }
385
404
</ form >
386
405
</ div >
387
406
</ FluidGeminiScrollbar >
388
407
</ div >
389
408
) ;
390
409
} ;
391
410
392
- getAdvancedSettings = ( ) => {
411
+ public getAdvancedSettings = ( ) => {
393
412
const { data, originalData, expandAdvancedSettings, isEdit } = this . state ;
394
413
const roleEnforcementTooltipContent = (
395
414
< Trans >
@@ -402,7 +421,7 @@ class ServiceRootGroupModal extends React.Component<
402
421
return ;
403
422
}
404
423
405
- const isDisabled = isEdit && ! ! originalData && originalData . enforceRole ;
424
+ const isDisabled = isEdit && originalData && originalData . enforceRole ;
406
425
407
426
return (
408
427
< AdvancedSection initialIsExpanded = { expandAdvancedSettings } >
@@ -472,7 +491,7 @@ class ServiceRootGroupModal extends React.Component<
472
491
) ;
473
492
} ;
474
493
475
- handleFormChange = ( event : React . FormEvent < HTMLFormElement > ) => {
494
+ public handleFormChange = ( event : React . FormEvent < HTMLFormElement > ) => {
476
495
if ( this . state . isPending || ! this . state . data ) {
477
496
return ;
478
497
}
@@ -594,7 +613,7 @@ class ServiceRootGroupModal extends React.Component<
594
613
) ;
595
614
}
596
615
597
- render ( ) {
616
+ public render ( ) {
598
617
const { isEdit, isForce } = this . state ;
599
618
return (
600
619
< FullScreenModal
0 commit comments