11import * as React from "react" ;
2- import { getter } from "@progress/kendo-react-common" ;
32import {
43 Grid ,
54 GridColumn ,
@@ -8,16 +7,14 @@ import {
87 getSelectedState ,
98 GridKeyDownEvent ,
109 getSelectedStateFromKeyDown ,
11- GridSortChangeEvent ,
12- GridPageChangeEvent ,
10+ GridSortChangeEvent
1311} from "@progress/kendo-react-grid" ;
1412import {
1513 ChartWizard ,
1614 ChartWizardDataRow ,
1715 getWizardDataFromGridSelection ,
1816} from "@progress/kendo-react-chart-wizard" ;
1917import { Button } from "@progress/kendo-react-buttons" ;
20- import { orderBy } from "@progress/kendo-data-query" ;
2118import { chartAreaStackedIcon } from "@progress/kendo-svg-icons" ;
2219import { sampleData } from "../data/shared-gd-sampleChartData" ;
2320import { useStore } from "@nanostores/react" ;
@@ -33,21 +30,14 @@ const translations = {
3330} ;
3431
3532const DATA_ITEM_KEY = "ID" ;
36- const SELECTED_FIELD = "selected" ;
37- const idGetter = getter ( DATA_ITEM_KEY ) ;
3833
3934interface SelectedState {
4035 [ id : string ] : boolean | number [ ] ;
4136}
4237
43- interface PageState {
44- skip : number ;
45- take : number ;
46- }
47-
4838const AdminView : React . FC = ( ) => {
49- const language = useStore ( selectedLanguage ) ;
50- const t = translations [ language ] ;
39+ const language = useStore ( selectedLanguage ) ;
40+ const t = translations [ language ] ;
5141 const gridRef = React . useRef < GridHandle > ( null ) ;
5242 const [ selectedState , setSelectedState ] = React . useState < SelectedState > ( { } ) ;
5343 const [ sort , setSort ] = React . useState < { field : string ; dir : "asc" | "desc" } [ ] > ( [
@@ -57,21 +47,6 @@ const AdminView: React.FC = () => {
5747 const [ chartData , setChartData ] = React . useState < ChartWizardDataRow [ ] > ( [ ] ) ;
5848 const [ top3SalesData , setTop3SalesData ] = React . useState < ChartWizardDataRow [ ] > ( [ ] ) ;
5949 const [ top3Visible , setTop3Visible ] = React . useState < boolean > ( false ) ;
60- const [ page , setPage ] = React . useState < PageState > ( { skip : 0 , take : 4 } ) ;
61-
62- const pageChange = ( event : GridPageChangeEvent ) => {
63- setPage ( {
64- skip : event . page . skip ,
65- take : event . page . take ,
66- } ) ;
67- } ;
68-
69- const data = sampleData . map ( ( item ) => ( {
70- ...item ,
71- [ SELECTED_FIELD ] : selectedState [ idGetter ( item ) ] ,
72- } ) ) ;
73-
74- const pagedData = orderBy ( data , sort ) . slice ( page . skip , page . skip + page . take ) ;
7550
7651 const onSelectionChange = ( event : GridSelectionChangeEvent ) => {
7752 const newSelectedState = getSelectedState ( {
@@ -120,8 +95,7 @@ const AdminView: React.FC = () => {
12095 const sortedTop3Sales = selectedData
12196 . sort (
12297 ( a , b ) =>
123- b . find ( ( field ) => field . field === "Total Sales" ) ?. value -
124- a . find ( ( field ) => field . field === "Total Sales" ) ?. value
98+ ( b [ "Total Sales" ] ?. value || 0 ) - ( a [ "Total Sales" ] ?. value || 0 )
12599 )
126100 . slice ( 0 , 3 ) ;
127101
@@ -156,14 +130,13 @@ const AdminView: React.FC = () => {
156130 < Grid
157131 ref = { gridRef }
158132 style = { { height : "500px" } }
159- data = { pagedData }
133+ data = { sampleData }
160134 dataItemKey = { DATA_ITEM_KEY }
161- selectedField = { SELECTED_FIELD }
162- skip = { page . skip }
163- take = { page . take }
164- total = { data . length }
135+ autoProcessData = { true }
136+ defaultSkip = { 0 }
137+ defaultTake = { 4 }
138+ total = { sampleData . length }
165139 pageable = { true }
166- onPageChange = { pageChange }
167140 selectable = { {
168141 enabled : true ,
169142 drag : true ,
@@ -178,7 +151,7 @@ const AdminView: React.FC = () => {
178151 setSort ( e . sort as { field : string ; dir : "asc" | "desc" } [ ] ) ;
179152 } }
180153 >
181- < GridColumn field = "URL" title = { t . grid . productTitle } cell = { URLImageCell } />
154+ < GridColumn field = "URL" title = { t . grid . productTitle } cells = { { data : URLImageCell } } />
182155 < GridColumn field = "Product" title = { t . grid . nameTitle } />
183156 < GridColumn field = "SKU" title = { t . grid . skuTitle } />
184157 < GridColumn field = "Category" title = { t . grid . categoryTitle } />
0 commit comments