UNPKG

ze-react-component-library

Version:
144 lines (127 loc) 4.45 kB
var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; import { useRequest } from "@umijs/hooks"; import { requestAsk, requestLogicform } from "../request"; import { useState } from "react"; import React from "react"; import ZELogicformVisualizerList from "../ZELogicformVisualizerList"; function useAsk(_a) { var question = _a.question, askContext = _a.askContext, isMobile = _a.isMobile, formatAnswer = _a.formatAnswer, onAnswerError = _a.onAnswerError, _b = _a.debounceInterval, debounceInterval = _b === void 0 ? 200 : _b; var _c = useState(), answer = _c[0], _setAnswer = _c[1]; var _d = useState([]), logicformsToChoose = _d[0], setLogicformsToChoose = _d[1]; var _e = useState(false), isResolvingLFs = _e[0], setIsResolvingLFs = _e[1]; var setAnswer = function setAnswer(answer) { var finalAnswer = formatAnswer ? formatAnswer(answer) : answer; if (answer.error) { onAnswerError === null || onAnswerError === void 0 ? void 0 : onAnswerError(finalAnswer); } _setAnswer(finalAnswer); }; var _f = useRequest(function () { if ((question === null || question === void 0 ? void 0 : question.length) > 0) { return requestAsk(question || question, true, askContext); } return Promise.reject(null); }, { refreshDeps: [question], debounceInterval: debounceInterval, onSuccess: function onSuccess(result) { if (result === null || result === void 0 ? void 0 : result.logicforms) { // 20230910 - 去数据库全部执行一遍。只找有数据的 if (result.logicforms.length <= 10) { setIsResolvingLFs(true); Promise.all(result.logicforms.map(function (lf) { return requestLogicform({ schema: lf.schema, query: lf.query, preds: [{ operator: "$count", name: "c" }] }); })).then(function (results) { setIsResolvingLFs(false); var filteredLogicforms = result.logicforms.filter(function (_lf, index) { return results[index].result[0].c > 0; }); if (filteredLogicforms.length === 0) { // 都没有数据 setLogicformsToChoose(result.logicforms); } else if (filteredLogicforms.length > 1) { setLogicformsToChoose(filteredLogicforms); } else { setLogicformsToChoose([]); setAnswer({ question: question, logicform: filteredLogicforms[0] }); } }).catch(function (e) { console.log("error", e); setIsResolvingLFs(false); setLogicformsToChoose(result.logicforms); }); } else { setLogicformsToChoose(result.logicforms); } } else if ((result === null || result === void 0 ? void 0 : result.logicform) || (result === null || result === void 0 ? void 0 : result.error)) { setLogicformsToChoose([]); setAnswer(__assign({ question: question }, result)); } else { console.error("unexpected ask result: ", result); } } }), ask = _f.run, asking = _f.loading; var render = function render() { return /*#__PURE__*/React.createElement(React.Fragment, null, (logicformsToChoose === null || logicformsToChoose === void 0 ? void 0 : logicformsToChoose.length) > 0 && /*#__PURE__*/React.createElement("div", { style: { marginTop: 10 } }, /*#__PURE__*/React.createElement(ZELogicformVisualizerList, { compact: isMobile, isDrawer: isMobile, logicforms: logicformsToChoose, onClick: function onClick(logicform) { setLogicformsToChoose([]); setAnswer({ question: question, logicform: logicform }); } }))); }; return { logicformsToChoose: logicformsToChoose, render: render, loading: asking || isResolvingLFs, ask: ask, answer: answer }; } export default useAsk;