- aggiunto il Comune di Residenza alla REgistrazione e al Tutorial
This commit is contained in:
@@ -236,6 +236,7 @@ export const shared_consts = {
|
||||
FILTER_SENZA_NOTE: 1073741824,
|
||||
FILTER_DA_CONTATTARE: 2147483648,
|
||||
FILTER_FACILITATORE: 4294967296,
|
||||
FILTER_USER_COMUNE: 8589934592,
|
||||
|
||||
OPTIONS_SEARCH_ONLY_FULL_WORDS: 1,
|
||||
OPTIONS_SEARCH_USER_ONLY_FULL_WORDS: 2,
|
||||
|
||||
@@ -1163,6 +1163,10 @@ export default defineComponent({
|
||||
filtercustom.push({
|
||||
'profile.resid_province': { $exists: true, $ne: '' },
|
||||
});
|
||||
} else if (myitemsingle === shared_consts.FILTER_USER_COMUNE) {
|
||||
filtercustom.push({
|
||||
'profile.resid_str_comune': { $exists: true, $ne: '' },
|
||||
});
|
||||
} else if (myitemsingle === shared_consts.FILTER_USER_TELEGRAM_BLOCKED) {
|
||||
filtercustom.push({ 'profile.teleg_id_old': { $gt: 1 } });
|
||||
} else if (myitemsingle === shared_consts.FILTER_NOTE) {
|
||||
|
||||
@@ -629,6 +629,7 @@
|
||||
v-else
|
||||
:table="tablesel"
|
||||
:prop_myrec="row"
|
||||
:index-row="indexrow"
|
||||
@cmdext="cmdExt"
|
||||
:editOn="editOn"
|
||||
:margin_right="margin_right"
|
||||
|
||||
@@ -563,12 +563,10 @@ $gradient-hover: linear-gradient(135deg, rgba(102, 126, 234, 0.05) 0%, rgba(118,
|
||||
}
|
||||
|
||||
.q-btn {
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
backdrop-filter: blur(8px);
|
||||
transition: all $transition-speed ease;
|
||||
|
||||
&:hover {
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
transform: scale(1.1) rotate(90deg);
|
||||
}
|
||||
}
|
||||
@@ -707,6 +705,14 @@ $gradient-hover: linear-gradient(135deg, rgba(102, 126, 234, 0.05) 0%, rgba(118,
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
// Mantieni i colori Quasar per i chip colorati
|
||||
&.text-white,
|
||||
&.q-chip--colored {
|
||||
:deep(.q-chip__content) {
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ========================================
|
||||
|
||||
@@ -445,21 +445,21 @@
|
||||
/>
|
||||
</q-item-section>
|
||||
|
||||
<q-item-section>
|
||||
<q-item-label>
|
||||
<span
|
||||
v-for="(recstatus, index) in myrec.idStatusSkill"
|
||||
:key="index"
|
||||
>
|
||||
<q-chip
|
||||
dense
|
||||
:color="globalStore.getColByStatusSkills(recstatus)"
|
||||
text-color="white"
|
||||
<q-item-section>
|
||||
<q-item-label>
|
||||
<span
|
||||
v-for="(recstatus, index) in myrec.idStatusSkill"
|
||||
:key="index"
|
||||
>
|
||||
{{ globalStore.getStatusSkillById(recstatus) }}
|
||||
</q-chip>
|
||||
</span>
|
||||
</q-item-label>
|
||||
<q-chip
|
||||
dense
|
||||
:color="globalStore.getColByStatusSkills(recstatus)"
|
||||
text-color="white"
|
||||
>
|
||||
{{ globalStore.getStatusSkillById(recstatus) }}
|
||||
</q-chip>
|
||||
</span>
|
||||
</q-item-label>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
<div v-if="!isSmall">
|
||||
@@ -511,7 +511,7 @@
|
||||
text-color="white"
|
||||
dense
|
||||
>
|
||||
<span class="cal__quota-content">{{
|
||||
<span>{{
|
||||
getSectorByRec(myrec)[0].descr
|
||||
}}</span>
|
||||
</q-chip>
|
||||
@@ -526,7 +526,7 @@
|
||||
color="blue"
|
||||
text-color="white"
|
||||
>
|
||||
<span class="cal__quota-content">{{
|
||||
<span>{{
|
||||
getRecGoodSkillByRec(myrec)[0].descr
|
||||
}}</span>
|
||||
</q-chip>
|
||||
|
||||
@@ -2,9 +2,12 @@
|
||||
// MODERN FIELD DB - COMPACT & PROFESSIONAL
|
||||
// ========================================
|
||||
|
||||
.modern-field-container-con-flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
// Container principale
|
||||
.modern-field-container {
|
||||
display: flex;
|
||||
align-items: stretch;
|
||||
gap: 12px;
|
||||
padding: 8px 12px;
|
||||
@@ -111,10 +114,13 @@
|
||||
}
|
||||
}
|
||||
|
||||
// Valore campo (chip/display)
|
||||
.modern-field-value {
|
||||
.con-flex {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
// Valore campo (chip/display)
|
||||
.modern-field-value {
|
||||
align-items: center;
|
||||
padding: 8px 12px;
|
||||
min-height: 48px;
|
||||
@@ -221,6 +227,7 @@
|
||||
0% {
|
||||
transform: translateX(-100%) rotate(45deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: translateX(100%) rotate(45deg);
|
||||
}
|
||||
@@ -280,4 +287,4 @@
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,8 @@ export default defineComponent({
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
required: true,
|
||||
required: false,
|
||||
default: '',
|
||||
},
|
||||
hint: {
|
||||
type: String,
|
||||
@@ -125,6 +126,11 @@ export default defineComponent({
|
||||
required: false,
|
||||
default: '',
|
||||
},
|
||||
myclass: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: '',
|
||||
},
|
||||
idmain: {
|
||||
type: String,
|
||||
required: false,
|
||||
@@ -140,6 +146,16 @@ export default defineComponent({
|
||||
required: false,
|
||||
default: false,
|
||||
},
|
||||
isInModif: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false,
|
||||
},
|
||||
nosaveToDb: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false,
|
||||
},
|
||||
notAllowAtChar: { // @
|
||||
type: Boolean,
|
||||
required: false,
|
||||
@@ -163,7 +179,8 @@ export default defineComponent({
|
||||
console.log('showandsave CMyFieldDb:', newval)
|
||||
console.log('subkey', props.mysubkey, 'sskey', props.mysubsubkey)
|
||||
|
||||
await tools.saveInDBForTypes($q, props.mykey, newval, props.type, props.serv, props.table, props.mysubkey, props.id, props.indrec, props.mysubsubkey, props.specialField);
|
||||
if (!props.nosaveToDb)
|
||||
await tools.saveInDBForTypes($q, props.mykey, newval, props.type, props.serv, props.table, props.mysubkey, props.id, props.indrec, props.mysubsubkey, props.specialField);
|
||||
|
||||
emit('savedInDb')
|
||||
}
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
<template>
|
||||
<div class="modern-field-container" :class="{ disabled: disable, readonly: !canModify && !canEdit }">
|
||||
<div class="modern-field-container" :class="{
|
||||
disabled: disable,
|
||||
readonly: !canModify,
|
||||
'modern-field-container-con-flex': !!title
|
||||
}">
|
||||
<!-- Label/Titolo -->
|
||||
<div v-if="title" class="modern-field-label">
|
||||
<div class="label-content">
|
||||
@@ -9,7 +13,7 @@
|
||||
</div>
|
||||
|
||||
<!-- Valore/Edit -->
|
||||
<div class="modern-field-value modern-popup-wrapper">
|
||||
<div class="modern-field-value modern-popup-wrapper" :class="{ 'con-flex': !!title }">
|
||||
<CMyPopupEdit
|
||||
debounce="1000"
|
||||
:fielddb="true"
|
||||
@@ -18,7 +22,9 @@
|
||||
:isrec="!!rec"
|
||||
:table="table"
|
||||
:hint="hint"
|
||||
:isInModif="isInModif"
|
||||
:title="title"
|
||||
:myclass="myclass"
|
||||
:field="mykey"
|
||||
:filter="filter"
|
||||
:subfield="mysubkey"
|
||||
@@ -41,6 +47,7 @@
|
||||
:pickup="pickup"
|
||||
v-model:row="row"
|
||||
minuteinterval="1"
|
||||
:nosaveToDb="nosaveToDb"
|
||||
@showandsave="showandsave"
|
||||
@save="save"
|
||||
:notAllowAtChar="notAllowAtChar"
|
||||
|
||||
@@ -14,7 +14,7 @@ import MixinBase from '@src/mixins/mixin-base'
|
||||
|
||||
export default defineComponent({
|
||||
name: 'CMyFieldRec',
|
||||
emits: ['save', 'update:rec', 'update_col'],
|
||||
emits: ['save', 'update:rec', 'update_col', 'savedInDb'],
|
||||
props: {
|
||||
table: {
|
||||
type: String,
|
||||
@@ -59,6 +59,16 @@ export default defineComponent({
|
||||
required: false,
|
||||
default: false,
|
||||
},
|
||||
mysubkey_tosee: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: '',
|
||||
},
|
||||
fieldsel_tosee: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: '',
|
||||
},
|
||||
disable: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
@@ -180,7 +190,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
|
||||
function showandsave(row: any, col: any, newval: any, valinitial: any) {
|
||||
async function showandsave(row: any, col: any, newval: any, valinitial: any) {
|
||||
console.log('showandsave CMyFieldrec', row, col, newval)
|
||||
emit('save', props.rec, newval, col)
|
||||
|
||||
@@ -189,12 +199,14 @@ export default defineComponent({
|
||||
|
||||
if (newval !== valinitial) {
|
||||
if (props.id) {
|
||||
tools.saveInDBForTypes($q, mykey.value, newval, props.fieldtype || col.fieldtype, false, props.table, mysubkey.value, props.id, props.indrec, mysubsubkey.value, props.specialField, row)
|
||||
await tools.saveInDBForTypes($q, mykey.value, newval, props.fieldtype || col.fieldtype, false, props.table, mysubkey.value, props.id, props.indrec, mysubsubkey.value, props.specialField, row)
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
emit('savedInDb')
|
||||
|
||||
}
|
||||
|
||||
function withBorder() {
|
||||
|
||||
@@ -50,6 +50,8 @@
|
||||
:mysubsubkey="mysubsubkey"
|
||||
:type="fieldtype || col.fieldtype"
|
||||
:serv="false"
|
||||
:subfield_to_see="mysubkey_tosee"
|
||||
:fieldsel_tosee="fieldsel_tosee"
|
||||
:disable="disable"
|
||||
:jointable="jointable"
|
||||
:myimg="myimg"
|
||||
|
||||
@@ -446,4 +446,11 @@
|
||||
.modern-chip {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.class_select.q-select {
|
||||
@media (max-width: 599px) {
|
||||
width: 100% !important;
|
||||
max-width: 100% !important;
|
||||
}
|
||||
}
|
||||
@@ -111,6 +111,11 @@ export default defineComponent({
|
||||
required: false,
|
||||
default: '',
|
||||
},
|
||||
myclass: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: '',
|
||||
},
|
||||
field2: {
|
||||
type: String,
|
||||
required: false,
|
||||
@@ -824,7 +829,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
async function savefield(value: any, initialval: any, myq: any) {
|
||||
if (!props.insertMode) {
|
||||
if (!props.insertMode && !props.nosaveToDb) {
|
||||
let ret = null;
|
||||
myvalue.value = value;
|
||||
return tools.saveInDBForTypes(
|
||||
@@ -843,7 +848,7 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
async function savefield2(value: any, initialval: any, myq: any) {
|
||||
if (!props.insertMode) {
|
||||
if (!props.insertMode && !props.nosaveToDb) {
|
||||
let ret = null;
|
||||
myvalue2.value = value;
|
||||
return tools.saveInDBForTypes(
|
||||
@@ -861,49 +866,11 @@ export default defineComponent({
|
||||
);
|
||||
}
|
||||
}
|
||||
async function savefieldtosee(value: any, initialval: any, myq: any) {
|
||||
if (!props.insertMode) {
|
||||
let ret = null;
|
||||
myvalue2.value = value;
|
||||
return tools.saveInDBForTypes(
|
||||
myq,
|
||||
props.field2,
|
||||
myvalue2.value,
|
||||
props.type,
|
||||
props.serv,
|
||||
props.table,
|
||||
props.fieldsel_tosee,
|
||||
props.id,
|
||||
props.indrec,
|
||||
props.mysubsubkey,
|
||||
props.specialField
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function annulla(val: any) {
|
||||
emit('annulla', true);
|
||||
}
|
||||
|
||||
function savefieldboolean(value: any) {
|
||||
if (myvalue.value === undefined) myvalue.value = 'true';
|
||||
else myvalue.value = value;
|
||||
|
||||
tools.saveInDBForTypes(
|
||||
$q,
|
||||
props.field,
|
||||
myvalue,
|
||||
props.type,
|
||||
props.serv,
|
||||
props.table,
|
||||
props.subfield,
|
||||
props.id,
|
||||
props.indrec,
|
||||
props.mysubsubkey,
|
||||
props.specialField
|
||||
);
|
||||
}
|
||||
|
||||
function Savedb(newVal: any, valinitial: any) {
|
||||
// console.log('Savedb', newVal)
|
||||
|
||||
@@ -950,7 +917,7 @@ export default defineComponent({
|
||||
|
||||
// console.log('Savedb', newVal)
|
||||
|
||||
emit('showandsave', props.row, props.mycol, newVal, valinitial);
|
||||
emit('showandsave', props.row, props.mycol, newVal, valinitial, myvaltosee.value);
|
||||
visueditor.value = false;
|
||||
}
|
||||
|
||||
|
||||
@@ -1265,6 +1265,7 @@
|
||||
:addnone="col?.addnone"
|
||||
:filter_field="col?.filter_field"
|
||||
:value_extra="value_extra"
|
||||
:myclass="myclass"
|
||||
:optval="fieldsTable.getKeyByTable(col.jointable)"
|
||||
:optlab="fieldsTable.getLabelByTable(col.jointable)"
|
||||
:options="
|
||||
@@ -1763,6 +1764,7 @@
|
||||
col.fieldtype === costanti.FieldType.select_by_server
|
||||
"
|
||||
>
|
||||
|
||||
<CMySelect
|
||||
:type_out="col.field_outtype"
|
||||
:col="col"
|
||||
@@ -1794,6 +1796,7 @@
|
||||
col.filter
|
||||
)
|
||||
"
|
||||
:class="myclass"
|
||||
:useinput="col.allowNewValue"
|
||||
:addstrrequired="addstrrequired"
|
||||
:dense="dense"
|
||||
|
||||
@@ -17,7 +17,7 @@ $shadow-md: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
$mobile-breakpoint: 768px;
|
||||
|
||||
// ========================================
|
||||
// WRAPPER CARD
|
||||
// WRAPPER CARD - ALTERNATING COLORS
|
||||
// ========================================
|
||||
.rec-card-wrapper {
|
||||
margin: 4px auto;
|
||||
@@ -26,6 +26,22 @@ $mobile-breakpoint: 768px;
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
margin: 2px auto;
|
||||
}
|
||||
|
||||
&.is-even {
|
||||
.modern-rec-card {
|
||||
background: linear-gradient(135deg, rgba(49, 154, 239, 0.227) 0%, rgba(25, 118, 210, 0.05) 100%);
|
||||
border-color: rgba(66, 165, 245, 0.15);
|
||||
// ... resto degli stili blu
|
||||
}
|
||||
}
|
||||
|
||||
&.is-odd {
|
||||
.modern-rec-card {
|
||||
background: linear-gradient(135deg, rgba(38, 197, 218, 0.159) 0%, rgba(0, 150, 136, 0.05) 100%);
|
||||
border-color: rgba(38, 198, 218, 0.15);
|
||||
// ... resto degli stili teal
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ========================================
|
||||
@@ -163,15 +179,11 @@ $mobile-breakpoint: 768px;
|
||||
padding: 8px;
|
||||
transition: all $transition-speed ease;
|
||||
margin-bottom: 4px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
&:hover {
|
||||
box-shadow: $shadow-md;
|
||||
border-color: rgba(25, 118, 210, 0.2);
|
||||
}
|
||||
|
||||
&.is-attending {
|
||||
border-left: 3px solid $positive-color;
|
||||
background: linear-gradient(to right, rgba(33, 186, 69, 0.05), white);
|
||||
}
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
@@ -224,7 +236,7 @@ $mobile-breakpoint: 768px;
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// CONTENT SECTION
|
||||
// CONTENT SECTION - ALTERNATING COLORS
|
||||
// ========================================
|
||||
.content-section {
|
||||
padding: 0 8px 0 0 !important;
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
import type { PropType} from 'vue';
|
||||
import { defineComponent, onMounted, ref, watch, computed } from 'vue'
|
||||
import { useUserStore } from '@store/UserStore'
|
||||
import type { IUserFields} from 'model';
|
||||
import { IImgGallery, IUserProfile } from 'model'
|
||||
import { costanti } from '@costanti'
|
||||
import { shared_consts } from '@src/common/shared_vuejs'
|
||||
import { fieldsTable } from '@store/Modules/fieldsTable'
|
||||
import { tools } from '@tools'
|
||||
import { toolsext } from '@store/Modules/toolsext'
|
||||
import { useQuasar } from 'quasar'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { CMyCardPopup } from '@src/components/CMyCardPopup'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useCalendarStore } from '@src/store/CalendarStore'
|
||||
import { useGlobalStore } from '@src/store/globalStore'
|
||||
import type { PropType } from 'vue';
|
||||
import { defineComponent, onMounted, ref, watch, computed } from 'vue';
|
||||
import { useUserStore } from '@store/UserStore';
|
||||
import type { IUserFields } from 'model';
|
||||
import { IImgGallery, IUserProfile } from 'model';
|
||||
import { costanti } from '@costanti';
|
||||
import { shared_consts } from '@src/common/shared_vuejs';
|
||||
import { fieldsTable } from '@store/Modules/fieldsTable';
|
||||
import { tools } from '@tools';
|
||||
import { toolsext } from '@store/Modules/toolsext';
|
||||
import { useQuasar } from 'quasar';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { CMyCardPopup } from '@src/components/CMyCardPopup';
|
||||
import { useRouter } from 'vue-router';
|
||||
import { useCalendarStore } from '@src/store/CalendarStore';
|
||||
import { useGlobalStore } from '@src/store/globalStore';
|
||||
|
||||
export default defineComponent({
|
||||
name: 'CMyRecCard',
|
||||
@@ -29,6 +29,11 @@ export default defineComponent({
|
||||
required: false,
|
||||
default: null,
|
||||
},
|
||||
indexRow: {
|
||||
type: Number,
|
||||
required: false,
|
||||
default: 0,
|
||||
},
|
||||
editOn: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
@@ -38,77 +43,84 @@ export default defineComponent({
|
||||
type: Number,
|
||||
required: false,
|
||||
default: 0,
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
setup(props, { emit }) {
|
||||
const userStore = useUserStore();
|
||||
const calendarStore = useCalendarStore();
|
||||
const globalStore = useGlobalStore();
|
||||
const $q = useQuasar();
|
||||
const { t } = useI18n();
|
||||
const $router = useRouter();
|
||||
|
||||
const userStore = useUserStore()
|
||||
const calendarStore = useCalendarStore()
|
||||
const globalStore = useGlobalStore()
|
||||
const $q = useQuasar()
|
||||
const { t } = useI18n()
|
||||
const $router = useRouter()
|
||||
const myrec = ref(<any>null);
|
||||
|
||||
const myrec = ref(<any>null)
|
||||
|
||||
const visupage = ref(false)
|
||||
const visupage = ref(false);
|
||||
const disabilita = computed(() => {
|
||||
return props.table === shared_consts.TABLES_MYBACHECAS
|
||||
})
|
||||
|
||||
watch(() => props.prop_myrec, (newval, oldval) => {
|
||||
|
||||
mounted()
|
||||
})
|
||||
return props.table === shared_consts.TABLES_MYBACHECAS;
|
||||
});
|
||||
|
||||
watch(
|
||||
() => props.prop_myrec,
|
||||
(newval, oldval) => {
|
||||
mounted();
|
||||
}
|
||||
);
|
||||
|
||||
function mounted() {
|
||||
if (props.prop_myrec) {
|
||||
myrec.value = props.prop_myrec
|
||||
myrec.value = props.prop_myrec;
|
||||
}
|
||||
}
|
||||
|
||||
function showBadge() {
|
||||
if (shared_consts.TABLES_SHOW_ADTYPE.includes(props.table)) {
|
||||
return true
|
||||
return true;
|
||||
}
|
||||
|
||||
return false
|
||||
return false;
|
||||
}
|
||||
|
||||
function getImgUser(profile: IUserFields) {
|
||||
return userStore.getImgByProfile(profile)
|
||||
return userStore.getImgByProfile(profile);
|
||||
}
|
||||
|
||||
function naviga(path: string) {
|
||||
$router.push(path)
|
||||
$router.push(path);
|
||||
}
|
||||
|
||||
function setCmd($q: any, cmd: number, myusername: string, value: any, groupname: string) {
|
||||
emit('setCmd', $q, cmd, myusername, value, groupname)
|
||||
function setCmd(
|
||||
$q: any,
|
||||
cmd: number,
|
||||
myusername: string,
|
||||
value: any,
|
||||
groupname: string
|
||||
) {
|
||||
emit('setCmd', $q, cmd, myusername, value, groupname);
|
||||
}
|
||||
|
||||
function cmdExt(cmd: any, val1: any, val2: any) {
|
||||
emit('cmdext', cmd, val1, val2)
|
||||
emit('cmdext', cmd, val1, val2);
|
||||
}
|
||||
|
||||
function navigaExt(obj: any) {
|
||||
cmdExt(costanti.CMD_SHOW_PAGE, null, obj)
|
||||
cmdExt(costanti.CMD_SHOW_PAGE, null, obj);
|
||||
//let link = shared_consts.getDirectoryByTable(props.table) + '/' + obj._id
|
||||
//console.log('link', link)
|
||||
//$router.push(link)
|
||||
}
|
||||
|
||||
function getNameToShow(user: IUserFields, col = null) {
|
||||
if (myrec.value.groupname)
|
||||
return myrec.value.groupname
|
||||
else
|
||||
return userStore.getNameToShow(user, col)
|
||||
if (myrec.value.groupname) return myrec.value.groupname;
|
||||
else return userStore.getNameToShow(user, col);
|
||||
}
|
||||
|
||||
function isPartecipero() {
|
||||
return (props.table === shared_consts.TABLES_MYBACHECAS && calendarStore.isPartecipero(myrec.value._id, props.table))
|
||||
return (
|
||||
props.table === shared_consts.TABLES_MYBACHECAS &&
|
||||
calendarStore.isPartecipero(myrec.value._id, props.table)
|
||||
);
|
||||
}
|
||||
|
||||
function computedWidth() {
|
||||
@@ -116,7 +128,7 @@ export default defineComponent({
|
||||
return `${Math.min(width, 600)}px`; // Limita la larghezza massima a 600px
|
||||
}
|
||||
|
||||
onMounted(mounted)
|
||||
onMounted(mounted);
|
||||
|
||||
return {
|
||||
t,
|
||||
@@ -140,6 +152,6 @@ export default defineComponent({
|
||||
disabilita,
|
||||
globalStore,
|
||||
computedWidth,
|
||||
}
|
||||
};
|
||||
},
|
||||
})
|
||||
});
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div
|
||||
class="rec-card-wrapper"
|
||||
:class="{ 'is-even': indexRow % 2 === 0, 'is-odd': indexRow % 2 !== 0 }"
|
||||
:style="{ maxWidth: computedWidth() }"
|
||||
>
|
||||
<!-- Evento Calendar con data grande -->
|
||||
|
||||
@@ -106,6 +106,7 @@
|
||||
:label="addstrrequired + label"
|
||||
input-debounce="300"
|
||||
:input-class="myclass"
|
||||
:class="myclass"
|
||||
:options="valori"
|
||||
:option-value="optval"
|
||||
:option-label="(opt) => getOptionLabel(opt)"
|
||||
|
||||
@@ -76,11 +76,11 @@
|
||||
<span
|
||||
v-if="contact.profile && contact.profile.resid_str_comune"
|
||||
class="show_comune_title"
|
||||
>Comune:
|
||||
<span class="show_comune">{{ contact.profile.resid_str_comune }}</span>
|
||||
>
|
||||
<span class="show_comune">{{ contact.profile.resid_str_comune }} ({{ contact.profile.resid_province }})</span>
|
||||
</span>
|
||||
<span
|
||||
v-if="contact.profile && contact.profile.resid_province"
|
||||
v-if="contact.profile && contact.profile.resid_province && !contact.profile.resid_str_comune"
|
||||
class="show_province_title"
|
||||
><span class="show_province">({{ contact.profile.resid_province }})</span>
|
||||
</span>
|
||||
|
||||
@@ -233,14 +233,14 @@ $mobile-footer-height: 80px;
|
||||
}
|
||||
|
||||
.step-line {
|
||||
width: 60px;
|
||||
width: 50px;
|
||||
height: 3px;
|
||||
background: linear-gradient(to right, #e0e0e0, #bdbdbd);
|
||||
margin: 0 4px;
|
||||
transition: all $transition-speed ease;
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
width: 40px;
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
.completed + & {
|
||||
@@ -288,8 +288,8 @@ $mobile-footer-height: 80px;
|
||||
animation: fadeIn 0.4s ease;
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
padding: 0px 16px 16px;
|
||||
gap: 12px;
|
||||
padding: 0px 8px 8px;
|
||||
gap: 2px;
|
||||
min-height: calc(100vh - 280px);
|
||||
}
|
||||
|
||||
@@ -306,7 +306,7 @@ $mobile-footer-height: 80px;
|
||||
border-bottom: 2px solid rgba(0, 0, 0, 0.05);
|
||||
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
padding-bottom: 12px;
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
|
||||
.q-icon {
|
||||
|
||||
@@ -21,6 +21,8 @@ import {
|
||||
watch,
|
||||
} from 'vue';
|
||||
import { CSignIn } from '@src/components/CSignIn';
|
||||
import { CMyFieldDb } from '@src/components/CMyFieldDb';
|
||||
import { CMyFieldRec } from '@src/components/CMyFieldRec';
|
||||
import { useQuasar } from 'quasar';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { DefaultProfile, useUserStore } from '@store/UserStore';
|
||||
@@ -28,6 +30,7 @@ import useValidate from '@vuelidate/core';
|
||||
import useVuelidate from '@vuelidate/core';
|
||||
|
||||
import { shared_consts } from '@src/common/shared_vuejs';
|
||||
import { costanti } from '@costanti';
|
||||
|
||||
import { minLength, required, sameAs } from '@vuelidate/validators';
|
||||
|
||||
@@ -49,7 +52,15 @@ import { useInvitaAmicoStore } from 'app/src/stores/useInvitaAmicoStore';
|
||||
|
||||
export default defineComponent({
|
||||
name: 'CSignUp',
|
||||
components: { Logo, CTitleBanner, PagePolicy, CCopyBtn, CRegistration },
|
||||
components: {
|
||||
Logo,
|
||||
CTitleBanner,
|
||||
PagePolicy,
|
||||
CCopyBtn,
|
||||
CRegistration,
|
||||
CMyFieldDb,
|
||||
CMyFieldRec,
|
||||
},
|
||||
props: {
|
||||
showadultcheck: {
|
||||
type: Boolean,
|
||||
@@ -131,9 +142,12 @@ export default defineComponent({
|
||||
const inputSurname = ref(<any>null);
|
||||
const inputPassword = ref(<any>null);
|
||||
const inputPassword2 = ref(<any>null);
|
||||
const inputComune = ref(<any>null);
|
||||
const noinvito = ref(false);
|
||||
const numStepTotali = ref('5');
|
||||
const reccomune = ref(<any>{profile: {resid_str_comune: '', resid_comune: ''}});
|
||||
|
||||
const submitBtn = ref(<any>null); // AGGIUNGI QUESTA RIGA
|
||||
const submitBtn = ref(<any>null); // AGGIUNGI QUESTA RIGA
|
||||
|
||||
// Responsive detection
|
||||
const isMobile = ref(false);
|
||||
@@ -171,6 +185,8 @@ export default defineComponent({
|
||||
(inputPassword.value && inputPassword.value.hasError) ||
|
||||
!inputPassword2.value ||
|
||||
(inputPassword2.value && inputPassword2.value.hasError);
|
||||
} else if (slide.value === '4') {
|
||||
ret = !signup.profile.resid_str_comune || !signup.profile.resid_comune;
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -200,9 +216,13 @@ export default defineComponent({
|
||||
inputPassword.value.focus();
|
||||
}
|
||||
} else if (newSlide === '4') {
|
||||
if (inputComune.value) {
|
||||
inputComune.value.focus();
|
||||
}
|
||||
} else if (newSlide === '5') {
|
||||
if (submitBtn.value) {
|
||||
submitBtn.value.$el.focus();
|
||||
}
|
||||
submitBtn.value.$el.focus();
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
@@ -243,6 +263,7 @@ export default defineComponent({
|
||||
complexityUser,
|
||||
registereduser,
|
||||
},
|
||||
comune: {},
|
||||
name: {
|
||||
required:
|
||||
props.collettivo ||
|
||||
@@ -501,6 +522,20 @@ export default defineComponent({
|
||||
onMounted(async () => {
|
||||
const token = props.token;
|
||||
|
||||
let dev = tools.isDevelop();
|
||||
|
||||
// dev = false;
|
||||
|
||||
if (dev) {
|
||||
signup.email = 'test123@prova.com';
|
||||
signup.username = 'test123';
|
||||
signup.name = 'Nome';
|
||||
signup.surname = 'Cognome';
|
||||
signup.password = 'A12345678';
|
||||
signup.repeatPassword = 'A12345678';
|
||||
signup.aportador_solidario = 'surya1977';
|
||||
}
|
||||
|
||||
// Check mobile on mount
|
||||
checkMobile();
|
||||
window.addEventListener('resize', checkMobile);
|
||||
@@ -518,6 +553,19 @@ export default defineComponent({
|
||||
}
|
||||
});
|
||||
|
||||
function updateComune(row: any, col: any, newval: any, valinit: any, valtosee: any) {
|
||||
// console.log('updateComune', reccomune.value.profile.resid_comune)
|
||||
if (!!row.profile.recCity) {
|
||||
signup.profile.resid_comune = row.profile.recCity._id
|
||||
signup.profile.resid_str_comune = row.profile.recCity.comune_solo
|
||||
signup.profile.resid_province = row.profile.recCity.prov
|
||||
} else {
|
||||
signup.profile.resid_comune = ''
|
||||
signup.profile.resid_str_comune = ''
|
||||
signup.profile.resid_province = ''
|
||||
}
|
||||
}
|
||||
|
||||
onUnmounted(() => {
|
||||
window.removeEventListener('resize', checkMobile);
|
||||
});
|
||||
@@ -557,10 +605,15 @@ export default defineComponent({
|
||||
inputSurname,
|
||||
inputPassword,
|
||||
inputPassword2,
|
||||
inputComune,
|
||||
shared_consts,
|
||||
isMobile,
|
||||
submitBtn,
|
||||
noinvito,
|
||||
costanti,
|
||||
updateComune,
|
||||
numStepTotali,
|
||||
reccomune,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
<!-- Progress Stepper -->
|
||||
<div class="progress-stepper">
|
||||
<div
|
||||
v-for="step in 4"
|
||||
v-for="step in parseInt(numStepTotali)"
|
||||
:key="step"
|
||||
class="step-item"
|
||||
:class="{
|
||||
@@ -139,7 +139,7 @@
|
||||
<span v-else>{{ step }}</span>
|
||||
</div>
|
||||
<div
|
||||
v-if="step < 4"
|
||||
v-if="step < parseInt(numStepTotali)"
|
||||
class="step-line"
|
||||
></div>
|
||||
</div>
|
||||
@@ -481,10 +481,66 @@
|
||||
</div>
|
||||
</q-carousel-slide>
|
||||
|
||||
<!-- Slide 4: Conferma e Policy -->
|
||||
<!-- Slide 4: Comune -->
|
||||
<q-carousel-slide
|
||||
name="4"
|
||||
class="carousel-slide"
|
||||
>
|
||||
<div class="slide-content">
|
||||
<div class="slide-header">
|
||||
<q-icon
|
||||
name="lock_outline"
|
||||
size="40px"
|
||||
color="primary"
|
||||
/>
|
||||
<h2 class="slide-title">Comune di Residenza</h2>
|
||||
<p class="slide-subtitle">
|
||||
Seleziona il tuo comune di residenza, o dove vivi abitualmente, per
|
||||
connetterti con la Community Locale.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="form-fields">
|
||||
<!--<CMyFieldRec
|
||||
:nosaveToDb="true"
|
||||
table="users"
|
||||
tablesel="cities"
|
||||
jointable="cities"
|
||||
:pickup="true"
|
||||
:type="costanti.FieldType.select_by_server"
|
||||
:rec="signup"
|
||||
field="profile.resid_comune"
|
||||
mysubkey_tosee="resid_str_comune"
|
||||
fieldsel_tosee="comune"
|
||||
:canEdit="true"
|
||||
:canModify="true"
|
||||
@savedInDb="updateComune"
|
||||
></CMyFieldRec>-->
|
||||
|
||||
<CMyFieldDb
|
||||
:nosaveToDb="true"
|
||||
table="users"
|
||||
tablesel="cities"
|
||||
mykey="profile"
|
||||
mysubkey="recCity"
|
||||
label_trans="reg.resid_str_comune"
|
||||
:useinput="false"
|
||||
jointable="cities"
|
||||
:pickup="true"
|
||||
myclass="class_select"
|
||||
:isInModif="true"
|
||||
:type="costanti.FieldType.select_by_server"
|
||||
:rec="reccomune"
|
||||
@showandsave="updateComune"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</q-carousel-slide>
|
||||
|
||||
<!-- Slide numStepTotali: Conferma e Policy -->
|
||||
<q-carousel-slide
|
||||
:name="numStepTotali"
|
||||
class="carousel-slide"
|
||||
>
|
||||
<div class="slide-content final-slide">
|
||||
<div class="slide-header">
|
||||
@@ -527,6 +583,16 @@
|
||||
/>
|
||||
<span>{{ signup.name }} {{ signup.surname }}</span>
|
||||
</div>
|
||||
<div
|
||||
v-if="signup.profile.resid_str_comune"
|
||||
class="summary-item"
|
||||
>
|
||||
<q-icon
|
||||
name="home"
|
||||
color="primary"
|
||||
/>
|
||||
<span>{{ signup.profile.resid_str_comune }} ({{ signup.profile.resid_province }})</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="policy-section">
|
||||
@@ -571,7 +637,7 @@
|
||||
class="nav-btn back-btn"
|
||||
/>
|
||||
<q-btn
|
||||
v-if="slide !== '4'"
|
||||
v-if="slide !== numStepTotali"
|
||||
unelevated
|
||||
color="primary"
|
||||
icon-right="arrow_forward"
|
||||
@@ -581,7 +647,7 @@
|
||||
class="nav-btn next-btn"
|
||||
/>
|
||||
<q-btn
|
||||
v-if="slide === '4'"
|
||||
v-if="slide === numStepTotali"
|
||||
ref="submitBtn"
|
||||
unelevated
|
||||
color="positive"
|
||||
@@ -608,6 +674,7 @@
|
||||
{ label: '2', value: '2' },
|
||||
{ label: '3', value: '3' },
|
||||
{ label: '4', value: '4' },
|
||||
{ label: '5', value: '5' },
|
||||
]"
|
||||
/>
|
||||
</div>
|
||||
@@ -689,16 +756,18 @@
|
||||
color="primary"
|
||||
/>
|
||||
<div>
|
||||
<p class="text-weight-medium q-mb-sm">Per accedere a RISO hai bisogno di un invito</p>
|
||||
<p class="text-body2">
|
||||
L'invito può essere di due tipi:
|
||||
<p class="text-weight-medium q-mb-sm">
|
||||
Per accedere a RISO hai bisogno di un invito
|
||||
</p>
|
||||
<p class="text-body2">L'invito può essere di due tipi:</p>
|
||||
<ul class="invitation-types">
|
||||
<li>
|
||||
<strong>Username dell'invitante:</strong> inserisci lo username di chi ti ha parlato di RISO
|
||||
<strong>Username dell'invitante:</strong> inserisci lo username di chi
|
||||
ti ha parlato di RISO
|
||||
</li>
|
||||
<li>
|
||||
<strong>Link di registrazione:</strong> usa il link personale che ti è stato inviato via email o messaggio
|
||||
<strong>Link di registrazione:</strong> usa il link personale che ti è
|
||||
stato inviato via email o messaggio
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -714,8 +783,9 @@
|
||||
<div>
|
||||
<p class="text-weight-medium q-mb-sm">Non conosci nessuno di RISO?</p>
|
||||
<p class="text-body2">
|
||||
Nessun problema! Puoi unirti alla comunità attraverso i nostri gruppi territoriali su Telegram
|
||||
oppure contattarci direttamente via email. Saremo felici di darti il benvenuto! 🌱
|
||||
Nessun problema! Puoi unirti alla comunità attraverso i nostri gruppi
|
||||
territoriali su Telegram oppure contattarci direttamente via email. Saremo
|
||||
felici di darti il benvenuto! 🌱
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -728,7 +798,11 @@
|
||||
color="primary"
|
||||
icon="telegram"
|
||||
label="Gruppi Telegram Territoriali"
|
||||
:href="tools.getLinkGruppiTerritorialiTelegram() ? tools.getLinkGruppiTerritorialiTelegram() : ''"
|
||||
:href="
|
||||
tools.getLinkGruppiTerritorialiTelegram()
|
||||
? tools.getLinkGruppiTerritorialiTelegram()
|
||||
: ''
|
||||
"
|
||||
target="_blank"
|
||||
class="action-btn full-width q-mb-sm"
|
||||
no-caps
|
||||
|
||||
@@ -62,6 +62,10 @@ export default defineComponent({
|
||||
label: 'Telegram BOT Rimosso',
|
||||
value: shared_consts.FILTER_USER_TELEGRAM_BLOCKED
|
||||
},
|
||||
{
|
||||
label: 'Comune',
|
||||
value: shared_consts.FILTER_USER_COMUNE
|
||||
},
|
||||
{
|
||||
label: 'Provincia',
|
||||
value: shared_consts.FILTER_USER_PROVINCE
|
||||
|
||||
@@ -337,9 +337,7 @@
|
||||
<q-btn
|
||||
label="Replace Username"
|
||||
color="primary"
|
||||
@click="
|
||||
EseguiFunz('ReplaceUsername', search_username, replace_username)
|
||||
"
|
||||
@click="EseguiFunz('ReplaceUsername', search_username, replace_username)"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
label="Esci da tutti i Circuiti a saldo Zero"
|
||||
@@ -350,19 +348,13 @@
|
||||
label="Replace AportadorSolidario"
|
||||
color="primary"
|
||||
@click="
|
||||
EseguiFunz(
|
||||
'replaceAportadorSolidario',
|
||||
search_username,
|
||||
replace_username
|
||||
)
|
||||
EseguiFunz('replaceAportadorSolidario', search_username, replace_username)
|
||||
"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
label="Replace Circuit"
|
||||
color="primary"
|
||||
@click="
|
||||
EseguiFunz('ReplaceCircuitName', search_username, replace_username)
|
||||
"
|
||||
@click="EseguiFunz('ReplaceCircuitName', search_username, replace_username)"
|
||||
></q-btn>
|
||||
<br />
|
||||
</div>
|
||||
@@ -383,9 +375,7 @@
|
||||
<q-btn
|
||||
label="Create Account Circuits"
|
||||
color="primary"
|
||||
@click="
|
||||
EseguiFunz('CreateAccountCircuits', search_username, replace_username)
|
||||
"
|
||||
@click="EseguiFunz('CreateAccountCircuits', search_username, replace_username)"
|
||||
></q-btn>
|
||||
<br />
|
||||
</div>
|
||||
@@ -411,7 +401,11 @@
|
||||
label="Fiducia Concessa"
|
||||
style="width: 300px"
|
||||
></q-input>
|
||||
<q-input v-model="valmax" label="Max Qta" style="width: 300px"></q-input>
|
||||
<q-input
|
||||
v-model="valmax"
|
||||
label="Max Qta"
|
||||
style="width: 300px"
|
||||
></q-input>
|
||||
</div>
|
||||
<div class="row">
|
||||
<q-btn
|
||||
@@ -435,14 +429,7 @@
|
||||
label="Imposta Min e Max per TUTTI i Conti Personali di un Circuito"
|
||||
color="primary"
|
||||
@click="
|
||||
EseguiFunz(
|
||||
'ImpostaMinMaxPersonaliCircuito',
|
||||
'',
|
||||
'',
|
||||
valmin,
|
||||
valmax,
|
||||
circuitId
|
||||
)
|
||||
EseguiFunz('ImpostaMinMaxPersonaliCircuito', '', '', valmin, valmax, circuitId)
|
||||
"
|
||||
></q-btn>
|
||||
</div>
|
||||
@@ -526,14 +513,7 @@
|
||||
label="Imposta Min e Max per i Circuiti Collettivi di DEFAULT"
|
||||
color="primary"
|
||||
@click="
|
||||
EseguiFunz(
|
||||
'ImpostaDefMinMaxCollettivi',
|
||||
'',
|
||||
'',
|
||||
defmin,
|
||||
defmax,
|
||||
circuitId
|
||||
)
|
||||
EseguiFunz('ImpostaDefMinMaxCollettivi', '', '', defmin, defmax, circuitId)
|
||||
"
|
||||
></q-btn>
|
||||
<br />
|
||||
@@ -599,11 +579,22 @@
|
||||
<br />
|
||||
</div>
|
||||
|
||||
<q-spinner v-if="incaricamento" color="primary" size="3em" :thickness="2" />
|
||||
<q-spinner
|
||||
v-if="incaricamento"
|
||||
color="primary"
|
||||
size="3em"
|
||||
:thickness="2"
|
||||
/>
|
||||
|
||||
<q-field stack-label dense>
|
||||
<q-field
|
||||
stack-label
|
||||
dense
|
||||
>
|
||||
<template v-slot:control>
|
||||
<div class="self-center full-width no-outline text-center" tabindex="0">
|
||||
<div
|
||||
class="self-center full-width no-outline text-center"
|
||||
tabindex="0"
|
||||
>
|
||||
{{ ris }}
|
||||
</div>
|
||||
</template>
|
||||
@@ -781,6 +772,14 @@
|
||||
color="negative"
|
||||
@click="EseguiFunz('convertProductInfos')"
|
||||
></q-btn>
|
||||
<div class="row">
|
||||
<q-btn
|
||||
label="Rimuovi i dati inutili nella Tabella MySkills"
|
||||
color="negative"
|
||||
@click="EseguiFunz('RemoveDatiInutiliMySkill')"
|
||||
></q-btn>
|
||||
<br />
|
||||
</div>
|
||||
<q-btn
|
||||
label="getGM_Lista_Argomenti"
|
||||
color="positive"
|
||||
@@ -805,16 +804,23 @@
|
||||
<div class="results-content">
|
||||
{{ risultato }}
|
||||
</div>
|
||||
<h2 v-if="!!risultatoHTML" class="results-title">Risultati HTML:</h2>
|
||||
<div v-if="!!risultatoHTML" v-html="risultatoHTML"></div>
|
||||
<h2
|
||||
v-if="!!risultatoHTML"
|
||||
class="results-title"
|
||||
>
|
||||
Risultati HTML:
|
||||
</h2>
|
||||
<div
|
||||
v-if="!!risultatoHTML"
|
||||
v-html="risultatoHTML"
|
||||
></div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
</template>
|
||||
<script lang="ts" src="./dbop.ts">
|
||||
</script>
|
||||
<script lang="ts" src="./dbop.ts"></script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "./dbop";
|
||||
@import './dbop';
|
||||
</style>
|
||||
|
||||
@@ -112,6 +112,7 @@ export default defineComponent({
|
||||
'profile.qualifica': 1,
|
||||
'profile.note': 1,
|
||||
'profile.da_contattare': 1,
|
||||
'profile.resid_str_comune': 1,
|
||||
'profile.resid_province': 1,
|
||||
'mycities.reg': 1,
|
||||
}
|
||||
|
||||
@@ -713,12 +713,12 @@
|
||||
v-bind="$attrs"
|
||||
:copy="false"
|
||||
:value="
|
||||
userStore.userprofile.profile.resid_str_comune
|
||||
userStore.userprofile.profile.resid_str_comune + (userStore.userprofile.profile.resid_province ? ' (' + userStore.userprofile.profile.resid_province + ')' : '')
|
||||
"
|
||||
label="Comune"
|
||||
/>
|
||||
<CLabel
|
||||
v-if="!!userStore.userprofile.profile.resid_province"
|
||||
v-if="!!userStore.userprofile.profile.resid_province && !userStore.userprofile.profile.resid_str_comune"
|
||||
v-bind="$attrs"
|
||||
:copy="false"
|
||||
:value="
|
||||
|
||||
Reference in New Issue
Block a user