From 72d709cd13c3d044a49e0d23079320b9b2028440 Mon Sep 17 00:00:00 2001 From: romankko2 Date: Wed, 8 Feb 2023 18:41:07 +0100 Subject: [PATCH 1/8] [subtask, masterTask] delete requests --- app/src/plugins/app/_config/main.ts | 8 ++-- .../master-task/z-master-task-modal.vue | 45 ++++++++++++------- .../tm@modal/task/z-delete-task-modal.vue | 4 +- .../plugins/tm@modal/task/z-task-modal.vue | 16 +++---- 4 files changed, 44 insertions(+), 29 deletions(-) diff --git a/app/src/plugins/app/_config/main.ts b/app/src/plugins/app/_config/main.ts index 07945f5..dc4d824 100644 --- a/app/src/plugins/app/_config/main.ts +++ b/app/src/plugins/app/_config/main.ts @@ -54,17 +54,17 @@ const options: Options = { // 'GET v1/master-tasks/(id)': true, // 'GET v1/master-tasks': true, 'POST v1/master-tasks/(id)': true, - 'DELETE v1/master-tasks/(id)': true, - 'POST v1/master-tasks': true, + // 'DELETE v1/master-tasks/(id)': true, + // 'POST v1/master-tasks': true, - 'GET v1/overview/projects': true, + // 'GET v1/overview/projects': true, 'GET v1/overview/tasks': true, 'GET v1/overview/teams': true, 'GET v1/overview/ongoing-tasks': true, 'GET v1/overview/unscheduled-tasks': true, 'GET v1/tasks/(id)': true, - 'POST v1/tasks/(id)': true, + // 'POST v1/tasks/(id)': true, 'DELETE v1/tasks/(id)': true, // 'GET v1/teams/(id)': true, diff --git a/app/src/plugins/tm@modal/master-task/z-master-task-modal.vue b/app/src/plugins/tm@modal/master-task/z-master-task-modal.vue index 4c659b3..be661e1 100644 --- a/app/src/plugins/tm@modal/master-task/z-master-task-modal.vue +++ b/app/src/plugins/tm@modal/master-task/z-master-task-modal.vue @@ -12,19 +12,22 @@ - + > checkmark-icon pencil-icon - trash-icon + trash-icon @@ -336,6 +339,7 @@ export default { errorUtils, v$: useVuelidate(), teams: null, + projects: null, employees: null, employeeSelect: null, teamSelect: '', @@ -348,9 +352,11 @@ export default { validations() { return { masterTask: { - project_code: { required }, + project_id: { required }, name: { required }, team: { required }, + // duration: { required }, + // description: { required }, deadline: { required }, employees: { atLeastOne } }, @@ -364,10 +370,6 @@ export default { }, methods: { - itemSelected(x) { - console.log(x) - }, - getFullNameByEmployeeId(employee_id) { let fullName = '' let initials = '' @@ -394,6 +396,7 @@ export default { try { this.teams = await this.$axios.get_auth_data('v1/teams') const employees = await this.$axios.get_auth_data('v1/employees') + this.projects = await this.$axios.get_auth_data('v1/projects') this.employees = tmUtils.enrichEmployeesByFullName(employees) if (masterTask?.id) { @@ -414,15 +417,23 @@ export default { return try { + this.masterTask.duration = 5 + this.masterTask.description = 'popis' + this.masterTask.employees = this.masterTask.employees.map(employee => { + employee.duration = 5 + return employee + }) + this.masterTask.deadline = moment(this.masterTask.deadline).format("YYYY-MM-DD HH:MM:SS") + if (this.masterTask.id) await this.$axios.put_auth(`v1/mastertasks/${this.masterTask.id}`, this.masterTask) else - await this.$axios.post_auth('v1/mastertasks', this.masterTask) + await this.$axios.post_auth_data('v1/mastertasks', this.masterTask) this.closeModal() } catch (error) { - this.$toast(error) + this.$toast.error(error) } }, @@ -435,6 +446,10 @@ export default { this.$events.emit('show-delete-master-task-modal', { masterTask }) }, + openDeleteTaskModal(task) { + this.$events.emit('show-delete-task-modal', { task }) + }, + employeeSelected(selectedOption) { const employee = this.employees.find((empl) => empl.id == selectedOption.key) this.masterTask.employees.push(employee) diff --git a/app/src/plugins/tm@modal/task/z-delete-task-modal.vue b/app/src/plugins/tm@modal/task/z-delete-task-modal.vue index 5ca82b4..dff68a2 100644 --- a/app/src/plugins/tm@modal/task/z-delete-task-modal.vue +++ b/app/src/plugins/tm@modal/task/z-delete-task-modal.vue @@ -2,7 +2,7 @@
-

Ste si istý, že chcete zmazať {{ task.title }}?

+

Ste si istý, že chcete zmazať task z masterTasku {{ task.project_code }}?

masterTask.id == value) + const selectedMasterTask = this.masterTasks.find(masterTask => masterTask.id === value) + if (selectedMasterTask) { + this.task.project_code = selectedMasterTask.project_code + } }, employeeIdSelect(value) { From 05e038df7251b8846ae918a3e9432a71cfeaaaa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Glasn=C3=A1k?= Date: Thu, 9 Feb 2023 00:49:35 +0100 Subject: [PATCH 2/8] . --- app/src/plugins/lib@auth/login/_components/a-login-form.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/plugins/lib@auth/login/_components/a-login-form.vue b/app/src/plugins/lib@auth/login/_components/a-login-form.vue index 45e1942..e1f5c5f 100644 --- a/app/src/plugins/lib@auth/login/_components/a-login-form.vue +++ b/app/src/plugins/lib@auth/login/_components/a-login-form.vue @@ -6,7 +6,7 @@ :class="{ error: v$.form.password.$errors.length }" :append-icon="showPassword ? 'mdi-eye' : 'mdi-eye-off'" @click:append="showPassword = !showPassword" />
- Log In + Log In

Forgotten password ?

From 6e8f57d06dc5cc0b97109bf0aae6b9933d5c5b03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Glasn=C3=A1k?= Date: Thu, 9 Feb 2023 03:43:32 +0100 Subject: [PATCH 3/8] [Master task, sub task] API --- app/package-lock.json | 14 +-- app/package.json | 2 +- app/src/plugins/app/_config/App.vue | 13 ++- app/src/plugins/app/_theme/global.sass | 6 +- .../plugins/lib@auth/_theme/auth.theme.sass | 22 ++-- .../_components/a-project-calendar.vue | 3 +- .../tm@dashboard/projects/projects.vue | 10 ++ .../master-task/z-master-task-modal.vue | 103 +++++++++++++----- .../plugins/tm@modal/task/z-task-modal.vue | 52 +++++---- app/src/plugins/w/toast/utils/toast.utils.ts | 33 ++++-- .../plugins/w@custom/axios/models/axios.ts | 41 +++---- 11 files changed, 188 insertions(+), 111 deletions(-) diff --git a/app/package-lock.json b/app/package-lock.json index 0db4b55..7913c87 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -18,7 +18,7 @@ "@vuelidate/core": "^2.0.0", "@vuelidate/validators": "^2.0.0", "@vuepic/vue-datepicker": "^3.6.0", - "@vueup/vue-quill": "^1.0.1", + "@vueup/vue-quill": "^1.0.0-beta.11", "axios": "^1.1.3", "axios-auth-refresh": "^3.3.4", "core-js": "^3.8.3", @@ -3481,9 +3481,9 @@ } }, "node_modules/@vueup/vue-quill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@vueup/vue-quill/-/vue-quill-1.0.1.tgz", - "integrity": "sha512-/VJHwUxH2BAms7gwIlNhHb0KfCqn/58onOK1H0ZZX9juEha4nrb32yZbv2xLsqLxf+JKsNbJgQ8Ne6VF8ACNGw==", + "version": "1.0.0-beta.11", + "resolved": "https://registry.npmjs.org/@vueup/vue-quill/-/vue-quill-1.0.0-beta.11.tgz", + "integrity": "sha512-TeCgXPyVbN5muBPKm3EZjmIg/s8R8O0YmTp0RRG4J48skJVe035scLjeWZTDVrt/TEagmzcRUcB+9nPIyvF9fQ==", "dependencies": { "quill": "^1.3.7", "quill-delta": "^4.2.2" @@ -16417,9 +16417,9 @@ } }, "@vueup/vue-quill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@vueup/vue-quill/-/vue-quill-1.0.1.tgz", - "integrity": "sha512-/VJHwUxH2BAms7gwIlNhHb0KfCqn/58onOK1H0ZZX9juEha4nrb32yZbv2xLsqLxf+JKsNbJgQ8Ne6VF8ACNGw==", + "version": "1.0.0-beta.11", + "resolved": "https://registry.npmjs.org/@vueup/vue-quill/-/vue-quill-1.0.0-beta.11.tgz", + "integrity": "sha512-TeCgXPyVbN5muBPKm3EZjmIg/s8R8O0YmTp0RRG4J48skJVe035scLjeWZTDVrt/TEagmzcRUcB+9nPIyvF9fQ==", "requires": { "quill": "^1.3.7", "quill-delta": "^4.2.2" diff --git a/app/package.json b/app/package.json index 33f8fb8..ccc7ce2 100644 --- a/app/package.json +++ b/app/package.json @@ -18,7 +18,7 @@ "@vuelidate/core": "^2.0.0", "@vuelidate/validators": "^2.0.0", "@vuepic/vue-datepicker": "^3.6.0", - "@vueup/vue-quill": "^1.0.1", + "@vueup/vue-quill": "^1.0.0-beta.11", "axios": "^1.1.3", "axios-auth-refresh": "^3.3.4", "core-js": "^3.8.3", diff --git a/app/src/plugins/app/_config/App.vue b/app/src/plugins/app/_config/App.vue index 6de527d..8135608 100644 --- a/app/src/plugins/app/_config/App.vue +++ b/app/src/plugins/app/_config/App.vue @@ -10,12 +10,12 @@ - + - + diff --git a/app/src/plugins/tm@dashboard/projects/projects.vue b/app/src/plugins/tm@dashboard/projects/projects.vue index 331cce5..b5547cc 100644 --- a/app/src/plugins/tm@dashboard/projects/projects.vue +++ b/app/src/plugins/tm@dashboard/projects/projects.vue @@ -84,6 +84,7 @@ export default { }) this.$events.on('on-master-task-edited', (masterTask) => { + this.masterTasks = this.masterTasks.map(mTask => mTask.id == masterTask.id ? masterTask : mTask) this._getData() }) }, @@ -92,7 +93,7 @@ export default { async _getData() { try { this.teams = await this.$axios.get_auth_data('v1/teams') - this.projects = await this.$axios.get_auth_data('v1/projects') + this.projects = await this.$axios.get_auth_data('v1/projects') this.employees = await this.$axios.get_auth_data('v1/employees') this.masterTasks = await this.$axios.get_auth_data('v1/mastertasks') } catch (error) { diff --git a/app/src/plugins/tm@modal/blocker/z-blocker-modal.vue b/app/src/plugins/tm@modal/blocker/z-blocker-modal.vue index 68b9f88..734335a 100644 --- a/app/src/plugins/tm@modal/blocker/z-blocker-modal.vue +++ b/app/src/plugins/tm@modal/blocker/z-blocker-modal.vue @@ -46,6 +46,7 @@ >
+ + + +
+ +

Status

+
+
+
+ + +

Ukončený

+

Neukončený

+
+
+
+ + + +
+ +

Deadline

+
+
+
+ + +

{{ tmUtils.formatDateTime(masterTask.deadline) }}

+
+
+
+ + + +
+ +

Tím

+
+
+
+ + +

{{ masterTask.team?.name }}

+
+

+ {{ employee.name.charAt(0) + employee.surname.charAt(0) }} +

+

+

+
+
+
+ + + +
+ +

Naplánovaný čas

+
+
+
+ + +

{{ masterTask?.duration?.toFixed(2) }} h

+
+
+
+ + + +
+ +

Odpracovaný čas

+
+
+
+ + +

{{ masterTask.time_worked?.toFixed(2) }} h

+
+
+
+ + + +
+ +

Zostávajúci čas

+
+
+
+ + +

{{ (masterTask.duration - masterTask.time_worked)?.toFixed(2) }} h

+
+
+
+
+

Popis zadania

+
+

Prílohy

+
+
+ +

{{ file.name }}

+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/app/src/plugins/tm@modal/master-task/_components/a-tasks-table.vue b/app/src/plugins/tm@modal/master-task/_components/a-tasks-table.vue new file mode 100644 index 0000000..827ca12 --- /dev/null +++ b/app/src/plugins/tm@modal/master-task/_components/a-tasks-table.vue @@ -0,0 +1,71 @@ + + + + + \ No newline at end of file diff --git a/app/src/plugins/tm@modal/master-task/_mixins/selects.mixin.ts b/app/src/plugins/tm@modal/master-task/_mixins/selects.mixin.ts new file mode 100644 index 0000000..d6d003e --- /dev/null +++ b/app/src/plugins/tm@modal/master-task/_mixins/selects.mixin.ts @@ -0,0 +1,58 @@ +export default { + computed: { + employeesOptions() { + const selectedEmployees = [...this.masterTask.employees, ...this.masterTask.team?.employees] + .map(employee => employee.id) + + const employees = this.employees.filter( + (employee) => !selectedEmployees.includes(employee.id) + ) || [] + + return employees.map((employee) => { + return { + key: employee.id, + value: `${employee.name} ${employee.surname}`, + } + }) + } + }, + + methods: { + onProjectSelected({ key }) { + const project = this.projects.find(project => project.id == key) + this.masterTask.project_code = project.code + this.masterTask.project_id = project.id + }, + + onEmployeeSelected({ key }) { + const employee = this.employees.find(employee => employee.id == key) + this.masterTask.employees.push(employee) + this.showAddEmployeeInput = false + }, + + onEmployeeDurationChanged() { + let totalDuration = 0 + + this.masterTask.employees = this.masterTask.employees.map(employee => { + if (typeof employee.duration == 'string') { + totalDuration += parseInt(employee.duration) + employee.duration = parseInt(employee.duration) + } + else if (typeof employee.duration == 'number') { + totalDuration += employee.duration + } + + return employee + }) + + this.masterTask.duration = totalDuration + } + }, + + watch: { + 'masterTask.team_id'(value) { + if (!value) return + this.masterTask.team = this.teams.find(team => team.id == value) + } + } +} \ No newline at end of file diff --git a/app/src/plugins/tm@modal/master-task/z-master-task-modal.vue b/app/src/plugins/tm@modal/master-task/z-master-task-modal.vue index fcf79e2..2046ea1 100644 --- a/app/src/plugins/tm@modal/master-task/z-master-task-modal.vue +++ b/app/src/plugins/tm@modal/master-task/z-master-task-modal.vue @@ -4,138 +4,50 @@ - + - + - + - + - + - +

{{ employee.name.charAt(0) + employee.surname.charAt(0) }}

- + +

+ {{ employee.name.charAt(0) + employee.surname.charAt(0) }} +

+
- - Pridať zamestnanca - + -