//Hack for crouton fix. Should eventually put composer in skyquake alt context
import SkyquakeComponent from 'widgets/skyquake_container/skyquakeComponent.jsx';
let NotificationError = null;
+
+import utils from '../libraries/utils';
+
class ComponentBridge extends React.Component {
constructor(props) {
super(props);
this.fullScreenMode = false;
this.panelTabShown = 'descriptor';
//File manager values
- this.files = [];
+ this.files = false;
this.filesState = {};
this.downloadJobs = {};
+ this.containers = [];
+ this.newPathName = '';
//End File manager values
this.bindListeners({
onResize: PanelResizeAction.RESIZE,
closeFileManagerSockets: FileManagerActions.closeFileManagerSockets,
openFileManagerSockets: FileManagerActions.openFileManagerSockets,
openDownloadMonitoringSocketSuccess: FileManagerActions.openDownloadMonitoringSocketSuccess,
- getFilelistSocketSuccess: FileManagerActions.getFilelistSocketSuccess
+ getFilelistSocketSuccess: FileManagerActions.getFilelistSocketSuccess,
+ newPathNameUpdated: FileManagerActions.newPathNameUpdated,
+ createDirectory: FileManagerActions.createDirectory
});
this.exportPublicMethods({
closeFileManagerSockets: this.closeFileManagerSockets.bind(this)
}
updateItem(item) {
+ const self = this;
+ let containers = [];
+ let cpNumber = 0;
if(!document.body.classList.contains('resizing')) {
- this.setState({item: _.cloneDeep(item)});
+ containers = [item].reduce(DescriptorModelFactory.buildCatalogItemFactory(CatalogDataStore.getState().catalogs), []);
+
+ containers.filter(d => DescriptorModelFactory.isConnectionPoint(d)).forEach(d => {
+ d.cpNumber = ++cpNumber;
+ containers.filter(d => DescriptorModelFactory.isVnfdConnectionPointRef(d)).filter(ref => ref.key === d.key).forEach(ref => ref.cpNumber = d.cpNumber);
+ });
+ this.setState({containers: containers, item: _.cloneDeep(item)});
}
SelectionManager.refreshOutline();
}
editCatalogItem(item) {
let self = this;
+ self.closeFileManagerSockets();
if (item && item.uiState) {
item.uiState.isOpenForEdit = true;
if (item.uiState.type !== 'nsd') {
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: normalizedData.id
+ },
+ filesState: filesState
+ }
+ } else {
+ newState = {
+ files: false
+ }
+ }
+
+ this.setState(newState);
}
function normalizeTree(data) {
let f = {
let type = data.type || this.item.uiState.type;
let path = data.path;
let url = data.url;
- this.getInstance().addFile(id, type, path, url);
+ this.getInstance().addFile(id, type, path, url, data.refresh);
}
updateFileLocationInput = (data) => {
let name = data.name;
});
}
addFileSuccess = (data) => {
- let path = data.path;
- let fileName = data.fileName;
- let files = _.cloneDeep(this.files);
- let loadingIndex = files.data[path].push({
- status: 'DOWNLOADING',
- name: path + '/' + fileName
- }) - 1;
- this.setState({files: files});
+ if(!data.refresh) {
+ let path = data.path;
+ let fileName = data.fileName;
+ let files = _.cloneDeep(this.files);
+ let loadingIndex = files.data[path].push({
+ status: 'DOWNLOADING',
+ name: path + '/' + fileName
+ }) - 1;
+ this.setState({files: files});
+ }
}
startWatchingJob = () => {
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);
files: files
})
}
+ newPathNameUpdated = (event) => {
+ const value = event.target.value;
+ this.setState({
+ newPathName: value
+ })
+ }
+ createDirectory = () => {
+ console.log(this.newPathName);
+ this.sendDownloadFileRequst({
+ id: this.item.id,
+ type: this.item.uiState.type,
+ path: this.item.name + '/' + this.newPathName,
+ url: utils.getSearchParams(window.location).dev_download_server || window.location.protocol + '//' + window.location.host,
+ refresh: true
+ });
+ this.setState({
+ newPathName: ''
+ })
+ }
}
export default alt.createStore(ComposerAppStore, 'ComposerAppStore');