alan
6 years ago
13 changed files with 377 additions and 7 deletions
@ -0,0 +1,43 @@ |
|||||||
|
.database-connection-layout{ |
||||||
|
width: 100%; |
||||||
|
height: 100%; |
||||||
|
background-color: #f7f8fa; |
||||||
|
.title{ |
||||||
|
background-color: #fff; |
||||||
|
border-bottom: 1px solid #e8eaed; |
||||||
|
.title-item{ |
||||||
|
height: 39px; |
||||||
|
line-height: 39px; |
||||||
|
padding-left: 15px; |
||||||
|
padding-right: 15px; |
||||||
|
text-align: center; |
||||||
|
white-space: nowrap; |
||||||
|
text-overflow: ellipsis; |
||||||
|
overflow: hidden; |
||||||
|
position: relative; |
||||||
|
flex-shrink: 0; |
||||||
|
font-weight: 700; |
||||||
|
cursor: pointer; |
||||||
|
} |
||||||
|
} |
||||||
|
.linkset{ |
||||||
|
margin: 10px; |
||||||
|
bottom: 0px; |
||||||
|
background-color: #ffffff; |
||||||
|
} |
||||||
|
.linkStatus{ |
||||||
|
margin: 10px; |
||||||
|
top: 40px; |
||||||
|
background-color: #ffffff; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.database-left{ |
||||||
|
border-right: 1px solid #e8eaed; |
||||||
|
.select-group{ |
||||||
|
border-bottom: 1px solid #e8eaed; |
||||||
|
.select{ |
||||||
|
margin: 10px; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
import FineUi, {FineType} from '../shared/FineUI'; |
||||||
|
import './App.scss'; |
||||||
|
import Title from './Title/Title'; |
||||||
|
import LinkSet from './LinkSet/LinkSet'; |
||||||
|
import LinkStatus from './LinkStatus/LinkStatus'; |
||||||
|
|
||||||
|
export default class App extends FineUi { |
||||||
|
private title: Title; |
||||||
|
private linSet: LinkSet; |
||||||
|
private linkStatus: LinkStatus; |
||||||
|
public constructor() { |
||||||
|
super(); |
||||||
|
this.linSet = new LinkSet(); |
||||||
|
this.linkStatus = new LinkStatus(); |
||||||
|
this.title = new Title(); |
||||||
|
this.title.onSelect = type => { |
||||||
|
this.linSet.setVisible(type === 'linkSet'); |
||||||
|
this.linkStatus.setVisible(type === 'lintStatus'); |
||||||
|
}; |
||||||
|
} |
||||||
|
public render(): FineType { |
||||||
|
return { |
||||||
|
type: 'bi.vtape', |
||||||
|
cls: 'database-connection-layout', |
||||||
|
items: [{ |
||||||
|
el: this.title.widget, |
||||||
|
height: 40, |
||||||
|
}, |
||||||
|
this.linSet.widget, |
||||||
|
this.linkStatus.widget, |
||||||
|
], |
||||||
|
}; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,31 @@ |
|||||||
|
import FineUi, {FineType} from '../../shared/FineUI'; |
||||||
|
import Select from './Select'; |
||||||
|
|
||||||
|
export default class Left extends FineUi { |
||||||
|
private select: Select; |
||||||
|
public constructor() { |
||||||
|
super(); |
||||||
|
this.select = new Select(); |
||||||
|
} |
||||||
|
public render(): FineType { |
||||||
|
return { |
||||||
|
type: 'bi.vtape', |
||||||
|
cls: 'database-left', |
||||||
|
items: [{ |
||||||
|
el: { |
||||||
|
type: 'bi.left', |
||||||
|
cls:'select-group', |
||||||
|
items:[ |
||||||
|
this.select.widget, |
||||||
|
], |
||||||
|
}, |
||||||
|
height: 40, |
||||||
|
}, { |
||||||
|
type: 'bi.label', |
||||||
|
cls: 'layout-bg2', |
||||||
|
textAlign: 'left', |
||||||
|
text: '高度充满剩余空间', |
||||||
|
}], |
||||||
|
}; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
import FineUi, {FineType} from '../../shared/FineUI'; |
||||||
|
import Left from './Left'; |
||||||
|
|
||||||
|
export default class LinkSet extends FineUi { |
||||||
|
private linkSet: any; |
||||||
|
private left: Left; |
||||||
|
public constructor() { |
||||||
|
super(); |
||||||
|
this.left = new Left(); |
||||||
|
} |
||||||
|
public render(): FineType { |
||||||
|
return { |
||||||
|
type:'bi.htape', |
||||||
|
cls: 'linkset', |
||||||
|
items: [{ |
||||||
|
el: this.left.widget, |
||||||
|
width: 280, |
||||||
|
}, { |
||||||
|
type: 'bi.label', |
||||||
|
cls: 'layout-bg2', |
||||||
|
textAlign: 'left', |
||||||
|
text: '宽度充满剩余空间', |
||||||
|
}], |
||||||
|
ref:(_ref: any) => { |
||||||
|
this.linkSet = _ref; |
||||||
|
}, |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
public setVisible(type: boolean): void{ |
||||||
|
this.linkSet.setVisible(type); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,31 @@ |
|||||||
|
import FineUi, {FineType} from '../../shared/FineUI'; |
||||||
|
export default class Select extends FineUi { |
||||||
|
public render(): FineType { |
||||||
|
return { |
||||||
|
type: 'bi.combo', |
||||||
|
cls:'select', |
||||||
|
trigger: 'click', |
||||||
|
adjustYOffset: 4, |
||||||
|
el: { |
||||||
|
type: 'bi.button', |
||||||
|
text: '测试', |
||||||
|
height: 24, |
||||||
|
}, |
||||||
|
popup: { |
||||||
|
el: { |
||||||
|
type: 'bi.button_group', |
||||||
|
items: BI.makeArray(5, { |
||||||
|
type: 'bi.text_item', |
||||||
|
height: 24, |
||||||
|
width: 173, |
||||||
|
text: 'item', |
||||||
|
}), |
||||||
|
layouts: [{ |
||||||
|
type: 'bi.vertical', |
||||||
|
}], |
||||||
|
}, |
||||||
|
maxHeight: 200, |
||||||
|
}, |
||||||
|
}; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
import FineUi, {FineType} from '../../shared/FineUI'; |
||||||
|
|
||||||
|
export default class LinkStatus extends FineUi { |
||||||
|
private linkStatus: any; |
||||||
|
public render(): FineType { |
||||||
|
return { |
||||||
|
type:'bi.htape', |
||||||
|
cls: 'linkStatus', |
||||||
|
invisible: true, |
||||||
|
items: [{ |
||||||
|
el: { |
||||||
|
type: 'bi.label', |
||||||
|
cls: 'layout-bg1', |
||||||
|
textAlign: 'left', |
||||||
|
text: '123', |
||||||
|
}, |
||||||
|
width: 280, |
||||||
|
}, { |
||||||
|
type: 'bi.label', |
||||||
|
cls: 'layout-bg2', |
||||||
|
textAlign: 'left', |
||||||
|
text: '456', |
||||||
|
}], |
||||||
|
ref:(_ref: any) => { |
||||||
|
this.linkStatus = _ref; |
||||||
|
}, |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
public setVisible(type: boolean): void{ |
||||||
|
this.linkStatus.setVisible(type); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,41 @@ |
|||||||
|
import FineUi, {FineType} from '../../shared/FineUI'; |
||||||
|
import TitleItem from './TitleItem'; |
||||||
|
|
||||||
|
export default class Title extends FineUi { |
||||||
|
public onSelect: SelectType; |
||||||
|
private linkSet: TitleItem; |
||||||
|
private lintStatus: TitleItem; |
||||||
|
public constructor() { |
||||||
|
super(); |
||||||
|
this.linkSet = new TitleItem({title:'数据连接管理'}); |
||||||
|
this.lintStatus = new TitleItem({title:'连接池状态'}); |
||||||
|
this.linkSet.onClick = () => { |
||||||
|
this.linkSet.setSelect(true); |
||||||
|
this.lintStatus.setSelect(false); |
||||||
|
this.onSelect ? this.onSelect('linkSet') : null; |
||||||
|
}; |
||||||
|
|
||||||
|
this.lintStatus.onClick = () => { |
||||||
|
this.lintStatus.setSelect(true); |
||||||
|
this.linkSet.setSelect(false); |
||||||
|
this.onSelect ? this.onSelect('lintStatus') : null; |
||||||
|
}; |
||||||
|
} |
||||||
|
public render(): FineType { |
||||||
|
return { |
||||||
|
type: 'bi.left', |
||||||
|
cls: 'title', |
||||||
|
items:[ |
||||||
|
this.linkSet.widget, |
||||||
|
this.lintStatus.widget, |
||||||
|
], |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
protected mounted(): void{ |
||||||
|
this.linkSet.setSelect(true); |
||||||
|
} |
||||||
|
} |
||||||
|
interface SelectType { |
||||||
|
(type: 'linkSet'|'lintStatus'): void; |
||||||
|
} |
@ -0,0 +1,43 @@ |
|||||||
|
import FineUi, {FineType} from '../../shared/FineUI'; |
||||||
|
export default class TitleItem extends FineUi { |
||||||
|
private title: string; |
||||||
|
private titleItem: any; |
||||||
|
public onClick: Function; |
||||||
|
public constructor(props?: {title: string}) { |
||||||
|
super(); |
||||||
|
this.title = props.title; |
||||||
|
} |
||||||
|
public render(): FineType { |
||||||
|
return { |
||||||
|
type: 'bi.label', |
||||||
|
cls: 'title-item', |
||||||
|
text: this.title, |
||||||
|
ref:(_ref: any) => { |
||||||
|
this.titleItem = _ref; |
||||||
|
}, |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
protected mounted(): void{ |
||||||
|
this.titleItem.element.on('click', () => { |
||||||
|
this.onClick ? this.onClick() : null; |
||||||
|
}); |
||||||
|
} |
||||||
|
/** |
||||||
|
* 设置为选中状态 |
||||||
|
* @param data |
||||||
|
*/ |
||||||
|
public setSelect(data: boolean): void { |
||||||
|
if (data) { |
||||||
|
this.titleItem.setStyle({ |
||||||
|
color: '#3685f2', |
||||||
|
'border-bottom': 'solid 2px #3685f2', |
||||||
|
}); |
||||||
|
} else { |
||||||
|
this.titleItem.setStyle({ |
||||||
|
color: '#3d4d66', |
||||||
|
'border-bottom': 'none', |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -1,9 +1,7 @@ |
|||||||
|
import App from './app/App'; |
||||||
|
|
||||||
BI.createWidget({ |
BI.createWidget({ |
||||||
type:'bi.vertical', |
type:'bi.vertical', |
||||||
element: 'body', |
element: 'body', |
||||||
items:[{ |
items:[new App().widget], |
||||||
type: 'bi.label', |
|
||||||
value: 'Hello world', |
|
||||||
textAlign: 'left', |
|
||||||
}], |
|
||||||
}); |
}); |
||||||
|
@ -0,0 +1,83 @@ |
|||||||
|
export default class FineUi { |
||||||
|
/** |
||||||
|
* 全局BI |
||||||
|
*/ |
||||||
|
public BI = BI; |
||||||
|
protected _Widget: any; |
||||||
|
protected props: any; |
||||||
|
/** |
||||||
|
* 组件实例 |
||||||
|
*/ |
||||||
|
public get widget(): any { |
||||||
|
return this.createWidget(this.render()); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public constructor(props?: any) { |
||||||
|
this.props = props; |
||||||
|
} |
||||||
|
|
||||||
|
protected render(): FineType { |
||||||
|
return { |
||||||
|
type: '', |
||||||
|
}; |
||||||
|
} |
||||||
|
protected createWidget(obj: object): any { |
||||||
|
this._Widget = BI.createWidget(obj); |
||||||
|
this._Widget.beforeCreate = (): void => { |
||||||
|
this.beforeCreate(); |
||||||
|
}; |
||||||
|
this._Widget.created = (): void => { |
||||||
|
this.created(); |
||||||
|
}; |
||||||
|
this._Widget.beforeMount = (): void => { |
||||||
|
this.beforeMount(); |
||||||
|
}; |
||||||
|
this._Widget.mounted = (): void => { |
||||||
|
this.mounted(); |
||||||
|
}; |
||||||
|
this._Widget.beforeDestroy = (): void => { |
||||||
|
this.beforeDestroy(); |
||||||
|
}; |
||||||
|
this._Widget.destroyed = (): void => { |
||||||
|
this.destroyed(); |
||||||
|
}; |
||||||
|
|
||||||
|
return this._Widget; |
||||||
|
} |
||||||
|
|
||||||
|
protected beforeCreate(): void{ |
||||||
|
|
||||||
|
} |
||||||
|
protected created(): void{ |
||||||
|
|
||||||
|
} |
||||||
|
protected beforeMount(): void{ |
||||||
|
|
||||||
|
} |
||||||
|
protected mounted(): void{ |
||||||
|
|
||||||
|
} |
||||||
|
protected beforeDestroy(): void{ |
||||||
|
|
||||||
|
} |
||||||
|
protected destroyed(): void{ |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
export interface FineType{ |
||||||
|
type: string; |
||||||
|
cls?: string; |
||||||
|
width?: number; |
||||||
|
height?: number; |
||||||
|
items?: any; |
||||||
|
text?: string; |
||||||
|
invisible?: boolean; |
||||||
|
extraCls?: string; |
||||||
|
popup?: any; |
||||||
|
el?: any; |
||||||
|
trigger?: string; |
||||||
|
adjustYOffset?: number; |
||||||
|
ref?: any; |
||||||
|
} |
Loading…
Reference in new issue