++ If press DELETE or BACKSPACE and is blank description, delete the Todos.

- fix: if offline, doesn't save to cache??  if I refresh page, the data disappear
- ++ field to the percent progress
- fix: Refreshing 2 times the array todos.. because there is a filter
This commit is contained in:
Paolo Arena
2019-02-12 19:09:43 +01:00
parent a024b78e95
commit 259e2dc4e2
17 changed files with 252 additions and 188 deletions

View File

@@ -264,6 +264,15 @@ export default class SingleTodo extends Vue {
}
}
*/
if (((e.keyCode === 8) || (e.keyCode === 46)) && (this.precDescr === '') && !e.shiftKey) {
e.preventDefault()
this.clickMenu(rescodes.MenuAction.DELETE)
.then(() => {
this.deselectRiga()
this.faiFocus('insertTask', true)
return
})
}
if (((e.key === 'Enter') || (e.key === 'Tab')) && !e.shiftKey) {
this.updateTodo()
@@ -344,16 +353,16 @@ export default class SingleTodo extends Vue {
}
clickMenu(action) {
async clickMenu(action) {
console.log('click menu: ', action)
if (action === rescodes.MenuAction.DELETE) {
this.askConfirmDelete()
return this.askConfirmDelete()
} else if (action === rescodes.MenuAction.TOGGLE_EXPIRING) {
this.enableExpiring()
return this.enableExpiring()
} else if (action === rescodes.MenuAction.COMPLETED) {
this.setCompleted()
return this.setCompleted()
} else if (action === rescodes.MenuAction.PROGRESS_BAR) {
this.updatedata()
return this.updatedata()
}
}
@@ -369,11 +378,11 @@ export default class SingleTodo extends Vue {
// this.$q.notify('setPriority: ' + elem)
}
askConfirmDelete() {
async askConfirmDelete() {
const deletestr = this.$t('dialog.delete')
const cancelstr = this.$t('dialog.cancel')
askConfirm(this.$q, this.$t('dialog.msg.titledeleteTask'), this.$t('dialog.msg.deleteTask').toString(), deletestr, cancelstr)
await askConfirm(this.$q, this.$t('dialog.msg.titledeleteTask'), this.$t('dialog.msg.deleteTask').toString(), deletestr, cancelstr)
.then(ris => {
console.log('ris', ris)
if (ris)

View File

@@ -23,7 +23,7 @@
</q-btn>
</div>
<q-input type="textarea" ref="inputdescr" v-model="precDescr"
<q-input type="textarea" ref="inputdescr" v-model.trim="precDescr"
:class="classDescr" :max-height="50"
@keydown="keyDownArea" v-on:keydown.esc="exitEdit" @blur="exitEdit(true)" @click="editTodo()"/>
@@ -33,7 +33,7 @@
<!--<q-field>{{ itemtodo.descr }}</q-field>-->
<!--</div>-->
<div v-if="isTodo()" class="flex-item progress-item">
<div v-if="isTodo() && (percentageProgress > 0) " class="flex-item progress-item">
<q-progress
:percentage="percentageProgress"
class="progress-item"

View File

@@ -3,7 +3,7 @@
}
.item-menu{
.item-menu {
font-size: 1rem;
}
@@ -11,6 +11,7 @@
cursor: pointer;
}
.menuProgress {
.menuInputProgress > div:nth-child(2) > div > input {
min-width: 30px;
width: 30px;
}

View File

@@ -2,8 +2,8 @@ import Vue from 'vue'
import { Component, Prop } from 'vue-property-decorator'
import { ITodo } from '../../../model/index'
import { rescodes } from "@src/store/Modules/rescodes"
import { UserStore } from "@store"
import { rescodes } from '@src/store/Modules/rescodes'
import { UserStore } from '@store'
@Component({
@@ -14,7 +14,7 @@ export default class SubMenus extends Vue {
public selectPriority: [] = rescodes.selectPriority[UserStore.state.lang]
@Prop({ required: false }) menuPopupTodo: any[]
@Prop({ required: false }) itemtodo: ITodo[]
@Prop({ required: false }) itemtodo: ITodo
$q: any
clickMenu (field) {
@@ -25,6 +25,15 @@ export default class SubMenus extends Vue {
this.$emit('setPriority', field)
}
KeychangeProgress (e) {
if (this.itemtodo.progress > 100) {
this.itemtodo.progress = 100
}
if (this.itemtodo.progress < 0) {
this.itemtodo.progress = 0
}
}
create () {
this.selectPriority = rescodes.selectPriority[UserStore.state.lang]

View File

@@ -18,14 +18,28 @@
</q-item-side>
<q-item-main v-if="field.value === 120">
<q-slider :class="$parent.menuProgress" v-model="itemtodo.progress" :min="0" :max="100"/>
<q-slider :class="$parent.menuProgress" v-model="itemtodo.progress" :min="0" :max="100"
:step="5"/>
</q-item-main>
<q-item-side v-if="field.value === 120">
<div :class="$parent.percProgress">
{{$parent.percentageProgress}}%
<q-item-side v-if="field.value === 120" >
<div>
<q-input v-model="itemtodo.progress"
class="menuInputProgress"
type="number"
suffix="%"
@change="val => { model = val }"
@keydown="KeychangeProgress"
/>
</div>
</q-item-side>
<!--<q-item-side right v-if="field.value === 120">-->
<!--<div :class="$parent.percProgress">-->
<!--{{$parent.percentageProgress}}%-->
<!--</div>-->
<!--</q-item-side>-->
</q-item>
<q-item v-if="(field.value === 100)" :icon="field.icon" v-close-overlay
@click.native="clickMenu(field.value)">
@@ -61,6 +75,6 @@
<script lang="ts" src="./SubMenus.ts">
</script>
<style lang="scss" scoped>
<style lang="scss">
@import './SubMenus.scss';
</style>

View File

@@ -43,6 +43,7 @@ export default class Todo extends Vue {
itemDragEnd: any = null
selrowid: number = 0
polling = null
mytypetransgroup: string = 'crossfade'
fieldtochange: String [] = ['descr', 'completed', 'category', 'expiring_at', 'priority', 'id_prev', 'id_next', 'pos', 'enableExpiring', 'progress']
@@ -65,7 +66,10 @@ export default class Todo extends Vue {
@Watch('$route.params.category') changecat() {
// console.log('changecat')
this.load()
this.mytypetransgroup = 'nessuno'
this.updatetable().then(() => {
this.mytypetransgroup = 'crossfade'
})
}
get todos_changed() {
@@ -82,7 +86,7 @@ export default class Todo extends Vue {
// this.$q.notify('Changed...')
// console.log('Todos.state.todos_changed CHANGED!', value, oldValue)
console.log('Todos.state.todos_changed CHANGED!', value, oldValue)
this.updatetable(true)
}
@@ -600,12 +604,16 @@ export default class Todo extends Vue {
}
async updatetable(refresh: boolean = false) {
// console.log('updatetable')
console.log('updatetable')
this.prevRecords = [...this.todos_arr]
return await Todos.actions.getTodosByCategory(this.getCategory())
.then(arrtemp => {
.then(arrris => {
this.todos_arr = []
let arrtemp = [...arrris]
arrtemp = _.orderBy(arrtemp, ['completed', 'priority', 'pos'], ['asc', 'desc', 'asc'])
@@ -620,6 +628,8 @@ export default class Todo extends Vue {
this.todos_arr = [...arrtemp] // make copy
console.log('AGGIORNA todos_arr')
})
}

View File

@@ -12,7 +12,7 @@
<div class="drag">
<draggable v-model="todos_arr" :options="{draggable:'.myitemdrag'}"
@start="onStart" @end="onEnd" class="dragArea">
<transition-group>
<transition-group :name="mytypetransgroup" >
<div :id="getmyid(mytodo._id)" :key="mytodo._id" v-for="mytodo in todos_arr" class="myitemdrag">
<div v-if="(prior !== mytodo.priority) && !mytodo.completed" :class="getTitlePriority(mytodo.priority)">