From f146903eadb6f29deb0b1c63dff2feb1dde730ac Mon Sep 17 00:00:00 2001 From: Andrei Sergeev Date: Mon, 13 Jul 2026 13:13:09 +0400 Subject: [PATCH 1/2] Add DataGrid - Semantic Search Demo (#34098) Co-authored-by: markallenramirez (cherry picked from commit 2818bcf60e679a8f0bdbdf095892a441c06dbd7f) --- .../Angular/app/app.component.html | 34 ++++++ .../Angular/app/app.component.ts | 77 +++++++++++++ .../SemanticSearch/Angular/index.html | 26 +++++ .../DataGrid/SemanticSearch/React/App.tsx | 84 +++++++++++++++ .../DataGrid/SemanticSearch/React/index.html | 23 ++++ .../DataGrid/SemanticSearch/React/index.tsx | 9 ++ .../DataGrid/SemanticSearch/ReactJs/App.js | 101 ++++++++++++++++++ .../SemanticSearch/ReactJs/index.html | 39 +++++++ .../DataGrid/SemanticSearch/ReactJs/index.js | 5 + .../Demos/DataGrid/SemanticSearch/Vue/App.vue | 99 +++++++++++++++++ .../DataGrid/SemanticSearch/Vue/index.html | 29 +++++ .../DataGrid/SemanticSearch/Vue/index.ts | 4 + .../DataGrid/SemanticSearch/jQuery/index.html | 19 ++++ .../DataGrid/SemanticSearch/jQuery/index.js | 88 +++++++++++++++ apps/demos/menuMeta.json | 51 +++++++++ ...rid-SemanticSearch (fluent.blue.light).png | Bin 0 -> 64920 bytes ...d-SemanticSearch (material.blue.light).png | Bin 0 -> 58714 bytes apps/demos/utils/server/csp-server.js | 3 + 18 files changed, 691 insertions(+) create mode 100644 apps/demos/Demos/DataGrid/SemanticSearch/Angular/app/app.component.html create mode 100644 apps/demos/Demos/DataGrid/SemanticSearch/Angular/app/app.component.ts create mode 100644 apps/demos/Demos/DataGrid/SemanticSearch/Angular/index.html create mode 100644 apps/demos/Demos/DataGrid/SemanticSearch/React/App.tsx create mode 100644 apps/demos/Demos/DataGrid/SemanticSearch/React/index.html create mode 100644 apps/demos/Demos/DataGrid/SemanticSearch/React/index.tsx create mode 100644 apps/demos/Demos/DataGrid/SemanticSearch/ReactJs/App.js create mode 100644 apps/demos/Demos/DataGrid/SemanticSearch/ReactJs/index.html create mode 100644 apps/demos/Demos/DataGrid/SemanticSearch/ReactJs/index.js create mode 100644 apps/demos/Demos/DataGrid/SemanticSearch/Vue/App.vue create mode 100644 apps/demos/Demos/DataGrid/SemanticSearch/Vue/index.html create mode 100644 apps/demos/Demos/DataGrid/SemanticSearch/Vue/index.ts create mode 100644 apps/demos/Demos/DataGrid/SemanticSearch/jQuery/index.html create mode 100644 apps/demos/Demos/DataGrid/SemanticSearch/jQuery/index.js create mode 100644 apps/demos/testing/etalons/DataGrid-SemanticSearch (fluent.blue.light).png create mode 100644 apps/demos/testing/etalons/DataGrid-SemanticSearch (material.blue.light).png diff --git a/apps/demos/Demos/DataGrid/SemanticSearch/Angular/app/app.component.html b/apps/demos/Demos/DataGrid/SemanticSearch/Angular/app/app.component.html new file mode 100644 index 000000000000..e6096d1bdcc6 --- /dev/null +++ b/apps/demos/Demos/DataGrid/SemanticSearch/Angular/app/app.component.html @@ -0,0 +1,34 @@ + + + + + +
+
+ Similarity Factor: + +
+
+
+ +
+ + + +
diff --git a/apps/demos/Demos/DataGrid/SemanticSearch/Angular/app/app.component.ts b/apps/demos/Demos/DataGrid/SemanticSearch/Angular/app/app.component.ts new file mode 100644 index 000000000000..af8b03f0710f --- /dev/null +++ b/apps/demos/Demos/DataGrid/SemanticSearch/Angular/app/app.component.ts @@ -0,0 +1,77 @@ +import { bootstrapApplication } from '@angular/platform-browser'; +import { Component, enableProdMode, provideZoneChangeDetection } from '@angular/core'; +import { DxDataGridModule, type DxDataGridTypes } from 'devextreme-angular/ui/data-grid'; +import { DxNumberBoxModule, type DxNumberBoxTypes } from 'devextreme-angular/ui/number-box'; +import { DataSource } from 'devextreme-angular/common/data'; +import * as AspNetData from 'devextreme-aspnet-data-nojquery'; + +if (!/localhost/.test(document.location.host)) { + enableProdMode(); +} + +let modulePrefix = ''; +// @ts-ignore +if (window && window.config?.packageConfigPaths) { + modulePrefix = '/app'; +} + +const url = 'https://js.devexpress.com/Demos/NetCore/api/DataGridSemanticSearch'; + +@Component({ + selector: 'demo-app', + templateUrl: `.${modulePrefix}/app.component.html`, + imports: [ + DxDataGridModule, + DxNumberBoxModule, + ], +}) +export class AppComponent { + searchValue = ''; + + similarityFactor = 0.31; + + dataSource: DataSource; + + constructor() { + this.dataSource = new DataSource({ + store: AspNetData.createStore({ + key: 'ID', + loadUrl: `${url}/Get`, + loadParams: { + searchValue: () => this.searchValue, + similarityFactor: () => this.similarityFactor, + }, + onBeforeSend: (method, ajaxOptions) => { + ajaxOptions.xhrFields = { withCredentials: true }; + }, + }), + }); + } + + onSimilarityFactorChanged(e: DxNumberBoxTypes.ValueChangedEvent): void { + this.similarityFactor = e.value; + if (this.searchValue !== '') { + this.dataSource.reload(); + } + } + + onEditorPreparing(e: DxDataGridTypes.EditorPreparingEvent): void { + if (e.parentType === 'searchPanel') { + let searchTimeout: ReturnType | undefined; + e.editorOptions.onValueChanged = (args: { value: string }) => { + clearTimeout(searchTimeout); + searchTimeout = setTimeout(() => { + this.searchValue = args.value; + this.dataSource.reload(); + }, e.updateValueTimeout); + }; + e.editorOptions.placeholder = 'Try: clothing'; + } + } +} + +bootstrapApplication(AppComponent, { + providers: [ + provideZoneChangeDetection({ eventCoalescing: true, runCoalescing: true }), + ], +}); diff --git a/apps/demos/Demos/DataGrid/SemanticSearch/Angular/index.html b/apps/demos/Demos/DataGrid/SemanticSearch/Angular/index.html new file mode 100644 index 000000000000..1ab1fb54a1df --- /dev/null +++ b/apps/demos/Demos/DataGrid/SemanticSearch/Angular/index.html @@ -0,0 +1,26 @@ + + + + DevExtreme Demo + + + + + + + + + + + + + + + +
+ Loading... +
+ + diff --git a/apps/demos/Demos/DataGrid/SemanticSearch/React/App.tsx b/apps/demos/Demos/DataGrid/SemanticSearch/React/App.tsx new file mode 100644 index 000000000000..21ab47f66901 --- /dev/null +++ b/apps/demos/Demos/DataGrid/SemanticSearch/React/App.tsx @@ -0,0 +1,84 @@ +import React, { useCallback, useRef, useMemo } from 'react'; +import DataGrid, { Column, Scrolling, SearchPanel, Toolbar, Item, type DataGridTypes } from 'devextreme-react/data-grid'; +import NumberBox, { type NumberBoxTypes } from 'devextreme-react/number-box'; +import { DataSource } from 'devextreme-react/common/data'; +import { createStore } from 'devextreme-aspnet-data-nojquery'; + +const url = 'https://js.devexpress.com/Demos/NetCore/api/DataGridSemanticSearch'; +const numberBoxAttr = { 'aria-label': 'Similarity Factor' }; + +const App = () => { + const searchValueRef = useRef(''); + const similarityFactorRef = useRef(0.31); + + const dataSource = useMemo(() => new DataSource({ + store: createStore({ + key: 'ID', + loadUrl: `${url}/Get`, + loadParams: { + searchValue: () => searchValueRef.current, + similarityFactor: () => similarityFactorRef.current, + }, + onBeforeSend(method, ajaxOptions) { + ajaxOptions.xhrFields = { withCredentials: true }; + }, + }), + }), []); + + const onSimilarityFactorChanged = useCallback(({ value }: NumberBoxTypes.ValueChangedEvent) => { + similarityFactorRef.current = value; + if (searchValueRef.current !== '') { + dataSource.reload(); + } + }, [dataSource]); + + const onEditorPreparing = useCallback((e: DataGridTypes.EditorPreparingEvent) => { + if (e.parentType === 'searchPanel') { + let searchTimeout: ReturnType | undefined; + e.editorOptions.onValueChanged = (args: { value: string }) => { + clearTimeout(searchTimeout); + searchTimeout = setTimeout(() => { + searchValueRef.current = args.value; + e.component.getDataSource().reload(); + }, e.updateValueTimeout); + }; + e.editorOptions.placeholder = 'Try: clothing'; + } + }, []); + + return ( + + + + + +
+ Similarity Factor: + +
+
+ +
+ + + +
+ ); +}; + +export default App; diff --git a/apps/demos/Demos/DataGrid/SemanticSearch/React/index.html b/apps/demos/Demos/DataGrid/SemanticSearch/React/index.html new file mode 100644 index 000000000000..cfb9b3aa6769 --- /dev/null +++ b/apps/demos/Demos/DataGrid/SemanticSearch/React/index.html @@ -0,0 +1,23 @@ + + + + DevExtreme Demo + + + + + + + + + + + + +
+
+
+ + diff --git a/apps/demos/Demos/DataGrid/SemanticSearch/React/index.tsx b/apps/demos/Demos/DataGrid/SemanticSearch/React/index.tsx new file mode 100644 index 000000000000..8acbec4b6179 --- /dev/null +++ b/apps/demos/Demos/DataGrid/SemanticSearch/React/index.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; + +import App from './App.tsx'; + +ReactDOM.render( + , + document.getElementById('app'), +); diff --git a/apps/demos/Demos/DataGrid/SemanticSearch/ReactJs/App.js b/apps/demos/Demos/DataGrid/SemanticSearch/ReactJs/App.js new file mode 100644 index 000000000000..80e0bc6e4f21 --- /dev/null +++ b/apps/demos/Demos/DataGrid/SemanticSearch/ReactJs/App.js @@ -0,0 +1,101 @@ +import React, { useCallback, useRef, useMemo } from 'react'; +import DataGrid, { + Column, + Scrolling, + SearchPanel, + Toolbar, + Item, +} from 'devextreme-react/data-grid'; +import NumberBox from 'devextreme-react/number-box'; +import { DataSource } from 'devextreme-react/common/data'; +import { createStore } from 'devextreme-aspnet-data-nojquery'; + +const url = 'https://js.devexpress.com/Demos/NetCore/api/DataGridSemanticSearch'; +const numberBoxAttr = { 'aria-label': 'Similarity Factor' }; +const App = () => { + const searchValueRef = useRef(''); + const similarityFactorRef = useRef(0.31); + const dataSource = useMemo( + () => + new DataSource({ + store: createStore({ + key: 'ID', + loadUrl: `${url}/Get`, + loadParams: { + searchValue: () => searchValueRef.current, + similarityFactor: () => similarityFactorRef.current, + }, + onBeforeSend(method, ajaxOptions) { + ajaxOptions.xhrFields = { withCredentials: true }; + }, + }), + }), + [], + ); + const onSimilarityFactorChanged = useCallback( + ({ value }) => { + similarityFactorRef.current = value; + if (searchValueRef.current !== '') { + dataSource.reload(); + } + }, + [dataSource], + ); + const onEditorPreparing = useCallback((e) => { + if (e.parentType === 'searchPanel') { + let searchTimeout; + e.editorOptions.onValueChanged = (args) => { + clearTimeout(searchTimeout); + searchTimeout = setTimeout(() => { + searchValueRef.current = args.value; + e.component.getDataSource().reload(); + }, e.updateValueTimeout); + }; + e.editorOptions.placeholder = 'Try: clothing'; + } + }, []); + return ( + + + + + +
+ Similarity Factor: + +
+
+ +
+ + + +
+ ); +}; +export default App; diff --git a/apps/demos/Demos/DataGrid/SemanticSearch/ReactJs/index.html b/apps/demos/Demos/DataGrid/SemanticSearch/ReactJs/index.html new file mode 100644 index 000000000000..d6d83f735a76 --- /dev/null +++ b/apps/demos/Demos/DataGrid/SemanticSearch/ReactJs/index.html @@ -0,0 +1,39 @@ + + + + DevExtreme Demo + + + + + + + + + + + + +
+
+
+ + diff --git a/apps/demos/Demos/DataGrid/SemanticSearch/ReactJs/index.js b/apps/demos/Demos/DataGrid/SemanticSearch/ReactJs/index.js new file mode 100644 index 000000000000..b853e0be8242 --- /dev/null +++ b/apps/demos/Demos/DataGrid/SemanticSearch/ReactJs/index.js @@ -0,0 +1,5 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import App from './App.js'; + +ReactDOM.render(, document.getElementById('app')); diff --git a/apps/demos/Demos/DataGrid/SemanticSearch/Vue/App.vue b/apps/demos/Demos/DataGrid/SemanticSearch/Vue/App.vue new file mode 100644 index 000000000000..795b3932ebbe --- /dev/null +++ b/apps/demos/Demos/DataGrid/SemanticSearch/Vue/App.vue @@ -0,0 +1,99 @@ + + diff --git a/apps/demos/Demos/DataGrid/SemanticSearch/Vue/index.html b/apps/demos/Demos/DataGrid/SemanticSearch/Vue/index.html new file mode 100644 index 000000000000..b21c5e373a7a --- /dev/null +++ b/apps/demos/Demos/DataGrid/SemanticSearch/Vue/index.html @@ -0,0 +1,29 @@ + + + + DevExtreme Demo + + + + + + + + + + + + + + +
+
+
+ + diff --git a/apps/demos/Demos/DataGrid/SemanticSearch/Vue/index.ts b/apps/demos/Demos/DataGrid/SemanticSearch/Vue/index.ts new file mode 100644 index 000000000000..684d04215d72 --- /dev/null +++ b/apps/demos/Demos/DataGrid/SemanticSearch/Vue/index.ts @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './App.vue'; + +createApp(App).mount('#app'); diff --git a/apps/demos/Demos/DataGrid/SemanticSearch/jQuery/index.html b/apps/demos/Demos/DataGrid/SemanticSearch/jQuery/index.html new file mode 100644 index 000000000000..5aa7314c6053 --- /dev/null +++ b/apps/demos/Demos/DataGrid/SemanticSearch/jQuery/index.html @@ -0,0 +1,19 @@ + + + + DevExtreme Demo + + + + + + + + + + +
+
+
+ + diff --git a/apps/demos/Demos/DataGrid/SemanticSearch/jQuery/index.js b/apps/demos/Demos/DataGrid/SemanticSearch/jQuery/index.js new file mode 100644 index 000000000000..6b3e8c43a585 --- /dev/null +++ b/apps/demos/Demos/DataGrid/SemanticSearch/jQuery/index.js @@ -0,0 +1,88 @@ +$(() => { + const url = 'https://js.devexpress.com/Demos/NetCore/api/DataGridSemanticSearch'; + + let searchValue = ''; + let similarityFactor = 0.31; + + const dataGrid = $('#gridContainer').dxDataGrid({ + dataSource: DevExpress.data.AspNet.createStore({ + key: 'ID', + loadUrl: `${url}/Get`, + loadParams: { + searchValue: () => searchValue, + similarityFactor: () => similarityFactor, + }, + onBeforeSend(method, ajaxOptions) { + ajaxOptions.xhrFields = { withCredentials: true }; + }, + }), + showBorders: true, + remoteOperations: true, + height: 600, + columns: [{ + dataField: 'ID', + width: 50, + }, { + dataField: 'Name', + }, { + dataField: 'Description', + }], + scrolling: { + mode: 'virtual', + }, + searchPanel: { + visible: true, + }, + toolbar: { + items: [ + { + location: 'before', + template() { + const container = $('
') + .css('display', 'flex') + .css('align-items', 'center'); + + const label = $('') + .text('Similarity Factor:') + .css('margin-right', '8px'); + + const editor = $('
') + .dxNumberBox({ + value: similarityFactor, + min: 0, + max: 1, + format: '0.00', + step: 0.05, + showSpinButtons: true, + inputAttr: { 'aria-label': 'Similarity Factor' }, + onValueChanged(e) { + similarityFactor = e.value; + if (searchValue !== '') { + dataGrid.getDataSource().reload(); + } + }, + }); + + return container.append(label, editor); + }, + }, + { + name: 'searchPanel', + }, + ], + }, + onEditorPreparing(e) { + if (e.parentType === 'searchPanel') { + let searchTimeout; + e.editorOptions.onValueChanged = (args) => { + clearTimeout(searchTimeout); + searchTimeout = setTimeout(() => { + searchValue = args.value; + e.component.getDataSource().reload(); + }, e.updateValueTimeout); + }; + e.editorOptions.placeholder = 'Try: clothing'; + } + }, + }).dxDataGrid('instance'); +}); diff --git a/apps/demos/menuMeta.json b/apps/demos/menuMeta.json index 615934456789..f761c41660c8 100644 --- a/apps/demos/menuMeta.json +++ b/apps/demos/menuMeta.json @@ -37,6 +37,35 @@ "Modules": "openai" } ] + }, + { + "Name": "Semantic Search", + "Equivalents": "", + "Demos": [ + { + "Title": "Semantic Search", + "Name": "SemanticSearch", + "Widget": "DataGrid", + "Badge": "AI", + "DemoType": "Web", + "Modules": "devextreme-aspnet-data-nojquery", + "MvcAdditionalFiles": [ + "/DataProviders/SmartFilterProvider.cs", + "/Controllers/ApiControllers/DataGridSemanticSearchController.cs", + "/Services/EmbeddingsInitializerService.cs", + "/Models/DataGrid/DictionaryItem.cs", + "/Models/SampleData/DictionaryItems.cs" + ], + "BackendFiles": [ + "SmartFilterProvider.cs", + "DataGridSemanticSearchController.cs", + "EmbeddingsInitializerService.cs", + "DictionaryItem.cs" + ], + "TopLevel": true, + "Equivalents": "AI-Powered Search, Smart Search, Context-Aware Search, Natural Language Search, AI Search, Semantic Retrieval, Similarity Search" + } + ] } ] }, @@ -312,6 +341,28 @@ "/Models/SampleData/DataGridEmployees.cs" ], "DemoType": "Web" + }, + { + "Title": "Semantic Search", + "Name": "SemanticSearch", + "Widget": "DataGrid", + "Badge": "AI", + "DemoType": "Web", + "Modules": "devextreme-aspnet-data-nojquery", + "MvcAdditionalFiles": [ + "/DataProviders/SmartFilterProvider.cs", + "/Controllers/ApiControllers/DataGridSemanticSearchController.cs", + "/Services/EmbeddingsInitializerService.cs", + "/Models/DataGrid/DictionaryItem.cs", + "/Models/SampleData/DictionaryItems.cs" + ], + "BackendFiles": [ + "SmartFilterProvider.cs", + "DataGridSemanticSearchController.cs", + "EmbeddingsInitializerService.cs", + "DictionaryItem.cs" + ], + "Equivalents": "AI-Powered Search, Smart Search, Context-Aware Search, Natural Language Search, AI Search, Semantic Retrieval, Similarity Search" } ] }, diff --git a/apps/demos/testing/etalons/DataGrid-SemanticSearch (fluent.blue.light).png b/apps/demos/testing/etalons/DataGrid-SemanticSearch (fluent.blue.light).png new file mode 100644 index 0000000000000000000000000000000000000000..826709c5a1e163e3acb637174dd36c4358c4bf68 GIT binary patch literal 64920 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 H`-6W0H>it+ literal 0 HcmV?d00001 diff --git a/apps/demos/testing/etalons/DataGrid-SemanticSearch (material.blue.light).png b/apps/demos/testing/etalons/DataGrid-SemanticSearch (material.blue.light).png new file mode 100644 index 0000000000000000000000000000000000000000..7c2ab3efa148471d4ce5a67c703b22fe4eedb05e GIT binary patch literal 58714 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 z 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 Date: Thu, 16 Jul 2026 16:15:38 +0400 Subject: [PATCH 2/2] DataGrid: Add Semantic Search Demo Description (#34195) (cherry picked from commit f7cc42ca33352639ee7e60b2684fb4191cd58b35) --- .../DataGrid/SemanticSearch/description.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 apps/demos/Demos/DataGrid/SemanticSearch/description.md diff --git a/apps/demos/Demos/DataGrid/SemanticSearch/description.md b/apps/demos/Demos/DataGrid/SemanticSearch/description.md new file mode 100644 index 000000000000..d94a4bea43a9 --- /dev/null +++ b/apps/demos/Demos/DataGrid/SemanticSearch/description.md @@ -0,0 +1,19 @@ +This demo incorporates server-side semantic search into the [DevExtreme DataGrid](/Documentation/Guide/UI_Components/DataGrid/Overview/). Semantic search finds results based on meaning rather than exact wording, understanding the context and intent behind a question or phrase. This allows your DevExtreme-powered app to deliver more relevant answers by connecting related concepts, even if exact words differ. + +To review benefits of this feature, search for dictionary entries and their descriptions and use synonyms or generic descriptions instead of exact search strings (such as "clothing" instead of a specific product name). You can fine-tune search results: use the Similarity Factor editor to change the search precision. + + +[note] + +AI services used for this demo have been rate and data limited. As such, you may experience performance-related delays when exploring the capabilities of the DataGrid AI Assistant. + +When connected to your own AI model/service without rate and data limits, semantic search will perform seamlessly, without artificial delays. Note that DevExtreme does not offer an AI REST API and does not ship any built-in LLMs/SLMs. + +[/note] + +This demo configures semantic filtering on the server (using [AzureOpenAI embeddings](https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/embeddings?tabs=csharp)). You can incorporate server-side semantic search using built-in DataGrid visual elements. In this demo, each request returns filtered data using two parameters: + +- A search value (entered in the built-in [search panel](/Documentation/ApiReference/UI_Components/dxDataGrid/Configuration/searchPanel/)) +- A similarity factor (can be modified via a custom [toolbar](/Documentation/ApiReference/UI_Components/dxDataGrid/Configuration/toolbar/) item) + +After you enter a query in the search panel, the DevExtreme DataGrid passes the new search value to the backend and loads the filtered data set.