fix "Todo Completati"
statics instead of assets
This commit is contained in:
@@ -13,3 +13,4 @@ TEST_USERNAME='paoloar77'
|
||||
TEST_PASSWORD='mypassword@1A'
|
||||
PUBLICKEY_PUSH='BGxRrFWnPoa_ImUaWXmeEOFVI9VNKVKaAPsvsM1XY6wn24yxp9MyOQ4crNYCJKxSXV65Y1GblW5_VLoamedcZ1I'
|
||||
IN_CONSTRUCTION='0'
|
||||
DEBUG='1'
|
||||
|
||||
7
.gitignore
vendored
7
.gitignore
vendored
@@ -2,6 +2,7 @@
|
||||
.DS_Store
|
||||
.thumbs.db
|
||||
.env
|
||||
.env.development
|
||||
.env.production
|
||||
.env.production.bak
|
||||
.env.prod.bak
|
||||
@@ -12,7 +13,6 @@ node_modules
|
||||
/src-cordova/platforms
|
||||
/src-cordova/plugins
|
||||
/src-cordova/www
|
||||
/src-pwa
|
||||
/src-ssr
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
@@ -34,3 +34,8 @@ deploy.sh
|
||||
deploy_on_production.sh
|
||||
deploy_on_test_server.sh
|
||||
send_to_production.sh
|
||||
compileandserve.sh
|
||||
deploy_all.sh
|
||||
deploy_frontend.sh
|
||||
mongodb_delete_pc_locale_paolo.sh
|
||||
serve_on_localhost.sh
|
||||
|
||||
6
package-lock.json
generated
6
package-lock.json
generated
@@ -17708,9 +17708,9 @@
|
||||
"wordwrap": "0.0.3"
|
||||
}
|
||||
},
|
||||
"optimize-css-assets-webpack-plugin": {
|
||||
"optimize-css-statics-webpack-plugin": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/optimize-css-statics-webpack-plugin/-/optimize-css-statics-webpack-plugin-5.0.1.tgz",
|
||||
"integrity": "sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
@@ -19341,7 +19341,7 @@
|
||||
"net": "1.0.2",
|
||||
"node-loader": "0.6.0",
|
||||
"opn": "5.3.0",
|
||||
"optimize-css-assets-webpack-plugin": "5.0.1",
|
||||
"optimize-css-statics-webpack-plugin": "5.0.1",
|
||||
"ouch": "2.0.0",
|
||||
"postcss-loader": "3.0.0",
|
||||
"postcss-rtl": "1.3.2",
|
||||
|
||||
@@ -17,9 +17,9 @@ const extendTypescriptToWebpack = (config) => {
|
||||
.set('@views', helpers.root('src/components/views/index.ts'))
|
||||
// .set('@views', helpers.root('src/components/views'))
|
||||
.set('@src', helpers.root('src'))
|
||||
.set('@css', helpers.root('src/assets/css/*'))
|
||||
.set('@css', helpers.root('src/statics/css/*'))
|
||||
.set('@icons', helpers.root('src/statics/icons/*'))
|
||||
.set('@images', helpers.root('src/assets/images/*'))
|
||||
.set('@images', helpers.root('src/statics/images/*'))
|
||||
.set('@classes', helpers.root('src/classes/index.ts'))
|
||||
.set('@utils', helpers.root('src/utils/index.ts'))
|
||||
.set('@utils', helpers.root('src/utils/*'))
|
||||
@@ -59,7 +59,7 @@ module.exports = function (ctx) {
|
||||
store: 'src/store/index.ts'
|
||||
},
|
||||
// app plugins (/src/plugins)
|
||||
plugins: ['i18n', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'vue-idb', 'dragula'],
|
||||
plugins: ['i18n', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'vue-idb', 'dragula', 'guard'],
|
||||
css: [
|
||||
'app.styl'
|
||||
],
|
||||
@@ -72,6 +72,12 @@ module.exports = function (ctx) {
|
||||
'fontawesome'
|
||||
],
|
||||
supportIE: false,
|
||||
aliases: {
|
||||
quasar: path.resolve(__dirname, '../node_modules/quasar-framework/'),
|
||||
src: path.resolve(__dirname, '../src'),
|
||||
statics: path.resolve(__dirname, '../src/statics'),
|
||||
components: path.resolve(__dirname, '../src/components')
|
||||
},
|
||||
build: {
|
||||
showProgress: true,
|
||||
env: envparser(),
|
||||
@@ -180,7 +186,7 @@ module.exports = function (ctx) {
|
||||
pwa: {
|
||||
runtimeCaching: [
|
||||
{
|
||||
urlPattern: '/assets',
|
||||
urlPattern: '/statics',
|
||||
handler: 'networkFirst'
|
||||
}
|
||||
]
|
||||
@@ -189,7 +195,7 @@ module.exports = function (ctx) {
|
||||
pwa: {
|
||||
// runtimeCaching: [
|
||||
// {
|
||||
// urlPattern: '/assets',
|
||||
// urlPattern: '/statics',
|
||||
// handler: 'networkFirst'
|
||||
// }
|
||||
// ],
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
|
||||
console.log(' [ VER-0.0.27 ] _---------________------ PAO: this is my custom service worker');
|
||||
|
||||
importScripts('../assets/js/idb.js');
|
||||
importScripts('../assets/js/storage.js');
|
||||
importScripts('../statics/js/idb.js');
|
||||
importScripts('../statics/js/storage.js');
|
||||
importScripts('https://storage.googleapis.com/workbox-cdn/releases/3.0.0/workbox-sw.js'); //++Todo: Replace with local workbox.js
|
||||
|
||||
|
||||
@@ -206,7 +206,7 @@ if (workbox) {
|
||||
});
|
||||
|
||||
workbox.routing.registerRoute(
|
||||
new RegExp(/.*\/(?:assets\/icons).*$/),
|
||||
new RegExp(/.*\/(?:statics\/icons).*$/),
|
||||
workbox.strategies.cacheFirst({
|
||||
cacheName: 'image-cache',
|
||||
plugins: [
|
||||
@@ -258,9 +258,9 @@ if (workbox) {
|
||||
);
|
||||
|
||||
workbox.routing.registerRoute(
|
||||
new RegExp(/.*\/(?:assets).*$/),
|
||||
new RegExp(/.*\/(?:statics).*$/),
|
||||
workbox.strategies.cacheFirst({
|
||||
cacheName: 'assets',
|
||||
cacheName: 'statics',
|
||||
plugins: [
|
||||
new workbox.expiration.Plugin({
|
||||
maxAgeSeconds: 10 * 24 * 60 * 60,
|
||||
|
||||
@@ -1,418 +0,0 @@
|
||||
const messages = {
|
||||
it: {
|
||||
dialog: {
|
||||
ok: 'Ok',
|
||||
yes: 'Si',
|
||||
no: 'No',
|
||||
delete: 'Elimina',
|
||||
cancel: 'Annulla',
|
||||
msg: {
|
||||
titledeleteTask: 'Elimina Task',
|
||||
deleteTask: "Vuoi Eliminare {mytodo}?"
|
||||
}
|
||||
},
|
||||
comp:{
|
||||
Conta: "Conta",
|
||||
},
|
||||
msg: {
|
||||
hello: 'Buongiorno',
|
||||
myAppName: 'FreePlanet',
|
||||
underconstruction: 'App in costruzione...',
|
||||
myDescriz: '',
|
||||
sottoTitoloApp: 'Il primo Vero Social',
|
||||
sottoTitoloApp2: 'Libero, Equo e Solidale',
|
||||
sottoTitoloApp3: 'dove Vive Consapevolezza e Aiuto Comunitario'
|
||||
},
|
||||
pages: {
|
||||
home: 'Principale',
|
||||
SignUp: 'Registrazione',
|
||||
SignIn: 'Login',
|
||||
vreg: 'Verifica Reg',
|
||||
Test: 'Test',
|
||||
Category: 'Categorie',
|
||||
Todo: 'Todo',
|
||||
personal: 'Personale',
|
||||
work: 'Lavoro',
|
||||
shopping: 'Spesa',
|
||||
Admin: 'Admin',
|
||||
Test1: 'Test1',
|
||||
Test2: 'Test2',
|
||||
},
|
||||
components: {
|
||||
authentication:{
|
||||
login: {
|
||||
facebook: 'Facebook'
|
||||
},
|
||||
email_verification: {
|
||||
title: 'Inizia la tua registrazione',
|
||||
introduce_email: 'inserisci la tua email',
|
||||
email: 'Email',
|
||||
invalid_email: 'La tua email è invalida',
|
||||
verify_email: 'Verifica la tua email',
|
||||
go_login: 'Torna al Login',
|
||||
incorrect_input: 'Inserimento incorretto.',
|
||||
link_sent: 'Per confermare la Registrazione, leggi la tua casella di posta e Clicca su "Verifica Email".\nSe non la trovi, cerca nella cartella Spam.'
|
||||
}
|
||||
}
|
||||
},
|
||||
fetch: {
|
||||
errore_generico: 'Errore Generico',
|
||||
errore_server: 'Impossibile accedere al Server. Riprovare Grazie',
|
||||
error_doppiologin: 'Rieseguire il Login. Accesso aperto da un altro dispositivo.',
|
||||
},
|
||||
user: {
|
||||
notregistered: 'Devi registrarti al servizio prima di porter memorizzare i dati'
|
||||
},
|
||||
reg: {
|
||||
incorso: 'Registrazione in corso...',
|
||||
richiesto: 'Campo Richiesto',
|
||||
email: 'Email',
|
||||
username : 'Nome Utente',
|
||||
username_login : 'Nome Utente o email',
|
||||
password: 'Password',
|
||||
repeatPassword: 'Ripeti password',
|
||||
terms: "Accetto i termini e le condizioni",
|
||||
submit: "Registrati",
|
||||
title_verif_reg: "Verifica Registrazione",
|
||||
verificato: "Verificato",
|
||||
non_verificato: "Non Verificato",
|
||||
forgetpassword:"Password dimenticata?",
|
||||
err: {
|
||||
required: 'è richiesto',
|
||||
email: 'dev\'essere una email valida',
|
||||
errore_generico: 'Si prega di compilare correttamente i campi',
|
||||
atleast: 'dev\'essere lungo almeno di',
|
||||
complexity: 'deve contenere almeno 1 carattere minuscolo, 1 maiuscola e 1 cifra',
|
||||
notmore: 'non dev\'essere lungo più di',
|
||||
char: 'caratteri',
|
||||
terms: 'Devi accettare le condizioni, per continuare.',
|
||||
duplicate_email: 'l\'Email è già stata registrata',
|
||||
duplicate_username: 'L\'Username è stato già utilizzato',
|
||||
sameaspassword: 'Le password devono essere identiche',
|
||||
}
|
||||
},
|
||||
login:{
|
||||
incorso: 'Login in corso',
|
||||
enter: 'Login',
|
||||
errato: "Username o password errata. Riprovare",
|
||||
completato: 'Login effettuato!',
|
||||
},
|
||||
reset: {
|
||||
title_reset_pwd: "Reimposta la tua Password",
|
||||
send_reset_pwd: 'Invia Reimposta la password',
|
||||
incorso: 'Richiesta Nuova Email...',
|
||||
email_sent:'Email inviata',
|
||||
check_email: 'Controlla la tua email, ti arriverà un messaggio con un link per reimpostare la tua password. Questo link, per sicurezza, scadrà dopo 4 ore.',
|
||||
title_update_pwd: 'Aggiorna la tua password',
|
||||
update_password: 'Aggiorna Password',
|
||||
},
|
||||
logout:{
|
||||
uscito: 'Sei Uscito',
|
||||
},
|
||||
errors: {
|
||||
graphql: {
|
||||
undefined: 'non definito'
|
||||
}
|
||||
},
|
||||
todo: {
|
||||
titleprioritymenu: 'Priorità:',
|
||||
inserttop: 'Inserisci il Task in alto',
|
||||
insertbottom: 'Inserisci il Task in basso',
|
||||
edit: 'Descrizione Task:',
|
||||
completed: 'Ultimi Completati',
|
||||
usernotdefined: 'Attenzione, occorre essere Loggati per poter aggiungere un Todo'
|
||||
},
|
||||
notification : {
|
||||
status: 'Stato',
|
||||
ask: 'Attiva le Notifiche',
|
||||
waitingconfirm: 'Conferma la richiesta di Notifica',
|
||||
confirmed: 'Notifiche Attivate!',
|
||||
denied: 'Notifiche Disabilitate! Attenzione così non vedrai arrivarti i messaggi. Riabilitali per vederli.',
|
||||
titlegranted: 'Permesso Notifiche Abilitato!',
|
||||
statusnot: 'Stato Notifiche',
|
||||
titledenied: 'Permesso Notifiche Disabilitato!',
|
||||
title_subscribed: 'Sottoscrizione a FreePlanet.app!',
|
||||
subscribed: 'Ora potrai ricevere i messaggi e le notifiche.',
|
||||
newVersionAvailable: 'Nuova Versione!'
|
||||
},
|
||||
connection: 'Connessione',
|
||||
},
|
||||
'esEs': {
|
||||
dialog: {
|
||||
ok: 'Vale',
|
||||
yes: 'Sí',
|
||||
no: 'No',
|
||||
delete: 'Borrar',
|
||||
cancel: 'Cancelar',
|
||||
msg: {
|
||||
titledeleteTask: 'Borrar Tarea',
|
||||
deleteTask: 'Quieres borrar {mytodo}?'
|
||||
}
|
||||
},
|
||||
comp:{
|
||||
Conta: "Conta",
|
||||
},
|
||||
msg: {
|
||||
hello: 'Buenos Días',
|
||||
myAppName: 'FreePlanet',
|
||||
underconstruction: 'App en construcción...',
|
||||
myDescriz: '',
|
||||
sottoTitoloApp: 'El primer Verdadero Social',
|
||||
sottoTitoloApp2: 'Libre, justo y Solidario',
|
||||
sottoTitoloApp3: 'Donde vive Conciencia y Ayuda comunitaria'
|
||||
},
|
||||
pages: {
|
||||
home: 'Principal',
|
||||
SignUp: 'Nueva Cuenta',
|
||||
SignIn: 'Entrar',
|
||||
vreg: 'Verifica Reg',
|
||||
Test: 'Test',
|
||||
Category: 'Categorías',
|
||||
Todo: 'Tareas',
|
||||
personal: 'Personal',
|
||||
work: 'Trabajo',
|
||||
shopping: 'Compras',
|
||||
Admin: 'Administración',
|
||||
Test1: 'Test1',
|
||||
Test2: 'Test2',
|
||||
},
|
||||
components: {
|
||||
authentication:{
|
||||
login: {
|
||||
facebook: 'Facebook'
|
||||
},
|
||||
email_verification: {
|
||||
title: 'Crea una cuenta',
|
||||
introduce_email: 'ingrese su dirección de correo electrónico',
|
||||
email: 'Email',
|
||||
invalid_email: 'Tu correo electrónico no es válido',
|
||||
verify_email: 'Revisa tu email',
|
||||
go_login: 'Vuelve al Login',
|
||||
incorrect_input: 'Entrada correcta.',
|
||||
link_sent: 'Para confirmar el registro, lea su buzón y haga clic en "Verificar correo electrónico".\n' + 'Si no lo encuentras, busca en la carpeta Spam.'
|
||||
}
|
||||
}
|
||||
},
|
||||
fetch: {
|
||||
errore_generico: 'Error genérico',
|
||||
errore_server: 'No se puede acceder al Servidor. Inténtalo de nuevo, Gracias',
|
||||
error_doppiologin: 'Vuelva a iniciar sesión. Acceso abierto por otro dispositivo.',
|
||||
},
|
||||
user: {
|
||||
notregistered: 'Debe registrarse en el servicio antes de poder almacenar los datos'
|
||||
},
|
||||
reg: {
|
||||
incorso: 'Registro en curso...',
|
||||
richiesto: 'Campo requerido',
|
||||
email: 'Email',
|
||||
username : 'Nombre usuario',
|
||||
username_login : 'Nombre usuario o email',
|
||||
password: 'contraseña',
|
||||
repeatPassword: 'Repetir contraseña',
|
||||
terms: "Acepto los términos y condiciones",
|
||||
submit: "Registrarse",
|
||||
title_verif_reg: "Verifica registro",
|
||||
verificato: "Verificado",
|
||||
non_verificato: "No Verificado",
|
||||
forgetpassword:"¿Olvidaste tu contraseña?",
|
||||
err: {
|
||||
required: 'se requiere',
|
||||
email: 'Debe ser una email válida.',
|
||||
errore_generico: 'Por favor, rellene los campos correctamente',
|
||||
atleast: 'debe ser al menos largo',
|
||||
complexity: 'debe contener al menos 1 minúscula, 1 mayúscula y 1 dígito',
|
||||
notmore: 'no tiene que ser más largo que',
|
||||
char: 'caracteres',
|
||||
terms: 'Debes aceptar las condiciones, para continuar..',
|
||||
duplicate_email: 'La email ya ha sido registrada',
|
||||
duplicate_username: 'El nombre de usuario ya ha sido utilizado',
|
||||
sameaspassword: 'Las contraseñas deben ser idénticas',
|
||||
}
|
||||
},
|
||||
login:{
|
||||
incorso: 'Login en curso',
|
||||
enter: 'Entrar',
|
||||
errato: "Nombre de usuario, correo o contraseña incorrectos. inténtelo de nuevo",
|
||||
completato: 'Login realizado!',
|
||||
},
|
||||
reset: {
|
||||
title_reset_pwd: "Restablece tu contraseña",
|
||||
send_reset_pwd: 'Enviar restablecer contraseña',
|
||||
incorso: 'Solicitar nueva Email...',
|
||||
email_sent:'Email enviada',
|
||||
check_email: 'Revise su correo electrónico, recibirá un mensaje con un enlace para restablecer su contraseña. Este enlace, por razones de seguridad, expirará después de 4 horas.',
|
||||
title_update_pwd: 'Actualiza tu contraseña',
|
||||
update_password: 'Actualizar contraseña',
|
||||
},
|
||||
logout:{
|
||||
uscito: 'Estás desconectado',
|
||||
},
|
||||
errors: {
|
||||
graphql: {
|
||||
undefined: 'no definido'
|
||||
}
|
||||
},
|
||||
todo: {
|
||||
titleprioritymenu: 'Prioridad:',
|
||||
inserttop: 'Ingrese una nueva Tarea arriba',
|
||||
insertbottom: 'Ingrese una nueva Tarea abajo',
|
||||
edit: 'Descripción Tarea:',
|
||||
completed: 'Ultimos Completados',
|
||||
usernotdefined: 'Atención, debes iniciar sesión para agregar una Tarea'
|
||||
},
|
||||
notification : {
|
||||
status: 'Estado',
|
||||
ask: 'Activar notificaciones',
|
||||
waitingconfirm: 'Confirmar la solicitud de notificación.',
|
||||
confirmed: 'Notificaciones activadas!',
|
||||
denied: 'Notificaciones deshabilitadas! Ten cuidado, así no verás llegar los mensajes. Rehabilítalos para verlos.',
|
||||
titlegranted: 'Notificaciones permitidas habilitadas!',
|
||||
statusnot: 'Estado Notificaciones',
|
||||
titledenied: 'Notificaciones permitidas deshabilitadas!',
|
||||
title_subscribed: 'Suscripción a FreePlanet.app!',
|
||||
subscribed: 'Ahora puedes recibir mensajes y notificaciones.',
|
||||
newVersionAvailable: 'Nueva Versión!'
|
||||
},
|
||||
connection: 'Connection',
|
||||
},
|
||||
'enUs': {
|
||||
dialog: {
|
||||
ok: 'Ok',
|
||||
yes: 'Yes',
|
||||
no: 'No',
|
||||
delete: 'Delete',
|
||||
cancel: 'Cancel',
|
||||
msg: {
|
||||
titledeleteTask: 'Delete Task',
|
||||
deleteTask: 'Delete Task {mytodo}?'
|
||||
}
|
||||
},
|
||||
comp:{
|
||||
Conta: "Count",
|
||||
},
|
||||
msg: {
|
||||
hello: 'Hello!',
|
||||
myAppName: 'FreePlanet',
|
||||
underconstruction: 'App in constuction...',
|
||||
myDescriz: '',
|
||||
sottoTitoloApp: 'The first Real Social',
|
||||
sottoTitoloApp2: 'Free, Fair and solidarity',
|
||||
sottoTitoloApp3: 'Where the conscience and community help live'
|
||||
},
|
||||
pages: {
|
||||
home: 'Dashboard',
|
||||
SignUp: 'SignUp',
|
||||
SignIn: 'SignIn',
|
||||
vreg: 'Verify Reg',
|
||||
Test: 'Test',
|
||||
Category: 'Category',
|
||||
Todo: 'Todo',
|
||||
personal: 'Personal',
|
||||
work: 'Work',
|
||||
shopping: 'Shopping',
|
||||
Admin: 'Admin',
|
||||
Test1: 'Test1',
|
||||
Test2: 'Test2',
|
||||
},
|
||||
components: {
|
||||
authentication:{
|
||||
login: {
|
||||
facebook: 'Facebook'
|
||||
},
|
||||
email_verification: {
|
||||
title: 'Begin your registration',
|
||||
introduce_email: 'Enter your email',
|
||||
email: 'Email',
|
||||
invalid_email: 'Your email is invalid',
|
||||
verify_email: 'Verify your email',
|
||||
go_login: 'Back to Login',
|
||||
incorrect_input: 'Incorrect input.',
|
||||
link_sent: 'To confirm the Registration, read your mailbox and click on "Verify email".\nIf you can not find it check your junk mail or spam.'
|
||||
}
|
||||
}
|
||||
},
|
||||
fetch: {
|
||||
errore_generico: 'Generic Error',
|
||||
errore_server: 'Unable to access to the Server. Retry. Thank you.',
|
||||
error_doppiologin: 'Signup again. Another access was made with another device.',
|
||||
},
|
||||
user: {
|
||||
notregistered: 'You need first to SignUp before storing data'
|
||||
},
|
||||
reg: {
|
||||
incorso: 'Registration please wait...',
|
||||
richiesto: 'Field Required',
|
||||
email: 'Email',
|
||||
username_login : 'Username or email',
|
||||
username : 'Username',
|
||||
password: 'Password',
|
||||
repeatPassword: 'Repeat password',
|
||||
terms: "I agree with the terms and conditions",
|
||||
submit: "Submit",
|
||||
title_verif_reg: "Verify Registration",
|
||||
verificato: "Verified",
|
||||
non_verificato: "Not Verified",
|
||||
forgetpassword:"Forget Password?",
|
||||
err: {
|
||||
required: 'is required',
|
||||
email: 'must be a valid email',
|
||||
errore_generico: 'Please review fields again',
|
||||
atleast: 'must be at least',
|
||||
complexity: 'must contains at least 1 lowercase letter, 1 uppercase letter, and 1 digit',
|
||||
notmore: 'must not be more than',
|
||||
char: 'characters long',
|
||||
terms: 'You need to agree with the terms & conditions.',
|
||||
duplicate_email: 'Email was already registered',
|
||||
duplicate_username: 'Username is already taken',
|
||||
sameaspassword: 'Passwords must be identical',
|
||||
}
|
||||
},
|
||||
login:{
|
||||
incorso: 'Login...',
|
||||
enter: 'Login',
|
||||
errato: "Username or password wrong. Please retry again",
|
||||
completato: 'Login successfully!',
|
||||
},
|
||||
reset: {
|
||||
title_reset_pwd: "Reset your Password",
|
||||
send_reset_pwd: 'Send password request',
|
||||
incorso: 'Request New Email...',
|
||||
email_sent:'Email sent',
|
||||
check_email: 'Check your email for a message with a link to update your password. This link will expire in 4 hours for security reasons.',
|
||||
title_update_pwd: 'Update your password',
|
||||
update_password: 'Update Password',
|
||||
},
|
||||
logout:{
|
||||
uscito: 'Logout successfully',
|
||||
},
|
||||
errors: {
|
||||
graphql: {
|
||||
undefined: 'undefined'
|
||||
}
|
||||
},
|
||||
todo: {
|
||||
titleprioritymenu: 'Priority:',
|
||||
inserttop: 'Insert Task at the top',
|
||||
insertbottom: 'Insert Task at the bottom',
|
||||
edit: 'Task Description:',
|
||||
completed: 'Lasts Completed',
|
||||
usernotdefined: 'Attention, you need to be Signed In to add a new Task'
|
||||
},
|
||||
notification : {
|
||||
status: 'Status',
|
||||
ask: 'Enable Notification',
|
||||
waitingconfirm: 'Confirm the Request Notification',
|
||||
confirmed: 'Notifications Enabled!',
|
||||
denied: 'Notifications Disabled! Attention, you will not see your messages incoming. Reenable it for see it',
|
||||
titlegranted: 'Notification Permission Granted!',
|
||||
statusnot: 'status Notification',
|
||||
titledenied: 'Notification Permission Denied!',
|
||||
title_subscribed: 'Subscribed to FreePlanet.app!',
|
||||
subscribed: 'You can now receive Notification and Messages.',
|
||||
newVersionAvailable: 'New Version!'
|
||||
},
|
||||
connection: 'Conexión',
|
||||
},
|
||||
};
|
||||
|
||||
export default messages;
|
||||
File diff suppressed because it is too large
Load Diff
|
Before Width: | Height: | Size: 90 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 40 KiB |
@@ -1,461 +0,0 @@
|
||||
(function(self) {
|
||||
'use strict';
|
||||
|
||||
if (self.fetch) {
|
||||
return
|
||||
}
|
||||
|
||||
var support = {
|
||||
searchParams: 'URLSearchParams' in self,
|
||||
iterable: 'Symbol' in self && 'iterator' in Symbol,
|
||||
blob: 'FileReader' in self && 'Blob' in self && (function() {
|
||||
try {
|
||||
new Blob()
|
||||
return true
|
||||
} catch(e) {
|
||||
return false
|
||||
}
|
||||
})(),
|
||||
formData: 'FormData' in self,
|
||||
arrayBuffer: 'ArrayBuffer' in self
|
||||
}
|
||||
|
||||
if (support.arrayBuffer) {
|
||||
var viewClasses = [
|
||||
'[object Int8Array]',
|
||||
'[object Uint8Array]',
|
||||
'[object Uint8ClampedArray]',
|
||||
'[object Int16Array]',
|
||||
'[object Uint16Array]',
|
||||
'[object Int32Array]',
|
||||
'[object Uint32Array]',
|
||||
'[object Float32Array]',
|
||||
'[object Float64Array]'
|
||||
]
|
||||
|
||||
var isDataView = function(obj) {
|
||||
return obj && DataView.prototype.isPrototypeOf(obj)
|
||||
}
|
||||
|
||||
var isArrayBufferView = ArrayBuffer.isView || function(obj) {
|
||||
return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeName(name) {
|
||||
if (typeof name !== 'string') {
|
||||
name = String(name)
|
||||
}
|
||||
if (/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(name)) {
|
||||
throw new TypeError('Invalid character in header field name')
|
||||
}
|
||||
return name.toLowerCase()
|
||||
}
|
||||
|
||||
function normalizeValue(value) {
|
||||
if (typeof value !== 'string') {
|
||||
value = String(value)
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
// Build a destructive iterator for the value list
|
||||
function iteratorFor(items) {
|
||||
var iterator = {
|
||||
next: function() {
|
||||
var value = items.shift()
|
||||
return {done: value === undefined, value: value}
|
||||
}
|
||||
}
|
||||
|
||||
if (support.iterable) {
|
||||
iterator[Symbol.iterator] = function() {
|
||||
return iterator
|
||||
}
|
||||
}
|
||||
|
||||
return iterator
|
||||
}
|
||||
|
||||
function Headers(headers) {
|
||||
this.map = {}
|
||||
|
||||
if (headers instanceof Headers) {
|
||||
headers.forEach(function(value, name) {
|
||||
this.append(name, value)
|
||||
}, this)
|
||||
} else if (Array.isArray(headers)) {
|
||||
headers.forEach(function(header) {
|
||||
this.append(header[0], header[1])
|
||||
}, this)
|
||||
} else if (headers) {
|
||||
Object.getOwnPropertyNames(headers).forEach(function(name) {
|
||||
this.append(name, headers[name])
|
||||
}, this)
|
||||
}
|
||||
}
|
||||
|
||||
Headers.prototype.append = function(name, value) {
|
||||
name = normalizeName(name)
|
||||
value = normalizeValue(value)
|
||||
var oldValue = this.map[name]
|
||||
this.map[name] = oldValue ? oldValue+','+value : value
|
||||
}
|
||||
|
||||
Headers.prototype['delete'] = function(name) {
|
||||
delete this.map[normalizeName(name)]
|
||||
}
|
||||
|
||||
Headers.prototype.get = function(name) {
|
||||
name = normalizeName(name)
|
||||
return this.has(name) ? this.map[name] : null
|
||||
}
|
||||
|
||||
Headers.prototype.has = function(name) {
|
||||
return this.map.hasOwnProperty(normalizeName(name))
|
||||
}
|
||||
|
||||
Headers.prototype.set = function(name, value) {
|
||||
this.map[normalizeName(name)] = normalizeValue(value)
|
||||
}
|
||||
|
||||
Headers.prototype.forEach = function(callback, thisArg) {
|
||||
for (var name in this.map) {
|
||||
if (this.map.hasOwnProperty(name)) {
|
||||
callback.call(thisArg, this.map[name], name, this)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Headers.prototype.keys = function() {
|
||||
var items = []
|
||||
this.forEach(function(value, name) { items.push(name) })
|
||||
return iteratorFor(items)
|
||||
}
|
||||
|
||||
Headers.prototype.values = function() {
|
||||
var items = []
|
||||
this.forEach(function(value) { items.push(value) })
|
||||
return iteratorFor(items)
|
||||
}
|
||||
|
||||
Headers.prototype.entries = function() {
|
||||
var items = []
|
||||
this.forEach(function(value, name) { items.push([name, value]) })
|
||||
return iteratorFor(items)
|
||||
}
|
||||
|
||||
if (support.iterable) {
|
||||
Headers.prototype[Symbol.iterator] = Headers.prototype.entries
|
||||
}
|
||||
|
||||
function consumed(body) {
|
||||
if (body.bodyUsed) {
|
||||
return Promise.reject(new TypeError('Already read'))
|
||||
}
|
||||
body.bodyUsed = true
|
||||
}
|
||||
|
||||
function fileReaderReady(reader) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
reader.onload = function() {
|
||||
resolve(reader.result)
|
||||
}
|
||||
reader.onerror = function() {
|
||||
reject(reader.error)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function readBlobAsArrayBuffer(blob) {
|
||||
var reader = new FileReader()
|
||||
var promise = fileReaderReady(reader)
|
||||
reader.readAsArrayBuffer(blob)
|
||||
return promise
|
||||
}
|
||||
|
||||
function readBlobAsText(blob) {
|
||||
var reader = new FileReader()
|
||||
var promise = fileReaderReady(reader)
|
||||
reader.readAsText(blob)
|
||||
return promise
|
||||
}
|
||||
|
||||
function readArrayBufferAsText(buf) {
|
||||
var view = new Uint8Array(buf)
|
||||
var chars = new Array(view.length)
|
||||
|
||||
for (var i = 0; i < view.length; i++) {
|
||||
chars[i] = String.fromCharCode(view[i])
|
||||
}
|
||||
return chars.join('')
|
||||
}
|
||||
|
||||
function bufferClone(buf) {
|
||||
if (buf.slice) {
|
||||
return buf.slice(0)
|
||||
} else {
|
||||
var view = new Uint8Array(buf.byteLength)
|
||||
view.set(new Uint8Array(buf))
|
||||
return view.buffer
|
||||
}
|
||||
}
|
||||
|
||||
function Body() {
|
||||
this.bodyUsed = false
|
||||
|
||||
this._initBody = function(body) {
|
||||
this._bodyInit = body
|
||||
if (!body) {
|
||||
this._bodyText = ''
|
||||
} else if (typeof body === 'string') {
|
||||
this._bodyText = body
|
||||
} else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
|
||||
this._bodyBlob = body
|
||||
} else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
|
||||
this._bodyFormData = body
|
||||
} else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
|
||||
this._bodyText = body.toString()
|
||||
} else if (support.arrayBuffer && support.blob && isDataView(body)) {
|
||||
this._bodyArrayBuffer = bufferClone(body.buffer)
|
||||
// IE 10-11 can't handle a DataView body.
|
||||
this._bodyInit = new Blob([this._bodyArrayBuffer])
|
||||
} else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {
|
||||
this._bodyArrayBuffer = bufferClone(body)
|
||||
} else {
|
||||
throw new Error('unsupported BodyInit type')
|
||||
}
|
||||
|
||||
if (!this.headers.get('content-type')) {
|
||||
if (typeof body === 'string') {
|
||||
this.headers.set('content-type', 'text/plain;charset=UTF-8')
|
||||
} else if (this._bodyBlob && this._bodyBlob.type) {
|
||||
this.headers.set('content-type', this._bodyBlob.type)
|
||||
} else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
|
||||
this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (support.blob) {
|
||||
this.blob = function() {
|
||||
var rejected = consumed(this)
|
||||
if (rejected) {
|
||||
return rejected
|
||||
}
|
||||
|
||||
if (this._bodyBlob) {
|
||||
return Promise.resolve(this._bodyBlob)
|
||||
} else if (this._bodyArrayBuffer) {
|
||||
return Promise.resolve(new Blob([this._bodyArrayBuffer]))
|
||||
} else if (this._bodyFormData) {
|
||||
throw new Error('could not read FormData body as blob')
|
||||
} else {
|
||||
return Promise.resolve(new Blob([this._bodyText]))
|
||||
}
|
||||
}
|
||||
|
||||
this.arrayBuffer = function() {
|
||||
if (this._bodyArrayBuffer) {
|
||||
return consumed(this) || Promise.resolve(this._bodyArrayBuffer)
|
||||
} else {
|
||||
return this.blob().then(readBlobAsArrayBuffer)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.text = function() {
|
||||
var rejected = consumed(this)
|
||||
if (rejected) {
|
||||
return rejected
|
||||
}
|
||||
|
||||
if (this._bodyBlob) {
|
||||
return readBlobAsText(this._bodyBlob)
|
||||
} else if (this._bodyArrayBuffer) {
|
||||
return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))
|
||||
} else if (this._bodyFormData) {
|
||||
throw new Error('could not read FormData body as text')
|
||||
} else {
|
||||
return Promise.resolve(this._bodyText)
|
||||
}
|
||||
}
|
||||
|
||||
if (support.formData) {
|
||||
this.formData = function() {
|
||||
return this.text().then(decode)
|
||||
}
|
||||
}
|
||||
|
||||
this.json = function() {
|
||||
return this.text().then(JSON.parse)
|
||||
}
|
||||
|
||||
return this
|
||||
}
|
||||
|
||||
// HTTP methods whose capitalization should be normalized
|
||||
var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']
|
||||
|
||||
function normalizeMethod(method) {
|
||||
var upcased = method.toUpperCase()
|
||||
return (methods.indexOf(upcased) > -1) ? upcased : method
|
||||
}
|
||||
|
||||
function Request(input, options) {
|
||||
options = options || {}
|
||||
var body = options.body
|
||||
|
||||
if (input instanceof Request) {
|
||||
if (input.bodyUsed) {
|
||||
throw new TypeError('Already read')
|
||||
}
|
||||
this.url = input.url
|
||||
this.credentials = input.credentials
|
||||
if (!options.headers) {
|
||||
this.headers = new Headers(input.headers)
|
||||
}
|
||||
this.method = input.method
|
||||
this.mode = input.mode
|
||||
if (!body && input._bodyInit != null) {
|
||||
body = input._bodyInit
|
||||
input.bodyUsed = true
|
||||
}
|
||||
} else {
|
||||
this.url = String(input)
|
||||
}
|
||||
|
||||
this.credentials = options.credentials || this.credentials || 'omit'
|
||||
if (options.headers || !this.headers) {
|
||||
this.headers = new Headers(options.headers)
|
||||
}
|
||||
this.method = normalizeMethod(options.method || this.method || 'GET')
|
||||
this.mode = options.mode || this.mode || null
|
||||
this.referrer = null
|
||||
|
||||
if ((this.method === 'GET' || this.method === 'HEAD') && body) {
|
||||
throw new TypeError('Body not allowed for GET or HEAD requests')
|
||||
}
|
||||
this._initBody(body)
|
||||
}
|
||||
|
||||
Request.prototype.clone = function() {
|
||||
return new Request(this, { body: this._bodyInit })
|
||||
}
|
||||
|
||||
function decode(body) {
|
||||
var form = new FormData()
|
||||
body.trim().split('&').forEach(function(bytes) {
|
||||
if (bytes) {
|
||||
var split = bytes.split('=')
|
||||
var name = split.shift().replace(/\+/g, ' ')
|
||||
var value = split.join('=').replace(/\+/g, ' ')
|
||||
form.append(decodeURIComponent(name), decodeURIComponent(value))
|
||||
}
|
||||
})
|
||||
return form
|
||||
}
|
||||
|
||||
function parseHeaders(rawHeaders) {
|
||||
var headers = new Headers()
|
||||
rawHeaders.split(/\r?\n/).forEach(function(line) {
|
||||
var parts = line.split(':')
|
||||
var key = parts.shift().trim()
|
||||
if (key) {
|
||||
var value = parts.join(':').trim()
|
||||
headers.append(key, value)
|
||||
}
|
||||
})
|
||||
return headers
|
||||
}
|
||||
|
||||
Body.call(Request.prototype)
|
||||
|
||||
function Response(bodyInit, options) {
|
||||
if (!options) {
|
||||
options = {}
|
||||
}
|
||||
|
||||
this.type = 'default'
|
||||
this.status = 'status' in options ? options.status : 200
|
||||
this.ok = this.status >= 200 && this.status < 300
|
||||
this.statusText = 'statusText' in options ? options.statusText : 'OK'
|
||||
this.headers = new Headers(options.headers)
|
||||
this.url = options.url || ''
|
||||
this._initBody(bodyInit)
|
||||
}
|
||||
|
||||
Body.call(Response.prototype)
|
||||
|
||||
Response.prototype.clone = function() {
|
||||
return new Response(this._bodyInit, {
|
||||
status: this.status,
|
||||
statusText: this.statusText,
|
||||
headers: new Headers(this.headers),
|
||||
url: this.url
|
||||
})
|
||||
}
|
||||
|
||||
Response.error = function() {
|
||||
var response = new Response(null, {status: 0, statusText: ''})
|
||||
response.type = 'error'
|
||||
return response
|
||||
}
|
||||
|
||||
var redirectStatuses = [301, 302, 303, 307, 308]
|
||||
|
||||
Response.redirect = function(url, status) {
|
||||
if (redirectStatuses.indexOf(status) === -1) {
|
||||
throw new RangeError('Invalid status code')
|
||||
}
|
||||
|
||||
return new Response(null, {status: status, headers: {location: url}})
|
||||
}
|
||||
|
||||
self.Headers = Headers
|
||||
self.Request = Request
|
||||
self.Response = Response
|
||||
|
||||
self.fetch = function(input, init) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
var request = new Request(input, init)
|
||||
var xhr = new XMLHttpRequest()
|
||||
|
||||
xhr.onload = function() {
|
||||
var options = {
|
||||
status: xhr.status,
|
||||
statusText: xhr.statusText,
|
||||
headers: parseHeaders(xhr.getAllResponseHeaders() || '')
|
||||
}
|
||||
options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')
|
||||
var body = 'response' in xhr ? xhr.response : xhr.responseText
|
||||
resolve(new Response(body, options))
|
||||
}
|
||||
|
||||
xhr.onerror = function() {
|
||||
reject(new TypeError('Network request failed'))
|
||||
}
|
||||
|
||||
xhr.ontimeout = function() {
|
||||
reject(new TypeError('Network request failed'))
|
||||
}
|
||||
|
||||
xhr.open(request.method, request.url, true)
|
||||
|
||||
if (request.credentials === 'include') {
|
||||
xhr.withCredentials = true
|
||||
}
|
||||
|
||||
if ('responseType' in xhr && support.blob) {
|
||||
xhr.responseType = 'blob'
|
||||
}
|
||||
|
||||
request.headers.forEach(function(value, name) {
|
||||
xhr.setRequestHeader(name, value)
|
||||
})
|
||||
|
||||
xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)
|
||||
})
|
||||
}
|
||||
self.fetch.polyfill = true
|
||||
})(typeof self !== 'undefined' ? self : this);
|
||||
@@ -1,311 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
(function() {
|
||||
function toArray(arr) {
|
||||
return Array.prototype.slice.call(arr);
|
||||
}
|
||||
|
||||
function promisifyRequest(request) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
request.onsuccess = function() {
|
||||
resolve(request.result);
|
||||
};
|
||||
|
||||
request.onerror = function() {
|
||||
reject(request.error);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function promisifyRequestCall(obj, method, args) {
|
||||
var request;
|
||||
var p = new Promise(function(resolve, reject) {
|
||||
request = obj[method].apply(obj, args);
|
||||
promisifyRequest(request).then(resolve, reject);
|
||||
});
|
||||
|
||||
p.request = request;
|
||||
return p;
|
||||
}
|
||||
|
||||
function promisifyCursorRequestCall(obj, method, args) {
|
||||
var p = promisifyRequestCall(obj, method, args);
|
||||
return p.then(function(value) {
|
||||
if (!value) return;
|
||||
return new Cursor(value, p.request);
|
||||
});
|
||||
}
|
||||
|
||||
function proxyProperties(ProxyClass, targetProp, properties) {
|
||||
properties.forEach(function(prop) {
|
||||
Object.defineProperty(ProxyClass.prototype, prop, {
|
||||
get: function() {
|
||||
return this[targetProp][prop];
|
||||
},
|
||||
set: function(val) {
|
||||
this[targetProp][prop] = val;
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function proxyRequestMethods(ProxyClass, targetProp, Constructor, properties) {
|
||||
properties.forEach(function(prop) {
|
||||
if (!(prop in Constructor.prototype)) return;
|
||||
ProxyClass.prototype[prop] = function() {
|
||||
return promisifyRequestCall(this[targetProp], prop, arguments);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function proxyMethods(ProxyClass, targetProp, Constructor, properties) {
|
||||
properties.forEach(function(prop) {
|
||||
if (!(prop in Constructor.prototype)) return;
|
||||
ProxyClass.prototype[prop] = function() {
|
||||
return this[targetProp][prop].apply(this[targetProp], arguments);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function proxyCursorRequestMethods(ProxyClass, targetProp, Constructor, properties) {
|
||||
properties.forEach(function(prop) {
|
||||
if (!(prop in Constructor.prototype)) return;
|
||||
ProxyClass.prototype[prop] = function() {
|
||||
return promisifyCursorRequestCall(this[targetProp], prop, arguments);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function Index(index) {
|
||||
this._index = index;
|
||||
}
|
||||
|
||||
proxyProperties(Index, '_index', [
|
||||
'name',
|
||||
'keyPath',
|
||||
'multiEntry',
|
||||
'unique'
|
||||
]);
|
||||
|
||||
proxyRequestMethods(Index, '_index', IDBIndex, [
|
||||
'get',
|
||||
'getKey',
|
||||
'getAll',
|
||||
'getAllKeys',
|
||||
'count'
|
||||
]);
|
||||
|
||||
proxyCursorRequestMethods(Index, '_index', IDBIndex, [
|
||||
'openCursor',
|
||||
'openKeyCursor'
|
||||
]);
|
||||
|
||||
function Cursor(cursor, request) {
|
||||
this._cursor = cursor;
|
||||
this._request = request;
|
||||
}
|
||||
|
||||
proxyProperties(Cursor, '_cursor', [
|
||||
'direction',
|
||||
'key',
|
||||
'primaryKey',
|
||||
'value'
|
||||
]);
|
||||
|
||||
proxyRequestMethods(Cursor, '_cursor', IDBCursor, [
|
||||
'update',
|
||||
'delete'
|
||||
]);
|
||||
|
||||
// proxy 'next' methods
|
||||
['advance', 'continue', 'continuePrimaryKey'].forEach(function(methodName) {
|
||||
if (!(methodName in IDBCursor.prototype)) return;
|
||||
Cursor.prototype[methodName] = function() {
|
||||
var cursor = this;
|
||||
var args = arguments;
|
||||
return Promise.resolve().then(function() {
|
||||
cursor._cursor[methodName].apply(cursor._cursor, args);
|
||||
return promisifyRequest(cursor._request).then(function(value) {
|
||||
if (!value) return;
|
||||
return new Cursor(value, cursor._request);
|
||||
});
|
||||
});
|
||||
};
|
||||
});
|
||||
|
||||
function ObjectStore(store) {
|
||||
this._store = store;
|
||||
}
|
||||
|
||||
ObjectStore.prototype.createIndex = function() {
|
||||
return new Index(this._store.createIndex.apply(this._store, arguments));
|
||||
};
|
||||
|
||||
ObjectStore.prototype.index = function() {
|
||||
return new Index(this._store.index.apply(this._store, arguments));
|
||||
};
|
||||
|
||||
proxyProperties(ObjectStore, '_store', [
|
||||
'name',
|
||||
'keyPath',
|
||||
'indexNames',
|
||||
'autoIncrement'
|
||||
]);
|
||||
|
||||
proxyRequestMethods(ObjectStore, '_store', IDBObjectStore, [
|
||||
'put',
|
||||
'add',
|
||||
'delete',
|
||||
'clear',
|
||||
'get',
|
||||
'getAll',
|
||||
'getKey',
|
||||
'getAllKeys',
|
||||
'count'
|
||||
]);
|
||||
|
||||
proxyCursorRequestMethods(ObjectStore, '_store', IDBObjectStore, [
|
||||
'openCursor',
|
||||
'openKeyCursor'
|
||||
]);
|
||||
|
||||
proxyMethods(ObjectStore, '_store', IDBObjectStore, [
|
||||
'deleteIndex'
|
||||
]);
|
||||
|
||||
function Transaction(idbTransaction) {
|
||||
this._tx = idbTransaction;
|
||||
this.complete = new Promise(function(resolve, reject) {
|
||||
idbTransaction.oncomplete = function() {
|
||||
resolve();
|
||||
};
|
||||
idbTransaction.onerror = function() {
|
||||
reject(idbTransaction.error);
|
||||
};
|
||||
idbTransaction.onabort = function() {
|
||||
reject(idbTransaction.error);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
Transaction.prototype.objectStore = function() {
|
||||
return new ObjectStore(this._tx.objectStore.apply(this._tx, arguments));
|
||||
};
|
||||
|
||||
proxyProperties(Transaction, '_tx', [
|
||||
'objectStoreNames',
|
||||
'mode'
|
||||
]);
|
||||
|
||||
proxyMethods(Transaction, '_tx', IDBTransaction, [
|
||||
'abort'
|
||||
]);
|
||||
|
||||
function UpgradeDB(db, oldVersion, transaction) {
|
||||
this._db = db;
|
||||
this.oldVersion = oldVersion;
|
||||
this.transaction = new Transaction(transaction);
|
||||
}
|
||||
|
||||
UpgradeDB.prototype.createObjectStore = function() {
|
||||
return new ObjectStore(this._db.createObjectStore.apply(this._db, arguments));
|
||||
};
|
||||
|
||||
proxyProperties(UpgradeDB, '_db', [
|
||||
'name',
|
||||
'version',
|
||||
'objectStoreNames'
|
||||
]);
|
||||
|
||||
proxyMethods(UpgradeDB, '_db', IDBDatabase, [
|
||||
'deleteObjectStore',
|
||||
'close'
|
||||
]);
|
||||
|
||||
function DB(db) {
|
||||
this._db = db;
|
||||
}
|
||||
|
||||
DB.prototype.transaction = function() {
|
||||
return new Transaction(this._db.transaction.apply(this._db, arguments));
|
||||
};
|
||||
|
||||
proxyProperties(DB, '_db', [
|
||||
'name',
|
||||
'version',
|
||||
'objectStoreNames'
|
||||
]);
|
||||
|
||||
proxyMethods(DB, '_db', IDBDatabase, [
|
||||
'close'
|
||||
]);
|
||||
|
||||
// Add cursor iterators
|
||||
// TODO: remove this once browsers do the right thing with promises
|
||||
['openCursor', 'openKeyCursor'].forEach(function(funcName) {
|
||||
[ObjectStore, Index].forEach(function(Constructor) {
|
||||
Constructor.prototype[funcName.replace('open', 'iterate')] = function() {
|
||||
var args = toArray(arguments);
|
||||
var callback = args[args.length - 1];
|
||||
var nativeObject = this._store || this._index;
|
||||
var request = nativeObject[funcName].apply(nativeObject, args.slice(0, -1));
|
||||
request.onsuccess = function() {
|
||||
callback(request.result);
|
||||
};
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
// polyfill getAll
|
||||
[Index, ObjectStore].forEach(function(Constructor) {
|
||||
if (Constructor.prototype.getAll) return;
|
||||
Constructor.prototype.getAll = function(query, count) {
|
||||
var instance = this;
|
||||
var items = [];
|
||||
|
||||
return new Promise(function(resolve) {
|
||||
instance.iterateCursor(query, function(cursor) {
|
||||
if (!cursor) {
|
||||
resolve(items);
|
||||
return;
|
||||
}
|
||||
items.push(cursor.value);
|
||||
|
||||
if (count !== undefined && items.length == count) {
|
||||
resolve(items);
|
||||
return;
|
||||
}
|
||||
cursor.continue();
|
||||
});
|
||||
});
|
||||
};
|
||||
});
|
||||
|
||||
var exp = {
|
||||
open: function(name, version, upgradeCallback) {
|
||||
var p = promisifyRequestCall(indexedDB, 'open', [name, version]);
|
||||
var request = p.request;
|
||||
|
||||
request.onupgradeneeded = function(event) {
|
||||
if (upgradeCallback) {
|
||||
upgradeCallback(new UpgradeDB(request.result, event.oldVersion, request.transaction));
|
||||
}
|
||||
};
|
||||
|
||||
return p.then(function(db) {
|
||||
return new DB(db);
|
||||
});
|
||||
},
|
||||
delete: function(name) {
|
||||
return promisifyRequestCall(indexedDB, 'deleteDatabase', [name]);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof module !== 'undefined') {
|
||||
module.exports = exp;
|
||||
module.exports.default = module.exports;
|
||||
}
|
||||
else {
|
||||
self.idb = exp;
|
||||
}
|
||||
}());
|
||||
10
src/assets/js/material.min.js
vendored
10
src/assets/js/material.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -1,372 +0,0 @@
|
||||
/**
|
||||
* setImmediate polyfill v1.0.1, supports IE9+
|
||||
* © 2014–2015 Dmitry Korobkin
|
||||
* Released under the MIT license
|
||||
* github.com/Octane/setImmediate
|
||||
*/
|
||||
window.setImmediate || function () {'use strict';
|
||||
|
||||
var uid = 0;
|
||||
var storage = {};
|
||||
var firstCall = true;
|
||||
var slice = Array.prototype.slice;
|
||||
var message = 'setImmediatePolyfillMessage';
|
||||
|
||||
function fastApply(args) {
|
||||
var func = args[0];
|
||||
switch (args.length) {
|
||||
case 1:
|
||||
return func();
|
||||
case 2:
|
||||
return func(args[1]);
|
||||
case 3:
|
||||
return func(args[1], args[2]);
|
||||
}
|
||||
return func.apply(window, slice.call(args, 1));
|
||||
}
|
||||
|
||||
function callback(event) {
|
||||
var key = event.data;
|
||||
var data;
|
||||
if (typeof key == 'string' && key.indexOf(message) == 0) {
|
||||
data = storage[key];
|
||||
if (data) {
|
||||
delete storage[key];
|
||||
fastApply(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
window.setImmediate = function setImmediate() {
|
||||
var id = uid++;
|
||||
var key = message + id;
|
||||
var i = arguments.length;
|
||||
var args = new Array(i);
|
||||
while (i--) {
|
||||
args[i] = arguments[i];
|
||||
}
|
||||
storage[key] = args;
|
||||
if (firstCall) {
|
||||
firstCall = false;
|
||||
window.addEventListener('message', callback);
|
||||
}
|
||||
window.postMessage(key, '*');
|
||||
return id;
|
||||
};
|
||||
|
||||
window.clearImmediate = function clearImmediate(id) {
|
||||
delete storage[message + id];
|
||||
};
|
||||
|
||||
}();
|
||||
|
||||
/**
|
||||
* Promise polyfill v1.0.10
|
||||
* requires setImmediate
|
||||
*
|
||||
* © 2014–2015 Dmitry Korobkin
|
||||
* Released under the MIT license
|
||||
* github.com/Octane/Promise
|
||||
*/
|
||||
(function (global) {'use strict';
|
||||
|
||||
var STATUS = '[[PromiseStatus]]';
|
||||
var VALUE = '[[PromiseValue]]';
|
||||
var ON_FUlFILLED = '[[OnFulfilled]]';
|
||||
var ON_REJECTED = '[[OnRejected]]';
|
||||
var ORIGINAL_ERROR = '[[OriginalError]]';
|
||||
var PENDING = 'pending';
|
||||
var INTERNAL_PENDING = 'internal pending';
|
||||
var FULFILLED = 'fulfilled';
|
||||
var REJECTED = 'rejected';
|
||||
var NOT_ARRAY = 'not an array.';
|
||||
var REQUIRES_NEW = 'constructor Promise requires "new".';
|
||||
var CHAINING_CYCLE = 'then() cannot return same Promise that it resolves.';
|
||||
|
||||
var setImmediate = global.setImmediate || require('timers').setImmediate;
|
||||
var isArray = Array.isArray || function (anything) {
|
||||
return Object.prototype.toString.call(anything) == '[object Array]';
|
||||
};
|
||||
|
||||
function InternalError(originalError) {
|
||||
this[ORIGINAL_ERROR] = originalError;
|
||||
}
|
||||
|
||||
function isInternalError(anything) {
|
||||
return anything instanceof InternalError;
|
||||
}
|
||||
|
||||
function isObject(anything) {
|
||||
//Object.create(null) instanceof Object → false
|
||||
return Object(anything) === anything;
|
||||
}
|
||||
|
||||
function isCallable(anything) {
|
||||
return typeof anything == 'function';
|
||||
}
|
||||
|
||||
function isPromise(anything) {
|
||||
return anything instanceof Promise;
|
||||
}
|
||||
|
||||
function identity(value) {
|
||||
return value;
|
||||
}
|
||||
|
||||
function thrower(reason) {
|
||||
throw reason;
|
||||
}
|
||||
|
||||
function enqueue(promise, onFulfilled, onRejected) {
|
||||
if (!promise[ON_FUlFILLED]) {
|
||||
promise[ON_FUlFILLED] = [];
|
||||
promise[ON_REJECTED] = [];
|
||||
}
|
||||
promise[ON_FUlFILLED].push(onFulfilled);
|
||||
promise[ON_REJECTED].push(onRejected);
|
||||
}
|
||||
|
||||
function clearAllQueues(promise) {
|
||||
delete promise[ON_FUlFILLED];
|
||||
delete promise[ON_REJECTED];
|
||||
}
|
||||
|
||||
function callEach(queue) {
|
||||
var i;
|
||||
var length = queue.length;
|
||||
for (i = 0; i < length; i++) {
|
||||
queue[i]();
|
||||
}
|
||||
}
|
||||
|
||||
function call(resolve, reject, value) {
|
||||
var anything = toPromise(value);
|
||||
if (isPromise(anything)) {
|
||||
anything.then(resolve, reject);
|
||||
} else if (isInternalError(anything)) {
|
||||
reject(anything[ORIGINAL_ERROR]);
|
||||
} else {
|
||||
resolve(value);
|
||||
}
|
||||
}
|
||||
|
||||
function toPromise(anything) {
|
||||
var then;
|
||||
if (isPromise(anything)) {
|
||||
return anything;
|
||||
}
|
||||
if(isObject(anything)) {
|
||||
try {
|
||||
then = anything.then;
|
||||
} catch (error) {
|
||||
return new InternalError(error);
|
||||
}
|
||||
if (isCallable(then)) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
setImmediate(function () {
|
||||
try {
|
||||
then.call(anything, resolve, reject);
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function resolvePromise(promise, resolver) {
|
||||
function resolve(value) {
|
||||
if (promise[STATUS] == PENDING) {
|
||||
fulfillPromise(promise, value);
|
||||
}
|
||||
}
|
||||
function reject(reason) {
|
||||
if (promise[STATUS] == PENDING) {
|
||||
rejectPromise(promise, reason);
|
||||
}
|
||||
}
|
||||
try {
|
||||
resolver(resolve, reject);
|
||||
} catch(error) {
|
||||
reject(error);
|
||||
}
|
||||
}
|
||||
|
||||
function fulfillPromise(promise, value) {
|
||||
var queue;
|
||||
var anything = toPromise(value);
|
||||
if (isPromise(anything)) {
|
||||
promise[STATUS] = INTERNAL_PENDING;
|
||||
anything.then(
|
||||
function (value) {
|
||||
fulfillPromise(promise, value);
|
||||
},
|
||||
function (reason) {
|
||||
rejectPromise(promise, reason);
|
||||
}
|
||||
);
|
||||
} else if (isInternalError(anything)) {
|
||||
rejectPromise(promise, anything[ORIGINAL_ERROR]);
|
||||
} else {
|
||||
promise[STATUS] = FULFILLED;
|
||||
promise[VALUE] = value;
|
||||
queue = promise[ON_FUlFILLED];
|
||||
if (queue && queue.length) {
|
||||
clearAllQueues(promise);
|
||||
callEach(queue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function rejectPromise(promise, reason) {
|
||||
var queue = promise[ON_REJECTED];
|
||||
promise[STATUS] = REJECTED;
|
||||
promise[VALUE] = reason;
|
||||
if (queue && queue.length) {
|
||||
clearAllQueues(promise);
|
||||
callEach(queue);
|
||||
}
|
||||
}
|
||||
|
||||
function Promise(resolver) {
|
||||
var promise = this;
|
||||
if (!isPromise(promise)) {
|
||||
throw new TypeError(REQUIRES_NEW);
|
||||
}
|
||||
promise[STATUS] = PENDING;
|
||||
promise[VALUE] = undefined;
|
||||
resolvePromise(promise, resolver);
|
||||
}
|
||||
|
||||
Promise.prototype.then = function (onFulfilled, onRejected) {
|
||||
var promise = this;
|
||||
var nextPromise;
|
||||
onFulfilled = isCallable(onFulfilled) ? onFulfilled : identity;
|
||||
onRejected = isCallable(onRejected) ? onRejected : thrower;
|
||||
nextPromise = new Promise(function (resolve, reject) {
|
||||
function tryCall(func) {
|
||||
var value;
|
||||
try {
|
||||
value = func(promise[VALUE]);
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
return;
|
||||
}
|
||||
if (value === nextPromise) {
|
||||
reject(new TypeError(CHAINING_CYCLE));
|
||||
} else {
|
||||
call(resolve, reject, value);
|
||||
}
|
||||
}
|
||||
function asyncOnFulfilled() {
|
||||
setImmediate(tryCall, onFulfilled);
|
||||
}
|
||||
function asyncOnRejected() {
|
||||
setImmediate(tryCall, onRejected);
|
||||
}
|
||||
switch (promise[STATUS]) {
|
||||
case FULFILLED:
|
||||
asyncOnFulfilled();
|
||||
break;
|
||||
case REJECTED:
|
||||
asyncOnRejected();
|
||||
break;
|
||||
default:
|
||||
enqueue(promise, asyncOnFulfilled, asyncOnRejected);
|
||||
}
|
||||
});
|
||||
return nextPromise;
|
||||
};
|
||||
|
||||
Promise.prototype['catch'] = function (onRejected) {
|
||||
return this.then(identity, onRejected);
|
||||
};
|
||||
|
||||
Promise.resolve = function (value) {
|
||||
var anything = toPromise(value);
|
||||
if (isPromise(anything)) {
|
||||
return anything;
|
||||
}
|
||||
return new Promise(function (resolve, reject) {
|
||||
if (isInternalError(anything)) {
|
||||
reject(anything[ORIGINAL_ERROR]);
|
||||
} else {
|
||||
resolve(value);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Promise.reject = function (reason) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
reject(reason);
|
||||
});
|
||||
};
|
||||
|
||||
Promise.race = function (values) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
var i;
|
||||
var length;
|
||||
if (isArray(values)) {
|
||||
length = values.length;
|
||||
for (i = 0; i < length; i++) {
|
||||
call(resolve, reject, values[i]);
|
||||
}
|
||||
} else {
|
||||
reject(new TypeError(NOT_ARRAY));
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Promise.all = function (values) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
var fulfilledCount = 0;
|
||||
var promiseCount = 0;
|
||||
var anything;
|
||||
var length;
|
||||
var value;
|
||||
var i;
|
||||
if (isArray(values)) {
|
||||
values = values.slice(0);
|
||||
length = values.length;
|
||||
for (i = 0; i < length; i++) {
|
||||
value = values[i];
|
||||
anything = toPromise(value);
|
||||
if (isPromise(anything)) {
|
||||
promiseCount++;
|
||||
anything.then(
|
||||
function (index) {
|
||||
return function (value) {
|
||||
values[index] = value;
|
||||
fulfilledCount++;
|
||||
if (fulfilledCount == promiseCount) {
|
||||
resolve(values);
|
||||
}
|
||||
};
|
||||
}(i),
|
||||
reject
|
||||
);
|
||||
} else if (isInternalError(anything)) {
|
||||
reject(anything[ORIGINAL_ERROR]);
|
||||
} else {
|
||||
//[1, , 3] → [1, undefined, 3]
|
||||
values[i] = value;
|
||||
}
|
||||
}
|
||||
if (!promiseCount) {
|
||||
resolve(values);
|
||||
}
|
||||
} else {
|
||||
reject(new TypeError(NOT_ARRAY));
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
if (typeof module != 'undefined' && module.exports) {
|
||||
module.exports = global.Promise || Promise;
|
||||
} else if (!global.Promise) {
|
||||
global.Promise = Promise;
|
||||
}
|
||||
|
||||
}(this));
|
||||
@@ -1,126 +0,0 @@
|
||||
let idbKeyval = (() => {
|
||||
let db;
|
||||
// console.log('idbKeyval...')
|
||||
|
||||
function getDB() {
|
||||
if (!db) {
|
||||
// console.log('CREO DB STORAGE JS !')
|
||||
db = new Promise((resolve, reject) => {
|
||||
const openreq = indexedDB.open('mydb3', 11);
|
||||
|
||||
openreq.onerror = () => {
|
||||
reject(openreq.error);
|
||||
};
|
||||
|
||||
openreq.onupgradeneeded = () => {
|
||||
// First time setup: create an empty object store
|
||||
openreq.result.createObjectStore('todos', { keyPath: '_id' });
|
||||
openreq.result.createObjectStore('categories', { keyPath: '_id' });
|
||||
openreq.result.createObjectStore('sync_todos', { keyPath: '_id' });
|
||||
openreq.result.createObjectStore('sync_todos_patch', { keyPath: '_id' });
|
||||
openreq.result.createObjectStore('delete_todos', { keyPath: '_id' });
|
||||
openreq.result.createObjectStore('config', { keyPath: '_id' });
|
||||
openreq.result.createObjectStore('swmsg', { keyPath: '_id' });
|
||||
};
|
||||
|
||||
openreq.onsuccess = () => {
|
||||
resolve(openreq.result);
|
||||
};
|
||||
});
|
||||
}
|
||||
return db;
|
||||
}
|
||||
|
||||
async function withStore(type, table, callback, ) {
|
||||
const db = await getDB();
|
||||
return new Promise((resolve, reject) => {
|
||||
const transaction = db.transaction(table, type);
|
||||
transaction.oncomplete = () => resolve();
|
||||
transaction.onerror = () => reject(transaction.error);
|
||||
callback(transaction.objectStore(table));
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
async get(key) {
|
||||
let req;
|
||||
await withStore('readonly', 'keyval', store => {
|
||||
req = store.get(key);
|
||||
});
|
||||
return req.result;
|
||||
},
|
||||
|
||||
// jsonCopy(src) {
|
||||
// return JSON.parse(JSON.stringify(src));
|
||||
// },
|
||||
|
||||
// contains(a, b) {
|
||||
// // array matches
|
||||
// if (Array.isArray(b)) {
|
||||
// return b.some(x => a.indexOf(x) > -1);
|
||||
// }
|
||||
// // string match
|
||||
// return a.indexOf(b) > -1;
|
||||
// },
|
||||
|
||||
async getdata(table, key) {
|
||||
let req;
|
||||
|
||||
await withStore('readonly', table, store => {
|
||||
// console.log('store', store, 'key', key)
|
||||
req = store.get(key);
|
||||
});
|
||||
|
||||
return req.result;
|
||||
},
|
||||
async getalldata(table) {
|
||||
let req;
|
||||
await withStore('readonly', table, store => {
|
||||
req = store.getAll();
|
||||
});
|
||||
return req.result;
|
||||
},
|
||||
async set(key, value) {
|
||||
let req;
|
||||
await withStore('readwrite', 'keyval', store => {
|
||||
req = store.put(value, key);
|
||||
});
|
||||
return req.result;
|
||||
},
|
||||
async setdata(table, value) {
|
||||
let req;
|
||||
// console.log('setdata', table, value)
|
||||
|
||||
await withStore('readwrite', table, store => {
|
||||
req = store.put(value);
|
||||
});
|
||||
return req.result;
|
||||
},
|
||||
async delete(key) {
|
||||
return await withStore('readwrite', 'keyval', store => {
|
||||
store.delete(key);
|
||||
});
|
||||
},
|
||||
async deletedata(table, key) {
|
||||
return await withStore('readwrite', table, store => {
|
||||
store.delete(key);
|
||||
});
|
||||
},
|
||||
async clearalldata(table) {
|
||||
// console.log('clearalldata', table)
|
||||
return await withStore('readwrite', table, store => {
|
||||
store.clear();
|
||||
});
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
// iOS add-to-homescreen is missing IDB, or at least it used to.
|
||||
// I haven't tested this in a while.
|
||||
if (!self.indexedDB) {
|
||||
idbKeyval = {
|
||||
get: key => Promise.resolve(localStorage.getItem(key)),
|
||||
set: (key, val) => Promise.resolve(localStorage.setItem(key, val)),
|
||||
delete: key => Promise.resolve(localStorage.removeItem(key))
|
||||
};
|
||||
}
|
||||
@@ -237,10 +237,10 @@
|
||||
}
|
||||
|
||||
public selectOpLang = [
|
||||
{ label: 'English', icon: 'fa-flag-us', value: 'enUs', image: '../assets/images/gb.png', short: 'EN' },
|
||||
// { label: 'German', icon: 'fa-flag-de', value: 'de', image: '../assets/images/de.png', short: 'DE' },
|
||||
{ label: 'Italiano', icon: 'fa-facebook', value: 'it', image: '../assets/images/it.png', short: 'IT' },
|
||||
{ label: 'Español', icon: 'fa-flag-es', value: 'esEs', image: '../assets/images/es.png', short: 'ES' }
|
||||
{ label: 'English', icon: 'fa-flag-us', value: 'enUs', image: '../statics/images/gb.png', short: 'EN' },
|
||||
// { label: 'German', icon: 'fa-flag-de', value: 'de', image: '../statics/images/de.png', short: 'DE' },
|
||||
{ label: 'Italiano', icon: 'fa-facebook', value: 'it', image: '../statics/images/it.png', short: 'IT' },
|
||||
{ label: 'Español', icon: 'fa-flag-es', value: 'esEs', image: '../statics/images/es.png', short: 'ES' }
|
||||
]
|
||||
|
||||
|
||||
@@ -329,7 +329,7 @@
|
||||
// dynamic import, so loading on demand only
|
||||
import(`quasar-framework/i18n/${mylangtopass}`).then(lang => {
|
||||
this.$q.i18n.set(lang.default)
|
||||
import(`src/assets/i18n`).then(function () {
|
||||
import(`src/statics/i18n`).then(function () {
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ export default class Logo extends Vue {
|
||||
logoimg: string = ''
|
||||
|
||||
created() {
|
||||
this.logoimg = 'assets/images/' + process.env.LOGO_REG
|
||||
this.logoimg = 'statics/images/' + process.env.LOGO_REG
|
||||
this.animate()
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ export default class Offline extends Vue {
|
||||
logoimg: string = ''
|
||||
|
||||
created() {
|
||||
this.logoimg = '/assets/images/' + process.env.LOGO_REG
|
||||
this.logoimg = '/statics/images/' + process.env.LOGO_REG
|
||||
this.animate()
|
||||
}
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ export default class Todo extends Vue {
|
||||
}
|
||||
|
||||
set showtype (value) {
|
||||
// console.log('showtype', value)
|
||||
console.log('showtype', value)
|
||||
GlobalStore.mutations.setShowType(value)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { UserStore } from "../store/Modules";
|
||||
import messages from "../assets/i18n";
|
||||
import messages from "../statics/i18n";
|
||||
|
||||
function translate(params) {
|
||||
let msg = params.split('.')
|
||||
|
||||
@@ -13,12 +13,12 @@
|
||||
<link rel="icon" href="<%= htmlWebpackPlugin.files.publicPath %>statics/icons/favicon.ico" type="image/x-icon">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="<%= htmlWebpackPlugin.files.publicPath %>statics/icons/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="<%= htmlWebpackPlugin.files.publicPath %>statics/icons/favicon-16x16.png">
|
||||
<link rel="stylesheet" type="text/css" href="<%= htmlWebpackPlugin.files.publicPath %>assets/css/dragula.css">
|
||||
<script defer src="<%= htmlWebpackPlugin.files.publicPath %>assets/js/material.min.js"></script>
|
||||
<!--<script src="<%= htmlWebpackPlugin.files.publicPath %>assets/js/promise.js"></script>-->
|
||||
<!--<script src="<%= htmlWebpackPlugin.files.publicPath %>assets/js/fetch.js"></script>-->
|
||||
<!--<script src="<%= htmlWebpackPlugin.files.publicPath %>assets/js/idb.js"></script>-->
|
||||
<!--<script src="<%= htmlWebpackPlugin.files.publicPath %>assets/js/storage.js"></script>-->
|
||||
<link rel="stylesheet" type="text/css" href="<%= htmlWebpackPlugin.files.publicPath %>statics/css/dragula.css">
|
||||
<script defer src="<%= htmlWebpackPlugin.files.publicPath %>statics/js/material.min.js"></script>
|
||||
<!--<script src="<%= htmlWebpackPlugin.files.publicPath %>statics/js/promise.js"></script>-->
|
||||
<!--<script src="<%= htmlWebpackPlugin.files.publicPath %>statics/js/fetch.js"></script>-->
|
||||
<!--<script src="<%= htmlWebpackPlugin.files.publicPath %>statics/js/idb.js"></script>-->
|
||||
<!--<script src="<%= htmlWebpackPlugin.files.publicPath %>statics/js/storage.js"></script>-->
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||
|
||||
</head>
|
||||
|
||||
12
src/middleware/auth.js
Normal file
12
src/middleware/auth.js
Normal file
@@ -0,0 +1,12 @@
|
||||
import { tools } from "../store/Modules/tools";
|
||||
|
||||
import { RouteNames } from '../router/route-names'
|
||||
|
||||
export default function auth({ next, router }) {
|
||||
const tok = tools.getItemLS(tools.localStorage.token)
|
||||
if (!tok) {
|
||||
return router.push({ name: RouteNames.login });
|
||||
}
|
||||
|
||||
return next();
|
||||
}
|
||||
@@ -8,8 +8,47 @@ export default ({ app, router, store, Vue }) => {
|
||||
// *** Per non permettere di accedere alle pagine in cui è necessario essere Loggati ! ***
|
||||
// ******************************************
|
||||
|
||||
/*
|
||||
// Creates a `nextMiddleware()` function which not only
|
||||
// runs the default `next()` callback but also triggers
|
||||
// the subsequent Middleware function.
|
||||
function nextFactory(context, middleware, index) {
|
||||
const subsequentMiddleware = middleware[index]
|
||||
// If no subsequent Middleware exists,
|
||||
// the default `next()` callback is returned.
|
||||
if (!subsequentMiddleware) return context.next
|
||||
|
||||
return (...parameters) => {
|
||||
// Run the default Vue Router `next()` callback first.
|
||||
context.next(...parameters)
|
||||
// Then run the subsequent Middleware with a new
|
||||
// `nextMiddleware()` callback.
|
||||
const nextMiddleware = nextFactory(context, middleware, index + 1)
|
||||
subsequentMiddleware({ ...context, next: nextMiddleware })
|
||||
};
|
||||
}
|
||||
|
||||
router.beforeEach((to, from, next) => {
|
||||
if (to.meta.middleware) {
|
||||
const middleware = Array.isArray(to.meta.middleware)
|
||||
? to.meta.middleware
|
||||
: [to.meta.middleware];
|
||||
|
||||
const context = {
|
||||
from,
|
||||
next,
|
||||
router,
|
||||
to,
|
||||
};
|
||||
const nextMiddleware = nextFactory(context, middleware, 1)
|
||||
|
||||
return middleware[0]({ ...context, next: nextMiddleware })
|
||||
}
|
||||
|
||||
return next()
|
||||
})
|
||||
|
||||
|
||||
/*router.beforeEach((to, from, next) => {
|
||||
var accessToken = store.state.session.userSession.accessToken
|
||||
// ESTANDO LOGEADO
|
||||
if (accessToken) {
|
||||
@@ -45,6 +84,6 @@ export default ({ app, router, store, Vue }) => {
|
||||
next('/')
|
||||
}
|
||||
}
|
||||
})
|
||||
*/
|
||||
})*/
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// src/plugins/i18n.js
|
||||
import VueI18n from 'vue-i18n';
|
||||
import messages from 'src/assets/i18n';
|
||||
import messages from 'src/statics/i18n';
|
||||
import { tools } from "../store/Modules/tools";
|
||||
|
||||
export default ({ app, store, Vue }) => {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
}
|
||||
|
||||
.landing {
|
||||
background: #000 url(../../assets/images/cover.jpg) no-repeat 50% fixed;
|
||||
background: #000 url(../../statics/images/cover.jpg) no-repeat 50% fixed;
|
||||
background-size: cover
|
||||
}
|
||||
|
||||
@@ -142,7 +142,7 @@ body.mobile .landing:before {
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: -1;
|
||||
background: #000 url(../../assets/images/cover.jpg) 50%;
|
||||
background: #000 url(../../statics/images/cover.jpg) 50%;
|
||||
background-size: cover
|
||||
}
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ export default class Home extends Vue {
|
||||
options = {
|
||||
body: 'You successfully subscribed to our Notification service!',
|
||||
icon: '/statics/icons/app-icon-96x96.png',
|
||||
image: '/assets/images/sf-boat.jpg',
|
||||
image: '/statics/images/sf-boat.jpg',
|
||||
dir: 'ltr',
|
||||
lang: 'enUs', // BCP 47,
|
||||
vibrate: [100, 50, 200],
|
||||
@@ -169,7 +169,7 @@ export default class Home extends Vue {
|
||||
options = {
|
||||
body: mythis.$t('notification.subscribed'),
|
||||
icon: '/statics/icons/android-chrome-192x192.png',
|
||||
image: '/assets/images/freeplanet.png',
|
||||
image: '/statics/images/freeplanet.png',
|
||||
dir: 'ltr',
|
||||
lang: 'enUs', // BCP 47,
|
||||
vibrate: [100, 50, 200],
|
||||
|
||||
@@ -18,16 +18,6 @@
|
||||
<div class="text-subtitle2 shadow text-italic q-pl-sm ">{{$t('msg.sottoTitoloApp3')}}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<q-btn v-if="getPermission() !== 'granted'" class="enable-notifications shadow"
|
||||
color="primary" rounded
|
||||
size="lg"
|
||||
icon="notifications" @click="askfornotification"
|
||||
:label="$t('notification.ask')"/>
|
||||
<!--<q-btn v-if="getPermission() === 'granted'" class="enable-notifications" color="primary" rounded size="lg" icon="notifications" @click="showNotificationExample" label="Send Notification"/>-->
|
||||
<!--<q-btn v-if="getPermission() === 'granted'" class="enable-notifications" color="secondary" rounded size="lg" icon="notifications" @click="createPushSubscription" label="Create Push Subscription !"/>-->
|
||||
|
||||
</div>
|
||||
|
||||
<!--
|
||||
<q-btn>
|
||||
@@ -75,6 +65,17 @@
|
||||
</q-field>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<q-btn v-if="getPermission() !== 'granted'" class="enable-notifications shadow"
|
||||
color="primary" rounded
|
||||
size="lg"
|
||||
icon="notifications" @click="askfornotification"
|
||||
:label="$t('notification.ask')"/>
|
||||
<!--<q-btn v-if="getPermission() === 'granted'" class="enable-notifications" color="primary" rounded size="lg" icon="notifications" @click="showNotificationExample" label="Send Notification"/>-->
|
||||
<!--<q-btn v-if="getPermission() === 'granted'" class="enable-notifications" color="secondary" rounded size="lg" icon="notifications" @click="createPushSubscription" label="Create Push Subscription !"/>-->
|
||||
|
||||
</div>
|
||||
|
||||
<!--<div class="q-pt-md q-pl-sm">-->
|
||||
<!--<div class="landing__hero-btns q-gutter-md row items-center"><a tabindex="0"-->
|
||||
<!--type="button"-->
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
<!--<div>-->
|
||||
<!--<!– the row with a type of gutter –>-->
|
||||
<!--<q-alert-->
|
||||
<!--avatar="assets/boy-avatar.png"-->
|
||||
<!--avatar="statics/boy-avatar.png"-->
|
||||
<!--color="primary"-->
|
||||
<!--message="Jack"-->
|
||||
<!--detail="Per un mondo più Consapevole"-->
|
||||
|
||||
@@ -1,54 +1,59 @@
|
||||
import { RouteConfig as VueRouteConfig } from 'vue-router'
|
||||
|
||||
import { RouteNames } from './route-names'
|
||||
import { tools } from '@src/store/Modules/tools'
|
||||
|
||||
import auth from '../middleware/auth'
|
||||
|
||||
|
||||
export const RouteConfig: VueRouteConfig[] = [
|
||||
{
|
||||
component: () => import('@/root/home/home.vue'),
|
||||
name: RouteNames.home,
|
||||
path: '/',
|
||||
meta: { name: 'Home' }
|
||||
name: RouteNames.home,
|
||||
component: () => import('@/root/home/home.vue')
|
||||
},
|
||||
{
|
||||
path: '/signup',
|
||||
component: () => import('@/views/login/signup/signup.vue'),
|
||||
meta: { name: 'Registration' }
|
||||
name: 'Registration',
|
||||
component: () => import('@/views/login/signup/signup.vue')
|
||||
},
|
||||
{
|
||||
path: '/signin',
|
||||
component: () => import('@/views/login/signin/signin.vue'),
|
||||
meta: { name: 'Login' }
|
||||
name: RouteNames.login,
|
||||
component: () => import('@/views/login/signin/signin.vue')
|
||||
},
|
||||
{
|
||||
path: '/vreg',
|
||||
component: () => import('@/views/login/vreg/vreg.vue'),
|
||||
meta: { name: 'Verify Reg' }
|
||||
name: 'Verify Reg',
|
||||
component: () => import('@/views/login/vreg/vreg.vue')
|
||||
},
|
||||
{
|
||||
path: '/todo/:category',
|
||||
name: 'Todos',
|
||||
component: () => import('@/components/todos/todo/todo.vue'),
|
||||
// props: { category: 'personal' },
|
||||
meta: { name: 'Todos' }
|
||||
meta: {
|
||||
middleware: [auth]
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/category',
|
||||
component: () => import('@/components/categories/category/category.vue'),
|
||||
meta: { name: 'Categories' }
|
||||
name: 'category',
|
||||
component: () => import('@/components/categories/category/category.vue')
|
||||
},
|
||||
{
|
||||
path: '/admin/cfgserv',
|
||||
component: () => import('@/components/admin/cfgServer/cfgServer.vue'),
|
||||
meta: { name: 'Categories' }
|
||||
name: 'cfgserv',
|
||||
component: () => import('@/components/admin/cfgServer/cfgServer.vue')
|
||||
},
|
||||
{
|
||||
path: '/admin/testp1/:category',
|
||||
component: () => import('@/components/admin/testp1/testp1.vue'),
|
||||
meta: { name: 'Categories' }
|
||||
name: 'Categories',
|
||||
component: () => import('@/components/admin/testp1/testp1.vue')
|
||||
},
|
||||
{
|
||||
path: '/offline',
|
||||
component: () => import('@/components/offline/offline.vue'),
|
||||
meta: { name: 'Offline' }
|
||||
name: 'Offline',
|
||||
component: () => import('@/components/offline/offline.vue')
|
||||
}
|
||||
/*
|
||||
{
|
||||
@@ -74,4 +79,3 @@ export const RouteConfig: VueRouteConfig[] = [
|
||||
meta: { name: 'Embeeded' }
|
||||
}*/
|
||||
]
|
||||
|
||||
|
||||
@@ -4,7 +4,8 @@ import * as Types from '@src/store/Api/ApiTypes'
|
||||
|
||||
async function sendRequest(url: string, method: string, mydata: any) {
|
||||
|
||||
console.log('sendRequest', method, url)
|
||||
if (!process.env.DEBUG)
|
||||
console.log('sendRequest', method, url)
|
||||
|
||||
let request
|
||||
if (method === 'GET')
|
||||
|
||||
@@ -17,12 +17,14 @@ export const axiosInstance: AxiosInstance = axios.create({
|
||||
|
||||
axiosInstance.interceptors.response.use(
|
||||
(response) => {
|
||||
console.log(response)
|
||||
if (process.env.DEBUG === '1')
|
||||
console.log(response)
|
||||
return response
|
||||
},
|
||||
(error) => {
|
||||
if (error.response) {
|
||||
console.log(error.response.status)
|
||||
if (process.env.DEBUG === '1')
|
||||
console.log(error.response.status)
|
||||
console.log('Request Error: ', error.response)
|
||||
}
|
||||
return Promise.reject(error)
|
||||
|
||||
@@ -7,7 +7,7 @@ import translate from './../../globalroutines/util'
|
||||
|
||||
import urlBase64ToUint8Array from '../../js/utility'
|
||||
|
||||
import messages from '../../assets/i18n'
|
||||
import messages from '../../statics/i18n'
|
||||
import { GlobalStore, Todos, UserStore } from '@store'
|
||||
import globalroutines from './../../globalroutines/index'
|
||||
import Api from '@api'
|
||||
@@ -62,11 +62,15 @@ async function getConfig(id) {
|
||||
async function getstateConnSaved() {
|
||||
const config = await getConfig(costanti.CONFIG_ID_CFG)
|
||||
console.log('config', config)
|
||||
if (config.length > 1) {
|
||||
const cfgstateconn = config[1]
|
||||
return cfgstateconn.stateconn
|
||||
if (config) {
|
||||
if (config.length > 1) {
|
||||
const cfgstateconn = config[1]
|
||||
return cfgstateconn.stateconn
|
||||
} else {
|
||||
return 'online'
|
||||
}
|
||||
} else {
|
||||
return 'online'
|
||||
return 'offline'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,12 +88,12 @@ namespace Getters {
|
||||
const testpao1_getter_array = b.read(state => param1 => state.testp1.mioarray.filter(item => item).map(item => item.valore), 'testpao1_getter_array')
|
||||
|
||||
const getConfigbyId = b.read(state => id => state.arrConfig.find(item => item._id === id), 'getConfigbyId')
|
||||
const getConfigStringbyId = b.read(state => id => {
|
||||
const config = state.arrConfig.find(item => item._id === id)
|
||||
const getConfigStringbyId = b.read(state => params => {
|
||||
const config = state.arrConfig.find(item => item._id === params.id)
|
||||
if (config) {
|
||||
return config.value
|
||||
} else {
|
||||
return ''
|
||||
return params.default
|
||||
}
|
||||
}, 'getConfigStringbyId')
|
||||
|
||||
@@ -199,15 +203,18 @@ namespace Mutations {
|
||||
}
|
||||
|
||||
function setShowType(state: IGlobalState, showtype: number) {
|
||||
// console.log('setShowType', showtype)
|
||||
console.log('setShowType', showtype)
|
||||
const config = Getters.getters.getConfigbyId(costanti.CONFIG_ID_SHOW_TYPE_TODOS)
|
||||
// console.log('config', config)
|
||||
console.log('config', config)
|
||||
if (config) {
|
||||
config.value = String(showtype)
|
||||
Todos.state.showtype = parseInt(config.value)
|
||||
// console.log('Todos.state.showtype', Todos.state.showtype)
|
||||
GlobalStore.mutations.saveConfig({ _id: costanti.CONFIG_ID_SHOW_TYPE_TODOS, value: String(showtype) })
|
||||
} else {
|
||||
Todos.state.showtype = showtype
|
||||
}
|
||||
console.log('Todos.state.showtype', Todos.state.showtype)
|
||||
GlobalStore.mutations.saveConfig({ _id: costanti.CONFIG_ID_SHOW_TYPE_TODOS, value: String(showtype) })
|
||||
|
||||
}
|
||||
|
||||
export const mutations = {
|
||||
|
||||
@@ -404,7 +404,8 @@ namespace Actions {
|
||||
return sendSwMsgIfAvailable()
|
||||
.then(something => {
|
||||
if (something) {
|
||||
console.log('something')
|
||||
if (process.env.DEBUG === '1')
|
||||
console.log('something')
|
||||
// Refresh data
|
||||
return waitAndRefreshData(context)
|
||||
}
|
||||
@@ -482,13 +483,13 @@ namespace Actions {
|
||||
|
||||
// console.log('PRIMA showtype = ', state.showtype)
|
||||
|
||||
state.showtype = parseInt(GlobalStore.getters.getConfigStringbyId(costanti.CONFIG_ID_SHOW_TYPE_TODOS))
|
||||
state.showtype = parseInt(GlobalStore.getters.getConfigStringbyId({id: costanti.CONFIG_ID_SHOW_TYPE_TODOS, default: costanti.ShowTypeTask.SHOW_LAST_N_COMPLETED }))
|
||||
|
||||
// console.log('showtype = ', state.showtype)
|
||||
|
||||
// console.log('ARRAY TODOS = ', state.todos)
|
||||
|
||||
console.log('dbLoadTodo', 'state.todos', state.todos, 'state.categories', state.categories)
|
||||
if (process.env.DEBUG === '1')
|
||||
console.log('dbLoadTodo', 'state.todos', state.todos, 'state.categories', state.categories)
|
||||
|
||||
return res
|
||||
})
|
||||
@@ -499,7 +500,8 @@ namespace Actions {
|
||||
})
|
||||
|
||||
if (ris.status !== 200) {
|
||||
console.log('ris.status', ris.status)
|
||||
if (process.env.DEBUG === '1')
|
||||
console.log('ris.status', ris.status)
|
||||
if (ris.status === serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN) {
|
||||
consolelogpao('UNAUTHORIZING... TOKEN EXPIRED... !! ')
|
||||
} else {
|
||||
|
||||
@@ -367,7 +367,7 @@ namespace Actions {
|
||||
}
|
||||
|
||||
async function signin(context, authData: ISigninOptions) {
|
||||
console.log('LOGIN signin')
|
||||
// console.log('LOGIN signin')
|
||||
|
||||
// console.log('MYLANG = ' + state.lang)
|
||||
|
||||
@@ -406,8 +406,8 @@ namespace Actions {
|
||||
}
|
||||
|
||||
// console.log('PASSO 4')
|
||||
|
||||
console.log(usertosend)
|
||||
if (process.env.DEBUG === '1')
|
||||
console.log(usertosend)
|
||||
|
||||
Mutations.mutations.setServerCode(tools.CALLING)
|
||||
|
||||
|
||||
@@ -147,11 +147,16 @@ export default class Signin extends Vue {
|
||||
return
|
||||
}
|
||||
|
||||
this.$q.loading.show({ message: this.$t('login.incorso') })
|
||||
let msg = this.$t('login.incorso')
|
||||
if (process.env.DEBUG)
|
||||
msg += ' ' + process.env.MONGODB_HOST
|
||||
this.$q.loading.show({ message: msg})
|
||||
// disable Button Login:
|
||||
this.iswaitingforRes = true
|
||||
|
||||
console.log(this.signin)
|
||||
if (process.env.DEBUG)
|
||||
console.log('this.signin', this.signin)
|
||||
|
||||
UserStore.actions.signin(this.signin)
|
||||
.then((riscode) => {
|
||||
// console.log('signin FINITO CALL: riscode=', riscode)
|
||||
|
||||
@@ -25,10 +25,10 @@
|
||||
"paths": {
|
||||
"@src/*": ["./*"],
|
||||
"@components": ["./components/index.ts"],
|
||||
"@css/*": ["./assets/css/*"],
|
||||
"@css/*": ["./statics/css/*"],
|
||||
"@icons/*": ["./statics/icons/*"],
|
||||
"@images/*": ["./assets/images/*"],
|
||||
"@js/*": ["./assets/js/*"],
|
||||
"@images/*": ["./statics/images/*"],
|
||||
"@js/*": ["./statics/js/*"],
|
||||
"@classes": ["./classes/index.ts"],
|
||||
"@utils/*": ["./utils/*"],
|
||||
"@validators": ["./utils/validators.ts"],
|
||||
|
||||
@@ -10189,9 +10189,9 @@ optimist@^0.6.1:
|
||||
minimist "~0.0.1"
|
||||
wordwrap "~0.0.2"
|
||||
|
||||
optimize-css-assets-webpack-plugin@5.0.1:
|
||||
optimize-css-statics-webpack-plugin@5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz#9eb500711d35165b45e7fd60ba2df40cb3eb9159"
|
||||
resolved "https://registry.yarnpkg.com/optimize-css-statics-webpack-plugin/-/optimize-css-statics-webpack-plugin-5.0.1.tgz#9eb500711d35165b45e7fd60ba2df40cb3eb9159"
|
||||
integrity sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A==
|
||||
dependencies:
|
||||
cssnano "^4.1.0"
|
||||
@@ -11751,7 +11751,7 @@ quasar-cli@^0.17.23:
|
||||
net "1.0.2"
|
||||
node-loader "0.6.0"
|
||||
opn "5.3.0"
|
||||
optimize-css-assets-webpack-plugin "5.0.1"
|
||||
optimize-css-statics-webpack-plugin "5.0.1"
|
||||
ouch "2.0.0"
|
||||
postcss-loader "3.0.0"
|
||||
postcss-rtl "1.3.2"
|
||||
|
||||
Reference in New Issue
Block a user