import React from 'react'; import PropTypes from 'prop-types'; import CopyButton from '../CopyButton'; export default class RevisionPath extends React.Component { constructor(props) { super(props); this.state = { pages: [], isListPage: false, isLinkToListPage: true, }; } componentWillMount() { // whether list page or not const isListPage = this.props.pagePath.match(/\/$/); this.setState({ isListPage }); // whether set link to '/' const behaviorType = this.props.crowi.getConfig()['behaviorType']; const isLinkToListPage = ('crowi-plus' !== behaviorType); this.setState({ isLinkToListPage }); // generate pages obj let splitted = this.props.pagePath.split(/\//); splitted.shift(); // omit first element with shift() if (splitted[splitted.length-1] === '') { splitted.pop(); // omit last element with unshift() } let pages = []; let parentPath = '/'; splitted.forEach((pageName) => { pages.push({ pagePath: parentPath + pageName, pageName: pageName, }); parentPath += pageName + '/'; }); this.setState({ pages }); } showToolTip() { $('#btnCopy').tooltip('show'); setTimeout(() => { $('#btnCopy').tooltip('hide'); }, 1000); } generateLinkElementToListPage(pagePath, isLinkToListPage, isLastElement) { if (isLinkToListPage) { return /; } else if (!isLastElement) { return /; } else { return } } render() { // define styles const rootStyle = { marginRight: "0.2em", } const separatorStyle = { marginLeft: "0.2em", marginRight: "0.2em", } const editButtonStyle = { fontSize: "0.6em", marginLeft: "0.5em", padding: "0 2px", border: 'none', }; const pageLength = this.state.pages.length; const afterElements = []; this.state.pages.forEach((page, index) => { const isLastElement = (index == pageLength-1); // add elements for page afterElements.push( {page.pageName} ); // add elements for '/' afterElements.push( {this.generateLinkElementToListPage(page.pagePath, this.state.isLinkToListPage, isLastElement)} ); }); return ( / {afterElements} ); } } RevisionPath.propTypes = { pagePath: PropTypes.string.isRequired, crowi: PropTypes.object.isRequired, };