Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f66f92c58d | |||
| 599e8a7715 | |||
| 97b75e0d9b |
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
@@ -2,14 +2,16 @@ import { useQuery } from '@tanstack/react-query'
|
||||
import BreadcrumbComBS from "../breadcrumb/BreadcrumbComBS";
|
||||
// import getImage from "../../utils/getImage";
|
||||
import ProductStart from "./ProductStart";
|
||||
import { useLocation } from 'react-router-dom';
|
||||
import { useLocation, useNavigate } from 'react-router-dom';
|
||||
import {MyProductData} from "../../services/services";
|
||||
import ProductActive from "./ProductActive";
|
||||
import ProductProvision from "./ProductProvision";
|
||||
import {productConst} from "../../constants/products";
|
||||
import queryKeys from "../../services/queryKeys";
|
||||
import siteLinks from '../../links/siteLinks';
|
||||
|
||||
export default function ProductFactory(){
|
||||
const navigate = useNavigate()
|
||||
const location = useLocation();
|
||||
const pathname = location.pathname;
|
||||
|
||||
@@ -45,8 +47,9 @@ export default function ProductFactory(){
|
||||
</>
|
||||
: isError ?
|
||||
<div className="row">
|
||||
<div className="col-12">
|
||||
<div className="text-center col-12" style={{minHeight: '500px', placeContent: 'center'}}>
|
||||
<p className='text-danger'>{error?.message}</p>
|
||||
<button onClick={() => navigate(siteLinks.home)} className='mt-3 btn btn-primary'>Return Home</button>
|
||||
</div>
|
||||
</div>
|
||||
:
|
||||
|
||||
@@ -5,6 +5,7 @@ import SiteTemplateSelector from './SiteTemplateSelector';
|
||||
import NoYesBooleanDropdown from './NoYesBooleanDropdown';
|
||||
import {IoMdArrowDropdown} from 'react-icons/io';
|
||||
import queryKeys from '../../../services/queryKeys';
|
||||
import sortObjectByListOrder from '../../../helpers/sortObjectByListOrder';
|
||||
|
||||
const GeneralTab = memo(({name = 'Full Name', data, isCustom, productData, backendValues, setFieldsChanged}) => {
|
||||
|
||||
@@ -27,9 +28,11 @@ const GeneralTab = memo(({name = 'Full Name', data, isCustom, productData, backe
|
||||
|
||||
const [fields, setFields] = useState({})
|
||||
|
||||
const sortedData = sortObjectByListOrder(data ? data : {}) // SORTED SETTINGSCONFIG
|
||||
|
||||
useEffect(() => {
|
||||
const fieldData = {}
|
||||
Object.entries(data)?.forEach(([key, value]) => { // LOOP TO POPULATE FIELDDATA PROPERTIES WITH DATA OF EACH TAB
|
||||
Object.entries(sortedData)?.forEach(([key, value]) => { // LOOP TO POPULATE FIELDDATA PROPERTIES WITH DATA OF EACH TAB
|
||||
fieldData[value?.name?.toLowerCase().replaceAll(" ", "_")] = ''
|
||||
})
|
||||
backendValues?.data?.forEach(item => { //LOOPING THROUGH USER ALREADY ADDED DATA FROM BACKEND IF ANY AND UPDATING THE FIELDDATA OBJECT
|
||||
@@ -98,7 +101,7 @@ const GeneralTab = memo(({name = 'Full Name', data, isCustom, productData, backe
|
||||
:
|
||||
<>
|
||||
{isCustom === true ?
|
||||
<SiteTemplateSelector name={name} data={data} isCustom={isCustom}
|
||||
<SiteTemplateSelector name={name} data={sortedData} isCustom={isCustom}
|
||||
productData={productData}/>
|
||||
:
|
||||
<div className="page-account-form">
|
||||
@@ -107,7 +110,7 @@ const GeneralTab = memo(({name = 'Full Name', data, isCustom, productData, backe
|
||||
<form id='tab_form'>
|
||||
<div className="form-row">
|
||||
<>
|
||||
{Object.entries(data)?.map(([key, value]) => {
|
||||
{Object.entries(sortedData)?.map(([key, value]) => {
|
||||
let fieldName = key; // value.key.toLowerCase().replaceAll(" ", "_")
|
||||
let fieldValue = fields[key]; //fields[value.name.toLowerCase().replaceAll(" ", "_")]
|
||||
return (
|
||||
|
||||
@@ -4,6 +4,7 @@ import { getSettingsData, getMyProductConfig } from '../../../services/services'
|
||||
import queryKeys from '../../../services/queryKeys';
|
||||
import { useSelector } from 'react-redux';
|
||||
import { useQuery } from '@tanstack/react-query';
|
||||
import sortObjectByListOrder from '../../../helpers/sortObjectByListOrder'
|
||||
|
||||
const Settings = memo(({productData}) => {
|
||||
|
||||
@@ -59,6 +60,8 @@ const Settings = memo(({productData}) => {
|
||||
const settingsData = {data: data?.data?.settings, isFetching, isError, error}
|
||||
// console.log('data', settingsData)
|
||||
|
||||
const sortedSettingsConfig = sortObjectByListOrder(settingsConfig ? settingsConfig : {}) // SORTED SETTINGSCONFIG
|
||||
|
||||
return (
|
||||
<>
|
||||
{configIsFetching ?
|
||||
@@ -79,7 +82,7 @@ const Settings = memo(({productData}) => {
|
||||
<div className="tab tab-vertical">
|
||||
<ul className="nav nav-tabs" role="tablist">
|
||||
<>
|
||||
{Object.entries(settingsConfig).map(([key, value], index) => (
|
||||
{Object.entries(sortedSettingsConfig).map(([key, value], index) => (
|
||||
<li key={key} className="nav-item">
|
||||
<a className={`nav-link ${(activeTab == value.controls || (index == 0 & !activeTab)) && 'active show'}`}
|
||||
id={key}
|
||||
@@ -99,7 +102,7 @@ const Settings = memo(({productData}) => {
|
||||
</ul>
|
||||
<div className="tab-content">
|
||||
<>
|
||||
{Object.entries(settingsConfig).map(([key, value], index) => (
|
||||
{Object.entries(sortedSettingsConfig).map(([key, value], index) => (
|
||||
<div key={key} className={`tab-pane fade ${(activeTab == value.controls || (index == 0 & !activeTab)) && 'active show'}`}
|
||||
// id={value.controls} role="tabpanel"
|
||||
// aria-labelledby={key}
|
||||
@@ -116,4 +119,4 @@ const Settings = memo(({productData}) => {
|
||||
}
|
||||
)
|
||||
|
||||
export default Settings
|
||||
export default Settings
|
||||
@@ -1,15 +1,19 @@
|
||||
import React from "react";
|
||||
import BreadcrumbComBS from "../breadcrumb/BreadcrumbComBS";
|
||||
import getImage from "../../utils/getImage";
|
||||
//const imP = '../../../../src/assets/img/side-banner.jpg'
|
||||
|
||||
export default function Start() {
|
||||
|
||||
export default function Start(){
|
||||
const bgImg = getImage("side-banner.jpg");
|
||||
|
||||
return(
|
||||
return (
|
||||
<>
|
||||
<BreadcrumbComBS title='Get Started...' paths={['Dashboard', 'Start']} />
|
||||
<BreadcrumbComBS title='Get Started...' paths={['Dashboard', 'Start']}/>
|
||||
<div className="row">
|
||||
<div className="col-xl-3 col-md-6">
|
||||
<div className="card card-statistics text-center py-3">
|
||||
<div className="card card-statistics text-center py-3"
|
||||
style={{minHeight: '350px', backgroundImage: `url(${bgImg})`}}>
|
||||
<div className="card-body pricing-content">
|
||||
{/*<div className="pricing-content-card">*/}
|
||||
{/* <h5>Premium</h5>*/}
|
||||
@@ -33,7 +37,7 @@ export default function Start(){
|
||||
<div className="card-body pricing-content">
|
||||
<div className="pricing-content-card">
|
||||
<h5>Start with</h5>
|
||||
<h2 className="text-primary pt-3" ><a href="/product/A000001">Personal Website</a></h2>
|
||||
<h2 className="text-primary pt-3"><a href="/product/A000001">Personal Website</a></h2>
|
||||
<ul className="py-2">
|
||||
<li>post jobs</li>
|
||||
<li>advanced instructors search</li>
|
||||
@@ -41,7 +45,8 @@ export default function Start(){
|
||||
<li>post events</li>
|
||||
<li>cancel any time</li>
|
||||
</ul>
|
||||
<div className="pt-2"><a href="/product/A000001" className="btn btn-inverse-secondary btn-round btn-sm">go premium</a></div>
|
||||
<div className="pt-2"><a href="/product/A000001"
|
||||
className="btn btn-primary btn-round btn-sm">Start</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -60,30 +65,31 @@ export default function Start(){
|
||||
<li>post events</li>
|
||||
<li>cancel any time</li>
|
||||
</ul>
|
||||
<div className="pt-2"><a href="/product/A000001" className="btn btn-inverse-secondary btn-round btn-sm">go premium</a></div>
|
||||
<div className="pt-2"><a href="/product/A000001"
|
||||
className="btn btn-primary btn-round btn-sm">Start</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="col-xl-3 col-md-6">
|
||||
<div className="card card-statistics text-center py-3">
|
||||
<div className="card-body pricing-content">
|
||||
{/*<div className="pricing-content-card">*/}
|
||||
{/* <h5>small</h5>*/}
|
||||
{/* <h2 className="text-primary pt-3">$80</h2>*/}
|
||||
{/* <p className="text-primary pb-3">/ Monthly</p>*/}
|
||||
{/* <ul className="py-2">*/}
|
||||
{/* <li>post jobs</li>*/}
|
||||
{/* <li>advanced instructors search</li>*/}
|
||||
{/* <li>invite candidates</li>*/}
|
||||
{/* <li>post events</li>*/}
|
||||
{/* <li>cancel any time</li>*/}
|
||||
{/* </ul>*/}
|
||||
{/* <div className="pt-2"><a href="javascript:void(0)" className="btn btn-inverse-secondary btn-round btn-sm">go premium</a></div>*/}
|
||||
{/*</div>*/}
|
||||
</div>
|
||||
</div>
|
||||
{/*<div className="card card-statistics text-center py-3">*/}
|
||||
{/*<div className="card-body pricing-content">*/}
|
||||
{/*<div className="pricing-content-card">*/}
|
||||
{/* <h5>small</h5>*/}
|
||||
{/* <h2 className="text-primary pt-3">$80</h2>*/}
|
||||
{/* <p className="text-primary pb-3">/ Monthly</p>*/}
|
||||
{/* <ul className="py-2">*/}
|
||||
{/* <li>post jobs</li>*/}
|
||||
{/* <li>advanced instructors search</li>*/}
|
||||
{/* <li>invite candidates</li>*/}
|
||||
{/* <li>post events</li>*/}
|
||||
{/* <li>cancel any time</li>*/}
|
||||
{/* </ul>*/}
|
||||
{/* <div className="pt-2"><a href="javascript:void(0)" className="btn btn-inverse-secondary btn-round btn-sm">go premium</a></div>*/}
|
||||
{/*</div>*/}
|
||||
{/*</div>*/}
|
||||
{/*</div>*/}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
const sortObjectByListOrder = (data) => {
|
||||
const sortedEntriesByValue = Object.entries(data).sort((a, b) => {
|
||||
if(a[1].list_order > b[1].list_order){
|
||||
return 1
|
||||
}else{
|
||||
return -1
|
||||
}
|
||||
}); // Sorts numerically by value
|
||||
|
||||
const sortedObjectByValue = Object.fromEntries(sortedEntriesByValue);
|
||||
return sortedObjectByValue
|
||||
}
|
||||
|
||||
export default sortObjectByListOrder
|
||||
@@ -26,7 +26,8 @@ const postAuxEnd = (path, postData, media=false) => {
|
||||
return axios.post(`${basePath}${path}`, postData).then(res => {
|
||||
return res
|
||||
}).catch(err => {
|
||||
throw new Error(err.response.data.msg);
|
||||
// console.log('res', err.response.data)
|
||||
throw new Error(err.response.data.error_message);
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user