diff --git a/static/js/app/components/terminal/row.jade b/static/js/app/components/terminal/row.jade new file mode 100644 index 0000000..a6788d2 --- /dev/null +++ b/static/js/app/components/terminal/row.jade @@ -0,0 +1,4 @@ +.code-line + span.code-line_counter + .code-line_body!= this.props.row + diff --git a/static/js/app/components/terminal/terminal.jade b/static/js/app/components/terminal/terminal.jade index 34683ec..867e1ca 100644 --- a/static/js/app/components/terminal/terminal.jade +++ b/static/js/app/components/terminal/terminal.jade @@ -1,8 +1,6 @@ .terminal pre.terminal_code(ref="code") each row, index in this.state.data - .code-line(key=index) - span.code-line_counter - .code-line_body!= row + Row(row=row, key=index) .terminal_footer(style={height: '30px'}) diff --git a/static/js/app/components/terminal/terminal.js b/static/js/app/components/terminal/terminal.js index 6dd6d4b..8e8a239 100644 --- a/static/js/app/components/terminal/terminal.js +++ b/static/js/app/components/terminal/terminal.js @@ -6,8 +6,20 @@ define([ 'reflux', 'app/stores/terminal', 'ansi_up', - 'templates/app/components/terminal/terminal' -], function(_, React, Reflux, terminalStore, ansiUp, template) { + 'templates/app/components/terminal/terminal', + 'templates/app/components/terminal/row' +], function(_, React, Reflux, terminalStore, ansiUp, template, rowTemplate) { + var TerminalRow = React.createClass({ + render: rowTemplate, + shouldComponentUpdate: function(nextProps) { + return nextProps.row !== this.props.row; + } + }); + + template = template.locals({ + Row: TerminalRow + }); + var Component = React.createClass({ mixins: [Reflux.ListenerMixin], shouldScrollBottom: true,