Altra conversione in Typescript , partendo da un progetto di esempio funzionante... 2

This commit is contained in:
paolo
2018-11-02 23:22:16 +01:00
parent 899e412949
commit 444dfc3384
15 changed files with 148 additions and 67 deletions

View File

@@ -27,6 +27,7 @@
"axios": "^0.18.0", "axios": "^0.18.0",
"bcryptjs": "^2.4.3", "bcryptjs": "^2.4.3",
"dotenv": "^6.1.0", "dotenv": "^6.1.0",
"vee-validate": "^2.1.2",
"vue-i18n": "^8.1.0", "vue-i18n": "^8.1.0",
"vue-property-decorator": "^7.2.0", "vue-property-decorator": "^7.2.0",
"vuelidate": "^0.7.4", "vuelidate": "^0.7.4",

View File

@@ -26,7 +26,7 @@ module.exports = function (ctx) {
store: 'src/store/index.ts' store: 'src/store/index.ts'
}, },
// app plugins (/src/plugins) // app plugins (/src/plugins)
plugins: ['i18n', 'axios', 'vuelidate'], plugins: ['i18n', 'axios', 'vee-validate'],
css: [ css: [
'app.styl' 'app.styl'
], ],

View File

@@ -57,7 +57,7 @@
import drawer from '../layouts/drawer/drawer.vue' import drawer from '../layouts/drawer/drawer.vue'
import messagePopover from '../layouts/toolbar/messagePopover.vue' import messagePopover from '../layouts/toolbar/messagePopover.vue'
import user from '../store/modules/user'; // import user from '../store/modules/user';
import * as types from '../store/mutation-types' import * as types from '../store/mutation-types'

View File

@@ -0,0 +1,5 @@
import VeeValidate from "vee-validate";
export default ({ Vue }) => {
Vue.use(VeeValidate, { inject: false })
}

View File

@@ -2,7 +2,9 @@ import { RouteConfig } from 'vue-router'
const routes: RouteConfig[] = [ const routes: RouteConfig[] = [
{ path: '/', component: () => import('@/pages/Index.vue'), meta: { name: 'Home' } }, { path: '/', component: () => import('@/pages/Index.vue'), meta: { name: 'Home' } },
/* { path: '/signup', component: () => import('@/views/login/signup.vue'), meta: { name: 'Registration' } }, { path: '/test', component: () => import('@/views/login/test.vue'), meta: { name: 'Test' } },
/*
{ path: '/signup', component: () => import('@/views/login/signup.vue'), meta: { name: 'Registration' } },
{ path: '/signin', component: () => import('@/views/login/signin.vue'), meta: { name: 'Login' } }, { path: '/signin', component: () => import('@/views/login/signin.vue'), meta: { name: 'Login' } },
{ path: '/vreg', component: () => import('@/views/login/vreg.vue'), meta: { name: 'Verify Reg' } }, { path: '/vreg', component: () => import('@/views/login/vreg.vue'), meta: { name: 'Verify Reg' } },
{ {

View File

@@ -3,7 +3,7 @@ import Vuex from 'vuex'
import { Module, VuexModule, Mutation, MutationAction, Action, getModule } from 'vuex-module-decorators' import { Module, VuexModule, Mutation, MutationAction, Action, getModule } from 'vuex-module-decorators'
let bcrypt = require('bcryptjs') const bcrypt = require('bcryptjs')
import * as types from '@/store/mutation-types' import * as types from '@/store/mutation-types'
import { serv_constants } from '@/store/modules/serv_constants' import { serv_constants } from '@/store/modules/serv_constants'
@@ -22,8 +22,8 @@ export const ErroriMongoDb = {
Vue.use(Vuex) Vue.use(Vuex)
@Module @Module({ dynamic: true, store, name: 'user' })
export default class User extends VuexModule implements IUserState { // Non occorrono i getters, basta questi qui: class User extends VuexModule {
_id: IUserState['_id'] = '' _id: IUserState['_id'] = ''
email: IUserState['email'] = '' email: IUserState['email'] = ''
username: IUserState['username'] = '' username: IUserState['username'] = ''
@@ -37,7 +37,7 @@ export default class User extends VuexModule implements IUserState { // Non oc
verifiedEmail: IUserState['verifiedEmail'] = false verifiedEmail: IUserState['verifiedEmail'] = false
servercode: number = 0 servercode: number = 0
getlang (): any { getlang(): any {
if (this.lang !== '') { if (this.lang !== '') {
return this.lang return this.lang
} else { } else {
@@ -45,9 +45,9 @@ export default class User extends VuexModule implements IUserState { // Non oc
} }
} }
sendRequest (url: string, method: string, mydata: any) { sendRequest(url: string, method: string, mydata: any) {
console.log('LANG ' + this.getlang()) console.log('LANG ' + this.getlang())
let mytok: string = this.getTok() const mytok: string = this.getTok()
const authHeader = new Headers() const authHeader = new Headers()
authHeader.append('content-type', 'application/json') authHeader.append('content-type', 'application/json')
@@ -65,7 +65,7 @@ export default class User extends VuexModule implements IUserState { // Non oc
} }
getTok () { getTok() {
if (this.tokens) { if (this.tokens) {
if (typeof this.tokens[0] !== 'undefined') { if (typeof this.tokens[0] !== 'undefined') {
return this.tokens[0].token return this.tokens[0].token
@@ -78,22 +78,22 @@ export default class User extends VuexModule implements IUserState { // Non oc
} }
@MutationAction({ mutate: [types.USER_PASSWORD] }) @MutationAction({ mutate: [types.USER_PASSWORD] })
async setpassword (newstr: string) { async setpassword(newstr: string) {
return { password: newstr } return { password: newstr }
} }
@MutationAction({ mutate: [types.USER_EMAIL] }) @MutationAction({ mutate: [types.USER_EMAIL] })
async setemail (newstr: string) { async setemail(newstr: string) {
return { email: newstr } return { email: newstr }
} }
@MutationAction({ mutate: [types.USER_LANG] }) @MutationAction({ mutate: [types.USER_LANG] })
async setlang (newstr: string) { async setlang(newstr: string) {
return { lang: newstr } return { lang: newstr }
} }
@Mutation @Mutation
authUser (data: IUserState) { authUser(data: IUserState) {
this.username = data.username this.username = data.username
this.userId = data.userId this.userId = data.userId
this.idToken = data.idToken this.idToken = data.idToken
@@ -104,7 +104,7 @@ export default class User extends VuexModule implements IUserState { // Non oc
} }
@Mutation @Mutation
UpdatePwd (data: IIdToken) { UpdatePwd(data: IIdToken) {
this.idToken = data.idToken this.idToken = data.idToken
if (!this.tokens) { if (!this.tokens) {
this.tokens = [] this.tokens = []
@@ -113,12 +113,12 @@ export default class User extends VuexModule implements IUserState { // Non oc
} }
@Mutation @Mutation
setServerCode (servercode: number) { setServerCode(servercode: number) {
this.servercode = servercode this.servercode = servercode
} }
@Mutation @Mutation
clearAuthData (): void { clearAuthData(): void {
this.username = '' this.username = ''
this.tokens = [] this.tokens = []
this.idToken = '' this.idToken = ''
@@ -127,7 +127,7 @@ export default class User extends VuexModule implements IUserState { // Non oc
} }
@Action({ commit: types.USER_UPDATEPWD }) @Action({ commit: types.USER_UPDATEPWD })
resetpwd (paramquery: IUserState) { resetpwd(paramquery: IUserState) {
let call = process.env.MONGODB_HOST + '/updatepwd' let call = process.env.MONGODB_HOST + '/updatepwd'
console.log('CALL ' + call) console.log('CALL ' + call)
@@ -172,7 +172,7 @@ export default class User extends VuexModule implements IUserState { // Non oc
} }
@Action({ commit: types.USER_REQUESTRESETPWD }) @Action({ commit: types.USER_REQUESTRESETPWD })
requestpwd (paramquery: IUserState) { requestpwd(paramquery: IUserState) {
let call = process.env.MONGODB_HOST + '/requestnewpwd' let call = process.env.MONGODB_HOST + '/requestnewpwd'
console.log('CALL ' + call) console.log('CALL ' + call)
@@ -210,7 +210,7 @@ export default class User extends VuexModule implements IUserState { // Non oc
} }
@Action({ commit: types.USER_VREG }) @Action({ commit: types.USER_VREG })
vreg (paramquery: ILinkReg) { vreg(paramquery: ILinkReg) {
let call = process.env.MONGODB_HOST + '/vreg' let call = process.env.MONGODB_HOST + '/vreg'
console.log('CALL ' + call) console.log('CALL ' + call)
@@ -251,7 +251,7 @@ export default class User extends VuexModule implements IUserState { // Non oc
} }
@Action({ commit: types.USER_VREG }) @Action({ commit: types.USER_VREG })
signup (authData: IUserState) { signup(authData: IUserState) {
let call = process.env.MONGODB_HOST + '/users' let call = process.env.MONGODB_HOST + '/users'
console.log('CALL ' + call) console.log('CALL ' + call)
@@ -347,7 +347,7 @@ export default class User extends VuexModule implements IUserState { // Non oc
} }
@Action({ commit: types.USER_SIGNIN }) @Action({ commit: types.USER_SIGNIN })
signin (authData: IUserState) { signin(authData: IUserState) {
let call = process.env.MONGODB_HOST + '/users/login' let call = process.env.MONGODB_HOST + '/users/login'
console.log('LOGIN ' + call) console.log('LOGIN ' + call)
@@ -447,7 +447,7 @@ export default class User extends VuexModule implements IUserState { // Non oc
} }
@Action({ commit: types.USER_AUTOLOGIN }) @Action({ commit: types.USER_AUTOLOGIN })
autologin () { autologin() {
const token = localStorage.getItem('token') const token = localStorage.getItem('token')
if (!token) { if (!token) {
return return
@@ -470,7 +470,7 @@ export default class User extends VuexModule implements IUserState { // Non oc
} }
@Action({ commit: types.USER_LOGOUT }) @Action({ commit: types.USER_LOGOUT })
logout () { logout() {
let call = process.env.MONGODB_HOST + '/users/me/token' let call = process.env.MONGODB_HOST + '/users/me/token'
console.log('CALL ' + call) console.log('CALL ' + call)
@@ -503,3 +503,5 @@ export default class User extends VuexModule implements IUserState { // Non oc
} }
} }
export const UserModule = getModule(User.prototype)

View File

@@ -50,7 +50,7 @@
import {mapActions} from 'vuex' import {mapActions} from 'vuex'
import * as types from '../../store/mutation-types' import * as types from '../../store/mutation-types'
import {ErroriMongoDb} from '../../store/modules/user' //import {ErroriMongoDb} from '../../store/modules/user'
import {serv_constants} from '../../store/modules/serv_constants'; import {serv_constants} from '../../store/modules/serv_constants';

View File

@@ -64,7 +64,7 @@
import {mapGetters, mapActions} from 'vuex' import {mapGetters, mapActions} from 'vuex'
import * as types from '../../store/mutation-types' import * as types from '../../store/mutation-types'
import {ErroriMongoDb} from '../../store/modules/user' //import {ErroriMongoDb} from '../../store/modules/user'
import {serv_constants} from "../../store/modules/serv_constants"; import {serv_constants} from "../../store/modules/serv_constants";
import axios from 'axios'; import axios from 'axios';

View File

@@ -93,6 +93,7 @@
</template> </template>
<script> <script>
import { import {
required, required,
email, email,
@@ -107,7 +108,7 @@
import {mapGetters, mapActions} from 'vuex' import {mapGetters, mapActions} from 'vuex'
import * as types from '../../store/mutation-types' import * as types from '../../store/mutation-types'
import {ErroriMongoDb} from '../../store/modules/user' //import {ErroriMongoDb} from '../../store/modules/user'
import axios from 'axios'; import axios from 'axios';
import {Loading, QSpinnerFacebook, QSpinnerGears} from 'quasar' import {Loading, QSpinnerFacebook, QSpinnerGears} from 'quasar'

47
src/views/login/test.vue Normal file
View File

@@ -0,0 +1,47 @@
<template>
<div>
<q-page padding class="signup">
<div class="text-center">
<p>
<!--<img src="../../../assets/quasar-logo-full.svg">-->
<img :src="`../../../assets/`+`${env('LOGO_REG')}`">
</p>
</div>
<!--Prova URL : {{env('PROVA_PAOLO')}}-->
<q-field
:error="$v.form.email.$error"
:error-label="`${errorMsg('email', $v.form.email)}`"
>
<q-input
v-validate="'required|email'"
v-model="form.email"
:value="form.email"
@change="val => { form.email = val }"
:before="[{icon: 'mail', handler () {}}]"
@blur="$v.form.email.$touch"
:error="$v.form.email.$error"
:float-label="$t('reg.email')"
/>
</q-field>
</q-page>
</div>
</template>
<script lang="ts">
import { Component, Vue, Watch } from 'vue-property-decorator';
import { UserModule } from '@/store/modules/user';
@Component({})
export default class Login extends Vue {
form = {
email: 'prova@prova.com',
};
}
</script>

View File

@@ -60,7 +60,7 @@
import {mapActions} from 'vuex' import {mapActions} from 'vuex'
import * as types from '../../store/mutation-types' import * as types from '../../store/mutation-types'
import {ErroriMongoDb} from '../../store/modules/user' //import {ErroriMongoDb} from '../../store/modules/user'
import {serv_constants} from '../../store/modules/serv_constants'; import {serv_constants} from '../../store/modules/serv_constants';

View File

@@ -32,7 +32,7 @@
import {mapActions} from 'vuex' import {mapActions} from 'vuex'
import * as types from '../../store/mutation-types' import * as types from '../../store/mutation-types'
import {ErroriMongoDb} from '../../store/modules/user' //import {ErroriMongoDb} from '../../store/modules/user'
import {serv_constants} from '../../store/modules/serv_constants'; import {serv_constants} from '../../store/modules/serv_constants';

View File

@@ -1,35 +1,41 @@
{ {
"compilerOptions": { "compilerOptions": {
"target": "es5", "target": "esnext",
"module": "esnext", "module": "esnext",
"strict": true, "strict": true,
"esModuleInterop": true, "jsx": "preserve",
"sourceMap": true, "importHelpers": true,
"experimentalDecorators": true,
"noImplicitAny": true,
"moduleResolution": "node", "moduleResolution": "node",
"lib": [ "experimentalDecorators": true,
"es2015", "esModuleInterop": true,
"dom" "allowSyntheticDefaultImports": true,
], "sourceMap": true,
"baseUrl": ".", "baseUrl": "./",
"paths": {
"~/*": ["./*"],
"@/*": ["src/*"]
},
"types": [ "types": [
"node", "node",
"jest" "jest"
],
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
] ]
}, },
"include": [ "include": [
"src/**/*.ts", "src/**/*.ts",
"src/**/*.tsx",
"src/**/*.vue", "src/**/*.vue",
"test/**/*.ts" "tests/**/*.ts",
"tests/**/*.tsx",
"config/**/*.ts"
], ],
"exclude": [ "exclude": [
".quasar",
"dist",
"node_modules" "node_modules"
] ]
} }

View File

@@ -1,13 +1,25 @@
{ {
"defaultSeverity": "warning", "defaultSeverity": "warning",
"extends": [ "extends": [
"tslint-config-standard" "tslint:recommended"
], ],
"linterOptions": {
"exclude": [
"node_modules/**"
]
},
"rules": { "rules": {
/*"semicolon": [ "semicolon": [true, "never"],
true, "trailing-comma": [true, {"multiline": "never", "singleline": "never"}],
"always", "quotemark": [true, "single"],
"ignore-bound-class-methods" "indent": [true, "spaces", 2],
]*/ "interface-name": false,
"ordered-imports": false,
"object-literal-sort-keys": false,
"max-line-length": false,
"member-access": false,
"no-console": [true, "warning"],
"no-consecutive-blank-lines": false,
"no-empty": false
} }
} }

View File

@@ -9021,6 +9021,11 @@ vary@~1.1.2:
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
vee-validate@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/vee-validate/-/vee-validate-2.1.2.tgz#4dc99bbca1358d2cee2b8d0fe7ebd59ab968de08"
integrity sha512-6Gr7jxXRnRhAg4QKedWF2mqtJ5MF6os8OBUtWS4XTOyGMbwa1UsJOPogqxEJA1qNqf5fUwqr/uP5Vs1zVyHSxA==
vendors@^1.0.0: vendors@^1.0.0:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801"