summaryrefslogtreecommitdiffstats
path: root/web/react/components/file_attachment_list.jsx
blob: df4424d03e78f631f7f8498924f6226577cad3d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
// See License.txt for license information.

var ViewImageModal = require('./view_image.jsx');
var FileAttachment = require('./file_attachment.jsx');
var Constants = require('../utils/constants.jsx');

module.exports = React.createClass({
    displayName: "FileAttachmentList",
    propTypes: {
        // a list of file pathes displayed by this
        filenames: React.PropTypes.arrayOf(React.PropTypes.string).isRequired,
        // the identifier of the modal dialog used to preview files
        modalId: React.PropTypes.string.isRequired,
        // the channel that this is part of
        channelId: React.PropTypes.string,
        // the user that owns the post that this is attached to
        userId: React.PropTypes.string
    },
    getInitialState: function() {
        return {startImgId: 0};
    },
    render: function() {
        var filenames = this.props.filenames;
        var modalId = this.props.modalId;

        var postFiles = [];
        for (var i = 0; i < filenames.length && i < Constants.MAX_DISPLAY_FILES; i++) {
            postFiles.push(<FileAttachment key={i} filename={filenames[i]} index={i} modalId={modalId} handleImageClick={this.handleImageClick} />);
        }

        return (
            <div>
                <div className="post-image__columns">
                    {postFiles}
                </div>
                <ViewImageModal
                    channelId={this.props.channelId}
                    userId={this.props.userId}
                    modalId={modalId}
                    startId={this.state.startImgId}
                    filenames={filenames} />
            </div>
        );
    },
    handleImageClick: function(e) {
        this.setState({startImgId: parseInt($(e.target.parentNode).attr('data-img-id'))});
    }
});