Commit f3b6e95e authored by Lorenzo Trujillo Rojas's avatar Lorenzo Trujillo Rojas
Browse files

Merge branch 'main' into 'main'

Continuación de panel de administrador

See merge request !40
parents a3f0834c f9ae7532
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -7,3 +7,4 @@
/mobile/src/common/constants/api.ts
/mobile/%ProgramData%/Microsoft/Windows/UUS/State/_active.uusver
/mobile/assets/audio_prueba.mp3
.vscode/settings.json
+2 −2
Original line number Diff line number Diff line
@@ -3,14 +3,14 @@ import { faSignOut, faUser } from "@fortawesome/free-solid-svg-icons";
import { Link } from "react-router-dom";
import './assets/styles/style.css';
import { UserRole } from "../../constants/roles";
import { useAdminNavbar } from "../../hooks/useAdminNavbar";
import { useUserData } from "../../hooks/useUserData";

interface props{
  windowActive: boolean;
}

export const AdminPanelNavBar = ({windowActive}:props) => {
  const {user, handleLogout, setToggle, toggle, userData} = useAdminNavbar();
  const {user, handleLogout, setToggle, toggle, userData} = useUserData();

  if(!user ){
    return null;
+42 −0
Original line number Diff line number Diff line
import DataTable, { TableColumn } from 'react-data-table-component';
import { usePlace } from '../../../hooks/usePlace';
import './assets/css/styles.css';
import { Place } from '../../../infraestructure/entities/place';
import { LoadingSpinner } from '../../loading_spinner/loading_spinner';

interface props{
  idTown: number;
}

export const AdminPanelPlaceList = ({idTown}: props) => {
  const {
    placeList,
    pending
  } = usePlace(idTown);
  
  const columns : TableColumn<Place>[] = [
    {
      name: "Identificador", 
      selector: row => row.idPlace || 0
    },
    {
      name: "Nombre", 
      selector: row => row.name,
      sortable: true
    }, 
    {
      name: "Estado", 
      selector: row => row.available
    }
  ];

  return (
    <div className="place_list_cnt">
      <DataTable noDataComponent="No hay lugares que mostrar" progressPending={pending}
        progressComponent={
          <LoadingSpinner style={{display: 'flex'}}/>
        }
        columns={columns} data={placeList} selectableRows className="data_table"/> 
    </div>
  );
}
 No newline at end of file
+7 −1
Original line number Diff line number Diff line
.town_list_table {
.place_list_cnt{
  display: flex;
  height: 100%;
  width: 100%;
}

.data_table{
  height: 100%;
}

+6 −63
Original line number Diff line number Diff line
@@ -3,18 +3,19 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Dispatch, SetStateAction} from "react";
import "./assets/css/styles.css";
import { MapComponent } from "../../map/map";
import { usePlaceRegister } from "../../../hooks/usePlaceRegister";
import { usePlace } from "../../../hooks/usePlace";
import { languaguesList } from "../../../constants/languages";
import { ToastContainer, toast } from "react-toastify";
import { LoadingScreen } from "../../loading_screen/loading_screen";
import { MultipleImagesDropzone } from "../../multiple_images_dropzone/multiple_images_dropzone";
import { AvailableDays, availableDaysList } from "../../../infraestructure/entities/place";

interface props {
  setIsWindowActive: Dispatch<SetStateAction<boolean>>;
  idTown: number;
  forceRenderList: () => void;
}

export const AdminPanelPlaceRegister = ({setIsWindowActive}: props) => {
export const AdminPanelPlaceRegister = ({setIsWindowActive, idTown, forceRenderList}: props) => {
  const {
    register,
    handleSubmit,
@@ -26,14 +27,11 @@ export const AdminPanelPlaceRegister = ({setIsWindowActive}: props) => {
    setDescriptions,
    setLanguageDescriptionIndexSelected,
    isLoading,
    statesList,
    updateTownsList,
    townsList,
    updateTimeForm,
    availableDays,
    setAvailableDays,
    resetField,
  } = usePlaceRegister();
  } = usePlace(idTown, forceRenderList, setIsWindowActive);

  return (
    <div className="place_register_wrap">
@@ -166,53 +164,6 @@ export const AdminPanelPlaceRegister = ({setIsWindowActive}: props) => {
                <p className="error">{errors.available?.message || errors.startDate?.message || errors.endDate?.message}</p>
              </div>
              
              <div className="input">
                <div className="input_header">
                  Pueblo mágico al que pertenece el lugar
                </div>
                <div className="town_select_cnt">
                  <div>
                    Estado
                    <select
                      name="state_select" 
                      onChange={(event) => {
                        updateTownsList(Number(event.target.value), 
                          event.target.options[event.target.selectedIndex].text);
                        }}
                      >
                        {statesList === null || statesList.length===0 ? 
                        <option disabled defaultValue="" value="">No hay estados</option>
                        : 
                        <>
                          <option disabled selected value="">Selecciona el estado</option>
                          {statesList.map((state, index) => {
                          return (
                            <option key={state.stateId} value={state.stateId}>{state.name}</option>
                          );
                          })}
                        </>
                        }
                      </select>
                      </div>
                      <div> 
                      Pueblo mágico
                      <select {...register("idTown")}>
                        {
                          townsList === null || townsList.length===0 ? 
                            <option disabled defaultValue="" value="">No hay pueblos</option>
                          : 
                            townsList.map((towns) => {
                              return (
                                <option key={towns.idTown} value={towns.idTown}>{towns.name}</option>
                              );
                            })
                        }
                    </select>
                  </div>
                </div>
                <p className="error">{errors.idTown?.message}</p>
              </div>

              <MultipleImagesDropzone setValue={setValue}/>
              <p className="error">{errors.imagesList?.message}</p>
              <input type="submit"/>
@@ -227,14 +178,6 @@ export const AdminPanelPlaceRegister = ({setIsWindowActive}: props) => {
              <p className="error">{errors.latitude?.message}</p>
            </div>
          </div>
          <ToastContainer
            position='bottom-right'
            autoClose = {1000}
            hideProgressBar = {true}
            closeOnClick
            rtl={false}
            pauseOnFocusLoss
          />
        </form>
      </div>
    </div>
Loading