From 10f0fead521af42621b4a5f282d3b2c4e79faa08 Mon Sep 17 00:00:00 2001 From: Gevorg Harutyunyan <gevharut@gmail.com> Date: Sat, 17 Aug 2019 02:09:02 +0400 Subject: [PATCH 1/5] Rename directories --- .../Accounts/AccountsEditor/.gitkeep | 0 .../Accounts/AccountsList/.gitkeep | 0 .../Administration.tsx | 0 .../AdministrationDocs.md | 0 .../Users/UsersEditor/.gitkeep | 0 .../Users/UsersList/.gitkeep | 0 .../index.tsx | 0 src/AppRouter.tsx | 16 ++++++++-------- src/{Auth => AuthModule}/Auth.tsx | 0 src/{Auth => AuthModule}/AuthDocs.md | 0 src/{Auth => AuthModule}/Login/Login.tsx | 0 src/{Auth => AuthModule}/Recover/Recover.tsx | 0 src/{Auth => AuthModule}/Reset/Reset.tsx | 0 src/{Auth => AuthModule}/Signup/Signup.tsx | 0 src/{Auth => AuthModule}/index.tsx | 0 .../CategoriesEditor/.gitkeep | 0 .../CategoriesList/.gitkeep | 0 src/{Content => ContentModule}/Content.tsx | 0 src/{Content => ContentModule}/ContentDocs.md | 0 .../ItemsEditor/.gitkeep | 0 .../ItemsList/.gitkeep | 0 .../_api/_data/itemsCategoriesData.js | 0 .../_api/_data/itemsData.js | 0 .../_api/_data/itemsItemsCategoriesData.js | 0 .../_api/_mocks/.gitkeep | 0 .../_api/itemsCategoriesService.tsx | 0 .../_api/itemsService.tsx | 0 src/{Content => ContentModule}/_types/Item.tsx | 0 .../_types/ItemCategory.tsx | 0 src/{Content => ContentModule}/index.tsx | 0 .../Components/Components.tsx | 0 src/{Demo => DemoModule}/Components/index.tsx | 0 src/{Demo => DemoModule}/Demo.tsx | 0 src/{Demo => DemoModule}/DemoDocs.md | 0 src/{Demo => DemoModule}/Discuss/Discuss.tsx | 0 src/{Demo => DemoModule}/Discuss/index.tsx | 0 src/{Demo => DemoModule}/Docs/Docs.tsx | 0 src/{Demo => DemoModule}/Docs/index.tsx | 0 src/{Demo => DemoModule}/Features/Features.tsx | 0 src/{Demo => DemoModule}/Features/index.tsx | 0 .../Supporters/Supporters.tsx | 0 src/{Demo => DemoModule}/Supporters/index.tsx | 0 src/{Demo => DemoModule}/index.tsx | 0 src/{Misc => MiscModule}/NotFound/NotFound.tsx | 0 .../NotFound/NotFoundDocs.md | 0 src/{Misc => MiscModule}/NotFound/index.tsx | 0 .../Account.tsx | 0 .../AccountDocs.md | 0 .../Preview/.gitkeep | 0 .../Settings/.gitkeep | 0 .../Users/UsersEditor/.gitkeep | 0 .../Users/UsersList/.gitkeep | 0 .../index.tsx | 0 src/{Profile => ProfileModule}/Preview/.gitkeep | 0 src/{Profile => ProfileModule}/Profile.tsx | 0 src/{Profile => ProfileModule}/ProfileDocs.md | 0 src/{Profile => ProfileModule}/Settings/.gitkeep | 0 src/{Profile => ProfileModule}/index.tsx | 0 .../Customers/Customers.tsx | 0 .../Customers/CustomersEditor/.gitkeep | 0 .../Customers/CustomersList/.gitkeep | 0 src/{Sales => SalesModule}/Customers/index.tsx | 0 src/{Sales => SalesModule}/Locations/.gitkeep | 0 src/{Sales => SalesModule}/Orders/Orders.tsx | 0 .../Orders/OrdersEditor/.gitkeep | 0 .../Orders/OrdersList/.gitkeep | 0 src/{Sales => SalesModule}/Orders/index.tsx | 0 .../Overview/OrdersHistory/OrdersHistory.tsx | 0 .../Overview/OrdersHistory/index.tsx | 0 .../OrdersHistory/ordersHistoryService.ts | 0 .../Overview/OrdersLatest/OrdersLatest.tsx | 0 .../Overview/OrdersLatest/index.tsx | 0 src/{Sales => SalesModule}/Overview/Overview.tsx | 0 .../Overview/OverviewActions.tsx | 0 src/{Sales => SalesModule}/Overview/index.tsx | 0 .../Overview/overviewContext.ts | 0 src/{Sales => SalesModule}/Payments/Payments.tsx | 0 .../Products/ProductsCategoriesEditor/.gitkeep | 0 .../Products/ProductsCategoriesList/.gitkeep | 0 .../Products/ProductsEditor/.gitkeep | 0 .../Products/ProductsList/.gitkeep | 0 src/{Sales => SalesModule}/Sales.tsx | 0 src/{Sales => SalesModule}/SalesDocs.md | 0 src/{Sales => SalesModule}/SalesService.tsx | 0 src/{Sales => SalesModule}/Stock/Stock.tsx | 0 src/{Sales => SalesModule}/Stores/Stores.tsx | 0 .../_api/_data/categoriesData.ts | 0 .../_api/_data/customersData.ts | 0 .../_api/_data/locationsData.ts | 0 .../_api/_data/ordersData.ts | 0 .../_api/_data/paymentsData.ts | 0 .../_api/_data/productsData.ts | 0 .../_api/_data/productsRelCategoriesData.ts | 0 .../_api/_data/stockActionsData.ts | 0 .../_api/_data/stocksData.ts | 0 src/{Sales => SalesModule}/_api/_mocks/index.ts | 0 .../_api/_mocks/ordersMocks.ts | 0 src/{Sales => SalesModule}/_api/customers.ts | 0 src/{Sales => SalesModule}/_api/index.ts | 0 src/{Sales => SalesModule}/_api/orders.ts | 0 src/{Sales => SalesModule}/_api/products.ts | 0 .../_api/productsCategories.ts | 0 src/{Sales => SalesModule}/_services/.gitkeep | 0 src/{Sales => SalesModule}/_types/Customer.ts | 0 src/{Sales => SalesModule}/_types/EntityOwned.ts | 0 src/{Sales => SalesModule}/_types/Location.ts | 0 src/{Sales => SalesModule}/_types/Order.ts | 0 src/{Sales => SalesModule}/_types/Payment.ts | 0 src/{Sales => SalesModule}/_types/Product.ts | 0 .../_types/ProductAttachment.ts | 0 .../_types/ProductCategory.ts | 0 .../_types/ProductImage.ts | 0 .../_types/ProductToProductCategory.ts | 0 src/{Sales => SalesModule}/_types/Stock.ts | 0 src/{Sales => SalesModule}/_types/StockAction.ts | 0 src/{Sales => SalesModule}/index.tsx | 0 src/{Services => ServicesModule}/ServicesDocs.md | 0 src/_api/index.ts | 2 +- 118 files changed, 9 insertions(+), 9 deletions(-) rename src/{Administration => AdministrationModule}/Accounts/AccountsEditor/.gitkeep (100%) rename src/{Administration => AdministrationModule}/Accounts/AccountsList/.gitkeep (100%) rename src/{Administration => AdministrationModule}/Administration.tsx (100%) rename src/{Administration => AdministrationModule}/AdministrationDocs.md (100%) rename src/{Administration => AdministrationModule}/Users/UsersEditor/.gitkeep (100%) rename src/{Administration => AdministrationModule}/Users/UsersList/.gitkeep (100%) rename src/{Administration => AdministrationModule}/index.tsx (100%) rename src/{Auth => AuthModule}/Auth.tsx (100%) rename src/{Auth => AuthModule}/AuthDocs.md (100%) rename src/{Auth => AuthModule}/Login/Login.tsx (100%) rename src/{Auth => AuthModule}/Recover/Recover.tsx (100%) rename src/{Auth => AuthModule}/Reset/Reset.tsx (100%) rename src/{Auth => AuthModule}/Signup/Signup.tsx (100%) rename src/{Auth => AuthModule}/index.tsx (100%) rename src/{Content => ContentModule}/CategoriesEditor/.gitkeep (100%) rename src/{Content => ContentModule}/CategoriesList/.gitkeep (100%) rename src/{Content => ContentModule}/Content.tsx (100%) rename src/{Content => ContentModule}/ContentDocs.md (100%) rename src/{Content => ContentModule}/ItemsEditor/.gitkeep (100%) rename src/{Content => ContentModule}/ItemsList/.gitkeep (100%) rename src/{Content => ContentModule}/_api/_data/itemsCategoriesData.js (100%) rename src/{Content => ContentModule}/_api/_data/itemsData.js (100%) rename src/{Content => ContentModule}/_api/_data/itemsItemsCategoriesData.js (100%) rename src/{Content => ContentModule}/_api/_mocks/.gitkeep (100%) rename src/{Content => ContentModule}/_api/itemsCategoriesService.tsx (100%) rename src/{Content => ContentModule}/_api/itemsService.tsx (100%) rename src/{Content => ContentModule}/_types/Item.tsx (100%) rename src/{Content => ContentModule}/_types/ItemCategory.tsx (100%) rename src/{Content => ContentModule}/index.tsx (100%) rename src/{Demo => DemoModule}/Components/Components.tsx (100%) rename src/{Demo => DemoModule}/Components/index.tsx (100%) rename src/{Demo => DemoModule}/Demo.tsx (100%) rename src/{Demo => DemoModule}/DemoDocs.md (100%) rename src/{Demo => DemoModule}/Discuss/Discuss.tsx (100%) rename src/{Demo => DemoModule}/Discuss/index.tsx (100%) rename src/{Demo => DemoModule}/Docs/Docs.tsx (100%) rename src/{Demo => DemoModule}/Docs/index.tsx (100%) rename src/{Demo => DemoModule}/Features/Features.tsx (100%) rename src/{Demo => DemoModule}/Features/index.tsx (100%) rename src/{Demo => DemoModule}/Supporters/Supporters.tsx (100%) rename src/{Demo => DemoModule}/Supporters/index.tsx (100%) rename src/{Demo => DemoModule}/index.tsx (100%) rename src/{Misc => MiscModule}/NotFound/NotFound.tsx (100%) rename src/{Misc => MiscModule}/NotFound/NotFoundDocs.md (100%) rename src/{Misc => MiscModule}/NotFound/index.tsx (100%) rename src/{Organization => OrganizationModule}/Account.tsx (100%) rename src/{Organization => OrganizationModule}/AccountDocs.md (100%) rename src/{Organization => OrganizationModule}/Preview/.gitkeep (100%) rename src/{Organization => OrganizationModule}/Settings/.gitkeep (100%) rename src/{Organization => OrganizationModule}/Users/UsersEditor/.gitkeep (100%) rename src/{Organization => OrganizationModule}/Users/UsersList/.gitkeep (100%) rename src/{Organization => OrganizationModule}/index.tsx (100%) rename src/{Profile => ProfileModule}/Preview/.gitkeep (100%) rename src/{Profile => ProfileModule}/Profile.tsx (100%) rename src/{Profile => ProfileModule}/ProfileDocs.md (100%) rename src/{Profile => ProfileModule}/Settings/.gitkeep (100%) rename src/{Profile => ProfileModule}/index.tsx (100%) rename src/{Sales => SalesModule}/Customers/Customers.tsx (100%) rename src/{Sales => SalesModule}/Customers/CustomersEditor/.gitkeep (100%) rename src/{Sales => SalesModule}/Customers/CustomersList/.gitkeep (100%) rename src/{Sales => SalesModule}/Customers/index.tsx (100%) rename src/{Sales => SalesModule}/Locations/.gitkeep (100%) rename src/{Sales => SalesModule}/Orders/Orders.tsx (100%) rename src/{Sales => SalesModule}/Orders/OrdersEditor/.gitkeep (100%) rename src/{Sales => SalesModule}/Orders/OrdersList/.gitkeep (100%) rename src/{Sales => SalesModule}/Orders/index.tsx (100%) rename src/{Sales => SalesModule}/Overview/OrdersHistory/OrdersHistory.tsx (100%) rename src/{Sales => SalesModule}/Overview/OrdersHistory/index.tsx (100%) rename src/{Sales => SalesModule}/Overview/OrdersHistory/ordersHistoryService.ts (100%) rename src/{Sales => SalesModule}/Overview/OrdersLatest/OrdersLatest.tsx (100%) rename src/{Sales => SalesModule}/Overview/OrdersLatest/index.tsx (100%) rename src/{Sales => SalesModule}/Overview/Overview.tsx (100%) rename src/{Sales => SalesModule}/Overview/OverviewActions.tsx (100%) rename src/{Sales => SalesModule}/Overview/index.tsx (100%) rename src/{Sales => SalesModule}/Overview/overviewContext.ts (100%) rename src/{Sales => SalesModule}/Payments/Payments.tsx (100%) rename src/{Sales => SalesModule}/Products/ProductsCategoriesEditor/.gitkeep (100%) rename src/{Sales => SalesModule}/Products/ProductsCategoriesList/.gitkeep (100%) rename src/{Sales => SalesModule}/Products/ProductsEditor/.gitkeep (100%) rename src/{Sales => SalesModule}/Products/ProductsList/.gitkeep (100%) rename src/{Sales => SalesModule}/Sales.tsx (100%) rename src/{Sales => SalesModule}/SalesDocs.md (100%) rename src/{Sales => SalesModule}/SalesService.tsx (100%) rename src/{Sales => SalesModule}/Stock/Stock.tsx (100%) rename src/{Sales => SalesModule}/Stores/Stores.tsx (100%) rename src/{Sales => SalesModule}/_api/_data/categoriesData.ts (100%) rename src/{Sales => SalesModule}/_api/_data/customersData.ts (100%) rename src/{Sales => SalesModule}/_api/_data/locationsData.ts (100%) rename src/{Sales => SalesModule}/_api/_data/ordersData.ts (100%) rename src/{Sales => SalesModule}/_api/_data/paymentsData.ts (100%) rename src/{Sales => SalesModule}/_api/_data/productsData.ts (100%) rename src/{Sales => SalesModule}/_api/_data/productsRelCategoriesData.ts (100%) rename src/{Sales => SalesModule}/_api/_data/stockActionsData.ts (100%) rename src/{Sales => SalesModule}/_api/_data/stocksData.ts (100%) rename src/{Sales => SalesModule}/_api/_mocks/index.ts (100%) rename src/{Sales => SalesModule}/_api/_mocks/ordersMocks.ts (100%) rename src/{Sales => SalesModule}/_api/customers.ts (100%) rename src/{Sales => SalesModule}/_api/index.ts (100%) rename src/{Sales => SalesModule}/_api/orders.ts (100%) rename src/{Sales => SalesModule}/_api/products.ts (100%) rename src/{Sales => SalesModule}/_api/productsCategories.ts (100%) rename src/{Sales => SalesModule}/_services/.gitkeep (100%) rename src/{Sales => SalesModule}/_types/Customer.ts (100%) rename src/{Sales => SalesModule}/_types/EntityOwned.ts (100%) rename src/{Sales => SalesModule}/_types/Location.ts (100%) rename src/{Sales => SalesModule}/_types/Order.ts (100%) rename src/{Sales => SalesModule}/_types/Payment.ts (100%) rename src/{Sales => SalesModule}/_types/Product.ts (100%) rename src/{Sales => SalesModule}/_types/ProductAttachment.ts (100%) rename src/{Sales => SalesModule}/_types/ProductCategory.ts (100%) rename src/{Sales => SalesModule}/_types/ProductImage.ts (100%) rename src/{Sales => SalesModule}/_types/ProductToProductCategory.ts (100%) rename src/{Sales => SalesModule}/_types/Stock.ts (100%) rename src/{Sales => SalesModule}/_types/StockAction.ts (100%) rename src/{Sales => SalesModule}/index.tsx (100%) rename src/{Services => ServicesModule}/ServicesDocs.md (100%) diff --git a/src/Administration/Accounts/AccountsEditor/.gitkeep b/src/AdministrationModule/Accounts/AccountsEditor/.gitkeep similarity index 100% rename from src/Administration/Accounts/AccountsEditor/.gitkeep rename to src/AdministrationModule/Accounts/AccountsEditor/.gitkeep diff --git a/src/Administration/Accounts/AccountsList/.gitkeep b/src/AdministrationModule/Accounts/AccountsList/.gitkeep similarity index 100% rename from src/Administration/Accounts/AccountsList/.gitkeep rename to src/AdministrationModule/Accounts/AccountsList/.gitkeep diff --git a/src/Administration/Administration.tsx b/src/AdministrationModule/Administration.tsx similarity index 100% rename from src/Administration/Administration.tsx rename to src/AdministrationModule/Administration.tsx diff --git a/src/Administration/AdministrationDocs.md b/src/AdministrationModule/AdministrationDocs.md similarity index 100% rename from src/Administration/AdministrationDocs.md rename to src/AdministrationModule/AdministrationDocs.md diff --git a/src/Administration/Users/UsersEditor/.gitkeep b/src/AdministrationModule/Users/UsersEditor/.gitkeep similarity index 100% rename from src/Administration/Users/UsersEditor/.gitkeep rename to src/AdministrationModule/Users/UsersEditor/.gitkeep diff --git a/src/Administration/Users/UsersList/.gitkeep b/src/AdministrationModule/Users/UsersList/.gitkeep similarity index 100% rename from src/Administration/Users/UsersList/.gitkeep rename to src/AdministrationModule/Users/UsersList/.gitkeep diff --git a/src/Administration/index.tsx b/src/AdministrationModule/index.tsx similarity index 100% rename from src/Administration/index.tsx rename to src/AdministrationModule/index.tsx diff --git a/src/AppRouter.tsx b/src/AppRouter.tsx index a6f27ce..41db6d4 100644 --- a/src/AppRouter.tsx +++ b/src/AppRouter.tsx @@ -14,18 +14,18 @@ import authService from './_services/authService' import { useAppState, useAppStateMethods } from './_state/appState' // Import application modules -import Sales from './Sales' -import Content from './Content' -import Admin from './Administration' +import Sales from './SalesModule' +import Content from './ContentModule' +import Admin from './AdministrationModule' // Import core modules -import Auth from './Auth/Auth' -import Profile from './Profile' -import Organization from './Organization' -import NotFound from './Misc/NotFound' +import Auth from './AuthModule/Auth' +import Profile from './ProfileModule' +import Organization from './OrganizationModule' +import NotFound from './MiscModule/NotFound' // Theme demo module -import Demo from './Demo' +import Demo from './DemoModule' const LoggedInRouter = () => { const { loading, error } = useAppState() diff --git a/src/Auth/Auth.tsx b/src/AuthModule/Auth.tsx similarity index 100% rename from src/Auth/Auth.tsx rename to src/AuthModule/Auth.tsx diff --git a/src/Auth/AuthDocs.md b/src/AuthModule/AuthDocs.md similarity index 100% rename from src/Auth/AuthDocs.md rename to src/AuthModule/AuthDocs.md diff --git a/src/Auth/Login/Login.tsx b/src/AuthModule/Login/Login.tsx similarity index 100% rename from src/Auth/Login/Login.tsx rename to src/AuthModule/Login/Login.tsx diff --git a/src/Auth/Recover/Recover.tsx b/src/AuthModule/Recover/Recover.tsx similarity index 100% rename from src/Auth/Recover/Recover.tsx rename to src/AuthModule/Recover/Recover.tsx diff --git a/src/Auth/Reset/Reset.tsx b/src/AuthModule/Reset/Reset.tsx similarity index 100% rename from src/Auth/Reset/Reset.tsx rename to src/AuthModule/Reset/Reset.tsx diff --git a/src/Auth/Signup/Signup.tsx b/src/AuthModule/Signup/Signup.tsx similarity index 100% rename from src/Auth/Signup/Signup.tsx rename to src/AuthModule/Signup/Signup.tsx diff --git a/src/Auth/index.tsx b/src/AuthModule/index.tsx similarity index 100% rename from src/Auth/index.tsx rename to src/AuthModule/index.tsx diff --git a/src/Content/CategoriesEditor/.gitkeep b/src/ContentModule/CategoriesEditor/.gitkeep similarity index 100% rename from src/Content/CategoriesEditor/.gitkeep rename to src/ContentModule/CategoriesEditor/.gitkeep diff --git a/src/Content/CategoriesList/.gitkeep b/src/ContentModule/CategoriesList/.gitkeep similarity index 100% rename from src/Content/CategoriesList/.gitkeep rename to src/ContentModule/CategoriesList/.gitkeep diff --git a/src/Content/Content.tsx b/src/ContentModule/Content.tsx similarity index 100% rename from src/Content/Content.tsx rename to src/ContentModule/Content.tsx diff --git a/src/Content/ContentDocs.md b/src/ContentModule/ContentDocs.md similarity index 100% rename from src/Content/ContentDocs.md rename to src/ContentModule/ContentDocs.md diff --git a/src/Content/ItemsEditor/.gitkeep b/src/ContentModule/ItemsEditor/.gitkeep similarity index 100% rename from src/Content/ItemsEditor/.gitkeep rename to src/ContentModule/ItemsEditor/.gitkeep diff --git a/src/Content/ItemsList/.gitkeep b/src/ContentModule/ItemsList/.gitkeep similarity index 100% rename from src/Content/ItemsList/.gitkeep rename to src/ContentModule/ItemsList/.gitkeep diff --git a/src/Content/_api/_data/itemsCategoriesData.js b/src/ContentModule/_api/_data/itemsCategoriesData.js similarity index 100% rename from src/Content/_api/_data/itemsCategoriesData.js rename to src/ContentModule/_api/_data/itemsCategoriesData.js diff --git a/src/Content/_api/_data/itemsData.js b/src/ContentModule/_api/_data/itemsData.js similarity index 100% rename from src/Content/_api/_data/itemsData.js rename to src/ContentModule/_api/_data/itemsData.js diff --git a/src/Content/_api/_data/itemsItemsCategoriesData.js b/src/ContentModule/_api/_data/itemsItemsCategoriesData.js similarity index 100% rename from src/Content/_api/_data/itemsItemsCategoriesData.js rename to src/ContentModule/_api/_data/itemsItemsCategoriesData.js diff --git a/src/Content/_api/_mocks/.gitkeep b/src/ContentModule/_api/_mocks/.gitkeep similarity index 100% rename from src/Content/_api/_mocks/.gitkeep rename to src/ContentModule/_api/_mocks/.gitkeep diff --git a/src/Content/_api/itemsCategoriesService.tsx b/src/ContentModule/_api/itemsCategoriesService.tsx similarity index 100% rename from src/Content/_api/itemsCategoriesService.tsx rename to src/ContentModule/_api/itemsCategoriesService.tsx diff --git a/src/Content/_api/itemsService.tsx b/src/ContentModule/_api/itemsService.tsx similarity index 100% rename from src/Content/_api/itemsService.tsx rename to src/ContentModule/_api/itemsService.tsx diff --git a/src/Content/_types/Item.tsx b/src/ContentModule/_types/Item.tsx similarity index 100% rename from src/Content/_types/Item.tsx rename to src/ContentModule/_types/Item.tsx diff --git a/src/Content/_types/ItemCategory.tsx b/src/ContentModule/_types/ItemCategory.tsx similarity index 100% rename from src/Content/_types/ItemCategory.tsx rename to src/ContentModule/_types/ItemCategory.tsx diff --git a/src/Content/index.tsx b/src/ContentModule/index.tsx similarity index 100% rename from src/Content/index.tsx rename to src/ContentModule/index.tsx diff --git a/src/Demo/Components/Components.tsx b/src/DemoModule/Components/Components.tsx similarity index 100% rename from src/Demo/Components/Components.tsx rename to src/DemoModule/Components/Components.tsx diff --git a/src/Demo/Components/index.tsx b/src/DemoModule/Components/index.tsx similarity index 100% rename from src/Demo/Components/index.tsx rename to src/DemoModule/Components/index.tsx diff --git a/src/Demo/Demo.tsx b/src/DemoModule/Demo.tsx similarity index 100% rename from src/Demo/Demo.tsx rename to src/DemoModule/Demo.tsx diff --git a/src/Demo/DemoDocs.md b/src/DemoModule/DemoDocs.md similarity index 100% rename from src/Demo/DemoDocs.md rename to src/DemoModule/DemoDocs.md diff --git a/src/Demo/Discuss/Discuss.tsx b/src/DemoModule/Discuss/Discuss.tsx similarity index 100% rename from src/Demo/Discuss/Discuss.tsx rename to src/DemoModule/Discuss/Discuss.tsx diff --git a/src/Demo/Discuss/index.tsx b/src/DemoModule/Discuss/index.tsx similarity index 100% rename from src/Demo/Discuss/index.tsx rename to src/DemoModule/Discuss/index.tsx diff --git a/src/Demo/Docs/Docs.tsx b/src/DemoModule/Docs/Docs.tsx similarity index 100% rename from src/Demo/Docs/Docs.tsx rename to src/DemoModule/Docs/Docs.tsx diff --git a/src/Demo/Docs/index.tsx b/src/DemoModule/Docs/index.tsx similarity index 100% rename from src/Demo/Docs/index.tsx rename to src/DemoModule/Docs/index.tsx diff --git a/src/Demo/Features/Features.tsx b/src/DemoModule/Features/Features.tsx similarity index 100% rename from src/Demo/Features/Features.tsx rename to src/DemoModule/Features/Features.tsx diff --git a/src/Demo/Features/index.tsx b/src/DemoModule/Features/index.tsx similarity index 100% rename from src/Demo/Features/index.tsx rename to src/DemoModule/Features/index.tsx diff --git a/src/Demo/Supporters/Supporters.tsx b/src/DemoModule/Supporters/Supporters.tsx similarity index 100% rename from src/Demo/Supporters/Supporters.tsx rename to src/DemoModule/Supporters/Supporters.tsx diff --git a/src/Demo/Supporters/index.tsx b/src/DemoModule/Supporters/index.tsx similarity index 100% rename from src/Demo/Supporters/index.tsx rename to src/DemoModule/Supporters/index.tsx diff --git a/src/Demo/index.tsx b/src/DemoModule/index.tsx similarity index 100% rename from src/Demo/index.tsx rename to src/DemoModule/index.tsx diff --git a/src/Misc/NotFound/NotFound.tsx b/src/MiscModule/NotFound/NotFound.tsx similarity index 100% rename from src/Misc/NotFound/NotFound.tsx rename to src/MiscModule/NotFound/NotFound.tsx diff --git a/src/Misc/NotFound/NotFoundDocs.md b/src/MiscModule/NotFound/NotFoundDocs.md similarity index 100% rename from src/Misc/NotFound/NotFoundDocs.md rename to src/MiscModule/NotFound/NotFoundDocs.md diff --git a/src/Misc/NotFound/index.tsx b/src/MiscModule/NotFound/index.tsx similarity index 100% rename from src/Misc/NotFound/index.tsx rename to src/MiscModule/NotFound/index.tsx diff --git a/src/Organization/Account.tsx b/src/OrganizationModule/Account.tsx similarity index 100% rename from src/Organization/Account.tsx rename to src/OrganizationModule/Account.tsx diff --git a/src/Organization/AccountDocs.md b/src/OrganizationModule/AccountDocs.md similarity index 100% rename from src/Organization/AccountDocs.md rename to src/OrganizationModule/AccountDocs.md diff --git a/src/Organization/Preview/.gitkeep b/src/OrganizationModule/Preview/.gitkeep similarity index 100% rename from src/Organization/Preview/.gitkeep rename to src/OrganizationModule/Preview/.gitkeep diff --git a/src/Organization/Settings/.gitkeep b/src/OrganizationModule/Settings/.gitkeep similarity index 100% rename from src/Organization/Settings/.gitkeep rename to src/OrganizationModule/Settings/.gitkeep diff --git a/src/Organization/Users/UsersEditor/.gitkeep b/src/OrganizationModule/Users/UsersEditor/.gitkeep similarity index 100% rename from src/Organization/Users/UsersEditor/.gitkeep rename to src/OrganizationModule/Users/UsersEditor/.gitkeep diff --git a/src/Organization/Users/UsersList/.gitkeep b/src/OrganizationModule/Users/UsersList/.gitkeep similarity index 100% rename from src/Organization/Users/UsersList/.gitkeep rename to src/OrganizationModule/Users/UsersList/.gitkeep diff --git a/src/Organization/index.tsx b/src/OrganizationModule/index.tsx similarity index 100% rename from src/Organization/index.tsx rename to src/OrganizationModule/index.tsx diff --git a/src/Profile/Preview/.gitkeep b/src/ProfileModule/Preview/.gitkeep similarity index 100% rename from src/Profile/Preview/.gitkeep rename to src/ProfileModule/Preview/.gitkeep diff --git a/src/Profile/Profile.tsx b/src/ProfileModule/Profile.tsx similarity index 100% rename from src/Profile/Profile.tsx rename to src/ProfileModule/Profile.tsx diff --git a/src/Profile/ProfileDocs.md b/src/ProfileModule/ProfileDocs.md similarity index 100% rename from src/Profile/ProfileDocs.md rename to src/ProfileModule/ProfileDocs.md diff --git a/src/Profile/Settings/.gitkeep b/src/ProfileModule/Settings/.gitkeep similarity index 100% rename from src/Profile/Settings/.gitkeep rename to src/ProfileModule/Settings/.gitkeep diff --git a/src/Profile/index.tsx b/src/ProfileModule/index.tsx similarity index 100% rename from src/Profile/index.tsx rename to src/ProfileModule/index.tsx diff --git a/src/Sales/Customers/Customers.tsx b/src/SalesModule/Customers/Customers.tsx similarity index 100% rename from src/Sales/Customers/Customers.tsx rename to src/SalesModule/Customers/Customers.tsx diff --git a/src/Sales/Customers/CustomersEditor/.gitkeep b/src/SalesModule/Customers/CustomersEditor/.gitkeep similarity index 100% rename from src/Sales/Customers/CustomersEditor/.gitkeep rename to src/SalesModule/Customers/CustomersEditor/.gitkeep diff --git a/src/Sales/Customers/CustomersList/.gitkeep b/src/SalesModule/Customers/CustomersList/.gitkeep similarity index 100% rename from src/Sales/Customers/CustomersList/.gitkeep rename to src/SalesModule/Customers/CustomersList/.gitkeep diff --git a/src/Sales/Customers/index.tsx b/src/SalesModule/Customers/index.tsx similarity index 100% rename from src/Sales/Customers/index.tsx rename to src/SalesModule/Customers/index.tsx diff --git a/src/Sales/Locations/.gitkeep b/src/SalesModule/Locations/.gitkeep similarity index 100% rename from src/Sales/Locations/.gitkeep rename to src/SalesModule/Locations/.gitkeep diff --git a/src/Sales/Orders/Orders.tsx b/src/SalesModule/Orders/Orders.tsx similarity index 100% rename from src/Sales/Orders/Orders.tsx rename to src/SalesModule/Orders/Orders.tsx diff --git a/src/Sales/Orders/OrdersEditor/.gitkeep b/src/SalesModule/Orders/OrdersEditor/.gitkeep similarity index 100% rename from src/Sales/Orders/OrdersEditor/.gitkeep rename to src/SalesModule/Orders/OrdersEditor/.gitkeep diff --git a/src/Sales/Orders/OrdersList/.gitkeep b/src/SalesModule/Orders/OrdersList/.gitkeep similarity index 100% rename from src/Sales/Orders/OrdersList/.gitkeep rename to src/SalesModule/Orders/OrdersList/.gitkeep diff --git a/src/Sales/Orders/index.tsx b/src/SalesModule/Orders/index.tsx similarity index 100% rename from src/Sales/Orders/index.tsx rename to src/SalesModule/Orders/index.tsx diff --git a/src/Sales/Overview/OrdersHistory/OrdersHistory.tsx b/src/SalesModule/Overview/OrdersHistory/OrdersHistory.tsx similarity index 100% rename from src/Sales/Overview/OrdersHistory/OrdersHistory.tsx rename to src/SalesModule/Overview/OrdersHistory/OrdersHistory.tsx diff --git a/src/Sales/Overview/OrdersHistory/index.tsx b/src/SalesModule/Overview/OrdersHistory/index.tsx similarity index 100% rename from src/Sales/Overview/OrdersHistory/index.tsx rename to src/SalesModule/Overview/OrdersHistory/index.tsx diff --git a/src/Sales/Overview/OrdersHistory/ordersHistoryService.ts b/src/SalesModule/Overview/OrdersHistory/ordersHistoryService.ts similarity index 100% rename from src/Sales/Overview/OrdersHistory/ordersHistoryService.ts rename to src/SalesModule/Overview/OrdersHistory/ordersHistoryService.ts diff --git a/src/Sales/Overview/OrdersLatest/OrdersLatest.tsx b/src/SalesModule/Overview/OrdersLatest/OrdersLatest.tsx similarity index 100% rename from src/Sales/Overview/OrdersLatest/OrdersLatest.tsx rename to src/SalesModule/Overview/OrdersLatest/OrdersLatest.tsx diff --git a/src/Sales/Overview/OrdersLatest/index.tsx b/src/SalesModule/Overview/OrdersLatest/index.tsx similarity index 100% rename from src/Sales/Overview/OrdersLatest/index.tsx rename to src/SalesModule/Overview/OrdersLatest/index.tsx diff --git a/src/Sales/Overview/Overview.tsx b/src/SalesModule/Overview/Overview.tsx similarity index 100% rename from src/Sales/Overview/Overview.tsx rename to src/SalesModule/Overview/Overview.tsx diff --git a/src/Sales/Overview/OverviewActions.tsx b/src/SalesModule/Overview/OverviewActions.tsx similarity index 100% rename from src/Sales/Overview/OverviewActions.tsx rename to src/SalesModule/Overview/OverviewActions.tsx diff --git a/src/Sales/Overview/index.tsx b/src/SalesModule/Overview/index.tsx similarity index 100% rename from src/Sales/Overview/index.tsx rename to src/SalesModule/Overview/index.tsx diff --git a/src/Sales/Overview/overviewContext.ts b/src/SalesModule/Overview/overviewContext.ts similarity index 100% rename from src/Sales/Overview/overviewContext.ts rename to src/SalesModule/Overview/overviewContext.ts diff --git a/src/Sales/Payments/Payments.tsx b/src/SalesModule/Payments/Payments.tsx similarity index 100% rename from src/Sales/Payments/Payments.tsx rename to src/SalesModule/Payments/Payments.tsx diff --git a/src/Sales/Products/ProductsCategoriesEditor/.gitkeep b/src/SalesModule/Products/ProductsCategoriesEditor/.gitkeep similarity index 100% rename from src/Sales/Products/ProductsCategoriesEditor/.gitkeep rename to src/SalesModule/Products/ProductsCategoriesEditor/.gitkeep diff --git a/src/Sales/Products/ProductsCategoriesList/.gitkeep b/src/SalesModule/Products/ProductsCategoriesList/.gitkeep similarity index 100% rename from src/Sales/Products/ProductsCategoriesList/.gitkeep rename to src/SalesModule/Products/ProductsCategoriesList/.gitkeep diff --git a/src/Sales/Products/ProductsEditor/.gitkeep b/src/SalesModule/Products/ProductsEditor/.gitkeep similarity index 100% rename from src/Sales/Products/ProductsEditor/.gitkeep rename to src/SalesModule/Products/ProductsEditor/.gitkeep diff --git a/src/Sales/Products/ProductsList/.gitkeep b/src/SalesModule/Products/ProductsList/.gitkeep similarity index 100% rename from src/Sales/Products/ProductsList/.gitkeep rename to src/SalesModule/Products/ProductsList/.gitkeep diff --git a/src/Sales/Sales.tsx b/src/SalesModule/Sales.tsx similarity index 100% rename from src/Sales/Sales.tsx rename to src/SalesModule/Sales.tsx diff --git a/src/Sales/SalesDocs.md b/src/SalesModule/SalesDocs.md similarity index 100% rename from src/Sales/SalesDocs.md rename to src/SalesModule/SalesDocs.md diff --git a/src/Sales/SalesService.tsx b/src/SalesModule/SalesService.tsx similarity index 100% rename from src/Sales/SalesService.tsx rename to src/SalesModule/SalesService.tsx diff --git a/src/Sales/Stock/Stock.tsx b/src/SalesModule/Stock/Stock.tsx similarity index 100% rename from src/Sales/Stock/Stock.tsx rename to src/SalesModule/Stock/Stock.tsx diff --git a/src/Sales/Stores/Stores.tsx b/src/SalesModule/Stores/Stores.tsx similarity index 100% rename from src/Sales/Stores/Stores.tsx rename to src/SalesModule/Stores/Stores.tsx diff --git a/src/Sales/_api/_data/categoriesData.ts b/src/SalesModule/_api/_data/categoriesData.ts similarity index 100% rename from src/Sales/_api/_data/categoriesData.ts rename to src/SalesModule/_api/_data/categoriesData.ts diff --git a/src/Sales/_api/_data/customersData.ts b/src/SalesModule/_api/_data/customersData.ts similarity index 100% rename from src/Sales/_api/_data/customersData.ts rename to src/SalesModule/_api/_data/customersData.ts diff --git a/src/Sales/_api/_data/locationsData.ts b/src/SalesModule/_api/_data/locationsData.ts similarity index 100% rename from src/Sales/_api/_data/locationsData.ts rename to src/SalesModule/_api/_data/locationsData.ts diff --git a/src/Sales/_api/_data/ordersData.ts b/src/SalesModule/_api/_data/ordersData.ts similarity index 100% rename from src/Sales/_api/_data/ordersData.ts rename to src/SalesModule/_api/_data/ordersData.ts diff --git a/src/Sales/_api/_data/paymentsData.ts b/src/SalesModule/_api/_data/paymentsData.ts similarity index 100% rename from src/Sales/_api/_data/paymentsData.ts rename to src/SalesModule/_api/_data/paymentsData.ts diff --git a/src/Sales/_api/_data/productsData.ts b/src/SalesModule/_api/_data/productsData.ts similarity index 100% rename from src/Sales/_api/_data/productsData.ts rename to src/SalesModule/_api/_data/productsData.ts diff --git a/src/Sales/_api/_data/productsRelCategoriesData.ts b/src/SalesModule/_api/_data/productsRelCategoriesData.ts similarity index 100% rename from src/Sales/_api/_data/productsRelCategoriesData.ts rename to src/SalesModule/_api/_data/productsRelCategoriesData.ts diff --git a/src/Sales/_api/_data/stockActionsData.ts b/src/SalesModule/_api/_data/stockActionsData.ts similarity index 100% rename from src/Sales/_api/_data/stockActionsData.ts rename to src/SalesModule/_api/_data/stockActionsData.ts diff --git a/src/Sales/_api/_data/stocksData.ts b/src/SalesModule/_api/_data/stocksData.ts similarity index 100% rename from src/Sales/_api/_data/stocksData.ts rename to src/SalesModule/_api/_data/stocksData.ts diff --git a/src/Sales/_api/_mocks/index.ts b/src/SalesModule/_api/_mocks/index.ts similarity index 100% rename from src/Sales/_api/_mocks/index.ts rename to src/SalesModule/_api/_mocks/index.ts diff --git a/src/Sales/_api/_mocks/ordersMocks.ts b/src/SalesModule/_api/_mocks/ordersMocks.ts similarity index 100% rename from src/Sales/_api/_mocks/ordersMocks.ts rename to src/SalesModule/_api/_mocks/ordersMocks.ts diff --git a/src/Sales/_api/customers.ts b/src/SalesModule/_api/customers.ts similarity index 100% rename from src/Sales/_api/customers.ts rename to src/SalesModule/_api/customers.ts diff --git a/src/Sales/_api/index.ts b/src/SalesModule/_api/index.ts similarity index 100% rename from src/Sales/_api/index.ts rename to src/SalesModule/_api/index.ts diff --git a/src/Sales/_api/orders.ts b/src/SalesModule/_api/orders.ts similarity index 100% rename from src/Sales/_api/orders.ts rename to src/SalesModule/_api/orders.ts diff --git a/src/Sales/_api/products.ts b/src/SalesModule/_api/products.ts similarity index 100% rename from src/Sales/_api/products.ts rename to src/SalesModule/_api/products.ts diff --git a/src/Sales/_api/productsCategories.ts b/src/SalesModule/_api/productsCategories.ts similarity index 100% rename from src/Sales/_api/productsCategories.ts rename to src/SalesModule/_api/productsCategories.ts diff --git a/src/Sales/_services/.gitkeep b/src/SalesModule/_services/.gitkeep similarity index 100% rename from src/Sales/_services/.gitkeep rename to src/SalesModule/_services/.gitkeep diff --git a/src/Sales/_types/Customer.ts b/src/SalesModule/_types/Customer.ts similarity index 100% rename from src/Sales/_types/Customer.ts rename to src/SalesModule/_types/Customer.ts diff --git a/src/Sales/_types/EntityOwned.ts b/src/SalesModule/_types/EntityOwned.ts similarity index 100% rename from src/Sales/_types/EntityOwned.ts rename to src/SalesModule/_types/EntityOwned.ts diff --git a/src/Sales/_types/Location.ts b/src/SalesModule/_types/Location.ts similarity index 100% rename from src/Sales/_types/Location.ts rename to src/SalesModule/_types/Location.ts diff --git a/src/Sales/_types/Order.ts b/src/SalesModule/_types/Order.ts similarity index 100% rename from src/Sales/_types/Order.ts rename to src/SalesModule/_types/Order.ts diff --git a/src/Sales/_types/Payment.ts b/src/SalesModule/_types/Payment.ts similarity index 100% rename from src/Sales/_types/Payment.ts rename to src/SalesModule/_types/Payment.ts diff --git a/src/Sales/_types/Product.ts b/src/SalesModule/_types/Product.ts similarity index 100% rename from src/Sales/_types/Product.ts rename to src/SalesModule/_types/Product.ts diff --git a/src/Sales/_types/ProductAttachment.ts b/src/SalesModule/_types/ProductAttachment.ts similarity index 100% rename from src/Sales/_types/ProductAttachment.ts rename to src/SalesModule/_types/ProductAttachment.ts diff --git a/src/Sales/_types/ProductCategory.ts b/src/SalesModule/_types/ProductCategory.ts similarity index 100% rename from src/Sales/_types/ProductCategory.ts rename to src/SalesModule/_types/ProductCategory.ts diff --git a/src/Sales/_types/ProductImage.ts b/src/SalesModule/_types/ProductImage.ts similarity index 100% rename from src/Sales/_types/ProductImage.ts rename to src/SalesModule/_types/ProductImage.ts diff --git a/src/Sales/_types/ProductToProductCategory.ts b/src/SalesModule/_types/ProductToProductCategory.ts similarity index 100% rename from src/Sales/_types/ProductToProductCategory.ts rename to src/SalesModule/_types/ProductToProductCategory.ts diff --git a/src/Sales/_types/Stock.ts b/src/SalesModule/_types/Stock.ts similarity index 100% rename from src/Sales/_types/Stock.ts rename to src/SalesModule/_types/Stock.ts diff --git a/src/Sales/_types/StockAction.ts b/src/SalesModule/_types/StockAction.ts similarity index 100% rename from src/Sales/_types/StockAction.ts rename to src/SalesModule/_types/StockAction.ts diff --git a/src/Sales/index.tsx b/src/SalesModule/index.tsx similarity index 100% rename from src/Sales/index.tsx rename to src/SalesModule/index.tsx diff --git a/src/Services/ServicesDocs.md b/src/ServicesModule/ServicesDocs.md similarity index 100% rename from src/Services/ServicesDocs.md rename to src/ServicesModule/ServicesDocs.md diff --git a/src/_api/index.ts b/src/_api/index.ts index fa9279a..de59668 100644 --- a/src/_api/index.ts +++ b/src/_api/index.ts @@ -4,7 +4,7 @@ import organizations from './organizations' import users from './users' // Submodules -import apiSales from '../Sales/_api' +import apiSales from '../SalesModule/_api' export interface ApiInitOptions { useSampleData?: boolean From 20c08eccd1d94f32ebbc0d0ee436bfbc5d8ce7e5 Mon Sep 17 00:00:00 2001 From: Gevorg Harutyunyan <gevharut@gmail.com> Date: Sat, 17 Aug 2019 02:42:47 +0400 Subject: [PATCH 2/5] Test interface definition --- src/AppDocs.md | 33 +++-- src/EmptyModule/EmptyModule.tsx | 7 + src/EmptyModule/_api/index.ts | 0 src/EmptyModule/index.tsx | 0 src/SalesModule2/Customers/Customers.tsx | 22 +++ .../Customers/CustomersEditor/.gitkeep | 0 .../Customers/CustomersList/.gitkeep | 0 src/SalesModule2/Customers/index.tsx | 1 + src/SalesModule2/Locations/.gitkeep | 0 src/SalesModule2/Orders/Orders.tsx | 28 ++++ src/SalesModule2/Orders/OrdersEditor/.gitkeep | 0 src/SalesModule2/Orders/OrdersList/.gitkeep | 0 src/SalesModule2/Orders/index.tsx | 1 + .../Overview/OrdersHistory/OrdersHistory.tsx | 49 +++++++ .../Overview/OrdersHistory/index.tsx | 1 + .../OrdersHistory/ordersHistoryService.ts | 131 ++++++++++++++++++ .../Overview/OrdersLatest/OrdersLatest.tsx | 91 ++++++++++++ .../Overview/OrdersLatest/index.tsx | 1 + src/SalesModule2/Overview/Overview.tsx | 61 ++++++++ src/SalesModule2/Overview/OverviewActions.tsx | 55 ++++++++ src/SalesModule2/Overview/index.tsx | 1 + src/SalesModule2/Overview/overviewContext.ts | 32 +++++ src/SalesModule2/Payments/Payments.tsx | 7 + .../ProductsCategoriesEditor/.gitkeep | 0 .../Products/ProductsCategoriesList/.gitkeep | 0 .../Products/ProductsEditor/.gitkeep | 0 .../Products/ProductsList/.gitkeep | 0 src/SalesModule2/Sales.tsx | 23 +++ src/SalesModule2/SalesDocs.md | 17 +++ src/SalesModule2/Stock/Stock.tsx | 7 + src/SalesModule2/Stores/Stores.tsx | 7 + src/SalesModule2/_api/_data/categoriesData.ts | 84 +++++++++++ .../_api/_data/customersData.ts} | 0 src/SalesModule2/_api/_data/locationsData.ts | 1 + src/SalesModule2/_api/_data/ordersData.ts | 86 ++++++++++++ src/SalesModule2/_api/_data/paymentsData.ts | 1 + src/SalesModule2/_api/_data/productsData.ts | 50 +++++++ .../_api/_data/productsRelCategoriesData.ts | 1 + .../_api/_data/stockActionsData.ts | 1 + src/SalesModule2/_api/_data/stocksData.ts | 1 + src/SalesModule2/_api/_mocks/index.ts | 11 ++ src/SalesModule2/_api/_mocks/ordersMocks.ts | 67 +++++++++ src/SalesModule2/_api/customers.ts | 3 + src/SalesModule2/_api/index.ts | 20 +++ src/SalesModule2/_api/orders.ts | 46 ++++++ src/SalesModule2/_api/products.ts | 3 + src/SalesModule2/_api/productsCategories.ts | 3 + src/SalesModule2/_services/.gitkeep | 0 src/SalesModule2/_types/Customer.ts | 10 ++ src/SalesModule2/_types/EntityOwned.ts | 12 ++ src/SalesModule2/_types/Location.ts | 12 ++ src/SalesModule2/_types/Order.ts | 36 +++++ src/SalesModule2/_types/Payment.ts | 10 ++ src/SalesModule2/_types/Product.ts | 25 ++++ src/SalesModule2/_types/ProductAttachment.ts | 7 + src/SalesModule2/_types/ProductCategory.ts | 11 ++ src/SalesModule2/_types/ProductImage.ts | 7 + .../_types/ProductToProductCategory.ts | 7 + src/SalesModule2/_types/Stock.ts | 8 ++ src/SalesModule2/_types/StockAction.ts | 9 ++ src/SalesModule2/index.tsx | 11 ++ 61 files changed, 1105 insertions(+), 13 deletions(-) create mode 100644 src/EmptyModule/EmptyModule.tsx create mode 100644 src/EmptyModule/_api/index.ts create mode 100644 src/EmptyModule/index.tsx create mode 100644 src/SalesModule2/Customers/Customers.tsx create mode 100644 src/SalesModule2/Customers/CustomersEditor/.gitkeep create mode 100644 src/SalesModule2/Customers/CustomersList/.gitkeep create mode 100644 src/SalesModule2/Customers/index.tsx create mode 100644 src/SalesModule2/Locations/.gitkeep create mode 100644 src/SalesModule2/Orders/Orders.tsx create mode 100644 src/SalesModule2/Orders/OrdersEditor/.gitkeep create mode 100644 src/SalesModule2/Orders/OrdersList/.gitkeep create mode 100644 src/SalesModule2/Orders/index.tsx create mode 100644 src/SalesModule2/Overview/OrdersHistory/OrdersHistory.tsx create mode 100644 src/SalesModule2/Overview/OrdersHistory/index.tsx create mode 100644 src/SalesModule2/Overview/OrdersHistory/ordersHistoryService.ts create mode 100644 src/SalesModule2/Overview/OrdersLatest/OrdersLatest.tsx create mode 100644 src/SalesModule2/Overview/OrdersLatest/index.tsx create mode 100644 src/SalesModule2/Overview/Overview.tsx create mode 100644 src/SalesModule2/Overview/OverviewActions.tsx create mode 100644 src/SalesModule2/Overview/index.tsx create mode 100644 src/SalesModule2/Overview/overviewContext.ts create mode 100644 src/SalesModule2/Payments/Payments.tsx create mode 100644 src/SalesModule2/Products/ProductsCategoriesEditor/.gitkeep create mode 100644 src/SalesModule2/Products/ProductsCategoriesList/.gitkeep create mode 100644 src/SalesModule2/Products/ProductsEditor/.gitkeep create mode 100644 src/SalesModule2/Products/ProductsList/.gitkeep create mode 100644 src/SalesModule2/Sales.tsx create mode 100644 src/SalesModule2/SalesDocs.md create mode 100644 src/SalesModule2/Stock/Stock.tsx create mode 100644 src/SalesModule2/Stores/Stores.tsx create mode 100644 src/SalesModule2/_api/_data/categoriesData.ts rename src/{SalesModule/SalesService.tsx => SalesModule2/_api/_data/customersData.ts} (100%) create mode 100644 src/SalesModule2/_api/_data/locationsData.ts create mode 100644 src/SalesModule2/_api/_data/ordersData.ts create mode 100644 src/SalesModule2/_api/_data/paymentsData.ts create mode 100644 src/SalesModule2/_api/_data/productsData.ts create mode 100644 src/SalesModule2/_api/_data/productsRelCategoriesData.ts create mode 100644 src/SalesModule2/_api/_data/stockActionsData.ts create mode 100644 src/SalesModule2/_api/_data/stocksData.ts create mode 100644 src/SalesModule2/_api/_mocks/index.ts create mode 100644 src/SalesModule2/_api/_mocks/ordersMocks.ts create mode 100644 src/SalesModule2/_api/customers.ts create mode 100644 src/SalesModule2/_api/index.ts create mode 100644 src/SalesModule2/_api/orders.ts create mode 100644 src/SalesModule2/_api/products.ts create mode 100644 src/SalesModule2/_api/productsCategories.ts create mode 100644 src/SalesModule2/_services/.gitkeep create mode 100644 src/SalesModule2/_types/Customer.ts create mode 100644 src/SalesModule2/_types/EntityOwned.ts create mode 100644 src/SalesModule2/_types/Location.ts create mode 100644 src/SalesModule2/_types/Order.ts create mode 100644 src/SalesModule2/_types/Payment.ts create mode 100644 src/SalesModule2/_types/Product.ts create mode 100644 src/SalesModule2/_types/ProductAttachment.ts create mode 100644 src/SalesModule2/_types/ProductCategory.ts create mode 100644 src/SalesModule2/_types/ProductImage.ts create mode 100644 src/SalesModule2/_types/ProductToProductCategory.ts create mode 100644 src/SalesModule2/_types/Stock.ts create mode 100644 src/SalesModule2/_types/StockAction.ts create mode 100644 src/SalesModule2/index.tsx diff --git a/src/AppDocs.md b/src/AppDocs.md index d10bd78..20085a5 100644 --- a/src/AppDocs.md +++ b/src/AppDocs.md @@ -1,25 +1,32 @@ -# App module +# App This is the application entry component. It handles the main routing and authentication redirects. -Sub modules +The App consists from nested modules, each of them has it's own purpose. -### Account -single account management module - -### Admin +### Administration Module all accounts and users management module (convenient for superusers, can be extended) -### Content +### Auth Module +user authentication: login, logout, signup, recover + +### Content Module content management module (useful for creating various entities like books, articles, posts, pages, etc) -### Demo +### Demo Module theme demo pages -### NotFound -Fallback page, if route doesn't match any module +### Misc Module +misc pages like not found page + +### Organization Module +manage user organizations and organization teams -### Profile -logged-in user profile management module +### Profile Module +manage user profile -### Sales +### Sales Module can be used for managing sales/orders + +### Service Module + +The services module allows to manage different institutions provided services diff --git a/src/EmptyModule/EmptyModule.tsx b/src/EmptyModule/EmptyModule.tsx new file mode 100644 index 0000000..826dda6 --- /dev/null +++ b/src/EmptyModule/EmptyModule.tsx @@ -0,0 +1,7 @@ +import React from 'react' + +const EmptyModule = () => { + return <div>EmptyModule</div> +} + +export default EmptyModule diff --git a/src/EmptyModule/_api/index.ts b/src/EmptyModule/_api/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/EmptyModule/index.tsx b/src/EmptyModule/index.tsx new file mode 100644 index 0000000..e69de29 diff --git a/src/SalesModule2/Customers/Customers.tsx b/src/SalesModule2/Customers/Customers.tsx new file mode 100644 index 0000000..3e9f31e --- /dev/null +++ b/src/SalesModule2/Customers/Customers.tsx @@ -0,0 +1,22 @@ +import React from 'react' +// import clsx from 'clsx' +import { makeStyles } from '@material-ui/core/styles' + +import PageContainer from '../../_common/PageContainer' + +// import Grid from '@material-ui/core/Grid' +import Paper from '@material-ui/core/Paper' + +import { Theme } from '_theme' + +export default function Customers() { + const classes = useStyles() + + return ( + <PageContainer> + <Paper>Customers</Paper> + </PageContainer> + ) +} + +const useStyles = makeStyles((theme: Theme) => ({})) diff --git a/src/SalesModule2/Customers/CustomersEditor/.gitkeep b/src/SalesModule2/Customers/CustomersEditor/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/SalesModule2/Customers/CustomersList/.gitkeep b/src/SalesModule2/Customers/CustomersList/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/SalesModule2/Customers/index.tsx b/src/SalesModule2/Customers/index.tsx new file mode 100644 index 0000000..1ef951c --- /dev/null +++ b/src/SalesModule2/Customers/index.tsx @@ -0,0 +1 @@ +export { default } from './Customers' diff --git a/src/SalesModule2/Locations/.gitkeep b/src/SalesModule2/Locations/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/SalesModule2/Orders/Orders.tsx b/src/SalesModule2/Orders/Orders.tsx new file mode 100644 index 0000000..44090af --- /dev/null +++ b/src/SalesModule2/Orders/Orders.tsx @@ -0,0 +1,28 @@ +import React from 'react' + +import Grid from '@material-ui/core/Grid' +import Paper from '@material-ui/core/Paper' +import Button from '@material-ui/core/Button' + +// import { Theme } from '_theme' + +import PageContainer from '../../_common/PageContainer' +import PageToolbar from '../../_common/PageToolbar' + +const Orders = () => { + const PageTitle = 'Orders' + + const PageActions = ( + <Button variant="contained" href="#contained-buttons"> + Link + </Button> + ) + + return ( + <PageContainer> + <PageToolbar title={PageTitle} actions={PageActions}></PageToolbar> + </PageContainer> + ) +} + +export default Orders diff --git a/src/SalesModule2/Orders/OrdersEditor/.gitkeep b/src/SalesModule2/Orders/OrdersEditor/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/SalesModule2/Orders/OrdersList/.gitkeep b/src/SalesModule2/Orders/OrdersList/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/SalesModule2/Orders/index.tsx b/src/SalesModule2/Orders/index.tsx new file mode 100644 index 0000000..36573fb --- /dev/null +++ b/src/SalesModule2/Orders/index.tsx @@ -0,0 +1 @@ +export { default } from './Orders' diff --git a/src/SalesModule2/Overview/OrdersHistory/OrdersHistory.tsx b/src/SalesModule2/Overview/OrdersHistory/OrdersHistory.tsx new file mode 100644 index 0000000..bebf792 --- /dev/null +++ b/src/SalesModule2/Overview/OrdersHistory/OrdersHistory.tsx @@ -0,0 +1,49 @@ +import React, { useEffect, useRef } from 'react' //useState +import { makeStyles } from '@material-ui/core/styles' +import Card from '@material-ui/core/Card' +import CardContent from '@material-ui/core/CardContent' +import { Chart } from 'chart.js' + +import mainHistoryService from './ordersHistoryService' + +// ref: https://www.robinwieruch.de/react-hooks-fetch-data/ +const MainHistory = () => { + const canvasRef = useRef<HTMLCanvasElement>(null) + const classes = useStyles() + + useEffect(() => { + if (canvasRef.current === null) { + return + } + + async function requestChartData(canvasRefNode: HTMLCanvasElement) { + if (!canvasRef) { + return + } + + const chartConfigurationRes = await mainHistoryService.getChartConfiguration() + + new Chart(canvasRefNode, chartConfigurationRes) + } + requestChartData(canvasRef.current) + }, [canvasRef]) + + return ( + <Card> + <CardContent className={classes.content}> + Order History + <canvas ref={canvasRef} className={classes.chart} /> + </CardContent> + </Card> + ) +} + +const useStyles = makeStyles(theme => ({ + content: {}, + chart: { + width: '100%', + height: '200px', + }, +})) + +export default MainHistory diff --git a/src/SalesModule2/Overview/OrdersHistory/index.tsx b/src/SalesModule2/Overview/OrdersHistory/index.tsx new file mode 100644 index 0000000..e2134c2 --- /dev/null +++ b/src/SalesModule2/Overview/OrdersHistory/index.tsx @@ -0,0 +1 @@ +export { default } from './OrdersHistory' diff --git a/src/SalesModule2/Overview/OrdersHistory/ordersHistoryService.ts b/src/SalesModule2/Overview/OrdersHistory/ordersHistoryService.ts new file mode 100644 index 0000000..55c6395 --- /dev/null +++ b/src/SalesModule2/Overview/OrdersHistory/ordersHistoryService.ts @@ -0,0 +1,131 @@ +import { Chart } from 'chart.js' +import { random } from 'lodash' +import moment from 'moment' + +// import ordersData from '../../_api/_data/ordersData' +import api from '../../_api' + +export default { + getRandomNumber(min = 0, max = 1): number { + return random(min, max) + }, + async getChartData(): Promise<Chart.ChartData> { + interface ChartDataSet extends Chart.ChartDataSets { + data: number[] + } + + const orders = await api.orders.getList() + + console.log('orders', orders) + + const timeFormat = 'MM/DD/YYYY' + + const today = moment().startOf('day') + const oneMonthAgo = moment(today).subtract(15, 'days') + + const labels: string[] = [] + const signups: ChartDataSet = { + type: 'bar', + label: 'Signups', + backgroundColor: '#e8e8e8', + data: [], + } + const ordersCount: ChartDataSet = { + type: 'line', + label: 'Number of orders', + backgroundColor: '#1e88e5', + borderColor: '#1e88e5', + fill: false, + data: [], + } + const ordersSum: ChartDataSet = { + type: 'line', + label: 'Total orders $', + backgroundColor: '#95de3c', + borderColor: '#95de3c', + fill: false, + data: [], + yAxisID: 'y-axis-2', + } + + for (let now = moment(oneMonthAgo); now.isSameOrBefore(today); now.add(1, 'day')) { + labels.push(now.format(timeFormat)) + + const signupsValue = random(10, 150) + const ordersCountValue = random(0, 25) + const ordersSumValue = random(10, 315) + + signups.data.push(signupsValue) + ordersCount.data.push(ordersCountValue) + ordersSum.data.push(ordersSumValue) + } + + return { + labels, + datasets: [ordersSum, ordersCount, signups], + } + }, + getChartOptions(): Chart.ChartOptions { + const timeFormat = 'MM/DD/YYYY' + + return { + // responsive: true, + title: { + text: 'Chart.js Combo Time Scale', + }, + scales: { + xAxes: [ + { + type: 'time', + display: true, + time: { + parser: timeFormat, + }, + }, + ], + yAxes: [ + { + type: 'linear', + display: true, + position: 'left', + id: 'y-axis-1', + }, + { + type: 'linear', + display: true, + position: 'right', + id: 'y-axis-2', + // grid line settings + gridLines: { + drawOnChartArea: false, // only want the grid lines for one axis to show up + }, + ticks: { + // Include a dollar sign in the ticks + callback: function(value, index, values) { + return '$' + value + }, + }, + }, + ], + }, + tooltips: { + mode: 'index', + intersect: false, + }, + hover: { + mode: 'index', + intersect: false, + }, + } + }, + // In real life this would be an http call + async getChartConfiguration(): Promise<Chart.ChartConfiguration> { + const configuration = { + type: 'bar', + options: this.getChartOptions(), + data: await this.getChartData(), + } + + return new Promise(resolve => setTimeout(() => resolve(configuration), 300)) + }, +} diff --git a/src/SalesModule2/Overview/OrdersLatest/OrdersLatest.tsx b/src/SalesModule2/Overview/OrdersLatest/OrdersLatest.tsx new file mode 100644 index 0000000..4dc642d --- /dev/null +++ b/src/SalesModule2/Overview/OrdersLatest/OrdersLatest.tsx @@ -0,0 +1,91 @@ +/* eslint-disable no-script-url */ + +import React from 'react' +import Link from '@material-ui/core/Link' +import { makeStyles } from '@material-ui/core/styles' +import Card from '@material-ui/core/Card' +import CardContent from '@material-ui/core/CardContent' +import Table from '@material-ui/core/Table' +import TableBody from '@material-ui/core/TableBody' +import TableCell from '@material-ui/core/TableCell' +import TableHead from '@material-ui/core/TableHead' +import TableRow from '@material-ui/core/TableRow' + +// Generate Order Data +function createData( + id: number, + date: string, + name: string, + shipTo: string, + paymentMethod: string, + amount: number, +) { + return { id, date, name, shipTo, paymentMethod, amount } +} + +const rows = [ + createData(0, '16 Mar, 2019', 'Elvis Presley', 'Tupelo, MS', 'VISA ⠀•••• 3719', 312.44), + createData( + 1, + '16 Mar, 2019', + 'Paul McCartney', + 'London, UK', + 'VISA ⠀•••• 2574', + 866.99, + ), + createData(2, '16 Mar, 2019', 'Tom Scholz', 'Boston, MA', 'MC ⠀•••• 1253', 100.81), + createData(3, '16 Mar, 2019', 'Michael Jackson', 'Gary, IN', 'AMEX ⠀•••• 2000', 654.39), + createData( + 4, + '15 Mar, 2019', + 'Bruce Springsteen', + 'Long Branch, NJ', + 'VISA ⠀•••• 5919', + 212.79, + ), +] + +const MainOrders: React.FC<any> = () => { + const classes = useStyles() + return ( + <Card> + <CardContent> + <Table size="small"> + <TableHead> + <TableRow> + <TableCell>Date</TableCell> + <TableCell>Name</TableCell> + <TableCell>Ship To</TableCell> + <TableCell>Payment Method</TableCell> + <TableCell align="right">Sale Amount</TableCell> + </TableRow> + </TableHead> + <TableBody> + {rows.map(row => ( + <TableRow key={row.id}> + <TableCell>{row.date}</TableCell> + <TableCell>{row.name}</TableCell> + <TableCell>{row.shipTo}</TableCell> + <TableCell>{row.paymentMethod}</TableCell> + <TableCell align="right">{row.amount}</TableCell> + </TableRow> + ))} + </TableBody> + </Table> + <div className={classes.seeMore}> + <Link color="primary" href="javascript:;"> + See more orders + </Link> + </div> + </CardContent> + </Card> + ) +} + +const useStyles = makeStyles(theme => ({ + seeMore: { + marginTop: theme.spacing(3), + }, +})) + +export default MainOrders diff --git a/src/SalesModule2/Overview/OrdersLatest/index.tsx b/src/SalesModule2/Overview/OrdersLatest/index.tsx new file mode 100644 index 0000000..a70c25c --- /dev/null +++ b/src/SalesModule2/Overview/OrdersLatest/index.tsx @@ -0,0 +1 @@ +export { default } from './OrdersLatest' diff --git a/src/SalesModule2/Overview/Overview.tsx b/src/SalesModule2/Overview/Overview.tsx new file mode 100644 index 0000000..a52b514 --- /dev/null +++ b/src/SalesModule2/Overview/Overview.tsx @@ -0,0 +1,61 @@ +import React, { useState } from 'react' +import moment from 'moment' +// import clsx from 'clsx' +// import { makeStyles } from '@material-ui/core/styles' + +import Grid from '@material-ui/core/Grid' + +import PageContainer from '../../_common/PageContainer' +import PageToolbar from '../../_common/PageToolbar' + +import { SalesDashboardProvider } from './overviewContext' + +import SalesDashboardActions from './OverviewActions' +import OrdersHistory from './OrdersHistory' +import OrdersLatest from './OrdersLatest' + +export default function SalesDashboard() { + const [filter, setFilter] = useState({ + dateFrom: moment() + .subtract(14, 'day') + .startOf('day'), + dateTo: moment().startOf('day'), + }) + + const PageTitle = 'Sales Dashboard' + + return ( + <SalesDashboardProvider value={{ filter, setFilter }}> + <PageContainer> + <PageToolbar + title={PageTitle} + actionsComponent={SalesDashboardActions} + ></PageToolbar> + + <Grid container spacing={3}> + {/* Chart */} + <Grid item xs={12} md={12} lg={12}> + <OrdersHistory /> + </Grid> + {/* Recent Deposits */} + {/* <Grid item xs={12} md={4} lg={4}> + <Paper> + <Deposits /> + </Paper> + </Grid> */} + {/* Recent Orders */} + <Grid item xs={12}> + <OrdersLatest /> + </Grid> + </Grid> + </PageContainer> + </SalesDashboardProvider> + ) +} + +// const useStyles = makeStyles((theme: Theme) => ({ +// container: { +// paddingTop: theme.spacing(4), +// paddingBottom: theme.spacing(4), +// }, +// })) diff --git a/src/SalesModule2/Overview/OverviewActions.tsx b/src/SalesModule2/Overview/OverviewActions.tsx new file mode 100644 index 0000000..3a786d5 --- /dev/null +++ b/src/SalesModule2/Overview/OverviewActions.tsx @@ -0,0 +1,55 @@ +import React, { useContext } from 'react' + +import { makeStyles } from '@material-ui/core/styles' +import Button from '@material-ui/core/Button' +import Tooltip from '@material-ui/core/Tooltip' +import IconMore from '@material-ui/icons/MoreVert' +import IconFilter from '@material-ui/icons/Tune' +import IconDropDown from '@material-ui/icons/ArrowDropDown' +import IconNew from '@material-ui/icons/Add' + +import { Theme } from '../../_theme' +import salesDashboardContext from './overviewContext' + +const MainActions: React.FC<any> = () => { + const classes = useStyles() + const { filter, setFilter } = useContext(salesDashboardContext) + + const dateFilterLabel = filter + ? `${filter.dateFrom.format('ll')} - ${filter.dateTo.format('ll')}` + : 'Date Filter' + + return ( + <div> + <Tooltip title="Date Range"> + <Button> + {dateFilterLabel} <IconDropDown /> + </Button> + </Tooltip> + <Tooltip title="Create new"> + <Button color="secondary"> + <IconNew className={classes.iconNew} /> + New + </Button> + </Tooltip> + <Tooltip title="Filter"> + <Button color="secondary"> + <IconFilter /> + </Button> + </Tooltip> + <Tooltip title="More actions"> + <Button color="secondary"> + <IconMore /> + </Button> + </Tooltip> + </div> + ) +} + +const useStyles = makeStyles((theme: Theme) => ({ + iconNew: { + marginRight: 5, + }, +})) + +export default MainActions diff --git a/src/SalesModule2/Overview/index.tsx b/src/SalesModule2/Overview/index.tsx new file mode 100644 index 0000000..1de667a --- /dev/null +++ b/src/SalesModule2/Overview/index.tsx @@ -0,0 +1 @@ +export { default } from './Overview' diff --git a/src/SalesModule2/Overview/overviewContext.ts b/src/SalesModule2/Overview/overviewContext.ts new file mode 100644 index 0000000..ed9fb0b --- /dev/null +++ b/src/SalesModule2/Overview/overviewContext.ts @@ -0,0 +1,32 @@ +import React from 'react' +import moment, { Moment } from 'moment' + +export interface SalesDahsboardContextFilter { + dateFrom: Moment + dateTo: Moment +} + +export interface SalesDahsboardContext { + filter?: SalesDahsboardContextFilter + setFilter?: any +} + +// The default context, which is used when there is no provider +// (might be used for components testing) +export const salesDashboardContextDefault: SalesDahsboardContext = { + filter: { + dateFrom: moment() + .subtract(14, 'day') + .startOf('day'), + dateTo: moment().startOf('day'), + }, +} + +export const salesDashboardContext = React.createContext<SalesDahsboardContext>( + salesDashboardContextDefault, +) + +export const SalesDashboardProvider = salesDashboardContext.Provider +export const SalesDashboardConsumer = salesDashboardContext.Consumer + +export default salesDashboardContext diff --git a/src/SalesModule2/Payments/Payments.tsx b/src/SalesModule2/Payments/Payments.tsx new file mode 100644 index 0000000..de49f4f --- /dev/null +++ b/src/SalesModule2/Payments/Payments.tsx @@ -0,0 +1,7 @@ +import React from 'react' + +const Patments = () => { + return <div></div> +} + +export default Patments diff --git a/src/SalesModule2/Products/ProductsCategoriesEditor/.gitkeep b/src/SalesModule2/Products/ProductsCategoriesEditor/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/SalesModule2/Products/ProductsCategoriesList/.gitkeep b/src/SalesModule2/Products/ProductsCategoriesList/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/SalesModule2/Products/ProductsEditor/.gitkeep b/src/SalesModule2/Products/ProductsEditor/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/SalesModule2/Products/ProductsList/.gitkeep b/src/SalesModule2/Products/ProductsList/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/SalesModule2/Sales.tsx b/src/SalesModule2/Sales.tsx new file mode 100644 index 0000000..cbc553f --- /dev/null +++ b/src/SalesModule2/Sales.tsx @@ -0,0 +1,23 @@ +import React from 'react' +import { Switch, Route, RouteComponentProps } from 'react-router-dom' + +import DashboardLayout from '_layouts/DashboardLayout' +import Overview from './Overview' +import Orders from './Orders' +import Customers from './Customers' + +export interface SalesProps extends RouteComponentProps {} + +const Sales = ({ match }: SalesProps) => { + return ( + <DashboardLayout> + <Switch> + <Route path={`${match.url}/dashboard`} component={Overview} /> + <Route path={`${match.url}/orders`} component={Orders} /> + <Route path={`${match.url}/customers`} component={Customers} /> + </Switch> + </DashboardLayout> + ) +} + +export default Sales diff --git a/src/SalesModule2/SalesDocs.md b/src/SalesModule2/SalesDocs.md new file mode 100644 index 0000000..07654b8 --- /dev/null +++ b/src/SalesModule2/SalesDocs.md @@ -0,0 +1,17 @@ +# Sales module + +The sales module is a good if you're planning to sell some goods in your system. +It allows you to + +- See the sales overview dashboard +- See and manage the orders +- See and manage the payments +- See and manage the products and categories +- See and manage the stock of products (for physical products) +- See and manage your products locations (stores, warehouses, shops, trading points, branches, etc) + +Use cases + +- Single store +- Stores network +- Delivery service diff --git a/src/SalesModule2/Stock/Stock.tsx b/src/SalesModule2/Stock/Stock.tsx new file mode 100644 index 0000000..af38661 --- /dev/null +++ b/src/SalesModule2/Stock/Stock.tsx @@ -0,0 +1,7 @@ +import React from 'react' + +const Stock = () => { + return <div>Products Stock</div> +} + +export default Stock diff --git a/src/SalesModule2/Stores/Stores.tsx b/src/SalesModule2/Stores/Stores.tsx new file mode 100644 index 0000000..43f08b2 --- /dev/null +++ b/src/SalesModule2/Stores/Stores.tsx @@ -0,0 +1,7 @@ +import React from 'react' + +const Warehouses = () => { + return <div>Warehouses</div> +} + +export default Warehouses diff --git a/src/SalesModule2/_api/_data/categoriesData.ts b/src/SalesModule2/_api/_data/categoriesData.ts new file mode 100644 index 0000000..8a7d404 --- /dev/null +++ b/src/SalesModule2/_api/_data/categoriesData.ts @@ -0,0 +1,84 @@ +import _keyBy from 'lodash/keyBy' +import Category from '../../_types/ProductCategory' + +/* + Electronics, Computers & Office + ELECTRONICS + TV & Video + Home Audio & Theater + Cell Phones & Accessories + Wearable Technology + COMPUTERS + Computers, Tablets, & PC Products + Monitors + Drives & Storage + Books & Audible + Sports & Outdoors +*/ + +const list: Category[] = [ + { + id: 1, + name: 'Electronics, Computers & Office', + }, + { + id: 2, + name: 'Electronics', + parentId: 1, + }, + { + id: 3, + name: 'TV & Video', + parentId: 2, + }, + { + id: 4, + name: 'Home Audio & Theater', + parentId: 2, + }, + { + id: 5, + name: 'Cell Phones & Accessories', + parentId: 2, + }, + { + id: 6, + name: 'Wearable Technology', + parentId: 2, + }, + { + id: 7, + name: 'Computers', + parentId: 1, + }, + { + id: 8, + name: 'Computers, Tablets, & PC Products', + parentId: 7, + }, + { + id: 9, + name: 'Monitors', + parentId: 7, + }, + { + id: 10, + name: 'Drives & Storage', + parentId: 7, + }, + { + id: 11, + name: 'Books & Audible', + }, + { + id: 11, + name: 'Sports & Outdoors', + }, +] + +const byId: { [key: number]: Category } = _keyBy(list, 'id') + +export default { + list, + byId, +} diff --git a/src/SalesModule/SalesService.tsx b/src/SalesModule2/_api/_data/customersData.ts similarity index 100% rename from src/SalesModule/SalesService.tsx rename to src/SalesModule2/_api/_data/customersData.ts diff --git a/src/SalesModule2/_api/_data/locationsData.ts b/src/SalesModule2/_api/_data/locationsData.ts new file mode 100644 index 0000000..b1c6ea4 --- /dev/null +++ b/src/SalesModule2/_api/_data/locationsData.ts @@ -0,0 +1 @@ +export default {} diff --git a/src/SalesModule2/_api/_data/ordersData.ts b/src/SalesModule2/_api/_data/ordersData.ts new file mode 100644 index 0000000..574dc28 --- /dev/null +++ b/src/SalesModule2/_api/_data/ordersData.ts @@ -0,0 +1,86 @@ +import uuidv4 from 'uuid/v4' +import moment, { Moment } from 'moment' +import _keyBy from 'lodash/keyBy' +import _sortBy from 'lodash/sortBy' +import _random from 'lodash/random' +import _shuffle from 'lodash/shuffle' +import Order, { OrderStatus } from '../../_types/Order' +import productsData from './productsData' + +const orderStatuses: OrderStatus[] = [ + 'received', + 'preparing', + 'shipped', + 'delivered', + 'rejected', + 'refunded', +] + +// Generate orders data for lat 90 days (do it one per browser session) +const list = generateRandomOrdersHistory(90) +const byId: { [key: number]: Order } = _keyBy(list, 'id') + +export default { + orderStatuses, + list, + byId, +} + +export function generateRandomOrdersHistory(numDays: number) { + let list: Order[] = [] + const now = moment() + + for ( + let date = moment().subtract(numDays, 'days'), dayNumber = 1; + date.isSameOrBefore(now); + date.add(1, 'day'), dayNumber++ + ) { + const dailyOrders = generateDailyRandomOrders(date) + + list = list.concat(dailyOrders) + } + + return list +} + +export function generateDailyRandomOrders(date: Moment): Order[] { + // Ensure the orders are date sorted + return _sortBy( + new Array(_random(0, 10)).fill(undefined).map(num => generateRandomOrder(date)), + order => moment(order.createdAt).toDate(), + ) +} + +export function generateRandomOrder(date: Moment): Order { + const shuffledProducts = _shuffle(productsData.list) + const numProducts = _random(1, 3) + const orderProductItems = shuffledProducts.slice(0, numProducts) + const orderProducts = orderProductItems.map(product => ({ + id: product.id, + price: product.price, + quantity: _random(1, 2), + })) + const orderSum = orderProducts.reduce((sum, { price = 0, quantity = 0 }) => { + return sum + price * quantity + }, 0) + const isSuccessfulOrder = _random(1, 10) > 2 + const orderStatus = isSuccessfulOrder + ? orderStatuses[_random(0, 3)] + : orderStatuses[_random(4, 5)] + const orderDate = moment(date).set({ + hour: _random(0, 23), + minute: _random(0, 59), + second: _random(0, 59), + }) + + const order = { + id: uuidv4(), + products: orderProducts, + sum: orderSum, + status: orderStatus, + createdAt: orderDate.format(), + updatedAt: orderDate.format(), + } + + return order +} diff --git a/src/SalesModule2/_api/_data/paymentsData.ts b/src/SalesModule2/_api/_data/paymentsData.ts new file mode 100644 index 0000000..b1c6ea4 --- /dev/null +++ b/src/SalesModule2/_api/_data/paymentsData.ts @@ -0,0 +1 @@ +export default {} diff --git a/src/SalesModule2/_api/_data/productsData.ts b/src/SalesModule2/_api/_data/productsData.ts new file mode 100644 index 0000000..31b664e --- /dev/null +++ b/src/SalesModule2/_api/_data/productsData.ts @@ -0,0 +1,50 @@ +import _keyBy from 'lodash/keyBy' +import Product from '../../_types/Product' + +const list: Product[] = [ + { + id: 1, + name: 'Simple Mobile Prepaid - Apple iPhone 6s (32GB) - Space Gray', + price: 300, + }, + { + id: 2, + name: 'iPhoneXS', + price: 399, + }, + { + id: 3, + name: 'Apple iPhone 6, GSM Unlocked, 64GB - Space Gray (Renewed)', + price: 500, + }, + { + id: 4, + name: 'All-New Fire 7 Tablet (7" display, 16 GB) - Black', + images: [ + { + url: 'https://images-na.ssl-images-amazon.com/images/I/61N1v5re7SL._SL1000_.jpg', + }, + ], + price: 99.99, + }, + { + id: 5, + name: + 'Echo (2nd Generation) - Smart speaker with Alexa and Dolby processing - Sandstone Fabric', + images: [ + { + url: 'https://images-na.ssl-images-amazon.com/images/I/610d8E4usyL._SL1000_.jpg', + }, + ], + price: 49.99, + }, +] + +const byId: { [key: number]: Product } = _keyBy(list, 'id') + +const productsData = { + list, + byId, +} + +export default productsData diff --git a/src/SalesModule2/_api/_data/productsRelCategoriesData.ts b/src/SalesModule2/_api/_data/productsRelCategoriesData.ts new file mode 100644 index 0000000..b1c6ea4 --- /dev/null +++ b/src/SalesModule2/_api/_data/productsRelCategoriesData.ts @@ -0,0 +1 @@ +export default {} diff --git a/src/SalesModule2/_api/_data/stockActionsData.ts b/src/SalesModule2/_api/_data/stockActionsData.ts new file mode 100644 index 0000000..b1c6ea4 --- /dev/null +++ b/src/SalesModule2/_api/_data/stockActionsData.ts @@ -0,0 +1 @@ +export default {} diff --git a/src/SalesModule2/_api/_data/stocksData.ts b/src/SalesModule2/_api/_data/stocksData.ts new file mode 100644 index 0000000..b1c6ea4 --- /dev/null +++ b/src/SalesModule2/_api/_data/stocksData.ts @@ -0,0 +1 @@ +export default {} diff --git a/src/SalesModule2/_api/_mocks/index.ts b/src/SalesModule2/_api/_mocks/index.ts new file mode 100644 index 0000000..4ef664c --- /dev/null +++ b/src/SalesModule2/_api/_mocks/index.ts @@ -0,0 +1,11 @@ +import MockAdapter from 'axios-mock-adapter' + +import ordersMocks from './ordersMocks' + +const init = (mockAdapter: MockAdapter) => { + ordersMocks.init(mockAdapter) +} + +export default { + init, +} diff --git a/src/SalesModule2/_api/_mocks/ordersMocks.ts b/src/SalesModule2/_api/_mocks/ordersMocks.ts new file mode 100644 index 0000000..b51697c --- /dev/null +++ b/src/SalesModule2/_api/_mocks/ordersMocks.ts @@ -0,0 +1,67 @@ +import uuidv4 from 'uuid/v4' +import moment from 'moment' +import MockAdapter from 'axios-mock-adapter' +import ordersData from '../_data/ordersData' + +export default { + init(mock: MockAdapter) { + mock.onGet('/orders').reply((config: any) => { + console.log('request config:', config) + + const matchingOrders = ordersData.list + const ordersRes = matchingOrders.slice(0, 49) + + return [ + 200, + { + orders: ordersRes, + count: matchingOrders.length, + }, + ] + }) + + // + mock.onGet(/\/orders\/.*?/).reply((config: any) => { + console.log('request config:', config) + + const urlPaths = config.url.split('/') + const orderId = urlPaths[urlPaths.length - 1] + const order = ordersData.byId[orderId] + + if (order) { + return [200, { ...order }] + } else { + return [404, { message: 'User not found ' }] + } + }) + + mock.onPut(/\/orders\/.*?/).reply((config: any) => { + const urlPaths = config.url.split('/') + const orderId = urlPaths[urlPaths.length - 1] + const orderData = JSON.parse(config.data) + const order = ordersData.byId[orderId] + + if (order) { + return [200, { ...order, ...orderData }] + } else { + return [403, { message: 'Update not permitted' }] + } + }) + + mock.onPost(/\/orders/).reply((config: any) => { + const orderData = JSON.parse(config.data) + const order = { + ...orderData, + id: uuidv4(), + createdAt: moment().format(), + updatedAt: moment().format(), + } + + return [200, order] + }) + + mock.onDelete(/\/orders\/\d+/).reply((config: any) => { + return [200, { message: 'Order removed' }] + }) + }, +} diff --git a/src/SalesModule2/_api/customers.ts b/src/SalesModule2/_api/customers.ts new file mode 100644 index 0000000..61c0987 --- /dev/null +++ b/src/SalesModule2/_api/customers.ts @@ -0,0 +1,3 @@ +const customersService = {} + +export default customersService diff --git a/src/SalesModule2/_api/index.ts b/src/SalesModule2/_api/index.ts new file mode 100644 index 0000000..3759697 --- /dev/null +++ b/src/SalesModule2/_api/index.ts @@ -0,0 +1,20 @@ +import { AxiosInstance } from 'axios' +import { ApiInitOptions } from '_api' + +import mocks from './_mocks' +import orders from './orders' +import MockAdapter from 'axios-mock-adapter/types' + +export interface SalesApiInitOptions extends ApiInitOptions { + instance: AxiosInstance + mockAdapter?: MockAdapter +} + +const init = (options: SalesApiInitOptions) => { + if (options.useSampleData && options.mockAdapter) { + mocks.init(options.mockAdapter) + } +} + +export default { init, orders } +export { init, orders } diff --git a/src/SalesModule2/_api/orders.ts b/src/SalesModule2/_api/orders.ts new file mode 100644 index 0000000..d4db084 --- /dev/null +++ b/src/SalesModule2/_api/orders.ts @@ -0,0 +1,46 @@ +import { AxiosResponse } from 'axios' +import Order, { OrderSubmissionData, OrderId } from '../_types/Order' +import apiClient from '_api/client' + +export interface OrdersService { + getOne(orderId: OrderId): Promise<Order> + getList(params?: any): Promise<OrdersListResponse> + create(order: OrderSubmissionData): Promise<Order> + update(orderId: OrderId, order: OrderSubmissionData): Promise<Order> + remove(orderId: OrderId): Promise<any> +} + +export interface OrdersListResponse { + orders: Order[] + count: number +} + +const ordersService: OrdersService = { + getOne(orderId) { + return apiClient + .get(`/orders/${orderId}`) + .then((res: AxiosResponse<Order>) => res.data) + }, + getList(params: any) { + return apiClient + .get(`/orders`, { + params, + }) + .then((res: AxiosResponse<OrdersListResponse>) => res.data) + }, + create(order: OrderSubmissionData) { + return apiClient.post(`/orders`, order).then((res: AxiosResponse<Order>) => res.data) + }, + update(orderId, order) { + return apiClient + .put(`/orders/${orderId}`, order) + .then((res: AxiosResponse<Order>) => res.data) + }, + remove(orderId) { + return apiClient + .delete(`/orders/${orderId}`) + .then((res: AxiosResponse<any>) => res.data) + }, +} + +export default ordersService diff --git a/src/SalesModule2/_api/products.ts b/src/SalesModule2/_api/products.ts new file mode 100644 index 0000000..0cba532 --- /dev/null +++ b/src/SalesModule2/_api/products.ts @@ -0,0 +1,3 @@ +const productsService = {} + +export default productsService diff --git a/src/SalesModule2/_api/productsCategories.ts b/src/SalesModule2/_api/productsCategories.ts new file mode 100644 index 0000000..c760c5f --- /dev/null +++ b/src/SalesModule2/_api/productsCategories.ts @@ -0,0 +1,3 @@ +const productsCategoriesService = {} + +export default productsCategoriesService diff --git a/src/SalesModule2/_services/.gitkeep b/src/SalesModule2/_services/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/SalesModule2/_types/Customer.ts b/src/SalesModule2/_types/Customer.ts new file mode 100644 index 0000000..6fc701f --- /dev/null +++ b/src/SalesModule2/_types/Customer.ts @@ -0,0 +1,10 @@ +import { EntityId } from '_types/Entity' + +export type CustomerId = EntityId + +export default interface Customer { + id?: CustomerId + name?: string + email?: string + details?: object +} diff --git a/src/SalesModule2/_types/EntityOwned.ts b/src/SalesModule2/_types/EntityOwned.ts new file mode 100644 index 0000000..9b97a24 --- /dev/null +++ b/src/SalesModule2/_types/EntityOwned.ts @@ -0,0 +1,12 @@ +import Entity, { EntityId } from '_types/Entity' +import { UserId } from '_types/User' +import { OrganizationId } from '_types/Organization' + +export type EntitiyOwnedId = EntityId + +// The entity may be owned by an organization or an individual user +export default interface EntityOwned extends Entity { + id?: EntityId + ownerUserId?: UserId + owenrOrganizationId?: OrganizationId +} diff --git a/src/SalesModule2/_types/Location.ts b/src/SalesModule2/_types/Location.ts new file mode 100644 index 0000000..9e0a203 --- /dev/null +++ b/src/SalesModule2/_types/Location.ts @@ -0,0 +1,12 @@ +import EntityOwned, { EntitiyOwnedId } from './EntityOwned' + +export type LocationId = EntitiyOwnedId + +export default interface Location extends EntityOwned { + id?: LocationId + location?: { + lat: number + lng: number + } + name: string +} diff --git a/src/SalesModule2/_types/Order.ts b/src/SalesModule2/_types/Order.ts new file mode 100644 index 0000000..378250d --- /dev/null +++ b/src/SalesModule2/_types/Order.ts @@ -0,0 +1,36 @@ +import EntityOwned, { EntitiyOwnedId } from './EntityOwned' + +import { PaymentId } from './Payment' +import { ProductId } from './Product' + +export type OrderId = EntitiyOwnedId +export type OrderStatus = + | 'received' + | 'preparing' + | 'shipped' + | 'delivered' + | 'rejected' + | 'refunded' + +export interface OrderProduct { + id?: ProductId + price?: number + quantity?: number +} + +export interface OrderSubmissionData { + products?: any[] + customerNotes?: string +} + +// Order can be owned by a single account or user +export default interface Order extends EntityOwned { + id?: OrderId + name?: string + status: OrderStatus + customerNotes?: string + staffNotes?: string + paymentId?: PaymentId + products?: any[] + sum: number +} diff --git a/src/SalesModule2/_types/Payment.ts b/src/SalesModule2/_types/Payment.ts new file mode 100644 index 0000000..30f2a85 --- /dev/null +++ b/src/SalesModule2/_types/Payment.ts @@ -0,0 +1,10 @@ +import { EntityId } from '_types/Entity' + +export type PaymentId = EntityId + +export default interface Payment { + id?: PaymentId + status?: string + transactionId?: string + transactionStatus?: string +} diff --git a/src/SalesModule2/_types/Product.ts b/src/SalesModule2/_types/Product.ts new file mode 100644 index 0000000..eee16b1 --- /dev/null +++ b/src/SalesModule2/_types/Product.ts @@ -0,0 +1,25 @@ +import Entity, { EntityId } from '_types/Entity' +import { UserId } from '_types/User' +import { OrganizationId } from '_types/Organization' +import ProductImage from './ProductImage' + +export type ProductId = EntityId + +export interface ProductVariation { + name?: string + price?: number + details?: object +} + +export default interface Product extends Entity { + id?: ProductId + name: string + details?: object + description?: string + variations?: ProductVariation[] + price: number + priceDiscounted?: number + images?: ProductImage[] + ownerUserId?: UserId + ownerOrganizationId?: OrganizationId +} diff --git a/src/SalesModule2/_types/ProductAttachment.ts b/src/SalesModule2/_types/ProductAttachment.ts new file mode 100644 index 0000000..775b04f --- /dev/null +++ b/src/SalesModule2/_types/ProductAttachment.ts @@ -0,0 +1,7 @@ +import Entity, { EntityId } from '_types/Entity' + +export default interface ProductAttachment extends Entity { + id?: EntityId + name?: string + url?: string +} diff --git a/src/SalesModule2/_types/ProductCategory.ts b/src/SalesModule2/_types/ProductCategory.ts new file mode 100644 index 0000000..8a3a307 --- /dev/null +++ b/src/SalesModule2/_types/ProductCategory.ts @@ -0,0 +1,11 @@ +import EntityOwned, { EntitiyOwnedId } from './EntityOwned' +import ProductImage from './ProductImage' + +export type ProductCategoryId = EntitiyOwnedId + +export default interface Category extends EntityOwned { + name: string + description?: string + parentId?: EntitiyOwnedId + images?: ProductImage[] +} diff --git a/src/SalesModule2/_types/ProductImage.ts b/src/SalesModule2/_types/ProductImage.ts new file mode 100644 index 0000000..5dbb54b --- /dev/null +++ b/src/SalesModule2/_types/ProductImage.ts @@ -0,0 +1,7 @@ +import Entity, { EntityId } from '_types/Entity' + +export default interface ProductImage extends Entity { + id?: EntityId + name?: string + url?: string +} diff --git a/src/SalesModule2/_types/ProductToProductCategory.ts b/src/SalesModule2/_types/ProductToProductCategory.ts new file mode 100644 index 0000000..62084b5 --- /dev/null +++ b/src/SalesModule2/_types/ProductToProductCategory.ts @@ -0,0 +1,7 @@ +import { ProductId } from './Product' +import { ProductCategoryId } from './ProductCategory' + +export default interface ProductToProductCategory { + productId: ProductId + productCategoryId: ProductCategoryId +} diff --git a/src/SalesModule2/_types/Stock.ts b/src/SalesModule2/_types/Stock.ts new file mode 100644 index 0000000..7101501 --- /dev/null +++ b/src/SalesModule2/_types/Stock.ts @@ -0,0 +1,8 @@ +import { ProductId } from './Product' +import { LocationId } from './Location' + +export default interface Stock { + productId: ProductId + locationId?: LocationId + qunatity: number +} diff --git a/src/SalesModule2/_types/StockAction.ts b/src/SalesModule2/_types/StockAction.ts new file mode 100644 index 0000000..bc7d9b6 --- /dev/null +++ b/src/SalesModule2/_types/StockAction.ts @@ -0,0 +1,9 @@ +import { ProductId } from './Product' +import { LocationId } from './Location' + +export default interface StockAction { + productId: ProductId + locationId?: LocationId + qunatity: number + action: string +} diff --git a/src/SalesModule2/index.tsx b/src/SalesModule2/index.tsx new file mode 100644 index 0000000..4a32d0b --- /dev/null +++ b/src/SalesModule2/index.tsx @@ -0,0 +1,11 @@ +import api from './_api' +import Sales from './Sales' + +export interface InitOptions {} + +const init = (options: InitOptions) => {} + +const layout = 'DashboardLayout' + +export { default } from './Sales' +export { init, api, layout, Sales } From f6ae27f70aeb37ecf40b4ca05c633622bea592c2 Mon Sep 17 00:00:00 2001 From: Gevorg Harutyunyan <gevharut@gmail.com> Date: Sat, 17 Aug 2019 05:12:55 +0400 Subject: [PATCH 3/5] Layout rerender fix --- docs/references.md | 4 ++++ src/AppRoute.tsx | 21 +++++++++++++++++++++ src/AppRouter.tsx | 23 ++++++++++++++--------- src/DemoModule/Demo.tsx | 15 +++++++-------- src/EmptyModule/_api/index.ts | 1 + src/EmptyModule/index.tsx | 1 + src/SalesModule/Customers/Customers.tsx | 8 +++++--- src/SalesModule/Orders/Orders.tsx | 2 ++ src/SalesModule/Overview/Overview.tsx | 5 ++++- src/SalesModule/Sales.tsx | 17 ++++++++++------- src/_layouts/BlankLayout/index.tsx | 1 + src/_layouts/index.tsx | 15 +++++++++++++++ 12 files changed, 85 insertions(+), 28 deletions(-) create mode 100644 src/AppRoute.tsx create mode 100644 src/_layouts/index.tsx diff --git a/docs/references.md b/docs/references.md index f9122ed..c259fd3 100644 --- a/docs/references.md +++ b/docs/references.md @@ -14,6 +14,10 @@ https://www.robinwieruch.de/react-state-usereducer-usestate-usecontext/ React with Redux and hooks https://medium.com/@koss_lebedev/rematch-with-hooks-50a8380c46e4 +Layouts +https://stackoverflow.com/questions/33996484/using-multiple-layouts-for-react-router-components +https://gist.github.com/avinmathew/e82fe7e757b20cb337d5219e0ab8dc2c + #### TypeScript Typescript Book: diff --git a/src/AppRoute.tsx b/src/AppRoute.tsx new file mode 100644 index 0000000..65c0918 --- /dev/null +++ b/src/AppRoute.tsx @@ -0,0 +1,21 @@ +import React from 'react' +import { Route } from 'react-router-dom' + +const AppRoute = ({ component: Component, layout: Layout, ...rest }: any) => ( + <Route + {...rest} + render={props => { + if (Layout) { + return ( + <Layout> + <Component {...props} /> + </Layout> + ) + } else { + return <Component {...props} /> + } + }} + /> +) + +export default AppRoute diff --git a/src/AppRouter.tsx b/src/AppRouter.tsx index 41db6d4..84f0ea4 100644 --- a/src/AppRouter.tsx +++ b/src/AppRouter.tsx @@ -13,6 +13,9 @@ import config from './_config' import authService from './_services/authService' import { useAppState, useAppStateMethods } from './_state/appState' +import AppRoute from './AppRoute' +import DashboardLayout from '_layouts/DashboardLayout' + // Import application modules import Sales from './SalesModule' import Content from './ContentModule' @@ -41,13 +44,13 @@ const LoggedInRouter = () => { return ( <Switch> <Route exact path="/" render={() => <Redirect to="/sales/dashboard" />} /> - <Route path={`/sales`} component={Sales} /> - <Route path={`/content`} component={Content} /> - <Route path={`/admin`} component={Admin} /> - <Route path={`/profile`} component={Profile} /> - <Route path={`/account`} component={Organization} /> - <Route path={`/demo`} component={Demo} /> - <Route component={NotFound} /> + <AppRoute path={`/sales`} component={Sales} layout={DashboardLayout} /> + <AppRoute path={`/content`} component={Content} layout={DashboardLayout} /> + <AppRoute path={`/admin`} component={Admin} layout={DashboardLayout} /> + <AppRoute path={`/profile`} component={Profile} layout={DashboardLayout} /> + <AppRoute path={`/account`} component={Organization} layout={DashboardLayout} /> + <AppRoute path={`/demo`} component={Demo} layout={DashboardLayout} /> + <AppRoute component={NotFound} layout={DashboardLayout} /> </Switch> ) } @@ -58,8 +61,10 @@ const AppRouterComponent: React.ComponentType<any> = const AppRouter: React.FC = () => ( <AppRouterComponent> - <Route path="/auth" component={Auth} /> - <PrivateRoute path="/" component={LoggedInRouter} /> + <Switch> + <Route path="/auth" component={Auth} /> + <PrivateRoute path="/" component={LoggedInRouter} /> + </Switch> </AppRouterComponent> ) diff --git a/src/DemoModule/Demo.tsx b/src/DemoModule/Demo.tsx index 81004ca..692bfa0 100644 --- a/src/DemoModule/Demo.tsx +++ b/src/DemoModule/Demo.tsx @@ -1,6 +1,7 @@ import React from 'react' import { Switch, Route, RouteComponentProps } from 'react-router-dom' +import AppRoute from 'AppRoute' import DashboardLayout from '_layouts/DashboardLayout' import Features from './Features' @@ -12,14 +13,12 @@ export interface DemoProps extends RouteComponentProps {} const Demo: React.FC<DemoProps> = ({ match }) => { return ( - <DashboardLayout> - <Switch> - <Route path={`${match.url}/features`} component={Features} /> - <Route path={`${match.url}/docs`} component={Docs} /> - <Route path={`${match.url}/supporters`} component={Supporters} /> - <Route path={`${match.url}/discuss`} component={Discuss} /> - </Switch> - </DashboardLayout> + <Switch> + <AppRoute path={`${match.url}/features`} component={Features} /> + <AppRoute path={`${match.url}/docs`} component={Docs} /> + <AppRoute path={`${match.url}/supporters`} component={Supporters} /> + <AppRoute path={`${match.url}/discuss`} component={Discuss} /> + </Switch> ) } diff --git a/src/EmptyModule/_api/index.ts b/src/EmptyModule/_api/index.ts index e69de29..b1c6ea4 100644 --- a/src/EmptyModule/_api/index.ts +++ b/src/EmptyModule/_api/index.ts @@ -0,0 +1 @@ +export default {} diff --git a/src/EmptyModule/index.tsx b/src/EmptyModule/index.tsx index e69de29..b1c6ea4 100644 --- a/src/EmptyModule/index.tsx +++ b/src/EmptyModule/index.tsx @@ -0,0 +1 @@ +export default {} diff --git a/src/SalesModule/Customers/Customers.tsx b/src/SalesModule/Customers/Customers.tsx index 3e9f31e..febf349 100644 --- a/src/SalesModule/Customers/Customers.tsx +++ b/src/SalesModule/Customers/Customers.tsx @@ -2,14 +2,14 @@ import React from 'react' // import clsx from 'clsx' import { makeStyles } from '@material-ui/core/styles' +// import DashboardLayout from '_layouts/DashboardLayout' +// import { withDashboardLayout } from '_layouts' import PageContainer from '../../_common/PageContainer' - -// import Grid from '@material-ui/core/Grid' import Paper from '@material-ui/core/Paper' import { Theme } from '_theme' -export default function Customers() { +const Customers = () => { const classes = useStyles() return ( @@ -20,3 +20,5 @@ export default function Customers() { } const useStyles = makeStyles((theme: Theme) => ({})) + +export default Customers diff --git a/src/SalesModule/Orders/Orders.tsx b/src/SalesModule/Orders/Orders.tsx index 44090af..d494b83 100644 --- a/src/SalesModule/Orders/Orders.tsx +++ b/src/SalesModule/Orders/Orders.tsx @@ -6,6 +6,8 @@ import Button from '@material-ui/core/Button' // import { Theme } from '_theme' +// import DashboardLayout from '_layouts/DashboardLayout' +// import { withDashboardLayout } from '_layouts' import PageContainer from '../../_common/PageContainer' import PageToolbar from '../../_common/PageToolbar' diff --git a/src/SalesModule/Overview/Overview.tsx b/src/SalesModule/Overview/Overview.tsx index a52b514..90d5b36 100644 --- a/src/SalesModule/Overview/Overview.tsx +++ b/src/SalesModule/Overview/Overview.tsx @@ -5,6 +5,7 @@ import moment from 'moment' import Grid from '@material-ui/core/Grid' +// import { withDashboardLayout } from '_layouts' import PageContainer from '../../_common/PageContainer' import PageToolbar from '../../_common/PageToolbar' @@ -14,7 +15,7 @@ import SalesDashboardActions from './OverviewActions' import OrdersHistory from './OrdersHistory' import OrdersLatest from './OrdersLatest' -export default function SalesDashboard() { +const SalesDashboard = () => { const [filter, setFilter] = useState({ dateFrom: moment() .subtract(14, 'day') @@ -59,3 +60,5 @@ export default function SalesDashboard() { // paddingBottom: theme.spacing(4), // }, // })) + +export default SalesDashboard diff --git a/src/SalesModule/Sales.tsx b/src/SalesModule/Sales.tsx index cbc553f..283a926 100644 --- a/src/SalesModule/Sales.tsx +++ b/src/SalesModule/Sales.tsx @@ -1,6 +1,7 @@ import React from 'react' import { Switch, Route, RouteComponentProps } from 'react-router-dom' +import AppRoute from 'AppRoute' import DashboardLayout from '_layouts/DashboardLayout' import Overview from './Overview' import Orders from './Orders' @@ -10,13 +11,15 @@ export interface SalesProps extends RouteComponentProps {} const Sales = ({ match }: SalesProps) => { return ( - <DashboardLayout> - <Switch> - <Route path={`${match.url}/dashboard`} component={Overview} /> - <Route path={`${match.url}/orders`} component={Orders} /> - <Route path={`${match.url}/customers`} component={Customers} /> - </Switch> - </DashboardLayout> + <Switch> + {/* <Route path={`${match.url}/dashboard`} component={Overview} /> */} + {/* <Route path={`${match.url}/orders`} component={Orders} /> */} + {/* <Route path={`${match.url}/customers`} component={Customers} /> */} + + <AppRoute path={`${match.url}/dashboard`} component={Overview} /> + <AppRoute path={`${match.url}/orders`} component={Orders} /> + <AppRoute path={`${match.url}/customers`} component={Customers} /> + </Switch> ) } diff --git a/src/_layouts/BlankLayout/index.tsx b/src/_layouts/BlankLayout/index.tsx index e69de29..1348e74 100644 --- a/src/_layouts/BlankLayout/index.tsx +++ b/src/_layouts/BlankLayout/index.tsx @@ -0,0 +1 @@ +export { default } from './BlankLayout' diff --git a/src/_layouts/index.tsx b/src/_layouts/index.tsx new file mode 100644 index 0000000..32170f6 --- /dev/null +++ b/src/_layouts/index.tsx @@ -0,0 +1,15 @@ +import React from 'react' +import BlankLayout from './BlankLayout' +import DashboardLayout from './DashboardLayout' + +const Wrapper = DashboardLayout + +const withDashboardLayout = (WrappedComponent: React.ComponentType<any>) => { + return () => ( + <Wrapper> + <WrappedComponent /> + </Wrapper> + ) +} + +export { withDashboardLayout } From b47cfcd205ef29644fbd6eccc2a12c5b2f580bdf Mon Sep 17 00:00:00 2001 From: Gevorg Harutyunyan <gevharut@gmail.com> Date: Sat, 17 Aug 2019 05:26:07 +0400 Subject: [PATCH 4/5] Restructure --- src/AppRoute.tsx | 21 --------------------- src/AppRouter.tsx | 22 +++++++++++++++++++--- src/DemoModule/Demo.tsx | 11 ++++------- src/SalesModule/Sales.tsx | 13 +++---------- 4 files changed, 26 insertions(+), 41 deletions(-) delete mode 100644 src/AppRoute.tsx diff --git a/src/AppRoute.tsx b/src/AppRoute.tsx deleted file mode 100644 index 65c0918..0000000 --- a/src/AppRoute.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react' -import { Route } from 'react-router-dom' - -const AppRoute = ({ component: Component, layout: Layout, ...rest }: any) => ( - <Route - {...rest} - render={props => { - if (Layout) { - return ( - <Layout> - <Component {...props} /> - </Layout> - ) - } else { - return <Component {...props} /> - } - }} - /> -) - -export default AppRoute diff --git a/src/AppRouter.tsx b/src/AppRouter.tsx index 84f0ea4..ca9aa31 100644 --- a/src/AppRouter.tsx +++ b/src/AppRouter.tsx @@ -13,13 +13,12 @@ import config from './_config' import authService from './_services/authService' import { useAppState, useAppStateMethods } from './_state/appState' -import AppRoute from './AppRoute' import DashboardLayout from '_layouts/DashboardLayout' // Import application modules import Sales from './SalesModule' import Content from './ContentModule' -import Admin from './AdministrationModule' +import Administration from './AdministrationModule' // Import core modules import Auth from './AuthModule/Auth' @@ -46,7 +45,7 @@ const LoggedInRouter = () => { <Route exact path="/" render={() => <Redirect to="/sales/dashboard" />} /> <AppRoute path={`/sales`} component={Sales} layout={DashboardLayout} /> <AppRoute path={`/content`} component={Content} layout={DashboardLayout} /> - <AppRoute path={`/admin`} component={Admin} layout={DashboardLayout} /> + <AppRoute path={`/admin`} component={Administration} layout={DashboardLayout} /> <AppRoute path={`/profile`} component={Profile} layout={DashboardLayout} /> <AppRoute path={`/account`} component={Organization} layout={DashboardLayout} /> <AppRoute path={`/demo`} component={Demo} layout={DashboardLayout} /> @@ -68,6 +67,23 @@ const AppRouter: React.FC = () => ( </AppRouterComponent> ) +const AppRoute = ({ component: Component, layout: Layout, ...rest }: any) => ( + <Route + {...rest} + render={props => { + if (Layout) { + return ( + <Layout> + <Component {...props} /> + </Layout> + ) + } else { + return <Component {...props} /> + } + }} + /> +) + // See https://reacttraining.com/react-router/web/example/auth-workflow const PrivateRoute: React.FC<RouteProps> = ({ component: Component, diff --git a/src/DemoModule/Demo.tsx b/src/DemoModule/Demo.tsx index 692bfa0..7918c62 100644 --- a/src/DemoModule/Demo.tsx +++ b/src/DemoModule/Demo.tsx @@ -1,9 +1,6 @@ import React from 'react' import { Switch, Route, RouteComponentProps } from 'react-router-dom' -import AppRoute from 'AppRoute' -import DashboardLayout from '_layouts/DashboardLayout' - import Features from './Features' import Docs from './Docs' import Supporters from './Supporters' @@ -14,10 +11,10 @@ export interface DemoProps extends RouteComponentProps {} const Demo: React.FC<DemoProps> = ({ match }) => { return ( <Switch> - <AppRoute path={`${match.url}/features`} component={Features} /> - <AppRoute path={`${match.url}/docs`} component={Docs} /> - <AppRoute path={`${match.url}/supporters`} component={Supporters} /> - <AppRoute path={`${match.url}/discuss`} component={Discuss} /> + <Route path={`${match.url}/features`} component={Features} /> + <Route path={`${match.url}/docs`} component={Docs} /> + <Route path={`${match.url}/supporters`} component={Supporters} /> + <Route path={`${match.url}/discuss`} component={Discuss} /> </Switch> ) } diff --git a/src/SalesModule/Sales.tsx b/src/SalesModule/Sales.tsx index 283a926..75d428f 100644 --- a/src/SalesModule/Sales.tsx +++ b/src/SalesModule/Sales.tsx @@ -1,8 +1,5 @@ import React from 'react' import { Switch, Route, RouteComponentProps } from 'react-router-dom' - -import AppRoute from 'AppRoute' -import DashboardLayout from '_layouts/DashboardLayout' import Overview from './Overview' import Orders from './Orders' import Customers from './Customers' @@ -12,13 +9,9 @@ export interface SalesProps extends RouteComponentProps {} const Sales = ({ match }: SalesProps) => { return ( <Switch> - {/* <Route path={`${match.url}/dashboard`} component={Overview} /> */} - {/* <Route path={`${match.url}/orders`} component={Orders} /> */} - {/* <Route path={`${match.url}/customers`} component={Customers} /> */} - - <AppRoute path={`${match.url}/dashboard`} component={Overview} /> - <AppRoute path={`${match.url}/orders`} component={Orders} /> - <AppRoute path={`${match.url}/customers`} component={Customers} /> + <Route path={`${match.url}/dashboard`} component={Overview} /> + <Route path={`${match.url}/orders`} component={Orders} /> + <Route path={`${match.url}/customers`} component={Customers} /> </Switch> ) } From d4394e05f7b872454d0eda02fe4b132555ee7188 Mon Sep 17 00:00:00 2001 From: Gevorg Harutyunyan <gevharut@gmail.com> Date: Sat, 17 Aug 2019 05:30:37 +0400 Subject: [PATCH 5/5] Components renaming --- src/AppRouter.tsx | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/AppRouter.tsx b/src/AppRouter.tsx index ca9aa31..89c00d2 100644 --- a/src/AppRouter.tsx +++ b/src/AppRouter.tsx @@ -43,13 +43,21 @@ const LoggedInRouter = () => { return ( <Switch> <Route exact path="/" render={() => <Redirect to="/sales/dashboard" />} /> - <AppRoute path={`/sales`} component={Sales} layout={DashboardLayout} /> - <AppRoute path={`/content`} component={Content} layout={DashboardLayout} /> - <AppRoute path={`/admin`} component={Administration} layout={DashboardLayout} /> - <AppRoute path={`/profile`} component={Profile} layout={DashboardLayout} /> - <AppRoute path={`/account`} component={Organization} layout={DashboardLayout} /> - <AppRoute path={`/demo`} component={Demo} layout={DashboardLayout} /> - <AppRoute component={NotFound} layout={DashboardLayout} /> + <RouteWithLayout path={`/sales`} component={Sales} layout={DashboardLayout} /> + <RouteWithLayout path={`/content`} component={Content} layout={DashboardLayout} /> + <RouteWithLayout + path={`/admin`} + component={Administration} + layout={DashboardLayout} + /> + <RouteWithLayout path={`/profile`} component={Profile} layout={DashboardLayout} /> + <RouteWithLayout + path={`/account`} + component={Organization} + layout={DashboardLayout} + /> + <RouteWithLayout path={`/demo`} component={Demo} layout={DashboardLayout} /> + <RouteWithLayout component={NotFound} layout={DashboardLayout} /> </Switch> ) } @@ -62,12 +70,12 @@ const AppRouter: React.FC = () => ( <AppRouterComponent> <Switch> <Route path="/auth" component={Auth} /> - <PrivateRoute path="/" component={LoggedInRouter} /> + <RoutePrivate path="/" component={LoggedInRouter} /> </Switch> </AppRouterComponent> ) -const AppRoute = ({ component: Component, layout: Layout, ...rest }: any) => ( +const RouteWithLayout = ({ component: Component, layout: Layout, ...rest }: any) => ( <Route {...rest} render={props => { @@ -85,7 +93,7 @@ const AppRoute = ({ component: Component, layout: Layout, ...rest }: any) => ( ) // See https://reacttraining.com/react-router/web/example/auth-workflow -const PrivateRoute: React.FC<RouteProps> = ({ +const RoutePrivate: React.FC<RouteProps> = ({ component: Component, ...rest }: RouteProps) => {