From be531cceb2ecca18fe32e701fb859e84d8239b52 Mon Sep 17 00:00:00 2001 From: Alex Swindler Date: Fri, 6 Sep 2024 09:05:01 -0600 Subject: [PATCH 1/5] Fix extra data --- .../export_to_cts_modal_controller.js | 61 +++++------- .../controllers/inventory_list_controller.js | 14 +++ .../seed/js/services/inventory_service.js | 7 ++ .../seed/partials/export_to_cts_modal.html | 86 ++++++++++++---- seed/static/seed/partials/inventory_list.html | 1 + seed/utils/CTS Facility Upload Template.xlsx | Bin 0 -> 45757 bytes seed/views/v3/properties.py | 94 +++++++++++++++++- 7 files changed, 206 insertions(+), 57 deletions(-) create mode 100644 seed/utils/CTS Facility Upload Template.xlsx diff --git a/seed/static/seed/js/controllers/export_to_cts_modal_controller.js b/seed/static/seed/js/controllers/export_to_cts_modal_controller.js index fd2721c89b..51e44c87a4 100644 --- a/seed/static/seed/js/controllers/export_to_cts_modal_controller.js +++ b/seed/static/seed/js/controllers/export_to_cts_modal_controller.js @@ -2,56 +2,49 @@ * SEED Platform (TM), Copyright (c) Alliance for Sustainable Energy, LLC, and other contributors. * See also https://github.com/SEED-platform/seed/blob/main/LICENSE.md */ -angular.module('SEED.controller.export_to_cts_modal', []).controller('export_to_cts_modal_controller', [ - '$http', +angular.module('SEED.controller.export_to_CTS_modal', []).controller('export_to_CTS_modal_controller', [ '$scope', '$state', '$uibModalInstance', - 'user_service', 'ids', 'org_id', 'inventory_service', 'uploader_service', // eslint-disable-next-line func-names - function ($http, $scope, $state, $uibModalInstance, user_service, ids, org_id, inventory_service, uploader_service) { + function ($scope, $state, $uibModalInstance, ids, org_id, inventory_service, uploader_service) { $scope.ids = ids; $scope.org_id = org_id; - $scope.exporting = false; + $scope.step = { number: 0 }; + $scope.uploader = { + invalid_extension_alert: false, + invalid_geojson_extension_alert: false, + invalid_xml_extension_alert: false, + invalid_xml_zip_extension_alert: false, + in_progress: false, + progress: 0, + complete: false, + status_message: '', + progress_last_updated: null, + progress_last_checked: null + }; $scope.export = () => { - let filename = $scope.export_name; - if (!filename.endsWith('.xlsx')) filename += '.xlsx'; - $scope.exporting = true; + const property_view_ids = { property_view_ids: ids }; + inventory_service.batch_export_to_cts($scope.org_id, property_view_ids).then((response) => { + const blob_type = response.headers()['content-type']; + data = response.data; + const blob = new Blob([data], { type: blob_type }); - $http.get('/api/v3/tax_lot_properties/start_export_to_cts/', { - params: { - organization_id: user_service.get_organization().id - } - }) - .then((data) => { - uploader_service.check_progress_loop( - data.data.progress_key, - 0, - 1, - () => {}, - () => {}, - $scope.exporter_progress - ); - return inventory_service.export_to_cts(ids).then((data) => { - const blob_type = data.headers()['content-type']; - const blob = new Blob([data.data], { type: blob_type }); - saveAs(blob, filename); - $scope.close(); - }); - }); - }; + saveAs(blob, "hey.xlsx"); - $scope.cancel = () => { - $uibModalInstance.dismiss('cancel'); + $scope.close(); + return response.data; + }); }; - $scope.close = () => { - $uibModalInstance.close(); + $scope.cancel = (reload = false) => { + $uibModalInstance.close({}); + if (reload) $state.reload(); }; } ]); diff --git a/seed/static/seed/js/controllers/inventory_list_controller.js b/seed/static/seed/js/controllers/inventory_list_controller.js index 716adbe45f..a0db27bc9c 100644 --- a/seed/static/seed/js/controllers/inventory_list_controller.js +++ b/seed/static/seed/js/controllers/inventory_list_controller.js @@ -1478,6 +1478,17 @@ angular.module('SEED.controller.inventory_list', []).controller('inventory_list_ }); }; + $scope.open_export_to_CTS_modal = (selectedViewIds) => { + $uibModal.open({ + templateUrl: `${urls.static_url}seed/partials/export_to_CTS_modal.html`, + controller: 'export_to_CTS_modal_controller', + resolve: { + ids: () => selectedViewIds, + org_id: () => $scope.organization.id + } + }); + }; + $scope.open_export_to_audit_template_modal = (selectedViewIds) => { $uibModal.open({ templateUrl: `${urls.static_url}seed/partials/export_to_audit_template_modal.html`, @@ -1555,6 +1566,9 @@ angular.module('SEED.controller.inventory_list', []).controller('inventory_list_ case 'open_export_modal': $scope.open_export_modal(selectedViewIds); break; + case 'open_export_to_CTS_modal': + $scope.open_export_to_CTS_modal(selectedViewIds); + break; case 'open_export_to_audit_template_modal': $scope.open_export_to_audit_template_modal(selectedViewIds); break; diff --git a/seed/static/seed/js/services/inventory_service.js b/seed/static/seed/js/services/inventory_service.js index 6d4763f8a4..8645074821 100644 --- a/seed/static/seed/js/services/inventory_service.js +++ b/seed/static/seed/js/services/inventory_service.js @@ -1229,6 +1229,13 @@ angular.module('SEED.service.inventory', []).factory('inventory_service', [ property_ids }).then((response) => response.data); + inventory_service.batch_export_to_cts = (org_id, property_view_ids) => $http + .post( + `/api/v3/properties/batch_export_to_cts/?organization_id=${org_id}`, + property_view_ids, + {responseType: 'arraybuffer'} + ); + return inventory_service; } ]); diff --git a/seed/static/seed/partials/export_to_cts_modal.html b/seed/static/seed/partials/export_to_cts_modal.html index 0c96440c37..76b73364cd 100644 --- a/seed/static/seed/partials/export_to_cts_modal.html +++ b/seed/static/seed/partials/export_to_cts_modal.html @@ -1,31 +1,73 @@ -