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 ltrpro/pueblosmagicosconia!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