Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions Facundo Lastra/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
.DS_Store
node_modules
/dist

# local env files
.env.local
.env.*.local

# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw*
26 changes: 26 additions & 0 deletions Facundo Lastra/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# TP7 ---- UTN ---- Facundo Lastra

## Project setup
```
npm install
```

### Compiles and hot-reloads for development
```
npm run serve
```

### Compiles and minifies for production
```
npm run build
```

### Run your tests
```
npm run test
```

### Lints and fixes files
```
npm run lint
```
5 changes: 5 additions & 0 deletions Facundo Lastra/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module.exports = {
presets: [
'@vue/app'
]
}
12,412 changes: 12,412 additions & 0 deletions Facundo Lastra/package-lock.json

Large diffs are not rendered by default.

45 changes: 45 additions & 0 deletions Facundo Lastra/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"name": "tp5-ProgramacionAvanzada2",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"element-ui": "^2.4.9",
"vue": "^2.5.17",
"vue-router": "^3.0.1"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^3.0.4",
"@vue/cli-plugin-eslint": "^3.0.4",
"@vue/cli-service": "^3.0.4",
"vue-template-compiler": "^2.5.17"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/essential",
"eslint:recommended"
],
"rules": {},
"parserOptions": {
"parser": "babel-eslint"
}
},
"postcss": {
"plugins": {
"autoprefixer": {}
}
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}
Binary file added Facundo Lastra/public/favicon.ico
Binary file not shown.
17 changes: 17 additions & 0 deletions Facundo Lastra/public/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>hello-world</title>
</head>
<body>
<noscript>
<strong>We're sorry but hello-world doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
48 changes: 48 additions & 0 deletions Facundo Lastra/src/App.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<template>
<div id="app">
<!-- <img alt="Vue logo" src="./assets/logo.png">
<h1>Super TP de Vue Usando Router</h1> -->
<section>
<el-menu
class="el-menu-demo"
background-color="#545c64"
text-color="#fff"
mode="horizontal"
active-text-color="#ffffff">
<el-menu-item index="1"><router-link to='/'>Ver Personas</router-link></el-menu-item>
<el-menu-item index="2"><router-link to="/add">Nueva Persona</router-link></el-menu-item>
</el-menu>
</section>
<router-view></router-view>

</div>
</template>

<script>
export default {
name: "app"
};
</script>

<style>
#app {
font-family: "Avenir", Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
}
.router-link-active {
color: white;
}
.el-menu-demo{
padding-left: 33vw !important;
}
a {
color: white;
text-decoration: none;
}
.el-row {
margin-bottom: 3vw;
}
</style>
Binary file added Facundo Lastra/src/assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
117 changes: 117 additions & 0 deletions Facundo Lastra/src/components/newPerson.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
<template>
<div>
<section>
<h2 v-if="editMod">Por favor, modifique los datos de la persona</h2>
<h2 v-else>Agregar Nueva Persona</h2>

<p v-if="errors.length">
<b>Por favor, corriga los siguientes error(es):</b>
<ul>
<li v-for="error in this.errors" :key="error.id">{{ error }}</li>
</ul>
</p>
<el-row>
<el-col :span="8" :offset="8">
<div class="form">
<el-form ref="form" label-width="120px">
<el-form-item label="Nombre:">
<el-input v-model="persona.nombre"></el-input>
</el-form-item>
<el-form-item label="Edad" >
<el-input-number v-model="persona.edad" :min="0" :max="125"></el-input-number>
</el-form-item>
<el-form-item label="Genero:">
<el-select v-model="persona.sexo" placeholder="por favor seleccione su genero">
<el-option label="Masculino" value="Masculino"></el-option>
<el-option label="Femenino" value="Femenino"></el-option>
<el-option label="Otro" value="Otro"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" v-if="!editMod" @click="enviarPersona()">Crear Persona</el-button>
<el-button type="primary" v-else @click="enviarPersona()">Editar Persona</el-button>
</el-form-item>
</el-form>
</div>
</el-col>
</el-row>
</section>

</div>
</template>
<script>
import router from "@/router";
import personsService from "@/service/personsService.js";
export default {
name: "NewPerson",
data() {
return {
persona: {
nombre: "",
sexo: "",
edad: 0,
id: 0
},
errors: [],
editMod: false
};
},
beforeMount: function() {
if (this.$route.params.id !== undefined) {
personsService.getOne(this.$route.params.id).then(person => {
this.persona.nombre = person.nombre;
this.persona.sexo = person.sexo;
this.persona.edad = person.edad;
this.editMod = true;
});
}
},
methods: {
validarForm() {
this.errors = [];
if (
this.persona.nombre &&
this.persona.edad > -1 &&
this.persona.edad < 200 &&
this.persona.sexo
) {
return true;
}
if (!this.persona.nombre) {
this.errors.push("Nombre debe contener datos");
}
if (typeof this.persona.edad != "number") {
this.errors.push("Edad debe contener un numero");
} else if (this.persona.edad < 0) {
this.errors.push("La edad no puede ser negativa");
} else if (this.persona.edad > 200) {
this.errors.push("La edad supera el limite permitido");
}
if (!this.persona.sexo) {
this.errors.push("Debe seleccionar un sexo");
}
},
enviarPersona() {
if (this.validarForm()) {
let copy = Object.assign({}, this.persona);
if (!this.editMod) {
personsService.save(copy);
} else {
copy.id = this.$route.params.id;
personsService.editPerson(copy);
this.editMod = false;
}
this.persona.nombre = "";
this.persona.sexo = "";
this.persona.edad = 0;
router.push("/");
}

}
}
};
</script>
<style>
</style>


86 changes: 86 additions & 0 deletions Facundo Lastra/src/components/showPersons.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
<template>
<section>
<el-row>
<el-col :span="8" :offset="8">
<h2>¿Como desea visualizar?</h2>
<el-select v-model="filtro" placeholder="Todos" @change="getPersons">
<el-option
:label="'Todos'"
:value="'todos'">
</el-option>
<el-option
:label="'Masculino'"
:value="'Masculino'">
</el-option>
<el-option
:label="'Femenino'"
:value="'Femenino'">
</el-option>
<el-option
:label="'Otro'"
:value="'Otro'">
</el-option>
</el-select>
</el-col>
<el-col :span="8">
<h3>Hay {{getPersons.length}} persona/s</h3>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :offset="8">
<div v-for="persona in this.getPersons" :key="persona.id" class="grid-content bg-purple-light">
<singlePerson :person="persona" :id="persona.id" @edit="editPerson" @delete="deletePerson"></singlePerson>
</div>
</el-col>
</el-row>

</section>
</template>
<script>
import singlePerson from "./singlePerson.vue";
import router from "@/router";
import personsService from "@/service/personsService.js";
export default {
name: "showPersons",
data() {
return {
filtro: "todos",
persons: []
};
},
components: {
singlePerson
},
created() {
this.persons = personsService.getAll();
},
computed: {
getPersons: function() {
let personsfiltred;
if (this.filtro == "todos") {
personsfiltred = this.persons;
} else {
personsfiltred = this.persons.filter(
(persona) => persona.sexo === this.filtro
);
}
return personsfiltred;
}
},
methods: {
editPerson(idPerson){
router.push({ name: 'edit', params: { id: idPerson }});
},
deletePerson(personId){
let persontoDelete = this.persons.find(per => per.id === personId);
let ind = this.persons.indexOf(persontoDelete);
this.persons.splice(ind,1);
personsService.saveAll(this.persons);
}
}
};
</script>
<style>
</style>


Loading