diff --git a/public/index.html b/public/index.html index 9bc7318..0e46bc7 100644 --- a/public/index.html +++ b/public/index.html @@ -2,10 +2,10 @@ - + - + %REACT_APP_TAB_TITLE% diff --git a/public/loaded-files/empty-cache-chrome.png b/public/loaded-files/empty-cache-chrome.png new file mode 100644 index 0000000..416da60 Binary files /dev/null and b/public/loaded-files/empty-cache-chrome.png differ diff --git a/public/loaded-files/empty-cache-edge.png b/public/loaded-files/empty-cache-edge.png new file mode 100644 index 0000000..2117ef2 Binary files /dev/null and b/public/loaded-files/empty-cache-edge.png differ diff --git a/public/loaded-files/empty-cache-firefox.png b/public/loaded-files/empty-cache-firefox.png new file mode 100644 index 0000000..d2e64cb Binary files /dev/null and b/public/loaded-files/empty-cache-firefox.png differ diff --git a/public/loaded-files/favicon.ico b/public/loaded-files/favicon.ico index a11777c..d27de52 100644 Binary files a/public/loaded-files/favicon.ico and b/public/loaded-files/favicon.ico differ diff --git a/public/loaded-files/termini-e-condizioni.pdf b/public/loaded-files/termini-e-condizioni.pdf new file mode 100644 index 0000000..1805d0f Binary files /dev/null and b/public/loaded-files/termini-e-condizioni.pdf differ diff --git a/public/manifest.json b/public/manifest.json index 86677be..3cfd5d0 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -8,13 +8,13 @@ "type": "image/x-icon" }, { - "src": "logo192.png", - "type": "image/png", + "src": "logo.svg", + "type": "image/svg+xml", "sizes": "192x192" }, { - "src": "logo512.png", - "type": "image/png", + "src": "logo.svg", + "type": "image/svg+xml", "sizes": "512x512" } ], diff --git a/src/App.js b/src/App.js index 9ff20f8..7d3a901 100644 --- a/src/App.js +++ b/src/App.js @@ -4,7 +4,7 @@ import Routes from './routes'; import { createI18n, setLocaleData } from '@wordpress/i18n'; import { I18nProvider } from '@wordpress/react-i18n'; import './assets/scss/theme.scss'; -import { isEmpty } from 'ramda' +import { isEmpty, head } from 'ramda' // store import { useStore, storeSet, storeGet } from './store'; @@ -17,6 +17,7 @@ const i18n = createI18n({}, 'gepafin'); function App() { const role = useStore().main.getRole(); const chosenCompanyId = useStore().main.chosenCompanyId(); + const isRedirectedOnceNoCompany = useStore().main.isRedirectedOnceNoCompany(); const callback = (data) => { if (data.status === 'SUCCESS') { @@ -36,9 +37,23 @@ function App() { const userData = storeGet.main.userData(); if (userData.companies && !isEmpty(userData.companies)) { storeSet.main.companies(userData.companies); + const company = head(userData.companies.filter(o => o.id === chosenCompanyId)); + + if (!company) { + storeSet.main.chosenCompanyId(userData.companies[0].id); + } + } else { + storeSet.main.chosenCompanyId(0); + const { origin, href } = window.location; + const url = `${origin}/agguingi-azienda`; + + if (!isRedirectedOnceNoCompany && url !== href) { + storeSet.main.isRedirectedOnceNoCompany(true); + window.location.replace('/agguingi-azienda') + } } } - }, [role]) + }, [role]); useEffect(() => { storeSet.main.setAsyncRequest(); diff --git a/src/assets/scss/components/layout.scss b/src/assets/scss/components/layout.scss index 844fc06..6957419 100644 --- a/src/assets/scss/components/layout.scss +++ b/src/assets/scss/components/layout.scss @@ -25,6 +25,15 @@ body { flex-grow: 1; } +iframe { + width: 100%; + height: 100%; +} + +img { + max-width: 100%; +} + .inner { display: flex; height: 100%; diff --git a/src/components/FormField/components/Switch/index.js b/src/components/FormField/components/Switch/index.js index 29efd39..c38cbf9 100644 --- a/src/components/FormField/components/Switch/index.js +++ b/src/components/FormField/components/Switch/index.js @@ -27,6 +27,7 @@ const Switch = ({ rules={config} render={({ field, fieldState }) => ( field.onChange(e.value)} diff --git a/src/components/TopBarProfileMenu/index.js b/src/components/TopBarProfileMenu/index.js index bbcd140..32bfac6 100644 --- a/src/components/TopBarProfileMenu/index.js +++ b/src/components/TopBarProfileMenu/index.js @@ -86,6 +86,7 @@ const TopBarProfileMenu = ({ menuLeftRef }) => { const switchCompany = (id) => { if (chosenCompanyId !== id) { storeSet.main.chosenCompanyId(id); + console.log('set company 2', id) if (toast.current) { toast.current.show({ severity: 'success', diff --git a/src/configData.js b/src/configData.js index b8e4b46..1eea6c7 100644 --- a/src/configData.js +++ b/src/configData.js @@ -5,7 +5,10 @@ export const mimeTypes = [ { name: 'Immagine', code: 'image/*' }, { name: 'Word', - code: 'application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document' + code: '.doc,.docx,.odt,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.oasis.opendocument.text' }, - { name: 'Excel doc', code: 'application/vnd.ms-excel' } + { + name: 'Excel', + code: '.xls,.xlsx,.ods,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.oasis.opendocument.spreadsheet' + } ]; \ No newline at end of file diff --git a/src/pages/AddCompany/index.js b/src/pages/AddCompany/index.js index a04264c..09e3b01 100644 --- a/src/pages/AddCompany/index.js +++ b/src/pages/AddCompany/index.js @@ -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); diff --git a/src/pages/Bandi/components/AllBandiTable/index.js b/src/pages/Bandi/components/AllBandiTable/index.js index 7600244..cc4191b 100644 --- a/src/pages/Bandi/components/AllBandiTable/index.js +++ b/src/pages/Bandi/components/AllBandiTable/index.js @@ -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)}> diff --git a/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js b/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js index c97204c..d0c1160 100644 --- a/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js +++ b/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js @@ -126,8 +126,13 @@ const AllBandiAccordion = () => { return(
- setExpandedRows(e.data)} rowExpansionTemplate={rowExpansionTemplate} diff --git a/src/pages/BandoFormsEdit/components/BuilderElementSettings/components/ElementSetting/index.js b/src/pages/BandoFormsEdit/components/BuilderElementSettings/components/ElementSetting/index.js index ca6d5d7..e9f9ec3 100644 --- a/src/pages/BandoFormsEdit/components/BuilderElementSettings/components/ElementSetting/index.js +++ b/src/pages/BandoFormsEdit/components/BuilderElementSettings/components/ElementSetting/index.js @@ -42,7 +42,7 @@ const ElementSetting = ({ setting, changeFn, updateDataFn }) => { }; const header = renderHeader(); - + console.log('setting', setting) const getProperField = (setting) => { if (setting.name === 'options') { return { 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')}/>
- {chosenCompanyId === 0 + {!chosenCompanyId || chosenCompanyId === 0 ? <> diff --git a/src/pages/Dashboard/components/LatestBandiTable/index.js b/src/pages/Dashboard/components/LatestBandiTable/index.js index 1a02633..94b45b5 100644 --- a/src/pages/Dashboard/components/LatestBandiTable/index.js +++ b/src/pages/Dashboard/components/LatestBandiTable/index.js @@ -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)}> { 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)}> diff --git a/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js b/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js index 32228fd..b852369 100644 --- a/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js +++ b/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js @@ -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)}> { 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)}> { 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 = () => { {__('Entra con SPID', 'gepafin')} +
+ +

{__('Hai problemi di accesso con SPID?', 'gepafin')}

+ + +

+ {__('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')} +

+ + +

Se solitamente navighi in internet utilizzando Google Chrome, per svuotare la cache + devi:

+ +
    +
  • cliccare sui tre puntini verticali in alto a destra +
  • +
  • selezionare la voce Impostazioni
  • +
  • accedere al menu Privacy e sicurezza > Cancella dati di navigazione
  • +
  • selezionare la voce Immagini e file memorizzati nella cache e poi premere sul + pulsante Cancella dati. +
  • +
+ + {__('Come +
+ +

Se solitamente navighi in internet utilizzando Mozilla Firefox, per svuotare la cache + devi:

+ +
    +
  • cliccare sulle tre linee orizzontali in alto a destra
  • +
  • selezionare la voce Impostazioni
  • +
  • accedere al menu Privacy e sicurezza > Cookie e dati dei siti web > Elimina + dati... +
  • +
  • selezionare la voce Contenuti web in cache e poi premere sul pulsante Elimina.
  • +
+ + {__('Come +
+ +

Se solitamente navighi in internet utilizzando Microsoft Edge, per svuotare la cache + devi:

+ +
    +
  • cliccare sui tre puntini orizzontali in alto a destra
  • +
  • selezionare la voce Impostazioni
  • +
  • accedere al menu Privacy, ricerca e servizi > Cancella i dati di navigazione > + Scegli cosa cancellare +
  • +
  • selezionare la voce Immagini e file memorizzati nella cache e poi premere sul + pulsante Cancella ora. +
  • +
+ + {__('Come +
+
+
+ ) diff --git a/src/pages/ProfileCompany/index.js b/src/pages/ProfileCompany/index.js index 26c8f98..50da801 100644 --- a/src/pages/ProfileCompany/index.js +++ b/src/pages/ProfileCompany/index.js @@ -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); diff --git a/src/pages/Registration/index.js b/src/pages/Registration/index.js index b1ff5df..8cd123e 100644 --- a/src/pages/Registration/index.js +++ b/src/pages/Registration/index.js @@ -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>

- {__('Termini e condizioni', 'gepafin')} + {__('Termini e condizioni', 'gepafin')}

@@ -350,9 +363,16 @@ const Registration = () => {