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 = (!behaviorType || 'crowi' === 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 + encodeURIComponent(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 = {
marginLeft: '0.5em',
padding: '0 2px',
};
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,
};