Skip to content

Commit

Permalink
Canvis App
Browse files Browse the repository at this point in the history
  • Loading branch information
jlorf committed May 30, 2021
1 parent bd6a517 commit 05d1d4a
Show file tree
Hide file tree
Showing 7 changed files with 223 additions and 7 deletions.
3 changes: 3 additions & 0 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ import Context from "./data/context";
import UFs from "./pages/UFs/UFs";
import AddUF from "./pages/AddUF/AddUF";
import ModUF from "./pages/ModUF/ModUF";
import { Assistencia } from "./pages/Assistencia/Assistencia";
import { AlumnesUF } from "./pages/EditarAlumnesUF/EditarAlumnesUF";

const App: React.FC = () => {
Expand All @@ -61,6 +62,7 @@ const App: React.FC = () => {
{ id: "/alumnes", comp: "Alumnes" },
{ id: "/moduls", comp: "Moduls" },
{ id: "/ufs", comp: "UFs" },
{ id: "/assistencia", comp: "Assistencia" },
{ id: "/logout", comp: "Logout" },
]
: [
Expand Down Expand Up @@ -118,6 +120,7 @@ const App: React.FC = () => {
<Route path="/afegir-uf" component={AddUF} exact />
<Route path="/ufs" component={UFs} exact />
<Route path="/alumnes-uf" component={AlumnesUF} exact />
<Route path="/assistencia" component={Assistencia} exact />
<Redirect to={context.logged ? "/moduls" : "/login"} />
</IonRouterOutlet>
</ContextProvider>
Expand Down
2 changes: 1 addition & 1 deletion src/pages/Alumnes/Alumnes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ const Alumnes: React.FC = () => {
</IonCard>
</IonCol>
</IonRow>
{context.alumnes.map((alumne) => (
{context.alumnes.sort((a,b) => a.Nom.toLowerCase().localeCompare(b.Nom.toLowerCase()) + a.Cognoms.toLowerCase().localeCompare(b.Cognoms.toLowerCase())).map((alumne) => (
<IonRow key={alumne.codi.toString()}>
<IonCol className="ion-text-center">
<IonCard color="warning" onClick={() => btnClick(alumne)}>
Expand Down
213 changes: 213 additions & 0 deletions src/pages/Assistencia/Assistencia.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
import React, { useContext, useState } from "react";
import Context, {
ContextModel,
GrupClasse,
Persona,
UF,
} from "../../data/context";
import * as $ from "jquery";
import {
IonPage,
IonHeader,
IonList,
IonItem,
IonLabel,
IonInput,
IonToggle,
IonRadio,
IonCheckbox,
IonItemSliding,
IonItemOption,
IonItemOptions,
IonContent,
IonToolbar,
IonButtons,
IonMenuButton,
IonTitle,
IonModal,
IonButton,
IonDatetime,
IonGrid,
IonRow,
IonSelect,
IonSelectOption,
IonCol,
} from "@ionic/react";

export const Assistencia: React.FC = () => {
const context = useContext(Context);

let alumnesuf = Array<Persona>();
let ufobj: UF = null as unknown as UF;

var modul = globalThis.localStorage.getItem("UFSEL");
let codi = "";
let nnom = "";
let aabrev = "";
let hhores = "";
let mmodul = "";

if (modul !== null && modul !== "") {
try {
ufobj = JSON.parse(modul) as UF;
codi = ufobj.codi;
nnom = ufobj.Nom;
aabrev = ufobj.Abrev;
hhores = ufobj.Hores;
mmodul = ufobj.Modul;
} catch {}
}

const [uf, setUF] = useState<string>(ufobj?.codi ?? null);
const [showModal, setShowModal] = useState(false);

const ObtenirAlumnesUF = (ctx: ContextModel) => {
var uf = globalThis.localStorage.getItem("UFSEL");
if (uf != null && uf != undefined) {
ufobj = JSON.parse(uf) as UF;
var item = globalThis.localStorage.getItem("JWT");
ctx.jwt = item ?? "";
alumnesuf = Array<Persona>();
$.ajax({
method: "GET",
async: false,
url: ctx.urlapi + "/Api/grupclasse/api.php",
data: { jwt: ctx.jwt, uf: ufobj.codi },
}).done(function (res) {
//console.log(jwt);
$.each(res.records, function (i, item: GrupClasse) {
let persona = context.alumnes.find((a) => a.codi === item.Persona) as Persona;
persona.professor = false;
alumnesuf.push(persona);
});
});
}
};

const btnClick = async () => {
context.presentAlert("prova", "", "", ["Ok"]);
};

const ModificarLlista = (alumne: Persona, chk: boolean) => {
let index = alumnesuf.indexOf(alumne);
if (chk) {
if (index == -1) {
alumnesuf.push(alumne);
}
} else {
if (index != -1) {
alumnesuf.splice(index, 1);
}
}
};

const MostrarModal = () => {
setShowModal(true);
};

const Guardar = () => {
var persones = Array<Uint8Array>();
alumnesuf.map((alumne) => persones.push(alumne.codi));
if ((persones?.length ?? 0) == 0)
persones.push(-1 as unknown as Uint8Array);
$.ajax({
method: "POST",
url: context.urlapi + "/Api/grupclasse/api.php", //?jwt=" +
/*context.jwt +
"&uf=" +
ufobj.codi +
"&Nom=" +
nom +
"&Abrev=" +
abrev +
"&Hores=" +
hores +
"&Modul=" +
uf,*/
data: {
jwt: context.jwt,
uf: ufobj.codi,
persones: persones,
professor: 0,
},
error: function (request, status, error) {
context.presentAlert("UF", "Error", request.responseText, ["Ok"]);
},
}).done(function (res) {
//context.presentAlert("Modul", "", res.message, ["OK"]);
window.location.replace("mod-uf");
});
setShowModal(false);
};

const updateUF = (selected: UF) => {
globalThis.localStorage.setItem("UFSEL", JSON.stringify(selected));
window.location.replace("assistencia");
}

context.ObtenirPersones(context, false);

context.ObtenirUFs(context);

ObtenirAlumnesUF(context);

return (
<IonPage>
<IonHeader>
<IonToolbar color="dark">
<IonButtons slot="start">
<IonMenuButton />
</IonButtons>
<IonTitle>Assistencia UF</IonTitle>
</IonToolbar>
</IonHeader>
<IonContent>
<IonGrid>
<IonRow>
<IonCol>
<IonSelect
id="modul"
name="modul"
value={uf}
onIonChange={(e) => updateUF(e.detail.value!)}
>
{context.ufs.sort((a,b) => a.Nom.toLowerCase().localeCompare(b.Nom.toLowerCase()) + a.Abrev.toLowerCase().localeCompare(b.Abrev.toLowerCase())).map((item) => (
<IonSelectOption key={item.codi} value={item.codi}>
{item.Nom + "(" + item.Abrev + ")"}
</IonSelectOption>
))}
</IonSelect>
</IonCol>
<IonCol>
<IonDatetime
displayFormat="DD MMMM YYYY HH:mm"
placeholder="Select Date"
value={new Date().toString()}
></IonDatetime>
</IonCol>
</IonRow>
</IonGrid>
<IonButton expand="block" onClick={() => Guardar()}>
Guardar
</IonButton>
{/*-- List of Text Items --*/}
<IonList>
{alumnesuf.sort((a,b) => a.Nom.toLowerCase().localeCompare(b.Nom.toLowerCase()) + a.Cognoms.toLowerCase().localeCompare(b.Cognoms.toLowerCase())).map((alumne) => (
<IonItem>
{/*onClick={ item => ModificarLlista(alumne, (item.currentTarget.children[0] as HTMLIonCheckboxElement).checked)}*/}
<IonCheckbox
checked={(alumnesuf.find((a) => a.codi === alumne.codi) as Persona).professor}
onClick={(item) =>
ModificarLlista(alumne, item.currentTarget.checked)
}
/>
<IonLabel className="ion-text-center">
{alumne.Nom} {alumne.Cognoms}
</IonLabel>
</IonItem>
))}
</IonList>
</IonContent>
</IonPage>
);
};
6 changes: 3 additions & 3 deletions src/pages/EditarAlumnesUF/EditarAlumnesUF.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -117,15 +117,15 @@ export const AlumnesUF: React.FC = () => {
<IonButtons slot="start">
<IonMenuButton />
</IonButtons>
<IonTitle>Modificar UF</IonTitle>
<IonTitle>Modificar Alumnes UF</IonTitle>
</IonToolbar>
</IonHeader>
<IonContent>
<IonModal isOpen={showModal} cssClass="my-custom-class" onDidDismiss={() => setShowModal(false)}>
<IonLabel className="ion-text-center">Alumnes</IonLabel>
<IonContent>
<IonList>
{context.alumnes.map((alumne) => (
{context.alumnes.sort((a,b) => a.Nom.localeCompare(b.Nom) + a.Cognoms.localeCompare(b.Cognoms)).map((alumne) => (
<IonItem>
{/*onClick={ item => ModificarLlista(alumne, (item.currentTarget.children[0] as HTMLIonCheckboxElement).checked)}*/}
<IonCheckbox checked={alumnesuf.indexOf(alumne) != -1} onClick={ item => ModificarLlista(alumne, item.currentTarget.checked)} />
Expand All @@ -143,7 +143,7 @@ export const AlumnesUF: React.FC = () => {
</IonButton>
{/*-- List of Text Items --*/}
<IonList>
{alumnesuf.map((alumne) => (
{alumnesuf.sort((a,b) => a.Nom.localeCompare(b.Nom) + a.Cognoms.localeCompare(b.Cognoms)).map((alumne) => (
<IonItem>
<IonLabel className="ion-text-center">
{alumne.Nom} {alumne.Cognoms}
Expand Down
2 changes: 1 addition & 1 deletion src/pages/ModUF/ModUF.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ const ModUF: React.FC = () => {
</IonRow>
<IonRow>
<IonSelect id="modul" name="modul" value={mdul} onIonChange={(e) => setModul(e.detail.value!)}>
{context.moduls.map((item) => (
{context.moduls.sort((a,b) => a.Nom.toLowerCase().localeCompare(b.Nom.toLowerCase()) + a.Abrev.toLowerCase().localeCompare(b.Abrev.toLowerCase())).map((item) => (
<IonSelectOption key={item.codi.toString()} value={item.codi}>
{item.Nom + "(" + item.Abrev + ")"}
</IonSelectOption>
Expand Down
2 changes: 1 addition & 1 deletion src/pages/Moduls/Moduls.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ const Moduls: React.FC = () => {
</IonCard>
</IonCol>
</IonRow>
{context.moduls.map((modul) => (
{context.moduls.sort((a,b) => a.Nom.toLowerCase().localeCompare(b.Nom.toLowerCase()) + a.Abrev.toLowerCase().localeCompare(b.Abrev.toLowerCase())).map((modul) => (
<IonRow key={modul.codi.toString()}>
<IonCol className="ion-text-center">
<IonCard onClick={() => btnClick(modul)} color="warning">
Expand Down
2 changes: 1 addition & 1 deletion src/pages/UFs/UFs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ const UFs: React.FC = () => {
</IonCard>
</IonCol>
</IonRow>
{context.ufs.map((uf) => (
{context.ufs.sort((a,b) => a.Nom.toLowerCase().localeCompare(b.Nom.toLowerCase()) + a.Abrev.toLowerCase().localeCompare(b.Abrev.toLowerCase())).map((uf) => (
<IonRow key={uf.codi.toString()}>
<IonCol className="ion-text-center">
<IonCard onClick={() => btnClick(uf)} color="warning">
Expand Down

0 comments on commit 05d1d4a

Please sign in to comment.