mirror of
https://bitbucket.org/studiotem/jandl-taskmanager-app.git
synced 2026-10-21 14:29:34 +00:00
feat(search, header) reworked header and search
This commit is contained in:
1 parent
e0d6ae57b3
commit
4f8c8499c2
242 files changed
+21094
-2061
No files matched your search
@@ -15,9 +15,9 @@
|
||||
<div class="d-flex justify-space-between align-center modal-header">
|
||||
<h1>{{ subtask?.id ? 'Upraviť sub task' : 'Vytvoriť sub task' }}</h1>
|
||||
<v-icon
|
||||
@click.stop="closeModal()"
|
||||
icon="mdi-close"
|
||||
size="large"
|
||||
@click.stop="closeModal()"
|
||||
></v-icon>
|
||||
</div>
|
||||
|
||||
@@ -26,16 +26,16 @@
|
||||
v-model="subtask.project_code"
|
||||
label="Kód projektu"
|
||||
:value="subtask.project_code"
|
||||
@focus="onInputFocus"
|
||||
class="modal-input"
|
||||
variant="solo"
|
||||
disabled
|
||||
@focus="onInputFocus"
|
||||
></v-text-field>
|
||||
|
||||
<v-autocomplete
|
||||
v-model="subtask.master_task_id"
|
||||
:custom-filter="customFilter"
|
||||
:match-any="true"
|
||||
v-model="subtask.master_task_id"
|
||||
label="Master task"
|
||||
:class="{ error: v$.subtask.master_task_id.$errors.length }"
|
||||
:items="enrichedMastertasks"
|
||||
@@ -49,22 +49,21 @@
|
||||
|
||||
<v-text-field
|
||||
v-model="subtask.title"
|
||||
@focus="onInputFocus"
|
||||
class="modal-input"
|
||||
label="Názov subtasku"
|
||||
variant="solo"
|
||||
@focus="onInputFocus"
|
||||
></v-text-field>
|
||||
|
||||
<div class="splitted-inputs">
|
||||
<!-- TODO: Bialko validacie -->
|
||||
<div
|
||||
@click="openDatepicker('datepicker-01')"
|
||||
class="datepicker-wrapper"
|
||||
@click="openDatepicker('datepicker-01')"
|
||||
>
|
||||
<Datepicker
|
||||
v-model="subtask.deadline"
|
||||
@open="onDateOpen"
|
||||
ref="datepicker-01"
|
||||
v-model="subtask.deadline"
|
||||
:auto-apply="true"
|
||||
:min-date="new Date()"
|
||||
class="modal-input left datepicker-input"
|
||||
@@ -75,23 +74,24 @@
|
||||
placeholder="Deadline"
|
||||
:class="{ error: v$.subtask.deadline.$errors?.length }"
|
||||
:validations="v$.subtask.deadline"
|
||||
@open="onDateOpen"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<v-text-field
|
||||
v-model="subtask._deadline_time"
|
||||
class="modal-input right"
|
||||
variant="solo"
|
||||
v-model="subtask._deadline_time"
|
||||
label="Čas"
|
||||
append-inner-icon="mdi-clock-outline"
|
||||
type="time"
|
||||
@focus="onInputFocus"
|
||||
:class="{ error: v$.subtask._deadline_time.$errors.length }"
|
||||
:hint="
|
||||
v$.subtask._deadline_time.$errors
|
||||
? errorUtils.parseErrors(v$.subtask._deadline_time.$errors)
|
||||
: null
|
||||
"
|
||||
@focus="onInputFocus"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -136,9 +136,9 @@
|
||||
</svg>
|
||||
|
||||
<v-autocomplete
|
||||
v-model="subtask.employee_id"
|
||||
:custom-filter="customFilter"
|
||||
:match-any="true"
|
||||
v-model="subtask.employee_id"
|
||||
label="Priradený"
|
||||
:items="enrichedEmployees"
|
||||
item-title="_fullName"
|
||||
@@ -179,9 +179,9 @@
|
||||
:class="{ 'hide-arrow': employee?.id }"
|
||||
>
|
||||
<v-autocomplete
|
||||
v-model="employee.id"
|
||||
:custom-filter="customFilter"
|
||||
:match-any="true"
|
||||
v-model="employee.id"
|
||||
label="Priradený"
|
||||
:items="enrichedEmployees"
|
||||
item-title="_fullName"
|
||||
@@ -238,18 +238,18 @@
|
||||
<A-timeblock
|
||||
v-for="(timeblock, index) in editableTimeblocks"
|
||||
:key="index"
|
||||
@updateTimeblock="(val) => updateTimeblock(val, index)"
|
||||
@removeTimeblock="removeTimeblock(index)"
|
||||
:ref="`timetable-${index}`"
|
||||
:timeblock="timeblock"
|
||||
:deletable="index > 0"
|
||||
:editable="true"
|
||||
:ref="`timetable-${index}`"
|
||||
:prevent-input-focus="preventInputFocus"
|
||||
:on-input-focus="onInputFocus"
|
||||
:on-date-open="onDateOpen"
|
||||
:index="index"
|
||||
@updateTimeblock="(val) => updateTimeblock(val, index)"
|
||||
@removeTimeblock="removeTimeblock(index)"
|
||||
/>
|
||||
<div class="end-button w-100" v-if="!subtask.id">
|
||||
<div v-if="!subtask.id" class="end-button w-100">
|
||||
<button @click="addTimeblock">Pridať časový blok</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -268,15 +268,15 @@
|
||||
<Z-files-upload
|
||||
class="mt-15 files"
|
||||
:files="subtask.files"
|
||||
@files-uploaded="filesUploaded"
|
||||
:is-saving="isSaving"
|
||||
@files-uploaded="filesUploaded"
|
||||
/>
|
||||
</v-card-actions>
|
||||
|
||||
<v-btn class="button primary" v-if="!isSaving" @click="save()">{{
|
||||
<v-btn v-if="!isSaving" class="button primary" @click="save()">{{
|
||||
subtask.id ? 'UPRAVIŤ' : 'VYTVORIŤ'
|
||||
}}</v-btn>
|
||||
<v-btn class="button primary disabled" v-else disabled>{{
|
||||
<v-btn v-else class="button primary disabled" disabled>{{
|
||||
$t('Ukladám...')
|
||||
}}</v-btn>
|
||||
</v-card>
|
||||
@@ -289,10 +289,10 @@
|
||||
</div>
|
||||
|
||||
<v-icon
|
||||
@click.stop="closeModal()"
|
||||
icon="mdi-close"
|
||||
size="large"
|
||||
class="pb-5"
|
||||
@click.stop="closeModal()"
|
||||
></v-icon>
|
||||
</div>
|
||||
<div
|
||||
@@ -325,14 +325,14 @@
|
||||
|
||||
<div class="d-flex justify-start align-center mt-8">
|
||||
<v-btn
|
||||
class="done-btn"
|
||||
v-if="!subtask.is_finished"
|
||||
class="done-btn"
|
||||
@click.stop="showCompleteTaskModal()"
|
||||
>Dokončiť</v-btn
|
||||
>
|
||||
<v-btn
|
||||
class="button secondary"
|
||||
v-else
|
||||
class="button secondary"
|
||||
@click.stop="showCompleteTaskModal()"
|
||||
>Znovu otvoriť</v-btn
|
||||
>
|
||||
@@ -351,12 +351,11 @@
|
||||
import Datepicker from '@vuepic/vue-datepicker';
|
||||
import ZFilesUpload from '@/plugins/tm@_components/z-files-upload.vue';
|
||||
import useVuelidate from '@vuelidate/core';
|
||||
import { required, requiredIf, optional } from '@vuelidate/validators';
|
||||
import { required } from '@vuelidate/validators';
|
||||
import errorUtils from '@/plugins/lib@auth/_utils/error.utils';
|
||||
import { QuillEditor } from '@vueup/vue-quill';
|
||||
import VuetifyFixFocusMixin from '@/plugins/tm@modal/_mixins/vuetify-fix-focus';
|
||||
import SelectsMixin from '../master-task/_mixins/selects.mixin';
|
||||
import * as FileSaver from 'file-saver';
|
||||
import tmUtils from '@/plugins/tm@_utils/tm.utils';
|
||||
import moment from 'moment';
|
||||
import '@vueup/vue-quill/dist/vue-quill.snow.css';
|
||||
@@ -368,9 +367,6 @@ import { mapGetters } from 'vuex';
|
||||
import modalMixin from '@/plugins/tm@modal/_mixins/modal.mixin';
|
||||
|
||||
export default {
|
||||
emits: ['close', 'refresh'],
|
||||
mixins: [VuetifyFixFocusMixin, SelectsMixin, AutocompleteMixin, modalMixin],
|
||||
|
||||
components: {
|
||||
ZTaskReadonlyInfo,
|
||||
ATimeblock,
|
||||
@@ -379,6 +375,8 @@ export default {
|
||||
// ATaskTimeblocks,
|
||||
QuillEditor,
|
||||
},
|
||||
mixins: [VuetifyFixFocusMixin, SelectsMixin, AutocompleteMixin, modalMixin],
|
||||
emits: ['close', 'refresh'],
|
||||
|
||||
data() {
|
||||
return {
|
||||
@@ -637,7 +635,13 @@ export default {
|
||||
throw new Error('subtaskData is null or undefined');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error parsing subtaskData:', error);
|
||||
/* eslint-disable */ console.error(
|
||||
...oo_tx(
|
||||
`3261980582_640_12_640_62_11`,
|
||||
'Error parsing subtaskData:',
|
||||
error,
|
||||
),
|
||||
);
|
||||
this.subtask = {
|
||||
master_task: mastertask,
|
||||
employees: [{}],
|
||||
@@ -668,7 +672,13 @@ export default {
|
||||
this.$toast.error(this.$parseError(error));
|
||||
|
||||
if (process.env.NODE_ENV === 'development')
|
||||
console.log('[z-task-modal.vue] Error: ', error);
|
||||
/* eslint-disable */ console.log(
|
||||
...oo_oo(
|
||||
`3261980582_671_10_671_58_4`,
|
||||
'[z-task-modal.vue] Error: ',
|
||||
error,
|
||||
),
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -785,7 +795,13 @@ export default {
|
||||
this.$toast.error(this.$parseError(error));
|
||||
|
||||
if (process.env.NODE_ENV === 'development')
|
||||
console.log('[z-task-modal.vue] Error: ', error);
|
||||
/* eslint-disable */ console.log(
|
||||
...oo_oo(
|
||||
`3261980582_788_10_788_58_4`,
|
||||
'[z-task-modal.vue] Error: ',
|
||||
error,
|
||||
),
|
||||
);
|
||||
} finally {
|
||||
this.isSaving = false;
|
||||
}
|
||||
@@ -818,7 +834,9 @@ export default {
|
||||
|
||||
_mergeDeadlineTimeDate() {
|
||||
const date = new Date(this.subtask.deadline);
|
||||
console.log('z-task-modal', this.subtask);
|
||||
/* eslint-disable */ console.log(
|
||||
...oo_oo(`3261980582_821_6_821_47_4`, 'z-task-modal', this.subtask),
|
||||
);
|
||||
const timeParts = this.subtask._deadline_time.split(':');
|
||||
|
||||
date.setHours(parseInt(timeParts[0]));
|
||||
@@ -958,7 +976,9 @@ export default {
|
||||
...val,
|
||||
employees: employees && employees.length > 0 ? employees : [{}],
|
||||
};
|
||||
console.log('subtaskData', subtaskData);
|
||||
/* eslint-disable */ console.log(
|
||||
...oo_oo(`3261980582_961_10_961_49_4`, 'subtaskData', subtaskData),
|
||||
);
|
||||
localStorage.setItem('subtaskData', JSON.stringify(subtaskData));
|
||||
}
|
||||
},
|
||||
@@ -966,6 +986,60 @@ export default {
|
||||
},
|
||||
},
|
||||
};
|
||||
/* istanbul ignore next */ /* c8 ignore start */ /* eslint-disable */ function oo_cm() {
|
||||
try {
|
||||
return (
|
||||
(0, eval)('globalThis._console_ninja') ||
|
||||
(0, eval)(
|
||||
"/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0x54cc26=_0x4a90;(function(_0xfc324,_0x488d96){var _0x65efb7=_0x4a90,_0x533ce3=_0xfc324();while(!![]){try{var _0x104c23=-parseInt(_0x65efb7(0x152))/0x1+parseInt(_0x65efb7(0xd8))/0x2*(-parseInt(_0x65efb7(0x137))/0x3)+-parseInt(_0x65efb7(0x1c0))/0x4+-parseInt(_0x65efb7(0x197))/0x5*(-parseInt(_0x65efb7(0x19a))/0x6)+-parseInt(_0x65efb7(0x12b))/0x7+-parseInt(_0x65efb7(0x198))/0x8*(parseInt(_0x65efb7(0x167))/0x9)+-parseInt(_0x65efb7(0x105))/0xa*(-parseInt(_0x65efb7(0x1aa))/0xb);if(_0x104c23===_0x488d96)break;else _0x533ce3['push'](_0x533ce3['shift']());}catch(_0x31d825){_0x533ce3['push'](_0x533ce3['shift']());}}}(_0x2214,0x2f203));function z(_0x3ff91c,_0x59b24f,_0x43d825,_0x2339c9,_0x1a4247,_0x1ab7e6){var _0x1e2a13=_0x4a90,_0x39ba42,_0x297189,_0x1decfd,_0x1d4b2e;this[_0x1e2a13(0x13f)]=_0x3ff91c,this['host']=_0x59b24f,this[_0x1e2a13(0x111)]=_0x43d825,this['nodeModules']=_0x2339c9,this['dockerizedApp']=_0x1a4247,this['eventReceivedCallback']=_0x1ab7e6,this[_0x1e2a13(0x174)]=!0x0,this[_0x1e2a13(0x182)]=!0x0,this[_0x1e2a13(0xdd)]=!0x1,this['_connecting']=!0x1,this['_inNextEdge']=((_0x297189=(_0x39ba42=_0x3ff91c[_0x1e2a13(0x169)])==null?void 0x0:_0x39ba42[_0x1e2a13(0x10a)])==null?void 0x0:_0x297189[_0x1e2a13(0x193)])===_0x1e2a13(0x11d),this[_0x1e2a13(0x1b1)]=!((_0x1d4b2e=(_0x1decfd=this[_0x1e2a13(0x13f)][_0x1e2a13(0x169)])==null?void 0x0:_0x1decfd[_0x1e2a13(0x12a)])!=null&&_0x1d4b2e['node'])&&!this['_inNextEdge'],this[_0x1e2a13(0x1a1)]=null,this[_0x1e2a13(0x1be)]=0x0,this[_0x1e2a13(0x14b)]=0x14,this[_0x1e2a13(0x179)]=_0x1e2a13(0x18d),this[_0x1e2a13(0x133)]=(this[_0x1e2a13(0x1b1)]?_0x1e2a13(0x15d):'Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20restarting\\x20the\\x20process\\x20may\\x20help;\\x20also\\x20see\\x20')+this['_webSocketErrorDocsLink'];}z[_0x54cc26(0x18a)][_0x54cc26(0x1c5)]=async function(){var _0x2c61ab=_0x54cc26,_0x3e4a2e,_0x25368c;if(this['_WebSocketClass'])return this['_WebSocketClass'];let _0x4cbaf9;if(this[_0x2c61ab(0x1b1)]||this['_inNextEdge'])_0x4cbaf9=this[_0x2c61ab(0x13f)][_0x2c61ab(0x1b5)];else{if((_0x3e4a2e=this[_0x2c61ab(0x13f)][_0x2c61ab(0x169)])!=null&&_0x3e4a2e[_0x2c61ab(0x113)])_0x4cbaf9=(_0x25368c=this[_0x2c61ab(0x13f)][_0x2c61ab(0x169)])==null?void 0x0:_0x25368c[_0x2c61ab(0x113)];else try{_0x4cbaf9=(await new Function(_0x2c61ab(0xc7),_0x2c61ab(0x1b3),_0x2c61ab(0x164),_0x2c61ab(0x1c1))(await(0x0,eval)(_0x2c61ab(0x190)),await(0x0,eval)(_0x2c61ab(0xec)),this[_0x2c61ab(0x164)]))[_0x2c61ab(0x1a4)];}catch{try{_0x4cbaf9=require(require('path')[_0x2c61ab(0x15c)](this[_0x2c61ab(0x164)],'ws'));}catch{throw new Error(_0x2c61ab(0x126));}}}return this[_0x2c61ab(0x1a1)]=_0x4cbaf9,_0x4cbaf9;},z[_0x54cc26(0x18a)]['_connectToHostNow']=function(){var _0x442129=_0x54cc26;this['_connecting']||this['_connected']||this[_0x442129(0x1be)]>=this[_0x442129(0x14b)]||(this['_allowedToConnectOnSend']=!0x1,this[_0x442129(0x125)]=!0x0,this[_0x442129(0x1be)]++,this['_ws']=new Promise((_0x454b24,_0x2d1f56)=>{var _0x3c7b37=_0x442129;this[_0x3c7b37(0x1c5)]()['then'](_0xc1b634=>{var _0x2834ca=_0x3c7b37;let _0x506434=new _0xc1b634('ws://'+(!this[_0x2834ca(0x1b1)]&&this[_0x2834ca(0x150)]?_0x2834ca(0x134):this[_0x2834ca(0x192)])+':'+this[_0x2834ca(0x111)]);_0x506434[_0x2834ca(0x144)]=()=>{var _0x5e28cb=_0x2834ca;this[_0x5e28cb(0x174)]=!0x1,this[_0x5e28cb(0x147)](_0x506434),this[_0x5e28cb(0x13c)](),_0x2d1f56(new Error(_0x5e28cb(0x1c4)));},_0x506434['onopen']=()=>{var _0x49bdba=_0x2834ca;this[_0x49bdba(0x1b1)]||_0x506434[_0x49bdba(0x13d)]&&_0x506434[_0x49bdba(0x13d)][_0x49bdba(0x15b)]&&_0x506434[_0x49bdba(0x13d)][_0x49bdba(0x15b)](),_0x454b24(_0x506434);},_0x506434['onclose']=()=>{var _0x15ef95=_0x2834ca;this[_0x15ef95(0x182)]=!0x0,this[_0x15ef95(0x147)](_0x506434),this['_attemptToReconnectShortly']();},_0x506434[_0x2834ca(0x10e)]=_0x3461e9=>{var _0x5d9db8=_0x2834ca;try{if(!(_0x3461e9!=null&&_0x3461e9[_0x5d9db8(0xca)])||!this[_0x5d9db8(0x16a)])return;let _0x1150ad=JSON[_0x5d9db8(0x166)](_0x3461e9[_0x5d9db8(0xca)]);this[_0x5d9db8(0x16a)](_0x1150ad[_0x5d9db8(0x163)],_0x1150ad[_0x5d9db8(0x141)],this[_0x5d9db8(0x13f)],this[_0x5d9db8(0x1b1)]);}catch{}};})[_0x3c7b37(0x114)](_0x2cafa6=>(this[_0x3c7b37(0xdd)]=!0x0,this[_0x3c7b37(0x125)]=!0x1,this[_0x3c7b37(0x182)]=!0x1,this[_0x3c7b37(0x174)]=!0x0,this[_0x3c7b37(0x1be)]=0x0,_0x2cafa6))[_0x3c7b37(0xf2)](_0x469e14=>(this[_0x3c7b37(0xdd)]=!0x1,this[_0x3c7b37(0x125)]=!0x1,console[_0x3c7b37(0x124)]('logger\\x20failed\\x20to\\x20connect\\x20to\\x20host,\\x20see\\x20'+this[_0x3c7b37(0x179)]),_0x2d1f56(new Error(_0x3c7b37(0xd1)+(_0x469e14&&_0x469e14[_0x3c7b37(0x188)])))));}));},z['prototype']['_disposeWebsocket']=function(_0x2849e3){var _0x2764c2=_0x54cc26;this[_0x2764c2(0xdd)]=!0x1,this[_0x2764c2(0x125)]=!0x1;try{_0x2849e3['onclose']=null,_0x2849e3[_0x2764c2(0x144)]=null,_0x2849e3['onopen']=null;}catch{}try{_0x2849e3[_0x2764c2(0x1ca)]<0x2&&_0x2849e3['close']();}catch{}},z[_0x54cc26(0x18a)]['Line truncated
|
||||
)
|
||||
);
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
}
|
||||
/* istanbul ignore next */ function oo_oo(
|
||||
/**@type{any}**/ i,
|
||||
/**@type{any}**/ ...v
|
||||
) {
|
||||
try {
|
||||
oo_cm().consoleLog(i, v);
|
||||
} catch (e) {}
|
||||
return v;
|
||||
}
|
||||
/* istanbul ignore next */ function oo_tr(
|
||||
/**@type{any}**/ i,
|
||||
/**@type{any}**/ ...v
|
||||
) {
|
||||
try {
|
||||
oo_cm().consoleTrace(i, v);
|
||||
} catch (e) {}
|
||||
return v;
|
||||
}
|
||||
/* istanbul ignore next */ function oo_tx(
|
||||
/**@type{any}**/ i,
|
||||
/**@type{any}**/ ...v
|
||||
) {
|
||||
try {
|
||||
oo_cm().consoleError(i, v);
|
||||
} catch (e) {}
|
||||
return v;
|
||||
}
|
||||
/* istanbul ignore next */ function oo_ts(/**@type{any}**/ v) {
|
||||
try {
|
||||
oo_cm().consoleTime(v);
|
||||
} catch (e) {}
|
||||
return v;
|
||||
}
|
||||
/* istanbul ignore next */ function oo_te(
|
||||
/**@type{any}**/ v,
|
||||
/**@type{any}**/ i,
|
||||
) {
|
||||
try {
|
||||
oo_cm().consoleTimeEnd(v, i);
|
||||
} catch (e) {}
|
||||
return v;
|
||||
} /*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/
|
||||
</script>
|
||||
|
||||
<style lang="sass" scoped>
|
||||
|
||||
Reference in new issue
Block a user