!1520 增强:显示文件大小按钮运用于材质和贴图中

pull/1520/MERGE
林三 3 years ago committed by ChenX
parent 373f8a6aa0
commit 8ecf181f1e

@ -23,6 +23,7 @@ export interface IFileListProps
copy?: Function; copy?: Function;
paste?: Function; paste?: Function;
copyIds?: Set<string>; copyIds?: Set<string>;
isShowSize?: boolean;
} }
@ -166,23 +167,15 @@ export class FileList extends React.Component<IFileListProps, {}> {
/> />
} }
renderOtherElement={(data) => renderOtherElement={(data) =>
this.isShowSize && this.props.isShowSize &&
<Card style={{ <Card style={{
position: "absolute", position: "absolute",
left: 5, right: "5%",
bottom: 60, bottom: 65,
padding: 0, padding: 0,
}}>{getFileSize(parseFloat(data.size))}</Card> }}>{getFileSize(parseFloat(data.size))}</Card>
} }
/> />
{
!this.props.showInfos && < Checkbox
checked={this.isShowSize}
label="显示文件大小"
style={{ width: "max-content" }}
onChange={() => this.isShowSize = !this.isShowSize}
/>
}
</> </>
); );
} }

@ -16,12 +16,17 @@ import { CommonPanel, IDirectoryProps } from './CommonPanel';
import { FileList as CFileList } from './FileList'; import { FileList as CFileList } from './FileList';
import { HandleDirComponent } from './HandleDirComponent'; import { HandleDirComponent } from './HandleDirComponent';
export interface Props
{
isShowSize?: boolean;
store?: TopPanelStore;
}
/** /**
* *
*/ */
@inject("store") @inject("store")
@observer @observer
export class FilePanel extends React.Component<{ store?: TopPanelStore; }, {}> export class FilePanel extends React.Component<Props, {}>
{ {
commonPanel: CommonPanel; commonPanel: CommonPanel;
private canCreateFile = observable.box(false); private canCreateFile = observable.box(false);
@ -284,6 +289,7 @@ export class FilePanel extends React.Component<{ store?: TopPanelStore; }, {}>
<CFileList <CFileList
isRename={this.canCreateFile} isRename={this.canCreateFile}
info={this.currentFileInfo} info={this.currentFileInfo}
isShowSize={this.props.isShowSize}
/> />
{ {
this.canCreateFile.get() && <HandleDirComponent this.canCreateFile.get() && <HandleDirComponent

@ -4,6 +4,7 @@ import * as React from 'react';
import { MaterialStore } from '../../Store/MaterialStore'; import { MaterialStore } from '../../Store/MaterialStore';
import { observable } from 'mobx'; import { observable } from 'mobx';
import { DataList } from '../Common/Datalist'; import { DataList } from '../Common/Datalist';
import { getFileSize } from '../../../Common/Utils';
export interface IImgListProps export interface IImgListProps
{ {
@ -13,6 +14,7 @@ export interface IImgListProps
select?: (e, data) => void; select?: (e, data) => void;
selectIds?: Set<string>; selectIds?: Set<string>;
showInfos?: boolean; showInfos?: boolean;
isShowSize?: boolean;
} }
@inject('store') @inject('store')
@ -91,6 +93,16 @@ export class ImgList extends React.Component<IImgListProps, {}> {
</> </>
} }
</>} </>}
renderOtherElement={(data) =>
this.props.isShowSize &&
<Card style={{
position: "absolute",
right: "5%",
bottom: "2.5%",
padding: 0,
backgroundColor: "#e4ccaf",
}}>{getFileSize(parseFloat(data.size))}</Card>
}
/> />
</> </>
); );

@ -1,14 +1,15 @@
import { Button, Card, Checkbox, Classes, ContextMenu, MenuItem, Intent } from '@blueprintjs/core'; import { Button, Card, Classes, ContextMenu, MenuItem, Intent } from '@blueprintjs/core';
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
import * as React from 'react'; import * as React from 'react';
import { PostJson, RequestStatus } from '../../../Common/Request'; import { PostJson, RequestStatus } from '../../../Common/Request';
import { appUi } from '../../Layout/ApplicationLayout'; import { appUi } from '../../Layout/ApplicationLayout';
import { AppToaster } from '../Toaster'; import { AppToaster } from '../Toaster';
import { inflate, MaterialIn, MaterialInAndAppendAppData } from '../../../Common/SerializeMaterial'; import { inflate, MaterialIn, MaterialInAndAppendAppData } from '../../../Common/SerializeMaterial';
import { MaterialUrls, CURRENT_HOST, PublishMaterialUrl } from '../../../Common/HostUrl'; import { MaterialUrls, PublishMaterialUrl } from '../../../Common/HostUrl';
import { observable } from 'mobx'; import { observable } from 'mobx';
import { Menu } from '@blueprintjs/core'; import { Menu } from '@blueprintjs/core';
import { DataList } from '../Common/Datalist'; import { DataList } from '../Common/Datalist';
import { getFileSize } from '../../../Common/Utils';
export interface IImgListProps export interface IImgListProps
{ {
@ -18,11 +19,11 @@ export interface IImgListProps
getData?: () => void; getData?: () => void;
selectIds?: Set<string>; selectIds?: Set<string>;
showInfos?: boolean; showInfos?: boolean;
isShowSize?: boolean;
} }
@observer @observer
export class MaterialList extends React.Component<IImgListProps, {}> { export class MaterialList extends React.Component<IImgListProps, {}> {
@observable private isShowSize = false;
private readyMtl: { material_id: string; }; private readyMtl: { material_id: string; };
private handleGetMtlJson = async (mat: { material_id: string; }): Promise<string | undefined> => private handleGetMtlJson = async (mat: { material_id: string; }): Promise<string | undefined> =>
{ {
@ -108,6 +109,16 @@ export class MaterialList extends React.Component<IImgListProps, {}> {
</> </>
} }
</>} </>}
renderOtherElement={(data) =>
this.props.isShowSize &&
<Card style={{
position: "absolute",
right: "5%",
bottom: "20%",
padding: 0,
backgroundColor: "#e4ccaf",
}}>{getFileSize(parseFloat(data.size))}</Card>
}
/> />
); );
} }

@ -13,17 +13,15 @@ import './TexturePanel.less';
interface IMaterialProps interface IMaterialProps
{ {
} isShowSize?: boolean;
interface IMaterialState
{
} }
/** /**
* *
* *
*/ */
@observer @observer
export class MaterialPanel extends React.Component<IMaterialProps, IMaterialState> export class MaterialPanel extends React.Component<IMaterialProps, {}>
{ {
private startCreateMat = observable.box(false); private startCreateMat = observable.box(false);
constructor(props) constructor(props)
@ -73,7 +71,7 @@ export class MaterialPanel extends React.Component<IMaterialProps, IMaterialStat
getUrl={MaterialUrls.get} getUrl={MaterialUrls.get}
deleteUrl={MaterialUrls.delete} deleteUrl={MaterialUrls.delete}
> >
<MaterialList /> <MaterialList isShowSize={this.props.isShowSize} />
{ {
this.startCreateMat.get() && this.startCreateMat.get() &&
<MaterialContainer <MaterialContainer

@ -1,4 +1,4 @@
import { Button, Classes, Dialog, Tab, Tabs } from '@blueprintjs/core'; import { Button, Checkbox, Classes, Dialog, Tab, Tabs } from '@blueprintjs/core';
import { inject, observer } from 'mobx-react'; import { inject, observer } from 'mobx-react';
import * as React from 'react'; import * as React from 'react';
import { end } from 'xaop'; import { end } from 'xaop';
@ -8,6 +8,7 @@ import { FilePanel } from './FilePanel';
import { MaterialPanel } from './MaterialPanel'; import { MaterialPanel } from './MaterialPanel';
import { TexturePanel } from './TexturePanel'; import { TexturePanel } from './TexturePanel';
import { SpaceInfoBar } from './SpaceInfoBar'; import { SpaceInfoBar } from './SpaceInfoBar';
import { observable } from 'mobx';
export interface SoucePanelState export interface SoucePanelState
{ {
@ -26,6 +27,7 @@ const ModelPanel = () => <h5>我的模型</h5>;
export default class SoucePanel extends React.Component<{ store?: TopPanelStore; }, {}> { export default class SoucePanel extends React.Component<{ store?: TopPanelStore; }, {}> {
ref: React.RefObject<HTMLDivElement>; ref: React.RefObject<HTMLDivElement>;
removeReg: Function; removeReg: Function;
@observable isShowSize = false;
constructor(p) constructor(p)
{ {
super(p); super(p);
@ -91,9 +93,9 @@ export default class SoucePanel extends React.Component<{ store?: TopPanelStore;
vertical={true} vertical={true}
renderActiveTabPanelOnly renderActiveTabPanelOnly
> >
<Tab id="f1" title="我的文件" panel={<FilePanel />} /> <Tab id="f1" title="我的文件" panel={<FilePanel isShowSize={this.isShowSize} />} />
<Tab id="mt" title="我的材质" panel={<MaterialPanel />} /> <Tab id="mt" title="我的材质" panel={<MaterialPanel isShowSize={this.isShowSize} />} />
<Tab id="tt" title="我的贴图" panel={<TexturePanel />} /> <Tab id="tt" title="我的贴图" panel={<TexturePanel isShowSize={this.isShowSize} />} />
{/* <Tab id="md" title="我的模型" panel={<ModelPanel />} /> */} {/* <Tab id="md" title="我的模型" panel={<ModelPanel />} /> */}
</Tabs> </Tabs>
{/* TODO: {/* TODO:
@ -104,6 +106,14 @@ export default class SoucePanel extends React.Component<{ store?: TopPanelStore;
<div className="bp3-dialog-footer" style={{ padding: "10px 0" }}> <div className="bp3-dialog-footer" style={{ padding: "10px 0" }}>
<div className="bp3-dialog-footer-actions flex-between"> <div className="bp3-dialog-footer-actions flex-between">
<SpaceInfoBar /> <SpaceInfoBar />
{
< Checkbox
checked={this.isShowSize}
label="显示文件大小"
style={{ width: "max-content", margin: "auto", left: "-18%" }}
onChange={() => this.isShowSize = !this.isShowSize}
/>
}
<Button <Button
text="关闭" text="关闭"
className="bp3-intent-danger" className="bp3-intent-danger"

@ -14,6 +14,7 @@ interface ITexturePanelState
} }
interface ITexturePanelProps interface ITexturePanelProps
{ {
isShowSize?: boolean;
store?: MaterialStore; store?: MaterialStore;
} }
/** /**
@ -65,7 +66,7 @@ export class TexturePanel extends React.Component<ITexturePanelProps, ITexturePa
deleteUrl={ImgsUrl.delete} deleteUrl={ImgsUrl.delete}
canOrder={false} canOrder={false}
> >
<ImgList /> <ImgList isShowSize={this.props.isShowSize} />
<UploadComponent <UploadComponent
isOpen={this.startUpload} isOpen={this.startUpload}
/> />

@ -52,6 +52,10 @@
position: absolute; position: absolute;
left : 0; left : 0;
} }
p{
margin-bottom: 15px;
}
} }
} }

Loading…
Cancel
Save