Sha256: e7920b791fa8b547e804239d7aab7e172a787649c4e8f7dc03e4d891e69a1147

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

Screen = React.createClass

    displayName: 'Screen'
    shouldComponentUpdate: ->
        false
    render: ->
        React.createElement(@props.screen.component(), @props.screen.props)

class Lanes.Workspace.ScreenView extends Lanes.React.Component
    contextTypes:
        uistate: React.PropTypes.object.isRequired

    modelBindings:
        displaying: -> Lanes.Screens.Definitions.displaying
        allScreens: -> Lanes.Screens.Definitions.all

    bindEvents:
        displaying: 'add remove reset change:active'
        allScreens: 'change:loading'

    renderScreen: (screen) ->
        <div key={screen.id} className={_.classnames("screen", active:screen.active)}>
            <Screen screen={screen} />
        </div>

    renderLoading: ->
        screen = Lanes.Screens.Definitions.all.findWhere(loading: true)
        <LC.NetworkActivityOverlay visible message="Loading #{screen.title}…" />

    BaseView: ->
        Base = Lanes.Extensions.controlling().initialScreen?() or Lanes.Workspace.FirstRun
        <div className="screen active base">
            <Base />
        </div>

    render: ->
        child = if @displaying.isEmpty() then <@BaseView /> else @displaying.map(@renderScreen)
        <div className={"page-content #{@context.uistate.layout_size}"}>
            {@renderLoading() if @allScreens.isLoading()}
            {child}
        </div>

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lanes-0.7.0 client/lanes/workspace/ScreenView.cjsx