/* * Copyright 2007-2017 Charles du Jeu - Abstrium SAS * This file is part of Pydio. * * Pydio is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Pydio is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with Pydio. If not, see . * * The latest code can be found at . */ 'use strict'; exports.__esModule = true; exports['default'] = React.createClass({ displayName: 'DataModelBadge', propTypes: { dataModel: React.PropTypes.instanceOf(PydioDataModel), options: React.PropTypes.object, onBadgeIncrease: React.PropTypes.func, onBadgeChange: React.PropTypes.func }, getInitialState: function getInitialState() { return { value: '' }; }, componentDidMount: function componentDidMount() { var options = this.props.options; var dm = this.props.dataModel; var newValue = ''; this._observer = (function () { switch (options.property) { case "root_children": var l = dm.getRootNode().getChildren().size; newValue = l ? l : 0; break; case "root_label": newValue = dm.getRootNode().getLabel(); break; case "root_children_empty": var cLength = dm.getRootNode().getChildren().size; newValue = !cLength ? options['emptyMessage'] : ''; break; case "metadata": if (options['metadata_sum']) { newValue = 0; dm.getRootNode().getChildren().forEach(function (c) { if (c.getMetadata().get(options['metadata_sum'])) newValue += parseInt(c.getMetadata().get(options['metadata_sum'])); }); } break; default: break; } var prevValue = this.state.value; if (newValue && newValue !== prevValue) { if (Object.isNumber(newValue) && this.props.onBadgeIncrease) { if (prevValue !== '' && newValue > prevValue) this.props.onBadgeIncrease(newValue, prevValue ? prevValue : 0, this.props.dataModel); } } if (this.props.onBadgeChange) { this.props.onBadgeChange(newValue, prevValue, this.props.dataModel); } this.setState({ value: newValue }); }).bind(this); dm.getRootNode().observe("loaded", this._observer); }, componentWillUnmount: function componentWillUnmount() { this.props.dataModel.stopObserving("loaded", this._observer); }, render: function render() { if (!this.state.value) { return null; } else { return React.createElement( 'span', { className: this.props.options['className'] }, this.state.value ); } } }); module.exports = exports['default'];