blob: e8c6e2b5dc17a42e31394597136e365411170a66 [file] [log] [blame]
// 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 React from 'react';
import app from '../../../app';
const activeTasksHelpers = {
getTimeInfo (timeStamp) {
var timeMessage = [
app.helpers.formatDate(timeStamp),
app.helpers.getDateFromNow(timeStamp)
];
return timeMessage;
},
getDatabaseFieldMessage (item) {
var type = item.type;
var databaseFieldMessage = [];
if (type === 'replication') {
databaseFieldMessage.push('From: ' + item.source);
databaseFieldMessage.push('To: ' + item.target);
} else if (type === 'indexer') {
databaseFieldMessage.push(item.database);
databaseFieldMessage.push('(View: ' + item.design_document + ')');
} else {
databaseFieldMessage.push(item.database);
}
return databaseFieldMessage;
},
getProgressMessage (item) {
var progressMessage = [];
var type = item.type;
if (_.has(item, 'progress')) {
progressMessage.push('Progress: ' + item.progress + '%');
}
if (type === 'indexer') {
progressMessage.push(
'Processed ' + item.changes_done + ' of ' + item.total_changes + ' changes.'
);
} else if (type === 'replication') {
progressMessage.push(item.docs_written + ' docs written.');
if (_.has(item, 'changes_pending')) {
progressMessage.push(item.changes_pending + ' pending changes.');
}
}
if (_.has(item, 'changes_done')) {
progressMessage.push(item.changes_done + ' Changes done.');
}
return progressMessage;
},
getSourceSequence (item) {
return item.source_seq;
}
};
export default class ActiveTaskTableBodyContents extends React.Component {
getInfo = (item) => {
return {
type : item.type,
objectField: activeTasksHelpers.getDatabaseFieldMessage(item),
started_on: activeTasksHelpers.getTimeInfo(item.started_on),
updated_on: activeTasksHelpers.getTimeInfo(item.updated_on),
pid: item.pid.replace(/[<>]/g, ''),
progress: activeTasksHelpers.getProgressMessage(item),
};
};
multilineMessage = (messageArray, optionalClassName) => {
if (!optionalClassName) {
optionalClassName = '';
}
var cssClasses = 'multiline-active-tasks-message ' + optionalClassName;
return messageArray.map(function (msgLine, iterator) {
return <p key={iterator} className={cssClasses}>{msgLine}</p>;
});
};
render() {
var rowData = this.getInfo(this.props.item);
var objectFieldMsg = this.multilineMessage(rowData.objectField, 'to-from-database');
var startedOnMsg = this.multilineMessage(rowData.started_on, 'time');
var updatedOnMsg = this.multilineMessage(rowData.updated_on, 'time');
var progressMsg = this.multilineMessage(rowData.progress);
return (
<tr>
<td>{rowData.type}</td>
<td>{objectFieldMsg}</td>
<td>{startedOnMsg}</td>
<td>{updatedOnMsg}</td>
<td>{rowData.pid}</td>
<td>{progressMsg}</td>
</tr>
);
}
}