- Modified privacywrite query with graphLookup:
$graphLookup: {
from: "projects",
startWith: "$id_main_project",
connectFromField: "id_main_project",
connectToField: "_id",
as: "ris",
restrictSearchWithMatch: { $or: [{ privacyread: server_constants.Privacy.all }, { userId: userId }] }
}
},
{ $match: { "ris.privacyread": { $exists: true } } },
This commit is contained in:
@@ -160,12 +160,6 @@ export default class SingleProject extends Vue {
|
|||||||
this.clButtPopover += ' pos-item-popover_cursor'
|
this.clButtPopover += ' pos-item-popover_cursor'
|
||||||
}
|
}
|
||||||
|
|
||||||
// this.getinputdescr = 'inputdescr' + this.itemproject._id
|
|
||||||
|
|
||||||
// console.log('classDescrEdit = ', this.classDescrEdit)
|
|
||||||
// console.log('classDescr', this.classDescr)
|
|
||||||
|
|
||||||
// console.log('UserStore.state.lang', UserStore.state.lang)
|
|
||||||
if (this.isProject()) {
|
if (this.isProject()) {
|
||||||
this.menuPopupProj = tools.menuPopupProj[UserStore.state.lang]
|
this.menuPopupProj = tools.menuPopupProj[UserStore.state.lang]
|
||||||
}
|
}
|
||||||
@@ -191,7 +185,7 @@ export default class SingleProject extends Vue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public clickRiga(clickmenu: boolean = false) {
|
public clickRiga(clickmenu: boolean = false) {
|
||||||
// console.log('CLICK RIGA ************')
|
console.log('CLICK RIGA PROJ************')
|
||||||
|
|
||||||
if (!this.sel) {
|
if (!this.sel) {
|
||||||
if (!this.inEdit) {
|
if (!this.inEdit) {
|
||||||
@@ -272,7 +266,7 @@ export default class SingleProject extends Vue {
|
|||||||
this.updateClasses()
|
this.updateClasses()
|
||||||
}
|
}
|
||||||
|
|
||||||
this.faiFocus('inputdescr', false, true)
|
this.faiFocus('inputprojdescr', false, true)
|
||||||
}
|
}
|
||||||
// console.log('FINE - editProject')
|
// console.log('FINE - editProject')
|
||||||
}
|
}
|
||||||
@@ -288,11 +282,12 @@ export default class SingleProject extends Vue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!!theField) {
|
if (!!theField) {
|
||||||
|
console.log('FOCUS PROJ', theField)
|
||||||
theField.focus()
|
theField.focus()
|
||||||
}
|
}
|
||||||
|
|
||||||
// console.log('focus()')
|
// console.log('focus()')
|
||||||
}, 100)
|
}, 300)
|
||||||
}
|
}
|
||||||
|
|
||||||
public getFocus(e) {
|
public getFocus(e) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
:to="getrouteto"/>
|
:to="getrouteto"/>
|
||||||
|
|
||||||
<div class="flex-item donotdrag divdescrTot">
|
<div class="flex-item donotdrag divdescrTot">
|
||||||
<q-input v-if="(sel && inEdit)" hide-underline type="textarea" ref="inputdescr"
|
<q-input v-if="(sel && inEdit)" hide-underline type="textarea" ref="inputprojdescr"
|
||||||
v-model.trim="precDescr"
|
v-model.trim="precDescr"
|
||||||
autogrow
|
autogrow
|
||||||
borderless
|
borderless
|
||||||
|
|||||||
@@ -174,20 +174,6 @@ export default class SingleTodo extends Vue {
|
|||||||
this.clButtPopover += ' pos-item-popover_cursor'
|
this.clButtPopover += ' pos-item-popover_cursor'
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (this.inEdit) {
|
|
||||||
// this.classDescr += ' hide'
|
|
||||||
// this.classDescrEdit += ' show'
|
|
||||||
// } else {
|
|
||||||
// this.classDescrEdit += ' hide'
|
|
||||||
// this.classDescr += ' show'
|
|
||||||
// }
|
|
||||||
|
|
||||||
// this.getinputdescr = 'inputdescr' + this.itemtodo._id
|
|
||||||
|
|
||||||
// console.log('classDescrEdit = ', this.classDescrEdit)
|
|
||||||
// console.log('classDescr', this.classDescr)
|
|
||||||
|
|
||||||
// console.log('UserStore.state.lang', UserStore.state.lang)
|
|
||||||
if (this.isTodo()) {
|
if (this.isTodo()) {
|
||||||
this.menuPopupTodo = tools.menuPopupTodo[UserStore.state.lang]
|
this.menuPopupTodo = tools.menuPopupTodo[UserStore.state.lang]
|
||||||
}
|
}
|
||||||
@@ -295,10 +281,11 @@ export default class SingleTodo extends Vue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!!theField) {
|
if (!!theField) {
|
||||||
|
console.log('FOCUS TODO', theField)
|
||||||
theField.focus()
|
theField.focus()
|
||||||
}
|
}
|
||||||
// console.log('focus()')
|
// console.log('focus()')
|
||||||
}, 100)
|
}, 300)
|
||||||
}
|
}
|
||||||
|
|
||||||
public exitEdit(singola: boolean = false) {
|
public exitEdit(singola: boolean = false) {
|
||||||
@@ -408,6 +395,8 @@ export default class SingleTodo extends Vue {
|
|||||||
} else {
|
} else {
|
||||||
this.itemtodo.statustodo = tools.Status.COMPLETED
|
this.itemtodo.statustodo = tools.Status.COMPLETED
|
||||||
}
|
}
|
||||||
|
this.itemtodo.progress = 100
|
||||||
|
|
||||||
this.watchupdate('statustodo')
|
this.watchupdate('statustodo')
|
||||||
|
|
||||||
this.deselectAndExitEdit()
|
this.deselectAndExitEdit()
|
||||||
|
|||||||
@@ -263,8 +263,8 @@ const messages = {
|
|||||||
costo: '220€ singola, 320€ matrimoniale',
|
costo: '220€ singola, 320€ matrimoniale',
|
||||||
descrizione: 'Affittasi 2 Camere a Málaga - Las Delicias',
|
descrizione: 'Affittasi 2 Camere a Málaga - Las Delicias',
|
||||||
cameramatr: 'Camera matrimoniale (per 1 persona)',
|
cameramatr: 'Camera matrimoniale (per 1 persona)',
|
||||||
matr1: '320€ al mese: da maggio fino a settembre',
|
matr1: '320€ al mese: da maggio fino a settembre (10,50 mq)',
|
||||||
singola1: '220€ al mese: da maggio fino a settembre',
|
singola1: '220€ al mese: da maggio fino a settembre (6,50 mq)',
|
||||||
descrpiso: 'Si sub-affittano 2 camere in un modesto appartamento di 90m2, composto da 3 camere totali, 1 bagno con vasca + bide, sala, cucina, terrazzino coperto per ripostiglio e biciclette.<br>' +
|
descrpiso: 'Si sub-affittano 2 camere in un modesto appartamento di 90m2, composto da 3 camere totali, 1 bagno con vasca + bide, sala, cucina, terrazzino coperto per ripostiglio e biciclette.<br>' +
|
||||||
'L\'appartamento è a <strong>700m dalla spiaggia</strong>.<br>' +
|
'L\'appartamento è a <strong>700m dalla spiaggia</strong>.<br>' +
|
||||||
'A 3,5 km dal centro.<br>' +
|
'A 3,5 km dal centro.<br>' +
|
||||||
@@ -279,9 +279,9 @@ const messages = {
|
|||||||
'<h5>Periodo</h5>' +
|
'<h5>Periodo</h5>' +
|
||||||
' Da maggio fino ai primi di Settembre (poi da decidere insieme)' +
|
' Da maggio fino ai primi di Settembre (poi da decidere insieme)' +
|
||||||
'<h5>Costi</h5>' +
|
'<h5>Costi</h5>' +
|
||||||
' - 1 Camera Singola: <strong>220 €</strong><br>' +
|
' - 1 Camera Singola: <strong>220 €</strong> (6,50 mq) <br>' +
|
||||||
' - 1 Camera Matrimoniale: <strong>320 €</strong> (solo per 1 persona)<br><br>' +
|
' - 1 Camera Matrimoniale: <strong>320 €</strong> (solo per 1 persona) (10,50 mq)<br><br>' +
|
||||||
'P.S: Per <strong>Vegani</strong>, sconto extra per la matrimoniale!' +
|
'P.S: Per <strong>Vegani</strong>, sconto extra del 10% per la matrimoniale !' +
|
||||||
'<h5>Caparra</h5>' +
|
'<h5>Caparra</h5>' +
|
||||||
'La caparra da pagare in anticipo è di 300€<br>' +
|
'La caparra da pagare in anticipo è di 300€<br>' +
|
||||||
'che verrá restituita alla fine della stagione, a Settembre.' +
|
'che verrá restituita alla fine della stagione, a Settembre.' +
|
||||||
@@ -295,15 +295,16 @@ const messages = {
|
|||||||
'Nel caso in cui si debba lasciare l\'appartamento prima della scadenza, è buona norma <strong>avvertire</strong> con 30 giorni di preavviso, per permetterci di trovare un\'altra persona fidata, ' +
|
'Nel caso in cui si debba lasciare l\'appartamento prima della scadenza, è buona norma <strong>avvertire</strong> con 30 giorni di preavviso, per permetterci di trovare un\'altra persona fidata, ' +
|
||||||
'altrimenti parte della caparra verrá usata come indennizzo, salvo per motivazioni veramente importanti.' +
|
'altrimenti parte della caparra verrá usata come indennizzo, salvo per motivazioni veramente importanti.' +
|
||||||
'<h5>Spese Aggiuntive:</h5>' +
|
'<h5>Spese Aggiuntive:</h5>' +
|
||||||
'Le <strong>spese</strong> di luce, acqua, gas e internet Wifi con Fibra ottica, sono <strong>da pagare a parte</strong>, da dividere tra i coinquilini, (mediamente circa <strong>50€/mese a testa</strong>)<br><br>' +
|
'Le <strong>spese</strong> di luce, acqua, gas e internet Wifi con Fibra ottica, sono <strong>da pagare a parte</strong>, da dividere tra i coinquilini, (circa <strong>35 € al mese a testa</strong>)<br><br>' +
|
||||||
'Opzionale: A disposizione una <strong>Bicicietta</strong> MTB (costo 25€ al mese per l\'usura).<br><br>' +
|
'Opzionale: A disposizione una <strong>Bicicietta</strong> MTB (costo 20€ al mese per l\'usura).<br><br>' +
|
||||||
'' +
|
'' +
|
||||||
'P.S: I prezzi sono bassi perchè le camere vengono sub-affittate e non vogliamo lucrarci sopra, ma semplicemente mantenere l\'appartamento per ritornarci poi a Settembre<br>' +
|
'P.S: I prezzi sono bassi perchè le camere vengono sub-affittate e non vogliamo lucrarci sopra, ma semplicemente mantenere l\'appartamento per ritornarci poi a Settembre<br>' +
|
||||||
'<h5>Contratto</h5>' +
|
'<h5>Contratto</h5>' +
|
||||||
'Per stare tranquilli, verrà richiesto di firmare un contratto (scrittura privata), in cui si confermano queste condizioni scritte qui sopra.<br>' +
|
'Per stare tranquilli, verrà richiesto di firmare un contratto (scrittura privata), in cui si confermano queste condizioni scritte qui sopra.<br>' +
|
||||||
'Necessita di foto documenti d\'identità (carta d\'identità o passaporto). ' +
|
'Necessita di foto documenti d\'identità (carta d\'identità o passaporto). ' +
|
||||||
'<h5>Per contattarci</h5>' +
|
'<h5>Per contattarci</h5>' +
|
||||||
'Paolo: su Whatsapp +34 644932796 <br>' +
|
'Paolo: Whatsapp +34 644.93.27.96 <br>' +
|
||||||
|
'Karla: Whatsapp +34 603.24.41.00<br>' +
|
||||||
'Inviare anche contatto Facebook',
|
'Inviare anche contatto Facebook',
|
||||||
mat_scrivania: 'Scrivania - matrimoniale',
|
mat_scrivania: 'Scrivania - matrimoniale',
|
||||||
mat_finestra: 'Finestra - matrimoniale',
|
mat_finestra: 'Finestra - matrimoniale',
|
||||||
@@ -582,8 +583,8 @@ const messages = {
|
|||||||
costo: '220 € single, € 320 doble',
|
costo: '220 € single, € 320 doble',
|
||||||
descrizione: 'Alquiler de 2 habitaciones en Málaga - Las Delicias',
|
descrizione: 'Alquiler de 2 habitaciones en Málaga - Las Delicias',
|
||||||
cameramatr: 'Habitacion doble',
|
cameramatr: 'Habitacion doble',
|
||||||
matr1: '320 € al mes: de mayo a septiembre.',
|
matr1: '320 € al mes: de mayo a septiembre. (10,50 mq)',
|
||||||
singola1: '220 € al mes: de mayo a septiembre.',
|
singola1: '220 € al mes: de mayo a septiembre. (6,50 mq)',
|
||||||
descrpiso: 'Sub-alquilamos 2 habitaciones en un modesto apartamento de 90 m2, que consta de 3 habitaciones en total, 1 baño con bañera + bidet, sala de estar, cocina, terraza cubierta para almacenamiento y bicicletas. <br>' +
|
descrpiso: 'Sub-alquilamos 2 habitaciones en un modesto apartamento de 90 m2, que consta de 3 habitaciones en total, 1 baño con bañera + bidet, sala de estar, cocina, terraza cubierta para almacenamiento y bicicletas. <br>' +
|
||||||
'El apartamento está a <strong>700m de la playa</strong>. <br>' +
|
'El apartamento está a <strong>700m de la playa</strong>. <br>' +
|
||||||
'A 3.5 km del centro. <br>' +
|
'A 3.5 km del centro. <br>' +
|
||||||
@@ -595,15 +596,15 @@ const messages = {
|
|||||||
'No fumadores, no mascotas (el propietario lo prohíbe)' +
|
'No fumadores, no mascotas (el propietario lo prohíbe)' +
|
||||||
'<h5> ¿Quién vivirá contigo en el piso? </h5>' +
|
'<h5> ¿Quién vivirá contigo en el piso? </h5>' +
|
||||||
'Una estudiante española vive actualmente aquí' +
|
'Una estudiante española vive actualmente aquí' +
|
||||||
'<h5> Periodo </h5>' +
|
'<h5> Temporada </h5>' +
|
||||||
'Desde mayo hasta principios de septiembre (luego se decidirá en conjunto)' +
|
'Desde mayo hasta principios de septiembre (luego se decidirá en conjunto)' +
|
||||||
'<h5> Costos </h5>' +
|
'<h5> Costos </h5>' +
|
||||||
'- 1 habitación individual: <strong> 220 € </strong> <br>' +
|
'- 1 habitación individual: <strong> 220 € </strong> (6,50 mq) <br>' +
|
||||||
'- 1 Habitación Doble: <strong> 320 € </strong><br><br>' +
|
'- 1 Habitación Doble: <strong> 320 € </strong> (10,50 mq)<br><br>' +
|
||||||
'P.S: Para <strong>Veganos</strong>, ¡descuento extra para la Doble!' +
|
'P.S: Para <strong>Veganos</strong>, ¡descuento extra del 10% para la Doble!' +
|
||||||
'<h5> Fianza </h5>' +
|
'<h5> Fianza </h5>' +
|
||||||
'El anticipo a pagar por adelantado es de € 300 +' +
|
'El anticipo a pagar por adelantado es de € 300 <br>' +
|
||||||
'Que se devolverá al final de la temporada, en septiembre.' +
|
'que se devolverá al final de la temporada, en septiembre.' +
|
||||||
'<h5> Ver el apartamento </h5>' +
|
'<h5> Ver el apartamento </h5>' +
|
||||||
'Ponte en contacto conmigo para venir a ver el apartamento.' +
|
'Ponte en contacto conmigo para venir a ver el apartamento.' +
|
||||||
'<h5> ¿Cuánto tengo que pagar para ingresar? </h5>' +
|
'<h5> ¿Cuánto tengo que pagar para ingresar? </h5>' +
|
||||||
@@ -614,14 +615,15 @@ const messages = {
|
|||||||
'En caso de que tenga que abandonar el apartamento antes de la fecha límite, es una buena práctica <strong> avisar </strong> con <strong>30 días de antelación</strong>, para permitirnos encontrar a otra persona de confianza,' +
|
'En caso de que tenga que abandonar el apartamento antes de la fecha límite, es una buena práctica <strong> avisar </strong> con <strong>30 días de antelación</strong>, para permitirnos encontrar a otra persona de confianza,' +
|
||||||
'De lo contrario, parte del depósito se utilizará como compensación, excepto por razones muy importantes.' +
|
'De lo contrario, parte del depósito se utilizará como compensación, excepto por razones muy importantes.' +
|
||||||
'<h5> Gastos adicionales: </h5>' +
|
'<h5> Gastos adicionales: </h5>' +
|
||||||
'Los <strong> gastos </strong> de electricidad, agua, gas y internet wifi con fibra óptica, se <strong> pagarán por separado </strong>, se dividirán entre los compañeros de habitación (aproximadamente <strong> 50 € / mes cada uno</strong>) <br> <br> ' +
|
'Los <strong> gastos </strong> de electricidad, agua, gas y internet wifi con fibra óptica, se <strong> pagarán por separado </strong>, se dividirán entre los compañeros de habitación (aproximadamente <strong> 35 € / mes cada uno</strong>) <br> <br> ' +
|
||||||
'Opcional: hay un Bicicietta <strong> </strong> disponible (25 € al mes por desgaste). <br> <br> ' +
|
'Opcional: hay un Bicicietta <strong> </strong> disponible (20 € al mes por desgaste). <br> <br> ' +
|
||||||
'P.S: Los precios son bajos porque las habitaciones están sub-alquiladas y no queremos ganar dinero con esto, simplemente mantenemos el apartamento y luego regresamos a septiembre <br>' +
|
'P.S: Los precios son bajos porque las habitaciones están sub-alquiladas y no queremos ganar dinero con esto, simplemente mantenemos el apartamento y luego regresamos a septiembre <br>' +
|
||||||
'<h5> Contrato </h5>' +
|
'<h5> Contrato </h5>' +
|
||||||
'Para seguridad, se le pedirá que firme un contrato (acuerdo privado), que confirme las condiciones escritas arriba. <br> ' +
|
'Para seguridad, se le pedirá que firme un contrato (acuerdo privado), que confirme las condiciones escritas arriba. <br> ' +
|
||||||
'Se requieren documentos de identificación con foto (documento de identidad o pasaporte). ' +
|
'Se requieren documentos de identificación con foto (documento de identidad o pasaporte). ' +
|
||||||
'<h5> Para contactarnos </h5>' +
|
'<h5> Para contactarnos </h5>' +
|
||||||
'Paolo: su Whatsapp +34 644932796 <br>' +
|
'Paolo: Whatsapp +34 644.93.27.96 <br>' +
|
||||||
|
'Karla: Whatsapp +34 603.24.41.00<br>' +
|
||||||
'Enviar también contacto de Facebook',
|
'Enviar también contacto de Facebook',
|
||||||
mat_scrivania: 'Escritorio - cama matrimonial',
|
mat_scrivania: 'Escritorio - cama matrimonial',
|
||||||
mat_finestra: 'Ventana - matrimonial',
|
mat_finestra: 'Ventana - matrimonial',
|
||||||
@@ -901,8 +903,8 @@ const messages = {
|
|||||||
costo: '220 € single, € 320 double',
|
costo: '220 € single, € 320 double',
|
||||||
descrizione: 'Rent 2 Rooms in Málaga - Las Delicias district',
|
descrizione: 'Rent 2 Rooms in Málaga - Las Delicias district',
|
||||||
cameramatr: 'Double room (for 1 person)',
|
cameramatr: 'Double room (for 1 person)',
|
||||||
matr1: '€ 320 per month: from May until September',
|
matr1: '€ 320 per month: from May until September (10,50 mq)',
|
||||||
singola1: '€ 220 per month: from May until September',
|
singola1: '€ 220 per month: from May until September (6,50 mq)',
|
||||||
descrpiso: 'We sub-rent 2 rooms in a modest 90m2 apartment, consisting of 3 total bedrooms, 1 bathroom with bath + bidet, living room, kitchen, covered terrace for storage and bicycles. <br> ' +
|
descrpiso: 'We sub-rent 2 rooms in a modest 90m2 apartment, consisting of 3 total bedrooms, 1 bathroom with bath + bidet, living room, kitchen, covered terrace for storage and bicycles. <br> ' +
|
||||||
'The apartment is <strong>700m from the beach</strong>. <br>' +
|
'The apartment is <strong>700m from the beach</strong>. <br>' +
|
||||||
'3.5 km from the center. <br>' +
|
'3.5 km from the center. <br>' +
|
||||||
@@ -917,11 +919,11 @@ const messages = {
|
|||||||
'<h5> Period </h5>' +
|
'<h5> Period </h5>' +
|
||||||
'From May until the beginning of September (later to be decided together)' +
|
'From May until the beginning of September (later to be decided together)' +
|
||||||
'<h5> Costs </h5>' +
|
'<h5> Costs </h5>' +
|
||||||
'- 1 Single Room: <strong> 220 € </strong> <br>' +
|
'- 1 Single Room: <strong> 220 € </strong> (6,50 mq)<br>' +
|
||||||
'- 1 Double Room: <strong> 320 € </strong> (only for 1 person)<br><br>' +
|
'- 1 Double Room: <strong> 320 € </strong> (only for 1 person) (10,5 mq) <br><br>' +
|
||||||
'P.S: For <strong> Vegans </strong>, extra discount for the double room!' +
|
'P.S: For <strong> Vegans </strong>, 10% extra discount for the double room!' +
|
||||||
'<h5> Deposit </h5>' +
|
'<h5> Deposit </h5>' +
|
||||||
'The down payment to be paid in advance is € 300 +' +
|
'The down payment to be paid in advance is € 300 <br>' +
|
||||||
'which will be returned at the end of the season, in September.' +
|
'which will be returned at the end of the season, in September.' +
|
||||||
'<h5> See the apartment </h5>' +
|
'<h5> See the apartment </h5>' +
|
||||||
'Contact me to come and see the apartment.' +
|
'Contact me to come and see the apartment.' +
|
||||||
@@ -933,15 +935,16 @@ const messages = {
|
|||||||
'In case you have to leave the apartment before the deadline, it is good practice <strong> to warn </strong> with <strong>30 days notice</strong>, to allow us to find another trusted person,' +
|
'In case you have to leave the apartment before the deadline, it is good practice <strong> to warn </strong> with <strong>30 days notice</strong>, to allow us to find another trusted person,' +
|
||||||
'otherwise part of the deposit will be used as compensation, except for very important reasons.' +
|
'otherwise part of the deposit will be used as compensation, except for very important reasons.' +
|
||||||
'<h5> Additional Expenses: </h5>' +
|
'<h5> Additional Expenses: </h5>' +
|
||||||
'The <strong> expenses </strong> of electricity, water, gas and internet Wifi with fiber optics, are <strong> to be paid separately </strong>, to be divided among the roommates, (on average about <strong> 50 € / month each </strong>) <br> <br> ' +
|
'The <strong> expenses </strong> of electricity, water, gas and internet Wifi with fiber optics, are <strong> to be paid separately </strong>, to be divided among the roommates, (about <strong> 35 € / month each </strong>) <br> <br> ' +
|
||||||
'Optional: A <strong> MTB Bike </strong> is available (€ 25 per month). <br> <br>' +
|
'Optional: A <strong> MTB Bike </strong> is available (€ 20 per month). <br> <br>' +
|
||||||
'' +
|
'' +
|
||||||
'P.S: The prices are low because the rooms are sub-rented and we don\'t want to make money from them, but simply keep the apartment and then return to September <br>' +
|
'P.S: The prices are low because the rooms are sub-rented and we don\'t want to make money from them, but simply keep the apartment and then return to September <br>' +
|
||||||
'<h5> Contract </h5>' +
|
'<h5> Contract </h5>' +
|
||||||
'To be safe, you will be asked to sign a contract (private agreement), confirming these conditions written above. <br>' +
|
'To be safe, you will be asked to sign a contract (private agreement), confirming these conditions written above. <br>' +
|
||||||
'Photo identification documents (identity card or passport) are required. ' +
|
'Photo identification documents (identity card or passport) are required. ' +
|
||||||
'<h5> To contact us </h5>' +
|
'<h5> To contact us </h5>' +
|
||||||
'Paolo: on Whatsapp +34 644932796 <br>' +
|
'Paolo: Whatsapp +34 644.93.27.96 <br>' +
|
||||||
|
'Karla: Whatsapp +34 603.24.41.00<br>' +
|
||||||
'Send also Facebook contact',
|
'Send also Facebook contact',
|
||||||
mat_scrivania: 'Desk - double bed',
|
mat_scrivania: 'Desk - double bed',
|
||||||
mat_finestra: 'Window - double bed',
|
mat_finestra: 'Window - double bed',
|
||||||
|
|||||||
@@ -192,6 +192,9 @@ export namespace ApiTool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(' [Alternative] !!!!!!!!!!!!!!! Error while sending data', err, errorfromserver, 'lettoqualcosa', lettoqualcosa)
|
console.log(' [Alternative] !!!!!!!!!!!!!!! Error while sending data', err, errorfromserver, 'lettoqualcosa', lettoqualcosa)
|
||||||
|
if (!errorfromserver) {
|
||||||
|
return globalroutines(null, 'delete', 'swmsg', null, mystrparam)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export function getLinkByTableName(nametable) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const LIST_START = '0'
|
export const LIST_START = null
|
||||||
|
|
||||||
export const DB = {
|
export const DB = {
|
||||||
CMD_SYNC: 'sync',
|
CMD_SYNC: 'sync',
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ namespace Getters {
|
|||||||
|
|
||||||
const listaprojects = b.read((state: IProjectsState) => (): IMenuList[] => {
|
const listaprojects = b.read((state: IProjectsState) => (): IMenuList[] => {
|
||||||
if (state.projects) {
|
if (state.projects) {
|
||||||
console.log('state.projects', state.projects)
|
// console.log('state.projects', state.projects)
|
||||||
const listaproj = tools.mapSort(state.projects.filter((proj) => proj.id_parent === process.env.PROJECT_ID_MAIN))
|
const listaproj = tools.mapSort(state.projects.filter((proj) => proj.id_parent === process.env.PROJECT_ID_MAIN))
|
||||||
const myarr: IMenuList[] = []
|
const myarr: IMenuList[] = []
|
||||||
for (const proj of listaproj) {
|
for (const proj of listaproj) {
|
||||||
@@ -212,9 +212,9 @@ namespace Actions {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UserStore.state.userId === '') {
|
// if (UserStore.state.userId === '') {
|
||||||
return false // Login not made
|
// return false // Login not made
|
||||||
}
|
// }
|
||||||
|
|
||||||
console.log('dbLoad', nametable, checkPending, 'userid=', UserStore.state.userId)
|
console.log('dbLoad', nametable, checkPending, 'userid=', UserStore.state.userId)
|
||||||
|
|
||||||
|
|||||||
@@ -510,13 +510,15 @@ namespace Actions {
|
|||||||
// this.$router.push('/signin')
|
// this.$router.push('/signin')
|
||||||
}
|
}
|
||||||
|
|
||||||
async function setGlobal(loggedWithNetwork: boolean) {
|
async function setGlobal(isLogged: boolean) {
|
||||||
state.isLogged = true
|
state.isLogged = true
|
||||||
console.log('state.isLogged')
|
console.log('state.isLogged')
|
||||||
GlobalStore.mutations.setleftDrawerOpen(localStorage.getItem(tools.localStorage.leftDrawerOpen) === 'true')
|
if (isLogged) {
|
||||||
GlobalStore.mutations.setCategorySel(localStorage.getItem(tools.localStorage.categorySel))
|
GlobalStore.mutations.setleftDrawerOpen(localStorage.getItem(tools.localStorage.leftDrawerOpen) === 'true')
|
||||||
|
GlobalStore.mutations.setCategorySel(localStorage.getItem(tools.localStorage.categorySel))
|
||||||
|
|
||||||
GlobalStore.actions.checkUpdates()
|
GlobalStore.actions.checkUpdates()
|
||||||
|
}
|
||||||
|
|
||||||
await GlobalStore.actions.loadAfterLogin()
|
await GlobalStore.actions.loadAfterLogin()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
@@ -530,36 +532,37 @@ namespace Actions {
|
|||||||
console.log('*** autologin_FromLocalStorage ***')
|
console.log('*** autologin_FromLocalStorage ***')
|
||||||
// INIT
|
// INIT
|
||||||
|
|
||||||
|
let isLogged = false
|
||||||
|
|
||||||
UserStore.state.lang = tools.getItemLS(tools.localStorage.lang)
|
UserStore.state.lang = tools.getItemLS(tools.localStorage.lang)
|
||||||
|
|
||||||
const token = localStorage.getItem(tools.localStorage.token)
|
const token = localStorage.getItem(tools.localStorage.token)
|
||||||
if (!token) {
|
if (token) {
|
||||||
return false
|
const expirationDateStr = localStorage.getItem(tools.localStorage.expirationDate)
|
||||||
|
const expirationDate = new Date(String(expirationDateStr))
|
||||||
|
const now = tools.getDateNow()
|
||||||
|
if (now < expirationDate) {
|
||||||
|
const userId = String(localStorage.getItem(tools.localStorage.userId))
|
||||||
|
const username = String(localStorage.getItem(tools.localStorage.username))
|
||||||
|
const verified_email = localStorage.getItem(tools.localStorage.verified_email) === 'true'
|
||||||
|
|
||||||
|
GlobalStore.state.wasAlreadySubOnDb = localStorage.getItem(tools.localStorage.wasAlreadySubOnDb) === 'true'
|
||||||
|
|
||||||
|
console.log('************* autologin userId', userId)
|
||||||
|
|
||||||
|
UserStore.mutations.setAuth(token)
|
||||||
|
|
||||||
|
Mutations.mutations.authUser({
|
||||||
|
userId,
|
||||||
|
username,
|
||||||
|
verified_email
|
||||||
|
})
|
||||||
|
|
||||||
|
isLogged = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const expirationDateStr = localStorage.getItem(tools.localStorage.expirationDate)
|
|
||||||
const expirationDate = new Date(String(expirationDateStr))
|
|
||||||
const now = tools.getDateNow()
|
|
||||||
if (now >= expirationDate) {
|
|
||||||
console.log('!!! Login Expired')
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
const userId = String(localStorage.getItem(tools.localStorage.userId))
|
|
||||||
const username = String(localStorage.getItem(tools.localStorage.username))
|
|
||||||
const verified_email = localStorage.getItem(tools.localStorage.verified_email) === 'true'
|
|
||||||
|
|
||||||
GlobalStore.state.wasAlreadySubOnDb = localStorage.getItem(tools.localStorage.wasAlreadySubOnDb) === 'true'
|
await setGlobal(isLogged)
|
||||||
|
|
||||||
console.log('************* autologin userId', userId)
|
|
||||||
|
|
||||||
UserStore.mutations.setAuth(token)
|
|
||||||
|
|
||||||
Mutations.mutations.authUser({
|
|
||||||
userId,
|
|
||||||
username,
|
|
||||||
verified_email
|
|
||||||
})
|
|
||||||
|
|
||||||
await setGlobal(false)
|
|
||||||
|
|
||||||
console.log('autologin userId STATE ', state.userId)
|
console.log('autologin userId STATE ', state.userId)
|
||||||
|
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ export default class ProjList extends Vue {
|
|||||||
|
|
||||||
get CanIModifyPanelPrivacy() {
|
get CanIModifyPanelPrivacy() {
|
||||||
|
|
||||||
if (UserStore.state.userId === this.itemselproj.userId) // If it's the owner
|
if ((UserStore.state.userId === this.itemselproj.userId) || (this.itemselproj.privacywrite === Privacy.all)) // If it's the owner
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -357,7 +357,10 @@ export default class ProjList extends Vue {
|
|||||||
myobj.id_main_project = this.idProjAtt
|
myobj.id_main_project = this.idProjAtt
|
||||||
} else {
|
} else {
|
||||||
myobj.typeproj = TypeProj.TYPE_SUBDIR
|
myobj.typeproj = TypeProj.TYPE_SUBDIR
|
||||||
myobj.id_main_project = this.itemproj.id_main_project
|
if (this.itemproj.id_main_project === process.env.PROJECT_ID_MAIN)
|
||||||
|
myobj.id_main_project = this.itemproj._id
|
||||||
|
else
|
||||||
|
myobj.id_main_project = this.itemproj.id_main_project
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tools.checkIfUserExist(this)) {
|
if (!tools.checkIfUserExist(this)) {
|
||||||
@@ -392,6 +395,8 @@ export default class ProjList extends Vue {
|
|||||||
public deselectAllRowstodo(item: ITodo, check, onlythis: boolean = false) {
|
public deselectAllRowstodo(item: ITodo, check, onlythis: boolean = false) {
|
||||||
console.log('PROJ-LIST deselectAllRowstodo : ', item)
|
console.log('PROJ-LIST deselectAllRowstodo : ', item)
|
||||||
|
|
||||||
|
return false
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
for (const i in this.$refs.ctodo.$refs.single) {
|
for (const i in this.$refs.ctodo.$refs.single) {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
@@ -418,7 +423,7 @@ export default class ProjList extends Vue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public deselectAllRowsproj(item: IProject, check, onlythis: boolean = false) {
|
public deselectAllRowsproj(item: IProject, check, onlythis: boolean = false) {
|
||||||
// console.log('deselectAllRowsproj: ', item)
|
console.log('deselectAllRowsproj: ', item)
|
||||||
|
|
||||||
for (const i in this.$refs.singleproject) {
|
for (const i in this.$refs.singleproject) {
|
||||||
|
|
||||||
|
|||||||
@@ -176,14 +176,14 @@
|
|||||||
<div class="flex-container clMain">
|
<div class="flex-container clMain">
|
||||||
<q-icon class="flex-item flex-icon" name="developer_mode"/>
|
<q-icon class="flex-item flex-icon" name="developer_mode"/>
|
||||||
<div class="flex-item itemdata">
|
<div class="flex-item itemdata">
|
||||||
<CDate :mydate="itemselproj.begin_development"
|
<CDate :readonly="readonly_PanelPrivacy" :mydate="itemselproj.begin_development"
|
||||||
@input="itemselproj.begin_development = new Date(arguments[0])"
|
@input="itemselproj.begin_development = new Date(arguments[0])"
|
||||||
:label="$t('proj.begin_development')">
|
:label="$t('proj.begin_development')">
|
||||||
</CDate>
|
</CDate>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin: 10px;"></div>
|
<div style="margin: 10px;"></div>
|
||||||
<div class="flex-item itemdata">
|
<div class="flex-item itemdata">
|
||||||
<CDate :mydate="itemselproj.begin_test"
|
<CDate :readonly="readonly_PanelPrivacy" :mydate="itemselproj.begin_test"
|
||||||
@input="itemselproj.begin_test = new Date(arguments[0])"
|
@input="itemselproj.begin_test = new Date(arguments[0])"
|
||||||
:label="$t('proj.begin_test')">
|
:label="$t('proj.begin_test')">
|
||||||
</CDate>
|
</CDate>
|
||||||
@@ -192,13 +192,13 @@
|
|||||||
<div class="flex-container clMain">
|
<div class="flex-container clMain">
|
||||||
<q-icon class="flex-item flex-icon" name="outlined_flag"/>
|
<q-icon class="flex-item flex-icon" name="outlined_flag"/>
|
||||||
<div class="flex-item itemstatus">
|
<div class="flex-item itemstatus">
|
||||||
<q-select rounded outlined v-model="itemselproj.actualphase" :options="selectPhase"
|
<q-select :readonly="readonly_PanelPrivacy" rounded outlined v-model="itemselproj.actualphase" :options="selectPhase"
|
||||||
:label="$t('proj.actualphase')" emit-value map-options>
|
:label="$t('proj.actualphase')" emit-value map-options>
|
||||||
</q-select>
|
</q-select>
|
||||||
</div>
|
</div>
|
||||||
<q-icon class="flex-item flex-icon" name="outlined_flag"/>
|
<q-icon class="flex-item flex-icon" name="outlined_flag"/>
|
||||||
<div class="flex-item itemstatus">
|
<div class="flex-item itemstatus">
|
||||||
<q-select rounded outlined v-model="itemselproj.totalphases" :options="selectPhase"
|
<q-select :readonly="readonly_PanelPrivacy" rounded outlined v-model="itemselproj.totalphases" :options="selectPhase"
|
||||||
:label="$t('proj.totalphases')" emit-value map-options>
|
:label="$t('proj.totalphases')" emit-value map-options>
|
||||||
</q-select>
|
</q-select>
|
||||||
</div>
|
</div>
|
||||||
@@ -208,6 +208,7 @@
|
|||||||
<q-icon class="flex-item flex-icon" name="watch_later"/>
|
<q-icon class="flex-item flex-icon" name="watch_later"/>
|
||||||
<div class="flex-item itemdata content-center">
|
<div class="flex-item itemdata content-center">
|
||||||
<q-input
|
<q-input
|
||||||
|
:readonly="readonly_PanelPrivacy"
|
||||||
ref="input3"
|
ref="input3"
|
||||||
type="number"
|
type="number"
|
||||||
v-model="itemselproj.hoursweeky_plannedtowork"
|
v-model="itemselproj.hoursweeky_plannedtowork"
|
||||||
|
|||||||
Reference in New Issue
Block a user