1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-03 07:55:36 +00:00

Update draft page (#3036)

* draft-update

* test

* update draft reviewer api

* update draft page

* add file path
This commit is contained in:
Michael An
2019-03-04 22:47:40 +08:00
committed by Daniel Pan
parent 5d4bca7041
commit eee8589223
10 changed files with 727 additions and 109 deletions

View File

@@ -1,14 +1,14 @@
import React from 'react';
import AsyncSelect from 'react-select/lib/Async';
import PropTypes from 'prop-types';
import { gettext } from '../../utils/constants';
import { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';
import { seafileAPI } from '../../utils/seafile-api.js';
import UserSelect from '../user-select.js';
import '../../css/add-reviewer-dialog.css';
const propTypes = {
showReviewerDialog: PropTypes.bool.isRequired,
reviewID: PropTypes.string.isRequired,
draftID: PropTypes.string.isRequired,
toggleAddReviewerDialog: PropTypes.func.isRequired,
reviewers: PropTypes.array.isRequired
};
@@ -27,7 +27,7 @@ class AddReviewerDialog extends React.Component {
}
listReviewers = () => {
seafileAPI.listReviewers(this.props.reviewID).then((res) => {
seafileAPI.listDraftReviewers(this.props.draftID).then((res) => {
this.setState({
reviewers: res.data.reviewers
});
@@ -41,29 +41,9 @@ class AddReviewerDialog extends React.Component {
this.Options = [];
}
loadOptions = (value, callback) => {
if (value.trim().length > 0) {
seafileAPI.searchUsers(value.trim()).then((res) => {
this.Options = [];
for (let i = 0 ; i < res.data.users.length; i++) {
let obj = {};
obj.value = res.data.users[i].name;
obj.email = res.data.users[i].email;
obj.label =
<React.Fragment>
<img src={res.data.users[i].avatar_url} className="avatar reviewer-select-avatar" alt=""/>
<span className='reviewer-select-name'>{res.data.users[i].name}</span>
</React.Fragment>;
this.Options.push(obj);
}
callback(this.Options);
});
}
}
addReviewers = () => {
if (this.state.selectedOption.length > 0 ) {
this.refs.reviewSelect.select.onChange([], { action: 'clear' });
this.refs.reviewSelect.clearSelect();
let reviewers = [];
for (let i = 0; i < this.state.selectedOption.length; i ++) {
reviewers[i] = this.state.selectedOption[i].email;
@@ -72,7 +52,7 @@ class AddReviewerDialog extends React.Component {
loading: true,
errorMsg: [],
});
seafileAPI.addReviewers(this.props.reviewID, reviewers).then((res) => {
seafileAPI.addDraftReviewers(this.props.draftID, reviewers).then((res) => {
if (res.data.failed.length > 0) {
let errorMsg = [];
for (let i = 0 ; i < res.data.failed.length ; i++) {
@@ -95,7 +75,7 @@ class AddReviewerDialog extends React.Component {
deleteReviewer = (event) => {
let reviewer = event.target.getAttribute('name');
seafileAPI.deleteReviewer(this.props.reviewID, reviewer).then((res) => {
seafileAPI.deleteDraftReviewer(this.props.draftID, reviewer).then((res) => {
if (res.data === 200) {
let newReviewers = [];
for (let i = 0; i < this.state.reviewers.length; i ++) {
@@ -116,12 +96,12 @@ class AddReviewerDialog extends React.Component {
<ModalHeader>{gettext('Request a review')}</ModalHeader>
<ModalBody >
<p>{gettext('Add new reviewer')}</p>
<AsyncSelect
className='reviewer-select' isMulti isFocused
loadOptions={this.loadOptions}
<UserSelect
placeholder={gettext('Please enter 1 or more character')}
onChange={this.handleSelectChange}
ref="reviewSelect" isClearable classNamePrefix
onSelectChange={this.handleSelectChange}
ref="reviewSelect"
isMulti={true}
className='reviewer-select'
/>
{this.state.errorMsg.length > 0 &&
this.state.errorMsg.map((item, index = 0, arr) => {