diff --git a/application/config/routes.php b/application/config/routes.php index 1aba832b0..65445b0a0 100644 --- a/application/config/routes.php +++ b/application/config/routes.php @@ -135,6 +135,8 @@ $route['lvplan/html/detail'] = 'LvPlanHTMLDetail'; // load routes from extensions, also look for environment-specific configs $subdirs = ['application/config/extensions', 'application/config/' . ENVIRONMENT . '/extensions']; +$route['api/frontend/v1/tempus/Tags/getTagsByCalendar/(:num)'] = 'api/frontend/v1/tempus/Tags/getTagsByCalendar/$1'; + foreach($subdirs as $subdir) { if(is_dir($subdir)) diff --git a/application/config/tempus.php b/application/config/tempus.php index e3e18b954..833f5655f 100644 --- a/application/config/tempus.php +++ b/application/config/tempus.php @@ -2,4 +2,11 @@ $config['send_update_mails'] = false; $config['calendar_start'] = 7; -$config['calendar_end'] = 23; \ No newline at end of file +$config['calendar_end'] = 23; + + +$config['tempus_tags'] = [ + 'prioone' => ['readonly' => false], + 'priotwo' => ['readonly' => true], + 'hinweis' => ['readonly' => false], +]; \ No newline at end of file diff --git a/application/controllers/api/frontend/v1/tempus/Tags.php b/application/controllers/api/frontend/v1/tempus/Tags.php new file mode 100644 index 000000000..c5223cd9a --- /dev/null +++ b/application/controllers/api/frontend/v1/tempus/Tags.php @@ -0,0 +1,53 @@ + self::BERECHTIGUNG_KURZBZ, + 'getTags' => self::BERECHTIGUNG_KURZBZ, + 'getTagsByCalendar' => self::BERECHTIGUNG_KURZBZ, + 'addTag' => self::BERECHTIGUNG_KURZBZ, + 'updateTag' => self::BERECHTIGUNG_KURZBZ, + 'doneTag' => self::BERECHTIGUNG_KURZBZ, + 'deleteTag' => self::BERECHTIGUNG_KURZBZ + ]); + + $this->config->load('tempus'); + } + + public function getTag($readonly_tags = null) + { + parent::getTag($this->config->item('tempus_tags')); + } + public function getTags($tags = null) + { + parent::getTags($this->config->item('tempus_tags')); + } + public function getTagsByCalendar($eindeutige_kalender_gruppen_id = null) + { + parent::getTagsByAssignmentTypeValue('eindeutige_kalender_gruppen_id', $eindeutige_kalender_gruppen_id, $this->config->item('tempus_tags')); + } + public function addTag($withZuordnung = true, $updatable_tags = null) + { + parent::addTag(true, $this->config->item('tempus_tags')); + } + public function updateTag($updatable_tags = null) + { + parent::updateTag($this->config->item('tempus_tags')); + } + public function deleteTag($withZuordnung = true, $updatable_tags = null) + { + parent::deleteTag(true, $this->config->item('tempus_tags')); + } + public function doneTag($updatable_tags = null) + { + parent::doneTag($this->config->item('tempus_tags')); + } +} diff --git a/application/controllers/system/MigrateKalender.php b/application/controllers/system/MigrateKalender.php index 05fc9d0cb..648dc68a1 100644 --- a/application/controllers/system/MigrateKalender.php +++ b/application/controllers/system/MigrateKalender.php @@ -32,6 +32,36 @@ class MigrateKalender extends CLI_Controller /** * Everything has a beginning */ + public function refreshTablesAndFullMigrateOfStundenplanReservierung($von, $bis = null, $studiengang_kz = null, $ort_kurzbz = null) + { + echo "Refreshing calendar related tables...\n"; + $this->resetBeforeNewStundenplanReservierungImport(); + echo "Calendar related tables refreshed successfully.\n\n"; + + echo "Starting full migration of Stundenplan and Reservierung from $von to " . ($bis ?? '2100-12-31') . "...\n"; + $this->fullMigrateOfStundenplanReservierung($von, $bis, $studiengang_kz, $ort_kurzbz); + echo "Full migration of Stundenplan and Reservierung completed successfully.\n"; + } + + public function fullMigrateOfStundenplanReservierung($von, $bis = null, $studiengang_kz = null, $ort_kurzbz = null) + { + echo "Starting migration of Stundenplan from $von to " . ($bis ?? '2100-12-31') . "...\n"; + $this->migrateStundenplan($von, $bis, $studiengang_kz); + echo "Stundenplan migration completed successfully.\n\n"; + + echo "Starting migration of Reservierung from $von to " . ($bis ?? '2100-12-31') . "...\n"; + $this->migrateReservierung($von, $bis, $ort_kurzbz); + echo "Reservierung migration completed successfully.\n\n"; + + echo "Starting migration of Stundenplan Betriebsmittel entries...\n"; + $this->migrateStundenplanBetriebsmittelEntries(); + echo "Stundenplan Betriebsmittel entries migration completed successfully.\n\n"; + + echo "Starting to add title values as tags to calendar entries...\n"; + $this->addTitleValuesAsTagsToKalenderEntries(); + echo "Adding title values as tags to calendar entries completed successfully.\n\n"; + } + public function migrateStundenplan($von, $bis = null, $studiengang_kz = null) { if (is_null($von)) @@ -268,8 +298,9 @@ class MigrateKalender extends CLI_Controller * Removes calendar entries created by the Stundenplan and Reservierung migrations, * so that both imports can be started from scratch. */ - public function resetBeforeNewStundenplandevImport() + public function resetBeforeNewStundenplanReservierungImport() { + $db = new DB_Model(); $db->db->trans_start(); @@ -305,6 +336,28 @@ class MigrateKalender extends CLI_Controller WHERE typ IN ('lehreinheit', 'reservierung') )"); + $db->db->query("DELETE FROM public.tbl_notiz + WHERE notiz_id IN ( + SELECT notiz_id + FROM public.tbl_notizzuordnung + WHERE eindeutige_kalender_gruppen_id IN ( + SELECT eindeutige_gruppen_id + FROM lehre.tbl_kalender + ) + )"); + + $db->db->query("DELETE FROM public.tbl_notizzuordnung + WHERE eindeutige_kalender_gruppen_id IN ( + SELECT eindeutige_gruppen_id + FROM lehre.tbl_kalender + )"); + + $db->db->query("DELETE FROM public.tbl_betriebsmittel_kalender + WHERE eindeutige_kalender_gruppen_id IN ( + SELECT eindeutige_gruppen_id + FROM lehre.tbl_kalender + )"); + $db->db->query("DELETE FROM lehre.tbl_kalender WHERE typ IN ('lehreinheit', 'reservierung')"); @@ -371,6 +424,45 @@ class MigrateKalender extends CLI_Controller $dbModel->db->query($query); } + public function addTitleValuesAsTagsToKalenderEntries() { + $dbModel = new DB_Model(); + + + $query = "SELECT + k.eindeutige_gruppen_id, + ARRAY_AGG(DISTINCT(spd.titel) ORDER BY spd.titel) AS titel, + MAX(spd.updateamum) AS updateamum + FROM lehre.tbl_stundenplandev spd + JOIN sync.tbl_stundenplandev_kalender spdk ON spd.stundenplandev_id = spdk.stundenplandev_id + JOIN lehre.tbl_kalender k ON k.kalender_id = spdk.kalender_id + WHERE k.typ = 'lehreinheit' AND k.eindeutige_gruppen_id IS NOT NULL AND spd.titel IS NOT NULL + GROUP BY k.eindeutige_gruppen_id"; + + $result = $dbModel->execReadOnlyQuery($query); + + if (isError($result)) { + error("Error while fetching title values for adding as tags: " . getError($result)); + return; + } + if (!hasData($result)) { + error("No title values found for adding as tags."); + return; + } + + $data = getData($result); + + foreach($data as $block) { + $eindeutige_gruppen_id = $block->eindeutige_gruppen_id; + $notizText = implode(' - ', array_filter($block->titel, function($titel) { + return !empty(trim($titel)); + })); + + if (!empty($notizText)) { + $this->addTag($eindeutige_gruppen_id, $notizText, $block->updateamum); + } + } + } + private function setKalendarEntriesGroupIDs() { $dbModel = new DB_Model(); @@ -645,4 +737,129 @@ class MigrateKalender extends CLI_Controller ); } } + + private function addTag($eindeutige_kalender_gruppen_id, $notizText, $lastUpdatedInOldSystem): bool + { + $notizType = 'hinweis'; + $insertvonMockUser = 'oldToNewTempusMigration'; + + if (is_null($eindeutige_kalender_gruppen_id) || empty($eindeutige_kalender_gruppen_id)) { + var_dump("Error: eindeutige_kalender_gruppen_id is null or empty."); + return false; + } + + $this->load->model('person/Notiz_model', 'NotizModel'); + $this->load->model('system/Notiztyp_model', 'NotiztypModel'); + $this->load->model('person/Notizzuordnung_model', 'NotizzuordnungModel'); + + $checkTyp = $this->NotiztypModel->loadWhere(array('typ_kurzbz' => $notizType)); + + if (isError($checkTyp)) + { + error("Error occurred while checking Notiztyp: " . $checkTyp->message); + return false; + } + + if (!hasData($checkTyp)) + { + error("Notiztyp 'hinweis' does not exist. Please create it before adding tags."); + return false; + } + + + $this->NotizzuordnungModel->addJoin('tbl_notiz', 'tbl_notiz.notiz_id = tbl_notizzuordnung.notiz_id', 'LEFT'); + $this->NotizzuordnungModel->db->where('tbl_notiz.typ', $notizType); + $this->NotizzuordnungModel->db->where('tbl_notiz.insertvon', $insertvonMockUser); + $oldNotizZuordnung = $this->NotizzuordnungModel->loadWhere(array('eindeutige_kalender_gruppen_id' => $eindeutige_kalender_gruppen_id)); + if (isError($oldNotizZuordnung)) + { + error("Error occurred while checking Notizzuordnung: " . $oldNotizZuordnung->message); + return false; + } + if (hasData($oldNotizZuordnung)) + { + return $this->updateTag($eindeutige_kalender_gruppen_id, $notizText, $lastUpdatedInOldSystem); + } + + + $insertResult = $this->NotizModel->insert(array( + 'titel' => 'TAG', + 'text' => $notizText, + 'verfasser_uid' => null, + 'erledigt' => false, + 'insertamum' => date('Y-m-d H:i:s'), + 'insertvon' => $insertvonMockUser, + 'typ' => $notizType + )); + + if (isError($insertResult)) + { + error("Error occurred while inserting Notiz: " . $insertResult->message); + return false; + } + + $insertZuordnung = $this->NotizzuordnungModel->insert(array( + 'notiz_id' => $insertResult->retval, + 'eindeutige_kalender_gruppen_id' => $eindeutige_kalender_gruppen_id + )); + + if (isError($insertZuordnung)) + { + error("Error occurred while inserting Notizzuordnung: " . $insertZuordnung->message); + return false; + } + + return true; + } + + private function updateTag($eindeutige_kalender_gruppen_id, $notizText, $lastUpdatedInOldSystem) + { + $notizType = 'hinweis'; + $insertvonMockUser = 'oldToNewTempusMigration'; + + $this->NotizzuordnungModel->addJoin('tbl_notiz', 'tbl_notiz.notiz_id = tbl_notizzuordnung.notiz_id', 'LEFT'); + $this->NotizzuordnungModel->db->where('tbl_notiz.typ', $notizType); + $this->NotizzuordnungModel->db->where('tbl_notiz.insertvon', $insertvonMockUser); + $notizZuordnungRes = $this->NotizzuordnungModel->loadWhere(array('eindeutige_kalender_gruppen_id' => $eindeutige_kalender_gruppen_id)); + if (isError($notizZuordnungRes)) + { + error("Error occurred while loading Notizzuordnung: " . $notizZuordnungRes->message); + return false; + } + + + $tag = $this->NotizModel->loadWhere(array('notiz_id' => $notizZuordnungRes->retval[0]->notiz_id)); + if (isError($tag)) + { + error("Error occurred while loading Notiz: " . $tag->message); + return false; + } + + if (!hasData($tag)) + { + error("Error occurred while loading Notiz: " . $tag->message); + return false; + } + + $adjustedLastUpdatedInOldSystem = date('Y-m-d H:i:s', strtotime($lastUpdatedInOldSystem) + 5); + if ($tag->retval[0]->updateamum >= $adjustedLastUpdatedInOldSystem) + { + return true; + } + + $updateData = $this->NotizModel->update(array('notiz_id' => $tag->retval[0]->notiz_id), + array('text' => $notizText, + 'updateamum' => date('Y-m-d H:i:s'), + 'updatevon' => $insertvonMockUser, + 'bearbeiter_uid' => null, + ) + ); + if (isError($updateData)) + { + error("Error occurred while updating Notiz: " . $updateData->message); + return false; + } + + return true; + } } diff --git a/application/core/Tag_Controller.php b/application/core/Tag_Controller.php index 5b9bac6c5..2581c6a51 100644 --- a/application/core/Tag_Controller.php +++ b/application/core/Tag_Controller.php @@ -38,6 +38,8 @@ class Tag_Controller extends FHCAPI_Controller public function getTag($readonly_tags = null) { $language = $this->_getLanguageIndex(); + $index_bezeichnung_mehrsprachig = $language - 1; + $id = $this->input->get('id'); if (is_array($readonly_tags) && !isEmptyArray($readonly_tags)) @@ -62,7 +64,7 @@ class Tag_Controller extends FHCAPI_Controller $this->NotizModel->addSelect( "tbl_notiz.titel, tbl_notiz.text, - array_to_json(bezeichnung_mehrsprachig::varchar[])->>". $language. " as bezeichnung, + array_to_json(bezeichnung_mehrsprachig::varchar[])->>". $index_bezeichnung_mehrsprachig. " as bezeichnung, tbl_notiz.notiz_id, tbl_notiz_typ.style, tbl_notiz.erledigt as done, @@ -87,9 +89,12 @@ class Tag_Controller extends FHCAPI_Controller public function getTags($tags = null) { + $language = $this->_getLanguageIndex(); + $index_bezeichnung_mehrsprachig = $language - 1; + $this->NotiztypModel->addSelect( 'typ_kurzbz as tag_typ_kurzbz, - array_to_json(bezeichnung_mehrsprachig::varchar[])->>0 as bezeichnung, + array_to_json(bezeichnung_mehrsprachig::varchar[])->>'. $index_bezeichnung_mehrsprachig. ' as bezeichnung, style, beschreibung, tag @@ -106,7 +111,36 @@ class Tag_Controller extends FHCAPI_Controller $notiztypen = $this->NotiztypModel->loadWhere(array('aktiv' => true)); $this->terminateWithSuccess(hasData($notiztypen) ? getData($notiztypen) : array()); } + public function getTagsByAssignmentTypeValue($zuordnung_typ, $zuordnung_id, $tags = null) + { + $language = $this->_getLanguageIndex(); + $index_bezeichnung_mehrsprachig = $language - 1; + $this->NotizzuordnungModel->addSelect( + 'tbl_notizzuordnung.notiz_id as notiz_id, + typ_kurzbz as tag_typ_kurzbz, + array_to_json(bezeichnung_mehrsprachig::varchar[])->>'. $index_bezeichnung_mehrsprachig. ' as bezeichnung, + style, + beschreibung, + tag, + tbl_notiz.erledigt as done + ' + ); + + if (is_array($tags) && !isEmptyArray($tags)) + { + $tags = $this->_filterTag($tags, false); + $this->NotizzuordnungModel->db->where_in('tbl_notiz_typ.typ_kurzbz', $tags); + } + + $this->NotizzuordnungModel->addJoin('public.tbl_notiz', 'public.tbl_notizzuordnung.notiz_id = public.tbl_notiz.notiz_id'); + $this->NotizzuordnungModel->addJoin('public.tbl_notiz_typ', 'public.tbl_notiz.typ = public.tbl_notiz_typ.typ_kurzbz'); + + $this->NotizzuordnungModel->addOrder('prioritaet'); + + $notiztypen = $this->NotizzuordnungModel->loadWhere(array('aktiv' => true, $zuordnung_typ => $zuordnung_id)); + $this->terminateWithSuccess(hasData($notiztypen) ? getData($notiztypen) : array()); + } public function addTag($withZuordnung = true, $updatable_tags = null) { $postData = $this->getPostJson(); @@ -126,7 +160,7 @@ class Tag_Controller extends FHCAPI_Controller if (!in_array($postData->tag_typ_kurzbz, $tags)) $this->terminateWithError($this->p->t('ui', 'keineBerechtigung')); } - + if ($withZuordnung) { $return = array(); @@ -135,7 +169,7 @@ class Tag_Controller extends FHCAPI_Controller $this->terminateWithError('Error occurred', self::ERROR_TYPE_GENERAL); $values = array_unique($postData->values); - + foreach ($values as $value) { $insertResult = $this->addNotiz($postData); diff --git a/application/libraries/KalenderLib.php b/application/libraries/KalenderLib.php index c047ad4ea..a435911da 100644 --- a/application/libraries/KalenderLib.php +++ b/application/libraries/KalenderLib.php @@ -169,6 +169,69 @@ class KalenderLib ); $this->_ci->KalenderModel->addJoin('public.tbl_studiengang le_studiengang', 'le_lehrverband.studiengang_kz = le_studiengang.studiengang_kz', 'LEFT'); + // Include tags in the query + $this->_ci->load->config('tempus'); + $tags = $this->_ci->config->item('tempus_tags'); + + $whereTags = ''; + if (is_array($tags) && !isEmptyArray($tags)) { + $tags = array_keys($tags); + + foreach ($tags as $key => $tag) { + $tags[$key] = $this->_ci->KalenderModel->escape($tag); + } + $whereTags = " AND nt.typ_kurzbz IN (" . implode(",", $tags) . ")"; + } + $subQueryTag = "( + SELECT + tag.eindeutige_kalender_gruppen_id, + COALESCE(json_agg(tag ORDER BY tag.done, tag.prioritaet), '[]'::json) AS tags + FROM ( + SELECT DISTINCT ON (n.notiz_id) + n.notiz_id AS id, + nt.typ_kurzbz, + array_to_json(nt.bezeichnung_mehrsprachig)->>0 AS beschreibung, + n.text AS notiz, + nt.style, + n.erledigt AS done, + nt.prioritaet AS prioritaet, + nz.eindeutige_kalender_gruppen_id + FROM public.tbl_notizzuordnung AS nz + JOIN public.tbl_notiz AS n ON nz.notiz_id = n.notiz_id + JOIN public.tbl_notiz_typ AS nt ON n.typ = nt.typ_kurzbz " . $whereTags . " + ) AS tag + GROUP BY tag.eindeutige_kalender_gruppen_id + ) AS tag_data_agg"; + + $this->_ci->KalenderModel->addJoin($subQueryTag, 'tag_data_agg.eindeutige_kalender_gruppen_id = tbl_kalender.eindeutige_gruppen_id', 'LEFT'); + // End of tags inclusion + + // Include assigned operational resources in the query + $subQueryResource = "( + SELECT + resource.eindeutige_kalender_gruppen_id, + COALESCE(json_agg(resource ORDER BY resource.beschreibung), '[]'::json) AS resources + FROM ( + SELECT + betriebsmittel_kalender.*, + betriebsmittel.beschreibung, + betriebsmittel.verplanen + FROM lehre.tbl_betriebsmittel_kalender AS betriebsmittel_kalender + JOIN wawi.tbl_betriebsmittel AS betriebsmittel + ON betriebsmittel.betriebsmittel_id = betriebsmittel_kalender.betriebsmittel_id + WHERE betriebsmittel.verplanen = TRUE + ) AS resource + GROUP BY resource.eindeutige_kalender_gruppen_id + ) AS resource_data_agg"; + + $this->_ci->KalenderModel->addJoin( + $subQueryResource, + 'resource_data_agg.eindeutige_kalender_gruppen_id = tbl_kalender.eindeutige_gruppen_id', + 'LEFT' + ); + // End of operational resources inclusion + + $this->_ci->KalenderModel->db->where('tbl_kalender.von >=', $start_date); $this->_ci->KalenderModel->db->where('tbl_kalender.bis <', $end_date); } @@ -190,6 +253,8 @@ class KalenderLib { $von = new DateTime($row->von); $bis = new DateTime($row->bis); + $resources = isset($row->resources) ? $row->resources : []; + $parsedResources = is_string($resources) ? json_decode($resources, true) : $resources; $events[$id] = (object) [ 'kalender_id' => $id, @@ -235,6 +300,8 @@ class KalenderLib 'collisions' => false, 'has_assigned_resources' => isset($row->has_assigned_resources) ? $row->has_assigned_resources : false, 'updateamum' => isset($row->updateamum) ? $row->updateamum : null, + 'resources' => is_array($parsedResources) ? $parsedResources : [], + 'tags' => isset($row->tags) ? $row->tags : [], ]; } @@ -566,15 +633,6 @@ class KalenderLib $this->_ci->KalenderModel->db->where_not_in('status_kurzbz', array('deleted')); - $this->_ci->KalenderModel->addSelect([ - "( - SELECT COUNT(*) FROM lehre.tbl_betriebsmittel_kalender - WHERE tbl_betriebsmittel_kalender.eindeutige_kalender_gruppen_id = tbl_kalender.eindeutige_gruppen_id - ) AS has_assigned_resources" - ]); - - $this->_ci->KalenderModel->addOrder('tbl_kalender.eindeutige_gruppen_id', 'DESC'); - $data = $this->_ci->KalenderModel->load(); return $this->_mapEvents($data); @@ -1383,16 +1441,6 @@ class KalenderLib } } - /* foreach ($specialGroups as $group) - { - $this->_addSpecialGroupToEvent($kalender_id, $group['gruppe_kurzbz'], $group['rolle']); - } - - foreach ($groups as $group) - { - $this->_addGroupToEvent($kalender_id, $group['stg_kz'], $group['semester'], $group['verband'], $group['gruppe'], $group['rolle']); - }*/ - if (isSuccess($kalendereventresult) && !is_null($ort_kurzbz)) { $ortresult = $this->_addKalenderOrt($kalender_id, $ort_kurzbz); diff --git a/application/views/Tempus.php b/application/views/Tempus.php index f390cdb86..863f7403c 100644 --- a/application/views/Tempus.php +++ b/application/views/Tempus.php @@ -9,6 +9,7 @@ 'tabulator5' => true, 'vuedatepicker11' => true, 'momentjs2' => true, + 'tags' => true, 'phrases' => array( 'global', 'ui', diff --git a/public/css/components/calendar/events.css b/public/css/components/calendar/events.css index 8946c1856..f224c6f7b 100644 --- a/public/css/components/calendar/events.css +++ b/public/css/components/calendar/events.css @@ -86,6 +86,9 @@ pointer-events: none; background-color: transparent !important; border: none !important; + width: fit-content; + margin-left: auto; + margin-right: auto; } .fhc-resize-bar--top { diff --git a/public/css/tags.css b/public/css/tags.css index e92f415b2..61e0d46e9 100644 --- a/public/css/tags.css +++ b/public/css/tags.css @@ -17,6 +17,13 @@ transform: scale(1.15); } +/* add prop that disasbles hover and cursor*/ +.tag.disabled:hover +{ + transform: none; + cursor: default; +} + .tag_rot { background-color: #ff0000ff; } diff --git a/public/js/api/factory/tempus/tag.js b/public/js/api/factory/tempus/tag.js new file mode 100644 index 000000000..6b8a4ce01 --- /dev/null +++ b/public/js/api/factory/tempus/tag.js @@ -0,0 +1,59 @@ +export default { + + getTag(data) + { + return { + method: 'get', + url: '/api/frontend/v1/tempus/Tags/getTag', + params: data + }; + }, + + getTags(data) + { + return { + method: 'get', + url: '/api/frontend/v1/tempus/Tags/getTags' + }; + }, + getTagsByCalendar(calenderGroupId) + { + return { + method: 'get', + url: '/api/frontend/v1/tempus/Tags/getTagsByCalendar/' + calenderGroupId, + }; + }, + addTag(data) + { + return { + method: 'post', + url: '/api/frontend/v1/tempus/Tags/addTag', + params: data + }; + }, + updateTag(data) + { + return { + method: 'post', + url: '/api/frontend/v1/tempus/Tags/updateTag', + params: data + }; + }, + doneTag(data) + { + return { + method: 'post', + url: '/api/frontend/v1/tempus/Tags/doneTag', + params: data + }; + }, + + deleteTag(data) + { + return { + method: 'post', + url: '/api/frontend/v1/tempus/Tags/deleteTag', + params: data + }; + }, +}; diff --git a/public/js/components/Tag/Tag.js b/public/js/components/Tag/Tag.js index 7064c0c17..9cc923d81 100644 --- a/public/js/components/Tag/Tag.js +++ b/public/js/components/Tag/Tag.js @@ -14,6 +14,10 @@ export default { 'deleted', ], props: { + isListItemShown: { + type: Boolean, + default: true + }, endpoint: { type: Object, required: true @@ -71,7 +75,7 @@ export default { 'id': tag_id }; - this.$api.call(this.endpoint.getTag(getData)) + await this.$api.call(this.endpoint.getTag(getData)) .then(result => result.data) .then(result => this.openModal(result)) }, @@ -119,7 +123,7 @@ export default { { postData.id = this.selectedTagId; this.tagData.id = this.selectedTagId; - this.$api.call(this.endpoint.updateTag(postData)); + await this.$api.call(this.endpoint.updateTag(postData)); this.$emit("updated", this.tagData); this.$refs.tagModal.hide(); } @@ -131,7 +135,7 @@ export default { return; } - this.$api.call(this.endpoint.addTag(postData)) + await this.$api.call(this.endpoint.addTag(postData)) .then(response => response.data) .then(response => { if (typeof response === 'number') { @@ -158,7 +162,7 @@ export default { done: !this.tagData.done, notiz: this.tagData.notiz, } - this.$api.call(this.endpoint.doneTag(postData)) + await this.$api.call(this.endpoint.doneTag(postData)) this.$emit("updated", this.tagData); this.$refs.tagModal.hide(); }, @@ -167,7 +171,7 @@ export default { let postData = { id: this.selectedTagId } - this.$api.call(this.endpoint.deleteTag(postData)) + await this.$api.call(this.endpoint.deleteTag(postData)) this.$emit("deleted", this.selectedTagId) this.$refs.tagModal.hide(); }, @@ -206,7 +210,7 @@ export default { } }, template: ` -