UNPKG

popbean-react

Version:

let me think about something,comming soon...

252 lines (248 loc) 7.54 kB
var React = require('react/addons'); // var List = require('../../../src/bs3/list'); var Panel = require('../../../src/bs3/panel'); var ActionButton = require('../../../src/bs3/action-button'); var sb_style = require('../../../less/bs3/sb-spa-2.less'); //var sb_mini_style = require('../../less/bs3/sidebar.less'); var Select = require('react-select'); var select_css = require('../../../node_modules/react-select/dist/default.css'); // var LensedStateMixin = require('../../../src/bs3/linked-state'); // var left_model = [ { "code":"code_1", "label":"label_1" }, { "code":"code_2", "label":"label_2" } ]; var options = [ { value: 'one', label: 'One' }, { value: 'two', label: 'Two' } ]; var RightFootBar = React.createClass({ getDefaultProps:function(){ return { multi:true }; }, getInitialState:function(){ return { }; }, render:function(){ return ( <div className="panel-footer clearfix"> <div className="input-group pull-right" style={{"width":"100%"}}> <Select name="form-field-name" placeholder="输入待添加的内容" value={this.props.selected} options={this.props.dataSource} multi={this.props.multi} onChange={this.props.refChange} /> <span className="input-group-btn"> <ActionButton icon="glyphicon glyphicon glyphicon-ok" type="icon" handler={this.props.onAddSave}/> <ActionButton icon="glyphicon glyphicon-remove" type="icon" handler={this.props.onDelete}/> <ActionButton icon="glyphicon glyphicon-triangle-top" type="icon"/> <ActionButton icon="glyphicon glyphicon-triangle-bottom" type="icon"/> </span> </div> </div> ); } }); var RightListItemRender = React.createClass({ render:function(){ return ( <div className="input-group"> <span className="input-group-addon"> <input type="checkbox" aria-label="..." oncChange={this.props.onChange}/> </span> <span className="form-control" aria-label="...">{this.props.data.label}</span> </div> ); } }); var List2List = React.createClass({ getDefaultProps:function(){ return { title:'hello world', }; }, getInitialState:function(){ return { data:{ } }; }, componentDidMount:function(){ fetch('/service/cms/resource-mapping/role-account/model') .then(function(response){ return response.json(); }).then(function(json){ var data = json['data']; }).catch(function(ex){ console.log(ex); }); }, render:function(){//怎么看怎么觉得应该有个壳子 //<PanelView title="" icon="" titlebar={SomeBar}><List /></> var titlebar = ( <div className="input-group pull-right" style={{"width":"50%"}}> <input ref="subject_filter" type="text" className="form-control" placeholder="Search for..." onChange={this.fetchSubject}/> <span className="input-group-btn"> <button className="btn btn-default" type="button">Go!</button> </span> </div> ); var right_tb = ( <div className="input-group pull-right" style={{"width":"50%"}}> <input type="text" className="form-control" placeholder="Search for..."/> <span className="input-group-btn"> <button className="btn btn-default" type="button">Go!</button> </span> </div> ); // var self = this; var refChange = function(ids){ self.setState({selected:ids}); }; var footbar = ( <RightFootBar onAddSave={this.onAddSave.bind(this)} dataSource={options} onDelete={this.onDelete.bind(this)} selected={this.state.selected} refChange={refChange}/> ); var left_footbar = ( <div className="panel-footer clearfix"> 双击后,自动添加至右侧 </div> ); var right_item_render = React.createClass({ mixins:[LensedStateMixin], getDefaultProps:function(){ return { data:{ selected:false } }; }, getInitialState:function(){ return { data:{ } }; }, render:function(){ //<input type="checkbox" aria-label="..." checkedLink={this.linkState('data.selected')}/> return ( <div className="input-group"> <span className="input-group-addon"> <input type="checkbox" aria-label="..." checked={this.props.data.selected} onChange={self.changeChoice.bind(self,this.props.data)}/> </span> <span className="form-control" aria-label="...">{this.props.data.label}</span> </div> ); } }); //<actionbutton icon="" type="icon" handler= label=/> console.log('render beging',left_model); var list_model = left_model; return( <div id="page-wrapper"> <div className="row"> <div className="col-lg-12"> <h3 className="panel-heading">验证资源授权相关界面</h3> </div> </div> <div className="row"> <div className="col-lg-6"> <Panel title="subject list" icon="fa fa-bar-chart-o fa-fw" showborder="false" titlebar={titlebar}> <List model={this.state.listModel} onItemClick={self.fetchResource}/> </Panel> </div> <div className="col-lg-6"> <Panel title="resource list" icon="fa fa-bar-chart-o fa-fw" showborder="false" titlebar={right_tb} footbar={footbar}> <List model ={this.state.listModel} renderComponent={right_item_render} ref="rightList"/> </Panel> </div> </div> </div> ); }, onAddSave:function(){ var value = this.state.selected;//id1,id2不是字符串 var id_array = value.split(','); //从model中找到这些值,然后,添加这些选中的到其中 }, logChange:function(opt){ console.log('change:',opt); }, changeChoice:function(data){//根据传来的数据找到,隶属的state left_model.map(function(item){ if(item['code'] == data['code']){ item['selected'] = !item['selected']; } }); console.log('this.props.data',data); }, onDelete:function(){//删除被选中的数据 var tmp = []; left_model.map(function(item){ if(!item.selected){ tmp.push(item); } }); left_model = tmp; this.setState({ listModel:tmp }); }, fetchResource:function(data){//当前选中的行 }, fetchSubject:function(event){ var filter = event.target.value; fetch('/sevice/cms').then(function(response){ return response.json(); }).then(function(json){ var tmp = json['data']; }) .catch(function(ex){ console.log(ex); }); } }); module.exports = List2List; /* <div className="panel-footer">Panel footer</div> <div className="input-group"> <input type="text" className="form-control" placeholder="Search for..."/> <span className="input-group-btn"> <button className="btn btn-default" type="button">Go!</button> </span> </div> <div className="panel panel-default"> <div className="panel-heading clearfix"> <span className="panel-title pull-left" style={{"padding-top":"7.5px"}}> <i className="fa fa-bar-chart-o fa-fw"></i> subject list </span> <div className="input-group pull-right" style={{"width":"50%"}}> <input type="text" className="form-control" placeholder="Search for..."/> <span className="input-group-btn"> <button className="btn btn-default" type="button">Go!</button> </span> </div> </div> <List model ={left_model}/> </div> */