@ytsaurus/ui 1.69.0 → 1.70.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/public/build/assets-manifest.json +15 -15
- package/dist/public/build/css/groups.ed9ded1f.chunk.css +2 -0
- package/dist/public/build/css/groups.ed9ded1f.chunk.css.map +1 -0
- package/dist/public/build/js/cluster-page-wrapper.573e8598.chunk.js +2 -0
- package/dist/public/build/js/{cluster-page-wrapper.ee23d43b.chunk.js.map → cluster-page-wrapper.573e8598.chunk.js.map} +1 -1
- package/dist/public/build/js/groups.38f0df6f.chunk.js +2 -0
- package/dist/public/build/js/groups.38f0df6f.chunk.js.map +1 -0
- package/dist/public/build/js/main.38e39f6e.js +3 -0
- package/dist/public/build/js/main.38e39f6e.js.map +1 -0
- package/dist/public/build/js/{runtime.c701c84d.js → runtime.44a1d4a3.js} +2 -2
- package/dist/public/build/js/{runtime.c701c84d.js.map → runtime.44a1d4a3.js.map} +1 -1
- package/dist/public/build/js/users.58b85268.chunk.js +2 -0
- package/dist/public/build/js/users.58b85268.chunk.js.map +1 -0
- package/dist/public/build/manifest.json +12 -12
- package/package.json +2 -2
- package/dist/public/build/css/groups.7e103f52.chunk.css +0 -2
- package/dist/public/build/css/groups.7e103f52.chunk.css.map +0 -1
- package/dist/public/build/js/cluster-page-wrapper.ee23d43b.chunk.js +0 -2
- package/dist/public/build/js/groups.ea480cb3.chunk.js +0 -2
- package/dist/public/build/js/groups.ea480cb3.chunk.js.map +0 -1
- package/dist/public/build/js/main.e5f238db.js +0 -3
- package/dist/public/build/js/main.e5f238db.js.map +0 -1
- package/dist/public/build/js/users.726d69e0.chunk.js +0 -2
- package/dist/public/build/js/users.726d69e0.chunk.js.map +0 -1
- /package/dist/public/build/js/{main.e5f238db.js.LICENSE.txt → main.38e39f6e.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"js/groups.ea480cb3.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/ExpandIcon/ExpandIcon.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/groups.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/groups.ts","webpack://@ytsaurus/ui/./src/ui/pages/groups/GroupsPageFilters/GroupsPageFilters.tsx","webpack://@ytsaurus/ui/./src/ui/pages/groups/GroupEditorDialog/GroupEditorDialog.tsx","webpack://@ytsaurus/ui/./src/ui/pages/groups/GroupsPageTable/GroupsPageTable.tsx","webpack://@ytsaurus/ui/./src/ui/pages/groups/GroupsPage.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport Icon from '../../components/Icon/Icon';\n\nimport './ExpandIcon.scss';\n\nconst block = cn('expand-icon');\n\nExpandIcon.propTypes = {\n className: PropTypes.string,\n\n expanded: PropTypes.bool,\n visible: PropTypes.bool,\n onClick: PropTypes.func,\n\n data: PropTypes.any,\n};\n\nexport default function ExpandIcon({className, data, expanded, visible, onClick}) {\n const icon = expanded ? 'angle-up' : 'angle-down';\n const onClickCb = React.useCallback(() => {\n if (onClick) {\n onClick(data);\n }\n }, [data, onClick]);\n\n return (\n <span\n className={block(\n {visible: Boolean(visible), clickable: onClick !== undefined},\n className,\n )}\n onClick={onClickCb}\n >\n <Icon awesome={icon} />\n </span>\n );\n}\n","import cloneDeep_ from 'lodash/cloneDeep';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport compact_ from 'lodash/compact';\n\nimport {createSelector} from 'reselect';\nimport {ROOT_GROUP_NAME} from '../../constants/groups';\nimport {compareWithUndefined, orderTypeToOrderK} from '../../utils/sort-helpers';\n\nimport {concatByAnd} from '../../common/hammer/predicate';\nimport hammer from '../../common/hammer';\nimport {FlagType, flags} from '../../utils';\nimport type {RootState} from '../../store/reducers';\nimport type {Group} from '../../store/reducers/groups/table';\n\n// Table\n\nexport const getGroupsTableDataState = (state: RootState) => state.groups.table;\n\nconst getGroups = (state: RootState) => state.groups.table.groups;\nexport const getGroupsNameFilter = (state: RootState) => state.groups.table.nameFilter;\nexport const getGroupsSort = (state: RootState) => state.groups.table.sort;\nexport const getGroupsExpanded = (state: RootState) => state.groups.table.expanded;\n\nexport type GroupsTreeNode = Group & {\n parent?: string;\n children: GroupsTreeNode[];\n leaves: GroupsTreeNode[];\n shift?: number;\n hasChildren?: boolean;\n expanded?: boolean;\n};\n\ntype GroupsTree = Record<string, GroupsTreeNode>;\n\nexport const getGroupsTree = createSelector([getGroups], (groups) => {\n const res: GroupsTree = groups.reduce((acc: GroupsTree, item) => {\n acc[item.name] = {...item, children: [], leaves: []};\n return acc;\n }, {});\n const root = {children: [], leaves: [], name: ''};\n res[ROOT_GROUP_NAME] = root;\n\n const hasChildren: Record<string, boolean> = {};\n forEach_(res, (item: GroupsTreeNode) => {\n if (item === root) {\n return;\n }\n let {memberOf = []} = item;\n if (memberOf.length === 0) {\n memberOf = [ROOT_GROUP_NAME];\n }\n memberOf.forEach((parent) => {\n hasChildren[parent] = true;\n /**\n * Copy of the item is reuired because\n * a group might be a member of many other groups\n * i.e. different copies will have different parent field\n */\n const itemCopy = {...item, parent};\n res[parent].children.push(itemCopy);\n item.parent = parent;\n });\n });\n hammer.treeList.treeForEach(res[ROOT_GROUP_NAME], (item: GroupsTreeNode, depth: number) => {\n item.shift = depth - 1; // -1 cause <Root> is not visible\n item.hasChildren = hasChildren[item.name!];\n });\n return res;\n});\n\nconst getGroupsTreeFiltered = createSelector(\n [getGroupsTree, getGroupsNameFilter],\n (tree, nameFilter) => {\n const root = tree[ROOT_GROUP_NAME];\n const predicates = compact_([\n nameFilter &&\n ((node: GroupsTreeNode) => {\n return node === root || -1 !== node.name!.indexOf(nameFilter);\n }),\n ]);\n\n const res = hammer.treeList.filterTree(root, concatByAnd(...predicates));\n return res;\n },\n);\n\nconst getGroupsTreeFilteredAndExpanded = createSelector(\n [getGroupsTreeFiltered, getGroupsExpanded],\n (root, expanded) => {\n const res = cloneDeep_(root);\n hammer.treeList.treeForEach(res.children, (node: GroupsTreeNode) => {\n const {name} = node;\n if (!expanded[name]) {\n node.children = [];\n }\n });\n return res;\n },\n);\n\nconst GROUP_FIELDS = {\n name: {\n get(group: {name: string}) {\n return group.name;\n },\n compareFn: compareWithUndefined,\n },\n idm: {\n get(group: {idm: string}) {\n return group.idm;\n },\n compareFn: compareWithUndefined,\n },\n size: {\n get({members = []}: {members: string[]}) {\n return members.length;\n },\n },\n};\n\nconst getGroupsTreeFilteredAndSorted = createSelector(\n [getGroupsTreeFilteredAndExpanded, getGroupsSort],\n (root, {column, order}) => {\n const {orderK, undefinedOrderK} = orderTypeToOrderK(order);\n const res = hammer.treeList.sortTree(\n {...root},\n {\n field: column,\n asc: orderK === 1,\n undefinedAsk: undefinedOrderK === 1,\n },\n GROUP_FIELDS,\n );\n return res;\n },\n);\n\nexport const getGroupsFlattenTree = createSelector(\n [getGroupsTreeFilteredAndSorted],\n (root): GroupsTreeNode[] => {\n return hammer.treeList.flattenTree(root);\n },\n);\n\n// Editor\nexport const getGroupEditorData = (state: RootState) => state.groups.editor;\nexport const getGroupEditorVisible = (state: RootState) => state.groups.editor.groupName.length > 0;\nexport const getGroupEditorGroupName = (state: RootState) => state.groups.editor.groupName;\n// eslint-disable-next-line camelcase\nexport const getGroupEditorGroupIdm = (state: RootState) =>\n flags.get(state.groups.editor.data.$attributes?.upravlyator_managed as FlagType);\nconst getGroupEditorIdmData = (state: RootState) => state.groups.editor.idmData;\nexport const getGroupEditorIdmDataVersion = (state: RootState) =>\n state.groups.editor.idmData.version;\nexport const getGroupEditorIdmDataOtherMembers = (state: RootState) =>\n state.groups.editor.idmData.group.other_members;\n\nexport const getGroupEditorSubjects = createSelector([getGroupEditorIdmData], (idmData) => {\n const {\n group: {members, responsible},\n } = idmData;\n return {\n responsible: map_(responsible, ({subject}) => subject),\n members: map_(members, ({subject}) => subject),\n };\n});\n\nexport const getGroupEditorRoles = createSelector([getGroupEditorIdmData], (idmData) => {\n const {\n group: {members, responsible},\n } = idmData;\n return {\n responsible,\n members,\n };\n});\n","import concat_ from 'lodash/concat';\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\n\nimport {\n GROUPS_TABLE,\n GROUPS_TABLE_DATA_FIELDS,\n GROUP_EDITOR_ACTION,\n GROUP_EDITOR_ACTION_DATA_FIELDS,\n} from '../../constants/groups';\nimport {getCluster} from '../../store/selectors/global';\nimport {\n getGroupEditorIdmDataVersion,\n getGroupEditorSubjects,\n getGroupsExpanded,\n} from '../../store/selectors/groups';\nimport {flags} from '../../utils/index';\nimport {listAllGroups} from '../../utils/users-groups';\nimport {YTApiId, ytApiV3Id} from '../../rum/rum-wrap-api';\nimport UIFactory from '../../UIFactory';\nimport type {Dispatch} from 'redux';\nimport type {Group} from '../../store/reducers/groups/table';\nimport type {OrderType} from '../../utils/sort-helpers';\nimport type {RootState} from '../../store/reducers';\nimport type {Subject} from '../../utils/acl/acl-types';\n\n// Table\n\nconst GROUP_ATTRIBUTES = ['member_of', 'members', 'upravlyator_managed'];\n\nexport function fetchGroups() {\n return (dispatch: Dispatch) => {\n dispatch({type: GROUPS_TABLE.REQUEST});\n\n return listAllGroups(YTApiId.groupsData, {attributes: GROUP_ATTRIBUTES})\n .then((data) => {\n const groups: Group[] = [];\n forEach_(data, (item) => {\n const {\n $value: name,\n $attributes: {members, member_of: memberOf = [], upravlyator_managed: idm},\n } = item;\n members.sort();\n groups.push({\n name,\n members,\n memberOf,\n idm: flags.get(idm || false)!,\n });\n });\n return dispatch({\n type: GROUPS_TABLE.SUCCESS,\n data: {groups},\n });\n })\n .catch((error) => {\n dispatch({type: GROUPS_TABLE.FAILURE, data: {error}});\n });\n };\n}\n\nexport function setGroupsNameFilter(nameFilter: string) {\n return {type: GROUPS_TABLE_DATA_FIELDS, data: {nameFilter}};\n}\n\nexport function setGroupsPageSorting(column: string, order: OrderType) {\n return {\n type: GROUPS_TABLE_DATA_FIELDS,\n data: {sort: {column, order}},\n };\n}\n\nexport function toggleGroupExpand(groupName: string) {\n return (dispatch: Dispatch, getState: () => RootState) => {\n const expanded = {...getGroupsExpanded(getState())};\n const current = expanded[groupName];\n if (current) {\n delete expanded[groupName];\n } else {\n expanded[groupName] = true;\n }\n\n return dispatch({type: GROUPS_TABLE_DATA_FIELDS, data: {expanded}});\n };\n}\n\nexport function openGroupEditorModal(groupName: string) {\n return (dispatch: Dispatch, getState: () => RootState) => {\n const state = getState();\n\n dispatch({\n type: GROUP_EDITOR_ACTION_DATA_FIELDS,\n data: {showModal: true, groupName},\n });\n dispatch({type: GROUP_EDITOR_ACTION.REQUEST});\n\n const path = `//sys/groups/${groupName}`;\n return Promise.all([\n ytApiV3Id.get(YTApiId.groupsEditData, {path, attributes: GROUP_ATTRIBUTES}),\n UIFactory.getAclApi().getGroupAcl(getCluster(state), groupName),\n ])\n .then(([data, idmData]) => {\n return dispatch({\n type: GROUP_EDITOR_ACTION.SUCCESS,\n data: {data, idmData},\n });\n })\n .catch((error) => {\n return dispatch({\n type: GROUP_EDITOR_ACTION.FAILURE,\n data: error,\n });\n });\n };\n}\n\nexport function closeGroupEditorModal() {\n return {\n type: GROUP_EDITOR_ACTION_DATA_FIELDS,\n data: {groupData: undefined, groupName: ''},\n };\n}\n\nexport function saveGroupData(\n groupName: string,\n usersToAdd: Subject[],\n usersToRemove: Subject[],\n responsiblesToAdd: Subject[],\n responsiblesToRemove: Subject[],\n comment: string,\n) {\n return (_dispatch: Dispatch, getState: () => RootState) => {\n const state = getState();\n const {members, responsible} = getGroupEditorSubjects(state);\n const version = getGroupEditorIdmDataVersion(state);\n const newMembers = calculateMembers(members, usersToAdd, usersToRemove);\n const newResponsibles = calculateMembers(\n responsible,\n responsiblesToAdd,\n responsiblesToRemove,\n );\n\n const cluster = getCluster(state);\n return UIFactory.getAclApi().updateGroup({\n cluster,\n groupName,\n version,\n groupDiff: {\n members: newMembers,\n responsible: newResponsibles,\n },\n comment,\n });\n };\n}\n\nfunction calculateMembers(\n members: Subject[],\n toAdd: Subject[],\n toRemove: Subject[],\n): undefined | Subject[] {\n if ((!toAdd || !toAdd.length) && (!toRemove || !toRemove.length)) {\n return undefined;\n }\n\n const [rmUsers, rmGroups] = mapsByNameFromSubjects(toRemove);\n const afterRemove = filter_(members, (item) => {\n const {user, group} = item as {user: string; group: string};\n if (user) {\n return !rmUsers.has(user);\n } else {\n return !rmGroups.has(group);\n }\n });\n\n return concat_(afterRemove, toAdd);\n}\n\nfunction mapsByNameFromSubjects(subjects: Subject[]) {\n const userMap = new Map();\n const groupMap = new Map();\n forEach_(subjects, (item) => {\n const {user, group} = item as {user: string; group: string};\n if (user) {\n userMap.set(user, item);\n } else {\n groupMap.set(group, item);\n }\n });\n return [userMap, groupMap];\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {connect} from 'react-redux';\n\nimport {setGroupsNameFilter} from '../../../store/actions/groups';\nimport ErrorBoundary from '../../../components/ErrorBoundary/ErrorBoundary';\nimport Filter from '../../../components/Filter/Filter';\nimport {Toolbar} from '../../../components/WithStickyToolbar/Toolbar/Toolbar';\nimport {getGroupsNameFilter} from '../../../store/selectors/groups';\nimport type {RootState} from '../../../store/reducers';\n\nimport './GroupsPageFilters.scss';\n\nconst block = cn('groups-page-filters');\n\ntype GroupsPageFiltersProps = {\n className?: string;\n groupFilter: string;\n setGroupsNameFilter: (value: string) => void;\n};\n\nclass GroupsPageFilters extends React.Component<GroupsPageFiltersProps> {\n render() {\n const {className, groupFilter} = this.props;\n\n return (\n <ErrorBoundary>\n <Toolbar\n className={block(null, className)}\n itemsToWrap={[\n {\n name: 'group',\n node: (\n <Filter\n hasClear\n size=\"m\"\n type=\"text\"\n value={groupFilter}\n placeholder=\"Enter group...\"\n onChange={this.props.setGroupsNameFilter}\n />\n ),\n wrapperClassName: block('item'),\n },\n ]}\n />\n </ErrorBoundary>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n return {\n groupFilter: getGroupsNameFilter(state),\n };\n};\n\nconst mapDispatchToProps = {\n setGroupsNameFilter,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(GroupsPageFilters);\n","import {\n EditableManyListsItemType,\n FormApi,\n YTDFDialog,\n extractChangedSubjects,\n prepareRoleListValue,\n} from '../../../components/Dialog';\nimport React from 'react';\nimport cn from 'bem-cn-lite';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport {closeGroupEditorModal, saveGroupData} from '../../../store/actions/groups';\nimport {\n getGroupEditorGroupIdm,\n getGroupEditorGroupName,\n getGroupEditorIdmDataOtherMembers,\n getGroupEditorRoles,\n getGroupEditorVisible,\n} from '../../../store/selectors/groups';\nimport type {RootState} from '../../../store/reducers';\nimport type {ResponsibleType, RoleConverted} from '../../../utils/acl/acl-types';\n\nimport './GroupEditorDialog.scss';\n\nconst block = cn('group-editor-dialog');\n\ninterface GroupsPageTableProps extends ConnectedProps<typeof connector> {}\n\ntype FormValues = {\n details: {\n idm: string;\n size: string;\n };\n members: {\n members: {\n current: EditableManyListsItemType<RoleConverted>;\n newItems: Array<ResponsibleType>;\n };\n membersComment?: string;\n };\n responsibles: {\n responsibles: {\n current: EditableManyListsItemType<RoleConverted>;\n newItems: Array<ResponsibleType>;\n };\n responsiblesComment?: string;\n };\n};\n\nclass GroupEditorDialog extends React.Component<GroupsPageTableProps> {\n onSubmit = (form: FormApi<FormValues, Partial<FormValues>>) => {\n const {groupName, saveGroupData} = this.props;\n const {values} = form.getState();\n const {members, membersComment} = values.members;\n const {added: membersToAdd, removed: membersToRemove} = extractChangedSubjects(members);\n\n const {responsibles, responsiblesComment} = values.responsibles;\n const {added: responsiblesToAdd, removed: responsiblesToRemove} =\n extractChangedSubjects(responsibles);\n\n let comment = '';\n if (membersComment) {\n comment += responsiblesComment ? '**COMMENT FOR MEMBERS**\\n' : '';\n comment += `${membersComment}\\n\\n`;\n }\n if (responsiblesComment) {\n comment += membersComment ? '**COMMENT FOR RESPONSIBLES**\\n' : '';\n comment += `${responsiblesComment}`;\n }\n\n return saveGroupData(\n groupName,\n membersToAdd,\n membersToRemove,\n responsiblesToAdd,\n responsiblesToRemove,\n comment,\n ).then(() => {});\n };\n\n render() {\n const {visible, closeGroupEditorModal, groupName, idm, members, otherMembers, responsible} =\n this.props;\n return (\n <YTDFDialog<FormValues>\n size={'l'}\n className={block(null)}\n pristineSubmittable={false}\n visible={visible}\n headerProps={{\n title: groupName,\n }}\n onClose={closeGroupEditorModal}\n onAdd={this.onSubmit}\n initialValues={{\n details: {\n idm: String(idm || '-'),\n size: String(members.length),\n },\n responsibles: {\n responsibles: prepareRoleListValue(responsible),\n },\n members: {\n members: prepareRoleListValue(members, otherMembers),\n },\n }}\n fields={[\n {\n type: 'tab-vertical',\n name: 'details',\n title: 'Details',\n fields: [\n {\n name: 'idm',\n type: 'plain',\n caption: 'Idm managed',\n },\n {\n name: 'size',\n type: 'plain',\n caption: 'Size',\n },\n ],\n },\n {\n type: 'tab-vertical',\n name: 'responsibles',\n title: 'Responsibles',\n fields: [\n {\n name: 'responsibles',\n type: 'acl-roles',\n caption: 'Responsibles',\n extras: {\n placeholder: 'Enter login or name',\n },\n },\n {\n name: 'responsiblesComment',\n type: 'textarea',\n caption: 'Comment for IDM',\n },\n ],\n },\n {\n type: 'tab-vertical',\n name: 'members',\n title: 'Members',\n fields: [\n {\n name: 'members',\n type: 'acl-roles',\n caption: 'Members',\n extras: {\n placeholder: 'Enter login or name',\n },\n },\n {\n name: 'membersComment',\n type: 'textarea',\n caption: 'Comment for IDM',\n },\n ],\n },\n ]}\n />\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const otherMembers = getGroupEditorIdmDataOtherMembers(state);\n const {responsible, members} = getGroupEditorRoles(state);\n return {\n visible: getGroupEditorVisible(state),\n groupName: getGroupEditorGroupName(state),\n idm: getGroupEditorGroupIdm(state),\n members,\n responsible,\n otherMembers,\n };\n};\n\nconst mapDispatchToProps = {\n closeGroupEditorModal,\n saveGroupData,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(GroupEditorDialog);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {ConnectedProps, connect} from 'react-redux';\nimport DataTable from '@gravity-ui/react-data-table';\n\nimport {openAttributesModal} from '../../../store/actions/modals/attributes-modal';\nimport ClickableAttributesButton from '../../../components/AttributesButton/ClickableAttributesButton';\nimport ColumnHeader from '../../../components/ColumnHeader/ColumnHeader';\nimport CommaSeparatedListWithRestCounter from '../../../components/CommaSeparateListWithRestCounter/CommaSeparateListWithRestCounter';\nimport DataTableYT from '../../../components/DataTableYT/DataTableYT';\nimport {SubjectCard} from '../../../components/SubjectLink/SubjectLink';\n\nimport ErrorBoundary from '../../../components/ErrorBoundary/ErrorBoundary';\nimport ExpandIcon from '../../../components/ExpandIcon/ExpandIcon';\nimport Icon from '../../../components/Icon/Icon';\nimport Link from '../../../components/Link/Link';\nimport {Tooltip} from '../../../components/Tooltip/Tooltip';\n\nimport LoadDataHandler from '../../../components/LoadDataHandler/LoadDataHandler';\n\nimport {\n fetchGroups,\n openGroupEditorModal,\n setGroupsPageSorting,\n toggleGroupExpand,\n} from '../../../store/actions/groups';\nimport {STICKY_TOOLBAR_BOTTOM} from '../../../components/WithStickyToolbar/WithStickyToolbar';\nimport GroupEditorDialog from '../../../pages/groups/GroupEditorDialog/GroupEditorDialog';\nimport {\n GroupsTreeNode,\n getGroupEditorVisible,\n getGroupsFlattenTree,\n getGroupsSort,\n getGroupsTableDataState,\n} from '../../../store/selectors/groups';\n\nimport './GroupsPageTable.scss';\nimport {isIdmAclAvailable} from '../../../config';\nimport type {RootState} from '../../../store/reducers';\nimport type {OrderType} from '../../../utils/sort-helpers';\n\nconst block = cn('groups-page-table');\n\nconst TABLE_SETTINGS = {\n displayIndices: false,\n stickyHead: DataTable.MOVING,\n stickyTop: STICKY_TOOLBAR_BOTTOM,\n syncHeadOnResize: true,\n dynamicRender: true,\n} as const;\n\nconst COLUMN_NAMES: Record<string, string> = {\n name: 'Name',\n idm: 'IDM',\n size: 'Size',\n responsibles: 'Responsible users',\n actions: '',\n};\n\ntype GroupActionsProps = {\n className?: string;\n groupname: string;\n edit?: (value: string) => void;\n};\n\nfunction GroupActions({className, groupname, edit}: GroupActionsProps) {\n const onEdit = React.useCallback(() => {\n edit!(groupname);\n }, [groupname, edit]);\n\n return (\n <div className={className}>\n <ClickableAttributesButton title={groupname} path={`//sys/groups/${groupname}`} />\n {edit && (\n <Link onClick={onEdit} className={block('edit-action')}>\n <Icon awesome=\"pencil-alt\" />\n </Link>\n )}\n </div>\n );\n}\n\ninterface GroupsPageTableProps extends ConnectedProps<typeof connector> {\n className?: string;\n}\n\nclass GroupsPageTable extends React.Component<GroupsPageTableProps> {\n componentDidMount() {\n const {fetchGroups} = this.props;\n fetchGroups();\n }\n\n renderColumnHeader(col: string, sortable: boolean) {\n const {\n sort: {column, order},\n } = this.props;\n const isSorted = col === column;\n\n return (\n <ColumnHeader\n className={block('header-cell', {col, sortable}, 'data-table__head-cell')}\n column={col}\n title={COLUMN_NAMES[col]}\n order={isSorted ? order : ''}\n onSort={this.onColumnSort}\n />\n );\n }\n\n onColumnSort = (colName: string, nextOrder: OrderType) => {\n const {setGroupsPageSorting} = this.props;\n setGroupsPageSorting(colName, nextOrder);\n };\n\n renderNameCell(col: string, {row}: {row: GroupsTreeNode}) {\n const {name, shift, hasChildren, expanded} = row;\n return (\n <div\n className={block('content', {\n col,\n shift: String(shift),\n level: String(Math.min(10, shift!)),\n })}\n >\n <ExpandIcon\n data={name}\n visible={hasChildren}\n onClick={this.toggleExpand}\n expanded={expanded}\n />\n <Tooltip content={name}>\n <span className={block('group-name')}>{name}</span>\n </Tooltip>\n </div>\n );\n }\n\n toggleExpand = (groupName: string) => {\n const {toggleGroupExpand} = this.props;\n toggleGroupExpand(groupName);\n };\n\n renderIdmCell(col: string, {row}: {row: GroupsTreeNode}) {\n const {idm} = row;\n return (\n <div className={block('content', {col})}>\n <div className={block(col)}>{idm && idm.toString()}</div>\n </div>\n );\n }\n\n renderUsersCell(col: 'members', {row}: {row: GroupsTreeNode}) {\n const {[col]: value} = row;\n return (\n <div className={block('content', {col})}>\n <CommaSeparatedListWithRestCounter\n className={block('groups')}\n items={value}\n itemRenderer={(item: string) => {\n if (item.startsWith('idm-group:')) {\n return item;\n } else {\n return <SubjectCard name={item} />;\n }\n }}\n />\n </div>\n );\n }\n\n renderSizeCell(col: string, {row}: {row: GroupsTreeNode}) {\n const {members} = row;\n return (\n <div className={block('content', {col})}>\n <span>{members!.length}</span>\n </div>\n );\n }\n\n renderActionsCell(col: string, {row}: {row: GroupsTreeNode}) {\n const {name: groupname, idm} = row;\n const allowEdit = idm;\n return (\n <GroupActions\n className={block('content', {col})}\n edit={allowEdit ? this.onEdit : undefined}\n groupname={groupname!}\n />\n );\n }\n\n onEdit = (groupName: string) => {\n const {openGroupEditorModal} = this.props;\n openGroupEditorModal(groupName);\n };\n\n renderTable() {\n const {loaded, loading, groups} = this.props;\n\n const columnProps = (name: string, disableSorting = false) => {\n return {\n name,\n align: DataTable.LEFT,\n sortable: false,\n className: block('td', {col: name.toLowerCase()}),\n header: this.renderColumnHeader(name, !disableSorting),\n } as const;\n };\n\n const DISABLED_SORTING = true;\n\n const columns = [\n {\n ...columnProps('name'),\n render: this.renderNameCell.bind(this, 'name'),\n },\n ...(!isIdmAclAvailable()\n ? []\n : [\n {\n ...columnProps('idm'),\n render: this.renderIdmCell.bind(this, 'idm'),\n },\n ]),\n {\n ...columnProps('members', DISABLED_SORTING),\n render: this.renderUsersCell.bind(this, 'members'),\n },\n {\n ...columnProps('size'),\n render: this.renderSizeCell.bind(this, 'size'),\n },\n ...(!isIdmAclAvailable()\n ? []\n : [\n {\n ...columnProps('actions'),\n header: '',\n render: this.renderActionsCell.bind(this, 'actions'),\n },\n ]),\n ];\n\n return (\n <DataTableYT\n loaded={loaded}\n loading={loading}\n data={groups}\n columns={columns}\n settings={TABLE_SETTINGS}\n theme={'yt-internal'}\n />\n );\n }\n\n render() {\n const {className, error, showEditor} = this.props;\n return (\n <ErrorBoundary>\n <div className={block(null, className)}>\n <LoadDataHandler\n loaded={true}\n error={Boolean(error)}\n errorData={error || undefined}\n >\n {this.renderTable()}\n </LoadDataHandler>\n </div>\n {showEditor && <GroupEditorDialog />}\n </ErrorBoundary>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {loaded, loading, error} = getGroupsTableDataState(state);\n const groups = getGroupsFlattenTree(state);\n const sort = getGroupsSort(state);\n const showEditor = getGroupEditorVisible(state);\n\n return {\n loaded,\n loading,\n error,\n\n groups,\n sort,\n showEditor,\n };\n};\n\nconst mapDispatchToProps = {\n fetchGroups,\n setGroupsPageSorting,\n toggleGroupExpand,\n openAttributesModal,\n openGroupEditorModal,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(GroupsPageTable);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport WithStickyToolbar from '../../components/WithStickyToolbar/WithStickyToolbar';\n\nimport GroupsPageFilters from './GroupsPageFilters/GroupsPageFilters';\nimport GroupsPageTable from './GroupsPageTable/GroupsPageTable';\n\nconst block = cn('groups-page');\n\nexport default function GroupsPage() {\n return (\n <div className={block(null, 'elements-main-section')}>\n <WithStickyToolbar\n className=\"elements-section\"\n toolbar={<GroupsPageFilters />}\n content={<GroupsPageTable />}\n />\n </div>\n );\n}\n"],"names":["block","cn","ExpandIcon","_ref","className","data","expanded","visible","onClick","icon","onClickCb","React","_jsx","Boolean","clickable","undefined","children","Icon","awesome","getGroupsNameFilter","state","groups","table","nameFilter","getGroupsSort","sort","getGroupsExpanded","getGroupsTree","createSelector","res","reduce","acc","item","name","_objectSpread","leaves","root","ROOT_GROUP_NAME","hasChildren","forEach_","_item$memberOf","memberOf","length","forEach","parent","itemCopy","push","hammer","treeList","treeForEach","depth","shift","getGroupsTreeFiltered","tree","predicates","compact_","node","indexOf","filterTree","concatByAnd","apply","_toConsumableArray","getGroupsTreeFilteredAndExpanded","cloneDeep_","GROUP_FIELDS","get","group","compareFn","compareWithUndefined","idm","size","_ref$members","members","getGroupsTreeFilteredAndSorted","_ref2","column","order","_orderTypeToOrderK","orderTypeToOrderK","orderK","undefinedOrderK","sortTree","field","asc","undefinedAsk","getGroupsFlattenTree","flattenTree","getGroupEditorVisible","editor","groupName","getGroupEditorGroupName","getGroupEditorGroupIdm","_state$groups$editor$","flags","$attributes","upravlyator_managed","getGroupEditorIdmData","idmData","getGroupEditorSubjects","_idmData$group","responsible","map_","_ref3","subject","_ref4","getGroupEditorRoles","_idmData$group2","GROUP_ATTRIBUTES","calculateMembers","toAdd","toRemove","subjects","userMap","groupMap","_mapsByNameFromSubjec","Map","user","set","_mapsByNameFromSubjec2","_slicedToArray","rmUsers","rmGroups","afterRemove","filter_","has","concat_","GroupsPageFilters","_React$Component","_inherits","_super","_createSuper","_classCallCheck","arguments","_createClass","key","value","_this$props","this","props","groupFilter","ErrorBoundary","Toolbar","itemsToWrap","Filter","hasClear","type","placeholder","onChange","setGroupsNameFilter","wrapperClassName","mapDispatchToProps","GROUPS_TABLE_DATA_FIELDS","connect","GroupEditorDialog","_this","_len","args","Array","_key","call","concat","onSubmit","form","saveGroupData","values","getState","_values$members","membersComment","_extractChangedSubjec","extractChangedSubjects","membersToAdd","added","membersToRemove","removed","_values$responsibles","responsibles","responsiblesComment","_extractChangedSubjec2","responsiblesToAdd","responsiblesToRemove","comment","then","_this$props2","closeGroupEditorModal","otherMembers","YTDFDialog","pristineSubmittable","headerProps","title","onClose","onAdd","initialValues","details","String","prepareRoleListValue","fields","caption","extras","GROUP_EDITOR_ACTION_DATA_FIELDS","groupData","usersToAdd","usersToRemove","_dispatch","_getGroupEditorSubjec","version","getGroupEditorIdmDataVersion","newMembers","newResponsibles","cluster","getCluster","UIFactory","getAclApi","updateGroup","groupDiff","other_members","getGroupEditorIdmDataOtherMembers","_getGroupEditorRoles","TABLE_SETTINGS","displayIndices","stickyHead","DataTable","MOVING","stickyTop","STICKY_TOOLBAR_BOTTOM","syncHeadOnResize","dynamicRender","COLUMN_NAMES","actions","GroupActions","groupname","edit","onEdit","_jsxs","ClickableAttributesButton","path","Link","GroupsPageTable","onColumnSort","colName","nextOrder","setGroupsPageSorting","toggleExpand","toggleGroupExpand","openGroupEditorModal","fetchGroups","col","sortable","_this$props$sort","isSorted","ColumnHeader","onSort","row","level","Math","min","Tooltip","content","toString","CommaSeparatedListWithRestCounter","items","itemRenderer","startsWith","SubjectCard","_ref5","_ref6","allowEdit","_this2","loaded","loading","columnProps","disableSorting","align","LEFT","toLowerCase","header","renderColumnHeader","columns","render","renderNameCell","bind","isIdmAclAvailable","renderIdmCell","renderUsersCell","renderSizeCell","renderActionsCell","DataTableYT","settings","theme","error","showEditor","LoadDataHandler","errorData","renderTable","dispatch","GROUPS_TABLE","REQUEST","listAllGroups","YTApiId","groupsData","attributes","$value","_item$$attributes","_item$$attributes$mem","member_of","SUCCESS","FAILURE","openAttributesModal","showModal","GROUP_EDITOR_ACTION","Promise","all","ytApiV3Id","groupsEditData","getGroupAcl","_getGroupsTableDataSt","getGroupsTableDataState","GroupsPage","WithStickyToolbar","toolbar"],"sourceRoot":""}
|