var _ = require('underscore'); var React = require('react/addons'); var remote = require('remote'); var exec = require('exec'); var dialog = remote.require('dialog'); var metrics = require('./Metrics'); var ContainerStore = require('./ContainerStore'); var ContainerSettingsVolumes = React.createClass({ handleChooseVolumeClick: function (dockerVol) { var self = this; dialog.showOpenDialog({properties: ['openDirectory', 'createDirectory']}, function (filenames) { if (!filenames) { return; } var directory = filenames[0]; if (directory) { metrics.track('Chose Directory for Volume'); var volumes = _.clone(self.props.container.Volumes); volumes[dockerVol] = directory; var binds = _.pairs(volumes).map(function (pair) { return pair[1] + ':' + pair[0]; }); ContainerStore.updateContainer(self.props.container.Name, { Binds: binds }, function (err) { if (err) { console.log(err); } }); } }); }, handleRemoveVolumeClick: function (dockerVol) { metrics.track('Removed Volume Directory', { from: 'settings' }); var volumes = _.clone(this.props.container.Volumes); delete volumes[dockerVol]; var binds = _.pairs(volumes).map(function (pair) { return pair[1] + ':' + pair[0]; }); ContainerStore.updateContainer(this.props.container.Name, { Binds: binds }, function (err) { if (err) { console.log(err); } }); }, handleOpenVolumeClick: function (path) { metrics.track('Opened Volume Directory', { from: 'settings' }); exec(['open', path], function (err) { if (err) { throw err; } }); }, render: function () { if (!this.props.container) { return (
); } var self = this; var volumes = _.map(self.props.container.Volumes, function (val, key) { if (!val || val.indexOf(process.env.HOME) === -1) { val = ( No Folder Change Remove ); } else { val = ( {val.replace(process.env.HOME, '~')} Change Remove ); } return (