some changes to new version with privacy advice and user manual

This commit is contained in:
Axel Iván Solano González
2022-02-08 19:10:59 -06:00
parent 0641ce7d94
commit fc4e825aa0
25 changed files with 369 additions and 21 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.unam.acatan.sintomapp" version="0.0.6" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<widget id="com.unam.acatan.sintomapp" version="0.0.7" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>SintomApp-Acatlan</name>
<description>An app for control an visualizatión of a pandemic data like simphtoms evolution and sumarized data in the 'FES Acatán UNAM'</description>
<author email="aisgxvso@comunidad.unam.com" href="http://ionicframework.com/">Axel Iván Solano González</author>
+74
View File
@@ -15,11 +15,13 @@
"@angular/platform-browser-dynamic": "~9.1.6",
"@angular/router": "~9.1.6",
"@awesome-cordova-plugins/file-transfer": "^5.38.0",
"@awesome-cordova-plugins/ionic-webview": "^5.39.0",
"@ionic-native/camera": "^5.28.0",
"@ionic-native/core": "^5.0.7",
"@ionic-native/file": "^5.28.0",
"@ionic-native/file-path": "^5.28.0",
"@ionic-native/file-transfer": "^5.31.1",
"@ionic-native/in-app-browser": "^5.36.0",
"@ionic-native/ionic-webview": "^5.28.0",
"@ionic-native/local-notifications": "^5.27.0",
"@ionic-native/secure-storage": "^5.27.0",
@@ -61,6 +63,7 @@
"codelyzer": "^5.1.2",
"cordova-android": "^9.1.0",
"cordova-plugin-device": "^2.0.2",
"cordova-plugin-inappbrowser": "^5.0.0",
"cordova-plugin-ionic-keyboard": "^2.2.0",
"cordova-plugin-ionic-webview": "^4.2.1",
"cordova-plugin-splashscreen": "^5.0.2",
@@ -834,6 +837,18 @@
"rxjs": "^5.5.0 || ^6.5.0 || ^7.3.0"
}
},
"node_modules/@awesome-cordova-plugins/ionic-webview": {
"version": "5.39.0",
"resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/ionic-webview/-/ionic-webview-5.39.0.tgz",
"integrity": "sha512-IRZOaT5QolFRWdwPajphBO64EhjNZ2yjsw9k7ZRHkU6Z1Uh44VmVixfaCmw10coUxd1Lw/UNcMWPF3gh5w4Itg==",
"dependencies": {
"@types/cordova": "latest"
},
"peerDependencies": {
"@awesome-cordova-plugins/core": "^5.1.0",
"rxjs": "^5.5.0 || ^6.5.0 || ^7.3.0"
}
},
"node_modules/@babel/code-frame": {
"version": "7.12.13",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
@@ -2056,6 +2071,18 @@
"rxjs": "^5.5.0 || ^6.5.0"
}
},
"node_modules/@ionic-native/in-app-browser": {
"version": "5.36.0",
"resolved": "https://registry.npmjs.org/@ionic-native/in-app-browser/-/in-app-browser-5.36.0.tgz",
"integrity": "sha512-tX/FBT0jpkgEefZ8iorv5eDKfgP/ExbYr1AWg6okORQ0dwLfXsD5KDJgKHN9GFZvyuLNeaLpC1mN7CvwvLvmgA==",
"dependencies": {
"@types/cordova": "latest"
},
"peerDependencies": {
"@ionic-native/core": "^5.1.0",
"rxjs": "^5.5.0 || ^6.5.0"
}
},
"node_modules/@ionic-native/ionic-webview": {
"version": "5.31.1",
"resolved": "https://registry.npmjs.org/@ionic-native/ionic-webview/-/ionic-webview-5.31.1.tgz",
@@ -7215,6 +7242,31 @@
"resolved": "https://registry.npmjs.org/cordova-plugin-filepath/-/cordova-plugin-filepath-1.6.0.tgz",
"integrity": "sha512-DwKuH5tXhZJImU/rHDzQhG3bY2ihAUw5QqdNllso96MZ9TQTAbFvKPLppuJwx21XxYS2g3uB9R17AXEEme+sKA=="
},
"node_modules/cordova-plugin-inappbrowser": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/cordova-plugin-inappbrowser/-/cordova-plugin-inappbrowser-5.0.0.tgz",
"integrity": "sha512-MqnpmUQ/iy6hxtIGDdlIhy8aNi1pNanLATpbnkk7uCqW9YQ4rH/dGK9zESbZ50pUi2A2D2QMjBXNV175TJK5OQ==",
"dev": true,
"engines": {
"cordovaDependencies": {
"0.2.3": {
"cordova": ">=3.1.0"
},
"4.0.0": {
"cordova": ">=3.1.0",
"cordova-ios": ">=4.0.0"
},
"5.0.0": {
"cordova": ">=9.0.0",
"cordova-android": ">=9.0.0",
"cordova-ios": ">=6.0.0"
},
"6.0.0": {
"cordova": ">100"
}
}
}
},
"node_modules/cordova-plugin-ionic-keyboard": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/cordova-plugin-ionic-keyboard/-/cordova-plugin-ionic-keyboard-2.2.0.tgz",
@@ -24450,6 +24502,14 @@
"@types/cordova": "latest"
}
},
"@awesome-cordova-plugins/ionic-webview": {
"version": "5.39.0",
"resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/ionic-webview/-/ionic-webview-5.39.0.tgz",
"integrity": "sha512-IRZOaT5QolFRWdwPajphBO64EhjNZ2yjsw9k7ZRHkU6Z1Uh44VmVixfaCmw10coUxd1Lw/UNcMWPF3gh5w4Itg==",
"requires": {
"@types/cordova": "latest"
}
},
"@babel/code-frame": {
"version": "7.12.13",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
@@ -25478,6 +25538,14 @@
"@types/cordova": "latest"
}
},
"@ionic-native/in-app-browser": {
"version": "5.36.0",
"resolved": "https://registry.npmjs.org/@ionic-native/in-app-browser/-/in-app-browser-5.36.0.tgz",
"integrity": "sha512-tX/FBT0jpkgEefZ8iorv5eDKfgP/ExbYr1AWg6okORQ0dwLfXsD5KDJgKHN9GFZvyuLNeaLpC1mN7CvwvLvmgA==",
"requires": {
"@types/cordova": "latest"
}
},
"@ionic-native/ionic-webview": {
"version": "5.31.1",
"resolved": "https://registry.npmjs.org/@ionic-native/ionic-webview/-/ionic-webview-5.31.1.tgz",
@@ -29659,6 +29727,12 @@
"resolved": "https://registry.npmjs.org/cordova-plugin-filepath/-/cordova-plugin-filepath-1.6.0.tgz",
"integrity": "sha512-DwKuH5tXhZJImU/rHDzQhG3bY2ihAUw5QqdNllso96MZ9TQTAbFvKPLppuJwx21XxYS2g3uB9R17AXEEme+sKA=="
},
"cordova-plugin-inappbrowser": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/cordova-plugin-inappbrowser/-/cordova-plugin-inappbrowser-5.0.0.tgz",
"integrity": "sha512-MqnpmUQ/iy6hxtIGDdlIhy8aNi1pNanLATpbnkk7uCqW9YQ4rH/dGK9zESbZ50pUi2A2D2QMjBXNV175TJK5OQ==",
"dev": true
},
"cordova-plugin-ionic-keyboard": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/cordova-plugin-ionic-keyboard/-/cordova-plugin-ionic-keyboard-2.2.0.tgz",
+6 -4
View File
@@ -20,11 +20,13 @@
"@angular/platform-browser-dynamic": "~9.1.6",
"@angular/router": "~9.1.6",
"@awesome-cordova-plugins/file-transfer": "^5.38.0",
"@awesome-cordova-plugins/ionic-webview": "^5.39.0",
"@ionic-native/camera": "^5.28.0",
"@ionic-native/core": "^5.0.7",
"@ionic-native/file": "^5.28.0",
"@ionic-native/file-path": "^5.28.0",
"@ionic-native/file-transfer": "^5.31.1",
"@ionic-native/in-app-browser": "^5.36.0",
"@ionic-native/ionic-webview": "^5.28.0",
"@ionic-native/local-notifications": "^5.27.0",
"@ionic-native/secure-storage": "^5.27.0",
@@ -66,6 +68,7 @@
"codelyzer": "^5.1.2",
"cordova-android": "^9.1.0",
"cordova-plugin-device": "^2.0.2",
"cordova-plugin-inappbrowser": "^5.0.0",
"cordova-plugin-ionic-keyboard": "^2.2.0",
"cordova-plugin-ionic-webview": "^4.2.1",
"cordova-plugin-splashscreen": "^5.0.2",
@@ -90,9 +93,7 @@
"cordova-plugin-statusbar": {},
"cordova-plugin-device": {},
"cordova-plugin-splashscreen": {},
"cordova-plugin-ionic-webview": {
"ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+"
},
"cordova-plugin-ionic-webview": {},
"cordova-plugin-ionic-keyboard": {},
"cordova-sqlite-storage": {},
"cordova-plugin-local-notification": {},
@@ -102,7 +103,8 @@
"ANDROID_SUPPORT_V4_VERSION": "27.+"
},
"cordova-plugin-file": {},
"cordova-plugin-filepath": {}
"cordova-plugin-filepath": {},
"cordova-plugin-inappbrowser": {}
},
"platforms": [
"ios",
+8
View File
@@ -30,6 +30,14 @@ const routes: Routes = [
{
path: 'simtoms',
loadChildren: () => import('./tab2/tab2.module').then( m => m.Tab2PageModule)
},
{
path: 'manual',
loadChildren: () => import('./manual/manual.module').then( m => m.ManualPageModule)
},
{
path: 'privacy',
loadChildren: () => import('./privacy/privacy.module').then( m => m.PrivacyPageModule)
}
];
@NgModule({
+18 -1
View File
@@ -1,3 +1,20 @@
<ion-app>
<ion-router-outlet></ion-router-outlet>
<ion-menu side="end" menuId="first" contentId="content">
<ion-header>
<ion-toolbar color="secondary">
<ion-title>Menu</ion-title>
</ion-toolbar>
</ion-header>
<ion-content class="grad">
<ion-list *ngFor="let pages of navigate">
<ion-menu-toggle auto-hide="true">
<ion-item [routerLink]="pages.url" routerDirection="forward" color="translucent">
<ion-icon [name]="pages.icon" slot="start"></ion-icon>
{{pages.title}}
</ion-item>
</ion-menu-toggle>
</ion-list>
</ion-content>
</ion-menu>
<ion-router-outlet Id="content"></ion-router-outlet>
</ion-app>
+26
View File
@@ -9,13 +9,18 @@ import { StatusBar } from '@ionic-native/status-bar/ngx';
templateUrl: 'app.component.html',
styleUrls: ['app.component.scss']
})
export class AppComponent {
navigate:any;
constructor(
private platform: Platform,
private splashScreen: SplashScreen,
private statusBar: StatusBar
) {
this.initializeApp();
this.sideMenu();
}
initializeApp() {
@@ -24,4 +29,25 @@ export class AppComponent {
this.splashScreen.hide();
});
}
sideMenu() {
this.navigate =
[
{
title : 'Información de la applicación',
url : '/manual',
icon : 'book'
},
{
title : 'Aviso de privacidad',
url : '/privacy',
icon : 'information-circle-outline'
},
{
title : 'Salir',
url : '/loggin',
icon : 'log-out-outline'
},
];
}
}
+5 -4
View File
@@ -1,5 +1,5 @@
<ion-header>
<ion-toolbar>
<ion-toolbar color="secondary">
<ion-title text-center>
SintomAppAcatlán
</ion-title>
@@ -19,6 +19,7 @@
<form #ngForm="ngForm">
<ion-item color="translucent">
<ion-icon slot="start" name="person" color="secondary"></ion-icon>
<ion-label position="floating">Número de cuenta</ion-label>
<ion-input inputmode="numeric" placeholder="Número de cuenta"
[(ngModel)]="data.cuenta"
name="cuenta" minlength=6 maxlength=9
@@ -29,7 +30,8 @@
<ion-item color="translucent">
<ion-icon slot="start" name="key" color="secondary"></ion-icon>
<ion-input type="password" placeholder="Contraseña"
<ion-label position="floating">Contraseña</ion-label>
<ion-input type="password" placeholder="Contraseña de escolares"
[(ngModel)]="data.password"
name="password"
required minlength="5">
@@ -42,13 +44,12 @@
</ion-select>
</ion-item>
</form>
</div>
</ion-content>
<ion-footer>
<div class="ion-padding">
<ion-label class="login_label" (click)="openPrivacyAdvice()"color="primary" href="https://www.acatlan.unam.mx/normatividad/">Aviso de privacidad</ion-label>
<ion-button [disabled]="ngForm.invalid"
expand="full"
(click)="login()">
+7
View File
@@ -17,6 +17,13 @@ ion-grid {
min-width: 85%;
justify-content: center;
}
.login_label {
display: flex;
justify-content: center;
width: 100%;
}
::placeholder {
color: white;
opacity: 1;
+6
View File
@@ -92,6 +92,10 @@ export class LogginPage implements OnInit {
}
}
openPrivacyAdvice(){
this.nav.navigateForward('/privacy');
}
routeDirector(userRole){
console.log(userRole.details.authorities)
if(userRole.details.authorities[0]==="ROLE_USER"){
@@ -125,6 +129,8 @@ export class LogginPage implements OnInit {
}
}
async presentAlertCredenciales() {
const alert = await this.alertController.create({
cssClass: 'my-custom-class',
+17
View File
@@ -0,0 +1,17 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { ManualPage } from './manual.page';
const routes: Routes = [
{
path: '',
component: ManualPage
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class ManualPageRoutingModule {}
+20
View File
@@ -0,0 +1,20 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { IonicModule } from '@ionic/angular';
import { ManualPageRoutingModule } from './manual-routing.module';
import { ManualPage } from './manual.page';
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
ManualPageRoutingModule
],
declarations: [ManualPage]
})
export class ManualPageModule {}
+41
View File
@@ -0,0 +1,41 @@
<ion-header>
<ion-toolbar color="secondary">
<ion-buttons>
<ion-back-button defaultHref="loggin" slot="start"></ion-back-button>
<ion-title>Información de la applicación</ion-title>
<ion-menu-button color="dark" slot="end"></ion-menu-button>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-slides>
<ion-slide>
<ion-text>
<h2>Aplicacion para seguimiento de sintomas</h2>
<p>Esta aplicación esta diseñada para dar seguimiento a los sintomas de una pandemia, en ella los usuarios pueden plasmar los sintomas que presenten a lo largo de su patologia para justificar faltas y prevenir a los compañeros</p>
</ion-text>
</ion-slide>
<ion-slide>
<ion-text>
<h2>Pagina de datos del alumno</h2>
<p>En esta pagina el alumno agregará datos de interes para dar seguimiento al secretario técnico, y se pondran editar por el alumno</p>
</ion-text>
</ion-slide>
<ion-slide>
<ion-text>
<h2>Pagina de sintomas</h2>
<p>Aquí se deberán seleccionar los sintomas que el alumno presenta en ese día y luego presionar el boton de enviar para que los sintomas
puedan ser visualizados por el secretario técnico más adelante
</p>
</ion-text>
</ion-slide>
<ion-slide>
<ion-text>
<h2>Pagina de fotos</h2>
<p>En esta pagína se deberá seleccionar el archivo, jpg, png, jepg; archivos de imagen en general</p>
</ion-text>
</ion-slide>
</ion-slides>
</ion-content>
View File
+24
View File
@@ -0,0 +1,24 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { ManualPage } from './manual.page';
describe('ManualPage', () => {
let component: ManualPage;
let fixture: ComponentFixture<ManualPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ManualPage ],
imports: [IonicModule.forRoot()]
}).compileComponents();
fixture = TestBed.createComponent(ManualPage);
component = fixture.componentInstance;
fixture.detectChanges();
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});
+15
View File
@@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-manual',
templateUrl: './manual.page.html',
styleUrls: ['./manual.page.scss'],
})
export class ManualPage implements OnInit {
constructor() { }
ngOnInit() {
}
}
+17
View File
@@ -0,0 +1,17 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { PrivacyPage } from './privacy.page';
const routes: Routes = [
{
path: '',
component: PrivacyPage
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class PrivacyPageRoutingModule {}
+20
View File
@@ -0,0 +1,20 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { IonicModule } from '@ionic/angular';
import { PrivacyPageRoutingModule } from './privacy-routing.module';
import { PrivacyPage } from './privacy.page';
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
PrivacyPageRoutingModule
],
declarations: [PrivacyPage]
})
export class PrivacyPageModule {}
+13
View File
@@ -0,0 +1,13 @@
<ion-header>
<ion-toolbar color="secondary">
<ion-buttons >
<ion-back-button slot="start"></ion-back-button>
<ion-title>Aviso de Privacidad</ion-title>
<ion-menu-button color="dark" slot="end"></ion-menu-button>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content>
<iframe src="https://www.acatlan.unam.mx/normatividad/" style="width:100%;height:100%" scrolling="yes" ></iframe>
</ion-content>
View File
+24
View File
@@ -0,0 +1,24 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { PrivacyPage } from './privacy.page';
describe('PrivacyPage', () => {
let component: PrivacyPage;
let fixture: ComponentFixture<PrivacyPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ PrivacyPage ],
imports: [IonicModule.forRoot()]
}).compileComponents();
fixture = TestBed.createComponent(PrivacyPage);
component = fixture.componentInstance;
fixture.detectChanges();
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});
+15
View File
@@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-privacy',
templateUrl: './privacy.page.html',
styleUrls: ['./privacy.page.scss'],
})
export class PrivacyPage implements OnInit {
constructor() { }
ngOnInit() {
}
}
+1 -1
View File
@@ -1,5 +1,5 @@
<ion-header>
<ion-toolbar>
<ion-toolbar color="secondary">
<ion-buttons slot="start">
<ion-back-button defaultHref="admintabs"></ion-back-button>
</ion-buttons>
+7 -6
View File
@@ -1,11 +1,12 @@
<ion-header >
<ion-toolbar>
<ion-buttons slot="start">
<ion-back-button defaultHref="loggin"></ion-back-button>
<ion-toolbar color="secondary">
<ion-buttons>
<ion-back-button slot="start"></ion-back-button>
<ion-title>
Datos
</ion-title>
<ion-menu-button color="dark" slot="end"></ion-menu-button>
</ion-buttons>
<ion-title>
Datos
</ion-title>
</ion-toolbar>
</ion-header>
+2 -2
View File
@@ -1,5 +1,5 @@
<ion-header [translucent]="true">
<ion-toolbar>
<ion-header>
<ion-toolbar color="secondary">
<ion-back-button slot="start" defaultHref="loggin"></ion-back-button>
<ion-button slot="end" (click)="loadData()">
<ion-icon slot="end" name="paper-plane"></ion-icon>
+2 -2
View File
@@ -1,5 +1,5 @@
<ion-header [translucent]="true">
<ion-toolbar>
<ion-header>
<ion-toolbar color="secondary">
<ion-buttons slot="start">
<ion-back-button defaultHref="login"></ion-back-button>
</ion-buttons>