|
|
|
@ -2,13 +2,17 @@
|
|
|
|
|
import { Button, Menu, MenuItem, Popover } from "@blueprintjs/core";
|
|
|
|
|
import { observer } from "mobx-react";
|
|
|
|
|
import * as React from "react";
|
|
|
|
|
import { DownPanelStore, LightDataModeType } from "../UI/Store/DownPanelStore";
|
|
|
|
|
import { app } from "../ApplicationServices/Application";
|
|
|
|
|
import { Entity } from "../DatabaseServices/Entity/Entity";
|
|
|
|
|
import { Light } from "../DatabaseServices/Lights/Light";
|
|
|
|
|
import { DownPanelStore, LightDataModeType, LightsData } from "../UI/Store/DownPanelStore";
|
|
|
|
|
import { CommandWrap } from "./CommandMachine";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 底部状态栏的灯光助手按钮.
|
|
|
|
|
*/
|
|
|
|
|
@observer
|
|
|
|
|
export class LightsMenu extends React.Component<{}>
|
|
|
|
|
export class LightsMenu extends React.Component<{ GetLightType: (ent: Entity) => string; }>
|
|
|
|
|
{
|
|
|
|
|
public state = {
|
|
|
|
|
isOpenMenu: false,
|
|
|
|
@ -19,7 +23,7 @@ export class LightsMenu extends React.Component<{}>
|
|
|
|
|
<Popover
|
|
|
|
|
isOpen={this.state.isOpenMenu ? true : undefined}
|
|
|
|
|
modifiers={{ arrow: { enabled: false } }}
|
|
|
|
|
onClosed={this.close}
|
|
|
|
|
onClosed={this.Close}
|
|
|
|
|
>
|
|
|
|
|
<Button
|
|
|
|
|
style={{ fontSize: "11px", textAlign: "center", minHeight: "15px", height: "15px", lineHeight: "1px" }}
|
|
|
|
@ -49,23 +53,7 @@ export class LightsMenu extends React.Component<{}>
|
|
|
|
|
onClick={() =>
|
|
|
|
|
{
|
|
|
|
|
data.enable = !data.enable;
|
|
|
|
|
if (data.mode !== LightDataModeType.A && !data.enable) //有灯光取消打勾时, "全部"取消打勾
|
|
|
|
|
{
|
|
|
|
|
if (downStore.lightsData[0].enable)
|
|
|
|
|
downStore.lightsData[0].enable = false;
|
|
|
|
|
}
|
|
|
|
|
if (data.mode === LightDataModeType.A && data.enable) //选"全部"打勾时,所灯光ui打勾
|
|
|
|
|
{
|
|
|
|
|
for (let data of downStore.lightsData)
|
|
|
|
|
if (!data.enable && data.mode !== LightDataModeType.A)
|
|
|
|
|
data.enable = true;
|
|
|
|
|
}
|
|
|
|
|
else if (data.mode === LightDataModeType.A && !data.enable) // 选"全部"不打勾时,所灯光ui取消打勾
|
|
|
|
|
{
|
|
|
|
|
for (let data of downStore.lightsData)
|
|
|
|
|
if (data.enable && data.mode !== LightDataModeType.A)
|
|
|
|
|
data.enable = false;
|
|
|
|
|
}
|
|
|
|
|
this.onHook(data, downStore);
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
)
|
|
|
|
@ -73,9 +61,53 @@ export class LightsMenu extends React.Component<{}>
|
|
|
|
|
</Menu>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
private close = () =>
|
|
|
|
|
|
|
|
|
|
private Close = () =>
|
|
|
|
|
{
|
|
|
|
|
let store = DownPanelStore.GetInstance() as DownPanelStore;
|
|
|
|
|
store.Upload();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
private onHook(data: LightsData, downStore: DownPanelStore)
|
|
|
|
|
{
|
|
|
|
|
if (data.mode !== LightDataModeType.A && !data.enable) //有灯光取消打勾时, "全部"取消打勾
|
|
|
|
|
{
|
|
|
|
|
if (downStore.lightsData[0].enable)
|
|
|
|
|
downStore.lightsData[0].enable = false;
|
|
|
|
|
}
|
|
|
|
|
if (data.mode === LightDataModeType.A && data.enable) //选"全部"打勾时,所灯光ui打勾
|
|
|
|
|
{
|
|
|
|
|
for (let data of downStore.lightsData)
|
|
|
|
|
if (!data.enable && data.mode !== LightDataModeType.A)
|
|
|
|
|
data.enable = true;
|
|
|
|
|
operAllLightHelper(this.props.GetLightType);
|
|
|
|
|
}
|
|
|
|
|
else if (data.mode === LightDataModeType.A && !data.enable) // 选"全部"不打勾时,所灯光ui取消打勾
|
|
|
|
|
{
|
|
|
|
|
for (let data of downStore.lightsData)
|
|
|
|
|
if (data.enable && data.mode !== LightDataModeType.A)
|
|
|
|
|
data.enable = false;
|
|
|
|
|
operAllLightHelper(this.props.GetLightType);
|
|
|
|
|
}
|
|
|
|
|
else if (data.mode !== LightDataModeType.A)
|
|
|
|
|
{
|
|
|
|
|
operAllLightHelper(this.props.GetLightType);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function operAllLightHelper(GetLightType: (ent: Entity) => string)
|
|
|
|
|
{
|
|
|
|
|
let title = data.mode === LightDataModeType.A ? data.name + "灯光" : data.name;
|
|
|
|
|
CommandWrap(() =>
|
|
|
|
|
{
|
|
|
|
|
for (let light of app.Database.Lights.Entitys)
|
|
|
|
|
{
|
|
|
|
|
if (data.mode === LightDataModeType.A)
|
|
|
|
|
(light as Light).ShowHelper = data.enable;
|
|
|
|
|
else
|
|
|
|
|
if (GetLightType(light) === data.mode)
|
|
|
|
|
(light as Light).ShowHelper = data.enable;
|
|
|
|
|
}
|
|
|
|
|
}, data.enable ? "显示" + title + "助手" : "隐藏" + title + "助手");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|