X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FUI.git;a=blobdiff_plain;f=skyquake%2Fplugins%2Fcomposer%2Fsrc%2Fsrc%2Fstores%2FCatalogPackageManagerStore.js;h=5ffe83f9001502f809817098fdaed2fe3ea86a3d;hp=733e938a6f0895e967809836caecfb4ab4d7be16;hb=2140fb647aae159dc38bd0893a94133220369de5;hpb=e29efc315df33d546237e270470916e26df391d6 diff --git a/skyquake/plugins/composer/src/src/stores/CatalogPackageManagerStore.js b/skyquake/plugins/composer/src/src/stores/CatalogPackageManagerStore.js index 733e938a6..5ffe83f90 100644 --- a/skyquake/plugins/composer/src/src/stores/CatalogPackageManagerStore.js +++ b/skyquake/plugins/composer/src/src/stores/CatalogPackageManagerStore.js @@ -1,6 +1,6 @@ /* - * + * * Copyright 2016 RIFT.IO Inc * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -18,7 +18,8 @@ */ 'use strict'; -import _ from 'lodash' +import _delay from 'lodash/delay' +import _pick from 'lodash/pick' import alt from '../alt' import guid from '../libraries/guid' import numeral from 'numeral' @@ -65,7 +66,7 @@ function delayStatusCheck(statusCheckFunction, catalogPackage) { delete catalogPackage.checkStatusTimeoutId; statusCheckFunction(catalogPackage).catch(exception); }; - catalogPackage.checkStatusTimeoutId = _.delay(delayCallback, defaults.checkStatusDelayInSeconds * 1000); + catalogPackage.checkStatusTimeoutId = _delay(delayCallback, defaults.checkStatusDelayInSeconds * 1000); } } @@ -109,7 +110,7 @@ class CatalogPackageManagerStore { uploadCatalogPackage(file) { file.id = file.id || guid(); - const catalogPackage = _.pick(file, packagePropertyNames); + const catalogPackage = _pick(file, packagePropertyNames); catalogPackage.icon = file.riftAction === 'onboard' ? imgOnboard : imgUpdate; catalogPackage.type = 'upload'; this.addPackage(catalogPackage); @@ -119,12 +120,15 @@ class CatalogPackageManagerStore { onUploadCatalogPackageStatusUpdated(response) { const upload = updateStatusInfo(response); this.updatePackage(upload); + console.log('updating package upload') // if pending with no transaction id - do nothing // bc DropZone.js will notify upload progress if (upload.pending && upload.transactionId) { + console.log('checking status') delayStatusCheck(this.getInstance().requestCatalogPackageUploadStatus, upload); } else if (upload.success) { this.getInstance().loadCatalogs(); + console.log('finished uploading to node, requesting status from rest') } } @@ -136,8 +140,9 @@ class CatalogPackageManagerStore { downloadCatalogPackage(data) { let catalogItems = data['selectedItems'] || []; - let format = data['selectedFormat'] || 'mano'; + let schema = data['selectedFormat'] || 'mano'; let grammar = data['selectedGrammar'] || 'osm'; + let format = "YAML"; if (catalogItems.length) { const catalogPackage = Object.assign({}, defaults.downloadPackage, {id: guid()}); catalogPackage.name = catalogItems[0].name; @@ -148,7 +153,7 @@ class CatalogPackageManagerStore { catalogPackage.ids = catalogItems.map(d => d.id).sort().toString(); catalogPackage.catalogItems = catalogItems; this.addPackage(catalogPackage); - this.getInstance().requestCatalogPackageDownload(catalogPackage, format, grammar).catch(exception); + this.getInstance().requestCatalogPackageDownload(catalogPackage, format, grammar, schema).catch(exception); } } @@ -189,53 +194,59 @@ function updateStatusInfo(response) { success: false, error: false }; - const responseData = response.data; + const responseData = (response.data.output) ? response.data.output : response.data; const catalogPackage = response.state; - switch(responseData.status) { - case 'upload-progress': - statusInfo.pending = true; - statusInfo.progress = parseFloat(responseData.progress) || 0; - statusInfo.message = calculateUploadProgressMessage(catalogPackage.size, responseData.progress, responseData.bytesSent); - break; - case 'upload-success': - statusInfo.pending = true; - statusInfo.progress = 100; - statusInfo.message = 'Upload completed.'; - statusInfo.transactionId = responseData.transaction_id; - break; - case 'upload-error': - statusInfo.error = true; - statusInfo.message = responseData.message; - break; - case 'download-requested': - statusInfo.pending = true; - statusInfo.progress = 25; - statusInfo.transactionId = responseData.transaction_id; - break; - case 'pending': - statusInfo.pending = true; - statusInfo.progress = 50; - statusInfo.message = responseData.events[responseData.events.length - 1].text; - break; - case 'success': - statusInfo.success = true; - statusInfo.progress = 100; - statusInfo.message = responseData.events[responseData.events.length - 1].text; - if (catalogPackage.type === 'download') { - statusInfo.urlValidUntil = moment().add(defaults.downloadUrlTimeToLiveInMinutes, 'minutes').toISOString(); - if (responseData.filename) { - statusInfo.url = getCatalogPackageManagerServerOrigin() + '/api/export/' + responseData.filename; - } else { - statusInfo.url = getCatalogPackageManagerServerOrigin() + '/api/export/' + catalogPackage.transactionId + '.tar.gz'; + if ( typeof response.data.status !== "number" ) { + switch(response.data.status) { + case 'upload-progress': + statusInfo.pending = true; + statusInfo.progress = parseFloat(responseData.progress) || 0; + statusInfo.message = calculateUploadProgressMessage(catalogPackage.size, responseData.progress, responseData.bytesSent); + break; + case 'upload-success': + statusInfo.pending = true; + statusInfo.progress = 100; + statusInfo.message = 'Upload completed.'; + statusInfo.transactionId = responseData['transaction_id'] || responseData['transaction-id'] || catalogPackage.transactionId; + break; + case 'upload-error': + statusInfo.error = true; + statusInfo.message = responseData.message; + break; + case 'download-requested': + statusInfo.pending = true; + statusInfo.progress = 25; + statusInfo.transactionId = responseData['transaction_id'] || responseData['transaction-id'] || catalogPackage.transactionId; + break; + case 'pending': + statusInfo.pending = true; + statusInfo.progress = 50; + statusInfo.message = responseData.events[responseData.events.length - 1].text; + break; + case 'success': + statusInfo.success = true; + statusInfo.progress = 100; + statusInfo.message = responseData.events[responseData.events.length - 1].text; + if (catalogPackage.type === 'download') { + statusInfo.urlValidUntil = moment().add(defaults.downloadUrlTimeToLiveInMinutes, 'minutes').toISOString(); + if (responseData.filename) { + statusInfo.url = getCatalogPackageManagerServerOrigin() + '/api/export/' + responseData.filename; + } else { + statusInfo.url = getCatalogPackageManagerServerOrigin() + '/api/export/' + catalogPackage.transactionId + '.tar.gz'; + } } + break; + case 'failure': + statusInfo.error = true; + statusInfo.message = responseData.errors[0].value; + break; + default: + throw new ReferenceError('a status of "request", "success", "failure", "pending", "upload-completed", "upload-error", "download-requested", "upload-progress", "upload-action" is required'); } - break; - case 'failure': + } else { + // typically get here due to unexpected development errors (backend exceptions, down/up load server access issues) statusInfo.error = true; - statusInfo.message = responseData.errors[0].value; - break; - default: - throw new ReferenceError('a status of "request", "success", "failure", "pending", "upload-completed", "upload-error", "download-requested", "upload-progress", "upload-action" is required'); + statusInfo.message = responseData.statusText || 'Error'; } return Object.assign({}, catalogPackage, statusInfo); }