other components...

This commit is contained in:
Paolo Arena
2021-09-04 15:05:34 +02:00
parent 1c3df0fac1
commit fcc4f61f07
110 changed files with 4592 additions and 566 deletions

View File

@@ -0,0 +1 @@
export {default as tableOnlyView} from './tableOnlyView.vue'

View File

@@ -0,0 +1,59 @@
@Component({})
export default class TableOnlyView extends Vue {
public loading: boolean = false
public serverPagination: {
page: number,
rowsNumber: number // specifying this determines pagination is server-side
} = {page: 1, rowsNumber: 10}
public serverData: any [] = []
public columns: any[] = [
{
name: 'chiave',
required: true,
label: 'Chiave',
align: 'left',
field: 'chiave',
sortable: true,
},
{ name: 'valore', label: 'Valore', field: 'valore', sortable: false },
]
public filter: string = ''
public selected: any[] = []
public request(props) {
this.loading = true
setTimeout(() => {
this.serverPagination = props.pagination
let table = this.$refs.table,
rows = GlobalStore.state.cfgServer.slice(),
{ page, rowsPerPage, sortBy, descending } = props.pagination
// if (props.filter) {
// rows = table.filterMethod(rows, props.filter)
// }
// if (sortBy) {
// rows = table.sortMethod(rows, sortBy, descending)
// }
this.serverPagination.rowsNumber = rows.length
if (rowsPerPage) {
rows = rows.slice((page - 1) * rowsPerPage, page * rowsPerPage)
}
this.serverData = rows
this.loading = false
}, 1500)
}
public mounted() {
this.request({
pagination: this.serverPagination,
filter: this.filter,
})
}
}

View File

@@ -0,0 +1,29 @@
<template>
<q-page padding class="docs-table">
<p class="caption">TableOnlyView</p>
<q-table
ref="table"
color="primary"
title="Parametri di Configurazione Server"
:data="serverData"
:columns="columns"
:filter="filter"
selection="multiple"
v-model:selected="selected"
row-key="chiave"
v-model:pagination="serverPagination"
@request="request"
:loading="loading"
>
<template v-slot:top-right="props" >
<q-search hide-underline v-model="filter" />
</template>
</q-table>
</q-page>
</template>
<script lang="ts" src="tableOnlyView.ts">
</script>
<style lang="scss" scoped>
@import 'tableOnlyView';
</style>

View File

View File

@@ -0,0 +1,104 @@
import { computed, defineComponent, PropType, ref } from 'vue'
import { useQuasar } from 'quasar'
import { useI18n } from '@/boot/i18n'
import { useGlobalStore } from '@store/globalStore'
import { ICfgServer } from 'model'
interface IPageSrv {
page: number,
rowsPerPage: number // specifying this determines pagination is server-side
}
interface IPageS {
page: number,
}
export default defineComponent({
name: 'CfgServer',
props: {
loading: {
type: Boolean,
default: false,
required: true,
},
paginationControl: {
type: Object as PropType<IPageSrv>,
required: true,
default() {
return { page: 1, rowsPerPage: 20 }
},
},
pagination: {
type: Object as PropType<IPageS>,
required: true,
default() {
return { page: 1 }
},
},
},
setup() {
const $q = useQuasar()
const { t } = useI18n()
const globalStore = useGlobalStore()
const serverData = computed(() => globalStore.cfgServer.slice()) // [{ chiave: 'chiave1', valore: 'valore 1' }]
const columns = ref([
{
name: 'chiave',
required: true,
label: 'Chiave',
align: 'left',
field: 'chiave',
sortable: true,
},
{ name: 'idapp', label: 'idapp', field: 'idapp', sortable: true },
{ name: 'userid', label: 'UserId', field: 'userid', sortable: false },
{ name: 'valore', label: 'Valore', field: 'valore', sortable: false },
])
const colVisib = ref(['chiave', 'idapp', 'userid', 'valore'])
const separator = ref('horizontal')
const filter = ref('')
const selected = ref([])
const dark = ref(true)
const keysel = ref('')
const userIdsel = ref('')
function tableClass() {
if (dark.value) {
return 'bg-black'
}
}
function selItem(item: any) {
console.log('item', item)
keysel.value = item.chiave
userIdsel.value = item.userId
console.log('this.keysel', keysel.value)
}
function SaveValue(newVal: any, valinitial: any) {
// console.log('SaveValue', newVal, 'selected', this.selected)
const mydata: ICfgServer = {
chiave: keysel.value,
userId: userIdsel.value,
valore: newVal,
idapp: process.env.APP_ID!,
}
// Save on Server
globalStore.saveCfgServerKey(mydata)
}
return {
selItem,
SaveValue,
serverData,
columns,
filter,
}
},
})

View File

@@ -0,0 +1,52 @@
<template>
<q-table
:data="serverData"
:columns="columns"
:filter="filter"
title="Configurazione Server"
row-key="chiave"
>
<template v-slot:body="props">
<q-tr :props="props">
<q-td key="chiave" :props="props">
{{ props.row.chiave }}
<q-popup-edit v-model="props.row.chiave" disable>
<q-field count>
<q-input v-model="props.row.chiave"/>
</q-field>
</q-popup-edit>
</q-td>
<q-td key="idapp" :props="props">
{{ props.row.idapp }}
<q-popup-edit v-model="props.row.idapp" disable>
<q-field count>
<q-input v-model="props.row.idapp"/>
</q-field>
</q-popup-edit>
</q-td>
<q-td key="userid" :props="props">
{{ props.row.userId }}
<q-popup-edit v-model="props.row.userId" disable>
<q-field count>
<q-input v-model="props.row.userId"/>
</q-field>
</q-popup-edit>
</q-td>
<q-td key="valore" :props="props">
{{ props.row.valore }}
<q-popup-edit
v-model="props.row.valore" title="Aggiorna Valore" buttons @save="SaveValue"
@show="selItem(props.row)">
<q-input v-model="props.row.valore"/>
</q-popup-edit>
</q-td>
</q-tr>
</template>
</q-table>
</template>
<script lang="ts" src="./cfgServer.ts">
</script>
<style lang="scss" scoped>
@import './cfgServer';
</style>

View File

@@ -0,0 +1 @@
export {default as cfgServer} from './cfgServer.vue'

0
src/views/admin/dbop/dbop.scss Executable file
View File

80
src/views/admin/dbop/dbop.ts Executable file
View File

@@ -0,0 +1,80 @@
import { defineComponent, ref } from 'vue'
import { CTitleBanner } from '../../../components/CTitleBanner'
import { CDateTime } from '../../../components/CDateTime'
import { CMyFieldDb } from '../../../components/CMyFieldDb'
import { useQuasar } from 'quasar'
import { useI18n } from '@/boot/i18n'
import { useUserStore } from '@store/userStore'
import { useGlobalStore } from '@store/globalStore'
import { tools } from '@store/Modules/tools'
export default defineComponent({
name: 'Dbop',
components: { CTitleBanner, CDateTime, CMyFieldDb },
props: {},
setup() {
const $q = useQuasar()
const { t } = useI18n()
const ris = ref('')
const riga = ref(0)
const numpersone = ref(7)
const date_start = ref(new Date())
const col = ref(0)
const placca = ref('')
const incaricamento = ref(false)
async function EseguiFunz(miafunz: string) {
const userStore = useUserStore()
const globalStore = useGlobalStore()
$q.dialog({
message: t('dialog.continue') + ' ' + miafunz + ' ?',
cancel: {
label: t('dialog.cancel'),
},
ok: {
label: t('dialog.yes'),
push: true,
},
title: 'Funzione:',
}).onOk(async () => {
const mydata = {
dbop: miafunz,
riga: riga,
col: col,
date_start: date_start,
numpersone: numpersone,
}
incaricamento.value = true
$q.loading.show({ message: t('otherpages.update') })
const risfunz = await userStore.execDbOp({ mydata })
$q.loading.hide()
await globalStore.loadSite()
incaricamento.value = false
console.log('risfunz', risfunz)
ris.value = ''
if (miafunz === 'visuPlacca') {
placca.value = risfunz.placca
} else if (miafunz === 'visuListaIngresso' || miafunz === 'visuListaIngressoNuovi' || miafunz === 'visuNaviUtentiEliminati'
|| miafunz === 'visuListaNave' || miafunz === 'visuNave' || miafunz === 'creaNavi'
|| (miafunz === 'visuStat')) {
placca.value = risfunz.mystr
}
})
}
return {
EseguiFunz,
tools,
}
},
})

229
src/views/admin/dbop/dbop.vue Executable file
View File

@@ -0,0 +1,229 @@
<template>
<div>
<CTitleBanner title="Operazioni su DB:"></CTitleBanner>
<div class="row justify-center q-gutter-sm q-list--bordered center_img" style="max-width: 600px">
<CMyFieldDb
title="SITO_ONLINE"
mykey="SITO_ONLINE"
:serv="false"
:type="tools.FieldType.boolean">
</CMyFieldDb>
<br>
<CMyFieldDb
title="ABILITA CRONTAB (1 ora)"
mykey="CRONTAB"
:serv="false"
:type="tools.FieldType.boolean">
</CMyFieldDb>
<br>
<!--
<div class="row">
<q-btn label="Crea Utenti Test" color="primary" @click="EseguiFunz('creaUtentiTest')"></q-btn>
<br>
</div>
<div class="row">
<q-btn label="Passa i codici Telefoni sul campo cell" color="primary"
@click="EseguiFunz('changeCellInt')"></q-btn>
<br></div>
<div class="row">
<q-btn label="Trasforma le email tutte in minuscolo" color="primary"
@click="EseguiFunz('changeEmailLowerCase')"></q-btn>
<br></div>
<div class="row">
<q-btn label="IMPOSTARE A TUTTI PAYPAL" color="primary" @click="EseguiFunz('ImpostaATuttiPaypal')"></q-btn><br>
</div>
<div class="row">
<q-btn label="NUM_TESS A 1" color="primary" @click="EseguiFunz('numtessUno')"></q-btn><br>
</div>
-->
<div class="row">
<!--<q-btn label="CORREGGI NUM_TESS" color="primary" @click="EseguiFunz('Corregginumtess')"></q-btn>
<br>-->
<!--<q-btn label="CORREGGI DATA GIFT CHAT" color="primary" @click="EseguiFunz('CorreggiDataGiftChat')"></q-btn>
<br>-->
</div>
<div class="row">
<!--<q-btn label="Inizializza ListaIngresso" color="negative"
@click="EseguiFunz('initListaIngresso')"></q-btn>
<br>-->
</div>
<!--
<div class="row">
<q-btn label="Elimina Navi" color="negative" @click="EseguiFunz('delNavi')"></q-btn><br>
</div>
-->
<!--<div class="row">
<q-btn label="Elimina Navi non Partite" color="negative"
@click="EseguiFunz('delNaviNoStarted')"></q-btn>
<br>
</div>-->
<!--
<div class="row">
<q-btn label="Rigenera (Elim, Genera Graduat, Add Navi Temp" color="positive" size="lg"
@click="EseguiFunz('rigeneraTutto')"></q-btn>
</div>
<br>
<div class="row">
<q-btn label="Elimina Navi Provvisorie" color="negative"
@click="EseguiFunz('delNaviProvvisorie')"></q-btn>
</div>
<q-btn label="Genera Graduatoria" color="primary"
@click="EseguiFunz('GeneraGraduatoria')"></q-btn>
<br>
<q-btn label="1) Aggiungi in Navi Temporanee" color="primary" @click="EseguiFunz('creaNavi')"></q-btn>
<br>
<div class="q-pa-sm row">
<CDateTime
:value.sync="date_start"
:label="$t('cal.eventstartdatetime')"
:readonly="false">
</CDateTime>
<q-input v-model="numpersone" type="number" autofocus label="Num Persone to Add"
style="width: 100px;"></q-input>
<q-btn label="2) CREA NAVI PERSISTENTI" color="primary" @click="EseguiFunz('CreaNaviPersistenti')"></q-btn>
<br>
</div>
<div v-if="!incaricamento" class="row">
<CMyFieldDb title="Riga"
mykey="riga"
:serv="false"
:type="tools.FieldType.number">
</CMyFieldDb>
<CMyFieldDb title="Col"
mykey="col"
:serv="false"
:type="tools.FieldType.number">
</CMyFieldDb>
<CMyFieldDb title="Visu_TEST"
mykey="VISU_TEST"
:serv="false"
:type="tools.FieldType.boolean">
</CMyFieldDb>
<CMyFieldDb title="VISU_NAVE_BOT"
mykey="VISU_NAVE_BOT"
:serv="false"
:type="tools.FieldType.boolean">
</CMyFieldDb>
</div>
<div class="row">
<q-btn label="Statistiche" color="warning" @click="EseguiFunz('visuStat')"></q-btn>
</div>
<div class="row">
<q-btn label="Pulisci chi non è presente in Nave" color="positive"
@click="EseguiFunz('pulisciNonPresenzeInNave')"></q-btn>
<br>
</div>
<div class="row">
<q-btn label="Visualizza Lista Nave" color="primary" @click="EseguiFunz('visuListaNave')"></q-btn>
</div>
<q-btn label="Aggiorna Indice Graduatoria" color="primary"
@click="EseguiFunz('AggiornaIndiceGraduatoria')"></q-btn>
<br>
<q-btn label="Visu Navi con utenti Eliminati" color="primary"
@click="EseguiFunz('visuNaviUtentiEliminati')"></q-btn>
<br>
<div class="row">
<q-btn label="0) ELIMINA VECCHI LISTEINGRESSO !" color="negative"
@click="EseguiFunz('eliminaListeIngressoNascoste')"></q-btn>
<br>
</div>
<div class="row">
<q-btn label="CONVERTI SUBACCOUNT !" color="negative"
@click="EseguiFunz('convSubAccount')"></q-btn>
<br>
</div>
<div class="row">
<q-btn label="FLAGGA GLI UTENTI CON NAVI NON PRESENTI!" color="primary"
@click="EseguiFunz('flagUtentiNaviNonPresenti')"></q-btn>
<br>
</div>
<div class="row">
<q-btn label="GENERA FLOTTE!" color="primary"
@click="EseguiFunz('generaFlotte')"></q-btn>
<br>
</div>
<div class="row">
<q-btn label="METTI SOGNO E PAYPAL (SOLO VISU)" color="primary"
@click="EseguiFunz('mettiSognoePaypalView')"></q-btn>
<br>
<q-btn label="METTI SOGNO E PAYPAL" color="primary"
@click="EseguiFunz('mettiSognoePaypal')"></q-btn>
<br>
</div>
<div class="row">
<q-btn label="1) CONVERTI TUTTA LA STRUTTURA NEL NUOVO SISTEMA !" color="negative"
@click="EseguiFunz('creaTessituraeConv')"></q-btn>
<br>
</div>
<div class="row">
<q-btn label="2) CONVERTI Navi Num_Tess 3 e 5 in Record di ListaIngresso" color="negative"
@click="EseguiFunz('convNaviTessinListaIngressoRec')"></q-btn>
<br>
</div>
<div class="row">
<q-btn label="3) Rendi Visibile i Record Nascosti di ListaINGRESSO" color="negative"
@click="EseguiFunz('RendiVisibileIrecordNascosti')"></q-btn>
<br>
</div>
<br>
<br>
<div class="row">
<q-input v-model="riga" type="number" autofocus label="Riga" style="width: 50px;"></q-input>
<q-input v-model="col" type="number" autofocus label="Col" style="width: 50px;"></q-input>
<q-btn label="Visualizza Nave da 8" color="primary" @click="EseguiFunz('visuPlacca')"></q-btn>
<br>
<q-btn label="Visualizza Nave" color="primary" @click="EseguiFunz('visuNave')"></q-btn>
<br>
</div>
<div class="row">
<q-input v-model="placca" type="textarea" autofocus label="Placca" autogrow
style="width: 500px; height: 400px;"></q-input>
<br>
</div>
-->
</div>
<div class="row">
<q-btn
label="Correggi Tabella Hours con userId" color="negative"
@click="EseguiFunz('CorreggiTabHours')"></q-btn>
<br>
</div>
<q-field
stack-label
dense
>
<template v-slot:control>
<div class="self-center full-width no-outline text-center" tabindex="0">{{ris}}</div>
</template>
</q-field>
</div>
</template>
<script lang="ts" src="./dbop.ts">
</script>
<style lang="scss" scoped>
@import './dbop';
</style>

1
src/views/admin/dbop/index.ts Executable file
View File

@@ -0,0 +1 @@
export {default as dbop} from './dbop.vue'

View File

View File

@@ -0,0 +1,74 @@
import { defineComponent, PropType, ref } from 'vue'
import { useQuasar } from 'quasar'
import CTitleBanner from '@/components/CTitleBanner/CTitleBanner'
import { useUserStore } from '@store/UserStore'
import { useGlobalStore } from '@store/globalStore'
import { tools } from '@store/Modules/tools'
export default defineComponent({
name: 'Extralist',
components: { CTitleBanner },
props: {
mystr: {
type: String,
required: true,
default: '',
},
myval: {
type: Number,
required: true,
default: 0,
},
mybool: {
type: Boolean,
required: true,
default: false,
},
},
setup() {
const userStore = useUserStore()
const users_imported = ref('')
const myloadingImport = ref(false)
const errimport = ref(false)
const okimport = ref(false)
const myrisimport = ref('')
async function importExtraList() {
myloadingImport.value = true
errimport.value = false
okimport.value = false
const mydata = {
strdata: users_imported,
locale: tools.getLocale(),
}
const res: any = await userStore.importExtraList(mydata)
let esistiti = ''
if (res.data.numalreadyexisted > 0)
esistiti = ` ${res.data.numalreadyexisted} email già esistenti`
if (res.data.numadded > 0) {
okimport.value = true
myrisimport.value = `(${res.data.numadded} / ${res.data.numtot}) utenti extra importati !` + esistiti
} else {
errimport.value = true
myrisimport.value = `Nessun utente extra importato (trovate ${res.data.numtot})` + esistiti
}
myloadingImport.value = false
}
return {
users_imported,
myloadingImport,
errimport,
okimport,
myrisimport,
importExtraList,
}
},
})

View File

@@ -0,0 +1,46 @@
<template>
<div>
<CTitleBanner title="Importa Lista Utenti Extra:"></CTitleBanner>
<div class="q-ma-md q-pa-sm text-center rounded-borders q-list--bordered">
<q-input
v-model="users_imported"
autofocus
filled
bordered
color="blue-12"
@keyup.enter.stop
type="textarea"
>
</q-input>
<div class="q-ma-md q-pa-sm text-center">
<q-btn
:loading="myloadingImport" rounded outline :disable="users_imported === ''"
@click="importExtraList" color="primary" icon="email">
Importa Lista Utenti Extra
<template v-slot:loading>
<q-spinner-hourglass class="on-left"/>
Importazione Utenti in corso ...
</template>
</q-btn>
</div>
<transition
enter-active-class="animated fadeIn"
leave-active-class="animated fadeOut"
appear
>
<CTitleBanner v-if="errimport" bgcolor="bg-warning" :title="myrisimport"></CTitleBanner>
<CTitleBanner v-if="okimport" :title="myrisimport"></CTitleBanner>
</transition>
</div>
</div>
</template>
<script lang="ts" src="./extralist.ts">
</script>
<style lang="scss" scoped>
@import './extralist';
</style>

View File

@@ -0,0 +1 @@
export {default as extralist} from './extralist.vue'