优化消息弹窗

This commit is contained in:
tengge1 2019-12-07 20:06:04 +08:00
parent 3c3754b06a
commit dea5bedb8d
48 changed files with 451 additions and 240 deletions

View File

@ -20,6 +20,7 @@ Supported Languages: 中文 / [繁體中文](README-tw.md) / [English](README-en
7. 选中效果由保存在场景中,改为保存在浏览器上。
8. 鼠标高亮效果,改为保存在浏览器上,默认不开启。可以通过选项、显示菜单设置是否开启高亮和高亮颜色。
9. SVG元素封装`SvgCircle``SvgEllipse``SvgLine``SvgPath``SvgPolygon``SvgPolyline``SvgRect`
10. 优化消息弹窗,不再遮挡编辑区,使用背景和文字颜色区分`消息``成功``警告``错误`四种情景。
## v0.3.8更新【[更新日志](docs-dev/update/UpdateLog.md)】

View File

@ -375,7 +375,7 @@ Application.prototype.upload = function () {
if (obj.Code === 200) {
callback(obj);
} else {
app.toast(obj.Msg);
app.toast(_t(obj.Msg), 'warn');
}
});
});

View File

@ -89,7 +89,7 @@ class AnimationPanel extends React.Component {
fetch(`${app.options.server}/api/Category/List?type=Animation`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -100,7 +100,7 @@ class AnimationPanel extends React.Component {
fetch(`${app.options.server}/api/Animation/List`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -158,7 +158,7 @@ class AnimationPanel extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.update();

View File

@ -149,7 +149,7 @@ class AssetsPanel extends React.Component {
if (response.ok) {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState(obj);

View File

@ -89,7 +89,7 @@ class AudioPanel extends React.Component {
fetch(`${app.options.server}/api/Category/List?type=Audio`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -100,7 +100,7 @@ class AudioPanel extends React.Component {
fetch(`${app.options.server}/api/Audio/List`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -158,7 +158,7 @@ class AudioPanel extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.update();

View File

@ -86,7 +86,7 @@ class CharacterPanel extends React.Component {
fetch(`${app.options.server}/api/Category/List?type=Character`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -97,7 +97,7 @@ class CharacterPanel extends React.Component {
fetch(`${app.options.server}/api/Character/List`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({

View File

@ -110,7 +110,7 @@ class MapPanel extends React.Component {
fetch(`${app.options.server}/api/Category/List?type=Map`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -121,7 +121,7 @@ class MapPanel extends React.Component {
fetch(`${app.options.server}/api/Map/List`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({

View File

@ -87,7 +87,7 @@ class MaterialPanel extends React.Component {
fetch(`${app.options.server}/api/Category/List?type=Material`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -98,7 +98,7 @@ class MaterialPanel extends React.Component {
fetch(`${app.options.server}/api/Material/List`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -151,7 +151,7 @@ class MaterialPanel extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.update();

View File

@ -91,7 +91,7 @@ class ModelPanel extends React.Component {
fetch(`${app.options.server}/api/Category/List?type=Mesh`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -102,7 +102,7 @@ class ModelPanel extends React.Component {
fetch(`${app.options.server}/api/Mesh/List`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -224,7 +224,7 @@ class ModelPanel extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.update();

View File

@ -86,7 +86,7 @@ class ParticlePanel extends React.Component {
fetch(`${app.options.server}/api/Category/List?type=Particle`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -97,7 +97,7 @@ class ParticlePanel extends React.Component {
fetch(`${app.options.server}/api/Particle/List`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -150,7 +150,7 @@ class ParticlePanel extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.update();

View File

@ -86,7 +86,7 @@ class PrefabPanel extends React.Component {
fetch(`${app.options.server}/api/Category/List?type=Prefab`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -97,7 +97,7 @@ class PrefabPanel extends React.Component {
fetch(`${app.options.server}/api/Prefab/List`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -150,7 +150,7 @@ class PrefabPanel extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.update();

View File

@ -88,7 +88,7 @@ class ScenePanel extends React.Component {
fetch(`${app.options.server}/api/Category/List?type=Scene`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -99,7 +99,7 @@ class ScenePanel extends React.Component {
fetch(`${app.options.server}/api/Scene/List`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -132,7 +132,7 @@ class ScenePanel extends React.Component {
fetch(url).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
@ -282,7 +282,7 @@ class ScenePanel extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.update();

View File

@ -85,7 +85,7 @@ class ScreenshotPanel extends React.Component {
fetch(`${app.options.server}/api/Category/List?type=Screenshot`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -96,7 +96,7 @@ class ScreenshotPanel extends React.Component {
fetch(`${app.options.server}/api/Screenshot/List`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -143,7 +143,7 @@ class ScreenshotPanel extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.update();

View File

@ -85,7 +85,7 @@ class VideoPanel extends React.Component {
fetch(`${app.options.server}/api/Category/List?type=Video`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -96,7 +96,7 @@ class VideoPanel extends React.Component {
fetch(`${app.options.server}/api/Video/List`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -143,7 +143,7 @@ class VideoPanel extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.update();

View File

@ -22,7 +22,7 @@ class AddSkyBoxWindow extends React.Component {
posZ: null,
posZFile: null,
negZ: null,
negZFile: null,
negZFile: null
};
this.handleChange = this.handleChange.bind(this);
@ -36,32 +36,57 @@ class AddSkyBoxWindow extends React.Component {
return <Window
className={'AddSkyBoxWindow'}
title={_t('Upload Sky Box')}
style={{ width: '640px', height: '400px', }}
style={{ width: '640px', height: '400px' }}
mask={false}
onClose={this.handleClose}>
onClose={this.handleClose}
>
<Content>
<div className={'item'}>
<ImageSelector className={'selector'} name={'posX'} value={posX} onChange={this.handleChange}></ImageSelector>
<ImageSelector className={'selector'}
name={'posX'}
value={posX}
onChange={this.handleChange}
/>
<div className={'title'}>PosX</div>
</div>
<div className={'item'}>
<ImageSelector className={'selector'} name={'negX'} value={negX} onChange={this.handleChange}></ImageSelector>
<ImageSelector className={'selector'}
name={'negX'}
value={negX}
onChange={this.handleChange}
/>
<div className={'title'}>NegX</div>
</div>
<div className={'item'}>
<ImageSelector className={'selector'} name={'posY'} value={posY} onChange={this.handleChange}></ImageSelector>
<ImageSelector className={'selector'}
name={'posY'}
value={posY}
onChange={this.handleChange}
/>
<div className={'title'}>PosY</div>
</div>
<div className={'item'}>
<ImageSelector className={'selector'} name={'negY'} value={negY} onChange={this.handleChange}></ImageSelector>
<ImageSelector className={'selector'}
name={'negY'}
value={negY}
onChange={this.handleChange}
/>
<div className={'title'}>NegY</div>
</div>
<div className={'item'}>
<ImageSelector className={'selector'} name={'posZ'} value={posZ} onChange={this.handleChange}></ImageSelector>
<ImageSelector className={'selector'}
name={'posZ'}
value={posZ}
onChange={this.handleChange}
/>
<div className={'title'}>PosZ</div>
</div>
<div className={'item'}>
<ImageSelector className={'selector'} name={'negZ'} value={negZ} onChange={this.handleChange}></ImageSelector>
<ImageSelector className={'selector'}
name={'negZ'}
value={negZ}
onChange={this.handleChange}
/>
<div className={'title'}>NegZ</div>
</div>
</Content>
@ -80,7 +105,7 @@ class AddSkyBoxWindow extends React.Component {
this.setState({
[name]: e.target.result,
[`${name}File`]: file,
[`${name}File`]: file
});
};
@ -91,7 +116,7 @@ class AddSkyBoxWindow extends React.Component {
const { posXFile, negXFile, posYFile, negYFile, posZFile, negZFile } = this.state;
if (!posXFile || !negXFile || !posYFile || !negYFile || !posZFile || !negZFile) {
app.toast(_t('Please upload all the textures before save.'));
app.toast(_t('Please upload all the textures before save.'), 'warn');
return;
}
@ -101,7 +126,7 @@ class AddSkyBoxWindow extends React.Component {
posY: posYFile,
negY: negYFile,
posZ: posZFile,
negZ: negZFile,
negZ: negZFile
}, result => {
let obj = JSON.parse(result);
this.handleClose();
@ -116,11 +141,11 @@ class AddSkyBoxWindow extends React.Component {
}
AddSkyBoxWindow.propTypes = {
callback: PropTypes.func,
callback: PropTypes.func
};
AddSkyBoxWindow.defaultProps = {
callback: null,
callback: null
};
export default AddSkyBoxWindow;

View File

@ -71,7 +71,7 @@ class CategoryEditWindow extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.handleCancel();

View File

@ -106,7 +106,7 @@ class CategoryWindow extends React.Component {
const { selected } = this.state;
if (!selected) {
app.toast(_t('Please select a record.'));
app.toast(_t('Please select a record.'), 'warn');
return;
}
@ -125,7 +125,7 @@ class CategoryWindow extends React.Component {
const { selected } = this.state;
if (!selected) {
app.toast(_t('Please select a record.'));
app.toast(_t('Please select a record.'), 'warn');
return;
}
@ -141,7 +141,7 @@ class CategoryWindow extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.updateUI();

View File

@ -128,7 +128,7 @@ class EditWindow extends React.Component {
thumbnail: obj.Data.url
});
} else {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
}
});
}
@ -164,7 +164,7 @@ class EditWindow extends React.Component {
callback && callback(obj);
this.handleClose();
} else {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
}
});
}

View File

@ -17,7 +17,7 @@ class LMeshComponent extends React.Component {
expanded: true,
options: [],
animation: '',
previewText: _t('Preview'),
previewText: _t('Preview')
};
this.handleExpand = this.handleExpand.bind(this);
@ -34,9 +34,20 @@ class LMeshComponent extends React.Component {
return null;
}
return <PropertyGroup title={_t('LMesh Component')} show={show} expanded={expanded} onExpand={this.handleExpand}>
<SelectProperty label={_t('Animation')} name={'animation'} options={options} value={animation} onChange={this.handleChange}></SelectProperty>
<ButtonProperty text={previewText} onChange={this.handlePreview}></ButtonProperty>
return <PropertyGroup title={_t('LMesh Component')}
show={show}
expanded={expanded}
onExpand={this.handleExpand}
>
<SelectProperty label={_t('Animation')}
name={'animation'}
options={options}
value={animation}
onChange={this.handleChange}
/>
<ButtonProperty text={previewText}
onChange={this.handlePreview}
/>
</PropertyGroup>;
}
@ -47,7 +58,7 @@ class LMeshComponent extends React.Component {
handleExpand(expanded) {
this.setState({
expanded,
expanded
});
}
@ -56,7 +67,7 @@ class LMeshComponent extends React.Component {
if (!editor.selected || !(editor.selected.userData.type === 'lol')) {
this.setState({
show: false,
show: false
});
return;
}
@ -78,7 +89,7 @@ class LMeshComponent extends React.Component {
show: true,
options,
animation: animNames[0],
previewText: this.isPlaying ? _t('Cancel') : _t('Preview'),
previewText: this.isPlaying ? _t('Cancel') : _t('Preview')
});
}
@ -109,7 +120,7 @@ class LMeshComponent extends React.Component {
this.isPlaying = true;
this.setState({
previewText: _t('Cancel'),
previewText: _t('Cancel')
});
const model = this.selected.userData.model;
@ -122,7 +133,7 @@ class LMeshComponent extends React.Component {
this.isPlaying = false;
this.setState({
previewText: _t('Preview'),
previewText: _t('Preview')
});
app.on(`animate.LMeshComponent`, null);

View File

@ -19,7 +19,7 @@ class MMDComponent extends React.Component {
animation: null,
cameraAnimation: null,
audio: null,
audio: null
};
this.handleExpand = this.handleExpand.bind(this);
@ -40,10 +40,32 @@ class MMDComponent extends React.Component {
return null;
}
return <PropertyGroup title={_t('MMD Model')} show={show} expanded={expanded} onExpand={this.handleExpand}>
<DisplayProperty label={_t('Model Animation')} name={'animation'} value={animation} btnShow={true} btnText={_t('Select')} onClick={this.handleSelectAnimation}></DisplayProperty>
<DisplayProperty label={_t('Camera Animation')} name={'cameraAnimation'} value={cameraAnimation} btnShow={true} btnText={_t('Select')} onClick={this.handleSelectCameraAnimation}></DisplayProperty>
<DisplayProperty label={_t('Audio')} name={'audio'} value={audio} btnShow={true} btnText={_t('Select')} onClick={this.handleSelectAudio}></DisplayProperty>
return <PropertyGroup title={_t('MMD Model')}
show={show}
expanded={expanded}
onExpand={this.handleExpand}
>
<DisplayProperty label={_t('Model Animation')}
name={'animation'}
value={animation}
btnShow
btnText={_t('Select')}
onClick={this.handleSelectAnimation}
/>
<DisplayProperty label={_t('Camera Animation')}
name={'cameraAnimation'}
value={cameraAnimation}
btnShow
btnText={_t('Select')}
onClick={this.handleSelectCameraAnimation}
/>
<DisplayProperty label={_t('Audio')}
name={'audio'}
value={audio}
btnShow
btnText={_t('Select')}
onClick={this.handleSelectAudio}
/>
</PropertyGroup>;
}
@ -54,7 +76,7 @@ class MMDComponent extends React.Component {
handleExpand(expanded) {
this.setState({
expanded,
expanded
});
}
@ -63,7 +85,7 @@ class MMDComponent extends React.Component {
if (!editor.selected || !(editor.selected.userData.Type === 'pmd' || editor.selected.userData.Type === 'pmx')) {
this.setState({
show: false,
show: false
});
return;
}
@ -74,7 +96,7 @@ class MMDComponent extends React.Component {
show: true,
animation: this.selected.userData.Animation ? this.selected.userData.Animation.Name : null,
cameraAnimation: this.selected.userData.CameraAnimation ? this.selected.userData.CameraAnimation.Name : null,
audio: this.selected.userData.Audio ? this.selected.userData.Audio.Name : null,
audio: this.selected.userData.Audio ? this.selected.userData.Audio.Name : null
};
this.setState(state);
@ -90,7 +112,7 @@ class MMDComponent extends React.Component {
onSelectAnimation(data) {
if (data.Type !== 'mmd') {
app.toast(_t('Please select MMD animation only.'));
app.toast(_t('Please select MMD animation only.'), 'warn');
return;
}
app.on(`selectAnimation.MMDComponent`, null);
@ -111,7 +133,7 @@ class MMDComponent extends React.Component {
onSelectCameraAnimation(data) {
if (data.Type !== 'mmd') {
app.toast(_t('Please select camera animation only.'));
app.toast(_t('Please select camera animation only.'), 'warn');
return;
}
app.on(`selectAnimation.MMDComponent`, null);

View File

@ -897,7 +897,7 @@ class MaterialComponent extends React.Component {
handleTextureSetting() {
if (!this.selected.material.map) {
app.toast(_t('Please select texture first.'));
app.toast(_t('Please select texture first.'), 'warn');
return;
}

View File

@ -57,7 +57,7 @@ class SceneComponent extends React.Component {
fogFarShow: false,
fogDensity: 0.05,
fogDensityShow: false,
fogDensityShow: false
};
this.handleExpand = this.handleExpand.bind(this);
@ -88,25 +88,99 @@ class SceneComponent extends React.Component {
return null;
}
return <PropertyGroup title={_t('SceneComponent')} show={show} expanded={expanded} onExpand={this.handleExpand}>
<SelectProperty label={_t('Background')} name={'backgroundType'} options={this.backgroundType} value={backgroundType} onChange={this.handleChangeBackgroundType}></SelectProperty>
<ColorProperty label={_t('BackgroundColor')} name={'backgroundColor'} value={backgroundColor} show={backgroundColorShow} onChange={this.handleChangeBackgroundColor}></ColorProperty>
<TextureProperty label={_t('Background Image')} name={'backgroundImage'} value={backgroundImage} show={backgroundImageShow} onChange={this.handleChangeBackgroundImage}></TextureProperty>
<TextureProperty label={_t('PosX')} name={'backgroundPosX'} value={backgroundPosX} show={backgroundCubeTextureShow} onChange={this.handleChangeBackgroundCubeTexture}></TextureProperty>
<TextureProperty label={_t('NegX')} name={'backgroundNegX'} value={backgroundNegX} show={backgroundCubeTextureShow} onChange={this.handleChangeBackgroundCubeTexture}></TextureProperty>
<TextureProperty label={_t('PosY')} name={'backgroundPosY'} value={backgroundPosY} show={backgroundCubeTextureShow} onChange={this.handleChangeBackgroundCubeTexture}></TextureProperty>
<TextureProperty label={_t('NegY')} name={'backgroundNegY'} value={backgroundNegY} show={backgroundCubeTextureShow} onChange={this.handleChangeBackgroundCubeTexture}></TextureProperty>
<TextureProperty label={_t('PosZ')} name={'backgroundPosZ'} value={backgroundPosZ} show={backgroundCubeTextureShow} onChange={this.handleChangeBackgroundCubeTexture}></TextureProperty>
<TextureProperty label={_t('NegZ')} name={'backgroundNegZ'} value={backgroundNegZ} show={backgroundCubeTextureShow} onChange={this.handleChangeBackgroundCubeTexture}></TextureProperty>
return <PropertyGroup title={_t('SceneComponent')}
show={show}
expanded={expanded}
onExpand={this.handleExpand}
>
<SelectProperty label={_t('Background')}
name={'backgroundType'}
options={this.backgroundType}
value={backgroundType}
onChange={this.handleChangeBackgroundType}
/>
<ColorProperty label={_t('BackgroundColor')}
name={'backgroundColor'}
value={backgroundColor}
show={backgroundColorShow}
onChange={this.handleChangeBackgroundColor}
/>
<TextureProperty label={_t('Background Image')}
name={'backgroundImage'}
value={backgroundImage}
show={backgroundImageShow}
onChange={this.handleChangeBackgroundImage}
/>
<TextureProperty label={_t('PosX')}
name={'backgroundPosX'}
value={backgroundPosX}
show={backgroundCubeTextureShow}
onChange={this.handleChangeBackgroundCubeTexture}
/>
<TextureProperty label={_t('NegX')}
name={'backgroundNegX'}
value={backgroundNegX}
show={backgroundCubeTextureShow}
onChange={this.handleChangeBackgroundCubeTexture}
/>
<TextureProperty label={_t('PosY')}
name={'backgroundPosY'}
value={backgroundPosY}
show={backgroundCubeTextureShow}
onChange={this.handleChangeBackgroundCubeTexture}
/>
<TextureProperty label={_t('NegY')}
name={'backgroundNegY'}
value={backgroundNegY}
show={backgroundCubeTextureShow}
onChange={this.handleChangeBackgroundCubeTexture}
/>
<TextureProperty label={_t('PosZ')}
name={'backgroundPosZ'}
value={backgroundPosZ}
show={backgroundCubeTextureShow}
onChange={this.handleChangeBackgroundCubeTexture}
/>
<TextureProperty label={_t('NegZ')}
name={'backgroundNegZ'}
value={backgroundNegZ}
show={backgroundCubeTextureShow}
onChange={this.handleChangeBackgroundCubeTexture}
/>
<ButtonsProperty show={backgroundCubeTextureShow}>
<Button onClick={this.handleLoadCubeTexture}>{_t('Select')}</Button>
<Button onClick={this.handleSaveCubeTexture}>{_t('Upload')}</Button>
</ButtonsProperty>
<SelectProperty label={_t('Fog')} name={'fogType'} options={this.fogType} value={fogType} onChange={this.handleChangeFogType}></SelectProperty>
<ColorProperty label={_t('FogColor')} name={'fogColor'} value={fogColor} show={fogColorShow} onChange={this.handleChangeFogColor}></ColorProperty>
<NumberProperty label={_t('FogNear')} name={'fogNear'} value={fogNear} show={fogNearShow} onChange={this.handleChangeFogNear}></NumberProperty>
<NumberProperty label={_t('FogFar')} name={'fogFar'} value={fogFar} show={fogFarShow} onChange={this.handleChangeFogFar}></NumberProperty>
<NumberProperty label={_t('FogDensity')} name={'fogDensity'} value={fogDensity} show={fogDensityShow} onChange={this.handleChangeFogDensity}></NumberProperty>
<SelectProperty label={_t('Fog')}
name={'fogType'}
options={this.fogType}
value={fogType}
onChange={this.handleChangeFogType}
/>
<ColorProperty label={_t('FogColor')}
name={'fogColor'}
value={fogColor}
show={fogColorShow}
onChange={this.handleChangeFogColor}
/>
<NumberProperty label={_t('FogNear')}
name={'fogNear'}
value={fogNear}
show={fogNearShow}
onChange={this.handleChangeFogNear}
/>
<NumberProperty label={_t('FogFar')}
name={'fogFar'}
value={fogFar}
show={fogFarShow}
onChange={this.handleChangeFogFar}
/>
<NumberProperty label={_t('FogDensity')}
name={'fogDensity'}
value={fogDensity}
show={fogDensityShow}
onChange={this.handleChangeFogDensity}
/>
</PropertyGroup>;
}
@ -117,7 +191,7 @@ class SceneComponent extends React.Component {
handleExpand(expanded) {
this.setState({
expanded,
expanded
});
}
@ -126,7 +200,7 @@ class SceneComponent extends React.Component {
if (!editor.selected || editor.selected !== app.editor.scene) {
this.setState({
show: false,
show: false
});
return;
}
@ -142,7 +216,7 @@ class SceneComponent extends React.Component {
show: true,
//
backgroundType: background instanceof THREE.CubeTexture ? 'SkyBox' : (background instanceof THREE.Texture ? 'Image' : 'Color'),
backgroundType: background instanceof THREE.CubeTexture ? 'SkyBox' : background instanceof THREE.Texture ? 'Image' : 'Color',
backgroundColor: background instanceof THREE.Color ? `#${background.getHexString()}` : backgroundColor,
backgroundColorShow: background instanceof THREE.Color,
backgroundImage: background instanceof THREE.Texture && !(background instanceof THREE.CubeTexture) ? background : null,
@ -156,15 +230,15 @@ class SceneComponent extends React.Component {
backgroundCubeTextureShow: background instanceof THREE.CubeTexture,
//
fogType: fog == null ? 'None' : (fog instanceof THREE.FogExp2 ? 'FogExp2' : 'Fog'),
fogColor: fog == null ? fogColor : `#${fog.color.getHexString()}`,
fogType: fog === null ? 'None' : fog instanceof THREE.FogExp2 ? 'FogExp2' : 'Fog',
fogColor: fog === null ? fogColor : `#${fog.color.getHexString()}`,
fogColorShow: fog !== null,
fogNear: fog instanceof THREE.Fog ? fog.near : fogNear,
fogNearShow: fog !== null && fog instanceof THREE.Fog,
fogFar: fog instanceof THREE.Fog ? fog.far : fogFar,
fogFarShow: fog instanceof THREE.Fog,
fogDensity: fog instanceof THREE.FogExp2 ? fog.density : fogDensity,
fogDensityShow: fog instanceof THREE.FogExp2,
fogDensityShow: fog instanceof THREE.FogExp2
};
this.setState(state);
@ -175,7 +249,7 @@ class SceneComponent extends React.Component {
backgroundType, backgroundColor, backgroundImage,
backgroundPosX, backgroundNegX, backgroundPosY, backgroundNegY, backgroundPosZ, backgroundNegZ
} = Object.assign({}, this.state, {
[name]: value,
[name]: value
});
let scene = this.selected;
@ -193,7 +267,7 @@ class SceneComponent extends React.Component {
[name]: value,
backgroundColorShow: false,
backgroundImageShow: true,
backgroundCubeTextureShow: false,
backgroundCubeTextureShow: false
});
return;
}
@ -215,7 +289,7 @@ class SceneComponent extends React.Component {
[name]: value,
backgroundColorShow: false,
backgroundImageShow: false,
backgroundCubeTextureShow: true,
backgroundCubeTextureShow: true
});
return;
}
@ -228,7 +302,7 @@ class SceneComponent extends React.Component {
handleChangeBackgroundColor(value, name) {
if (value === null) {
this.setState({
[name]: value,
[name]: value
});
return;
}
@ -243,7 +317,7 @@ class SceneComponent extends React.Component {
this.selected.background = new THREE.Color(this.state.backgroundColor);
this.setState({
[name]: value,
[name]: value
});
return;
}
@ -258,13 +332,13 @@ class SceneComponent extends React.Component {
this.selected.background = new THREE.Color(this.state.backgroundColor);
this.setState({
[name]: value,
[name]: value
});
return;
}
const { backgroundPosX, backgroundNegX, backgroundPosY, backgroundNegY, backgroundPosZ, backgroundNegZ } = Object.assign({}, this.state, {
[name]: value,
[name]: value
});
if (backgroundPosX && backgroundNegX && backgroundPosY && backgroundNegY && backgroundPosZ && backgroundNegZ) {
@ -284,7 +358,7 @@ class SceneComponent extends React.Component {
app.call(`objectChanged`, this, this.selected);
} else {
this.setState({
[name]: value,
[name]: value
});
}
}
@ -316,7 +390,7 @@ class SceneComponent extends React.Component {
resolve(texture);
}, undefined, error => {
console.error(error);
app.toast(_t('Cube Texture fetch failed.'));
app.toast(_t('Cube Texture fetch failed.'), 'warn');
});
});
});
@ -343,7 +417,7 @@ class SceneComponent extends React.Component {
const { backgroundPosX, backgroundNegX, backgroundPosY, backgroundNegY, backgroundPosZ, backgroundNegZ } = this.state;
if (!backgroundPosX || !backgroundNegX || !backgroundPosY || !backgroundNegY || !backgroundPosZ || !backgroundNegZ) {
app.toast(_t('Please upload all the textures before save.'));
app.toast(_t('Please upload all the textures before save.'), 'warn');
return;
}
@ -355,7 +429,7 @@ class SceneComponent extends React.Component {
const negZSrc = backgroundNegZ.image.src;
if (posXSrc.startsWith('http') || negXSrc.startsWith('http') || posYSrc.startsWith('http') || negYSrc.startsWith('http') || posZSrc.startsWith('http') || negZSrc.startsWith('http')) {
app.toast(_t('Cube texture has already been uploaded.'));
app.toast(_t('Cube texture has already been uploaded.'), 'warn');
return;
}
@ -365,7 +439,7 @@ class SceneComponent extends React.Component {
Converter.dataURLtoFile(posYSrc, 'posY'),
Converter.dataURLtoFile(negYSrc, 'negY'),
Converter.dataURLtoFile(posZSrc, 'posZ'),
Converter.dataURLtoFile(negZSrc, 'negZ'),
Converter.dataURLtoFile(negZSrc, 'negZ')
];
Promise.all(promises).then(files => {
@ -375,7 +449,7 @@ class SceneComponent extends React.Component {
posY: files[2],
negY: files[3],
posZ: files[4],
negZ: files[5],
negZ: files[5]
}, result => {
let obj = JSON.parse(result);
app.toast(_t(obj.Msg));
@ -385,7 +459,7 @@ class SceneComponent extends React.Component {
handleChangeFogType(value, name) {
const { fogType, fogColor, fogNear, fogFar, fogDensity } = Object.assign({}, this.state, {
[name]: value,
[name]: value
});
let scene = this.selected;
@ -408,7 +482,7 @@ class SceneComponent extends React.Component {
handleChangeFogColor(value, name) {
if (value === null) {
this.setState({
[name]: value,
[name]: value
});
return;
}
@ -421,7 +495,7 @@ class SceneComponent extends React.Component {
handleChangeFogNear(value, name) {
if (value === null) {
this.setState({
[name]: value,
[name]: value
});
return;
}
@ -434,7 +508,7 @@ class SceneComponent extends React.Component {
handleChangeFogFar(value, name) {
if (value === null) {
this.setState({
[name]: value,
[name]: value
});
return;
}
@ -447,7 +521,7 @@ class SceneComponent extends React.Component {
handleChangeFogDensity(value, name) {
if (value === null) {
this.setState({
[name]: value,
[name]: value
});
return;
}

View File

@ -19,7 +19,7 @@ class BackgroundMusicComponent extends React.Component {
loop: true,
volume: 1,
showPlayButton: false,
isPlaying: false,
isPlaying: false
};
this.handleExpand = this.handleExpand.bind(this);
@ -37,12 +37,37 @@ class BackgroundMusicComponent extends React.Component {
return null;
}
return <PropertyGroup title={_t('Background Music')} show={show} expanded={expanded} onExpand={this.handleExpand}>
<DisplayProperty label={_t('Audio')} name={'name'} value={name === '' ? `(${_t('None')})` : name} btnShow={true} btnText={_t('Select')} onClick={this.handleSelect}></DisplayProperty>
<CheckBoxProperty label={_t('Auto Play')} name={'autoplay'} value={autoplay} onChange={this.handleChange}></CheckBoxProperty>
<CheckBoxProperty label={_t('Loop')} name={'loop'} value={loop} onChange={this.handleChange}></CheckBoxProperty>
<NumberProperty label={_t('Volume')} name={'volume'} value={volume} onChange={this.handleChange}></NumberProperty>
<ButtonProperty text={isPlaying ? _t('Stop') : _t('Play')} show={showPlayButton} onChange={this.handlePlay}></ButtonProperty>
return <PropertyGroup title={_t('Background Music')}
show={show}
expanded={expanded}
onExpand={this.handleExpand}
>
<DisplayProperty label={_t('Audio')}
name={'name'}
value={name === '' ? `(${_t('None')})` : name}
btnShow
btnText={_t('Select')}
onClick={this.handleSelect}
/>
<CheckBoxProperty label={_t('Auto Play')}
name={'autoplay'}
value={autoplay}
onChange={this.handleChange}
/>
<CheckBoxProperty label={_t('Loop')}
name={'loop'}
value={loop}
onChange={this.handleChange}
/>
<NumberProperty label={_t('Volume')}
name={'volume'}
value={volume}
onChange={this.handleChange}
/>
<ButtonProperty text={isPlaying ? _t('Stop') : _t('Play')}
show={showPlayButton}
onChange={this.handlePlay}
/>
</PropertyGroup>;
}
@ -53,7 +78,7 @@ class BackgroundMusicComponent extends React.Component {
handleExpand(expanded) {
this.setState({
expanded,
expanded
});
}
@ -62,7 +87,7 @@ class BackgroundMusicComponent extends React.Component {
if (!editor.selected || !(editor.selected instanceof THREE.Audio)) {
this.setState({
show: false,
show: false
});
return;
}
@ -75,8 +100,8 @@ class BackgroundMusicComponent extends React.Component {
autoplay: this.selected.userData.autoplay || false,
loop: this.selected.getLoop(),
volumn: this.selected.getVolume(),
showPlayButton: this.selected.buffer != null,
isPlaying: this.selected.isPlaying || false,
showPlayButton: this.selected.buffer !== null,
isPlaying: this.selected.isPlaying || false
};
this.setState(state);
@ -100,7 +125,7 @@ class BackgroundMusicComponent extends React.Component {
this.setState({
name: obj.Name,
showPlayButton: true,
showPlayButton: true
});
});
}
@ -108,13 +133,13 @@ class BackgroundMusicComponent extends React.Component {
handleChange(value, name) {
if (value === null) {
this.setState({
[name]: value,
[name]: value
});
return;
}
const { autoplay, loop, volumn } = Object.assign({}, this.state, {
[name]: value,
[name]: value
});
this.selected.userData.autoplay = autoplay; // this.selected
@ -128,7 +153,7 @@ class BackgroundMusicComponent extends React.Component {
if (!this.selected.buffer) {
this.setState({
showPlayButton: false,
isPlaying: false,
isPlaying: false
});
return;
}
@ -142,7 +167,7 @@ class BackgroundMusicComponent extends React.Component {
this.setState({
showPlayButton: true,
isPlaying: this.selected.isPlaying,
isPlaying: this.selected.isPlaying
});
}
}

View File

@ -13,7 +13,7 @@ class CatmullRomCurveComponent extends React.Component {
this.curveType = {
centripetal: _t('Centripetal Force'),
chordal: _t('Chord'),
catmullrom: _t('Catmullrom'),
catmullrom: _t('Catmullrom')
};
this.state = {
@ -21,7 +21,7 @@ class CatmullRomCurveComponent extends React.Component {
expanded: false,
closed: true,
curveType: 'catmullrom',
tension: 1,
tension: 1
};
this.handleExpand = this.handleExpand.bind(this);
@ -38,14 +38,31 @@ class CatmullRomCurveComponent extends React.Component {
return null;
}
return <PropertyGroup title={_t('CatmullRom Curve')} show={show} expanded={expanded} onExpand={this.handleExpand}>
return <PropertyGroup title={_t('CatmullRom Curve')}
show={show}
expanded={expanded}
onExpand={this.handleExpand}
>
<ButtonsProperty>
<Button onClick={this.handleAddPoint}>{_t('Add Point')}</Button>
<Button onClick={this.handleRemovePoint}>{_t('Remove Point')}</Button>
</ButtonsProperty>
<CheckBoxProperty label={_t('Closed')} name={'closed'} value={closed} onChange={this.handleChange}></CheckBoxProperty>
<SelectProperty label={_t('Curve Type')} options={this.curveType} name={'curveType'} value={curveType} onChange={this.handleChange}></SelectProperty>
<NumberProperty label={_t('Tension')} name={'tension'} value={tension} onChange={this.handleChange}></NumberProperty>
<CheckBoxProperty label={_t('Closed')}
name={'closed'}
value={closed}
onChange={this.handleChange}
/>
<SelectProperty label={_t('Curve Type')}
options={this.curveType}
name={'curveType'}
value={curveType}
onChange={this.handleChange}
/>
<NumberProperty label={_t('Tension')}
name={'tension'}
value={tension}
onChange={this.handleChange}
/>
</PropertyGroup>;
}
@ -56,7 +73,7 @@ class CatmullRomCurveComponent extends React.Component {
handleExpand(expanded) {
this.setState({
expanded,
expanded
});
}
@ -65,7 +82,7 @@ class CatmullRomCurveComponent extends React.Component {
if (!editor.selected || editor.selected.userData.type !== 'CatmullRomCurve') {
this.setState({
show: false,
show: false
});
return;
}
@ -76,7 +93,7 @@ class CatmullRomCurveComponent extends React.Component {
show: true,
closed: this.selected.userData.closed,
curveType: this.selected.userData.curveType,
tension: this.selected.userData.tension,
tension: this.selected.userData.tension
});
}
@ -105,7 +122,7 @@ class CatmullRomCurveComponent extends React.Component {
let points = this.selected.userData.points;
if (points.length === 3) {
app.toast(_t('CatmullRom curve should have at least 3 points.'));
app.toast(_t('CatmullRom curve should have at least 3 points.'), 'warn');
return;
}
@ -119,13 +136,13 @@ class CatmullRomCurveComponent extends React.Component {
handleChange(value, name) {
if (value === null) {
this.setState({
[name]: value,
[name]: value
});
return;
}
const { closed, curveType, tension } = Object.assign({}, this.state, {
[name]: value,
[name]: value
});
Object.assign(this.selected.userData, {

View File

@ -23,16 +23,34 @@ class AssetsMenu extends React.Component {
render() {
return <MenuItem title={_t('Assets')}>
<MenuItem title={_t('Export Geometry')} onClick={this.handleExportGeometry}></MenuItem>
<MenuItem title={_t('Export Object')} onClick={this.handleExportObject}></MenuItem>
<MenuItem title={_t('Export Geometry')}
onClick={this.handleExportGeometry}
/>
<MenuItem title={_t('Export Object')}
onClick={this.handleExportObject}
/>
<MenuItemSeparator />
<MenuItem title={_t('Export Collada')} onClick={this.handleExportCollada}></MenuItem>
<MenuItem title={_t('Export DRACO')} onClick={this.handleExportDRACO}></MenuItem>
<MenuItem title={_t('Export GLTF')} onClick={this.handleExportGLTF}></MenuItem>
<MenuItem title={_t('Export OBJ')} onClick={this.handleExportOBJ}></MenuItem>
<MenuItem title={_t('Export PLY')} onClick={this.handleExportPLY}></MenuItem>
<MenuItem title={_t('Export STL Binary')} onClick={this.handleExportSTLB}></MenuItem>
<MenuItem title={_t('Export STL')} onClick={this.handleExportSTL}></MenuItem>
<MenuItem title={_t('Export Collada')}
onClick={this.handleExportCollada}
/>
<MenuItem title={_t('Export DRACO')}
onClick={this.handleExportDRACO}
/>
<MenuItem title={_t('Export GLTF')}
onClick={this.handleExportGLTF}
/>
<MenuItem title={_t('Export OBJ')}
onClick={this.handleExportOBJ}
/>
<MenuItem title={_t('Export PLY')}
onClick={this.handleExportPLY}
/>
<MenuItem title={_t('Export STL Binary')}
onClick={this.handleExportSTLB}
/>
<MenuItem title={_t('Export STL')}
onClick={this.handleExportSTL}
/>
</MenuItem>;
}
@ -44,14 +62,14 @@ class AssetsMenu extends React.Component {
var object = editor.selected;
if (object === null) {
app.toast(_t('Please select object!'));
app.toast(_t('Please select object!'), 'warn');
return;
}
var geometry = object.geometry;
if (geometry === undefined) {
app.toast(_t('The object you selected is not geometry.'));
app.toast(_t('The object you selected is not geometry.'), 'warn');
return;
}
@ -75,7 +93,7 @@ class AssetsMenu extends React.Component {
var object = editor.selected;
if (object === null) {
app.toast(_t('Please select object!'));
app.toast(_t('Please select object!'), 'warn');
return;
}
@ -141,7 +159,7 @@ class AssetsMenu extends React.Component {
var object = editor.selected;
if (object === null) {
app.toast(_t('Please select object!'));
app.toast(_t('Please select object!'), 'warn');
return;
}
@ -159,7 +177,7 @@ class AssetsMenu extends React.Component {
var object = editor.selected;
if (object === null) {
app.toast(_t('Please select object!'));
app.toast(_t('Please select object!'), 'warn');
return;
}

View File

@ -27,16 +27,34 @@ class LightMenu extends React.Component {
render() {
return <MenuItem title={_t('Light')}>
<MenuItem title={_t('Ambient Light')} onClick={this.handleAddAmbientLight} />
<MenuItem title={_t('Directional Light')} onClick={this.handleAddDirectionalLight} />
<MenuItem title={_t('Point Light')} onClick={this.handleAddPointLight} />
<MenuItem title={_t('Spot Light')} onClick={this.handleAddSpotLight} />
<MenuItem title={_t('Hemisphere Light')} onClick={this.handleAddHemisphereLight} />
<MenuItem title={_t('Rect Area Light')} onClick={this.handleAddRectAreaLight} />
<MenuItem title={_t('Ambient Light')}
onClick={this.handleAddAmbientLight}
/>
<MenuItem title={_t('Directional Light')}
onClick={this.handleAddDirectionalLight}
/>
<MenuItem title={_t('Point Light')}
onClick={this.handleAddPointLight}
/>
<MenuItem title={_t('Spot Light')}
onClick={this.handleAddSpotLight}
/>
<MenuItem title={_t('Hemisphere Light')}
onClick={this.handleAddHemisphereLight}
/>
<MenuItem title={_t('Rect Area Light')}
onClick={this.handleAddRectAreaLight}
/>
<MenuItemSeparator />
<MenuItem title={_t('Point Light Helper')} onClick={this.handleAddPointLightHelper} />
<MenuItem title={_t('Hemisphere Light Helper')} onClick={this.handleAddHemisphereLightHelper} />
<MenuItem title={_t('Rect Area Light Helper')} onClick={this.handleAddRectAreaLightHelper} />
<MenuItem title={_t('Point Light Helper')}
onClick={this.handleAddPointLightHelper}
/>
<MenuItem title={_t('Hemisphere Light Helper')}
onClick={this.handleAddHemisphereLightHelper}
/>
<MenuItem title={_t('Rect Area Light Helper')}
onClick={this.handleAddRectAreaLightHelper}
/>
</MenuItem>;
}
@ -153,7 +171,7 @@ class LightMenu extends React.Component {
let selected = app.editor.selected;
if (!(selected instanceof THREE.PointLight)) {
app.toast(_t('The selected object is not a point light.'));
app.toast(_t('The selected object is not a point light.'), 'warn');
return;
}
@ -167,7 +185,7 @@ class LightMenu extends React.Component {
let selected = app.editor.selected;
if (!(selected instanceof THREE.HemisphereLight)) {
app.toast(_t('The selected object is not a hemisphere light.'));
app.toast(_t('The selected object is not a hemisphere light.'), 'warn');
return;
}
@ -181,7 +199,7 @@ class LightMenu extends React.Component {
let selected = app.editor.selected;
if (!(selected instanceof THREE.RectAreaLight)) {
app.toast(_t('The selected object is not a rect area light.'));
app.toast(_t('The selected object is not a rect area light.'), 'warn');
return;
}

View File

@ -94,7 +94,7 @@ class LoginMenu extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
app.confirm({

View File

@ -93,7 +93,7 @@ class PlayMenu extends React.Component {
let sceneID = app.editor.sceneID;
if (!sceneID) {
app.toast(_t('Please save scene first.'));
app.toast(_t('Please save scene first.'), 'warn');
return;
}

View File

@ -61,7 +61,7 @@ class SceneMenu extends React.Component {
editor.sceneID = null;
editor.sceneName = null;
document.title = _t('No Name');
app.toast(_t('Create empty scene successfully.'));
app.toast(_t('Create empty scene successfully.'), 'success');
return;
}
@ -160,7 +160,7 @@ class SceneMenu extends React.Component {
app.unmask();
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'success');
});
}
@ -216,7 +216,7 @@ class SceneMenu extends React.Component {
app.unmask();
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'success');
});
}
@ -255,7 +255,7 @@ class SceneMenu extends React.Component {
var sceneID = app.editor.sceneID;
if (!sceneID) {
app.toast(_t('Please open scene first.'));
app.toast(_t('Please open scene first.'), 'warn');
return;
}
@ -272,10 +272,10 @@ class SceneMenu extends React.Component {
response.json().then(obj => {
app.unmask();
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'success');
window.open(`${app.options.server}${obj.Url}`, 'export');
});
}

View File

@ -94,7 +94,7 @@ class SystemMenu extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
app.confirm({

View File

@ -68,10 +68,10 @@ class ToolMenu extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'success');
});
});
}
@ -92,10 +92,10 @@ class ToolMenu extends React.Component {
if (response.ok) {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'success');
window.open(`${app.options.server}${obj.Url}`, 'export');
});
}
@ -117,10 +117,10 @@ class ToolMenu extends React.Component {
if (response.ok) {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'success');
window.open(`${app.options.server}${obj.Url}`, 'export');
});
}

View File

@ -77,7 +77,7 @@ class AuthorityManagementWindow extends React.Component {
fetch(`${app.options.server}/api/Role/List?pageSize=10000`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -96,7 +96,7 @@ class AuthorityManagementWindow extends React.Component {
fetch(`${app.options.server}/api/OperatingAuthority/Get?roleID=${selected.ID}`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
obj.Data.rows.forEach(n => {
@ -155,10 +155,10 @@ class AuthorityManagementWindow extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'success');
this.handleSelectRole({
ID: roleID
});

View File

@ -84,10 +84,10 @@ class ChangePasswordWindow extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'success');
this.handleClose();
});
});

View File

@ -109,7 +109,7 @@ class DepartmentManagementWindow extends React.Component {
fetch(`${app.options.server}/api/Department/List?pageSize=10000`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.list = obj.Data;
@ -189,7 +189,7 @@ class DepartmentManagementWindow extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.handleRefresh(obj.Data);
@ -244,7 +244,7 @@ class DepartmentManagementWindow extends React.Component {
const { selected, deptName, adminID } = this.state;
if (!deptName || deptName.trim() === '') {
app.toast(_t('Name is not allowed to be empty.'));
app.toast(_t('Name is not allowed to be empty.'), 'warn');
return;
}
@ -259,10 +259,10 @@ class DepartmentManagementWindow extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'success');
this.handleRefresh();
});
});

View File

@ -98,10 +98,10 @@ class RegisterWindow extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'success');
this.handleClose();
});
});

View File

@ -117,7 +117,7 @@ class RoleManageWindow extends React.Component {
response.json().then(obj => {
app.unmask();
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -152,7 +152,7 @@ class RoleManageWindow extends React.Component {
if (record.Name === 'Administrator' ||
record.Name === 'User' ||
record.Name === 'Guest') {
app.toast(_t('Modifying system built-in roles is not allowed.'));
app.toast(_t('Modifying system built-in roles is not allowed.'), 'warn');
return;
}
@ -176,7 +176,7 @@ class RoleManageWindow extends React.Component {
if (record.Name === 'Administrator' ||
record.Name === 'User' ||
record.Name === 'Guest') {
app.toast(_t('It is not allowed to delete system built-in roles.'));
app.toast(_t('It is not allowed to delete system built-in roles.'), 'warn');
return;
}
@ -195,10 +195,10 @@ class RoleManageWindow extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'success');
});
});
}

View File

@ -52,7 +52,7 @@ class SystemSettingWindow extends React.Component {
fetch(`/api/Config/Get`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -64,7 +64,7 @@ class SystemSettingWindow extends React.Component {
fetch(`/api/Role/List?pageSize=10000`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
let roles = {};
@ -96,10 +96,10 @@ class SystemSettingWindow extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'success');
this.handleClose();
});
});

View File

@ -132,7 +132,7 @@ class UserManageWindow extends React.Component {
response.json().then(obj => {
app.unmask();
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({
@ -165,7 +165,7 @@ class UserManageWindow extends React.Component {
const record = data.filter(n => n.ID === selected)[0];
if (record.Username === 'admin') {
app.toast(_t('Modifying system built-in users is not allowed.'));
app.toast(_t('Modifying system built-in users is not allowed.'), 'warn');
return;
}
@ -192,7 +192,7 @@ class UserManageWindow extends React.Component {
const record = this.state.data.filter(n => n.ID === selected)[0];
if (record.Username === 'admin') {
app.toast(_t('It is not allowed to delete system built-in users.'));
app.toast(_t('It is not allowed to delete system built-in users.'), 'warn');
return;
}
@ -225,11 +225,11 @@ class UserManageWindow extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.handleRefresh();
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'success');
});
});
}

View File

@ -63,7 +63,7 @@ class EditDeptWindow extends React.Component {
const { id, name, pid } = this.state;
if (!name || name.trim() === '') {
app.toast(_t('Name is not allowed to be empty.'));
app.toast(_t('Name is not allowed to be empty.'), 'warn');
return;
}
@ -78,7 +78,7 @@ class EditDeptWindow extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.handleClose();

View File

@ -62,7 +62,7 @@ class SelectDeptWindow extends React.Component {
fetch(`${app.options.server}/api/Department/List?pageSize=10000`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.list = obj.Data;

View File

@ -56,7 +56,7 @@ class EditRoleWindow extends React.Component {
const { id, name } = this.state;
if (!name || name.trim() === '') {
app.toast(_t('Name is not allowed to be empty.'));
app.toast(_t('Name is not allowed to be empty.'), 'warn');
return;
}
@ -71,7 +71,7 @@ class EditRoleWindow extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.handleClose();

View File

@ -110,7 +110,7 @@ class EditUserWindow extends React.Component {
fetch(`${app.options.server}/api/Role/List?pageSize=10000`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
const roles = {
@ -150,27 +150,27 @@ class EditUserWindow extends React.Component {
const { id, username, password, confirmPassword, name, roleID, deptID } = this.state;
if (!username || username.trim() === '') {
app.toast(_t('Username is not allowed to be empty.'));
app.toast(_t('Username is not allowed to be empty.'), 'warn');
return;
}
if (!id && (!password || password.trim() === '')) {
app.toast(_t('Password is not allowed to be empty.'));
app.toast(_t('Password is not allowed to be empty.'), 'warn');
return;
}
if (!id && (!confirmPassword || confirmPassword.trim() === '')) {
app.toast(_t('Confirm password is not allowed to be empty.'));
app.toast(_t('Confirm password is not allowed to be empty.'), 'warn');
return;
}
if (!id && password !== confirmPassword) {
app.toast(_t('Password and confirm password is not the same.'));
app.toast(_t('Password and confirm password is not the same.'), 'warn');
return;
}
if (!name || name.trim() === '') {
app.toast(_t('Nick name is not allowed to be empty.'));
app.toast(_t('Nick name is not allowed to be empty.'), 'warn');
return;
}
@ -185,7 +185,7 @@ class EditUserWindow extends React.Component {
}).then(response => {
response.json().then(json => {
if (json.Code !== 200) {
app.toast(_t(json.Msg));
app.toast(_t(json.Msg), 'warn');
return;
}
this.handleClose();

View File

@ -67,17 +67,17 @@ class ResetPasswordWindow extends React.Component {
const { id, newPassword, confirmPassword } = this.state;
if (!newPassword || newPassword.trim() === '') {
app.toast(_t('New password is not allowed to be empty.'));
app.toast(_t('New password is not allowed to be empty.'), 'warn');
return;
}
if (!confirmPassword || confirmPassword.trim() === '') {
app.toast(_t('Confirm password is not allowed to be empty.'));
app.toast(_t('Confirm password is not allowed to be empty.'), 'warn');
return;
}
if (newPassword !== confirmPassword) {
app.toast(_t('New password and confirm password is not the same.'));
app.toast(_t('New password and confirm password is not the same.'), 'warn');
return;
}
@ -90,10 +90,10 @@ class ResetPasswordWindow extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'success');
this.handleClose();
});
});

View File

@ -125,7 +125,7 @@ class SelectUserWindow extends React.Component {
response.json().then(obj => {
app.unmask();
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.setState({

View File

@ -204,10 +204,10 @@ class GeneralTools extends React.Component {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'success');
});
});
}

View File

@ -103,7 +103,7 @@ Player.prototype.start = function (sceneData) {
try {
jsons = JSON.parse(sceneData);
} catch (e) {
app.toast(_t('Cannot deserialize scene data.'));
app.toast(_t('Cannot deserialize scene data.'), 'error');
return;
}

View File

@ -23,7 +23,7 @@ class Server {
fetch(`/api/Config/Get`).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
this.enableAuthority = obj.Data.EnableAuthority;
@ -41,12 +41,12 @@ class Server {
resolve();
}).catch(e => {
console.warn(e);
app.toast(_t('Server configuration acquisition failed.'));
app.toast(_t('Server configuration acquisition failed.'), 'error');
resolve();
});
}).catch(e => {
console.warn(e);
app.toast(_t('Server configuration acquisition failed.'));
app.toast(_t('Server configuration acquisition failed.'), 'error');
resolve();
});
});
@ -63,7 +63,7 @@ class Server {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
resolve(false);
return;
}
@ -93,7 +93,7 @@ class Server {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
resolve(false);
return;
}

View File

@ -16,7 +16,7 @@ class VideoRecorder {
start() {
if (!navigator.mediaDevices) {
app.toast(`Record is not supported!`);
app.toast(`Record is not supported!`, 'error');
return new Promise(resolve => {
resolve(false);
});
@ -31,7 +31,7 @@ class VideoRecorder {
resolve(true);
})
.catch(err => {
app.toast(err);
app.toast(err, 'error');
resolve(false);
});
});
@ -54,10 +54,10 @@ class VideoRecorder {
}).then(response => {
response.json().then(obj => {
if (obj.Code !== 200) {
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'warn');
return;
}
app.toast(_t(obj.Msg));
app.toast(_t(obj.Msg), 'success');
this.chunks.length = 0;
resolve(true);
});