From 7106c0d300e4c3dbdbd212e82a14e2295e78edbd Mon Sep 17 00:00:00 2001 From: Vitalii Kiiko Date: Fri, 3 Jan 2025 14:43:07 +0100 Subject: [PATCH 1/4] - update copy for delega on company profile page; --- src/pages/ProfileCompany/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/ProfileCompany/index.js b/src/pages/ProfileCompany/index.js index 8b7c856..6147296 100644 --- a/src/pages/ProfileCompany/index.js +++ b/src/pages/ProfileCompany/index.js @@ -516,7 +516,7 @@ const ProfileCompany = () => { ?
{__('Compilazione Delega', 'gepafin')} -

{__('Per procedere come delegato, compila il form seguente, scarica il documento della delega, fallo firmare dal rappresentante legale.', 'gepafin')}

+

{__('Per procedere come delegato, compila il form seguente, scarica il documento della delega, fallo firmare dal rappresentante legale e ricaricalo nel form di domanda.', 'gepafin')}

From 45f5f5e99d1f2fc3e73e262a04509d2392fc96bf Mon Sep 17 00:00:00 2001 From: Vitalii Kiiko Date: Fri, 3 Jan 2025 15:21:42 +0100 Subject: [PATCH 2/4] - added new setting 'isDelegation'; --- .../BuilderElementSettings/components/ElementSetting/index.js | 3 ++- src/tempData.js | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/pages/BandoFormsEdit/components/BuilderElementSettings/components/ElementSetting/index.js b/src/pages/BandoFormsEdit/components/BuilderElementSettings/components/ElementSetting/index.js index 1da64fa..d38ca25 100644 --- a/src/pages/BandoFormsEdit/components/BuilderElementSettings/components/ElementSetting/index.js +++ b/src/pages/BandoFormsEdit/components/BuilderElementSettings/components/ElementSetting/index.js @@ -19,6 +19,7 @@ const ElementSetting = ({ setting, changeFn, updateDataFn, bandoStatus }) => { placeholder: __('Segnaposto', 'gepafin'), step: __('Numero Decimali', 'gepafin'), isRequestedAmount: __('Importo richiesto', 'gepafin'), + isDelegation: __('Delega', 'gepafin'), options: __('Opzioni', 'gepafin'), mime: __('Tipo di file', 'gepafin'), text: __('Testo formattato', 'gepafin'), @@ -80,7 +81,7 @@ const ElementSetting = ({ setting, changeFn, updateDataFn, bandoStatus }) => { name={setting.name} bandoStatus={bandoStatus} setDataFn={updateDataFn}/> - } else if (setting.name === 'isRequestedAmount') { + } else if (['isRequestedAmount', 'isDelegation'].includes(setting.name)) { return changeFn(e.value, setting.name)}/> diff --git a/src/tempData.js b/src/tempData.js index 6c8c231..372def6 100644 --- a/src/tempData.js +++ b/src/tempData.js @@ -214,6 +214,10 @@ export const elementItems = [ { name: "mime", value: [] + }, + { + name: "isDelegation", + value: false } ], validators: { From a2739ba9660ddfd05fec3029064bfc99c6c89747 Mon Sep 17 00:00:00 2001 From: Vitalii Kiiko Date: Tue, 7 Jan 2025 08:34:31 +0100 Subject: [PATCH 3/4] - added websocket url as env var for production; --- environments/prod/prod.env | 1 + 1 file changed, 1 insertion(+) diff --git a/environments/prod/prod.env b/environments/prod/prod.env index ecbe860..8e5fc08 100644 --- a/environments/prod/prod.env +++ b/environments/prod/prod.env @@ -1,6 +1,7 @@ REACT_APP_TAB_TITLE=Gepafin REACT_APP_API_EXECUTION_ADDRESS=https://bandi-api.gepafin.it/v1 REACT_APP_API_ADDRESS=https://bandi-api.gepafin.it +REACT_APP_API_ADDRESS_WS=https://bandi-api.gepafin.it/wss REACT_APP_LOGO_FILENAME=gepafin-logo.svg REACT_APP_FAVICON_FILENAME=gepafin-favicon.ico REACT_APP_HUB_ID=p4lk3bcx1RStqTaIVVbXs From 8bc17536f6e928ba1991fea4dd62e9a235df3d31 Mon Sep 17 00:00:00 2001 From: Vitalii Kiiko Date: Tue, 7 Jan 2025 12:21:05 +0100 Subject: [PATCH 4/4] - add appl stats; - added roleId param for reg form; --- .../scss/components/statsBigBadges.scss | 87 ++++++++++++++----- src/assets/scss/theme.scss | 3 + src/pages/Domande/index.js | 72 ++++++++++++++- src/pages/Registration/index.js | 3 +- src/service/dashboard-service.js | 4 + 5 files changed, 147 insertions(+), 22 deletions(-) diff --git a/src/assets/scss/components/statsBigBadges.scss b/src/assets/scss/components/statsBigBadges.scss index 1788b0c..6cb3c0a 100644 --- a/src/assets/scss/components/statsBigBadges.scss +++ b/src/assets/scss/components/statsBigBadges.scss @@ -25,8 +25,8 @@ justify-content: space-between; padding: 16px; border-radius: 6px; - border: 1px solid var(--yellow-500); - background: var(--card-full-background-color-2); + border: 1px solid #858585; + background: #cecece; align-items: center; gap: 48px; @@ -41,26 +41,73 @@ span:nth-last-of-type(1) { font-size: 22px; } +} - &:nth-of-type(2) { - border: 1px solid var(--yellow-500); - background: var(--card-full-background-color-3); +.statsBigBadges__grid { + .statsBigBadges__gridItem { + &:nth-of-type(1) { + border: 1px solid var(--yellow-500); + background: var(--card-full-background-color-2); + } + + &:nth-of-type(2) { + border: 1px solid var(--yellow-500); + background: var(--card-full-background-color-3); + } + + &:nth-of-type(3) { + border: 1px solid var(--yellow-500); + background: var(--card-full-background-color-4); + } + + &:nth-of-type(4) { + border: 1px solid var(--yellow-500); + background: var(--card-full-background-color-1); + } + + &:nth-of-type(5) { + border: 1px solid var(--yellow-500); + background: var(--card-full-background-color-5); + } + + &:nth-of-type(6) { + border: 1px solid var(--yellow-500); + background: var(--card-full-background-color-6); + } } - &:nth-of-type(3) { - border: 1px solid var(--yellow-500); - background: var(--card-full-background-color-4); - } - &:nth-of-type(4) { - border: 1px solid var(--yellow-500); - background: var(--card-full-background-color-1); - } - &:nth-of-type(5) { - border: 1px solid var(--yellow-500); - background: var(--card-full-background-color-5); - } - &:nth-of-type(6) { - border: 1px solid var(--yellow-500); - background: var(--card-full-background-color-6); + + &.applStats { + .statsBigBadges__gridItem { + &:nth-of-type(1) { + border: 1px solid var(--yellow-500); + background: var(--card-full-background-color-2); + } + + &:nth-of-type(2) { + border: 1px solid var(--yellow-500); + background: var(--card-full-background-color-3); + } + + &:nth-of-type(3) { + border: 1px solid var(--yellow-500); + background: var(--card-full-background-color-4); + } + + &:nth-of-type(4) { + border: 1px solid var(--yellow-500); + background: var(--card-full-background-color-7); + } + + &:nth-of-type(5) { + border: 1px solid var(--yellow-500); + background: var(--card-full-background-color-8); + } + + &:nth-of-type(6) { + border: 1px solid var(--yellow-500); + background: var(--card-full-background-color-9); + } + } } } diff --git a/src/assets/scss/theme.scss b/src/assets/scss/theme.scss index 2b48f72..943b18a 100644 --- a/src/assets/scss/theme.scss +++ b/src/assets/scss/theme.scss @@ -28,6 +28,9 @@ --card-full-background-color-1: #54965b; --card-full-background-color-5: #4ba190; --card-full-background-color-6: #6d68c0; + --card-full-background-color-7: #06B6D4; + --card-full-background-color-8: #FF3D32; + --card-full-background-color-9: #F97316; } @import "./components/layout.scss"; diff --git a/src/pages/Domande/index.js b/src/pages/Domande/index.js index 0512a71..41f63ce 100644 --- a/src/pages/Domande/index.js +++ b/src/pages/Domande/index.js @@ -1,6 +1,6 @@ import React, { useEffect, useRef, useState } from 'react'; import { __ } from '@wordpress/i18n'; -import { isEmpty } from 'ramda'; +import { isEmpty, pathOr } from 'ramda'; // api import UserService from '../../service/user-service'; @@ -20,6 +20,8 @@ import { Button } from 'primereact/button'; import { classNames } from 'primereact/utils'; import { Dropdown } from 'primereact/dropdown'; import DraftApplicationsTable from '../Dashboard/components/DraftApplicationsTable'; +import NumberFlow from '@number-flow/react'; +import DashboardService from '../../service/dashboard-service'; const Domande = () => { const [loading, setLoading] = useState(false); @@ -29,6 +31,7 @@ const Domande = () => { const [chosenUser, setChosenUser] = useState(0); const [chosenApplication, setChosenApplication] = useState(0); const [updaterString, setUpdaterString] = useState(''); + const [mainStats, setMainStats] = useState({}); const toast = useRef(null); const getRolesCallback = (data) => { @@ -123,6 +126,18 @@ const Domande = () => { storeSet.main.unsetAsyncRequest(); } + const getStatValue = (key, fallback = '') => { + return pathOr(fallback, [key], mainStats); + } + + const getStats = (data) => { + if (data.status === 'SUCCESS') { + setMainStats(data.data); + } + } + + const errGetStats = () => {} + useEffect(() => { if (roleIds.length > 0) { setLoading(true); @@ -137,6 +152,10 @@ const Domande = () => { } }, [isVisibleEditDialog]); + useEffect(() => { + DashboardService.getApplicationsStats(getStats, errGetStats); + }, []); + return (
@@ -152,6 +171,57 @@ const Domande = () => {
+
+

{__('Riepilogo', 'gepafin')}

+
+
+ {__('Totale domande', 'gepafin')} + +
+
+ {__('Assegnate', 'gepafin')} + +
+
+ {__('Completate', 'gepafin')} + +
+
+ {__('Tempo medio di valutazione', 'gepafin')} + +
+
+ {__('In soccorso istruttorio', 'gepafin')} + +
+
+ {__('Domande in scadenza (48h)', 'gepafin')} + +
+
+
+ +
+

{__('Domande in bozza', 'gepafin')}

diff --git a/src/pages/Registration/index.js b/src/pages/Registration/index.js index 90677e8..7d9f624 100644 --- a/src/pages/Registration/index.js +++ b/src/pages/Registration/index.js @@ -50,7 +50,8 @@ const Registration = () => { const newFormData = { ...formData, dateOfBirth: originalDateOfBirth, - hubUuid: APP_HUB_ID + hubUuid: APP_HUB_ID, + roleId: 1 } AuthenticationService.registerUser(newFormData, regCallback, regError, [ diff --git a/src/service/dashboard-service.js b/src/service/dashboard-service.js index 999c18c..87d7572 100644 --- a/src/service/dashboard-service.js +++ b/src/service/dashboard-service.js @@ -8,6 +8,10 @@ export default class DashboardService { NetworkService.get(`${API_BASE_URL}/dashboard`, callback, errCallback); }; + static getApplicationsStats = (callback, errCallback) => { + NetworkService.get(`${API_BASE_URL}/dashboard/application`, callback, errCallback); + }; + static getBeneficiaryStatsForCompany = (id, callback, errCallback) => { NetworkService.get(`${API_BASE_URL}/dashboard/beneficiary/company/${id}`, callback, errCallback); };