feat: fix accounts issue.

This commit is contained in:
Ahmed Bouhuolia
2020-06-25 13:43:47 +02:00
parent 6074134a53
commit 111aa83908
46 changed files with 797 additions and 345 deletions

View File

@@ -1,10 +1,19 @@
import { createSelector } from 'reselect';
import { pickItemsFromIds } from 'store/selectors';
export const getAccountsItems = (state, viewId) => {
const accountsView = state.accounts.views[viewId || -1];
const accountsItems = state.accounts.items;
const accountsViewsSelector = (state) => state.accounts.views;
const accountsDataSelector = (state) => state.accounts.items;
const accountsCurrentViewSelector = (state) => state.accounts.currentViewId;
return typeof accountsView === 'object'
? pickItemsFromIds(accountsItems, accountsView.ids) || []
: [];
};
export const getAccountsItems = createSelector(
accountsViewsSelector,
accountsDataSelector,
accountsCurrentViewSelector,
(accountsViews, accountsItems, viewId) => {
const accountsView = accountsViews[viewId || -1];
return typeof accountsView === 'object'
? pickItemsFromIds(accountsItems, accountsView.ids) || []
: [];
},
);

View File

@@ -1,4 +1,14 @@
// @flow
import { createSelector } from 'reselect';
const currenciesItemsSelector = state => state.currencies.data;
export const getCurrenciesList = createSelector(
currenciesItemsSelector,
(currencies) => {
return Object.values(currencies);
}
);
export const getCurrencyById = (currencies: Object, id: Integer) => {
return Object.values(currencies).find(c => c.id == id) || null;

View File

@@ -1,14 +1,24 @@
import {pickItemsFromIds} from 'store/selectors';
import {getResourceColumn } from 'store/resources/resources.reducer';
import { createSelector } from 'reselect';
import { pickItemsFromIds } from 'store/selectors';
import { getResourceColumn } from 'store/resources/resources.reducer';
export const getResourceViews = (state, resourceName) => {
const resourceViewsIds = state.views.resourceViews[resourceName] || [];
return pickItemsFromIds(state.views.views, resourceViewsIds);
};
const resourceViewsIdsSelector = (state, props, resourceName) =>
state.views.resourceViews[resourceName] || [];
const viewsSelector = (state) => state.views.views;
const viewByIdSelector = (state, props) => state.views.viewsMeta[props.viewId] || {};
export const getResourceViews = createSelector(
resourceViewsIdsSelector,
viewsSelector,
(resourceViewsIds, views) => {
return pickItemsFromIds(views, resourceViewsIds);
},
);
export const getViewMeta = (state, viewId) => {
const view = { ...state.views.viewsMeta[viewId] } || {};
if (view.columns) {
view.columns = view.columns.map((column) => {
return {
@@ -24,6 +34,7 @@ export const getViewItem = (state, viewId) => {
};
export const getViewPages = (resourceViews, viewId) => {
return (typeof resourceViews[viewId] === 'undefined') ?
{} : resourceViews[viewId].pages;
};
return typeof resourceViews[viewId] === 'undefined'
? {}
: resourceViews[viewId].pages;
};

View File

@@ -1,10 +1,19 @@
import { createSelector } from 'reselect';
import { pickItemsFromIds } from 'store/selectors';
export const getCustomersItems = (state, viewId) => {
const customersView = state.customers.views[viewId || -1];
const customersItems = state.customers.items;
const customersViewsSelector = state => state.customers.views;
const customersItemsSelector = state => state.customers.items;
const customersCurrentViewSelector = state => state.customers.currentViewId;
return typeof customersView === 'object'
? pickItemsFromIds(customersItems, customersView.ids) || []
: [];
};
export const getCustomersItems = createSelector(
customersViewsSelector,
customersItemsSelector,
customersCurrentViewSelector,
(customersViews, customersItems, currentViewId) => {
const customersView = customersViews[currentViewId || -1];
return (typeof customersView === 'object')
? pickItemsFromIds(customersItems, customersView.ids) || []
: [];
},
);

View File

@@ -0,0 +1,18 @@
import { createSelector } from "@reduxjs/toolkit";
const dialogByNameSelector = (state, props) => state.dashboard.dialogs[props.name];
export const isDialogOpen = createSelector(
dialogByNameSelector,
(dialog) => {
return dialog && dialog.isOpen;
},
);
export const getDialogPayload = createSelector(
dialogByNameSelector,
(dialog) => {
return dialog?.payload;
},
);

View File

@@ -1,10 +1,19 @@
import { createSelector } from '@reduxjs/toolkit';
import { pickItemsFromIds } from 'store/selectors';
export const getExpensesItems = (state, viewId) => {
const accountsView = state.expenses.views[viewId || -1];
const accountsItems = state.expenses.items;
const expensesViewsSelector = state => state.expenses.views;
const expensesItemsSelector = state => state.expenses.items;
const expensesCurrentViewSelector = state => state.expenses.currentViewId;
return typeof accountsView === 'object'
? pickItemsFromIds(accountsItems, accountsView.ids) || []
: [];
};
export const getExpensesItems = createSelector(
expensesViewsSelector,
expensesItemsSelector,
expensesCurrentViewSelector,
(expensesViews, expensesItems, currentViewId) => {
const expensesView = expensesViews[currentViewId || -1];
return (typeof expensesView === 'object')
? (pickItemsFromIds(expensesItems, expensesView.ids) || [])
: [];
},
);

View File

@@ -1,4 +1,5 @@
import { createReducer } from "@reduxjs/toolkit";
import { createSelector } from 'reselect';
import t from 'store/types';
import { pickItemsFromIds } from 'store/selectors'
@@ -61,17 +62,23 @@ export default createReducer(initialState, {
},
});
const resourceFieldsIdsSelector = (state, props) => state.resources.resourceFields[props.resourceName];
const resourceFieldsItemsSelector = (state) => state.resources.fields;
/**
* Retrieve resource fields of the given resource slug.
* @param {Object} state
* @param {String} resourceSlug
* @return {Array}
*/
export const getResourceFields = (state, resourceSlug) => {
const resourceIds = state.resources.resourceFields[resourceSlug];
const items = state.resources.fields;
return pickItemsFromIds(items, resourceIds);
};
export const getResourceFields = createSelector(
resourceFieldsIdsSelector,
resourceFieldsItemsSelector,
(fieldsIds, fieldsItems) => {
return pickItemsFromIds(fieldsItems, fieldsIds);
}
);
/**
* Retrieve resource columns of the given resource slug.