import React, { Suspense, useEffect, useState, useRef, lazy } from 'react'; import { Meteor } from 'meteor/meteor';; import { NecessitatsCollection } from '/imports/api/necessitats.js'; import { PoblesCollection } from '../api/pobles'; 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"; export const Codis = () => { // const [permes, setPermes] = useState(false); const [esEditor, setEsEditor] = useState(false); const userId = Meteor.userId(); useEffect(() => { (async () => { const comprovaAdmin = await Roles.userIsInRoleAsync(userId, ["admin"]); setEsEditor(comprovaAdmin); })(); }, []); // console.log("isAdmin: ", isAdmin) ; let ambitSeleccionat = null; useSubscribe('necessitats'); const necessitats = useTracker("necessitats", () => NecessitatsCollection.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 SelectorDeRol = ({ambitSeleccionat}) => { return <> Rol: necessitats.find(nec => nec.tipus === tipusSeleccionat._id)} options={ (ambitSeleccionat == "GENERAL") ? [ { value: "admin", label: "administrador" }, { value: "usuari", label: "usuari" } ] : [ { value: "monitor_de_poble", label: "monitor_de_poble" }, { value: "encarregat_de_tasques", label: "encarregat_de_tasques" }, { value: "voluntari_de_poble", label: "voluntari_de_poble" } ] } /> >; } const QuadreInfo_Tipus = () => { return {ambitSeleccionat && {ambitSeleccionat}} Codis Tria el rol que adquirirà qui utilitze el codi. { // if (d.get('selTipus')) try { Meteor.callAsync('editaOAfigNecessitat', { ...tipusSeleccionat || [], titol: d.get('titol'), tipus: d.get('selTipus') || "", poble: d.get('selPoble') }) .then(() => setAmbitSeleccionat(null)) .catch(err => console.error(err)) ; } catch (err) { alert(err); console.error(err); } }} > Àmbit: {/* Si l'usuari és ADMINISTRADOR o té permisos de responsabilitat, podrà crear nous Tipus al CREAR o a l'EDITAR si no tansols podrà assignar a un tipus predefinit o al de ALTRES */} "Crear nou tipus..."} // filterOption={filterAmbit} 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={ev => { ambitSeleccionat = ev.value; console.log("ambitSeleccionat: ", ambitSeleccionat); }} /> {/* Moble Maquinari Menjar i beguda Infantils Higiene */} Títol: Poble: ({value: v._id, label: v.nomPoble})) } /> {/* { pobles.map((v,i) => {v.nomPoble}) } */} {ambitSeleccionat && esEditor && { ev.preventDefault(); if (confirm(`Vas a eliminar el poble "${pobleSeleccionat.nomPoble}". És una operació irreversible. Procedir?`)) { Meteor.callAsync('eliminaPoble', pobleSeleccionat._id).catch(err => console.error(err)); setNecessitatSeleccionada(null); } }}>Elimina} ; }; return Carregant...>} > {/* ({value: v, label: v.titol})) } loadOptions={tipus.map((v,i) => ({value: v, label: v.titol}))} /> */} {/* */} { ambits .sort((a,b) => a.toLowerCase() > b.toLowerCase()) .map(amb => {amb}{esEditor && {setTipusSeleccionat(titol)}}>Edita} ) } ; };
Tria el rol que adquirirà qui utilitze el codi.