@@ -14,6 +14,7 @@ var _manifestUtil = require("../../util/manifestUtil");
1414var _rxUtil = require ( "../../util/rxUtil" ) ;
1515var _StateStorageService = _interopRequireDefault ( require ( "../../service/StateStorageService" ) ) ;
1616var _NeonSignInButtonState = _interopRequireDefault ( require ( "../NeonSignInButton/NeonSignInButtonState" ) ) ;
17+ var _ReleaseService = _interopRequireDefault ( require ( "../../service/ReleaseService" ) ) ;
1718var _StateStorageConverter = require ( "./StateStorageConverter" ) ;
1819var _typeUtil = require ( "../../util/typeUtil" ) ;
1920function _interopRequireDefault ( obj ) { return obj && obj . __esModule ? obj : { default : obj } ; }
@@ -34,6 +35,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
3435var ALL_POSSIBLE_VALID_DATE_RANGE = [ '2010-01' , ( 0 , _moment . default ) ( ) . format ( 'YYYY-MM' ) ] ;
3536var ALL_POSSIBLE_VALID_DOCUMENTATION = [ 'include' , 'exclude' ] ;
3637var ALL_POSSIBLE_VALID_PACKAGE_TYPE = [ 'basic' , 'expanded' ] ;
38+ var ALL_POSSIBLE_VALID_PROVISIONAL_DATA = [ 'include' , 'exclude' ] ;
3739var AVAILABILITY_VIEW_MODES = [ 'summary' , 'sites' , 'states' , 'domains' ] ;
3840var ALL_STEPS = {
3941 documentation : {
@@ -55,6 +57,11 @@ var ALL_STEPS = {
5557 label : 'Package Type' ,
5658 title : 'Which package type do you want?'
5759 } ,
60+ provisionalData : {
61+ requiredStateKeys : [ 'provisionalData' ] ,
62+ label : 'Provisional Data' ,
63+ title : 'Do you want to include provisional data?'
64+ } ,
5865 sitesAndDateRange : {
5966 requiredStateKeys : [ 'sites' , 'dateRange' ] ,
6067 label : 'Sites and Date Range' ,
@@ -79,11 +86,14 @@ var DEFAULT_REQUIRED_STEPS = [{
7986 key : 'sitesAndDateRange' ,
8087 isComplete : false
8188} , {
82- key : 'documentation ' ,
89+ key : 'provisionalData ' ,
8390 isComplete : true
8491} , {
8592 key : 'packageType' ,
8693 isComplete : false
94+ } , {
95+ key : 'documentation' ,
96+ isComplete : true
8797} , {
8898 key : 'policies' ,
8999 isComplete : false
@@ -171,6 +181,11 @@ var DEFAULT_STATE = {
171181 validValues : [ ] . concat ( ALL_POSSIBLE_VALID_PACKAGE_TYPE ) ,
172182 isValid : false
173183 } ,
184+ provisionalData : {
185+ value : 'exclude' ,
186+ validValues : [ ] . concat ( ALL_POSSIBLE_VALID_PROVISIONAL_DATA ) ,
187+ isValid : true
188+ } ,
174189 policies : {
175190 value : false ,
176191 validValues : null ,
@@ -179,15 +194,15 @@ var DEFAULT_STATE = {
179194} ;
180195
181196// State keys that have a common { value, validValues, isValid } shape and can be validated
182- var VALIDATABLE_STATE_KEYS = [ 'release' , 'sites' , 'dateRange' , 'documentation' , 'packageType' , 's3Files' , 'policies' ] ;
197+ var VALIDATABLE_STATE_KEYS = [ 'release' , 'sites' , 'dateRange' , 'documentation' , 'packageType' , 'provisionalData' , ' s3Files', 'policies' ] ;
183198
184199// State keys that can be transfered between contexts through higher order state
185200// (must be a subset of VALIDATABLE_STATE_KEYS)
186201var HIGHER_ORDER_TRANSFERABLE_STATE_KEYS = [ 'release' , 'sites' , 'dateRange' ] ;
187202
188203// State keys that should trigger a new manifest (file size estimate) request when updated
189204// (must be a subset of VALIDATABLE_STATE_KEYS)
190- var MANIFEST_TRIGGERING_STATE_KEYS = [ 'release' , 'sites' , 'dateRange' , 'documentation' , 'packageType' ] ;
205+ var MANIFEST_TRIGGERING_STATE_KEYS = [ 'release' , 'sites' , 'dateRange' , 'documentation' , 'packageType' , 'provisionalData' ] ;
191206
192207// Regexes and associated capture group names for parse s3 file names and URLs
193208var S3_PATTERN = {
@@ -249,6 +264,8 @@ var newStateIsAllowable = function newStateIsAllowable(key, value) {
249264 return ALL_POSSIBLE_VALID_DOCUMENTATION . includes ( value ) || value === null ;
250265 case 'packageType' :
251266 return ALL_POSSIBLE_VALID_PACKAGE_TYPE . includes ( value ) || value === null ;
267+ case 'provisionalData' :
268+ return ALL_POSSIBLE_VALID_PROVISIONAL_DATA . includes ( value ) || value === null ;
252269 case 's3Files' :
253270 return Array . isArray ( value ) && value . every ( function ( id ) {
254271 return typeof id === 'string' ;
@@ -347,6 +364,8 @@ var getValidValuesFromProductData = function getValidValuesFromProductData(produ
347364 return [ ] . concat ( ALL_POSSIBLE_VALID_DOCUMENTATION ) ;
348365 case 'packageType' :
349366 return [ ] . concat ( ALL_POSSIBLE_VALID_PACKAGE_TYPE ) ;
367+ case 'provisionalData' :
368+ return [ ] . concat ( ALL_POSSIBLE_VALID_PROVISIONAL_DATA ) ;
350369 case 'policies' :
351370 return null ;
352371 default :
@@ -360,7 +379,8 @@ var getValidValuesFromProductData = function getValidValuesFromProductData(produ
360379var getInitialStateFromProps = function getInitialStateFromProps ( props ) {
361380 // Handle base product data
362381 var productData = props . productData ,
363- availabilityView = props . availabilityView ;
382+ availabilityView = props . availabilityView ,
383+ release = props . release ;
364384 if ( ! productDataIsValid ( productData ) ) {
365385 return _extends ( { } , DEFAULT_STATE , {
366386 availabilityView : availabilityView ,
@@ -408,6 +428,9 @@ var getInitialStateFromProps = function getInitialStateFromProps(props) {
408428 requiredSteps = [ {
409429 key : 'sitesAndDateRange' ,
410430 isComplete : false
431+ } , {
432+ key : 'provisionalData' ,
433+ isComplete : true
411434 } , {
412435 key : 's3Files' ,
413436 isComplete : false
@@ -430,6 +453,28 @@ var getInitialStateFromProps = function getInitialStateFromProps(props) {
430453 return step . key === 'packageType' ;
431454 } ) , 1 ) ;
432455 }
456+ // Remove provisional data step if release specified and is not a non-release
457+ var hasRelease = ( 0 , _typeUtil . isStringNonEmpty ) ( release ) ;
458+ var excludeProvisionalStep = hasRelease && ! _ReleaseService . default . isNonRelease ( release ) ;
459+ var hasProvisionalDataStep = requiredSteps . some ( function ( step ) {
460+ return step . key === 'provisionalData' ;
461+ } ) ;
462+ var hasProvisionalData = false ;
463+ if ( ( 0 , _typeUtil . exists ) ( productData ) && ( 0 , _typeUtil . existsNonEmpty ) ( productData . siteCodes ) ) {
464+ hasProvisionalData = productData . siteCodes . some ( function ( siteCode ) {
465+ if ( ! ( 0 , _typeUtil . existsNonEmpty ) ( siteCode . availableReleases ) ) {
466+ return false ;
467+ }
468+ return siteCode . availableReleases . some ( function ( availableRelease ) {
469+ return _ReleaseService . default . isProv ( availableRelease . release ) && ( 0 , _typeUtil . existsNonEmpty ) ( availableRelease . availableMonths ) ;
470+ } ) ;
471+ } ) ;
472+ }
473+ if ( hasProvisionalDataStep && excludeProvisionalStep || hasProvisionalDataStep && ! hasProvisionalData ) {
474+ requiredSteps . splice ( requiredSteps . findIndex ( function ( step ) {
475+ return step . key === 'provisionalData' ;
476+ } ) , 1 ) ;
477+ }
433478 initialState . requiredSteps = requiredSteps ;
434479 initialState . fromManifest = fromManifest ;
435480 initialState . fromAOPManifest = fromAOPManifest ;
@@ -1201,7 +1246,11 @@ Provider.propTypes = {
12011246 productName : _propTypes . default . string . isRequired ,
12021247 siteCodes : _propTypes . default . arrayOf ( _propTypes . default . shape ( {
12031248 siteCode : _propTypes . default . string . isRequired ,
1204- availableMonths : _propTypes . default . arrayOf ( _propTypes . default . string ) . isRequired
1249+ availableMonths : _propTypes . default . arrayOf ( _propTypes . default . string ) . isRequired ,
1250+ availableReleases : _propTypes . default . arrayOf ( _propTypes . default . shape ( {
1251+ release : _propTypes . default . string . isRequired ,
1252+ availableMonths : _propTypes . default . arrayOf ( _propTypes . default . string ) . isRequired
1253+ } ) )
12051254 } ) )
12061255 } ) ,
12071256 /* eslint-disable react/no-unused-prop-types */
@@ -1211,6 +1260,7 @@ Provider.propTypes = {
12111260 dateRange : _propTypes . default . arrayOf ( _propTypes . default . string ) ,
12121261 documentation : _propTypes . default . oneOf ( ALL_POSSIBLE_VALID_DOCUMENTATION ) ,
12131262 packageType : _propTypes . default . oneOf ( ALL_POSSIBLE_VALID_PACKAGE_TYPE ) ,
1263+ provisionalData : _propTypes . default . oneOf ( ALL_POSSIBLE_VALID_PROVISIONAL_DATA ) ,
12141264 /* eslint-enable react/no-unused-prop-types */
12151265 children : _propTypes . default . oneOfType ( [ _propTypes . default . arrayOf ( _propTypes . default . oneOfType ( [ _propTypes . default . node , _propTypes . default . string ] ) ) , _propTypes . default . node , _propTypes . default . string ] ) . isRequired
12161266} ;
@@ -1223,7 +1273,8 @@ Provider.defaultProps = {
12231273 sites : DEFAULT_STATE . sites . value ,
12241274 dateRange : DEFAULT_STATE . dateRange . value ,
12251275 documentation : DEFAULT_STATE . documentation . value ,
1226- packageType : DEFAULT_STATE . packageType . value
1276+ packageType : DEFAULT_STATE . packageType . value ,
1277+ provisionalData : DEFAULT_STATE . provisionalData . value
12271278} ;
12281279var DownloadDataContext = {
12291280 Provider : Provider ,
@@ -1251,7 +1302,8 @@ var getTestableItems = function getTestableItems() {
12511302 getAndValidateNewState : getAndValidateNewState ,
12521303 ALL_POSSIBLE_VALID_DATE_RANGE : ALL_POSSIBLE_VALID_DATE_RANGE ,
12531304 ALL_POSSIBLE_VALID_DOCUMENTATION : ALL_POSSIBLE_VALID_DOCUMENTATION ,
1254- ALL_POSSIBLE_VALID_PACKAGE_TYPE : ALL_POSSIBLE_VALID_PACKAGE_TYPE
1305+ ALL_POSSIBLE_VALID_PACKAGE_TYPE : ALL_POSSIBLE_VALID_PACKAGE_TYPE ,
1306+ ALL_POSSIBLE_VALID_PROVISIONAL_DATA : ALL_POSSIBLE_VALID_PROVISIONAL_DATA
12551307 } ;
12561308} ;
12571309exports . getTestableItems = getTestableItems ;
0 commit comments