+ |
+
+ {this.state.isTableRenaming &&
+
+ }
+ {!this.state.isTableRenaming &&
+ {table.name}
+ }
+ |
+ {table.modifier} |
+ {moment(table.mtime).fromNow()} |
+
+ {this.state.active &&
+
+
+
+
+ {gettext('Rename')}
+ {gettext('Delete')}
+
+
+ }
+ {this.state.isTableDeleting &&
+
+ }
+ |
+
+ );
+ }
+}
+
+Table.propTypes = tablePropTypes;
+
+
+const workspacePropTypes = {
+ workspace: PropTypes.object.isRequired,
+ renameWorkspace: PropTypes.func.isRequired,
+ deleteWorkspace: PropTypes.func.isRequired,
+};
+
+class Workspace extends Component {
+
+ constructor(props) {
+ super(props);
+ this.state = {
+ tableList: this.props.workspace.table_list,
+ errorMsg: '',
+ isWorkspaceRenaming: false,
+ isWorkspaceDeleting: false,
+ isShowAddTableDialog: false,
+ dropdownOpen: false,
+ };
+ }
+
+ onAddTable = () => {
+ this.setState({
+ isShowAddTableDialog: !this.state.isShowAddTableDialog,
+ });
+ }
+
+ createTable = (tableName) => {
+ let workspaceID = this.props.workspace.id;
+ seafileAPI.createTable(workspaceID, tableName).then((res) => {
+ this.state.tableList.push(res.data.table);
+ this.setState({tableList: this.state.tableList});
+ }).catch((error) => {
+ if(error.response) {
+ this.setState({errorMsg: gettext('Error')});
+ }
+ });
+ this.onAddTable();
+ }
+
+ renameTable = (oldTableName, newTableName) => {
+ let workspaceID = this.props.workspace.id;
+ seafileAPI.renameTable(workspaceID, oldTableName, newTableName).then((res) => {
+ let tableList = this.state.tableList.map((table) => {
+ if (table.name === oldTableName) {
+ table = res.data.table;
+ }
+ return table;
+ });
+ this.setState({tableList: tableList});
+ }).catch((error) => {
+ if(error.response) {
+ this.setState({errorMsg: gettext('Error')});
+ }
+ });
+ }
+
+ deleteTable = (tableName) => {
+ let workspaceID = this.props.workspace.id;
+ seafileAPI.deleteTable(workspaceID, tableName).then(() => {
+ let tableList = this.state.tableList.filter(table => {
+ return table.name !== tableName;
+ });
+ this.setState({tableList: tableList});
+ }).catch((error) => {
+ if(error.response) {
+ this.setState({errorMsg: gettext('Error')});
+ }
+ });
+ }
+
+ onRenameWorkspaceCancel = () => {
+ this.setState({isWorkspaceRenaming: !this.state.isWorkspaceRenaming});
+ }
+
+ onRenameWorkspaceConfirm = (newName) => {
+ let workspace = this.props.workspace;
+ this.props.renameWorkspace(workspace, newName);
+ this.onRenameWorkspaceCancel();
+ }
+
+ onDeleteWorkspaceCancel = () => {
+ this.setState({isWorkspaceDeleting: !this.state.isWorkspaceDeleting});
+ }
+
+ onDeleteWorkspaceSubmit = () => {
+ let workspace = this.props.workspace;
+ this.props.deleteWorkspace(workspace);
+ this.onDeleteWorkspaceCancel();
}
dropdownToggle = () => {
@@ -42,63 +222,89 @@ class Item extends Component {
}
render() {
- let item = this.props.item;
+ let workspace = this.props.workspace;
return(