Example #1
0
  render() {
    const props = this.props;
    const styled = { top: this.state.top }
    const lg = (this.modalType == "full" ? true : false);

    return (
      <StyledObject className={cx("modal", props.theme)} history={history} onKeyPress={this.onKeyPressed}>
        <div className="bg" eid={EID.CANCEL}></div>
        <div ref={ref => { this.frame = ref }} className={cx("modal-dialog", (props.size))} style={styled}>
          <div className="modal-content" ref={ref => { this.contents = ref }}>

            <div className="modal-header">
              <span className="modal-title">{props.title}<span>{this.state.key}</span></span>
              <a type="button" className="close" onClick={this.onClicked} eid={EID.CANCEL}>×</a>
            </div>

            {props.desc && <div className="modal-desc">{props.desc}</div>}

            <div className="modal-body">
              {props.children}
            </div>

            <div className="modal-footer">
              {props.delete && <Button theme={cx("red left", { lg })} onClick={this.onClicked} title={props.delete} eid={EID.DELETE} />}
              <Button theme={cx("primary", { lg })} onClick={this.onClicked} title={props.ok ? props.ok : ST.OK} eid={EID.OK} />
              {props.cancel && <Button theme={cx("primary mL10", { lg })} onClick={this.onClicked} title={props.cancel} eid={EID.CANCEL} />}
            </div>
          </div>
        </div>
      </StyledObject>
    )
  };
Example #2
0
export default function NavigationBar(props) {
  return (
    <div className="container">
      <header className="header">
        <nav role="navigation" className="navbar navbar-default navbar-fixed-top">
          <div className="container">
            <div className="navbar-header">
              <Link className="navbar-brand" to="/">Langue</Link>
            </div>
            <div className="navbar-collapse collapse">
              <ul className="nav navbar-nav navbar-right">
                <li className={classNames({hidden: window.langue_api_token})}>
                  <Link to="/login">Login</Link>
                </li>
                <li className={classNames({hidden: window.langue_api_token})}>
                  <Link to="/register">Register</Link>
                </li>
                <li className={classNames({hidden: !window.langue_api_token})}>
                  <a href="/logout">Logout</a>
                </li>
              </ul>
            </div>
          </div>
        </nav>
      </header>

      <main role="main">
        <div className="container">
          {props.children}
        </div>
      </main>
    </div>
  );
};
  render() {
    const { isWaiting, message, isLogin } = this.props.user;

    return (
      <div className={classNames('login', {
        waiting: isWaiting
      })}>
        <div className='container'>
          { this.renderHeader() }
          <img className='loading' />
          <div className='email-container'>
            <form onSubmit={this.handleOnSubmit}>
              <input className='input'
                     type="email"
                     ref="email"
                     placeholder="email" />
              <input className='input'
                     type="password"
                     ref="password"
                     placeholder="password" />
              <p className={classNames('message', {
                'message-show': message && message.length > 0
              })}>{message}</p>
              <input className='button'
                     type="submit"
                     value={isLogin ? 'Login' : 'Register'} />
            </form>
          </div>
        </div>
      </div>
    );
  }
Example #4
0
  renderInputContainer() {
    const { object, label, disabled } = this.props

    return (
      <div className={cx('form-group', 'form-group-default', object.active && 'focused', disabled && 'disabled')}
           onClick={this.handleClick}>
        <label className={cx('fade')}>{label}</label>

        {this.renderInput()}
      </div>
    )
  }
Example #5
0
let Header = ({connected}) => (
    <h1>EOS Emulator | {' '}
        <span id="connected" className={classNames({'connected' : connected})}>
            connected
        </span>
    </h1>
);
Example #6
0
    render() {
        let user = this.state.user,
            successInfo = this.state.successInfo;

        return <div>
            <Head user={user} />
            <h2 className="pay-title">英雄充值</h2>
            <div className="pay-main pay-back">
                <div className="" className={classNames(
                    'back-text',
                    'success',
                    { 'spe': !(successInfo&&successInfo.mobi)}
                )}>充值成功</div>
                {successInfo&&successInfo.mobi? <div className="back-info">
                    <h3>你获得了</h3>
                    <div className="back-info-main">
                        <div className="back-info-title">{successInfo.mobi}猫币</div>
                        <div className="back-info-detail">
                            <h2>Lv.{successInfo.level}{successInfo.occupation_name}</h2>
                            <p>(有效期至{successInfo.end_date})</p>
                        </div>
                    </div>
                </div> : ``}
               
            </div>
        </div>;
    }
Example #7
0
	render(){
		if(this.props.details !== null){ 
			var btnClass = classNames({
				'item':true,
				'hide':true,
			  	'btn-pressed': this.state.isPressed
			});

			return(
				<div className="item-group">
					<ul className='item'>
						<li className="options-block">
							<ul>
								<button className="delete" ref="delete" onClick={this.props.deleteProperty.bind(null, this.props.index, this.props.details._id, this.props.accountId)}>Delete</button>
								<button className="edit-btn" onClick={this.toggleButton.bind(this)}>Edit</button>
								<button className="back-btn" onClick={this.toggleButton.bind(this)}>Back</button>
							</ul>
						</li>
						{Object.keys(this.props.properties).map(this.renderPropertyField.bind(this))}
					</ul>
					<form ref="propertyForm" className={btnClass} onSubmit={this.savePropertyObj.bind(this)}>
						<span className="cell">
							<button type="submit" className="save-btn">Save</button>
						</span>
						{Object.keys(this.props.properties).map(this.renderEditField.bind(this))}
					</form>
				</div>	
			)
		} else {
			return( null )
		}
	}
 render() {
     var btnClass = classNames('btn', this.props.className, {
       'btn-pressed': this.state.isPressed,
       'animate': !this.state.isPressed && this.state.isHovered
     });
     var title = this.props.contents.title;
     var body = this.props.contents.body;
     // forked via http://codepen.io/virgilpana/pen/RNYQwB
     return (
     <div id="canvas-3D">
         <div id="product-card" className={btnClass} onClick={this.click.bind(this)}
                 onMouseEnter={this.hover.bind(this)} onMouseLeave ={this.unhover.bind(this)}>
             <div id="product-front">
                 <div className="image-container">
                     <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/245657/t-shirt.png" alt="" />
                 </div>
                 <div className="image_overlay"></div>
                 <div id="view_details">View details</div>
                 <div className="stats">
                     <div className="stats-container">
                         <span className="product_name">{title}</span>
                         <p>{body}</p>
                         <div className="product-options">
                             <strong>SIZES</strong>
                         </div>
                     </div>
                 </div>
             </div>
         </div>
     </div>
     );
 }
Example #9
0
const Button = (props) => {
  const onClicked = (e) => {
    if (props.onClick != null) {
      props.onClick(props.eid, e);
    }
  }

  const disabled = props.disabled;

  return (
    <StyledObject {...props} eid={props.eid} className={cx('button', props.theme, { disabled })}
      onClick={disabled ? () => null : onClicked} to={props.to} >
      {props.icon && <img className={cx("icon", (props.title && "mR"))} src={props.icon} />}
      {props.title}
    </StyledObject>
  )
}
Example #10
0
 {items.map((item, index) => (
   <div key={index} className={cx("box", item.type)}>
     <a type="button" className="close" onClick={this.onClicked} eid={EID.CANCEL}>×</a>
     <div className="body">
       <div className="msg">{item.value}</div>
     </div>
   </div>
 ))}
Example #11
0
const Hamburger = ({active, onToggle}) => (
  <div className={cx('hamburger-wrapper')} onClick={onToggle}>
    <div className={classNames("hamburger hamburger--elastic", { 'is-active': active})}>
      <span className="hamburger-box">
        <span className="hamburger-inner"></span>
      </span>
    </div>
  </div>
);
Example #12
0
 render() {
   const props = this.props;
   return (
     <StyledObject className={cx("group", props.theme)}>
       <Editbox ref={ref => { this.refStart = ref }} value={props.sdate} name="start" type="date" guide={props.sguide} label={props.isLabel && ST.START_DATE} />
       <div className="addon">to</div>
       <Editbox ref={ref => { this.refEnd = ref }} value={props.edate} name="end" type="date" guide={props.eguide} label={props.isLabel && ST.END_DATE} />
     </StyledObject>
   );
 }
Example #13
0
	render() {
		const { className } = this.props
		const classes = classNames(className, 'ui-tabs')
		return (
			<div className={classes}>
				{this.renderTabNav()}
				{this.renderTabContent()}
			</div>
		)
	}
/**
 * Error Label Component
 * return a stateless react component
 * @param {Object} classes - Default css classes always added to the component
 * @param {Object} field - Input store current values, inbluding if the input is valid
 * @return {React Component} Return the component.
 */
export default ({classes, field}) => {
  const labelClass = classNames({
    [classes]: true,
    'label-error': true,
    'label-error--hidden': field.valid === false ? false : true,
  });

  return (
    <div className={labelClass}>
      { field.message }
    </div>
  );
};
Example #15
0
  renderInput() {
    const { object, type, disabled, size, focus } = this.props

    return (
      <span>
        <input type={type} ref="input"
          className={cx('form-control', size ? 'input-' + size : '')}
          autoFocus={focus} {...object} onChange={this.onChange} disabled={disabled} />

        {object.dirty && object.error && <div className="text-danger">{object.error}</div>}
      </span>
    )
  }
Example #16
0
	render() {
		var appUiState = classNames({
			'app':true,
		  	'admin-open': this.state.isPressed
		});

		return (
			<div className={appUiState} >
				{this.loadStateFromStorage()}
				<ProjectPanel {...this.props} sortProjectProperties={this.sortProjectProperties.bind(this)} />
				<AdminPanel {...this.props} togglePanel={this.togglePanel.bind(this)} sortProjectProperties={this.sortProjectProperties.bind(this)} />
			</div>
		)
	}
Example #17
0
  elemNoti = () => {
    let value = ST.ALERT.NO_INPUT_VALUE;
    if (this.state.noti_value != null && this.state.noti_value.length > 1) {
      value = this.state.noti_value;
    }

    const align = this.props.type.indexOf("number") >= 0 ? 'left' : 'right';

    if (this.state.noti) {
      return <span className={cx("noti", align)}>{value}</span>
    }

    return null;
  }
Example #18
0
export const Nodata = (props) => {
  const onClicked = (e) => {
    if (props.onClick != null) {
      props.onClick(props.eid, e);
    }
  }

  const isChildren = props.children ? true : false;

  return (
    <NodataFrame className={cx('no-frame')} >
        {isChildren ? props.children : <div className="no-data">{props.title ? props.title : ST.NOTI.NODATA}</div>}
    </NodataFrame>
  )
}
Example #19
0
	render() {
		var icon = this.state.isPlaying ? 'stop' : 'play_arrow' ;
		var classes = classNames('sound btn-floating btn-large waves-effect waves-light red', {
			'is-playing': this.state.isPlaying,
			'is-loaded': this.state.isLoaded
		});

		return (
			<div className="sound-container col s6 m4">
				<a className={classes} onClick={this.play.bind(this)}>
					<i className="icon-play material-icons">{icon}</i>
				</a>

				<span className="sound-label">{this.props.label}</span>
			</div>
		);
	}
Example #20
0
  render() {
    var index = 0;
    const { data } = this.state;
    // console.dir(data);
    const { width, height } = CHART.BAR;

    const renderCustomizedLabel = (props) => {
      const {
        x, y, width, height, value,
      } = props;
      const radius = 10;
    
      return (
        <g>
          <circle cx={x + width / 2} cy={y - radius} r={radius} fill="#8884d8" />
          <text x={x + width / 2} y={y - radius} fill="#fff" textAnchor="middle" dominantBaseline="middle">
            {value.split(' ')[1]}
          </text>
        </g>
      );
    };
    
    const item = data[this.state.activeIndex];

    return (
      <Cardbox theme={"chart-itm black-box bar"}>
        <BarChart className="chart-frame" width={width} height={height} data={data} stackOffset="sign"
          margin={{ top: 30, right: 0, left: 0, bottom: 5, }} >
          <CartesianGrid strokeDasharray="3 3" />
          <XAxis dataKey="label" />
          <YAxis />
          {/* <Tooltip /> */}
          {/* <Legend /> */}
          <ReferenceLine y={0} stroke="#000" />
          <Bar dataKey='cost' fill="#33aa33" onClick={this.onClicked} label={{ position: 'top' }} >
            { data.map( (entry, index) => ( <Cell key={`cell-${index}`} fill={entry.cost < 0 ? "#1133aa" : "#aa3311"} /> ) ) }
          </Bar>
          {/* <Bar dataKey='+' stackId="a" fill="#cc2211" /> */}
          {/* <Bar dataKey='-' stackId="a" fill="#1155cc" /> */}
        </BarChart>
        <span className={cx("info", (item.cost < 0 && 'minus'))}>{`${item.name} (${ST.SONIC} : ${item.cost}${ST.MANWON})`}</span>
        <span className="unit">{`${ST.UNIT}[${ST.MANWON}]`}</span>
      </Cardbox>
    );
  }
Example #21
0
 classes: (classes, el) => {
   if (!el) {
     console.warn('You must pass the inputname when using validate.classes');
   }
   let inputClasses;
   if (typeof classes === 'object') {
     inputClasses = {
       ...classes,
       'input-validation-error': !component.validate.isInputValid(el),
     };
   } else {
     inputClasses = {
       [classes]: true,
       'input-validation-error': !component.validate.isInputValid(el),
     };
   }
   return classNames(inputClasses);
 },
Example #22
0
  render() {
    const props = this.props;
    const noti = this.state.noti;
    const disable = props.disable;

    return (
      <StyledObject className={props.theme}>
        {this.elemLabel(props.label)}
        <div className={cx("box", { disable })} >
          {this.elemInput(props)}
          <div className="underline"></div>
          {this.elemNoti()}
          {this.elemClear(props.clearButton)}
        </div>
        {this.elemHelper(props.helper)}
      </StyledObject>
    )
  }
Example #23
0
    render() {
        var footerClass = classNames({
            'site-footer': true,
            'padding10': !this.props.footerBig,
            'padding45': this.props.footerBig
        });

        return (
            <footer className={ footerClass } id="footer2">
              <div className="container">
                <div className="row">
                  <div className="col-md-8 col-sm-6 col-xs-12">
                    <ul className="footer-links">
                      <li><a href="#">About us</a></li>
                      <li><a href="#">Privacy policy</a></li>
                      <li><a href="#">In press</a></li>
                      <li><a href="#">Support</a></li>
                      <li><a href="#">Contact us</a></li>
                    </ul>
                  </div>
                  <div className="col-md-4 col-sm-6 col-xs-12">
                    <ul className="footer-socials">
                      <li><a className="facebook" href="#"><i className="fa fa-facebook"></i></a></li>
                      <li><a className="twitter" href="#"><i className="fa fa-twitter"></i></a></li>
                      <li><a className="dribbble" href="#"><i className="fa fa-dribbble"></i></a></li>
                      <li><a className="linkedin" href="#"><i className="fa fa-linkedin"></i></a></li>
                      <li><a className="instagram" href="#"><i className="fa fa-instagram"></i></a></li>
                    </ul>
                  </div>
                </div>
                <div className="row">
                  <div className="col-md-8 col-sm-6 col-xs-12">
                    <p className="copyright-text">Copyrights &copy; 2015 All Rights Reserved by <a href="#">ShaMSofT</a>.</p>
                  </div>
                  { this.props.footerBig ? (
                    <div className="col-md-4 col-sm-6 col-xs-12">
                      <p className="back-to-top"><a id="scroll-up" href="#" onClick={ this.scrollUp }>back to top</a></p>
                    </div>
                    ) : null }
                </div>
              </div>
            </footer>
            );
    }
Example #24
0
  elemInput(props) {
    const noti = this.state.noti;
    const disable = props.disable;
    const border = props.border;

    let type = props.type;
    let addedClass = "";
    let attr = { placeholder: props.guide, spellCheck: false };
    const right = type.indexOf("number") >= 0 ? 'right' : '';

    if (type == "date") {
      addedClass = "input-date";
      attr = {
        'data-date-format': 'yyyy-mm-dd'
      }
    }

    if (props.required) {
      attr.required = true;
    }

    if (disable) {
      attr.disabled = true;
    }

    return <input
      ref={(ref) => { this.input = ref }}
      className={cx("input", { noti }, addedClass, { disable }, { border }, { right })}
      type={type}
      value={this.state.value}
      onChange={this.onChanged}
      maxLength={this.props.maxLength}
      min={this.props.min}
      max={this.props.max}
      {...attr}
      onKeyPress={this.onKeyPressed} />
  }
Example #25
0
  render() {
    const props = this.props;
    const { width, height, radius } = CHART.PIE;
    const { data } = this.state;
    const leftLabel = data.map((item, index) => this.getLabel(index, item.color, item.title));
    const item = data[this.state.activeIndex];
    const info = (this.state.type === 'L') ? `${item.per}%`: `${item.value}${ST.MANWON}`;

    return (
      <Cardbox theme={"chart-itm black-box pie"}>
        <div className="chart-frame">
          {/* 현재 보유 종목 통계 */}
          <PieChart className="inline" width={width} height={height} /* onMouseEnter={this.onClicked}*/ >
            <Pie data={data} cx={width/2} cy={height/2} labelLine={false} dataKey="value" onClick={this.onClickedLeft}
              label={this.renderPercent} outerRadius={radius}  fill="#8884d8">
              { data.map((entry, index) => <Cell key={`c-${index}`} fill={entry.color} />) }
            </Pie>
          </PieChart>

          <span className="gap"></span>

          {/* 종목별 수익 통계 */}
          <PieChart className="inline" width={width} height={height} >
            <Pie data={data} cx={width/2} cy={height/2} labelLine={false} dataKey="value" onClick={this.onClickedRight}
              label={this.renderCost} outerRadius={radius}  fill="#8884d8">
              { data.map((entry, index) => <Cell key={`p-${index}`} fill={entry.color} />) }
            </Pie>
          </PieChart>
        </div>

        <span className={cx("info")}>{`${item.name} (${info})`}</span>
        <span className="gui">{leftLabel}</span>
        <span className="unit">{`${ST.UNIT}[${ST.MANWON}]`}</span>
      </Cardbox>
    );
  }
Example #26
0
export const News = ({ location, lang, match }) => {
  const itemType = new URLSearchParams(location.search).get('itemType')
  const getSearch = page => {
    const params = new URLSearchParams(pickBy({page, itemType}, identity)).toString()
    return params ? '?' + params : ''
  }

  return <Fragment>
        <Title>
          <Translate>
            <English>News - Kongling Datasektionen</English>
            <Swedish>Nyheter - Kongling Datasektionen</Swedish>
          </Translate>
        </Title>
        <header key="header">
          <div className="header-inner">
            <div className="row">
              <div className="header-left col-md-2">
                <Link to="/">
                  {'« '}
                  <Translate>
                    <English>Back</English>
                    <Swedish>Tillbaka</Swedish>
                  </Translate>
                </Link>
              </div>
              <div className="col-md-8">
                <h2>
                  <Translate>
                    <English>News</English>
                    <Swedish>Nyheter</Swedish>
                  </Translate>
                </h2>
              </div>
              <div className="header-right col-md-2">
                <a className="primary-action" href="https://calypso.datasektionen.se/">
                  <Translate>
                    <English>Edit</English>
                    <Swedish>Redigera</Swedish>
                  </Translate>
                </a>
              </div>
            </div>
          </div>
        </header>
        <div id="content" key="content">
          <div className="row">
            <div className="col-sm-4 col-md-3">
              <div id="secondary-nav">
                <h3>
                  <Translate>
                    <English>Filters</English>
                    <Swedish>Filtrering</Swedish>
                  </Translate>
                </h3>
                <ul>
                  <li>
                    <Link
                      to={location.pathname}
                      className={classNames({ 'text-theme-color strong': !itemType })}
                    >
                      <Translate>
                        <English>News and events</English>
                        <Swedish>Nyheter och event</Swedish>
                      </Translate>
                    </Link>
                  </li>
                  <li>
                    <Link
                      to={`${location.pathname}?itemType=POST`}
                      className={classNames({ 'text-theme-color strong': itemType === 'POST' })}
                    >
                      <Translate>
                        <English>Only news</English>
                        <Swedish>Endast nyheter</Swedish>
                      </Translate>
                    </Link>
                  </li>
                  <li>
                    <Link
                      to={`${location.pathname}?itemType=EVENT`}
                      className={classNames({ 'text-theme-color strong': itemType === 'EVENT' })}
                    >
                      <Translate>
                        <English>Only events</English>
                        <Swedish>Endast event</Swedish>
                      </Translate>
                    </Link>
                  </li>
                </ul>
              </div>
            </div>
            <div className="col-sm-8 col-md-9">
              <div className="row">
                <Calypso search={location.search}>
                  {({content, first, last, number, totalPages}) =>
                    <div className={cx('col-md-9', 'news')}>
                      {
                        content && content.map(item => <NewsItem item={item} location={location} lang={lang} key={item.id} />)
                      }
                      <hr/>
                      <div className="text-center">
                        <nav aria-label="Page navigation">
                          <ul className="pagination">
                            {first
                              ? <li className="disabled"><span>&laquo;</span></li>
                              : <li><Link to={location.pathname + getSearch(0)}>&laquo;</Link></li>}
                            {first
                              ? <li className="disabled"><span>&lsaquo;</span></li>
                              : <li><Link to={location.pathname + getSearch(number - 1)}>&lsaquo;</Link></li>}
                            <li className="disabled">
                              <span>
                                <Translate>
                                  <English>Page {number + 1} of {totalPages}</English>
                                  <Swedish>Sida {number + 1} av {totalPages}</Swedish>
                                </Translate>
                              </span>
                            </li>
                            {last
                              ? <li className="disabled"><span>&rsaquo;</span></li>
                              : <li><Link to={location.pathname + getSearch(number + 1)}>&rsaquo;</Link></li>}
                            {last
                              ? <li className="disabled"><span>&raquo;</span></li>
                              : <li><Link to={location.pathname + getSearch(totalPages - 1)}>&raquo;</Link></li>}
                          </ul>
                        </nav>
                      </div>
                    </div>
                  }
                </Calypso>
                <div className="col-md-3" id="sidebar">
                  <div className="sidebar-card">
                    <h2>
                      <Translate>
                        <English>Upcoming events</English>
                        <Swedish>Kommande event</Swedish>
                      </Translate>
                    </h2>
                    <Calypso type='event'>
                      {content =>
                        (content && content.length)
                          ? content
                            .filter((_, i) => i < 5)
                            .map(item => <p key={item.id}>
                              <Link to={location.pathname + '/' + item.id}>
                                <strong>
                                  <Translate>
                                    <English>{item.titleEnglish}</English>
                                    <Swedish>{item.titleSwedish}</Swedish>
                                  </Translate>
                                </strong>
                              </Link>
                              <br/>
                              <span>
                                    {
                                      new Date(item.eventStartTime)
                                        .toLocaleDateString(
                                          lang === 'en' ? 'en-US' : 'sv-SE',
                                          {
                                            day: 'numeric',
                                            month: 'long',
                                            year: 'numeric'
                                          }
                                        )
                                    }
                                    </span>
                            </p>)
                          :
                          <Translate>
                            <English>No upcoming events :(</English>
                            <Swedish>Inga kommande event :(</Swedish>
                          </Translate>
                      }
                    </Calypso>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </Fragment>
}
Example #27
0
    render() {
        const { path, folders, files, selectFolder, createFolder, selectFile, deleteFolder, deleteFile, moveFolder, moveFile, editFolder, editFile } = this.props;

        //console.log ("FileExplorer props:", this.props);
        var pathlinks = path && path.map ( (folder, index) => {
            if (index == path.length - 1) {
                return (<span key={index}> {' / ' + folder.name} </span>)
            } else {
                return (
                <span key={index}> 
                    <span>{' / '}</span>
                    <a onClick={ () => selectFolder && selectFolder(folder) }> 
                    {folder.name}
                    </a>
                </span>
                )
            }
        } );

        var current = path && _.last(path);
        var currentFolderId = (current && current.id) || 0;

        var listStyleContent = null;
        if (this.state.listStyle == 'th-list') {
            var folderlist = folders && folders.map ( (folder, index) => {
                if (folder.parent == currentFolderId)
                    return (
              <tr key={index}> 
                <td className={classes.fileicon}><span className="glyphicon glyphicon-folder-open" aria-hidden="true"></span></td>
                <td className={classes.itemName}><a onClick={ () => selectFolder && selectFolder(folder) }>
                    {folder.name}</a>
                    <span className={classes.fileOperate}>
                    <a onClick={ () => editFolder && editFolder(folder) }>编辑</a> | <a onClick={ () => deleteFolder && deleteFolder(folder) }>删除</a> | <a onClick={ () => moveFolder && moveFolder(folder) }>移动</a>
                    </span>
                </td> 
                <td></td>
                <td>{folder.desc}</td> 
              </tr>
                    )
            } );
            
            var filelist = files && files.map ( (file, index) => {
                if (file.folder == currentFolderId) {
                    var fileClass = "glyphicon glyphicon-file";
                    if (file.mimetype && (file.mimetype.indexOf('image') >= 0)) 
                        fileClass = "glyphicon glyphicon-picture";
                    return (
              <tr key={index}>
                <td className={classes.fileicon}><span className={fileClass} aria-hidden="true"></span></td>
                <td className={classes.itemName}><a onClick={ () => selectFile && selectFile(file) }>{file.name}</a>
                    <span className={classes.fileOperate}>
                    <a onClick={ () => editFile && editFile(file) }>编辑</a> | <a onClick={ () => deleteFile && deleteFile(file) }>删除</a> | <a onClick={ () => moveFile && moveFile(file) }>移动</a>
                    </span>
                </td>
                <td>{file.path}</td>
                <td>{file.mimetype}</td> 
              </tr>
                    )
                }
            } );
            listStyleContent = (
          <table className={cx("table table-hover", 'filetable')}> 
            <tbody> {folderlist} {filelist} </tbody> 
          </table>
            )
        } else {
            var wrapClass = "col-xs-2 col-sm-1";
            if (this.state.listStyle == 'th-large') {
                wrapClass = "col-xs-4 col-sm-2";
            }
            wrapClass = classNames(wrapClass, classes.cardContainer);
            var innerClass = classNames("img-responsive center-block", classes.imgInner);
            var folderlist = folders && folders.map ( (folder, index) => {
                if (folder.parent == currentFolderId)
                    return (
                        <div className={wrapClass} key={index}>
                          <div className={classes.imgWrapper}>
                            <img src={"/images/folder1.png"} className={innerClass} alt="Responsive image" />
                            <div className={classes.infoInner}>
                            <a onClick={ () => selectFolder && selectFolder(folder) }>
                            {folder.name}</a><br/>
                            <span className={classes.fileOperate}>
                            <a onClick={ () => editFolder && editFolder(folder) }>编辑</a> | <a onClick={ () => deleteFolder && deleteFolder(folder) }>删除</a> | <a onClick={ () => moveFolder && moveFolder(folder) }>移动</a>
                            </span>
                            </div>

                          </div>
                          <div className={classes.fileName}>
                            <a onClick={ () => selectFolder && selectFolder(folder) }>{folder.name||'未命名'}</a>
                          </div>
                        </div>
                        )
            } );
            
            var filelist = files && files.map ( (file, index) => {
                if (file.folder == currentFolderId) {
                    var fileClass = "glyphicon glyphicon-file";
                    if (file.mimetype && (file.mimetype.indexOf('image') >= 0)) 
                        fileClass = "glyphicon glyphicon-picture";
                    return (
                            <div className={wrapClass} key={index}>
                            <div className={classes.imgWrapper}>
                              <img src={"/"+file.path} className={innerClass} alt="Responsive image" />
                              <div className={classes.infoInner}>
                                <a onClick={ () => selectFile && selectFile(file) }>{file.name}</a>
                                <br/>
                                <span className={classes.fileOperate}>
                                  <a onClick={ () => editFile && editFile(file) }>编辑</a> | <a onClick={ () => deleteFile && deleteFile(file) }>删除</a> | <a onClick={ () => moveFile && moveFile(file) }>移动</a>
                                </span>
                              </div>
                            </div>
                            <div className={classes.fileName}><a onClick={ () => selectFile && selectFile(file) }>{file.name||'未命名'}</a></div>
                            </div>
                    )
                }
            } );
            listStyleContent = (
                    <div style={ {margin:0} }> 
                    <div className="row">{folderlist} {filelist}</div>
                    </div>
            )
        }

        var toggleDropdown = (name, e) => {
            console.log ("toggleDropdown:"+name);
            e && e.stopPropagation();
            this.setState({dropdown:(!this.state.dropdown || this.state.dropdown != name)?name:null });
        }

        return (
  <div className={classes.wrapper}>
    <div className='clearfix' />
    <div className={classes.pathinfo}>
      <div>
        <a onClick={ () => this.setState({listStyle:'th-list'}) }><span className="glyphicon glyphicon-th-list" aria-hidden="true"></span></a>&nbsp;
        <a onClick={ () => this.setState({listStyle:'th'}) }><span className="glyphicon glyphicon-th" aria-hidden="true"></span></a>&nbsp;
        <a onClick={ () => this.setState({listStyle:'th-large'}) }><span className="glyphicon glyphicon-th-large" aria-hidden="true"></span></a>&nbsp;
        <span>当前目录:</span>{pathlinks}
        <ul className="right-navbar fe-toolbar">
					<li className={classNames("dropdown hoe-rheader-submenu hoe-header-profile", this.state.dropdown == 'createFolder' && 'open')}>
						<a href="javascript:void(0)" className="dropdown-toggle" data-toggle="dropdown" onClick={ (e) => toggleDropdown('createFolder',e) } >
              <span>新建目录</span>
						</a>
              <CreateFolderPopup currentFolder={current} createFolder={createFolder}/>
					</li>
					<li className="dropdown hoe-rheader-submenu hidden-xs">
						<a href="javascript:void(0)" className="dropdown-toggle" data-toggle="dropdown">
              <span>管理目录</span>
            </a> 
					</li> 
				</ul>
      </div>
    </div>

    <div>
      {listStyleContent}
    </div>
  </div>
        )
    }
Example #28
0
const Menu = (props) => {
  const [items, setItems] = useState([]);
  const [pos, setPos] = useState({ x: 0, y: 0 });

  let navbarHeight = 0;
  let margin = 10;
  let width = 120;
  let data = new Object();
  let callback = null;
  let itemHeight = 30;
  let padding = 5;

  useEffect(() => {
    const { menus } = props;
    setItems(menus);
  }, [])

  // const changeMenus = ({ menus, ids }) => {
  //   let array = [];
  //   console.dir(array);
  //   const count = menus.length;
  //   for (var i = 0; i < count; i++) {
  //     let item = { menu: menus[i], id: ids[i] };
  //     array.push(item);
  //   }

  //   setItems(array);
  // }

  // const setData = (value) => {
  //   data = value;
  // }


  // 메뉴 이외의 화면을 터치시 메뉴를 닫기 위한 기능
  const onClickBody = (e) => {
    if (props.onClick != null) {
      props.onClick(null);
    }
  }

  // const onClickMouse = (e) => {
  //   setPos({ x: e.pageX, y: e.pageY });
  // }

  document.getElementById('body').addEventListener('mouseup', onClickBody);
  window.addEventListener('resize', onClickBody);

  // const componentWillMount = () => {
  //   //   document.getElementById('body').addEventListener('mousedown', onClickMouse);
  //   document.getElementById('body').addEventListener('mouseup', onClickBody);
  //   window.addEventListener('resize', onClickBody);
  // }

  // const componentWillUnmount = () => {
  //   //   document.getElementById('body').addEventListener('mousedown', onClickMouse);
  //   document.getElementById('body').removeEventListener('mouseup', onClickBody);
  //   window.addEventListener('resize', onClickBody);
  // }

  const onClickItem = (e) => {
    let eid = e.currentTarget.getAttribute("eid");
    if (props.onClick != null) {
      props.onClick(eid, props.data);
    }
  }

  navbarHeight = document.getElementsByClassName("navbar")[0].offsetHeight;

  const x = props.pos.x - width + margin;
  const y = props.pos.y - navbarHeight - margin;

  let contents = <StyledObject className={cx('pop-memu', props.theme)} top={y + "px"} left={x + "px"} width={width + "px"}
    padding={padding + "px"} itemHeight={itemHeight + "px"}>
    <div className="menu-bg"></div>
    <ul className="menu-items" aria-dropeffect="move">
      {items.map((item, index) => (
        <li key={index} className="menu-i" onMouseDown={onClickItem} eid={item.id}>{item.name}</li>
      ))}
    </ul>
  </StyledObject>

  return (<React.Fragment>{contents}</React.Fragment>);
}
Example #29
0
export const Confirm = (props) => {
  useEffect(() => {
    showBodyScroll(true);
  }, [])

  const showBodyScroll = (isShow) => {
    let object = document.getElementById("body-frame");
    if (isShow) {
      object.style.overflow = "auto";
    } else {
      object.style.overflow = "hidden";
    }
  }

  const onClicked = (eid) => {
    const { doAct } = props.action;

    if (eid == EID.OK) {
      if (doAct != null) doAct(true);
    } else {
      if (doAct != null) doAct(false);
    }
  }

  const onKeyPressed = (e) => {
    console.log(e);
    if (e.key == 'Enter') {
      onClicked(EID.OK);
    }

    return;
  }

  showBodyScroll(true);

  return (
    <React.Fragment>
      <ConfirmFrame className={cx("confirm", props.type)} history={history}>
        <div className="bg" onKeyPress={onKeyPressed}></div>
        <div className={cx("confirm-dialog", props.theme)}>
          <div className="content">

            <div className="header">
              <span className="title">{props.title}</span>
              <button type="button" className="close" onClick={onClicked} eid={EID.CANCEL}>×</button>
            </div>

            <div className="body">
              <div className="msg">{props.msg}</div>
            </div>

            <div className="footer">
              <Button theme="primary" onClick={onClicked} title={props.ok ? props.ok : ST.OK} eid={EID.OK} />
              {props.cancel && <Button theme="primary mL10" onClick={onClicked} title={props.cancel ? props.cancel : ST.CANCEL} eid={EID.CANCEL} />}
            </div>
          </div>
        </div>
      </ConfirmFrame>
    </React.Fragment>
  );
}