@attivio/suit
Version:
Attivio SUIT, the Search UI Toolkit, is a library for creating search clients for searching the Attivio platform.
253 lines (211 loc) • 8.77 kB
JavaScript
;
exports.__esModule = true;
exports.default = undefined;
var _class, _temp2;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _SearchDocument = require('../api/SearchDocument');
var _SearchDocument2 = _interopRequireDefault(_SearchDocument);
var _FieldNames = require('../api/FieldNames');
var _FieldNames2 = _interopRequireDefault(_FieldNames);
var _DocumentType = require('./DocumentType');
var _DocumentType2 = _interopRequireDefault(_DocumentType);
var _StarRating = require('./StarRating');
var _StarRating2 = _interopRequireDefault(_StarRating);
var _SearchResultTitle = require('./SearchResultTitle');
var _SearchResultTitle2 = _interopRequireDefault(_SearchResultTitle);
var _SearchResultTags = require('./SearchResultTags');
var _SearchResultTags2 = _interopRequireDefault(_SearchResultTags);
var _DocumentThumbnail = require('./DocumentThumbnail');
var _DocumentThumbnail2 = _interopRequireDefault(_DocumentThumbnail);
var _RelevancyScore = require('./RelevancyScore');
var _RelevancyScore2 = _interopRequireDefault(_RelevancyScore);
var _Signals = require('../api/Signals');
var _Signals2 = _interopRequireDefault(_Signals);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
/**
* A "Debug" rendering of a document which shows all of its fields and their values.
*/
var DebugSearchResult = (_temp2 = _class = function (_React$Component) {
_inherits(DebugSearchResult, _React$Component);
function DebugSearchResult() {
var _temp, _this, _ret;
_classCallCheck(this, DebugSearchResult);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.rateDocument = function (doc, rating) {
var baseUri = _this.props.baseUri;
if (doc.signal) {
new _Signals2.default(baseUri).addSignal(doc, 'like', rating);
}
}, _temp), _possibleConstructorReturn(_this, _ret);
}
/**
* Renders a <DebugSearchResult> component for the document.
*/
DebugSearchResult.renderer = function renderer(doc, position, baseUri, key) {
var hide360Link = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
return _react2.default.createElement(DebugSearchResult, {
document: doc,
position: position,
baseUri: baseUri,
key: key,
hide360Link: hide360Link
});
};
DebugSearchResult.valueToDisplay = function valueToDisplay(value) {
if (typeof value === 'string') {
return value;
}
var json = JSON.stringify(value, null, 2);
if (json.startsWith('{')) {
return _react2.default.createElement(
'pre',
null,
json
);
}
return _react2.default.createElement(
'span',
null,
json
);
};
DebugSearchResult.prototype.render = function render() {
var _this2 = this;
var _props = this.props,
baseUri = _props.baseUri,
document = _props.document,
position = _props.position,
showRatings = _props.showRatings,
showTags = _props.showTags,
hide360Link = _props.hide360Link;
var docId = document.getFirstValue('.id');
var table = document.getFirstValue(_FieldNames2.default.TABLE);
var thumbnailUri = document.getFirstValue('thumbnailImageUri');
var previewUri = document.getAllValues('previewImageUri');
var score = parseFloat(document.getFirstValue(_FieldNames2.default.SCORE));
var scoreDescription = document.getFirstValue(_FieldNames2.default.SCORE_EXPLAIN);
var moreLikeThisQuery = document.getFirstValue('morelikethisquery');
var docTags = document.getAllValues('tags');
var fieldRows = [];
var fieldNames = document.fields.keys();
var finished = false;
while (!finished) {
var nextField = fieldNames.next();
if (nextField.done) {
finished = true;
} else {
var fieldName = nextField.value;
var value = void 0;
var values = document.getAllValues(fieldName);
if (values && values.length > 1) {
(function () {
var index = 0;
var valueRows = values.map(function (singleValue) {
var singleValueContents = DebugSearchResult.valueToDisplay(singleValue);
index += 1;
return _react2.default.createElement(
'li',
{ key: JSON.stringify(singleValue) + '-' + index },
singleValueContents
);
});
value = _react2.default.createElement(
'ul',
null,
valueRows
);
})();
} else if (values && values.length === 1) {
value = DebugSearchResult.valueToDisplay(values[0]);
} else {
value = _react2.default.createElement(
'span',
{ className: { fontStyle: 'italic' } },
'No value'
);
}
fieldRows.push(_react2.default.createElement(
'dt',
{ key: fieldName },
fieldName
));
fieldRows.push(_react2.default.createElement(
'dd',
{ key: fieldName + 'value' },
value
));
}
}
return _react2.default.createElement(
'div',
{ className: ' attivio-search-result row' },
_react2.default.createElement(
'div',
{ className: 'col-xs-2 col-sm-2' },
_react2.default.createElement(_DocumentType2.default, { docType: table, position: position }),
_react2.default.createElement(_DocumentThumbnail2.default, { uri: thumbnailUri, previewUris: previewUri, previewTitle: document.getFirstValue(_FieldNames2.default.TITLE) }),
_react2.default.createElement(
'dl',
{ className: 'attivio-labeldata-stacked attivio-labeldata-stacked-search-results' },
showRatings && _react2.default.createElement(
'div',
null,
_react2.default.createElement(
'dt',
null,
'User Rating'
),
_react2.default.createElement(
'dd',
null,
_react2.default.createElement(_StarRating2.default, { onRated: function onRated(rating) {
_this2.rateDocument(document, rating);
} })
)
),
_react2.default.createElement(
'dt',
null,
'Relevancy Score'
),
_react2.default.createElement(
'dd',
null,
_react2.default.createElement(_RelevancyScore2.default, { score: score, description: scoreDescription, id: docId })
)
)
),
_react2.default.createElement(
'div',
{ className: 'col-xs-8 col-sm-8' },
_react2.default.createElement(_SearchResultTitle2.default, { doc: document, baseUri: baseUri }),
_react2.default.createElement(
'dl',
{ className: 'attivio-labeldata-2col attivio-search-result-debugger' },
fieldRows
),
showTags && _react2.default.createElement(_SearchResultTags2.default, {
tags: docTags,
moreLikeThisQuery: moreLikeThisQuery,
vertical: true,
docId: docId,
hide360Link: hide360Link
})
)
);
};
return DebugSearchResult;
}(_react2.default.Component), _class.defaultProps = {
baseUri: '',
showTags: true,
showRatings: true,
hide360Link: false
}, _class.displayName = 'DebugSearchResult', _temp2);
exports.default = DebugSearchResult;
module.exports = exports['default'];