From 1877ab8c67e29fff541be34f9ac7a6560173920a Mon Sep 17 00:00:00 2001 From: sadnub Date: Sun, 17 Oct 2021 16:38:28 -0400 Subject: [PATCH] rework client manager and modals to composition api. Improved client/site delete --- api/tacticalrmm/clients/serializers.py | 2 + api/tacticalrmm/clients/views.py | 4 +- api/tacticalrmm/core/views.py | 5 +- web/src/api/clients.js | 46 +++- web/src/api/core.js | 2 +- web/src/components/ClientsManager.vue | 192 --------------- web/src/components/FileBar.vue | 6 +- .../accounts/PermissionsManager.vue | 6 +- web/src/components/agents/ChecksTab.vue | 6 + web/src/components/clients/ClientsForm.vue | 142 +++++++++++ web/src/components/clients/ClientsManager.vue | 223 ++++++++++++++++++ web/src/components/clients/DeleteClient.vue | 132 +++++++++++ web/src/components/clients/SitesForm.vue | 143 +++++++++++ web/src/components/clients/SitesTable.vue | 190 +++++++++++++++ .../components/modals/clients/ClientsForm.vue | 179 -------------- .../modals/clients/DeleteClient.vue | 165 ------------- .../components/modals/clients/SitesForm.vue | 197 ---------------- .../components/modals/clients/SitesTable.vue | 155 ------------ web/src/store/index.js | 17 +- web/src/utils/format.js | 15 ++ web/src/views/Dashboard.vue | 43 +++- 21 files changed, 950 insertions(+), 920 deletions(-) delete mode 100644 web/src/components/ClientsManager.vue create mode 100644 web/src/components/clients/ClientsForm.vue create mode 100644 web/src/components/clients/ClientsManager.vue create mode 100644 web/src/components/clients/DeleteClient.vue create mode 100644 web/src/components/clients/SitesForm.vue create mode 100644 web/src/components/clients/SitesTable.vue delete mode 100644 web/src/components/modals/clients/ClientsForm.vue delete mode 100644 web/src/components/modals/clients/DeleteClient.vue delete mode 100644 web/src/components/modals/clients/SitesForm.vue delete mode 100644 web/src/components/modals/clients/SitesTable.vue diff --git a/api/tacticalrmm/clients/serializers.py b/api/tacticalrmm/clients/serializers.py index 46d63c39..4716f104 100644 --- a/api/tacticalrmm/clients/serializers.py +++ b/api/tacticalrmm/clients/serializers.py @@ -103,6 +103,7 @@ class ClientSerializer(ModelSerializer): class SiteTreeSerializer(ModelSerializer): maintenance_mode = ReadOnlyField(source="has_maintenanace_mode_agents") failing_checks = ReadOnlyField(source="has_failing_checks") + agent_count = ReadOnlyField() class Meta: model = Site @@ -113,6 +114,7 @@ class ClientTreeSerializer(ModelSerializer): sites = SiteTreeSerializer(many=True, read_only=True) maintenance_mode = ReadOnlyField(source="has_maintenanace_mode_agents") failing_checks = ReadOnlyField(source="has_failing_checks") + agent_count = ReadOnlyField() class Meta: model = Client diff --git a/api/tacticalrmm/clients/views.py b/api/tacticalrmm/clients/views.py index 151068d4..b2560ec5 100644 --- a/api/tacticalrmm/clients/views.py +++ b/api/tacticalrmm/clients/views.py @@ -223,8 +223,8 @@ class GetUpdateDeleteSite(APIView): # only run tasks if it affects clients if site.agent_count > 0 and "move_to_site" in request.query_params.keys(): agents = Agent.objects.filter(site=site) - site = get_object_or_404(Site, pk=request.query_params["move_to_site"]) - agents.update(site=site) + new_site = get_object_or_404(Site, pk=request.query_params["move_to_site"]) + agents.update(site=new_site) generate_agent_checks_task.delay(all=True, create_tasks=True) elif site.agent_count > 0: diff --git a/api/tacticalrmm/core/views.py b/api/tacticalrmm/core/views.py index d2b0ed93..d1ef65e0 100644 --- a/api/tacticalrmm/core/views.py +++ b/api/tacticalrmm/core/views.py @@ -171,7 +171,10 @@ class GetAddCustomFields(APIView): permission_classes = [IsAuthenticated, EditCoreSettingsPerms] def get(self, request): - fields = CustomField.objects.all() + if "model" in request.query_params.keys(): + fields = CustomField.objects.filter(model=request.query_params["model"]) + else: + fields = CustomField.objects.all() return Response(CustomFieldSerializer(fields, many=True).data) def patch(self, request): diff --git a/web/src/api/clients.js b/web/src/api/clients.js index 6a7de072..e502a8fc 100644 --- a/web/src/api/clients.js +++ b/web/src/api/clients.js @@ -9,9 +9,53 @@ export async function fetchClients() { } catch (e) { console.error(e) } } +export async function fetchClient(id) { + try { + const { data } = await axios.get(`${baseUrl}/${id}/`) + return data + } catch (e) { console.error(e) } +} + +export async function saveClient(payload) { + const { data } = await axios.post(`${baseUrl}/`, payload) + return data +} + +export async function editClient(id, payload) { + const { data } = await axios.put(`${baseUrl}/${id}/`, payload) + return data +} + +export async function removeClient(id, params = {}) { + const { data } = await axios.delete(`${baseUrl}/${id}/`, { params: params }) + return data +} + export async function fetchSites() { try { const { data } = await axios.get(`${baseUrl}/sites/`) return data } catch (e) { console.error(e) } -} \ No newline at end of file +} + +export async function fetchSite(id) { + try { + const { data } = await axios.get(`${baseUrl}/sites/${id}/`) + return data + } catch (e) { console.error(e) } +} + +export async function saveSite(payload) { + const { data } = await axios.post(`${baseUrl}/sites/`, payload) + return data +} + +export async function editSite(id, payload) { + const { data } = await axios.put(`${baseUrl}/sites/${id}/`, payload) + return data +} + +export async function removeSite(id, params = {}) { + const { data } = await axios.delete(`${baseUrl}/sites/${id}/`, { params: params }) + return data +} diff --git a/web/src/api/core.js b/web/src/api/core.js index 6e61e569..3c04358e 100644 --- a/web/src/api/core.js +++ b/web/src/api/core.js @@ -6,7 +6,7 @@ export async function fetchCustomFields(params = {}) { try { const { data } = await axios.get(`${baseUrl}/customfields/`, { params: params }) return data - } catch (e) { } + } catch (e) { console.error(e) } } export async function uploadMeshAgent(payload) { diff --git a/web/src/components/ClientsManager.vue b/web/src/components/ClientsManager.vue deleted file mode 100644 index 0d7d7c59..00000000 --- a/web/src/components/ClientsManager.vue +++ /dev/null @@ -1,192 +0,0 @@ - - - \ No newline at end of file diff --git a/web/src/components/FileBar.vue b/web/src/components/FileBar.vue index bf194c79..68838b25 100644 --- a/web/src/components/FileBar.vue +++ b/web/src/components/FileBar.vue @@ -189,9 +189,9 @@ import DialogWrapper from "@/components/ui/DialogWrapper"; import DebugLog from "@/components/logs/DebugLog"; import PendingActions from "@/components/modals/logs/PendingActions"; -import ClientsManager from "@/components/ClientsManager"; -import ClientsForm from "@/components/modals/clients/ClientsForm"; -import SitesForm from "@/components/modals/clients/SitesForm"; +import ClientsManager from "@/components/clients/ClientsManager"; +import ClientsForm from "@/components/clients/ClientsForm"; +import SitesForm from "@/components/clients/SitesForm"; import UpdateAgents from "@/components/modals/agents/UpdateAgents"; import ScriptManager from "@/components/scripts/ScriptManager"; import EditCoreSettings from "@/components/modals/coresettings/EditCoreSettings"; diff --git a/web/src/components/accounts/PermissionsManager.vue b/web/src/components/accounts/PermissionsManager.vue index 6161f070..af2ec3a3 100644 --- a/web/src/components/accounts/PermissionsManager.vue +++ b/web/src/components/accounts/PermissionsManager.vue @@ -19,9 +19,8 @@ row-key="id" v-model:pagination="pagination" no-data-label="No Roles" - hide-bottom > -