getSearchStatusDoneLabel(lines, files) { const matchingLines = PluralForm.get( lines, L10N.getStr("netmonitor.search.status.labels.matchingLines") ).replace("#1", lines); const matchingFiles = PluralForm.get( files, L10N.getStr("netmonitor.search.status.labels.fileCount") ).replace("#1", files); return L10N.getFormatStr( "netmonitor.search.status.labels.done", matchingLines, matchingFiles ); } renderStatus() { const { status, resultsCount, resourceCount } = this.props; switch (status) { case SEARCH_STATUS.FETCHING: return L10N.getStr("netmonitor.search.status.labels.fetching"); case SEARCH_STATUS.DONE: return this.getSearchStatusDoneLabel(resultsCount, resourceCount); case SEARCH_STATUS.ERROR: return L10N.getStr("netmonitor.search.status.labels.error"); case SEARCH_STATUS.CANCELED: return L10N.getStr("netmonitor.search.status.labels.canceled"); default: return ""; } } render() { const { status } = this.props; return div( { className: "devtools-toolbar devtools-toolbar-bottom" }, div( { className: "status-bar-label", title: this.renderStatus(), }, this.renderStatus(), status === SEARCH_STATUS.FETCHING ? span({ className: "img loader" }) : "" ) ); } } module.exports = connect(state => ({ status: getSearchStatus(state), resultsCount: getSearchResultCount(state), resourceCount: getSearchResourceCount(state), }))(StatusBar); PK