mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-19 10:26:17 +00:00
change AI search result is markdown (#5888)
This commit is contained in:
@@ -41,6 +41,25 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ai-search-ask .ai-search-ask-body .ai-search-ask-body-markdown .sf-slate-viewer-scroll-container {
|
||||||
|
padding: 0;
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ai-search-ask .ai-search-ask-body .ai-search-ask-body-markdown .sf-slate-viewer-article-container {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ai-search-ask .ai-search-ask-body .ai-search-ask-body-markdown .article {
|
||||||
|
padding: 0;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ai-search-ask .ai-search-ask-body .ai-search-ask-body-markdown .article p {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
.ai-search-ask .ai-search-ask-footer {
|
.ai-search-ask .ai-search-ask-footer {
|
||||||
border-top: 1px solid rgba(0, 40, 100, 0.12);
|
border-top: 1px solid rgba(0, 40, 100, 0.12);
|
||||||
margin: 0 1rem;
|
margin: 0 1rem;
|
||||||
|
@@ -36,7 +36,7 @@ export default class AISearchAsk extends Component {
|
|||||||
super(props);
|
super(props);
|
||||||
this.state = {
|
this.state = {
|
||||||
value: props.value,
|
value: props.value,
|
||||||
isLoading: false,
|
isLoading: true,
|
||||||
answeringResult: '',
|
answeringResult: '',
|
||||||
hitFiles: [],
|
hitFiles: [],
|
||||||
};
|
};
|
||||||
@@ -101,11 +101,12 @@ export default class AISearchAsk extends Component {
|
|||||||
};
|
};
|
||||||
|
|
||||||
formatQuestionAnsweringItems(data) {
|
formatQuestionAnsweringItems(data) {
|
||||||
|
if (!Array.isArray(data)) return [];
|
||||||
let items = [];
|
let items = [];
|
||||||
for (let i = 0; i < data.length; i++) {
|
for (let i = 0; i < data.length; i++) {
|
||||||
items[i] = {};
|
items[i] = {};
|
||||||
items[i]['index'] = [i];
|
items[i]['index'] = [i];
|
||||||
items[i]['name'] = data[i].substring(data[i].lastIndexOf('/')+1);
|
items[i]['name'] = data[i].substring(data[i].lastIndexOf('/') + 1);
|
||||||
items[i]['path'] = data[i];
|
items[i]['path'] = data[i];
|
||||||
items[i]['repo_id'] = this.props.repoID;
|
items[i]['repo_id'] = this.props.repoID;
|
||||||
items[i]['is_dir'] = false;
|
items[i]['is_dir'] = false;
|
||||||
@@ -135,11 +136,10 @@ export default class AISearchAsk extends Component {
|
|||||||
search_repo: repoID || 'all',
|
search_repo: repoID || 'all',
|
||||||
};
|
};
|
||||||
seafileAPI.questionAnsweringFiles(searchParams, token).then(res => {
|
seafileAPI.questionAnsweringFiles(searchParams, token).then(res => {
|
||||||
const { answering_result } = res.data || {};
|
let { answering_result, hit_files } = res.data || {};
|
||||||
const hit_files = answering_result !== 'false' ? res.data.hit_files : [];
|
|
||||||
this.setState({
|
this.setState({
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
answeringResult: answering_result === 'false' ? 'No result' : answering_result,
|
answeringResult: answering_result === 'false' ? '' : answering_result.trim(),
|
||||||
hitFiles: this.formatQuestionAnsweringItems(hit_files),
|
hitFiles: this.formatQuestionAnsweringItems(hit_files),
|
||||||
});
|
});
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
@@ -152,6 +152,7 @@ export default class AISearchAsk extends Component {
|
|||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
const { isLoading, answeringResult, hitFiles } = this.state;
|
||||||
return (
|
return (
|
||||||
<div className="search">
|
<div className="search">
|
||||||
<div className="search-mask show" onClick={this.props.closeAsk}></div>
|
<div className="search-mask show" onClick={this.props.closeAsk}></div>
|
||||||
@@ -164,7 +165,7 @@ export default class AISearchAsk extends Component {
|
|||||||
{gettext('Return')}
|
{gettext('Return')}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{this.state.isLoading ?
|
{isLoading ?
|
||||||
<div className="d-flex align-items-center my-8">
|
<div className="d-flex align-items-center my-8">
|
||||||
<Loading />
|
<Loading />
|
||||||
</div>
|
</div>
|
||||||
@@ -174,20 +175,17 @@ export default class AISearchAsk extends Component {
|
|||||||
<AISearchRobot/>
|
<AISearchRobot/>
|
||||||
</div>
|
</div>
|
||||||
<div className="ai-search-ask-body-right">
|
<div className="ai-search-ask-body-right">
|
||||||
{/* <div>{this.state.answeringResult}</div>s */}
|
{answeringResult.length > 0 ?
|
||||||
|
<div className="ai-search-ask-body-markdown">
|
||||||
{/* markdown viewer */}
|
<MarkdownViewer value={answeringResult} isShowOutline={false}/>
|
||||||
<div className="ai-search-ask-body-markdown">
|
</div>
|
||||||
<MarkdownViewer
|
:
|
||||||
value={this.state.answeringResult}
|
<p>{gettext('No result')}</p>
|
||||||
isShowOutline={false}
|
}
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<AISearchHelp />
|
<AISearchHelp />
|
||||||
{this.state.hitFiles.length > 0 &&
|
{hitFiles.length > 0 &&
|
||||||
<AISearchRefrences
|
<AISearchRefrences
|
||||||
hitFiles={this.state.hitFiles}
|
hitFiles={hitFiles}
|
||||||
onItemClickHandler={this.props.onItemClickHandler}
|
onItemClickHandler={this.props.onItemClickHandler}
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
@@ -196,7 +194,7 @@ export default class AISearchAsk extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
<div className="ai-search-ask-footer">
|
<div className="ai-search-ask-footer">
|
||||||
<div className={`input-icon mb-1`}>
|
<div className="input-icon mb-1">
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
className="form-control search-input w-100"
|
className="form-control search-input w-100"
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
.ai-search-refrences {
|
.ai-search-refrences {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
padding-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ai-search-refrences .ai-search-refrences-title {
|
.ai-search-refrences .ai-search-refrences-title {
|
||||||
|
Reference in New Issue
Block a user