diff --git a/frontend/src/pages/org-admin/index.js b/frontend/src/pages/org-admin/index.js index 82a6f493ed..ae71320bc5 100644 --- a/frontend/src/pages/org-admin/index.js +++ b/frontend/src/pages/org-admin/index.js @@ -56,20 +56,11 @@ class Org extends React.Component { let { isSidePanelClosed, currentTab } = this.state; return (
- +
- + @@ -77,11 +68,7 @@ class Org extends React.Component { - + diff --git a/frontend/src/pages/org-admin/main-panel-topbar.js b/frontend/src/pages/org-admin/main-panel-topbar.js index 07d724ae86..988e5a610d 100644 --- a/frontend/src/pages/org-admin/main-panel-topbar.js +++ b/frontend/src/pages/org-admin/main-panel-topbar.js @@ -1,4 +1,4 @@ -import React, { Component, Fragment } from 'react'; +import React, { Component } from 'react'; import PropTypes from 'prop-types'; import Account from '../../components/common/account'; diff --git a/frontend/src/pages/org-admin/org-admin-list.js b/frontend/src/pages/org-admin/org-admin-list.js index 79083b8ede..04666c77fa 100644 --- a/frontend/src/pages/org-admin/org-admin-list.js +++ b/frontend/src/pages/org-admin/org-admin-list.js @@ -26,10 +26,6 @@ class OrgAdminList extends React.Component { this.props.initOrgAdmin(); } - componentWillReceiveProps(nextProps) { - this.props.initOrgAdmin(); - } - onFreezedItem = () => { this.setState({isItemFreezed: true}); } diff --git a/frontend/src/pages/org-admin/org-department-item.js b/frontend/src/pages/org-admin/org-department-item.js index 2af7f95808..d81107ef92 100644 --- a/frontend/src/pages/org-admin/org-department-item.js +++ b/frontend/src/pages/org-admin/org-department-item.js @@ -1,4 +1,4 @@ -import React, { Component, Fragment } from 'react'; +import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { Link } from '@reach/router'; import { seafileAPI } from '../../utils/seafile-api'; @@ -32,6 +32,7 @@ class OrgDepartmentItem extends React.Component { isShowAddMemberDialog: false, isShowAddDepartDialog: false, isItemFreezed: false, + isSubdepartChanged: false, groupName: '', }; } @@ -79,9 +80,7 @@ class OrgDepartmentItem extends React.Component { } toggleItemFreezed = (isFreezed) => { - this.setState({ - isItemFreezed: isFreezed - }); + this.setState({ isItemFreezed: isFreezed }); } toggleAddRepoDialog = () => { @@ -96,6 +95,10 @@ class OrgDepartmentItem extends React.Component { this.setState({ isShowAddDepartDialog: !this.state.isShowAddDepartDialog}); } + onDepartChanged = () => { + this.setState({ isSubdepartChanged: !this.state.isSubdepartChanged }); + } + componentWillMount() { const groupID = this.props.groupID; this.listOrgGroupRepo(groupID); @@ -115,14 +118,14 @@ class OrgDepartmentItem extends React.Component { const topBtn = 'btn btn-secondary operation-item'; const topbarChildren = ( - {groupID && + {groupID && + } - {groupID && + {groupID && + } - {groupID && + {groupID && + } {this.state.isShowAddMemberDialog && ( @@ -145,7 +148,7 @@ class OrgDepartmentItem extends React.Component { {this.state.isShowAddDepartDialog && ( @@ -176,7 +179,7 @@ class OrgDepartmentItem extends React.Component {
- +
diff --git a/frontend/src/pages/org-admin/org-departments-list.js b/frontend/src/pages/org-admin/org-departments-list.js index 4bc1aac990..2e695fb4da 100644 --- a/frontend/src/pages/org-admin/org-departments-list.js +++ b/frontend/src/pages/org-admin/org-departments-list.js @@ -1,9 +1,9 @@ -import React, { Component, Fragment } from 'react'; +import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import moment from 'moment'; import { Link } from '@reach/router'; import { seafileAPI } from '../../utils/seafile-api'; -import { serviceURL, siteRoot, gettext, orgID, lang } from '../../utils/constants'; +import { siteRoot, gettext, orgID, lang } from '../../utils/constants'; import { Utils } from '../../utils/utils.js'; import ModalPortal from '../../components/modal-portal'; import AddDepartDialog from '../../components/dialog/org-add-department-dialog'; @@ -63,13 +63,12 @@ class OrgDepartmentsList extends React.Component { this.setState({ isShowAddDepartDialog: !this.state.isShowAddDepartDialog}); } - componentWillMount() { + componentDidMount() { this.listDepartGroups(this.props.groupID); - window.onDepartChanged = this.onDepartChanged; } componentWillReceiveProps(nextProps) { - if (this.props.groupID !== nextProps.groupID) { + if (this.props.groupID !== nextProps.groupID || this.props.isSubdepartChanged !== nextProps.isSubdepartChanged) { this.listDepartGroups(nextProps.groupID); } } @@ -82,8 +81,9 @@ class OrgDepartmentsList extends React.Component { const topbarChildren = ( - {!this.props.groupID && + {!this.props.groupID && + } {this.state.isShowAddDepartDialog && ( @@ -104,7 +104,9 @@ class OrgDepartmentsList extends React.Component {
-

{header}

+
+

{header}

+
{groups && groups.length > 0 ? @@ -204,6 +206,7 @@ const GroupItemPropTypes = { group: PropTypes.object.isRequired, showSetGroupQuotaDialog: PropTypes.func.isRequired, showDeleteDepartDialog: PropTypes.func.isRequired, + isSubdepartChanged: PropTypes.bool, }; GroupItem.propTypes = GroupItemPropTypes; diff --git a/frontend/src/pages/org-admin/org-departments.js b/frontend/src/pages/org-admin/org-departments.js index 9a7a17b193..6e63088158 100644 --- a/frontend/src/pages/org-admin/org-departments.js +++ b/frontend/src/pages/org-admin/org-departments.js @@ -1,5 +1,4 @@ import React from 'react'; -import PropTypes from 'prop-types'; import '../../css/org-department-item.css'; class OrgDepartments extends React.Component { diff --git a/frontend/src/pages/org-admin/org-groups.js b/frontend/src/pages/org-admin/org-groups.js index d88dd6672e..6fa15a2499 100644 --- a/frontend/src/pages/org-admin/org-groups.js +++ b/frontend/src/pages/org-admin/org-groups.js @@ -1,4 +1,5 @@ import React, { Component, Fragment } from 'react'; +import PropTypes from 'prop-types'; import { Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap'; import OrgGroupInfo from '../../models/org-group'; import Toast from '../../components/toast'; @@ -100,7 +101,8 @@ class OrgGroups extends Component { onUnfreezedItem={this.onUnfreezedItem} deleteGroupItem={this.deleteGroupItem} /> - )})} + ); + })}
@@ -116,6 +118,14 @@ class OrgGroups extends Component { } } +const GroupItemPropTypes = { + group: PropTypes.object.isRequired, + isItemFreezed: PropTypes.bool.isRequired, + onFreezedItem: PropTypes.func.isRequired, + onUnfreezedItem: PropTypes.func.isRequired, + deleteGroupItem: PropTypes.func.isRequired, +}; + class GroupItem extends React.Component { constructor(props) { @@ -230,4 +240,6 @@ class GroupItem extends React.Component { } +GroupItem.propTypes = GroupItemPropTypes; + export default OrgGroups; diff --git a/frontend/src/pages/org-admin/org-links.js b/frontend/src/pages/org-admin/org-links.js index 682bedd725..3f1a0e8735 100644 --- a/frontend/src/pages/org-admin/org-links.js +++ b/frontend/src/pages/org-admin/org-links.js @@ -1,4 +1,4 @@ -import React, { Component, Fragment } from 'react'; +import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import moment from 'moment'; import { seafileAPI } from '../../utils/seafile-api'; diff --git a/frontend/src/pages/org-admin/org-logs-file-audit.js b/frontend/src/pages/org-admin/org-logs-file-audit.js index 2d1445d2f1..778697ae91 100644 --- a/frontend/src/pages/org-admin/org-logs-file-audit.js +++ b/frontend/src/pages/org-admin/org-logs-file-audit.js @@ -129,6 +129,9 @@ const propTypes = { filterUser: PropTypes.func.isRequired, filterRepo: PropTypes.func.isRequired, isItemFreezed: PropTypes.bool.isRequired, + fileEvent: PropTypes.object.isRequired, + userSelected: PropTypes.string, + repoSelected: PropTypes.string, }; class FileAuditItem extends React.Component { diff --git a/frontend/src/pages/org-admin/org-logs-perm-audit.js b/frontend/src/pages/org-admin/org-logs-perm-audit.js index 362664a64e..1f3e571699 100644 --- a/frontend/src/pages/org-admin/org-logs-perm-audit.js +++ b/frontend/src/pages/org-admin/org-logs-perm-audit.js @@ -111,6 +111,7 @@ const propTypes = { filterUser: PropTypes.func.isRequired, isItemFreezed: PropTypes.bool.isRequired, userSelected: PropTypes.string.isRequired, + permEvent: PropTypes.object.isRequired, }; class PermAuditItem extends React.Component { diff --git a/frontend/src/pages/org-admin/org-logs.js b/frontend/src/pages/org-admin/org-logs.js index 3b17fc31c0..115ca62aeb 100644 --- a/frontend/src/pages/org-admin/org-logs.js +++ b/frontend/src/pages/org-admin/org-logs.js @@ -1,4 +1,5 @@ import React, { Component, Fragment } from 'react'; +import PropTypes from 'prop-types'; import { Link } from '@reach/router'; import { siteRoot, gettext } from '../../utils/constants'; import MainPanelTopbar from './main-panel-topbar'; @@ -22,13 +23,22 @@ class OrgLogs extends Component {
  • this.tabItemClick('logadmin')}> - {gettext('File Access')} + {gettext('File Access')} +
  • this.tabItemClick('file-update')}> - {gettext('File Update')} + {gettext('File Update')} +
  • this.tabItemClick('perm-audit')}> - {gettext('Permission')} + {gettext('Permission')} +
@@ -40,4 +50,11 @@ class OrgLogs extends Component { } } +const propTypes = { + currentTab: PropTypes.string.isRequired, + tabItemClick: PropTypes.func.isRequired, +}; + +OrgLogs.propTypes = propTypes; + export default OrgLogs; diff --git a/frontend/src/pages/org-admin/org-user-item.js b/frontend/src/pages/org-admin/org-user-item.js index f7ec4c21bc..52c5ca54c1 100644 --- a/frontend/src/pages/org-admin/org-user-item.js +++ b/frontend/src/pages/org-admin/org-user-item.js @@ -7,6 +7,7 @@ import Toast from '../../components/toast'; import UserStatusEditor from '../../components/select-editor/user-status-editor'; const propTypes = { + user: PropTypes.object, currentTab: PropTypes.string, toggleRevokeAdmin: PropTypes.func, isItemFreezed: PropTypes.bool.isRequired, diff --git a/frontend/src/pages/org-admin/org-users.js b/frontend/src/pages/org-admin/org-users.js index 671b467d7d..6dd44ec379 100644 --- a/frontend/src/pages/org-admin/org-users.js +++ b/frontend/src/pages/org-admin/org-users.js @@ -1,4 +1,5 @@ import React, { Component, Fragment } from 'react'; +import PropTypes from 'prop-types'; import OrgUsersList from './org-users-list'; import OrgAdminList from './org-admin-list'; import MainPanelTopbar from './main-panel-topbar'; @@ -9,7 +10,7 @@ import InviteUserDialog from '../../components/dialog/org-admin-invite-user-dial import Toast from '../../components/toast'; import { seafileAPI } from '../../utils/seafile-api'; import OrgUserInfo from '../../models/org-user'; -import { siteRoot, gettext, invitationLink, orgID } from '../../utils/constants'; +import { gettext, invitationLink, orgID } from '../../utils/constants'; class OrgUsers extends Component { @@ -133,13 +134,13 @@ class OrgUsers extends Component { topbarChildren = ( - {this.state.isShowAddOrgAdminDialog && - - - - } + {this.state.isShowAddOrgAdminDialog && + + + + } ); } else if (this.props.currentTab === 'users') { @@ -206,4 +207,11 @@ class OrgUsers extends Component { } } +const propTypes = { + currentTab: PropTypes.string.isRequired, + tabItemClick: PropTypes.func.isRequired, +}; + +OrgUsers.propTypes = propTypes; + export default OrgUsers;