- added cache faq items;
- added terms pdf; - added redirect to 'add company' for new users;
This commit is contained in:
@@ -75,6 +75,7 @@ const AddCompany = () => {
|
||||
} else {
|
||||
newCompanies = [...companies, company];
|
||||
storeSet.main.chosenCompanyId(company.id);
|
||||
console.log('set company 1', company.id)
|
||||
}
|
||||
|
||||
storeSet.main.companies(newCompanies);
|
||||
|
||||
@@ -140,7 +140,8 @@ const AllBandiTable = () => {
|
||||
filters={filters}
|
||||
globalFilterFields={['name', 'status']}
|
||||
header={header}
|
||||
emptyMessage="Nothing found." onFilter={(e) => setFilters(e.filters)}>
|
||||
emptyMessage={__('Nessun dato disponibile', 'gepafin')}
|
||||
onFilter={(e) => setFilters(e.filters)}>
|
||||
<Column field="name" header={__('Nome Bando', 'gepafin')}
|
||||
filter filterPlaceholder={__('Cerca', 'gepafin')}
|
||||
style={{ minWidth: '12rem' }}/>
|
||||
|
||||
@@ -126,8 +126,13 @@ const AllBandiAccordion = () => {
|
||||
|
||||
return(
|
||||
<div className="appPageSection__table">
|
||||
<DataTable value={items} paginator rows={10} loading={isAsyncRequest} dataKey="id"
|
||||
filters={filters} emptyMessage="Nothing found."
|
||||
<DataTable value={items}
|
||||
paginator
|
||||
rows={10}
|
||||
loading={isAsyncRequest}
|
||||
dataKey="id"
|
||||
filters={filters}
|
||||
emptyMessage={__('Nessun dato disponibile', 'gepafin')}
|
||||
expandedRows={expandedRows}
|
||||
onRowToggle={(e) => setExpandedRows(e.data)}
|
||||
rowExpansionTemplate={rowExpansionTemplate}
|
||||
|
||||
@@ -42,7 +42,7 @@ const ElementSetting = ({ setting, changeFn, updateDataFn }) => {
|
||||
};
|
||||
|
||||
const header = renderHeader();
|
||||
|
||||
console.log('setting', setting)
|
||||
const getProperField = (setting) => {
|
||||
if (setting.name === 'options') {
|
||||
return <ElementSettingRepeater
|
||||
|
||||
@@ -112,19 +112,6 @@ const BandoViewBeneficiario = () => {
|
||||
const createCallBack = (data) => {
|
||||
if (data.status === 'SUCCESS') {
|
||||
setNewQuestion('');
|
||||
/*if (bandoMsgs.current && data.message) {
|
||||
bandoMsgs.current.show([
|
||||
{
|
||||
sticky: true, severity: 'success', summary: '',
|
||||
detail: data.message,
|
||||
closable: true
|
||||
}
|
||||
]);
|
||||
|
||||
setTimeout(() => {
|
||||
bandoMsgs.current.clear();
|
||||
}, 5000);
|
||||
}*/
|
||||
if (toast.current) {
|
||||
toast.current.show({
|
||||
severity: 'success',
|
||||
@@ -355,7 +342,7 @@ const BandoViewBeneficiario = () => {
|
||||
label={__('Salva', 'gepafin')}/>
|
||||
</div>
|
||||
|
||||
{chosenCompanyId === 0
|
||||
{!chosenCompanyId || chosenCompanyId === 0
|
||||
? <>
|
||||
<Message severity="error"
|
||||
text={__('Devi creare un\'azienda prima di partecipare nei bandi. Vai nel profilo aziendale.', 'gepafin')}/>
|
||||
|
||||
@@ -183,7 +183,8 @@ const LatestBandiTable = () => {
|
||||
filters={filters}
|
||||
globalFilterFields={['name', 'status']}
|
||||
header={header}
|
||||
emptyMessage="Nothing found." onFilter={(e) => setFilters(e.filters)}>
|
||||
emptyMessage={__('Nessun dato disponibile', 'gepafin')}
|
||||
onFilter={(e) => setFilters(e.filters)}>
|
||||
<Column field="name" header={__('Nome Bando', 'gepafin')} filter filterPlaceholder="Search by name"
|
||||
style={{ minWidth: '12rem' }}/>
|
||||
<Column header={__('Data Pubblicazione', 'gepafin')} filterField="start_date" dataType="date"
|
||||
|
||||
@@ -107,7 +107,8 @@ const LatestUsersActivityTable = () => {
|
||||
filters={filters}
|
||||
globalFilterFields={['name', 'status']}
|
||||
header={header}
|
||||
emptyMessage="Nothing found." onFilter={(e) => setFilters(e.filters)}>
|
||||
emptyMessage={__('Nessun dato disponibile', 'gepafin')}
|
||||
onFilter={(e) => setFilters(e.filters)}>
|
||||
<Column header={__('Timestamp', 'gepafin')} filterField="date" dataType="date"
|
||||
style={{ minWidth: '10rem' }}
|
||||
body={dateBodyTemplate} filter filterElement={dateFilterTemplate}/>
|
||||
|
||||
@@ -151,7 +151,8 @@ const LatestBandiTable = () => {
|
||||
filters={filters}
|
||||
globalFilterFields={['name', 'status']}
|
||||
header={header}
|
||||
emptyMessage="Nothing found." onFilter={(e) => setFilters(e.filters)}>
|
||||
emptyMessage={__('Nessun dato disponibile', 'gepafin')}
|
||||
onFilter={(e) => setFilters(e.filters)}>
|
||||
<Column field="name" header={__('Nome Bando', 'gepafin')} filter filterPlaceholder="Search by name"
|
||||
style={{ minWidth: '12rem' }}/>
|
||||
<Column header={__('Data Pubblicazione', 'gepafin')} filterField="start_date" dataType="date"
|
||||
|
||||
@@ -166,7 +166,8 @@ const MyLatestSubmissionsTable = () => {
|
||||
filters={filters}
|
||||
globalFilterFields={['name', 'status']}
|
||||
header={header}
|
||||
emptyMessage="Nothing found." onFilter={(e) => setFilters(e.filters)}>
|
||||
emptyMessage={__('Nessun dato disponibile', 'gepafin')}
|
||||
onFilter={(e) => setFilters(e.filters)}>
|
||||
<Column field="callTitle" header={__('Bando', 'gepafin')} filter filterPlaceholder="Search by name"
|
||||
style={{ minWidth: '12rem' }}/>
|
||||
<Column header={__('Scadenza', 'gepafin')} filterField="callEndDate" dataType="date"
|
||||
|
||||
@@ -6,11 +6,16 @@ import { isEmpty, isNil } from 'ramda';
|
||||
// store
|
||||
import { storeSet, useStore } from '../../store';
|
||||
|
||||
// api
|
||||
import AuthenticationService from '../../service/authentication-service';
|
||||
|
||||
// components
|
||||
import LogoIcon from '../../icons/LogoIcon';
|
||||
import { Messages } from 'primereact/messages';
|
||||
import { useSearchParams } from 'react-router-dom';
|
||||
import AuthenticationService from '../../service/authentication-service';
|
||||
import { Dialog } from 'primereact/dialog';
|
||||
import { Accordion } from 'primereact/accordion';
|
||||
import { AccordionTab } from 'primereact/accordion';
|
||||
|
||||
const API_BASE_URL = process.env.REACT_APP_API_ADDRESS;
|
||||
|
||||
@@ -18,7 +23,9 @@ const Login = () => {
|
||||
const token = useStore().main.token();
|
||||
const errorMsgs = useRef(null);
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [visibleCacheFaq, setVisibleCacheFaq] = useState(false);
|
||||
let [searchParams] = useSearchParams();
|
||||
const { origin } = window.location;
|
||||
|
||||
const loginWithSpid = () => {
|
||||
if (!loading) {
|
||||
@@ -56,6 +63,15 @@ const Login = () => {
|
||||
setLoading(false);
|
||||
}
|
||||
|
||||
const openCacheFaq = (e) => {
|
||||
e.preventDefault();
|
||||
setVisibleCacheFaq(true);
|
||||
}
|
||||
|
||||
const hideCacheFaq = () => {
|
||||
setVisibleCacheFaq(false);
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (!isEmpty(token)) {
|
||||
window.location.replace('/')
|
||||
@@ -104,6 +120,72 @@ const Login = () => {
|
||||
<span>{__('Entra con SPID', 'gepafin')}</span>
|
||||
</button>
|
||||
|
||||
<div className="appPage__spacer"></div>
|
||||
|
||||
<p><a href={origin} onClick={openCacheFaq}>{__('Hai problemi di accesso con SPID?', 'gepafin')}</a></p>
|
||||
|
||||
<Dialog header={__('Termini e condizioni', 'gepafin')} visible={visibleCacheFaq} style={{
|
||||
width: '70vw',
|
||||
minHeight: 500
|
||||
}} onHide={hideCacheFaq}>
|
||||
<p>
|
||||
{__('Se rilevi problemi di accesso allo sportello telematico utilizzando le tue credenziali SPID, solitamente si tratta di un esaurimento dello spazio dedicato alla cache, cioè l’insieme dei dati che i software salvano sul browser per rendere il caricamento di determinate pagine internet più rapido.', 'gepafin')}
|
||||
</p>
|
||||
<Accordion>
|
||||
<AccordionTab header={__('Come svuotare la cache su Google Chrome', 'gepafin')}>
|
||||
<p>Se solitamente navighi in internet utilizzando Google Chrome, per svuotare la cache
|
||||
devi:</p>
|
||||
|
||||
<ul>
|
||||
<li>cliccare sui tre puntini verticali in alto a destra
|
||||
</li>
|
||||
<li>selezionare la voce Impostazioni</li>
|
||||
<li>accedere al menu Privacy e sicurezza > Cancella dati di navigazione</li>
|
||||
<li>selezionare la voce Immagini e file memorizzati nella cache e poi premere sul
|
||||
pulsante Cancella dati.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<img src={`${origin}/loaded-files/empty-cache-chrome.png`}
|
||||
alt={__('Come svuotare la cache su Google Chrome', 'gepafin')}/>
|
||||
</AccordionTab>
|
||||
<AccordionTab header={__('Come svuotare la cache su Mozilla Firefox', 'gepafin')}>
|
||||
<p>Se solitamente navighi in internet utilizzando Mozilla Firefox, per svuotare la cache
|
||||
devi:</p>
|
||||
|
||||
<ul>
|
||||
<li>cliccare sulle tre linee orizzontali in alto a destra</li>
|
||||
<li>selezionare la voce Impostazioni</li>
|
||||
<li>accedere al menu Privacy e sicurezza > Cookie e dati dei siti web > Elimina
|
||||
dati...
|
||||
</li>
|
||||
<li>selezionare la voce Contenuti web in cache e poi premere sul pulsante Elimina.</li>
|
||||
</ul>
|
||||
|
||||
<img src={`${origin}/loaded-files/empty-cache-firefox.png`}
|
||||
alt={__('Come svuotare la cache su Mozilla Firefox', 'gepafin')}/>
|
||||
</AccordionTab>
|
||||
<AccordionTab header={__('Come svuotare la cache su Microsoft Edge', 'gepafin')}>
|
||||
<p>Se solitamente navighi in internet utilizzando Microsoft Edge, per svuotare la cache
|
||||
devi:</p>
|
||||
|
||||
<ul>
|
||||
<li>cliccare sui tre puntini orizzontali in alto a destra</li>
|
||||
<li>selezionare la voce Impostazioni</li>
|
||||
<li>accedere al menu Privacy, ricerca e servizi > Cancella i dati di navigazione >
|
||||
Scegli cosa cancellare
|
||||
</li>
|
||||
<li>selezionare la voce Immagini e file memorizzati nella cache e poi premere sul
|
||||
pulsante Cancella ora.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<img src={`${origin}/loaded-files/empty-cache-edge.png`}
|
||||
alt={__('Come svuotare la cache su Microsoft Edge', 'gepafin')}/>
|
||||
</AccordionTab>
|
||||
</Accordion>
|
||||
</Dialog>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
||||
@@ -82,6 +82,7 @@ const ProfileCompany = () => {
|
||||
} else {
|
||||
newCompanies = [...companies, company];
|
||||
storeSet.main.chosenCompanyId(company.id);
|
||||
console.log('set company 3', company.id)
|
||||
}
|
||||
|
||||
storeSet.main.companies(newCompanies);
|
||||
|
||||
@@ -20,10 +20,12 @@ import LogoIcon from '../../icons/LogoIcon';
|
||||
import { Button } from 'primereact/button';
|
||||
import { Messages } from 'primereact/messages';
|
||||
import { Panel } from 'primereact/panel';
|
||||
import { Dialog } from 'primereact/dialog';
|
||||
|
||||
const Registration = () => {
|
||||
const token = useStore().main.token();
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [visibleTerms, setVisibleTerms] = useState(false);
|
||||
const errorMsgs = useRef(null);
|
||||
let [searchParams] = useSearchParams();
|
||||
const {
|
||||
@@ -34,6 +36,8 @@ const Registration = () => {
|
||||
getValues
|
||||
} = useForm({ mode: 'onChange' });
|
||||
const values = getValues();
|
||||
const { origin } = window.location;
|
||||
const urlTermsPdf = `${origin}/loaded-files/termini-e-condizioni.pdf`;
|
||||
|
||||
const onSubmit = (formData) => {
|
||||
errorMsgs.current.clear();
|
||||
@@ -117,6 +121,15 @@ const Registration = () => {
|
||||
setValue('thirdParty', true);
|
||||
}
|
||||
|
||||
const openTermsDoc = (e) => {
|
||||
e.preventDefault();
|
||||
setVisibleTerms(true);
|
||||
}
|
||||
|
||||
const hideTerms = () => {
|
||||
setVisibleTerms(false);
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (!isEmpty(token)) {
|
||||
setLoading(true);
|
||||
@@ -279,7 +292,7 @@ const Registration = () => {
|
||||
}}
|
||||
toggleable>
|
||||
<p className="m-0">
|
||||
{__('Termini e condizioni', 'gepafin')}
|
||||
<a href={urlTermsPdf} onClick={openTermsDoc}>{__('Termini e condizioni', 'gepafin')}</a>
|
||||
</p>
|
||||
</Panel>
|
||||
|
||||
@@ -350,9 +363,16 @@ const Registration = () => {
|
||||
</Panel>
|
||||
|
||||
<Button
|
||||
label={__('Accedi', 'gepafin')}
|
||||
label={__('Invia', 'gepafin')}
|
||||
disabled={loading}/>
|
||||
</form>
|
||||
|
||||
<Dialog header={__('Termini e condizioni', 'gepafin')} visible={visibleTerms} style={{
|
||||
width: '70vw',
|
||||
minHeight: 500
|
||||
}} onHide={hideTerms}>
|
||||
<iframe src={urlTermsPdf} title={__('Termini e condizioni', 'gepafin')}></iframe>
|
||||
</Dialog>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
||||
@@ -150,7 +150,8 @@ const AllUsersTable = () => {
|
||||
filters={filters}
|
||||
globalFilterFields={['name', 'status']}
|
||||
header={header}
|
||||
emptyMessage="Nothing found." onFilter={(e) => setFilters(e.filters)}>
|
||||
emptyMessage={__('Nessun dato disponibile', 'gepafin')}
|
||||
onFilter={(e) => setFilters(e.filters)}>
|
||||
<Column field="name" header={__('Nome utente', 'gepafin')} filter filterPlaceholder="Search by name"
|
||||
style={{ minWidth: '12rem' }}/>
|
||||
<Column field="email" header={__('Email', 'gepafin')} filter filterPlaceholder="Search by email"
|
||||
|
||||
Reference in New Issue
Block a user