import React, { Suspense, useEffect, useState } from 'react'; import { Meteor } from 'meteor/meteor'; import { Random } from 'meteor/random'; import { NecessitatsCollection } from '/imports/api/necessitats.js'; import { PoblesCollection } from '../api/pobles'; import { CodisCollection } from '../api/codis'; // import { TipusCollection } from '../api/tipus'; import { useSubscribe, useTracker, useFind } from 'meteor/react-meteor-data/suspense'; import { Roles } from 'meteor/roles'; // import { useUserId } from 'meteor/react-meteor-accounts'; import Select from 'react-select'; // import CreatableSelect from 'react-select/creatable'; // import AsyncCreatableSelect from 'react-select/async-creatable'; // import { BarraNav } from "./BarraNav/BarraNav"; // import InfiniteCalendar from 'react-infinite-calendar'; // import 'react-infinite-calendar/styles.css'; function generaCodi() { return Random.id().slice(0, 5).toUpperCase(); } export const Codis = () => { // const [permes, setPermes] = useState(false); const [esEditor, setEsEditor] = useState(false); const userId = Meteor.userId(); const [codiSeleccionat, setCodiSeleccionat] = useState(null); useEffect(() => { (async () => { const comprovaAdmin = await Roles.userIsInRoleAsync(userId, ["admin"]); setEsEditor(comprovaAdmin); })(); }, []); // console.log("isAdmin: ", isAdmin) ; // const [ambitSeleccionat, setAmbitSeleccionat] = useState(null); const [confecCodObj, setConfecCodObj] = useState({ codi: generaCodi(), ambit: null, rol: null, absCond: "abs", absActiu: false, condIni: null, condFi: null }); // useSubscribe('necessitats'); // const necessitats = useTracker("necessitats", () => NecessitatsCollection.find().fetchAsync()); useSubscribe('codis'); const codis = useTracker("codis", () => CodisCollection.find().fetchAsync()); useSubscribe('pobles'); const pobles = useTracker("pobles", () => PoblesCollection.find().fetchAsync()); const ambits = pobles?.map(p => p?.ambitAssociat); // console.log("ambits: ", ambits); // useSubscribe('tipus'); // const ambits = useTracker("ambits", () => Collection.find().fetchAsync()); // console.log("tipus: ", tipus); // console.log("necessitats: ", necessitats); // console.log("tipusSeleccionat: ", tipusSeleccionat); // const filterAmbit = (inputValue) => { // return ambits.filter((i) => // i.toLowerCase().includes(inputValue.toLowerCase()) // ); // }; // const [ambitGeneral, setAmbitGeneral] = useState(ambitSeleccionat === "GENERAL"); const codiDoc = useTracker("valsFormDoc", () => CodisCollection.findOneAsync(codiSeleccionat?._id)); // let selRolVal = codiDoc?.rol || "usuari"; const SelectorDeRol = () => { // const [docRol, setDocRol] = useState(codiDoc?.rol) return <> "Crear nou tipus..."} // filterOption={filterAmbit} defaultValue={codiDoc && { label: codiDoc?.ambit, value: codiDoc?.ambit } || confecCodObj.ambit} options={ [... ambits .map((v,i) => ({ value: v, label: v })) .sort((a,b) => a.label.toLowerCase() > b.label.toLowerCase()), { value: "GENERAL", label: "GENERAL" } ] } // onCreateOption={(inputValue) => Meteor.callAsync('afigT', {titol: inputValue})} isSearchable // loadOptions={tipus.map((v,i) => ({value: v, label: v.titol}))} onChange={amb => { // setAmbitSeleccionat(amb); // console.log("amb: ", amb); setConfecCodObj({ ...confecCodObj, ambit: amb }); }} /> {/* */}
{/* {... {ambitSeleccionat, selRolVal}} /> */}

Periode de validesa:

{/*

TEMPS REAL:

*/} setAbsCond('abs')} checked={codiSeleccionat && codiSeleccionat.absCond === 'abs' || confecCodObj?.absCond === 'abs'} onChange={(ev) => setConfecCodObj({ ...confecCodObj, absCond: 'abs' })} />
{/* L'activació condicionada desactivada fa que no siguen 'required' les dates d'inici i final */} setAbsCond('cond')} checked={codiSeleccionat && codiSeleccionat.absCond === 'cond' || confecCodObj?.absCond === 'cond'} onChange={(ev) => setConfecCodObj({ ...confecCodObj, absCond: 'cond' })} />

{ (codiSeleccionat && codiSeleccionat?.absCond === 'abs' || confecCodObj?.absCond === 'abs' ) && <> { ev.preventDefault(); ev.stopPropagation(); // console.log("ev: ", ev); if (codiSeleccionat) { Meteor.callAsync('modActivacioAbsolutaCodi', codiSeleccionat); setCodiSeleccionat({ ...codiSeleccionat, absActiu: !codiSeleccionat.absActiu }); } setConfecCodObj({ ...confecCodObj, absActiu: !confecCodObj.absActiu }); }} /> // codiDoc && // Meteor.callAsync('modActivacioAbsolutaCodi', codiDoc); } { codiSeleccionat && codiSeleccionat.absCond === 'cond' || confecCodObj?.absCond === 'cond' && <>

ATENCIÓ al format! (mm/dd/aaaa)

Des de: { console.log("dataIni: ", v.currentTarget.value); setConfecCodObj({ ...confecCodObj, condIni: v.currentTarget.value }) }} defaultValue={confecCodObj.condIni} />
Fins a: { console.log("dataFi: ", v.currentTarget.value); setConfecCodObj({ ...confecCodObj, condFi: v.currentTarget.value }) }} defaultValue={confecCodObj.condFi} />
}
{/* */} {/* {ambitSeleccionat && esEditor && } */} ; }; const today = new Date(), lastWeek = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7) ; // console.log("codis: ", codis); return Carregant...} >

{/* ({value: v, label: v.titol})) } loadOptions={tipus.map((v,i) => ({value: v, label: v.titol}))} /> */} {/* */}
    { codis // .reverse() // .sort((a,b) => a?.codi?.editedAt < b?.codi?.editedAt) .map(cod =>
  • { ev.preventDefault(); ev.stopPropagation(); // console.log("codSel: ", codiSeleccionat); setCodiSeleccionat(codiSeleccionat?._id === cod._id ? null : cod); }} > { ev.preventDefault(); ev.stopPropagation(); Meteor.callAsync('modActivacioAbsolutaCodi', cod); }} /> {cod.codi} {/* {esEditor && } */}
  • ) }
{/* */}
; };