Add behavior picker component

This commit is contained in:
MrKBear 2022-04-01 17:28:36 +08:00
parent f020e44f47
commit 5176a1f672
5 changed files with 84 additions and 0 deletions

View File

@ -0,0 +1,26 @@
div.behavior-picker-list {
width: 100%;
max-width: 400px;
div.behavior-picker-line {
width: 100%;
padding: 0 !important;
display: flex !important;
justify-content: flex-start !important;
div.behavior-picker-line-color-view {
width: 0;
max-width: 0;
height: 100%;
div {
width: 0;
height: 0;
border-bottom: 10px solid transparent;
position: relative;
z-index: 2;
}
}
}
}

View File

@ -0,0 +1,49 @@
import { DetailsList } from "@Component/DetailsList/DetailsList";
import { Component, ReactNode } from "react";
import { Behavior } from "@Model/Behavior";
import "./BehaviorPicker.scss";
interface IBehaviorPickerProps {
behavior: Behavior[]
}
class BehaviorPicker extends Component<IBehaviorPickerProps> {
private getData() {
let data: Array<{key: string, behavior: Behavior}> = [];
for (let i = 0; i < this.props.behavior.length; i++) {
data.push({
key: this.props.behavior[i].id,
behavior: this.props.behavior[i]
})
}
return data;
}
private renderColor(color: string): ReactNode {
return <div className="behavior-picker-line-color-view">
<div style={{ borderLeft: `10px solid ${color}` }}/>
</div>
}
private renderLine = (behavior: Behavior): ReactNode => {
return <>
{this.renderColor(behavior.color)}
</>;
}
public render(): ReactNode {
return <DetailsList
hideCheckBox
className="behavior-picker-list"
items={this.getData()}
columns={[{
className: "behavior-picker-line",
key: "behavior",
render: this.renderLine
}]}
/>
}
}
export { BehaviorPicker };

View File

@ -69,6 +69,7 @@ const EN_US = {
"Common.Attr.Title.Basic": "Basic properties", "Common.Attr.Title.Basic": "Basic properties",
"Common.Attr.Title.Spatial": "Spatial property", "Common.Attr.Title.Spatial": "Spatial property",
"Common.Attr.Title.Individual.Generation": "Individual generation", "Common.Attr.Title.Individual.Generation": "Individual generation",
"Common.Attr.Title.Behaviors": "Behaviors list",
"Common.Attr.Title.Individual.kill": "Individual kill", "Common.Attr.Title.Individual.kill": "Individual kill",
"Common.Attr.Key.Display.Name": "Display name", "Common.Attr.Key.Display.Name": "Display name",
"Common.Attr.Key.Position.X": "Position X", "Common.Attr.Key.Position.X": "Position X",

View File

@ -69,6 +69,7 @@ const ZH_CN = {
"Common.Attr.Title.Basic": "基础属性", "Common.Attr.Title.Basic": "基础属性",
"Common.Attr.Title.Spatial": "空间属性", "Common.Attr.Title.Spatial": "空间属性",
"Common.Attr.Title.Individual.Generation": "生成个体", "Common.Attr.Title.Individual.Generation": "生成个体",
"Common.Attr.Title.Behaviors": "行为列表",
"Common.Attr.Title.Individual.kill": "消除个体", "Common.Attr.Title.Individual.kill": "消除个体",
"Common.Attr.Key.Display.Name": "显示名称", "Common.Attr.Key.Display.Name": "显示名称",
"Common.Attr.Key.Position.X": "X 坐标", "Common.Attr.Key.Position.X": "X 坐标",

View File

@ -11,6 +11,7 @@ import { AllI18nKeys } from "@Component/Localization/Localization";
import { ComboInput, IDisplayItem } from "@Component/ComboInput/ComboInput"; import { ComboInput, IDisplayItem } from "@Component/ComboInput/ComboInput";
import { ObjectPicker } from "@Component/ObjectPicker/ObjectPicker"; import { ObjectPicker } from "@Component/ObjectPicker/ObjectPicker";
import { ConfirmPopup } from "@Component/ConfirmPopup/ConfirmPopup"; import { ConfirmPopup } from "@Component/ConfirmPopup/ConfirmPopup";
import { BehaviorPicker } from "@Component/BehaviorPicker/BehaviorPicker";
import "./GroupDetails.scss"; import "./GroupDetails.scss";
interface IGroupDetailsProps {} interface IGroupDetailsProps {}
@ -108,6 +109,12 @@ class GroupDetails extends Component<IGroupDetailsProps & IMixinStatusProps> {
}} }}
/> />
<Message i18nKey="Common.Attr.Title.Behaviors" isTitle/>
<BehaviorPicker
behavior={group.behaviors}
/>
<Message i18nKey="Common.Attr.Title.Individual.Generation" isTitle/> <Message i18nKey="Common.Attr.Title.Individual.Generation" isTitle/>
<ComboInput <ComboInput