app/addons/documents/sidebar/SidebarControllerContainer.js (94 lines of code) (raw):

// Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy of // the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations under // the License. import { connect } from 'react-redux'; import SidebarComponents from './sidebar'; import Action from './actions'; import { getDatabase, getDesignDocPartitioned } from './reducers'; // returns a simple array of design doc IDs const getAvailableDesignDocs = (state) => { const availableDocs = state.designDocs.filter((doc) => { return !doc.isMangoDoc(); }); return _.map(availableDocs, (doc) => { return doc.id; }); }; const getDeleteIndexDesignDoc = (state) => { const designDoc = state.designDocs.find((ddoc) => { return '_design/' + state.deleteIndexModalDesignDocName === ddoc.id; }); return designDoc ? designDoc.dDocModel() : null; }; const selectedNavItem = (selectedItem) => { // resets previous selection and sets new values const settings = { designDocName: '', designDocSection: '', indexName: '', navItem: '', ...selectedItem }; return settings; }; const mapStateToProps = ({ sidebar, databases }, ownProps) => { return { database: getDatabase(sidebar), selectedNav: selectedNavItem(ownProps.selectedNavItem), designDocs: sidebar.designDocs, designDocList: sidebar.designDocList, availableDesignDocIds: getAvailableDesignDocs(sidebar), toggledSections: sidebar.toggledSections, isLoading: sidebar.loading || databases.isLoadingDbInfo, selectedPartitionKey: ownProps.selectedPartitionKey, isDbPartitioned: databases.isDbPartitioned, deleteIndexModalVisible: sidebar.deleteIndexModalVisible, deleteIndexModalText: sidebar.deleteIndexModalText, deleteIndexModalOnSubmit: sidebar.deleteIndexModalOnSubmit, deleteIndexModalIndexName: sidebar.deleteIndexModalIndexName, deleteIndexModalDesignDoc: getDeleteIndexDesignDoc(sidebar), cloneIndexModalVisible: sidebar.cloneIndexModalVisible, cloneIndexModalTitle: sidebar.cloneIndexModalTitle, cloneIndexModalSelectedDesignDoc: sidebar.cloneIndexModalSelectedDesignDoc, cloneIndexModalSelectedDesignDocPartitioned: getDesignDocPartitioned(sidebar, databases.isDbPartitioned), cloneIndexModalNewDesignDocName: sidebar.cloneIndexModalNewDesignDocName, cloneIndexModalNewDesignDocPartitioned: sidebar.cloneIndexModalNewDesignDocPartitioned, cloneIndexModalOnSubmit: sidebar.cloneIndexModalOnSubmit, cloneIndexDesignDocProp: sidebar.cloneIndexDesignDocProp, cloneIndexModalNewIndexName: sidebar.cloneIndexModalNewIndexName, cloneIndexSourceIndexName: sidebar.cloneIndexModalSourceIndexName, cloneIndexSourceDesignDocName: sidebar.cloneIndexModalSourceDesignDocName, cloneIndexModalIndexLabel: sidebar.cloneIndexModalIndexLabel }; }; const mapDispatchToProps = (dispatch) => { return { toggleContent: (designDoc, indexGroup) => { dispatch(Action.toggleContent(designDoc, indexGroup)); }, hideCloneIndexModal: () => { dispatch(Action.hideCloneIndexModal()); }, hideDeleteIndexModal: () => { dispatch(Action.hideDeleteIndexModal()); }, showDeleteIndexModal: (indexName, designDocName, indexLabel, onDelete) => { dispatch(Action.showDeleteIndexModal(indexName, designDocName, indexLabel, onDelete)); }, showCloneIndexModal: (indexName, designDocName, indexLabel, onSubmit) => { dispatch(Action.showCloneIndexModal(indexName, designDocName, indexLabel, onSubmit)); }, selectDesignDoc: (designDoc) => { dispatch(Action.selectDesignDoc(designDoc)); }, updateNewDesignDocName: (designDocName) => { dispatch(Action.updateNewDesignDocName(designDocName)); }, updateNewDesignDocPartitioned: (isPartitioned) => { dispatch(Action.updateNewDesignDocPartitioned(isPartitioned)); }, setNewCloneIndexName: (indexName) => { dispatch(Action.setNewCloneIndexName(indexName)); } }; }; const SidebarControllerContainer = connect( mapStateToProps, mapDispatchToProps )(SidebarComponents.SidebarController); export default SidebarControllerContainer;