CCM NG: PageModelsEditor progress
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5465 8810af33-2d31-482b-a856-94f89814c4dfccm-docs
parent
e179b120f4
commit
7eebf6aa6b
|
|
@ -22,10 +22,32 @@ export {
|
||||||
* );
|
* );
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
interface PageModelEditorContext {
|
||||||
|
|
||||||
|
selectedPageModel: PageModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
const newPageModel: PageModel = {
|
||||||
|
description: "New PageModel",
|
||||||
|
modelUuid: "",
|
||||||
|
name: "newPageModel",
|
||||||
|
pageModelId: 0,
|
||||||
|
title: "A new PageModel",
|
||||||
|
type: "",
|
||||||
|
uuid: "",
|
||||||
|
version: PageModelVersion.DRAFT,
|
||||||
|
};
|
||||||
|
|
||||||
|
const pageModelEditorContext = React.createContext({
|
||||||
|
pageModelSelected: false,
|
||||||
|
selectedPageModel: newPageModel,
|
||||||
|
});
|
||||||
|
|
||||||
interface PageModelsListProps {
|
interface PageModelsListProps {
|
||||||
|
|
||||||
ccmApplication: string;
|
ccmApplication: string;
|
||||||
dispatcherPrefix: string;
|
dispatcherPrefix: string;
|
||||||
|
selectPageModel: (selectedPageModel: PageModel) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface PageModelsListState {
|
interface PageModelsListState {
|
||||||
|
|
@ -104,7 +126,8 @@ class PageModelsList
|
||||||
{this.state.pageModels.length > 0 &&
|
{this.state.pageModels.length > 0 &&
|
||||||
<ul>
|
<ul>
|
||||||
{this.state.pageModels.map((pageModel: PageModel) =>
|
{this.state.pageModels.map((pageModel: PageModel) =>
|
||||||
<PageModelListItem pageModel={pageModel} />,
|
<PageModelListItem pageModel={pageModel}
|
||||||
|
selectPageModel={this.props.selectPageModel} />,
|
||||||
)}
|
)}
|
||||||
</ul>
|
</ul>
|
||||||
}
|
}
|
||||||
|
|
@ -114,6 +137,7 @@ class PageModelsList
|
||||||
|
|
||||||
interface PageModelListItemProps {
|
interface PageModelListItemProps {
|
||||||
pageModel: PageModel;
|
pageModel: PageModel;
|
||||||
|
selectPageModel: (selectedPageModel: PageModel) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
// interface PageModelListItemState {
|
// interface PageModelListItemState {
|
||||||
|
|
@ -123,9 +147,19 @@ interface PageModelListItemProps {
|
||||||
class PageModelListItem
|
class PageModelListItem
|
||||||
extends React.Component<PageModelListItemProps, {}> {
|
extends React.Component<PageModelListItemProps, {}> {
|
||||||
|
|
||||||
|
private onClick(event: any): void {
|
||||||
|
|
||||||
|
console.log(`Setting selected PageModel. this is ${this}`);
|
||||||
|
this.props.selectPageModel(this.props.pageModel);
|
||||||
|
}
|
||||||
|
|
||||||
public render() {
|
public render() {
|
||||||
return <li>
|
return <li>
|
||||||
<a>
|
<a data-pagemodel-id="{this.props.pageModel.pageModelId}"
|
||||||
|
href="#"
|
||||||
|
onClick={
|
||||||
|
(event) => this.props.selectPageModel(this.props.pageModel)
|
||||||
|
}>
|
||||||
{this.props.pageModel.title}
|
{this.props.pageModel.title}
|
||||||
</a>
|
</a>
|
||||||
</li>;
|
</li>;
|
||||||
|
|
@ -138,50 +172,80 @@ class PageModelListItem
|
||||||
//
|
//
|
||||||
// interface PageModelEditorState {
|
// interface PageModelEditorState {
|
||||||
//
|
//
|
||||||
|
// selectedPageModel: PageModel | null;
|
||||||
|
//
|
||||||
// }
|
// }
|
||||||
|
|
||||||
class PageModelEditor
|
class PageModelEditor
|
||||||
extends React.Component<{}, {}> {
|
extends React.Component<{}, any> {
|
||||||
|
|
||||||
|
constructor(props: any) {
|
||||||
|
|
||||||
|
super(props);
|
||||||
|
|
||||||
|
this.state = {
|
||||||
|
selectedPageModel: newPageModel,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
public render() {
|
public render() {
|
||||||
|
|
||||||
return <React.Fragment>
|
return <React.Fragment>
|
||||||
<div id="left">
|
<pageModelEditorContext.Provider value={this.state.selectedPageModel}>
|
||||||
<div className="column-head"></div>
|
<div id="left">
|
||||||
<div className="column-content">
|
<div className="column-head"></div>
|
||||||
<div className="bebop-left">
|
<div className="column-content">
|
||||||
<div className="bebop-segmented-panel">
|
<div className="bebop-left">
|
||||||
<div className="bebop-segment">
|
<div className="bebop-segmented-panel">
|
||||||
<h3 className="bebop-segment-header">
|
<div className="bebop-segment">
|
||||||
Available PageModels
|
<h3 className="bebop-segment-header">
|
||||||
|
Available PageModels
|
||||||
</h3>
|
</h3>
|
||||||
<div className="bebop-segment-body">
|
<div className="bebop-segment-body">
|
||||||
<button className="pagemodels addbutton">
|
<button
|
||||||
<span>+</span> Create new PageModel
|
className="pagemodels addbutton">
|
||||||
</button>
|
<span>+</span> Create new PageModel
|
||||||
<PageModelsList
|
</button>
|
||||||
ccmApplication={this.getCcmApplication()}
|
<PageModelsList
|
||||||
dispatcherPrefix={this
|
ccmApplication={this.getCcmApplication()}
|
||||||
.getDispatcherPrefix()} />
|
dispatcherPrefix={this.getDispatcherPrefix()}
|
||||||
<button className="pagemodels addbutton">
|
selectPageModel={(pageModel: PageModel) => {
|
||||||
<span>+</span> Create new PageModel
|
this.setState((state: any) => {
|
||||||
|
return {
|
||||||
|
...state,
|
||||||
|
selectedPageModel: pageModel,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}} />
|
||||||
|
<button className="pagemodels addbutton">
|
||||||
|
<span>+</span> Create new PageModel
|
||||||
</button>
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div id="right">
|
||||||
<div id="right">
|
<div className="column-head">
|
||||||
<div className="column-head">
|
</div>
|
||||||
|
<div className="column-content">
|
||||||
|
PageModelEditor Placeholder
|
||||||
|
<pageModelEditorContext.Consumer>
|
||||||
|
{(context) =>
|
||||||
|
<pre>
|
||||||
|
{context.pageModelSelected &&
|
||||||
|
context.selectedPageModel.name
|
||||||
|
}
|
||||||
|
</pre>
|
||||||
|
}
|
||||||
|
</pageModelEditorContext.Consumer>
|
||||||
|
<pre>
|
||||||
|
{this.getCcmApplication()}
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="column-content">
|
</pageModelEditorContext.Provider>
|
||||||
PageModelEditor Placeholder
|
|
||||||
<pre>
|
|
||||||
{this.getCcmApplication()}
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</React.Fragment>;
|
</React.Fragment>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -220,4 +284,14 @@ class PageModelEditor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// private setSelectedPageModel(selectedPageModel: PageModel): void {
|
||||||
|
//
|
||||||
|
// this.setState((state: any) => {
|
||||||
|
// return {
|
||||||
|
// ...state,
|
||||||
|
// selectedPageModel,
|
||||||
|
// };
|
||||||
|
// });
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue