#E69717',
},
…
Дальше ищем строку
lowResPalette
и добавляем название метки и цвет. Этот параметр отвечает за отображение узлов в низком разрешении.…
lowResPalette:{
colorScheme:{
User:'#17E625',
Computer:'#E67873',
Group:'#DBE617',
Domain:'#17E6B9',
OU:'#FFAA00',
GPO:'#7F72FD',
Base:'#E6E600',
LocalUser:'#E69717',
},
…
Сохраняем измененный файл.
Теперь переходим в директорию
src\js
и открываем на редактирование файл utils.js
. В самом начале, в разделе const labels = [
, добавляем новую метку после Domain
.const labels = [
'Base',
'Container',
'OU',
'GPO',
'User',
'Computer',
'Group',
'Domain',
'LocalUser',
…
Находим строку
export async function setSchema()
и в массив label
добавляем название новой метки.…
export async function setSchema() {
const luceneIndexProvider = "lucene+native-3.0"
let labels = ["User","Group", "Computer", "GPO", "OU",
"Domain", "Container", "Base",
"LocalUser"
, …
Сохраняем измененный файл.
Теперь нужно добавить метку, чтобы она отображалась на графе. Для этого переходим в директорию
components
и открываем файл Graph.jsx.
Находим строку switch (type)
и добавляем в нее код:…
switch (type) {
…
case 'OU':
node.type_ou = true;
break;
case 'LocalUser':
node.type_localuser = true;
break;
}
…
Сохраняем измененный файл.
Для отображения метки в строке поиска нужно открыть файл
SearchRow.jsx,
который находится в директории src\components\SearchContainer
. Находим строку switch (type)
и после блока Container
добавляем код:…
switch (type) {
…
case 'Container':
icon.className = 'fa fa-box'
break
;case 'LocalUser':
icon.className = 'fa fa-user';
break;
…
Сохраняем измененный файл.
Кроме отображения самой метки нужно добавить визуализацию свойств узла. В той же директории открываем файл
TabContainer.jsx
и добавим импорт вкладки после импорта OuNodeData
, саму вкладку создадим позже:…
import GpoNodeData from './Tabs/GPONodeData';
import OuNodeData from './Tabs/OUNodeData';
import LocalUserNodeData from './Tabs/LocalUserNodeData';
…
До нажатия на сам узел его свойства будут скрыты. Для этого в классе
TabContainer
находим строку this.state
и добавляем строку:…
class TabContainer extends Component {
constructor(props) {
super(props);
this.state = {
…
containerVisible: false,
localuserVisible: false,
…
Дальше нужно добавить обработку при нажатии на узел. Для этого находим строку
nodeClickHandler(type)
и добавляем код:…
nodeClickHandler(type) {
…
} else if (type === 'GPO') {
this._gpoNodeClicked();
} else if (type === 'LocalUser') {
this._localuserNodeClicked();
…
Ниже находим изменение состояния видимости вкладки для каждой метки. Код начинается с
_labelNodeClicked
. Для локального пользователя код будет выглядеть следующим образом:…
_ouNodeClicked() {
this.clearVisible()
this.setState({
ouVisible: true,
selected:2
});
}
_localuserNodeClicked() {
this.clearVisible()
this.setState({
localuserVisible: true,
selected:2
});
}
…
И ниже в функции отображения
render()
находим строку NoNodeData
и добавляем следующий код:render() {
…
visible={
…
!this.state.gpoVisible &&
!this.state.ouVisible &&
!this.state.localuserVisible &&
…
И еще ниже добавим отображение вкладки со свойствами для
LocalUserNodeData:
…
…
Сохраняем измененный файл.
Переходим в директорию
src\components\Spotlight
и открываем на редактирование файл SpotlightRow.jsx.
В функции render
находим строку switch (this.props.nodeType)
, добавляем код:…
render() {
let nodeIcon;
let parentIcon = '';
switch (this.props.nodeType) {
…
case 'GPO':
nodeIcon = 'fa fa-list';
break;
case 'LocalUser':
nodeIcon = 'fa fa-user';
break;
default:
nodeIcon = '';
break;
}
…
Ниже находим строку
switch (this.props.parentNodeType)
и добавляем отображение родительской иконки:…
switch (this.props.parentNodeType) {
…
case 'GPO':
nodeIcon = 'fa fa-list';
break;
case 'LocalUser':
parentIcon = 'fa fa-user';
break;
default:
parentIcon = '';
break;
}
…
Сохраняем измененный файл.
В заключение осталось создать вкладку с отображением свойств для локального пользователя. Переходим в директорию
src\components\SearchContainer\Tabs
. Создадим копию файла UserNodeData.jsx и назовем ее LocalUserNodeData.jsx