Skip to content

Commit d1d32ea

Browse files
committed
Demos: fix types
1 parent 3b7124d commit d1d32ea

File tree

9 files changed

+67
-37
lines changed

9 files changed

+67
-37
lines changed

apps/demos/Demos/CardView/ColumnHeaderFilter/React/App.tsx

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,7 @@ import React from 'react';
33
import CardView, { Column, HeaderFilter, ColumnHeaderFilter, ColumnHeaderFilterSearch } from 'devextreme-react/card-view';
44

55
import { orders } from './data.ts';
6-
import type { Order } from './data.ts';
7-
8-
type FilterValue = [string, string, number];
9-
interface FilterData {
10-
text: string;
11-
value: FilterValue | FilterValue[];
12-
}
6+
import type { Order, OrderFilter } from './data.ts';
137

148
function getOrderDay(rowData: Order) {
159
return new Date(rowData.OrderDate).getDay();
@@ -26,7 +20,7 @@ function calculateOrderDateFilterExpression(
2620
return this.defaultCalculateFilterExpression(value, selectedFilterOperations, target);
2721
}
2822

29-
const saleAmountHeaderFilterDataSource: FilterData[] = [
23+
const saleAmountHeaderFilterDataSource: OrderFilter[] = [
3024
{
3125
text: 'Less than $3000',
3226
value: ['SaleAmount', '<', 3000],

apps/demos/Demos/CardView/ColumnHeaderFilter/React/data.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import type { FilterBuilderTypes } from 'devextreme-react/filter-builder';
2+
13
export interface Order {
24
OrderNumber: number;
35
SaleAmount: number;
@@ -7,6 +9,13 @@ export interface Order {
79
OrderDate: string;
810
}
911

12+
export type OrderFilterValue<T extends keyof Order = keyof Order> = [T, FilterBuilderTypes.FilterOperation, Order[T]];
13+
14+
export interface OrderFilter {
15+
text: string;
16+
value: OrderFilterValue | OrderFilterValue[];
17+
}
18+
1019
export const orders: Order[] = [{
1120
OrderNumber: 35703,
1221
SaleAmount: 11800,

apps/demos/Demos/CardView/FilterPanel/React/App.tsx

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,7 @@ import React from 'react';
33
import CardView, { Column, HeaderFilter, ColumnHeaderFilter, FilterPanel, FilterBuilder } from 'devextreme-react/card-view';
44

55
import { orders } from './data.ts';
6-
import type { Order } from './data.ts';
7-
8-
type FilterValue = [string, string, number];
9-
interface FilterData {
10-
text: string;
11-
value: FilterValue | FilterValue[];
12-
}
6+
import type { Order, OrderFilter } from './data.ts';
137

148
function getOrderDay({ OrderDate }: Order): number {
159
return (new Date(OrderDate)).getDay();
@@ -28,7 +22,7 @@ const customOperations = [{
2822
},
2923
}];
3024

31-
const saleAmountHeaderFilterDataSource: FilterData[] = [
25+
const saleAmountHeaderFilterDataSource: OrderFilter[] = [
3226
{
3327
text: 'Less than $3000',
3428
value: ['SaleAmount', '<', 3000],

apps/demos/Demos/CardView/FilterPanel/React/data.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import type { FilterBuilderTypes } from 'devextreme-react/filter-builder';
2+
13
export interface Order {
24
ID: number;
35
OrderNumber: number;
@@ -9,6 +11,13 @@ export interface Order {
911
Terms: string;
1012
}
1113

14+
export type OrderFilterValue<T extends keyof Order = keyof Order> = [T, FilterBuilderTypes.FilterOperation, Order[T]];
15+
16+
export interface OrderFilter {
17+
text: string;
18+
value: OrderFilterValue | OrderFilterValue[];
19+
}
20+
1221
export const orders: Order[] = [{
1322
ID: 1,
1423
OrderNumber: 35703,

apps/demos/Demos/FilterBuilder/Customization/React/helpers.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
1+
import type { FilterBuilderTypes } from 'devextreme-react/filter-builder';
2+
3+
type FilterValue = FilterBuilderTypes.Properties['value'];
4+
15
const TAB_SIZE = 4;
26

3-
function prepareItem(item: any, spaces: number) {
7+
function prepareItem(item: FilterValue, spaces: number): string {
48
return Array.isArray(item[0])
59
? formatValue(item, spaces + TAB_SIZE)
610
: JSON.stringify(item);
711
}
812

9-
export function formatValue(value: any, spaces: number = TAB_SIZE) {
10-
if (value && Array.isArray(value[0])) {
13+
export function formatValue(value: FilterValue, spaces: number = TAB_SIZE): string {
14+
if (value && Array.isArray(value) && Array.isArray(value[0])) {
1115
const formattedValue = value
12-
.map((item: any) => prepareItem(item, spaces))
16+
.map((item) => prepareItem(item, spaces))
1317
.join(`,${getLineBreak(spaces)}`);
1418

1519
return `[${getLineBreak(spaces)}${formattedValue}${getLineBreak(spaces - TAB_SIZE)}]`;

apps/demos/Demos/Sortable/Kanban/React/App.tsx

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import ScrollView from 'devextreme-react/scroll-view';
44
import Sortable from 'devextreme-react/sortable';
55
import type { SortableTypes } from 'devextreme-react/sortable';
66

7-
import { tasks as taskList, employees } from './data.ts';
8-
import type { Employee, Task } from './data.ts';
7+
import { tasks as taskList, employees, taskStatuses } from './data.ts';
8+
import type { Employee, Task, TaskStatus } from './data.ts';
99

1010
function getLists(statusArray: string[], taskArray: Task[]): Task[][] {
1111
const tasksMap = taskArray.reduce<Record<string, Task[]>>((result, task) => {
@@ -27,23 +27,22 @@ function getEmployeesMap(employeesArray: Employee[]): Record<string, string> {
2727
}, {});
2828
}
2929

30-
function removeItem(array: any[], removeIdx: number) {
30+
function removeItem<T>(array: T[], removeIdx: number): T[] {
3131
return array.filter((_, idx) => idx !== removeIdx);
3232
}
3333

34-
function insertItem(array: any[], item: any, insertIdx: number) {
34+
function insertItem<T>(array: T[], item: T, insertIdx: number): T[] {
3535
const newArray = [...array];
3636
newArray.splice(insertIdx, 0, item);
3737
return newArray;
3838
}
3939

40-
function reorderItem(array: any[], fromIdx: number, toIdx: number) {
40+
function reorderItem<T>(array: T[], fromIdx: number, toIdx: number): T[] {
4141
const item = array[fromIdx];
42-
const result = removeItem(array, fromIdx);
43-
return insertItem(result, item, toIdx);
42+
const result = removeItem<T>(array, fromIdx);
43+
return insertItem<T>(result, item, toIdx);
4444
}
4545

46-
const taskStatuses = ['Not Started', 'Need Assistance', 'In Progress', 'Deferred', 'Completed'];
4746
const employeesRecord = getEmployeesMap(employees);
4847

4948
const Card: React.FC<{ task: Task, employeesMap: Record<string, string> }> = ({
@@ -87,12 +86,12 @@ const List: React.FC<{
8786
</div>;
8887

8988
function App() {
90-
const [statuses, setStatuses] = useState(taskStatuses);
91-
const [lists, setLists] = useState(getLists(taskStatuses, taskList));
89+
const [statuses, setStatuses] = useState<TaskStatus[]>(taskStatuses);
90+
const [lists, setLists] = useState<Task[][]>(getLists(taskStatuses, taskList));
9291

9392
const onListReorder = useCallback(({ fromIndex, toIndex }) => {
94-
setLists((state) => reorderItem(state, fromIndex, toIndex));
95-
setStatuses((state) => reorderItem(state, fromIndex, toIndex));
93+
setLists((state) => reorderItem<Task[]>(state, fromIndex, toIndex));
94+
setStatuses((state) => reorderItem<TaskStatus>(state, fromIndex, toIndex));
9695
}, []);
9796

9897
const onTaskDrop = useCallback(
@@ -102,8 +101,8 @@ function App() {
102101
const updatedLists = [...lists];
103102

104103
const item = updatedLists[fromData][fromIndex];
105-
updatedLists[fromData] = removeItem(updatedLists[fromData], fromIndex);
106-
updatedLists[toData] = insertItem(updatedLists[toData], item, toIndex);
104+
updatedLists[fromData] = removeItem<Task>(updatedLists[fromData], fromIndex);
105+
updatedLists[toData] = insertItem<Task>(updatedLists[toData], item, toIndex);
107106

108107
setLists(updatedLists);
109108
},

apps/demos/Demos/Sortable/Kanban/React/data.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,23 @@ export interface Employee {
33
Name: string,
44
}
55

6+
export type TaskStatus = 'Not Started' | 'Need Assistance' | 'In Progress' | 'Deferred' | 'Completed';
7+
68
export interface Task {
79
Task_ID: number,
810
Task_Assigned_Employee_ID: number,
911
Task_Owner_ID: number,
1012
Task_Subject: string,
1113
Task_Start_Date: string | Date,
1214
Task_Due_Date: string | Date,
13-
Task_Status: string,
15+
Task_Status: TaskStatus,
1416
Task_Priority: number,
1517
Task_Completion: number,
1618
Task_Parent_ID: number,
1719
}
20+
21+
export const taskStatuses: TaskStatus[] = ['Not Started', 'Need Assistance', 'In Progress', 'Deferred', 'Completed'];
22+
1823
export const tasks: Task[] = [{
1924
Task_ID: 1,
2025
Task_Assigned_Employee_ID: 1,

apps/demos/Demos/TreeList/MultipleRowSelection/React/App.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { TreeList, Selection, Column } from 'devextreme-react/tree-list';
88
import type { TreeListTypes } from 'devextreme-react/tree-list';
99

1010
import { employees, selectionModeLabel } from './data.ts';
11+
import type { Employee } from './data.ts';
1112

1213
const expandedRowKeys = [1, 2, 10];
1314
const emptySelectedText = 'Nobody has been selected';
@@ -19,7 +20,7 @@ const App = () => {
1920
const [selectionMode, setSelectionMode] = useState('all');
2021
const [selectedEmployeeNames, setSelectedEmployeeNames] = useState(emptySelectedText);
2122

22-
const getEmployeeNames = useCallback((employeeList: any[]) => {
23+
const getEmployeeNames = useCallback((employeeList: Employee[]) => {
2324
if (employeeList.length > 0) {
2425
return employeeList.map((employee) => employee.Full_Name).join(', ');
2526
}

apps/demos/Demos/TreeList/MultipleRowSelection/React/data.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,19 @@
1-
export const employees = [{
1+
export interface Employee {
2+
ID: number;
3+
Head_ID: number;
4+
Full_Name: string;
5+
Prefix: string;
6+
Title: string;
7+
City: string;
8+
State: string;
9+
Email: string;
10+
Skype: string;
11+
Mobile_Phone: string;
12+
Birth_Date: string;
13+
Hire_Date: string;
14+
}
15+
16+
export const employees: Employee[] = [{
217
ID: 1,
318
Head_ID: 0,
419
Full_Name: 'John Heart',

0 commit comments

Comments
 (0)