Skip to content

Commit

Permalink
#1320 Search results
Browse files Browse the repository at this point in the history
  • Loading branch information
dcoraboeuf committed Jul 8, 2024
1 parent 6064018 commit bc7d4e9
Show file tree
Hide file tree
Showing 15 changed files with 124 additions and 59 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,6 @@ constructor(
) {
companion object {
const val SEARCH_RESULT_ITEM = "item"
const val SEARCH_RESULT_PROJECT = "project"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ class ProjectSearchProvider(
) : SearchIndexer<ProjectSearchItem>, EventListener {

override val searchResultType = SearchResultType(
feature = CoreExtensionFeature.INSTANCE.featureDescription,
id = PROJECT_SEARCH_RESULT_TYPE,
name = "Project",
description = "Project name in Ontrack"
feature = CoreExtensionFeature.INSTANCE.featureDescription,
id = PROJECT_SEARCH_RESULT_TYPE,
name = "Project",
description = "Project name in Ontrack"
)

override val indexerName: String = "Projects"
Expand All @@ -59,12 +59,15 @@ class ProjectSearchProvider(
override fun toSearchResult(id: String, score: Double, source: JsonNode): SearchResult? {
return structureService.findProjectByID(ID.of(id.toInt()))?.run {
SearchResult(
title = entityDisplayName,
description = description ?: "",
uri = uriBuilder.getEntityURI(this),
page = uriBuilder.getEntityPage(this),
accuracy = score,
type = searchResultType
title = entityDisplayName,
description = description ?: "",
uri = uriBuilder.getEntityURI(this),
page = uriBuilder.getEntityPage(this),
accuracy = score,
type = searchResultType,
data = mapOf(
SearchResult.SEARCH_RESULT_PROJECT to this,
)
)
}
}
Expand All @@ -75,10 +78,12 @@ class ProjectSearchProvider(
val project = event.getEntity<Project>(ProjectEntityType.PROJECT)
searchIndexService.createSearchIndex(this, project.asSearchItem())
}

EventFactory.UPDATE_PROJECT -> {
val project = event.getEntity<Project>(ProjectEntityType.PROJECT)
searchIndexService.updateSearchIndex(this, project.asSearchItem())
}

EventFactory.DELETE_PROJECT -> {
val projectId = event.getIntValue("PROJECT_ID")
searchIndexService.deleteSearchIndex(this, projectId)
Expand All @@ -91,19 +96,19 @@ class ProjectSearchProvider(
}

class ProjectSearchItem(
override val id: String,
val name: String,
val description: String
override val id: String,
val name: String,
val description: String
) : SearchItem {
constructor(project: Project) : this(
id = project.id.toString(),
name = project.name,
description = project.description ?: ""
id = project.id.toString(),
name = project.name,
description = project.description ?: ""
)

override val fields: Map<String, Any> = mapOf(
"name" to name,
"description" to description
"name" to name,
"description" to description
)

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import {Space, Typography} from "antd";
import Link from "next/link";

export default function SearchResultComponent({title, link, description}) {
return (
<>
<Space direction="vertical">
{
link &&
<Link href={link}>{title}</Link>
}
{
!link && title
}
<Typography.Paragraph type="secondary">{description}</Typography.Paragraph>
</Space>
</>
)
}
8 changes: 8 additions & 0 deletions ontrack-web-core/components/framework/search/branch/Result.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import SearchResultComponent from "@components/framework/search/SearchResultComponent";

export default function Result({data}) {
return <SearchResultComponent
title="TODO"
description={JSON.stringify(data)}
/>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import SearchResultComponent from "@components/framework/search/SearchResultComponent";

export default function Result({data}) {
return <SearchResultComponent
title="TODO"
description={JSON.stringify(data)}
/>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import SearchResultComponent from "@components/framework/search/SearchResultComponent";

export default function Result({data}) {
return <SearchResultComponent
title="TODO"
description={JSON.stringify(data)}
/>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import SearchResultComponent from "@components/framework/search/SearchResultComponent";

export default function Result({data}) {
return <SearchResultComponent
title="TODO"
description={JSON.stringify(data)}
/>
}
8 changes: 8 additions & 0 deletions ontrack-web-core/components/framework/search/build/Result.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import SearchResultComponent from "@components/framework/search/SearchResultComponent";

export default function Result({data}) {
return <SearchResultComponent
title="TODO"
description={JSON.stringify(data)}
/>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import SearchResultComponent from "@components/framework/search/SearchResultComponent";

export default function Result({data}) {
return <SearchResultComponent
title="TODO"
description={JSON.stringify(data)}
/>
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import SearchResultComponent from "@components/framework/search/SearchResultComponent";

export default function Result({data}) {
return {
title: data.item.commitShort,
description: data.item.commitMessage,
}
return <SearchResultComponent
title={data.item.commitShort}
description={data.item.commitMessage}
/>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import SearchResultComponent from "@components/framework/search/SearchResultComponent";

export default function Result({data}) {
return <SearchResultComponent
title="TODO"
description={JSON.stringify(data)}
/>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import SearchResultComponent from "@components/framework/search/SearchResultComponent";
import ProjectLink from "@components/projects/ProjectLink";

export default function Result({data}) {
return <SearchResultComponent
title={<ProjectLink project={data.project}/>}
description=""
/>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import SearchResultComponent from "@components/framework/search/SearchResultComponent";

export default function Result({data}) {
return <SearchResultComponent
title="TODO"
description={JSON.stringify(data)}
/>
}
38 changes: 2 additions & 36 deletions ontrack-web-core/components/search/SearchResult.js
Original file line number Diff line number Diff line change
@@ -1,43 +1,9 @@
import {Space, Typography} from "antd";
import Link from "next/link";
import {callDynamicFunction} from "@components/common/DynamicFunction";
import {useEffect, useState} from "react";
import {Dynamic} from "@components/common/Dynamic";

export default function SearchResult({type, result}) {

const [typedResult, setTypedResult] = useState({
title: '',
link: '',
description: ''
})

useEffect(() => {

const loadTypedResult = async () => {
const data = await callDynamicFunction(`framework/search/${type.id}/Result`, result);
setTypedResult(data)
}

// noinspection JSIgnoredPromiseFromCall
loadTypedResult()
}, [type, result])


return (
<>
{
typedResult &&
<Space direction="vertical">
{
typedResult.link &&
<Link href={typedResult.link}>{typedResult.title}</Link>
}
{
!typedResult.link && typedResult.title
}
<Typography.Paragraph type="secondary">{typedResult.description}</Typography.Paragraph>
</Space>
}
<Dynamic path={`framework/search/${type.id}/Result`} props={result}/>
</>
)
}
1 change: 0 additions & 1 deletion ontrack-web-core/components/search/SearchView.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import {homeUri} from "@components/common/Links";
import {CloseCommand} from "@components/common/Commands";
import {homeBreadcrumbs} from "@components/common/Breadcrumbs";
import MainPage from "@components/layouts/MainPage";
import {useEffect, useState} from "react";
import {Space} from "antd";
import SearchTypeSection from "@components/search/SearchTypeSection";

Expand Down

0 comments on commit bc7d4e9

Please sign in to comment.