persist middleware
This commit is contained in:
parent
9059f2013e
commit
e434d1c1c2
@ -108,15 +108,7 @@ const Discounts: React.FC = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
let { discountsArray, discountsArraySet } = useStore<StoreState>((state) => state);
|
const { discountsArray, discountsArraySet } = useStore<StoreState>((state) => state);
|
||||||
|
|
||||||
const getDiscounts = localStorage.getItem("discounts");
|
|
||||||
const store = useStore( (state) => state );
|
|
||||||
|
|
||||||
if( getDiscounts && !store.discountsArray.length ) {
|
|
||||||
const rows:Array<DiscountProps> = JSON.parse(getDiscounts);
|
|
||||||
if( rows.length ) { store.discountsArraySet( rows ); };
|
|
||||||
}
|
|
||||||
|
|
||||||
const { discountsActiveArray, discountsActiveArraySet } = useStore<StoreState>((state) => state);
|
const { discountsActiveArray, discountsActiveArraySet } = useStore<StoreState>((state) => state);
|
||||||
let discountsActiveArrayUpdated:Array<number>;
|
let discountsActiveArrayUpdated:Array<number>;
|
||||||
@ -132,19 +124,11 @@ const Discounts: React.FC = () => {
|
|||||||
|
|
||||||
if( JSON.stringify(discountsActiveArray) != JSON.stringify(discountsActiveArrayUpdated) ) {
|
if( JSON.stringify(discountsActiveArray) != JSON.stringify(discountsActiveArrayUpdated) ) {
|
||||||
discountsActiveArraySet( discountsActiveArrayUpdated );
|
discountsActiveArraySet( discountsActiveArrayUpdated );
|
||||||
localStorage.setItem("activeDiscounts", JSON.stringify( discountsActiveArrayUpdated ));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
findActiveDiscounts();
|
findActiveDiscounts();
|
||||||
|
|
||||||
const getActiveDiscounts = localStorage.getItem("activeDiscounts");
|
|
||||||
|
|
||||||
if( getActiveDiscounts && !store.discountsArray.length ) {
|
|
||||||
const rows:Array<number> = JSON.parse(getActiveDiscounts);
|
|
||||||
if( rows.length ) { store.discountsActiveArraySet( rows ); };
|
|
||||||
}
|
|
||||||
|
|
||||||
const discountsArrayConverted = discountsArray.map( (item) => {
|
const discountsArrayConverted = discountsArray.map( (item) => {
|
||||||
const dateFrom = item.from ? new Date( Number(item.from) ) : "";
|
const dateFrom = item.from ? new Date( Number(item.from) ) : "";
|
||||||
const dateDueTo = item.from ? new Date( Number(item.dueTo) ) : "";
|
const dateDueTo = item.from ? new Date( Number(item.dueTo) ) : "";
|
||||||
@ -172,7 +156,7 @@ const Discounts: React.FC = () => {
|
|||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
const createDiscount = ( name:string, discount: number ) => {
|
const createDiscount = ( name:string, discount: number, addedMore: number ) => {
|
||||||
const newDiscount = {
|
const newDiscount = {
|
||||||
id: new Date().getTime(),
|
id: new Date().getTime(),
|
||||||
name,
|
name,
|
||||||
@ -188,15 +172,21 @@ const Discounts: React.FC = () => {
|
|||||||
|
|
||||||
const discountsArrayUpdated = [ ...discountsArray, newDiscount ];
|
const discountsArrayUpdated = [ ...discountsArray, newDiscount ];
|
||||||
discountsArraySet( discountsArrayUpdated );
|
discountsArraySet( discountsArrayUpdated );
|
||||||
localStorage.setItem("discounts", JSON.stringify( discountsArrayUpdated ));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const fieldName = React.useRef<HTMLInputElement | null>(null);
|
const fieldName = React.useRef<HTMLInputElement | null>(null);
|
||||||
const fieldDiscount = React.useRef<HTMLInputElement | null>(null);
|
const fieldDiscount = React.useRef<HTMLInputElement | null>(null);
|
||||||
|
const fieldAddedMore = React.useRef<HTMLInputElement | null>(null);
|
||||||
|
|
||||||
const checkFields = () => {
|
const checkFields = () => {
|
||||||
if( fieldName.current != null && fieldDiscount.current != null ) {
|
if( fieldName.current != null
|
||||||
createDiscount( fieldName.current.value, Number(fieldDiscount.current.value) );
|
&& fieldDiscount.current != null
|
||||||
|
&& fieldAddedMore.current != null ) {
|
||||||
|
|
||||||
|
createDiscount( fieldName.current.value,
|
||||||
|
Number(fieldDiscount.current.value),
|
||||||
|
Number(fieldAddedMore.current.value) );
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,7 +215,6 @@ const Discounts: React.FC = () => {
|
|||||||
} );
|
} );
|
||||||
|
|
||||||
discountsArraySet( discountsArray );
|
discountsArraySet( discountsArray );
|
||||||
localStorage.setItem("discounts", JSON.stringify( discountsArray ));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -341,6 +330,27 @@ const Discounts: React.FC = () => {
|
|||||||
inputRef={ fieldDiscount }
|
inputRef={ fieldDiscount }
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<TextField
|
||||||
|
id = "standard-basic"
|
||||||
|
label = { "Внесено больше" }
|
||||||
|
variant = "filled"
|
||||||
|
color = "secondary"
|
||||||
|
type = "number"
|
||||||
|
sx={{
|
||||||
|
marginTop: "15px"
|
||||||
|
}}
|
||||||
|
InputProps={{
|
||||||
|
style: {
|
||||||
|
backgroundColor: theme.palette.content.main,
|
||||||
|
color: theme.palette.secondary.main,
|
||||||
|
} }}
|
||||||
|
InputLabelProps={{
|
||||||
|
style: {
|
||||||
|
color: theme.palette.secondary.main
|
||||||
|
} }}
|
||||||
|
inputRef={ fieldAddedMore }
|
||||||
|
/>
|
||||||
|
|
||||||
<TableContainer component={Paper} sx={{
|
<TableContainer component={Paper} sx={{
|
||||||
width: "100%",
|
width: "100%",
|
||||||
marginTop: "35px",
|
marginTop: "35px",
|
||||||
|
@ -67,6 +67,12 @@ const columns: GridColDef[] = [
|
|||||||
width: 160,
|
width: 160,
|
||||||
sortable: false,
|
sortable: false,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: "conditions",
|
||||||
|
headerName: "Условия",
|
||||||
|
width: 110,
|
||||||
|
sortable: false,
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const rows = [
|
const rows = [
|
||||||
@ -79,8 +85,6 @@ const rows = [
|
|||||||
] },
|
] },
|
||||||
];
|
];
|
||||||
|
|
||||||
//localStorage.setItem("tariffs", JSON.stringify(rows));
|
|
||||||
|
|
||||||
const rowz:Array<PromocodeProps> = [
|
const rowz:Array<PromocodeProps> = [
|
||||||
{ id: 1, name: "Промокод 1", endless: false, from: "", dueTo: "", privileges: [
|
{ id: 1, name: "Промокод 1", endless: false, from: "", dueTo: "", privileges: [
|
||||||
{
|
{
|
||||||
@ -111,21 +115,6 @@ const DataGridElement: React.FC<MWProps> = ({ openModal }) => {
|
|||||||
const { discountsArray, discountsArraySet } = useStore<StoreState>((state) => state);
|
const { discountsArray, discountsArraySet } = useStore<StoreState>((state) => state);
|
||||||
const { discountsActiveArray, discountsActiveArraySet } = useStore<StoreState>((state) => state);
|
const { discountsActiveArray, discountsActiveArraySet } = useStore<StoreState>((state) => state);
|
||||||
|
|
||||||
const getDiscounts = localStorage.getItem("discounts");
|
|
||||||
const store = useStore( (state) => state );
|
|
||||||
|
|
||||||
if( getDiscounts && !store.discountsArray.length ) {
|
|
||||||
const rows:Array<DiscountProps> = JSON.parse(getDiscounts);
|
|
||||||
if( rows.length ) { store.discountsArraySet( rows ); };
|
|
||||||
}
|
|
||||||
|
|
||||||
const getActiveDiscounts = localStorage.getItem("activeDiscounts");
|
|
||||||
|
|
||||||
if( getActiveDiscounts && !store.discountsArray.length ) {
|
|
||||||
const rows:Array<number> = JSON.parse(getActiveDiscounts);
|
|
||||||
if( rows.length ) { store.discountsActiveArraySet( rows ); };
|
|
||||||
}
|
|
||||||
|
|
||||||
const [checkboxStates, setCheckboxStates] = React.useState(1);
|
const [checkboxStates, setCheckboxStates] = React.useState(1);
|
||||||
|
|
||||||
const checkboxToggle = () => {
|
const checkboxToggle = () => {
|
||||||
@ -159,8 +148,6 @@ const DataGridElement: React.FC<MWProps> = ({ openModal }) => {
|
|||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
localStorage.setItem("tariffs", JSON.stringify(tariffsArray));
|
|
||||||
|
|
||||||
const { tariffsSelectedRowsData, tariffsSelectedRowsDataSet } = useStore<StoreState>((state) => state);
|
const { tariffsSelectedRowsData, tariffsSelectedRowsDataSet } = useStore<StoreState>((state) => state);
|
||||||
const onRowsSelectionHandler = ( ids:GridSelectionModel ) => {
|
const onRowsSelectionHandler = ( ids:GridSelectionModel ) => {
|
||||||
const result:Array<ArrayProps> = [];
|
const result:Array<ArrayProps> = [];
|
||||||
@ -383,7 +370,14 @@ const DataGridElement: React.FC<MWProps> = ({ openModal }) => {
|
|||||||
Корзина
|
Корзина
|
||||||
</Typography>
|
</Typography>
|
||||||
|
|
||||||
<FormControlLabel sx={{ marginTop: "15px", }} control={
|
<Box sx={{
|
||||||
|
display: "flex",
|
||||||
|
marginTop: "15px",
|
||||||
|
marginBottom: "15px",
|
||||||
|
width: "350px",
|
||||||
|
justifyContent: "space-between"
|
||||||
|
}}>
|
||||||
|
<FormControlLabel control={
|
||||||
<Checkbox sx={{
|
<Checkbox sx={{
|
||||||
color: theme.palette.secondary.main,
|
color: theme.palette.secondary.main,
|
||||||
"&.Mui-checked": {
|
"&.Mui-checked": {
|
||||||
@ -392,6 +386,29 @@ const DataGridElement: React.FC<MWProps> = ({ openModal }) => {
|
|||||||
}} onClick={ () => checkboxToggle() } />
|
}} onClick={ () => checkboxToggle() } />
|
||||||
} label="НКО" />
|
} label="НКО" />
|
||||||
|
|
||||||
|
<TextField
|
||||||
|
id = "standard-basic"
|
||||||
|
label = { "Внесено" }
|
||||||
|
variant = "filled"
|
||||||
|
size="small"
|
||||||
|
color = "secondary"
|
||||||
|
type="number"
|
||||||
|
sx={{
|
||||||
|
width: "200px"
|
||||||
|
}}
|
||||||
|
InputProps={{
|
||||||
|
style: {
|
||||||
|
backgroundColor: theme.palette.content.main,
|
||||||
|
color: theme.palette.secondary.main,
|
||||||
|
} }}
|
||||||
|
InputLabelProps={{
|
||||||
|
style: {
|
||||||
|
color: theme.palette.secondary.main
|
||||||
|
} }}
|
||||||
|
//inputRef={ fieldPromocode }
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
|
||||||
<List sx={{
|
<List sx={{
|
||||||
width: "50%",
|
width: "50%",
|
||||||
border: "1px solid",
|
border: "1px solid",
|
||||||
|
27
src/store.ts
27
src/store.ts
@ -1,31 +1,40 @@
|
|||||||
import create from "zustand";
|
import create from "zustand";
|
||||||
|
import { persist } from "zustand/middleware"
|
||||||
import { ArrayProps } from "./Components/LoggedIn/Content/Tariffs/types";
|
import { ArrayProps } from "./Components/LoggedIn/Content/Tariffs/types";
|
||||||
import { PromocodeProps } from "./Components/LoggedIn/Content/Promocode/types";
|
import { PromocodeProps } from "./Components/LoggedIn/Content/Promocode/types";
|
||||||
import { DiscountProps } from "./Components/LoggedIn/Content/Discounts/types";
|
import { DiscountProps } from "./Components/LoggedIn/Content/Discounts/types";
|
||||||
|
|
||||||
|
|
||||||
const useStore = create<StoreState>((set) => ({
|
const useStore = create<StoreState>()(
|
||||||
|
persist(
|
||||||
|
(set, get) => ({
|
||||||
tariffsArray: [],
|
tariffsArray: [],
|
||||||
tariffsArraySet: (array) => set({ tariffsArray: array }),
|
tariffsArraySet: (array:Array<ArrayProps>) => set({ tariffsArray: array }),
|
||||||
|
|
||||||
tariffsSelectedRowsData: [],
|
tariffsSelectedRowsData: [],
|
||||||
tariffsSelectedRowsDataSet: (array) => set({ tariffsSelectedRowsData: array }),
|
tariffsSelectedRowsDataSet: (array:Array<ArrayProps>) => set({ tariffsSelectedRowsData: array }),
|
||||||
|
|
||||||
cartRowsData: [],
|
cartRowsData: [],
|
||||||
cartRowsDataSet: (array) => set({ cartRowsData: array }),
|
cartRowsDataSet: (array:Array<ArrayProps>) => set({ cartRowsData: array }),
|
||||||
|
|
||||||
promocodeArray: [],
|
promocodeArray: [],
|
||||||
promocodeArraySet: (array) => set({ promocodeArray: array }),
|
promocodeArraySet: (array:Array<PromocodeProps>) => set({ promocodeArray: array }),
|
||||||
|
|
||||||
discountsArray: [],
|
discountsArray: [],
|
||||||
discountsArraySet: (array) => set({ discountsArray: array }),
|
discountsArraySet: (array:Array<DiscountProps>) => set({ discountsArray: array }),
|
||||||
|
|
||||||
discountsActiveArray: [],
|
discountsActiveArray: [],
|
||||||
discountsActiveArraySet: (array) => set({ discountsActiveArray: array }),
|
discountsActiveArraySet: (array:Array<number>) => set({ discountsActiveArray: array }),
|
||||||
|
|
||||||
discountsSelectedRowsData: [],
|
discountsSelectedRowsData: [],
|
||||||
discountsSelectedRowsDataSet: (array) => set({ discountsSelectedRowsData: array }),
|
discountsSelectedRowsDataSet: (array:Array<DiscountProps>) => set({ discountsSelectedRowsData: array }),
|
||||||
}))
|
}),
|
||||||
|
{
|
||||||
|
name: "arrays-storage",
|
||||||
|
getStorage: () => localStorage,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
export interface StoreState {
|
export interface StoreState {
|
||||||
tariffsArray: Array<ArrayProps>,
|
tariffsArray: Array<ArrayProps>,
|
||||||
|
Loading…
Reference in New Issue
Block a user