});
});
};
- // Composer.update = function(req) {
- // var api_server = req.query['api_server'];
- // var catalogType = req.params.catalogType;
- // var id = req.params.id;
- // var data = req.body;
- // console.log('Updating', catalogType, 'id', id, 'on', api_server);
- // var jsonData = {};
- // jsonData[catalogType] = {};
- // jsonData[catalogType] = data;
- // return new Promise(function(resolve, reject) {
- // var requestHeaders = {};
- // _.extend(requestHeaders, constants.HTTP_HEADERS.accept.data, constants.HTTP_HEADERS.content_type.data, {
- // 'Authorization': req.get('Authorization')
- // });
- // request({
- // uri: utils.confdPort(api_server) + APIVersion + '/api/config/' + catalogType + '-catalog' + '/' + catalogType + '/' + id,
- // method: 'PUT',
- // headers: requestHeaders,
- // forever: constants.FOREVER_ON,
- // rejectUnauthorized: false,
- // json: jsonData
- // }, function(error, response, body) {
- // if (utils.validateResponse('Composer.update', error, response, body, resolve, reject)) {
- // resolve({
- // statusCode: response.statusCode
- // });
- // }
- // });
- // });
- //
+ Composer.updateSave = function(req) {
+ var api_server = req.query['api_server'];
+ var catalogType = req.params.catalogType;
+ var id = req.params.id;
+ var data = req.body;
+ console.log('Updating', catalogType, 'id', id, 'on', api_server);
+ var jsonData = {};
+ jsonData[catalogType] = {};
+ jsonData[catalogType] = data;
+ return new Promise(function(resolve, reject) {
+ var requestHeaders = {};
+ _.extend(requestHeaders, constants.HTTP_HEADERS.accept.data, constants.HTTP_HEADERS.content_type.data, {
+ 'Authorization': req.get('Authorization')
+ });
+ request({
+ uri: utils.confdPort(api_server) + APIVersion + '/api/config/' + catalogType + '-catalog' + '/' + catalogType + '/' + id,
+ method: 'PUT',
+ headers: requestHeaders,
+ forever: constants.FOREVER_ON,
+ rejectUnauthorized: false,
+ json: jsonData
+ }, function(error, response, body) {
+ if (utils.validateResponse('Composer.update', error, response, body, resolve, reject)) {
+ resolve({
+ statusCode: response.statusCode
+ });
+ }
+ });
+ });
+ }
Composer.update = function(req) {
console.log(' Updating file', req.file.originalname, 'as', req.file.filename);
var download_host = req.query['dev_download_server'];
if (!download_host) {
- download_host = req.protocol + '://' + req.headers.host;
+ download_host = api_server + ':' + utils.getPortForProtocol(req.protocol);
}
var input = {
'external-url': download_host + '/composer/update/' + req.file.filename,
var download_host = req.query['dev_download_server'];
if (!download_host) {
- download_host = req.protocol + '://' + req.headers.host;
+ download_host = api_server + ':' + utils.getPortForProtocol(req.protocol);
}
return new Promise(function(resolve, reject) {
var package_type = req.query['package_type'].toUpperCase();
var package_path = req.query['package_path'];
if (!download_host) {
- download_host = req.protocol + '://' + req.headers.host;
+ download_host = api_server + ':' + utils.getPortForProtocol(req.protocol);
}
return new Promise(function(resolve, reject) {
data: data.body
});
}
+ }).catch(function(err) {
+ console.log('Failed to retrieve FileManager.list')
+ resolve(err);
})
}
})
forever: constants.FOREVER_ON,
rejectUnauthorized: false,
}, function(error, response, body) {
- if (utils.validateResponse('restconfAPI.streams', error, response, body, resolve, reject)) {
+ if (utils.validateResponse('FileManager.job', error, response, body, resolve, reject)) {
var data = JSON.parse(response.body)['rw-pkg-mgmt:download-jobs'];
var returnData = [];
data && data.job.map(function(d) {
import EditForwardingGraphPaths from './EditorForwardingGraph/EditForwardingGraphPaths'
import SelectionManager from '../libraries/SelectionManager'
import DescriptorModelIconFactory from '../libraries/model/IconFactory'
-
import FileManager from './filemanager/FileManager.jsx';
+import ConfigPrimitiveParameters from './ConfigPrimitiveParameters/ConfigPrimitiveParameters'
import '../styles/CanvasPanel.scss'
const CanvasPanel = React.createClass({
<button className={isDescriptorView ? '-selected' : ''} onClick={ComposerAppActions.showDescriptor}>
Descriptor
</button>
- <button className={!isDescriptorView ? '-selected' : ''} onClick={ComposerAppActions.showAssets}>
- Assets
- </button>
+ {
+ this.props.files ?
+ <button className={!isDescriptorView ? '-selected' : ''} onClick={ComposerAppActions.showAssets}>
+ Assets
+ </button>
+ : null
+ }
</div>
</div>
)
+ //CanvasPanelTray panel to display
+ let displayedPanel = null;
+ switch (this.props.displayedPanel) {
+ case 'forwarding' : displayedPanel = (<EditForwardingGraphPaths containers={this.props.containers} />); break;
+ case 'parameter' : displayedPanel = (<ConfigPrimitiveParameters containers={this.props.containers} />); break;
+ default: displayedPanel = (<div><p className="welcome-message">Please select a tab</p></div>); break;
+ }
return (
<div id="canvasPanelDiv" className="CanvasPanel" style={style} onDragOver={this.onDragOver} onDrop={this.onDrop}>
<div onDoubleClick={this.onDblClickOpenFullScreen} className="CanvasPanelHeader panel-header" data-resizable="limit_bottom">
<CanvasZoom zoom={this.props.zoom} style={{bottom: this.props.layout.bottom + 20}}/>
: null
}
- <CanvasPanelTray layout={this.props.layout} show={isEditingNSD && isDescriptorView}>
- <EditForwardingGraphPaths containers={this.props.containers} />
+ <CanvasPanelTray layout={this.props.layout} displayedPanel={this.props.displayedPanel} show={isEditingNSD && isDescriptorView}>
+ {displayedPanel}
</CanvasPanelTray>
</div>
);
this.fullScreenMode = false;
this.panelTabShown = 'descriptor';
//File manager values
- this.files = [];
+ this.files = false;
this.filesState = {};
this.downloadJobs = {};
//End File manager values
this.setState({showJSONViewer: false});
}
- toggleCanvasPanelTray() {
+ toggleCanvasPanelTray(event) {
const layout = this.layout;
- if (layout.bottom > 25) {
+ const attrMap = event.target.attributes;
+ let panelEvent = null;
+ for(let k in attrMap) {
+ if(attrMap[k].name == 'data-event') {
+ panelEvent = attrMap[k].nodeValue;
+ }
+ }
+ if ((layout.bottom > 25) && ((panelEvent == this.displayedPanel) || panelEvent == 'arrow')) {
this.closeCanvasPanelTray();
} else {
this.openCanvasPanelTray();
}
+ this.setState({displayedPanel: panelEvent})
}
openCanvasPanelTray() {
let self = this;
let filesState = null;
if (self.fileMonitoringSocketID) {
- filesState = addInputState( _.cloneDeep(this.filesState),data);
- // filesState = _.merge(self.filesState, addInputState({},data));
- let normalizedData = normalizeTree(data);
- this.setState({
- files: {
- data: _.mergeWith(normalizedData.data, self.files.data, function(obj, src) {
- return _.uniqBy(obj? obj.concat(src) : src, 'name');
- }),
- id: self.files.id || normalizedData.id
- },
- filesState: filesState
- });
+ let newState = {};
+ if(data.hasOwnProperty('contents')) {
+ filesState = addInputState( _.cloneDeep(this.filesState),data);
+ // filesState = _.merge(self.filesState, addInputState({},data));
+ let normalizedData = normalizeTree(data);
+ newState = {
+ files: {
+ data: _.mergeWith(normalizedData.data, self.files.data, function(obj, src) {
+ return _.uniqBy(obj? obj.concat(src) : src, 'name');
+ }),
+ id: self.files.id || normalizedData.id
+ },
+ filesState: filesState
+ }
+ } else {
+ newState = {
+ files: false
+ }
+ }
+
+ this.setState(newState);
}
function normalizeTree(data) {
let f = {
let self = this;
let ws = window.multiplexer.channel(id);
let downloadJobs = _.cloneDeep(self.downloadJobs);
- let newFiles = {};
+ let newFiles = false;
ws.onmessage = (socket) => {
if (self.files && self.files.length > 0) {
let jobs = [];
openFileManagerSockets(i) {
let self = this;
let item = i || self.item;
- this.files = {data:[]};
// this.closeFileManagerSockets();
this.getInstance().openFileMonitoringSocket(item.id, item.uiState.type).then(function() {
// // self.getInstance().openDownloadMonitoringSocket(item.id);