// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: MIT-0
import React, { useEffect, useState } from 'react';
import PropertyFilter from "@cloudscape-design/components/property-filter";
import { useCollection } from '@cloudscape-design/collection-hooks';
import { COLUMN_DEFINITIONS, FILTERING_PROPERTIES, PROPERTY_FILTERING_I18N_CONSTANTS, DEFAULT_PREFERENCES, Preferences } from './customer-table-config';
import {
BreadcrumbGroup,
Button,
HelpPanel,
Pagination,
SpaceBetween,
Table
} from '@cloudscape-design/components';
import { CustomAppLayout } from '../common/app-layout';
import { Navigation } from '../common/navigation';
import { Notifications } from '../common/notifications';
import { TableEmptyState, TableHeader, TableNoMatchState } from '../common/table-components';
import {paginationLabels, distributionSelectionLabels} from '../../common/labels';
import { getFilterCounterText } from '../../common/tableCounterStrings';
import '../../styles/base.scss';
import { useColumnWidths } from '../common/use-column-widths';
import { useLocalStorage } from '../../common/localStorage';
import { ICustomer, ReduxRoot } from "../../interfaces";
import { useDispatch, useSelector } from "react-redux";
import { storeCustomer } from "../../redux/actions";
import { useHistory } from "react-router-dom";
import { getCustomers } from "../../data";
export const resourcesBreadcrumbs = [
{
text: 'Customers',
href: '/Customers',
},
];
export const Breadcrumbs = () => (
);
export const FullPageHeader = ({
resourceName = 'Customers',
createButtonText = 'Create customer',
...props
}) => {
const isOnlyOneSelected = props.selectedItems.length === 1;
const history = useHistory();
const onOpenClick = () => {
history.push("/CustomerDetail");
}
return (
}
{...props}
/>
);
};
export const ToolsContent = () => (
Customers}
footer={
<>
>
}
>
View all your customers.
);
function TableContent({updateTools }) {
const dispatch = useDispatch();
const token = useSelector( (state:ReduxRoot) => {
return state.reducerState.token
});
const [customers, setCustomers] = useState([]);
const [selectedCustomers, setSelectedCustomers] = useState([]);
const [columnDefinitions, saveWidths] = useColumnWidths('React-Table-Widths', COLUMN_DEFINITIONS);
const [preferences, setPreferences] = useLocalStorage('React-DistributionsTable-Preferences', DEFAULT_PREFERENCES);
const { items, actions, filteredItemsCount, collectionProps, paginationProps, propertyFilterProps } = useCollection(
customers,
{
propertyFiltering: {
filteringProperties: FILTERING_PROPERTIES,
empty: ,
noMatch: (
{
actions.setPropertyFiltering({ tokens: [], operation: 'and' });
}}
/>
),
},
pagination: { pageSize: preferences.pageSize },
sorting: { defaultState: { sortingColumn: columnDefinitions[0] } },
selection: {},
}
);
const getAllCustomers = async () => {
try {
await getCustomers(token).then(
(result: ICustomer[]) => {
setCustomers(result);
});
await Promise.resolve();
}
catch (err) {
console.log("Got Error Message: " + err.toString());
}
}
useEffect( () => {
getAllCustomers().then(() => console.log("getAllCustomers() completed."));
}, []);
const selectCustomer = (customer: ICustomer) => {
dispatch(storeCustomer(customer?customer: {}));
}
return (
}
loadingText="Loading customers"
filter={
}
pagination={}
preferences={}
selectedItems={selectedCustomers}
onSelectionChange={evt => {setSelectedCustomers(evt.detail.selectedItems); selectCustomer(evt.detail.selectedItems[0])}}
/>
);
}
function CustomerTableView() {
const [columnDefinitions, saveWidths] = useColumnWidths('React-TableServerSide-Widths', COLUMN_DEFINITIONS);
const [toolsOpen, setToolsOpen] = useState(false);
return (
}
notifications={}
breadcrumbs={}
content={
setToolsOpen(true)}
/>
}
contentType="table"
tools={}
toolsOpen={toolsOpen}
onToolsChange={({ detail}) => setToolsOpen(detail.open)}
stickyNotifications={true}
/>
);
}
export default CustomerTableView;