import React, { Component } from 'react'; import PermissionsList from './PermissionsList'; import _ from 'lodash'; import DevTools from 'mobx-react-devtools'; import { inject, observer } from 'mobx-react'; import { Provider } from 'mobx-react'; import { store } from 'app/stores/store'; // import UserPicker from 'app/core/components/UserPicker/UserPicker'; export interface DashboardAcl { id?: number; dashboardId?: number; userId?: number; userLogin?: string; userEmail?: string; teamId?: number; team?: string; permission?: number; permissionName?: string; role?: string; icon?: string; nameHtml?: string; inherited?: boolean; sortName?: string; sortRank?: number; } export interface IProps { error: string; newType: string; dashboardId: number; permissions?: any; isFolder: boolean; } class Permissions extends Component { render() { return ( ); } } @inject('permissions') @observer class PermissionsInner extends Component { // TODO Remove Inner from Name when we get access via ReactContainer dashboardId: any; meta: any; items: DashboardAcl[]; dummyItems: DashboardAcl[]; permissionOptions = [{ value: 1, text: 'View' }, { value: 2, text: 'Edit' }, { value: 4, text: 'Admin' }]; aclTypes = [ { value: 'Group', text: 'Team' }, { value: 'User', text: 'User' }, { value: 'Viewer', text: 'Everyone With Viewer Role' }, { value: 'Editor', text: 'Everyone With Editor Role' }, ]; newType: string; canUpdate: boolean; error: string; readonly duplicateError = 'This permission exists already.'; constructor(props) { super(props); const { dashboardId, permissions, isFolder } = this.props; this.permissionChanged = this.permissionChanged.bind(this); this.typeChanged = this.typeChanged.bind(this); this.removeItem = this.removeItem.bind(this); this.update = this.update.bind(this); permissions.load(dashboardId, isFolder); this.state = { newType: 'Group', }; } componentWillReceiveProps(nextProps) { console.log('nextProps', nextProps); } sortItems(items) { return _.orderBy(items, ['sortRank', 'sortName'], ['desc', 'asc']); } permissionChanged(index: number, permission: number, permissionName: string) { const { permissions } = this.props; // permissions.items[index].updatePermission(permission, permissionName); permissions.updatePermissionOnIndex(index, permission, permissionName); } removeItem(index: number) { const { permissions } = this.props; permissions.removeStoreItem(index); } update() { const { permissions, dashboardId } = this.props; permissions.update(dashboardId); } resetNewType() { this.setState(prevState => { return { ...prevState, newType: 'Group', }; }); } typeChanged(evt) { const { value } = evt.target; const { permissions, dashboardId } = this.props; if (value === 'Viewer' || value === 'Editor') { permissions.addStoreItem({ permission: 1, role: value, dashboardId: dashboardId }, dashboardId); this.resetNewType(); return; } this.setState(prevState => { return { ...prevState, newType: value, }; }); } render() { console.log('PermissionsInner render'); const { error, permissions } = this.props; const { newType } = this.state; return (
Add Permission For
{/*