{"version":3,"sources":["./src/appjsLegacy/core/admin/components/admin-page/modal-datastore.ts","./src/appjsLegacy/core/datasets/components/dataset-import/modal-map-locations.ts","./src/app/confirm/confirm.service.ts","./src/app/map/appraisal-map/appraisal-map.component.html","./src/appjsLegacy/private/leasing/leasing-module.ts","./src/appjsLegacy/private/crpp/components/correspondence/modal-add-correspondence-event.ts","./src/appjsLegacy/core/datasets/components/dataset-editor/modal-save-status.ts","./src/appjsLegacy/private/leasing/components/manage/active-leases.ts","./src/appjsLegacy/core/datasets/components/dataset-table/table.ts","./src/appjsLegacy/private/leasing/components/manage/add-grazing-inspection-modal.ts","./src/appjsLegacy/core/admin/components/admin-page/modal-choose-activitylist-fields.ts","./src/appjsLegacy/core/admin/components/admin-page/admin-metafields.ts","./src/appjsLegacy/core/datasets/components/dataset-table/table-data-modal.ts","./src/appjsLegacy/private/habitat/components/habitat-sites/modal-add-habitat-item.ts","./src/appjsLegacy/core/common/directives/roles.ts","./src/appjsLegacy/core/common/services/common-service.ts","./src/appjsLegacy/core/common/components/chart/bsample-chartservice.ts","./src/appjsLegacy/core/common/components/grid/cell-editors.ts","./src/appjsLegacy/core/admin/components/admin-page/admin-manage-users-modal.ts","./src/appjsLegacy/core/datasets/components/dataset-seasons-list/modal-create-season.ts","./src/appjsLegacy/core/projects/services/project-service.ts","./src/app/confirm/confirm.module.ts","./src/app/login/components/login/login.component.ts","./src/appjsLegacy/private/leasing/components/manage/add-spring-inspection-modal.ts","./src/appjsLegacy/core/common/components/modals/modal-invalid-operation.ts","./src/appjsLegacy/private/permits/components/dashboard/dashboard.ts","./src/app/appjs/appjs.component.html","./src/app/login/components/login.service.ts","./src/appjsLegacy/core/admin/components/admin-page/modal-choose-duplicate-fields.ts","./src/appjsLegacy/core/projects/components/project-detail/project-landing.ts","./src/appjsLegacy/private/covid/covid-module.ts","./src/appjsLegacy/core/common/directives/validation.ts","./src/app/login/components/logout/logout.component.ts","./src/appjsLegacy/core/common/directives/field-definitions.ts","./src/appjsLegacy/core/user/user-service.ts","./src/appjsLegacy/private/permits/components/ehs-violations/list-violations.ts","./src/appjsLegacy/core/projects/projects-module.ts","./src/appjsLegacy/core/common/components/grid/validators/CDMSDateTimeCellValidator.ts","./src/appjsLegacy/core/admin/components/admin-page/modal-admin-item.ts","./src/app/appjs/appjs.module.ts","./src/app/map/leasing-map/leasing-map.component.html","./src/appjsLegacy/private/permits/components/list/add-parcel-modal.ts","./src/appjsLegacy/private/permits/components/map/permit-map.ts","./src/appjsLegacy/core/projects/components/project-detail/modal-permission-change-owner.ts","./src/app/login/components/login/login.component.scss","./src/appjsLegacy/core/datasets/datasets-functions.ts","./src/appjsLegacy/core/common/components/modals/modal-quick-add-accuracycheck.ts","./src/appjsLegacy/private/habitat/habitat-module.ts","./src/appjsLegacy/core/common/components/grid/validators/CDMSTimeCellValidator.ts","./src/environments/environment.ts","./src/appjsLegacy/core/admin/components/admin-page/admin-edit-dataset-workflow.ts","./src/appjsLegacy/core/admin/components/admin-page/admin-edit-dataset-fields.ts","./src/app/map/habitat-map/habitat-map.component.scss","./src/appjsLegacy/core/datasets/services/dataset-service.ts","./src/appjsLegacy/core/common/directives/currency.ts","./src/appjsLegacy/private/permits/components/requests/request-modal.ts","./src/appjsLegacy/core/projects/components/project-detail/modal-edit-project.ts","./src/app/map/permit-map/permit-map.component.html","./src/appjsLegacy/core/projects/components/project-detail/project-locations.ts","./src/app/map/habitat-map/habitat-map.component.html","./src/app/map/permit-map/permit-map.component.ts","./src/app/login/profile.service.ts","./src/app/map/leasing-map/leasing-map.component.ts","./src/appjsLegacy/config.ts","./src/appjsLegacy/core/common/components/feedback/feedback.ts","./src/appjsLegacy/private/olc/components/events/modal-create-olc-subproject.ts","./src/appjsLegacy/private/permits/permit-module.ts","./src/appjsLegacy/core/datasets/components/dataset-query/dataset-query-view-all-records.ts","./src/appjsLegacy/core/common/components/chart/adultweir-chartservice.ts","./src/appjsLegacy/core/common/services/service-utilities.ts","./src/app/confirm/confirm-review/confirm-review.component.scss","./src/appjsLegacy/core/common/components/chart/creelsurvey-chartservice.ts","./src/appjsLegacy/core/projects/components/project-detail/modal-choose-summary-images.ts","./src/appjsLegacy/private/olc/components/events/modal-add-olc-event.ts","./src/appjsLegacy/private/permits/components/contacts/add-person-modal.ts","./src/app/map/appraisal-map/appraisal-map.component.ts","./src/app/map/esri-map/esri-map.component.ts","./src/appjsLegacy/private/leasing/components/manage/inspection-violations.ts","./src/appjsLegacy/core/admin/components/admin-page/admin-groups.ts","./src/appjsLegacy/core/projects/components/project-detail/project-permissions.ts","./src/app/confirm/confirm-routing/confirm-routing.module.ts","./src/appjsLegacy/core/datasets/components/dataset-import/modal-activities-grid.ts","./src/appjsLegacy/core/common/components/chart/electrofishing-chartservice.ts","./src/appjsLegacy/core/datasets/components/dataset-view/modal-qa-update.ts","./src/appjsLegacy/core/user/components/analytics/user-analytics.ts","./src/appjsLegacy/core/admin/components/admin-page/admin-view.ts","./src/app/appjs/appjs.component.ts","./src/appjsLegacy/private/permits/components/list/add-violation-activity-modal.ts","./src/app/map/habitat-map/habitat-map.component.ts","./src/app/confirm/confirm-component/confirm.component.scss","./src/appjsLegacy/core/common/directives/checklists.ts","./src/appjsLegacy/core/common/components/chart/artificialproduction-chartservice.ts","./src/appjsLegacy/core/common/common-functions.ts","./src/appjsLegacy/core/user/components/dataset-preferences/dataset-preferences.ts","./src/appjsLegacy/core/datasets/components/dataset-activities-list/dataset-activities-list.ts","./src/appjsLegacy/core/projects/components/project-detail/modal-choose-project-lists.ts","./src/appjsLegacy/core/common/components/chart/chart-services.ts","./src/appjsLegacy/main.ts","./src/appjsLegacy/core/datasets/components/dataset-import/modal-dataset-duplicates.ts","./src/app/confirm/confirm-component/confirm.component.html","./src/appjsLegacy/private/leasing/components/manage/add-fall-inspection-modal.ts","./src/appjsLegacy/core/projects/components/project-detail/modal-choose-map.ts","./src/appjsLegacy/private/olc/components/events/events-search.ts","./src/appjsLegacy/private/leasing/components/manage/available-land.ts","./src/appjsLegacy/private/olc/components/events/events.ts","./src/appjsLegacy/private/permits/components/list/modal-permit-edit-file.ts","./src/appjsLegacy/private/permits/components/list/add-violation-code-modal.ts","./src/appjsLegacy/core/admin/components/admin-page/admin-users.ts","./src/appjsLegacy/core/user/components/landing-page/landing-page.ts","./src/appjsLegacy/private/appraisals/components/appraisal-activities/appraisal-map.ts","./src/appjsLegacy/private/olc/olc-module.ts","./src/appjsLegacy/core/common/common-module.ts","./node_modules/moment/locale sync ^\\.\\/.*$","./src/appjsLegacy/core/datasets/components/dataset-seasons-list/dataset-seasons-list.ts","./src/app/app.component.ts","./src/appjsLegacy/private/leasing/components/manage/lease-scope.ts","./src/appjsLegacy/core/projects/components/project-list/project-list.ts","./src/app/login/components/login-functions.ts","./src/appjsLegacy/private/covid/components/employees/list.ts","./src/appjsLegacy/private/permits/components/notifications/notifications.ts","./src/appjsLegacy/private/permits/components/list/add-location-modal.ts","./src/appjsLegacy/core/datasets/datasets-module.ts","./src/appjsLegacy/private/permits/permit-service.ts","./src/appjsLegacy/private/leasing/leasing-service.ts","./src/app/app.component.html","./src/appjsLegacy/core/user/components/my-preferences/my-preferences.ts","./src/appjsLegacy/core/admin/components/admin-page/modal-edit-metadataproperty.ts","./src/appjsLegacy/private/leasing/components/manage/pending-leases.ts","./src/appjsLegacy/core/common/components/grid/grid-service.ts","./src/app/login/login.module.ts","./src/appjsLegacy/private/habitat/components/habitat-sites/page-sites.ts","./src/app/appjs/appjs.component.css","./src/appjsLegacy/core/projects/components/project-detail/project-files.ts","./src/appjsLegacy/core/datasets/components/dataset-detail/dataset-detail.ts","./src/appjsLegacy/private/permits/components/list/list-permits.ts","./src/appjsLegacy/private/leasing/components/manage/inspection-violation-modal.ts","./src/appjsLegacy/private/appraisals/appraisals-module.ts","./src/appjsLegacy/private/bot/bot-module.ts","./src/appjsLegacy/core/common/components/grid/validators/CDMSNumberCellValidator.ts","./src/appjsLegacy/core/common/services/logger.ts","./src/appjsLegacy/core/datasets/components/dataset-view/modal-data-entry.ts","./src/app/app.module.ts","./src/appjsLegacy/core/admin/admin-service.ts","./src/appjsLegacy/core/common/components/file/modal-files.ts","./src/appjsLegacy/core/common/components/grid/validators/CDMSMultiselectCellValidator.ts","./src/app/login/components/login/login.component.html","./src/app/map/leasing-map/leasing-map.component.scss","./src/appjsLegacy/private/crpp/crpp-module.ts","./src/appjsLegacy/core/admin/components/admin-page/modal-admin-group-members.ts","./src/appjsLegacy/private/permits/components/list/modal-permit-new-file.ts","./src/appjsLegacy/private/permits/components/list/request-inspection.ts","./src/appjsLegacy/core/admin/admin-module.ts","./src/appjsLegacy/private/leasing/components/manage/view-lease.ts","./src/appjsLegacy/private/crpp/components/correspondence/modal-create-crpp-subproject.ts","./src/appjsLegacy/core/admin/components/admin-page/admin-edit-master.ts","./src/appjsLegacy/private/bot/components/dashboard/projects.ts","./src/appjsLegacy/core/admin/components/admin-page/modal-edit-master-field.ts","./src/appjsLegacy/core/projects/components/project-detail/modal-new-link.ts","./src/app/map/esri-map/esri-map.component.scss","./src/appjsLegacy/core/admin/components/admin-page/admin-organizations.ts","./src/appjsLegacy/core/common/components/chart/snorkelfish-chartservice.ts","./src/appjsLegacy/private/leasing/components/manage/add-operator-modal.ts","./src/app/appjs/appjs-routing.module.ts","./src/appjsLegacy/private/leasing/components/manage/modify-crop-plan-modal.ts","./src/appjsLegacy/core/datasets/components/dataset-import/dataset-import.ts","./src/appjsLegacy/private/permits/components/list/add-contact-modal.ts","./src/appjsLegacy/private/olc/components/events/modal-migrate-olc-event.ts","./src/appjsLegacy/private/permits/components/taskboard/routes.ts","./src/appjsLegacy/private/crpp/components/correspondence/correspondence.ts","./src/appjsLegacy/core/common/components/modals/modal-verify-action.ts","./src/appjsLegacy/private/permits/components/list/add-permit-activity-modal.ts","./src/appjsLegacy/private/habitat/components/habitat-sites/modal-create-habitat-subproject.ts","./src/appjsLegacy/core/datasets/services/activity-parser.ts","./src/appjsLegacy/core/projects/components/project-detail/modal-edit-location.ts","./src/appjsLegacy/core/projects/components/project-detail/project-data.ts","./src/appjsLegacy/core/common/directives/feature-layer.ts","./src/appjsLegacy/private/leasing/components/manage/manage-leases.ts","./src/app/appjs/appjs-loader.service.ts","./src/appjsLegacy/core/common/components/modals/modal-link-field.ts","./src/appjsLegacy/core/projects/components/project-detail/modal-edit-lookup-item.ts","./src/appjsLegacy/core/common/components/grid/validators/CDMSSelectCellValidator.ts","./src/appjsLegacy/core/datasets/components/dataset-query/dataset-query.ts","./src/appjsLegacy/core/datasets/components/dataset-editor/dataset-edit-form.ts","./src/appjsLegacy/core/projects/components/project-detail/modal-new-file.ts","./src/appjsLegacy/core/common/components/file/modal-waypoint-file.ts","./src/appjsLegacy/private/leasing/components/manage/lease-modal.ts","./src/appjsLegacy/private/permits/components/contacts/manage-contacts.ts","./src/appjsLegacy/private/leasing/components/manage/add-production-modal.ts","./src/appjsLegacy/core/common/components/modals/modal-create-instrument.ts","./src/appjsLegacy/core/common/components/modals/modal-bulk-rowqa-change.ts","./src/appjsLegacy/core/common/components/modals/modal-create-fisherman.ts","./src/app/confirm/confirm-review/confirm-review.component.html","./src/appjsLegacy/core/common/components/file/modal-exportfile.ts","./src/app/login/components/logout/logout.component.scss","./src/appjsLegacy/core/projects/services/subproject-service.ts","./src/appjsLegacy/core/admin/components/admin-page/admin-new-dataset.ts","./src/app/login/components/login-routing/login-routing.module.ts","./src/appjsLegacy/private/leasing/components/manage/lookups.ts","./src/appjsLegacy/core/projects/components/project-detail/project-lookups.ts","./src/app/login/components/logout/logout.component.html","./src/appjsLegacy/private/permits/components/list/modal-violation-new-file.ts","./src/appjsLegacy/core/admin/components/admin-page/admin-edit-dataset-permissions.ts","./src/appjsLegacy/private/bot/bot-service.ts","./src/appjsLegacy/core/projects/components/project-detail/modal-add-accuracy-check.ts","./src/appjsLegacy/core/common/components/grid/cell-validation.ts","./src/appjsLegacy/private/permits/components/list/modal-violation-edit-file.ts","./src/appjsLegacy/private/leasing/components/manage/add-compliance-inspection-modal.ts","./src/appjsLegacy/core/common/components/chart/watertemp-chartservice.ts","./src/appjsLegacy/core/admin/components/admin-page/admin-add-project-dataset.ts","./src/appjsLegacy/core/admin/components/admin-page/modal-edit-dataset-field.ts","./src/appjsLegacy/core/datasets/components/datasets-list/datasets-list.ts","./src/app/map/appraisal-map/appraisal-map.component.scss","./src/appjsLegacy/private/permits/components/requests/list.ts","./src/appjsLegacy/core/projects/components/project-detail/modal-edit-file.ts","./src/appjsLegacy/core/common/components/grid/validators/CDMSDateCellValidator.ts","./node_modules/@stencil/core/internal/client lazy ^\\.\\/.*\\.entry\\.js.*$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ namespace object","./src/appjsLegacy/core/admin/components/admin-page/admin-edit-dataset-config.ts","./src/app/app-routing.module.ts","./src/appjsLegacy/core/common/components/grid/validators/CDMSTextCellValidator.ts","./src/appjsLegacy/core/common/components/chart/waterquality-chartservice.ts","./src/appjsLegacy/core/projects/components/project-detail/project-lookup-instruments.ts","./src/appjsLegacy/private/leasing/components/manage/manage-operators.ts","./src/appjsLegacy/core/user/components/project-preferences/project-preferences.ts","./src/app/confirm/confirm-review/confirm-review.component.ts","./src/appjsLegacy/private/permits/components/taskboard/add-fee-modal.ts","./src/app/confirm/confirm-component/confirm.component.ts","./src/appjsLegacy/core/common/components/modals/modal-select-grid.ts","./src/appjsLegacy/core/user/user-module.ts","./src/appjsLegacy/core/common/components/grid/cell-control-types.ts","./src/appjsLegacy/core/datasets/components/dataset-query/big-bucket-query.ts","./src/appjsLegacy/private/covid/covid-service.ts","./src/appjsLegacy/core/datasets/services/convert-status.ts","./src/app/app.component.scss","./src/appjsLegacy/private/permits/violation-service.ts","./src/appjsLegacy/core/common/components/modals/modal-save-success.ts","./src/main.ts","./src/appjsLegacy/private/permits/components/list/edit-location-modal.ts","./src/app/map/permit-map/permit-map.component.scss","./src/app/map/esri-map/esri-map.component.html","./$_lazy_route_resource lazy namespace object"],"names":[],"mappings":"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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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","file":"main.js","sourcesContent":["//modal to edit dataset field\r\nvar modal_admin_new_datastore = ['$scope', '$uibModal','$uibModalInstance','AdminService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, AdminService) {\r\n\r\n $scope.datastore = { TableType: 'Header+Detail'};\r\n $scope.to_generate = \"\";\r\n\r\n $scope.save = function () {\r\n\r\n //make sure the name is unique\r\n var nameExists = false;\r\n $scope.datastores.forEach(function(datastore){\r\n if(datastore.Name == $scope.datastore.Name){\r\n nameExists = true;\r\n }\r\n })\r\n\r\n if(nameExists){\r\n alert(\"Name exists. Please change the Name and try again.\");\r\n return;\r\n }\r\n\r\n //make sure the tableprefix is unique\r\n var prefixExists = false;\r\n $scope.datastores.forEach(function(datastore){\r\n if(datastore.TablePrefix == $scope.datastore.TablePrefix){\r\n prefixExists = true;\r\n }\r\n })\r\n\r\n if(prefixExists){\r\n alert(\"TablePrefix exists. Please change the TablePrefix and try again.\");\r\n return;\r\n }\r\n\r\n\t\t\tvar saved_datastore = AdminService.saveNewDatastore($scope.datastore);\r\n saved_datastore.$promise.then(function () {\r\n $uibModalInstance.close(saved_datastore);\r\n }, function (error) {\r\n $scope.SaveMessage = \"Error: \" + error.data.ExceptionMessage;\r\n });\r\n\r\n };\r\n\r\n $scope.checkTablePrefix = function(){\r\n $scope.datastore.TablePrefix = $scope.datastore.TablePrefix.replace(\" \",\"\");\r\n $scope.datastore.TablePrefix = $scope.datastore.TablePrefix.charAt(0).toUpperCase() + $scope.datastore.TablePrefix.slice(1)\r\n if($scope.datastore.TableType == 'Header+Detail') {\r\n $scope.to_generate = $scope.datastore.TablePrefix + \"_Header + \"+$scope.datastore.TablePrefix + \"_Detail\";\r\n } else {\r\n $scope.to_generate = $scope.datastore.TablePrefix;\r\n }\r\n\r\n }\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_admin_new_datastore;\r\n","//map locations for multiple activity import\r\nvar modal_map_locations = ['$scope', '$uibModal','$uibModalInstance',\r\n\r\n function ($scope, $uibModal, $uibModalInstance) {\r\n\r\n //this is a workaround for angularjs' either too loose matching or too strict...\r\n $scope.locequals = function (actual, expected) { return actual == expected; };\r\n\r\n $scope.save = function () {\r\n $uibModalInstance.close();\r\n };\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n }\r\n];\r\n\r\nexport default modal_map_locations;\r\n","import { Injectable } from '@angular/core';\r\nimport {serviceUrl} from \"../../appjsLegacy/config\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfirmService {\r\n\r\n constructor(private http: HttpClient) { }\r\n getConfirmationData(eventId){\r\n return this.http.get(serviceUrl + '/api/v1/permit/getconfirmationdata', {params: {Id: eventId}, responseType: \"json\"})\r\n }\r\n\r\n saveConfirmation(confirmation) {\r\n return this.http.post(serviceUrl + '/api/v1/permit/confirm', {Confirmation: confirmation} )\r\n }\r\n\r\n downloadInspectionDocument(permitEventId) {\r\n return this.http.post(serviceUrl + '/api/v1/permit/DownloadInspectionDocument',{PermitEventId: permitEventId})\r\n }\r\n}\r\n// //confirm URLs for our service\r\n// app.factory('GetConfirmationData',['$resource', function(resource){\r\n// return resource(serviceUrl +'/api/v1/permit/getconfirmationdata', {}, {\r\n// \t\t\tquery: {method: 'GET', params: {}, isArray: false}\r\n// \t\t});\r\n// }]);\r\n//\r\n// app.factory('DownloadInspectionTemplate', ['$resource', function ($resource) {\r\n// return $resource(serviceUrl + '/api/v1/permit/DownloadInspectionDocument');\r\n// }]);\r\n//\r\n// app.factory('SaveConfirmationForm',['$resource', function(resource){\r\n// return resource(serviceUrl+'/api/v1/permit/confirm');\r\n// }]);\r\n","export default \"
\\r\\n\";","// defines the leasing module\r\nimport * as angular from 'angular';\r\n\r\n// require([\r\n//controllers\r\nimport inspection_violation_modal from \"./components/manage/inspection-violation-modal\";\r\nimport active_leases from \"./components/manage/active-leases\";\r\nimport view_lease from \"./components/manage/view-lease\";\r\nimport modal_add_spring_inspection from \"./components/manage/add-spring-inspection-modal\";\r\nimport modal_add_fall_inspection from \"./components/manage/add-fall-inspection-modal\";\r\nimport inspection_violations from \"./components/manage/inspection-violations\";\r\nimport lookup_lists from \"./components/manage/lookups\";\r\nimport modal_add_operator from \"./components/manage/add-operator-modal\";\r\nimport modal_add_production from \"./components/manage/add-production-modal\";\r\nimport modal_lease from \"./components/manage/lease-modal\";\r\nimport available_land from \"./components/manage/available-land\";\r\nimport leasing_home from \"./components/manage/manage-leases\";\r\nimport manage_operators from \"./components/manage/manage-operators\";\r\nimport modal_add_compliance_inspection from \"./components/manage/add-compliance-inspection-modal\";\r\nimport modal_modify_crop_plan from \"./components/manage/modify-crop-plan-modal\";\r\nimport pending_leases from \"./components/manage/pending-leases\";\r\nimport modal_add_grazing_inspection from \"./components/manage/add-grazing-inspection-modal\";\r\nimport lease_service from \"./leasing-service\";\r\n//map directive\r\n\r\n\r\n\r\n//service\r\n\r\nimport {LeaseModalScope} from \"./components/manage/lease-scope\";\r\nimport {serviceUrl} from \"../../config\";\r\nimport {downgradeComponent} from \"@angular/upgrade/static\";\r\nimport {LeasingMapComponent} from \"../../../app/map/leasing-map/leasing-map.component\";\r\n\r\n\r\n\r\n// ], function () {\r\nconst leasing_module = angular.module('LeasingModule', ['ui.bootstrap', 'ngResource']);\r\nleasing_module.controller('LeasingHomeController', leasing_home);\r\nleasing_module.controller('ActiveLeasesController', active_leases);\r\nleasing_module.controller('PendingLeasesController', pending_leases);\r\nleasing_module.controller('ViewLeaseController', view_lease);\r\nleasing_module.controller('AvailableLandController', available_land);\r\nleasing_module.controller('LeaseModalController', modal_lease);\r\nleasing_module.controller('SpringInspectionModalController', modal_add_spring_inspection);\r\nleasing_module.controller('ProductionModalController', modal_add_production);\r\nleasing_module.controller('FallInspectionModalController', modal_add_fall_inspection);\r\nleasing_module.controller('ComplianceInspectionModalController', modal_add_compliance_inspection);\r\nleasing_module.controller('GrazingInspectionModalController', modal_add_grazing_inspection);\r\nleasing_module.controller('ModifyCropPlanController', modal_modify_crop_plan);\r\nleasing_module.controller('ViolationsController', inspection_violations);\r\nleasing_module.controller('InspectionViolationModalController', inspection_violation_modal);\r\nleasing_module.controller('ManageOperatorsController', manage_operators);\r\nleasing_module.controller('AddOperatorModalController', modal_add_operator);\r\nleasing_module.controller('LookupListsController', lookup_lists);\r\nleasing_module.service('LeasingService', lease_service);\r\nleasing_module.directive('leasingMap', downgradeComponent({component: LeasingMapComponent}));\r\n//Lease Statuses: these must correspond to Lease.cs in BE\r\n// leasing_module.LeaseStatus = [];\r\n// leasing_module.LeaseStatus[1] = \"Active\";\r\n// leasing_module.LeaseStatus[2] = \"Inactive\";\r\n// leasing_module.LeaseStatus[3] = \"Pending\";\r\n// leasing_module.LeaseStatus[4] = \"Withdrawn\";\r\n// leasing_module.LeaseStatus[5] = \"Expired\";\r\n// leasing_module.LeaseStatus[6] = \"Cancelled\";\r\n//\r\n// leasing_module.LeaseLevels = [];\r\n// leasing_module.LeaseLevels[1] = \"Level 1\";\r\n// leasing_module.LeaseLevels[2] = \"Level 2\";\r\n// leasing_module.LeaseLevels[3] = \"Level 3\";\r\n// leasing_module.LeaseLevels[4] = \"Level 4\";\r\n\r\n\r\nleasing_module.LeaseStatus = LeaseModalScope.LeaseStatus;\r\nleasing_module.LeaseLevels = LeaseModalScope.LeaseLevels;\r\n//maps lease types to the first number of the leasenumber (when generating lease numbers)\r\n// leasing_module.LeaseTypeLeaseNumber = {\r\n// \"Farming\": \"1\",\r\n// \"Grazing\": \"4\",\r\n// \"Residential\": \"2\",\r\n// \"Storage\": \"TL-\",\r\n// };\r\n\r\nleasing_module.LeaseTypeLeaseNumber = LeaseModalScope.LeaseTypeLeaseNumber;\r\n\r\n//leasing_module.InspectionViolationResolutions = [\"Dismissed\",\"Fee Paid\",\"No Resolution\",\"Other\"];\r\n\r\n//leasing_module.ProductionDeliveryUnit = [\"ACRE\", \"AUM\", \"BU\", \"LB\", \"TON\"];\r\n\r\n// -- filter for lease status\r\nleasing_module.filter('leaseStatus', function () {\r\n return function (input) {\r\n return leasing_module.LeaseStatus[input];\r\n }\r\n});\r\n\r\nleasing_module.filter('operOrgName', function () {\r\n return function (oper) {\r\n if (!oper)\r\n return \"\";\r\n\r\n return (oper.Organization) ? oper.Organization : oper.FirstName + \" \" + oper.LastName;\r\n }\r\n});\r\n\r\n//filter for Yes No fields\r\nleasing_module.filter('boolYesNo', function () {\r\n return function (in_val) {\r\n return (in_val) ? \"Yes\" : \"No\";\r\n }\r\n});\r\n\r\nleasing_module.filter('arrayList', function () {\r\n return function (array_values) {\r\n let result = '';\r\n if (array_values) {\r\n\r\n try {\r\n for (let i = 0, len = array_values.length; i < len; i++) {\r\n result += array_values[i] + \"\\n\";\r\n }\r\n } catch (e) {\r\n result = array_values;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n});\r\n\r\nleasing_module.factory('AllLeases', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/allleases', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\n\r\nleasing_module.factory('ActiveLeases', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/activeleases', {}, {\r\n query: { method: 'GET', params: { }, isArray: true }\r\n });\r\n}]);\r\n\r\nleasing_module.factory('PendingLeases', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/pendingleases', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\n\r\nleasing_module.factory('AvailableFields', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/availablefields', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\nleasing_module.factory('AvailableAllotments', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/availableallotments', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\n\r\nleasing_module.factory('GetLease', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/getlease', {}, {\r\n query: { method: 'GET', params: { id: 'id'}, isArray: false }\r\n });\r\n}]);\r\n\r\nleasing_module.factory('GetLeasesByField', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/GetLeasesByField', {}, {\r\n query: { method: 'GET', params: { id: 'id'}, isArray: true }\r\n });\r\n}]);\r\n\r\n\r\nleasing_module.factory('GetOperators', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/getoperators', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\nleasing_module.factory('DeleteOperator', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/deleteoperator');\r\n}]);\r\n\r\n\r\nleasing_module.factory('SaveLease', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/savelease');\r\n}]);\r\n\r\nleasing_module.factory('SaveCropPlan', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/savecropplan');\r\n}]);\r\n\r\nleasing_module.factory('SaveInspection', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/SaveInspection');\r\n}]);\r\n\r\nleasing_module.factory('SaveProduction', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/SaveProduction');\r\n}]);\r\n\r\nleasing_module.factory('RemoveProduction', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/RemoveProduction');\r\n}]);\r\n\r\nleasing_module.factory('GetLeaseRevisions', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/GetLeaseRevisions', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\nleasing_module.factory('GetCropPlanRevisions', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/GetCropPlanRevisions', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\nleasing_module.factory('GetInspectionViolations', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/GetInspectionViolations', {}, {\r\n query: { method: 'POST', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\nleasing_module.factory('SaveInspectionViolation', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/SaveInspectionViolation');\r\n}]);\r\n\r\nleasing_module.factory('RemoveInspection', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/RemoveInspection');\r\n}]);\r\n\r\nleasing_module.factory('SaveOperator', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/SaveOperator');\r\n}]);\r\n\r\nleasing_module.factory('GetLookups', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/metadata/GetPropertiesForEntity', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\nleasing_module.factory('PutMetadataProperty', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/metadata/PutMetadataProperty', {}, {\r\n update: { method: 'PUT' }\r\n });\r\n}]);\r\n\r\nleasing_module.factory('GetMetadataProperty', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/metadata/GetMetadataProperty', {}, {\r\n query: { method: 'GET', params: {}, isArray: false }\r\n });\r\n}]);\r\n\r\nleasing_module.factory('ExpireLeases', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lease/ExpireLeases', {}, {\r\n query: { method: 'GET', params: {}, isArray: false }\r\n });\r\n}]);\r\n\r\n/*\r\nLeaseModalScope.prepareLeaseModalScope($scope, LeasingService);\r\n*/\r\n\r\n//can call to prepare a scope to use the leasemodal\r\n// mainly loads the various lists for the dropdowns\r\n/*\r\nleasing_module.prepareLeaseModalScope = function ($scope, LeasingService) {\r\n\r\n $scope.leaseLevels = leasing_module.LeaseLevels;\r\n $scope.leaseStatuses = leasing_module.LeaseStatus;\r\n\r\n $scope.operators = LeasingService.getOperators();\r\n\r\n $scope.operators.$promise.then(function () {\r\n $scope.operators.forEach(function (oper) {\r\n oper.SortName = (oper.Organization) ? oper.Organization : oper.FirstName + \" \" + oper.LastName;\r\n });\r\n });\r\n\r\n // @ts-ignore\r\n $scope.leaseTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_LEASETYPES);\r\n // @ts-ignore\r\n $scope.productionDeliveryUnits = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_PRODUCTIONDELIVERY);\r\n // @ts-ignore\r\n $scope.cropOptions = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_CROPOPTIONS);\r\n // @ts-ignore\r\n $scope.weeds = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_WEEDS);\r\n // @ts-ignore\r\n $scope.residueTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_RESIDUETYPES);\r\n // @ts-ignore\r\n $scope.animalTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_ANIMALTYPES);\r\n // @ts-ignore\r\n $scope.subPractices = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_SUBPRACTICES);\r\n // @ts-ignore\r\n $scope.productionTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_PRODUCTIONTYPES);\r\n // @ts-ignore\r\n $scope.operatorStates = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_OPSTATES);\r\n // @ts-ignore\r\n $scope.operatorCities = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_OPCITIES);\r\n // @ts-ignore\r\n $scope.complianceInspectionTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_COMPLIANCE_INSP_TYPES);\r\n // @ts-ignore\r\n $scope.violationTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_VIOLATION_TYPES);\r\n\r\n};\r\n*/\r\n\r\n// });\r\nexport default leasing_module;\r\n\r\n","import * as angular from 'angular';\r\nimport {modalFiles_setupControllerForFileChooserModal} from \"../../../../core/common/components/file/modal-files\";\r\n\r\nvar modal_add_correspondence_event = ['$scope', '$rootScope', '$uibModalInstance', '$uibModal', 'DatasetService','SubprojectService','ServiceUtilities',\r\n\t'$filter', 'Upload','$location', '$anchorScroll',\r\n function ($scope, $rootScope, $uibModalInstance, $uibModal, DatasetService, SubprojectService, ServiceUtilities,\r\n\t$filter, $upload, $location, $anchorScroll){\r\n\tconsole.log(\"Inside ModalAddCorrespondenceEventCtrl...\");\r\n\r\n $rootScope.remainingFiles = [];\r\n\r\n //mixin the properties and functions to enable the modal file chooser for this controller...\r\n //modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.viewSubproject.Files); //\"EventFiles\"\r\n\t$scope.typeOfFilesToCheck = \"checkFiles\";\r\n\tmodalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.typeOfFilesToCheck); //\"EventFiles\"\r\n\r\n\tif ((typeof $scope.viewSubproject !== 'undefined') && ($scope.viewSubproject !== null))\r\n\t\t$rootScope.subprojectId = $scope.viewSubproject.Id;\r\n\r\n\t$scope.showOtherResponseType = false;\r\n\t$scope.showOtherCorrespondenceType = false;\r\n\r\n var foundIt = false;\r\n\r\n\t// If ce_row.CorrespondenceDate exists, then we are editing.\r\n\tif ($scope.ce_row.CorrespondenceDate)\r\n {\r\n $scope.getMetafield('ResponseType').forEach(function (option) {\r\n\t\t\tif ((option.Label === $scope.ce_row.ResponseType))\t{\r\n foundIt = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n if (!foundIt) {\r\n console.log(\"Value of ResponseType is not in the list...\");\r\n $scope.ce_row.OtherResponseType = $scope.ce_row.ResponseType;\r\n $scope.ce_row.ResponseType = \"Other\";\r\n $scope.showOtherResponseType = true;\r\n }\r\n\r\n\r\n var foundIt = false;\r\n\r\n\t\t$scope.getMetafield('CorrespondenceType').forEach(function(option){\r\n\t\t\tif ((option.Label === $scope.ce_row.CorrespondenceType)){\r\n\t\t\t\tfoundIt = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (!foundIt)\r\n\t\t{\r\n\t\t\tconsole.log(\"Value of CorrespondenceType is not in the list...\");\r\n\t\t\t$scope.ce_row.OtherCorrespondenceType = $scope.ce_row.CorrespondenceType;\r\n\t\t\t$scope.ce_row.CorrespondenceType = \"Other\";\r\n\t\t\t$scope.showOtherCorrespondenceType = true;\r\n\t\t}\r\n\t}\r\n\r\n if($scope.ce_row.Id > 0)\r\n {\r\n $scope.header_message = \"Edit Event for Project \" + $scope.viewSubproject.ProjectName;\r\n }\r\n\telse\r\n\t{\r\n\t\tif ((typeof $scope.viewSubproject !== 'undefined' ) && ($scope.viewSubproject !== null))\r\n\t\t\t$scope.header_message = \"Add Event to Project \" + $scope.viewSubproject.ProjectName;\r\n\t\telse if ((typeof $scope.crppProjectName !== 'undefined' ) && ($scope.crppProjectName !== null))\r\n\t\t\t$scope.header_message = \"Add Event to Project \" + $scope.crppProjectName;\r\n\t}\r\n\r\n\tif (!$scope.ce_row.NumberOfDays)\r\n\t\t$scope.ce_row.NumberOfDays = \"Other\";\r\n\r\n\t//console.log(\"$scope.ce_row is next...\");\r\n\t//console.dir($scope.ce_row);\r\n\r\n\t$scope.field = {\r\n\t\tDbColumnName: \"EventFiles\"\r\n\t};\r\n\r\n\t$scope.selectCorrespondenceType = function () {\r\n\t\tconsole.log(\"Inside selectCorrespondenceType...\");\r\n\t\tconsole.log(\"$scope.ce_row at top of selectCorrespondenceType is next...\");\r\n\t\tconsole.dir($scope.ce_row);\r\n\t\tif ($scope.ce_row.CorrespondenceType === \"Other\")\r\n\t\t\t$scope.showOtherCorrespondenceType = true;\r\n\t\telse\r\n\t\t{\r\n\t\t\t$scope.showOtherCorrespondenceType = false;\r\n\t\t\t$scope.ce_row.OtherCorrespondenceType = null;\r\n\t\t}\r\n\r\n\t\tconsole.log(\"$scope.showOtherCorrespondenceType = \" + $scope.showOtherCorrespondenceType);\r\n\t\tconsole.log(\"$scope.ce_row at end of selectCorrespondenceType is next...\");\r\n\t\tconsole.dir($scope.ce_row);\r\n\t};\r\n\r\n\r\n\t$scope.selectResponseType = function () {\r\n\t\tconsole.log(\"Inside selectResponseType...\");\r\n\t\tconsole.log(\"$scope.ce_row at top of selectResponseType is next...\");\r\n\t\tconsole.dir($scope.ce_row);\r\n\t\tif ($scope.ce_row.ResponseType === \"Other\")\r\n\t\t\t$scope.showOtherResponseType = true;\r\n\t\telse\r\n\t\t{\r\n\t\t\t$scope.showOtherResponseType = false;\r\n\t\t\t$scope.ce_row.OtherResponseType = null;\r\n\t\t}\r\n\r\n\t\tconsole.log(\"$scope.showOtherResponseType = \" + $scope.showOtherResponseType);\r\n\t\tconsole.log(\"$scope.ce_row at end of selectResponseType is next...\");\r\n\t\tconsole.dir($scope.ce_row);\r\n\t};\r\n\r\n\t$scope.GetTypeOfResponse = function(){\r\n\t\tvar theName = [];\r\n\t\ttheName.push($filter('ResponseTypeFilter')($scope.ResponseTypeList, $scope.ce_row.ResponseType.Id))[0];\r\n\t\tconsole.log(\"theName is next...\");\r\n\t\tconsole.dir(theName);\r\n\r\n\t};\r\n\r\n\r\n\r\n\t$scope.calculateDateOfResponse = function(){\r\n\t\tconsole.log(\"Inside calculateDateOfResponse...\");\r\n\t\tconsole.log(\"$scope.ShowDateOfResponsePopup = \" + $scope.ShowDateOfResponsePopup);\r\n\t\tconsole.log(\"$scope.ce_row is next...\");\r\n\t\tconsole.dir($scope.ce_row);\r\n\t\t//console.log(\"$scope.ce_row.NumberOfDays.length = \" + $scope.ce_row.NumberOfDays.length);\r\n\r\n\t\tlet\tdtDateOfResponse:any = 'undefined';\r\n\t\tstrDateOfResponse = 'undefined';\r\n\r\n\t\t/* \tInitially, we set NumberOfDays to Other, with the placeholder in the box on the form.\r\n\t\t*\tWhen the user chooses a number, we change the NumberOfDays to a DatePicker.\r\n\t\t*\tIf the user chooses Other again, we switch back to the placeholder.\r\n\t\t*/\r\n\t\tif ($scope.ce_row.NumberOfDays.length < 3)\r\n\t\t{\r\n\t\t\t//if ($scope.ce_row.CorrespondenceDate)\r\n\t\t\t//console.log(\"$scope.ce_row.CorrespondenceDate text: \" + $scope.ce_row.CorrespondenceDate.toString());\r\n\r\n\t\t\t// If the user left the Date of Correspondence blank, get today's date.\r\n\t\t\t// Otherwise, use the date they picked.\r\n\t\t\tif ((!$scope.ce_row.CorrespondenceDate) || ($scope.ce_row.CorrespondenceDate === null))\r\n\t\t\t{\r\n\t\t\t\tconsole.log(\"Date of Correspondence left blank; using today's date...\");\r\n\r\n\t\t\t\tlet dtDateOfResponse = new Date();\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tconsole.log(\"User picked this date...\");\r\n\t\t\t\tconsole.dir($scope.ce_row.CorrespondenceDate);\r\n\r\n\t\t\t\t// If we just copy $scope.ce_row.CorrespondenceDate into dtDateOfResponse,\r\n\t\t\t\t// all that really gets copied is the reference. As we do calculations\r\n\t\t\t\t// and change dtDateOfResponse, the same changes happen to $scope.ce_row.CorrespondenceDate.\r\n\t\t\t\t// To avoid this, we clone the object in the next line, in order to break that link.\r\n\t\t\t\tvar strTmpDate = JSON.parse(JSON.stringify($scope.ce_row.CorrespondenceDate));\r\n\t\t\t\t//console.log(\"strTmpDate = \" + strTmpDate);\r\n\r\n\t\t\t\tvar dtTempDate = new Date(strTmpDate);\r\n\t\t\t\t//var dtTempDate = Date.parse(strTmpDate);\r\n\t\t\t\tconsole.log(\"dtTempDate \" + dtTempDate);\r\n\t\t\t\tlet dtDateOfResponse = dtTempDate;\r\n\t\t\t}\r\n\r\n\t\t\tconsole.log(\"dtDateOfResponse initial setting is next...\");\r\n\t\t\tconsole.dir(dtDateOfResponse);\r\n\r\n\r\n\t\t\tdtDateOfResponse.setDate(dtDateOfResponse.getDate() + parseInt($scope.ce_row.NumberOfDays));\r\n\t\t\t//console.log(\"dtDateOfResponse after adding days = \" + dtDateOfResponse);\r\n\r\n\r\n\t\t\tvar strDateOfResponse = ServiceUtilities.formatDate2(dtDateOfResponse);\r\n\t\t\t//console.log(\"strDateOfResponse after formatting = \" + strDateOfResponse);\r\n\r\n\t\t\t// Extract the date info from the date/time string.\r\n\t\t\tvar intSpaceLocation = strDateOfResponse.indexOf(\" \");\r\n\t\t\tstrDateOfResponse = strDateOfResponse.substring(0, intSpaceLocation);\r\n\t\t\tconsole.log(\"strDateOfResponse (text version) = \" + strDateOfResponse);\r\n\r\n\r\n\t\t\t$scope.ce_row.ResponseDate = strDateOfResponse;\r\n\t\t\tconsole.log(\"$scope.ce_row.ResponseDate = \" + $scope.ce_row.ResponseDate);\r\n\r\n\t\t\tconsole.log(\"$scope.ce_row is next...\");\r\n\t\t\tconsole.dir($scope.ce_row);\r\n\t\t\t//$scope.ShowDateOfResponsePopup = true;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t$scope.ShowDateOfResponsePopup = false;\r\n\t\t\t//$scope.ce_row.ResponseDate = null;\r\n\t\t}\r\n\t};\r\n\r\n\r\n //callback that is called from modalFile to do the actual file removal (varies by module)\r\n $scope.modalFile_doRemoveFile = function (file_to_remove, saveRow) {\r\n return SubprojectService.deleteCorresEventFile($scope.projectId, $scope.subprojectId, saveRow.Id, file_to_remove);\r\n };\r\n\r\n //called when the user clicks \"save\"\r\n $scope.save = function () {\r\n console.log(\"Inside ModalAddCorrespondenceEventCtrl, save...\");\r\n\r\n $rootScope.remainingFiles = [];\r\n\r\n if (!$scope.ce_row.CorrespondenceDate) {\r\n alert(\"Correspondence Date is required.\");\r\n return;\r\n }\r\n\r\n if (!$scope.ce_row.StaffMember) {\r\n alert(\"Staff member is required.\");\r\n return;\r\n }\r\n\r\n //console.log(\"$scope.ce_row.ResponseType.Id = \" + $scope.ce_row.ResponseType.Id);\r\n //console.log(\"$scope.ce_row.ResponseType.Name = \" + $scope.ce_row.ResponseType.Name);\r\n console.log(\"$scope.ce_row.ResponseType = \" + $scope.ce_row.ResponseType);\r\n var saveRow = angular.copy($scope.ce_row);\r\n console.log(\"saveRow is next, before checking the Id...\");\r\n console.dir(saveRow);\r\n if (!saveRow.Id)\r\n saveRow.Id = 0;\r\n\r\n\r\n\r\n var subprojectId = 0;\r\n if ($scope.viewSubproject)\r\n subprojectId = $scope.viewSubproject.Id\r\n else\r\n subprojectId = $scope.subprojectId;\r\n\r\n //this gets passed along via api call... TODO: this is just to get going...\r\n var data = {\r\n ProjectId: $scope.project.Id,\r\n SubprojectId: subprojectId,\r\n DatastoreTablePrefix: $scope.DatastoreTablePrefix,\r\n };\r\n\r\n var target = '/api/v1/crppsubproject/uploadcrppsubprojectfile';\r\n\r\n $scope.handleFilesToUploadRemove(saveRow, data, target, $upload, $rootScope, $scope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n\r\n\r\n };\r\n\r\n //call back from save above once the files are done processing and we're ready to save the item\r\n $scope.modalFile_saveParentItem = function (saveRow) {\r\n //prepare to save the correspondence event\r\n // Now let's handle the other fields on the form.\r\n console.log(\"typeof saveRow.CorrespondenceDate = \" + typeof saveRow.CorrespondenceDate);\r\n if (typeof saveRow.CorrespondenceDate !== \"string\") {\r\n var strCorrespondenceDate = ServiceUtilities.toExactISOString(saveRow.CorrespondenceDate);\r\n console.log(\"strCorrespondenceDate = \" + strCorrespondenceDate);\r\n saveRow.CorrespondenceDate = ServiceUtilities.extractDateFromString(strCorrespondenceDate);\r\n console.log(\"saveRow.CorrespondenceDate = \" + saveRow.CorrespondenceDate);\r\n }\r\n\r\n //saveRow.CorrespondenceDate = ServiceUtilities.formatDate2(saveRow.CorrespondenceDate);\r\n //console.log(\"saveRow.CorrespondenceDate = \" + saveRow.CorrespondenceDate);\r\n\r\n if (saveRow.ResponseDate) {\r\n console.log(\"saveRow.ResponseDate initially = \" + saveRow.ResponseDate);\r\n console.log(\"typeof saveRow.ResponseDate = \" + typeof saveRow.ResponseDate);\r\n if (typeof saveRow.ResponseDate !== \"string\") {\r\n var strResponseDate = ServiceUtilities.toExactISOString(saveRow.ResponseDate);\r\n console.log(\"strResponseDate = \" + strResponseDate);\r\n }\r\n else {\r\n var dtDateOfResponse = new Date(saveRow.ResponseDate);\r\n console.log(\"dtDateOfResponse = \" + dtDateOfResponse);\r\n var strResponseDate = ServiceUtilities.toExactISOString(dtDateOfResponse);\r\n console.log(\"strResponseDate = \" + strResponseDate);\r\n }\r\n saveRow.ResponseDate = ServiceUtilities.extractDateFromString(strResponseDate);\r\n console.log(\"saveRow.ResponseDate after conversion = \" + saveRow.ResponseDate);\r\n\r\n }\r\n\r\n console.log(\"saveRow is next, after processing dates...\");\r\n console.dir(saveRow);\r\n\r\n if (saveRow.NumberOfDays === \"Other\")\r\n saveRow.NumberOfDays = null;\r\n\r\n if (saveRow.CorrespondenceType === \"Other\") {\r\n saveRow.CorrespondenceType = saveRow.OtherCorrespondenceType;\r\n saveRow.OtherCorrespondenceType = 'undefined'; // Throw this away, because we do not want to save it; no database field or it.\r\n }\r\n\r\n // Note: I could not get the following working; while it pulled the ResponseType name OK for the select, when you clicked save,\r\n // the ResponseTypeName was always 'undefined'.\r\n\t\t/* On the form, $scope.subproject_row.ResponseType is an object, like this: (Id: theId Name: theName)\r\n\t\t* The technique used to grab the ResponseType works on the first click (an improvement).\r\n\t\t* Note: The improvement only occurred on the subproject page; the select box for ResponseType did not behave the same way.\r\n\t\t* Therefore, I (gc) kept the technique, and chose to extract/reset $scope.subproject_row.Agency here in the controller, as just the name.\r\n\t\t*/\r\n //console.log(\"typeof saveRow.ResponseType = \" + typeof saveRow.ResponseType);\r\n //saveRow.ResponseType = 'undefined';\r\n //saveRow.ResponseType = $scope.ce_row.ResponseType.Name;\r\n //console.log(\"saveRow.ResponseType = \" + saveRow.ResponseType);\r\n\r\n // Response Type: If the user selected Other, we must use the name they supplied in OtherResponseType.\r\n //if ((saveRow.OtherResponseType) && (typeof saveRow.OtherResponseType !== 'undefined'))\r\n if (saveRow.ResponseType === \"Other\") {\r\n saveRow.ResponseType = saveRow.OtherResponseType;\r\n saveRow.OtherResponseType = 'undefined'; // Throw this away, because we do not want to save it; no database field or it.\r\n }\r\n\r\n\t\t/*var promise = SubprojectService.saveCorrespondenceEvent($scope.project.Id, $scope.viewSubproject.Id, saveRow);\r\n\t\tif (typeof promise !== 'undefined')\r\n\t\t{\r\n\t\t\tpromise.$promise.then(function(){\r\n\t\t\t\t$scope.reloadSubprojects();\r\n\t\t\t\t$scope.viewSelectedSubproject();\r\n\t\t\t\t$(\"#correspondenceEvents\").load(\"correspondenceEvents.html #correspondenceEvents\");\r\n\t\t\t\t$uibModalInstance.dismiss();\r\n\t\t\t\t})\r\n\t\t}\r\n\t\t*/\r\n\r\n //console.log(\"$scope is next...\");\r\n //console.dir($scope);\r\n\r\n\t\t/*\tIf the user chooses to create a Correspondence Event (CE), at the same time that they are creating a new Subproject,\r\n\t\t* $scope.viewSubproject is not available yet, so we cannot pass the Id from there. When we create the new Subproject,\r\n\t\t* we capture the Id from the Subproject, which is the same thing, so we pass that instead, to create the CE.\r\n\t\t*/\r\n if ($rootScope.crppProjectName)\r\n $scope.crppProjectName = $rootScope.crppProjectName;\r\n\r\n\r\n var save_item_promise = SubprojectService.saveCorrespondenceEvent($scope.project.Id, $scope.viewSubproject.Id, saveRow);\r\n //SubprojectService.saveHabitatItem($scope.projectId, $scope.viewSubproject.Id, saveRow);\r\n\r\n //setup the promise.then that runs after the habitat item is saved...\r\n if (typeof save_item_promise !== 'undefined') {\r\n save_item_promise.$promise.then(function () {\r\n //did we edit or add new?\r\n if (saveRow.Id === 0) //we saved a new one!\r\n $scope.postAddCorrespondenceEventUpdateGrid(save_item_promise);\r\n else //we edited one!\r\n $scope.postEditCorrespondenceEventUpdateGrid(save_item_promise);\r\n\r\n\r\n console.log(\"all done saving correspondence event!\");\r\n\r\n\r\n // @ts-ignore\r\n if (!$scope.filesToUpload[$scope.file_field] && !$scope.removedFiles.length > 0) {\r\n $uibModalInstance.dismiss();\r\n }\r\n\r\n });\r\n\r\n console.log(\"1 typeof $scope.errors = \" + typeof $scope.errors + \", $scope.fileCount = \" + $scope.fileCount + \", $scope.fileProgress = \" + $scope.fileProgress);\r\n if ($scope.fileCount === 0) {\r\n $scope.loading = false; // Stop the fish spinner.\r\n $scope.showCloseButton = true;\r\n $scope.showCancelButton = false;\r\n $scope.showFormItems = false;\r\n }\r\n\r\n if ($scope.filesWithErrors == 0)\r\n $scope.UploadUserMessage = \"All actions successful.\";\r\n else\r\n $scope.UploadUserMessage = \"There was a problem uploading a file. Please try again or contact the Helpdesk if this issue continues.\";\r\n\r\n }\r\n\r\n\r\n\r\n /*\r\n\r\n\t\tif ($scope.viewSubproject !== null)\r\n {\r\n console.log(\"$scope.viewSubproject is present, using that...\");\r\n\t\t\tconsole.log(\"$scope.viewSubproject.Id = \" + $scope.viewSubproject.Id);\r\n\t\t\tvar promise = SubprojectService.saveCorrespondenceEvent($scope.project.Id, $scope.viewSubproject.Id, saveRow);\r\n\t\t\tif (typeof promise !== 'undefined')\r\n\t\t\t{\r\n promise.$promise.then(function () {\r\n //$scope.reloadSubprojects();\r\n //$scope.viewSelectedSubproject();\r\n //$scope.viewSelectedSubproject($scope.viewSubproject);\r\n //$(\"#correspondenceEvents\").load(\"correspondenceEvents.html #correspondenceEvents\");\r\n //$uibModalInstance.dismiss();\r\n if (saveRow.Id === 0) //we saved a new one!\r\n $scope.postAddCorrespondenceEventUpdateGrid(promise);\r\n else //we edited one!\r\n $scope.postEditCorrespondenceEventUpdateGrid(promise);\r\n\r\n console.log(\"all done saving correspondence event!\");\r\n\r\n console.log(\"1 typeof $scope.errors = \" + typeof $scope.errors + \", $scope.fileCount = \" + $scope.fileCount + \", $scope.fileProgress = \" + $scope.fileProgress);\r\n if ($scope.fileCount === 0) {\r\n $scope.loading = false; // Stop the fish spinner.\r\n $scope.showCloseButton = true;\r\n $scope.showCancelButton = false;\r\n $scope.showFormItems = false;\r\n }\r\n });\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if ((typeof $scope.crppProjectName !== 'undefined' ) && ($scope.crppProjectName !== null))\r\n\t\t{\r\n\t\t\tconsole.log(\"$scope.viewSubproject missing, using $scope.subprojectId: \" + $scope.subprojectId);\r\n\t\t\tvar promise = SubprojectService.saveCorrespondenceEvent($scope.project.Id, $scope.subprojectId, saveRow);\r\n\t\t\tif (typeof promise !== 'undefined')\r\n\t\t\t{\r\n\t\t\t\tpromise.$promise.then(function(){\r\n\t\t\t\t\t$scope.reloadSubprojects();\r\n\t\t\t\t\t//$scope.viewSelectedSubproject();\r\n\t\t\t\t\t$(\"#correspondenceEvents\").load(\"correspondenceEvents.html #correspondenceEvents\");\r\n\t\t\t\t\t//$uibModalInstance.dismiss();\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\tif ($scope.fileCount === 0)\r\n\t\t\t\t{\r\n\t\t\t\t\t$scope.loading = false; // Stop the fish spinner.\r\n\t\t\t\t\t$scope.showCloseButton = true;\r\n\t\t\t\t\t$scope.showCancelButton = false;\r\n\t\t\t\t\t$scope.showFormItems = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n };\r\n */\r\n }\r\n\r\n\t$scope.close = function(){\r\n\t\tconsole.log(\"Inside $scope.close...\");\r\n\t\t$uibModalInstance.dismiss();\r\n\t};\r\n\r\n $scope.cancel = function () {\r\n\r\n if ($scope.originalExistingFiles && $scope.originalExistingFiles.hasOwnProperty($scope.file_field)) {\r\n $scope.ce_row.EventFiles = $scope.originalExistingFiles[$scope.file_field];\r\n //console.log(\"setting EventFiles to \" + $scope.originalExistingFiles[$scope.file_field]);\r\n }\r\n\r\n\t\t$uibModalInstance.dismiss();\r\n };\r\n }\r\n];\r\n\r\nexport default modal_add_correspondence_event;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {\r\n getAllMatchingFromArray,\r\n getByField,\r\n getById,\r\n getDataGrade,\r\n getFilesArrayAsList,\r\n getMatchingByField,\r\n getParsedMetadataValues,\r\n initEdit, makeObjects\r\n } from \"../../../common/common-functions\";\r\nimport {AdminUserIds, ROWSTATUS_DELETED, SystemTimezones} from \"../../../../config\";\r\n\r\n//Show this modal to prevent user from navigating, or doing anything else,\r\n// while the save action is in progress.\r\nvar modal_save_status = ['$scope', '$uibModal','$uibModalInstance', 'Upload', '$rootScope', '$location', 'DatasetService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, Upload, $rootScope, $location, DatasetService,) {\r\n console.log(\"Inside modal-save-status.ts, at the top...\");\r\n\r\n //$scope.showSuccess = true;\r\n $scope.showFish = true; // Start out with the fish spinning, and the Close button disabled.\r\n //$scope.AllActivitySaveTasksComplete = false;\r\n\r\n if ($scope.CallingPage === \"DatasetEditForm\")\r\n {\r\n\r\n //This is a workaround for angularjs' either too loose matching or too strict...\r\n $scope.locequals = function (actual, expected) { return actual == expected; };\r\n\r\n //Handle saving the files.\r\n var data = {\r\n ProjectId: $scope.project.Id,\r\n DatasetId: $scope.dataset.Id,\r\n };\r\n\r\n var target = '/api/v1/file/uploaddatasetfile';\r\n\r\n //console.log(\"$scope.row is next...\");\r\n //console.dir($scope.row);\r\n var saveRow = $scope.row;\r\n\r\n // The flow...\r\n // Call $scope.handleFilesToUploadRemove\r\n // $scope.handleFilesToUploadRemove does work and then calls dataset-edit-form.ts, $scope.modalFile_saveParentItem\r\n // dataset-edit-form.ts, $scope.modalFile_saveParentItem sets $scope.showFish to false in modal-save.status.ts\r\n // The user clicks Close on modal-save-status.html\r\n // - If the user was on dataset Creel Harvest, the page remains where it is\r\n // - If the user was on some other dataset, the page then navigates to the Dataset Activities page.\r\n $scope.handleFilesToUploadRemove(saveRow, data, target, Upload, $rootScope, $scope); //when done (handles failed files, etc., sets in scope objects) then calls modalFile_saveParentItem below.\r\n \r\n //$uibModalInstance.close();\r\n }\r\n else if ($scope.CallingPage === \"ImportMultipleActivities\")\r\n {\r\n var intActivityCount = 0;\r\n var intCompletedActivities = 0;\r\n\r\n $scope.ActivitiesToSave.forEach(function (activity) {\r\n\r\n intActivityCount++;\r\n\r\n //compose our payload\r\n var payload = {\r\n 'Activity': null,\r\n 'DatasetId': $scope.dataset.Id,\r\n 'ProjectId': $scope.project.Id,\r\n 'UserId': $rootScope.Profile.Id,\r\n 'deletedRowIds': [],\r\n 'editedRowIds': [],\r\n 'header': null,\r\n 'details': [],\r\n };\r\n\r\n $scope.dataAgGridOptions.api.forEachNode(function (node, index) {\r\n var the_date = moment(node.data.Activity.ActivityDate).format('YYYY-MM-DDTHH:mm');\r\n\r\n if (activity.ActivityDate == the_date && node.data.Activity.LocationId == activity.LocationId) {\r\n //console.dir(node);\r\n if (payload.header == null) {\r\n payload.Activity = node.data.Activity;\r\n payload.header = {};\r\n\r\n $scope.dataAgColumnDefs.HeaderFields.forEach(function (header_field) {\r\n payload.header[header_field.DbColumnName] = node.data[header_field.DbColumnName];\r\n })\r\n //add the ActivityQAStatus back in with values from the activity\r\n payload.Activity.ActivityQAStatus = {\r\n 'Comments': node.data.Activity.QAComments,\r\n 'QAStatusId': node.data.Activity.QAStatusId,\r\n };\r\n delete payload.header['QAStatusId'];\r\n delete payload.header['QAComments'];\r\n delete payload.header['LocationId'];\r\n delete payload.header['ActivityDate'];\r\n\r\n }\r\n //console.dir(node);\r\n if (node.data.data_row_hasdata) {\r\n\r\n var the_detail = { 'QAStatusId': node.data['QAStatusId'] };\r\n\r\n $scope.dataAgColumnDefs.DetailFields.forEach(function (detail_field) {\r\n if (detail_field.ControlType == \"multiselect\" && Array.isArray(node.data[detail_field.DbColumnName]))\r\n the_detail[detail_field.DbColumnName] = angular.toJson(node.data[detail_field.DbColumnName]);\r\n else\r\n the_detail[detail_field.DbColumnName] = node.data[detail_field.DbColumnName];\r\n });\r\n payload.details.push(the_detail);\r\n //console.dir(the_detail);\r\n } else {\r\n console.log(\"skipping data for this row because it was empty!\");\r\n }\r\n\r\n }\r\n });\r\n\r\n activity.numRecords = payload.details.length;\r\n\r\n //console.dir(payload);\r\n activity.result = DatasetService.saveActivities(payload);\r\n\r\n activity.result.$promise.then(\r\n function () {\r\n activity.result.success = \"Save successful.\";\r\n console.log(\"Success!\");\r\n\r\n intCompletedActivities++;\r\n\r\n if (intActivityCount === intCompletedActivities)\r\n {\r\n $scope.system.loading = false;\r\n $scope.showFish = false;\r\n }\r\n\r\n },\r\n function (data) {\r\n console.log(\"Failure!\");\r\n\r\n intCompletedActivities++;\r\n\r\n if (intActivityCount === intCompletedActivities)\r\n {\r\n $scope.system.loading = false;\r\n $scope.showFish = false;\r\n }\r\n\r\n //console.dir(data);\r\n let theErrorText: any;\r\n if (typeof data.data !== 'undefined') {\r\n if (typeof data.data.ExceptionMessage !== 'undefined') {\r\n theErrorText = data.data.ExceptionMessage;\r\n console.log(\"Save error: theErrorText = \" + theErrorText);\r\n }\r\n\r\n }\r\n activity.result.error = \"Error: \" + theErrorText ;\r\n\r\n });\r\n\r\n });\r\n }\r\n\r\n\r\n $scope.close = function () {\r\n if ($scope.background_save) // Creel Survey, Add Section button clicked.\r\n {\r\n // Close the modal, but stay on the page.\r\n $uibModalInstance.dismiss();\r\n\r\n // Set $scope.background_save to false here, as it will get reset to true by the dataset-edit-form\r\n // when doing a new Creel section.\r\n $scope.background_save = false;\r\n $scope.$parent.background_save = false;\r\n }\r\n else\r\n {\r\n // Close the modal, AND redirect to the Dataset Activities page.\r\n $location.path(\"/\" + $scope.dataset.activitiesRoute + \"/\" + $scope.dataset.Id);\r\n $uibModalInstance.dismiss();\r\n }\r\n };\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n }\r\n];\r\n\r\nexport default modal_save_status;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {\r\n valueFormatterArrayToList,\r\n valueFormatterBoolean,\r\n valueFormatterDate\r\n} from \"../../../../core/common/common-functions\";\r\nimport {LeaseModalScope} from \"./lease-scope\";\r\n/*import leasing_module from \"../../leasing-module\";*/\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar active_leases = ['$scope', '$route', '$routeParams', '$uibModal', '$location', '$window', '$rootScope', 'LeasingService',\r\n function ($scope, $route, $routeParams, $uibModal, $location, $window, $rootScope, LeasingService) {\r\n\r\n $rootScope.inModule = \"leasing\";\r\n console.log(\"Inside active-leases.ts\");\r\n\r\n if (!$scope.Profile.hasRole(\"Leasing\"))\r\n angular.rootScope.go(\"/unauthorized\");\r\n\r\n $scope.currentPage = \"Active\";\r\n\r\n LeasingService.expireLeases();\r\n\r\n $scope.canViewCropFields = $rootScope.Profile.hasRole(\"LeaseCropAdmin\");\r\n\r\n $scope.showAll = 'No';\r\n\r\n $scope.toggleShowAll = function () {\r\n $scope.showAll = ($scope.showAll == 'Yes') ? 'No' : 'Yes';\r\n if ($scope.showAll == 'Yes') {\r\n $scope.leases = LeasingService.getAllLeases();\r\n $scope.leases.$promise.then(function () {\r\n $scope.leaseGrid.api.setRowData($scope.leases);\r\n $scope.leaseGrid.columnApi.setColumnVisible(\"Status\", true);\r\n });\r\n } else {\r\n $scope.leases = LeasingService.getActiveLeases();\r\n $scope.leases.$promise.then(function () {\r\n $scope.leaseGrid.api.setRowData($scope.leases);\r\n });\r\n }\r\n }\r\n\r\n $scope.leases = LeasingService.getActiveLeases();\r\n\r\n $scope.leases.$promise.then(function () {\r\n $scope.leaseGridDiv = document.querySelector('#active-leases-grid');\r\n new Grid($scope.leaseGridDiv, $scope.leaseGrid);\r\n });\r\n\r\n var EditLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a');\r\n editBtn.href = '#';\r\n editBtn.innerHTML = 'View';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.viewLease(param.data, event);\r\n });\r\n\r\n div.appendChild(editBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n //Modify editBtn.href from '#' to GIS Tax Parcel Viewer URL\r\n var editBtn = document.createElement('a');\r\n editBtn.href = 'https://gisportal.ctuir.org/portal/apps/webappviewer/index.html?id=54fd175f4e2745ff92b278d04b987ad9';\r\n editBtn.innerHTML = 'Map';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n //Change \"viewOnMap\" functionality to window.open() to open the GIS Tax Parcel\r\n // Viewer rather than the embedded map\r\n\r\n //$scope.viewOnMap(param.data, event);\r\n window.open(editBtn.href, '_blank');\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n\r\n var leaseColumnDefs = [\r\n {colId: 'EditLinks', width: 90, cellRenderer: EditLinksTemplate, menuTabs: []},\r\n {\r\n headerName: \"Status\", field: \"Status\", width: 160, hide: true,\r\n valueFormatter: function (params) {\r\n if (params.node)\r\n // return leasing_module.LeaseStatus[params.node.data.Status];\r\n return LeaseModalScope.LeaseStatus[params.node.data.Status];\r\n else\r\n // return leasing_module.LeaseStatus[params.value];\r\n return LeaseModalScope.LeaseStatus[params.value];\r\n }, filter: true, menuTabs: ['filterMenuTab']\r\n },\r\n {headerName: \"Lease Type\", field: \"LeaseType\", width: 160, menuTabs: ['filterMenuTab'], filter: true},\r\n {headerName: \"Allotment\", field: \"AllotmentName\", width: 180, menuTabs: ['filterMenuTab'], filter: \"text\"},\r\n {headerName: \"TAAMSNumber\", field: \"TAAMSNumber\", width: 160, menuTabs: ['filterMenuTab'], filter: \"text\"},\r\n {headerName: \"Lease Number\", field: \"LeaseNumber\", width: 160, menuTabs: ['filterMenuTab'], filter: \"text\"},\r\n {\r\n headerName: \"Operator\", width: 160,\r\n valueGetter: function (params) {\r\n return (params.node.data.LeaseOperator.Organization) ? params.node.data.LeaseOperator.Organization : params.node.data.LeaseOperator.FirstName + \" \" + params.node.data.LeaseOperator.LastName;\r\n },\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n //{ headerName: \"Farm Number\", field: \"FarmNumber\", width: 160 },\r\n //{ headerName: \"Level\", field: \"Level\", width: 160 },\r\n {\r\n headerName: \"Lease Start\",\r\n field: \"LeaseStart\", width: 160,\r\n valueGetter: function (params) {\r\n return moment(params.node.data.LeaseStart)\r\n },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.LeaseStart);\r\n },\r\n menuTabs: ['filterMenuTab'],\r\n filter: \"agDateColumnFilter\"\r\n },\r\n {\r\n headerName: \"Lease End\",\r\n field: \"LeaseEnd\", width: 160,\r\n valueGetter: function (params) {\r\n return moment(params.node.data.LeaseEnd)\r\n },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.LeaseEnd);\r\n },\r\n menuTabs: ['filterMenuTab'],\r\n filter: \"agDateColumnFilter\"\r\n },\r\n {headerName: \"Status By\", field: \"StatusBy\", width: 160, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n {\r\n headerName: \"Transaction Date\",\r\n field: \"TransactionDate\", width: 160,\r\n valueGetter: function (params) {\r\n return moment(params.node.data.TransactionDate)\r\n },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.TransactionDate);\r\n },\r\n menuTabs: ['filterMenuTab'],\r\n filter: \"agDateColumnFilter\"\r\n },\r\n {\r\n headerName: \"Status Date\",\r\n field: \"StatusDate\", width: 160,\r\n valueGetter: function (params) {\r\n return moment(params.node.data.StatusDate)\r\n },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.StatusDate);\r\n },\r\n menuTabs: ['filterMenuTab'],\r\n filter: \"agDateColumnFilter\"\r\n },\r\n {headerName: \"FSA Tract\", field: \"FSATractNumber\", width: 160, menuTabs: ['filterMenuTab'], filter: \"text\"},\r\n //{ headerName: \"HEL\", field: \"HEL\", width: 160 },\r\n {headerName: \"Lease Acres\", field: \"LeaseAcres\", width: 160, menuTabs: ['filterMenuTab'], filter: \"number\"},\r\n //{ headerName: \"Lease Duration\", field: \"LeaseDuration\", width: 160 },\r\n {\r\n headerName: \"Productive Acres\",\r\n field: \"ProductiveAcres\",\r\n width: 160,\r\n menuTabs: ['filterMenuTab'],\r\n filter: \"number\"\r\n },\r\n {\r\n headerName: \"Negotiate Date\",\r\n field: \"NegotiateDate\", width: 160,\r\n valueGetter: function (params) {\r\n return moment(params.node.data.NegotiateDate)\r\n },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.NegotiateDate);\r\n },\r\n menuTabs: ['filterMenuTab'],\r\n filter: \"agDateColumnFilter\"\r\n },\r\n {\r\n headerName: \"Due Date\",\r\n field: \"DueDate\", width: 160,\r\n menuTabs: ['filterMenuTab'],\r\n filter: \"text\"\r\n },\r\n {\r\n headerName: \"Approved Date\",\r\n field: \"ApprovedDate\", width: 160,\r\n valueGetter: function (params) {\r\n return moment(params.node.data.ApprovedDate)\r\n },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.ApprovedDate);\r\n },\r\n menuTabs: ['filterMenuTab'],\r\n filter: \"agDateColumnFilter\"\r\n }, {\r\n headerName: \"Withdrawl Date\",\r\n field: \"WithdrawlDate\", width: 160,\r\n valueGetter: function (params) {\r\n return moment(params.node.data.WithdrawlDate)\r\n },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.WithdrawlDate);\r\n },\r\n menuTabs: ['filterMenuTab'],\r\n filter: \"agDateColumnFilter\"\r\n },\r\n {\r\n headerName: \"Graze Start\",\r\n field: \"GrazeStart\", width: 160,\r\n menuTabs: ['filterMenuTab'],\r\n filter: false\r\n },\r\n {\r\n headerName: \"Graze End\",\r\n field: \"GrazeEnd\", width: 160,\r\n menuTabs: ['filterMenuTab'],\r\n filter: false\r\n\r\n },\r\n {\r\n headerName: \"Residue Required Pct\",\r\n field: \"ResidueRequiredPct\",\r\n width: 160,\r\n menuTabs: ['filterMenuTab'],\r\n filter: \"number\",\r\n hide: !$scope.canViewCropFields\r\n },\r\n {\r\n headerName: \"Green Cover Required Pct\",\r\n field: \"GreenCoverRequiredPct\",\r\n width: 160,\r\n menuTabs: ['filterMenuTab'],\r\n filter: \"number\",\r\n hide: !$scope.canViewCropFields\r\n },\r\n {\r\n headerName: \"Clod Required Pct\",\r\n field: \"ClodRequiredPct\",\r\n width: 160,\r\n menuTabs: ['filterMenuTab'],\r\n filter: \"number\",\r\n hide: !$scope.canViewCropFields\r\n },\r\n {\r\n headerName: \"Optional Alt Crop\", hide: !$scope.canViewCropFields,\r\n field: \"OptionalAlternativeCrop\", width: 160,\r\n valueGetter: function (params) {\r\n return valueFormatterBoolean(params.node.data.OptionalAlternativeCrop);\r\n },\r\n menuTabs: ['filterMenuTab'], filter: true\r\n },\r\n {\r\n headerName: \"AUMs\",\r\n field: \"AUMs\",\r\n width: 160,\r\n menuTabs: ['filterMenuTab'],\r\n hide: !$scope.canViewCropFields,\r\n filter: true\r\n },\r\n {\r\n headerName: \"Dollar Per Annum\",\r\n field: \"DollarPerAnnum\",\r\n width: 160,\r\n menuTabs: ['filterMenuTab'],\r\n filter: \"number\"\r\n },\r\n {headerName: \"Dollar Advance\", field: \"DollarAdvance\", width: 160, menuTabs: ['filterMenuTab'], filter: \"number\"},\r\n {headerName: \"Dollar Bond\", field: \"DollarBond\", width: 160, menuTabs: ['filterMenuTab'], filter: \"number\"},\r\n {headerName: \"Lease Fee\", field: \"LeaseFee\", width: 160, menuTabs: ['filterMenuTab'], filter: \"number\"},\r\n {\r\n headerName: \"Graze Animal\", field: \"GrazeAnimal\", width: 160, menuTabs: ['filterMenuTab'], filter: true,\r\n valueFormatter: function (params) {\r\n return valueFormatterArrayToList(params.node.data.GrazeAnimal);\r\n }\r\n },\r\n {headerName: \"Notes\", field: \"Notes\", width: 160, menuTabs: ['filterMenuTab'], filter: \"text\"},\r\n\r\n ];\r\n\r\n\r\n $scope.leaseGrid = {\r\n columnDefs: leaseColumnDefs,\r\n rowData: $scope.leases,\r\n rowSelection: 'multiple',\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n }\r\n\r\n\r\n $scope.viewLease = function (params, e) {\r\n if (e.ctrlKey)\r\n $window.open(\"view-lease/\" + params.Id, \"_blank\");\r\n else\r\n $location.url(\"view-lease/\" + params.Id);\r\n };\r\n\r\n $scope.viewOnMap = function (params, e) {\r\n if (e.ctrlKey)\r\n $window.open(\"leasing?allotment=\" + params.AllotmentName, \"_blank\");\r\n else\r\n $location.url(\"leasing?allotment=\" + params.AllotmentName);\r\n }\r\n\r\n }];\r\n\r\nexport default active_leases;\r\n","import * as angular from 'angular';\r\nimport render from 'zingchart';\r\nimport {getFilesArrayAsList, makeObjects} from \"../../../common/common-functions\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\nimport row from \"ag-grid-enterprise/dist/lib/exporter/files/xml/row\";\r\n\r\nvar table_editor = ['$scope', '$routeParams', 'GridService', 'ProjectService', 'DatasetService', 'CommonService', 'UserService',\r\n '$rootScope', '$uibModal', '$sce', '$window',\r\n function (scope, routeParams, GridService, ProjectService, DatasetService, CommonService, UserService, $rootScope, $uibModal, $sce, $window) {\r\n\r\n console.log(\"Inside table.ts...\");\r\n\r\n scope.col_left = \"col-12\";\r\n scope.col_right = undefined;\r\n\r\n scope.project = null;\r\n\r\n scope.dataset = DatasetService.getDataset(routeParams.Id);\r\n\r\n scope.saveResults = {};\r\n\r\n scope.holdChildtabledata = null;\r\n\r\n scope.resetSaveResults = function () {\r\n scope.saveResults = {\r\n parent: {success: null, failure: null},\r\n child: {success: null, failure: null},\r\n grandchild: {success: null, failure: null},\r\n };\r\n }\r\n\r\n scope.resetSaveResults();\r\n\r\n scope.dataset.$promise.then(function () {\r\n\r\n scope.project = ProjectService.getProject(scope.dataset.ProjectId);\r\n\r\n scope.loadTable(routeParams.Id);\r\n\r\n scope.TableDatasetColumnDefs = GridService.getAgColumnDefs(scope.dataset);\r\n\r\n scope.tableGrid.columnDefs = angular.copy(scope.TableDatasetColumnDefs.HeaderFields);\r\n\r\n //set sort direction of first column\r\n var sortFirstCol = \"asc\";\r\n\r\n if (scope.tableGrid.columnDefs[0].cdmsField.Field.DataType == 'date' ||\r\n scope.tableGrid.columnDefs[0].cdmsField.Field.DataType == 'datetime')\r\n sortFirstCol = \"desc\";\r\n\r\n scope.tableGrid.columnDefs[0].sort = sortFirstCol;\r\n\r\n //see if we have any file fields\r\n scope.noteFileFields(scope.dataset, scope.TableDatasetColumnDefs.HeaderFields);\r\n\r\n //setup the grid!\r\n scope.tableGridDiv = document.querySelector('#table-grid');\r\n new Grid(scope.tableGridDiv, scope.tableGrid); // This line has lots of warnings.\r\n scope.mpv_style = \"mpv-tall ag-theme-balham gridStyle-small\";\r\n\r\n scope.project.$promise.then(function () {\r\n //to populate the locations dropdown, if it exists.\r\n scope.project.Locations = ProjectService.getDatasetLocations(scope.project.Id, scope.dataset.Id);\r\n\r\n //set the possible values in the LocationId field so that our cell value will be properly populated\r\n scope.project.Locations.$promise.then(function () {\r\n angular.forEach(scope.tableGrid.columnDefs, function (fieldDef) {\r\n if (fieldDef.field == \"LocationId\") {\r\n fieldDef.setPossibleValues(makeObjects(scope.project.Locations, 'Id', 'Label'));\r\n\r\n //reset the grid to pickup the new possible values\r\n scope.tableGrid.api.setRowData(scope.tabledata);\r\n\r\n //reexpand the columns\r\n\r\n let allColumnIds = [];\r\n scope.tableGrid.columnApi.getAllColumns().forEach(function (columnDef) {\r\n\r\n allColumnIds.push(columnDef.colId);\r\n });\r\n\r\n scope.tableGrid.columnApi.autoSizeColumns(allColumnIds);\r\n }\r\n });\r\n })\r\n });\r\n\r\n });\r\n\r\n scope.sortTableGrid = function () {\r\n if ((typeof sortFirstCol === 'undefined') || (sortFirstCol == null)) {\r\n //set sort direction of first column\r\n var sortFirstCol = \"asc\";\r\n\r\n if (scope.tableGrid.columnDefs[0].cdmsField.Field.DataType == 'date' ||\r\n scope.tableGrid.columnDefs[0].cdmsField.Field.DataType == 'datetime')\r\n sortFirstCol = \"desc\";\r\n\r\n scope.tableGrid.columnDefs[0].sort = sortFirstCol;\r\n\r\n }\r\n }\r\n\r\n scope.tableGrid = {\r\n columnDefs: [],\r\n rowData: null,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n scope.resetSaveResults();\r\n\r\n scope.tableGrid.selectedItem = scope.tableGrid.api.getSelectedRows()[0];\r\n if (scope.tableGrid.selectedItem.ProjectName)\r\n scope.tableGrid.selectedItem.Name = scope.tableGrid.selectedItem.ProjectName;\r\n\r\n scope.selectParent(scope.tableGrid.selectedItem);\r\n scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n onRowDoubleClicked: function (params) {\r\n scope.openDataModal(\"parent\", params.data);\r\n },\r\n selectedItem: null,\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n getRowHeight: function (params) {\r\n return scope.calculateRowHeight(scope.dataset, params);\r\n },\r\n onFirstDataRendered: function (params) {\r\n\r\n let allColumnIds = [];\r\n scope.tableGrid.columnApi.getAllColumns().forEach(function (columnDef) {\r\n\r\n allColumnIds.push(columnDef.colId);\r\n });\r\n\r\n scope.tableGrid.columnApi.autoSizeColumns(allColumnIds);\r\n },\r\n onFilterChanged: function () {\r\n scope.tableGrid.selectedItem = null;\r\n scope.childtabledata = [];\r\n scope.childTableGrid.api.setRowData(scope.childtabledata);\r\n scope.$apply();\r\n }\r\n }\r\n\r\n scope.selectParent = function (parent) {\r\n\r\n if (!scope.dataset.ChildDatasetId)\r\n return;\r\n\r\n scope.zingChart('parentChart', scope.dataset.Datastore.TablePrefix, scope.tableGrid);\r\n\r\n if (!scope.childDataset) {\r\n\r\n scope.childTableGrid = {\r\n columnDefs: [],\r\n rowData: null,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n scope.childTableGrid.selectedItem = scope.childTableGrid.api.getSelectedRows()[0];\r\n scope.selectChild(scope.childTableGrid.selectedItem);\r\n\r\n if (scope.grandChildTableGrid)\r\n scope.grandChildTableGrid.selectedItem = null;\r\n\r\n scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n onRowDoubleClicked: function (params) {\r\n scope.openDataModal(\"child\", params.data);\r\n },\r\n selectedItem: null,\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onFirstDataRendered: function (params) {\r\n\r\n let allColumnIds = [];\r\n scope.childTableGrid.columnApi.getAllColumns().forEach(function (columnDef) {\r\n\r\n allColumnIds.push(columnDef.colId);\r\n });\r\n\r\n scope.childTableGrid.columnApi.autoSizeColumns(allColumnIds);\r\n },\r\n getRowHeight: function (params) {\r\n return scope.calculateRowHeight(scope.childDataset, params);\r\n }\r\n }\r\n\r\n scope.childDataset = DatasetService.getDataset(scope.dataset.ChildDatasetId);\r\n scope.childDataset.$promise.then(function () {\r\n\r\n scope.childtabledata = DatasetService.getChildTableData(scope.dataset.ChildDatasetId, parent.Id);\r\n\r\n scope.childtabledata.$promise.then(function () {\r\n scope.childTableGrid.api.setRowData(scope.childtabledata);\r\n scope.zingChart('childChart', scope.childDataset.Datastore.TablePrefix, scope.childTableGrid);\r\n });\r\n\r\n scope.ChildTableDatasetColumnDefs = GridService.getAgColumnDefs(scope.childDataset);\r\n\r\n scope.childTableGrid.columnDefs = angular.copy(scope.ChildTableDatasetColumnDefs.HeaderFields);\r\n\r\n var sortFirstCol = \"asc\";\r\n\r\n if (scope.childTableGrid.columnDefs[0].cdmsField.Field.DataType == 'date' ||\r\n scope.childTableGrid.columnDefs[0].cdmsField.Field.DataType == 'datetime')\r\n sortFirstCol = \"desc\";\r\n\r\n scope.noteFileFields(scope.childDataset, scope.ChildTableDatasetColumnDefs.HeaderFields);\r\n\r\n scope.childTableGridDiv = document.querySelector('#child-table-grid');\r\n new Grid(scope.childTableGridDiv, scope.childTableGrid);\r\n scope.mpv_style = \"mpv-short ag-theme-balham gridStyle-small\";\r\n\r\n });\r\n } else {\r\n scope.childTableGrid.selectedItem = null;\r\n scope.childTableGrid.api.showLoadingOverlay();\r\n scope.childtabledata = DatasetService.getChildTableData(scope.dataset.ChildDatasetId, parent.Id);\r\n scope.childtabledata.$promise.then(function () {\r\n // Dump the contents of scope.holdChildtabledata before refilling it.\r\n //scope.holdChildtabledata = null;\r\n //scope.holdChildtabledata = angular.copy(scope.childtabledata);\r\n\r\n //scope.childtabledata.forEach(function (theRowData){\r\n // if ((theRowData.ResourceLink) && (theRowData.ResourceLink !== null))\r\n // {\r\n //var tmpResourceLink = [];\r\n //var tmpFromJson = JSON.parse(theRowData.ResourceLink);\r\n //if (Array.isArray(tmpFromJson))\r\n //{\r\n // var tmpTheLink = \"\";\r\n // tmpFromJson.forEach(function (theResourceLinkItem){\r\n // tmpTheLink = \"\" + theResourceLinkItem.Link + \"\";\r\n // tmpResourceLink.push(tmpTheLink);\r\n // });\r\n // theRowData.ResourceLink = tmpResourceLink;\r\n //}\r\n //else\r\n //{\r\n // theRowData.ResourceLink = tmpFromJson.Link;\r\n //}\r\n //theRowData.ResourceLink = tmpFromJson;\r\n // }\r\n //});\r\n\r\n console.debug(\"scope.childtabledata = \" + scope.childtabledata);\r\n scope.childTableGrid.api.setRowData(scope.childtabledata);\r\n scope.zingChart('childChart', scope.childDataset.Datastore.TablePrefix, scope.childTableGrid);\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n scope.selectChild = function (child) {\r\n\r\n scope.resetSaveResults();\r\n\r\n if (!scope.childDataset.ChildDatasetId)\r\n return;\r\n\r\n if (!scope.grandChildDataset) {\r\n\r\n scope.grandChildTableGrid = {\r\n columnDefs: [],\r\n rowData: null,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n scope.grandChildTableGrid.selectedItem = scope.grandChildTableGrid.api.getSelectedRows()[0];\r\n scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n onRowDoubleClicked: function (params) {\r\n scope.openDataModal(\"grandchild\", params.data);\r\n },\r\n selectedItem: null,\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n }\r\n\r\n scope.grandChildDataset = DatasetService.getDataset(scope.childDataset.ChildDatasetId);\r\n scope.grandChildDataset.$promise.then(function () {\r\n scope.grandchildtabledata = DatasetService.getChildTableData(scope.childDataset.ChildDatasetId, child.Id);\r\n console.log(\"scope.grandchildtabledata = \" + scope.grandchildtabledata);\r\n\r\n scope.grandchildtabledata.$promise.then(function () {\r\n scope.grandChildTableGrid.api.setRowData(scope.grandchildtabledata);\r\n });\r\n\r\n scope.GrandChildTableDatasetColumnDefs = GridService.getAgColumnDefs(scope.grandChildDataset);\r\n\r\n scope.grandChildTableGrid.columnDefs = angular.copy(scope.GrandChildTableDatasetColumnDefs.HeaderFields);\r\n\r\n scope.noteFileFields(scope.grandChildDataset, scope.GrandChildTableDatasetColumnDefs.HeaderFields);\r\n\r\n scope.grandChildTableGridDiv = document.querySelector('#grand-child-table-grid');\r\n new Grid(scope.grandChildTableGridDiv, scope.grandChildTableGrid);\r\n\r\n });\r\n } else {\r\n scope.grandChildTableGrid.selectedItem = null;\r\n scope.grandChildTableGrid.api.showLoadingOverlay();\r\n scope.grandchildtabledata = DatasetService.getChildTableData(scope.childDataset.ChildDatasetId, child.Id);\r\n scope.grandchildtabledata.$promise.then(function () {\r\n scope.grandChildTableGrid.api.setRowData(scope.grandchildtabledata);\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n scope.delete = function (type) {\r\n var blnContinue = false;\r\n\r\n scope.determineContext(type);\r\n //if ((type === \"parent\") && (scope.childtabledata.length > 0))\r\n if ((type === \"parent\") && (scope.childtabledata) && (scope.childtabledata.length > 0))\r\n alert(\"This item has an associated sub-item. All sub-items must be removed before this item can be deleted.\");\r\n else\r\n blnContinue = true;\r\n\r\n\r\n if (blnContinue) {\r\n if (scope.tableGrid.selectedItem && confirm(\"Are you sure you want to delete the selected row? This is irreversible.\")) {\r\n //var datasetId = scope.context_dataset.Id; // Created but not used...\r\n //var projectId = scope.context_dataset.ProjectId; // Created but not used...\r\n\r\n //if (type === \"parent\")\r\n var deleteFile = DatasetService.deleteMultiPanelFile(type, scope.context_dataset.ProjectId, scope.context_dataset.Id, scope.context_grid.selectedItem);\r\n\r\n var deleted = DatasetService.deleteDataTableRow(scope.context_dataset, scope.context_grid.selectedItem);\r\n }\r\n\r\n deleted.$promise.then(function () {\r\n scope.context_table.forEach(function (data, index) {\r\n if (scope.context_grid.selectedItem.Id == data.Id)\r\n scope.context_table.splice(index, 1);\r\n });\r\n scope.context_grid.api.setRowData(scope.context_table);\r\n scope.context_grid.selectedItem = null;\r\n }, function (failure) {\r\n console.dir(failure)\r\n scope.saveResults[type]['failure'] = \"Failed: \" + failure.data.ExceptionMessage;\r\n });\r\n }\r\n }\r\n\r\n //type can be \"parent\",\"child\",\"grandchild\"\r\n // sets the context_grid, context_dataset, context_table, parents\r\n scope.determineContext = function (type) {\r\n if (type == \"parent\") {\r\n scope.context_dataset = scope.dataset;\r\n scope.context_grid = scope.tableGrid;\r\n scope.context_table = scope.tabledata;\r\n } else if (type == \"child\") {\r\n scope.context_dataset = scope.childDataset;\r\n scope.context_grid = scope.childTableGrid;\r\n scope.context_table = scope.childtabledata;\r\n scope.context_parentgrid = scope.tableGrid;\r\n scope.context_parentdataset = scope.dataset;\r\n } else if (type == \"grandchild\") {\r\n scope.context_dataset = scope.grandChildDataset;\r\n scope.context_grid = scope.grandChildTableGrid;\r\n scope.context_table = scope.grandchildtabledata;\r\n scope.context_parentgrid = scope.childTableGrid;\r\n scope.context_parentdataset = scope.childDataset;\r\n }\r\n }\r\n\r\n scope.openDataModal = function (type, params) {\r\n\r\n if (!$rootScope.Profile.canEdit(scope.project)) {\r\n console.log(\"not authorized to edit\");\r\n return;\r\n }\r\n\r\n // We got to this record via a click/resetting scope.resetSaveResults(),\r\n // so we don't need to run it again.\r\n // But, if someone saves, and then opens the form right away, they we must\r\n // reset.\r\n scope.resetSaveResults();\r\n\r\n // We adjusted the child data, to show links properly, so set them back,\r\n // before opening the modal.\r\n if (scope.holdChildtabledata !== null) {\r\n scope.childtabledata = null;\r\n scope.childtabledata = angular.copy(scope.holdChildtabledata);\r\n }\r\n\r\n scope.saveResults[type]['failure'] = scope.saveResults[type]['success'] = null; //reset\r\n\r\n //sets the context_grid, context_dataset, context_table used by the modal\r\n scope.determineContext(type);\r\n //console.log(\"determined context for \" + type);\r\n\r\n scope.data_type = type;\r\n scope.data_modal = (params) ? angular.copy(params) : GridService.getNewRow(scope.context_grid.columnDefs);\r\n\r\n scope.data_parentId = 0\r\n\r\n if (type == 'parent') {\r\n // Do nothing. Parent is the top-level and doesn't have it own parent.\r\n } else if (type == 'child') {\r\n scope.data_parentId = scope.tableGrid.selectedItem.Id;\r\n } else if (type == 'grandchild') {\r\n scope.data_parentId = scope.tableGrid.selectedItem.Id;\r\n }\r\n\r\n //setup the fk relationships\r\n if (!params && scope.context_dataset.ChildDatasetKeyColumn != null) {\r\n //if (scope.context_grid.rowData !== null){ //don't know why this is testing for this, but it interferes with setting the fk...\r\n scope.data_modal[scope.context_dataset.ChildDatasetKeyColumn] = scope.context_parentgrid.selectedItem.Id; //link the parent FK (if exists)\r\n if (scope.context_parentdataset.ChildDatasetKeyColumn != null) {\r\n scope.data_modal[scope.context_parentdataset.ChildDatasetKeyColumn] = scope.tableGrid.selectedItem.Id; //link the grandparent FK (if exists)\r\n }\r\n //}\r\n }\r\n\r\n\r\n //console.log (' -- -- -- opening')\r\n //console.log(\"data_parentId: \" + scope.data_parentId)\r\n //console.dir(scope.context_parentgrid)\r\n //console.dir(scope.tableGrid)\r\n //console.dir(scope.data_modal)\r\n\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-table/templates/edit-data-modal.html',\r\n controller: 'TableDataModal',\r\n scope: scope,\r\n backdrop: \"static\",\r\n keyboard: false,\r\n windowClass: 'modal-medium'\r\n }).result.then(function (saved) {\r\n //console.log(\" -- done saving -- and back -- \");\r\n saved = saved[0]; //get the first row\r\n\r\n //console.log(\"datamodal\")\r\n //console.dir(scope.data_modal);\r\n\r\n if (!scope.data_modal.hasOwnProperty('Id') || !scope.data_modal.Id) {\r\n //console.log(\"pushing to context_table ----------\");\r\n //console.dir(scope.context_table);\r\n scope.context_table.push(saved);\r\n } else {\r\n //console.log(\"no id so looking for it in\");\r\n //console.dir(scope.context_table);\r\n\r\n scope.context_table.forEach((data, index) => {\r\n if (data.Id == saved.Id) {\r\n data = angular.extend(data, saved);\r\n // let rowNode = scope.context_grid.api.getRowNodeId(data.Id);\r\n // rowNode.setData(data);\r\n\r\n scope.context_table[index] = data;\r\n\r\n //console.log(\"extended data with saved\");\r\n // console.dir(data);\r\n }\r\n });\r\n\r\n }\r\n\r\n //console.log(\"all done, refreshing\");\r\n\r\n scope.context_grid.api.setRowData(scope.context_table);\r\n scope.zingChart('parentChart', scope.dataset.Datastore.TablePrefix, scope.tableGrid);\r\n\r\n if (scope.childDataset)\r\n scope.zingChart('childChart', scope.childDataset.Datastore.TablePrefix, scope.childTableGrid);\r\n\r\n });\r\n\r\n }\r\n\r\n //if we have a file column, note it in a property for easy use when calculating rowheight\r\n scope.noteFileFields = function (dataset, columns) {\r\n var file_fields = [];\r\n columns.forEach(function (field) {\r\n if (field.ControlType == 'file')\r\n file_fields.push(field.DbColumnName);\r\n })\r\n if (file_fields.length > 0)\r\n dataset.file_fields = file_fields;\r\n\r\n console.dir(dataset.file_fields);\r\n }\r\n\r\n //use the files, comments, description fields to determine the height of the row\r\n scope.calculateRowHeight = function (dataset, params) {\r\n //var desc_length = (!params.data.Description) ? 1 : params.data.Description.length;\r\n var desc_length = 1;\r\n //var comment_length = (!params.data.Comments) ? 1 : params.data.Comments.length;\r\n var comment_length = 1;\r\n var longest = (comment_length > desc_length) ? comment_length : desc_length;\r\n var comment_height = 25 * (Math.floor(longest / 45) + 1); //base our detail height on the Description field.\r\n comment_height = (comment_height > 75) ? 75 : comment_height; //maxheight (based on comment/description)= 3 rows\r\n console.log(\"Inside scope.calculateRowHeight\");\r\n\r\n if (dataset.hasOwnProperty('file_fields')) {\r\n var num_files = 0\r\n dataset.file_fields.forEach(function (field) {\r\n var these_files = getFilesArrayAsList(params.data[field]).length;\r\n if (these_files > num_files)\r\n num_files = these_files\r\n });\r\n\r\n let file_height = 25 * num_files;\r\n\r\n if (file_height > comment_height) {\r\n\r\n comment_height = file_height;\r\n }\r\n }\r\n\r\n dataset.Fields.forEach(field => {\r\n // var new_num_files = 0\r\n if (field.DbColumnName == 'ExternalLinks') {\r\n let num_files = 0\r\n let these_files = getFilesArrayAsList(params.data['ExternalLinks']).length;\r\n // try these files too\r\n if (these_files == 0) {\r\n these_files = getFilesArrayAsList(params.data['FileHyperLink']).length;\r\n }\r\n // var these_files= (temp.match(/is/g) || []).length;\r\n if (these_files > num_files) {\r\n num_files = these_files\r\n }\r\n\r\n let file_height = 25 * num_files;\r\n\r\n if (file_height > comment_height) {\r\n\r\n comment_height = file_height;\r\n }\r\n }\r\n\r\n if (field.DbColumnName == 'FileHyperLink') {\r\n let these_files = getFilesArrayAsList(params.data['FileHyperLink']).length;\r\n // var these_files= (temp.match(/is/g) || []).length;\r\n if (these_files > num_files) {\r\n num_files = these_files\r\n }\r\n\r\n let file_height = 25 * num_files;\r\n\r\n if (file_height > comment_height) {\r\n\r\n comment_height = file_height;\r\n }\r\n }\r\n\r\n });\r\n\r\n return comment_height;\r\n }\r\n\r\n scope.zingChart = function (chartId, tablePrefix, grid) {\r\n\r\n var functionName = tablePrefix + \"ZingChartData\";\r\n if (typeof window[functionName] !== \"function\") {\r\n //console.log(\"No chart found for: \" + functionName);\r\n return;\r\n }\r\n\r\n scope.col_left = \"col-9\";\r\n scope.col_right = \"col-3\";\r\n\r\n var chartData = window[functionName](grid);\r\n\r\n\r\n render({\r\n id: chartId,\r\n data: chartData\r\n })\r\n }\r\n\r\n //handle favorite toggle\r\n scope.isFavorite = $rootScope.Profile.isDatasetFavorite(routeParams.Id);\r\n scope.toggleFavorite = function () {\r\n UserService.toggleFavoriteDataset(scope, $rootScope);\r\n }\r\n\r\n scope.loadTable = function (datasetId) {\r\n scope.tabledata = DatasetService.getTableData(datasetId);\r\n\r\n scope.tabledata.$promise.then(function () {\r\n //console.dir(scope.tabledata);\r\n if (scope.dataset.Config.hasOwnProperty('OmitFirstRecord')) {\r\n if (scope.dataset.Config.OmitFirstRecord)\r\n scope.tabledata = scope.tabledata.slice(1);\r\n }\r\n\r\n scope.tableGrid.api.setRowData(scope.tabledata);\r\n });\r\n }\r\n }\r\n\r\n\r\n];\r\n\r\nexport default table_editor;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\n\r\nvar modal_add_grazing_inspection = ['$scope', '$uibModalInstance', 'LeasingService',\r\n function ($scope, $uibModalInstance, LeasingService) {\r\n\r\n $scope.header_message = \"Edit Grazing Inspection\";\r\n\r\n //if we're not editing then we are creating a new one\r\n if (!$scope.inspection_modal) {\r\n $scope.header_message = \"Add Grazing Inspection\";\r\n\r\n $scope.inspection_modal = {\r\n InspectionDateTime: $scope.currentDay,\r\n InspectedBy: $scope.currentUser,\r\n LeaseYear: \"\" + moment().year(),\r\n InspectionType: \"Grazing\",\r\n ViolationType: \"Crop\",\r\n Animals: []\r\n };\r\n }\r\n else {\r\n $scope.inspection_modal.Animals = angular.fromJson($scope.inspection_modal.Animals);\r\n }\r\n\r\n console.dir($scope.inspection_modal);\r\n\r\n\r\n $scope.save = function () {\r\n\r\n $scope.inspection_modal.Animals = JSON.stringify($scope.inspection_modal.Animals);\r\n\r\n console.dir($scope.inspection_modal);\r\n $scope.inspection_modal.LeaseId = $scope.lease.Id;\r\n var save_result = LeasingService.saveInspection($scope.inspection_modal);\r\n\r\n save_result.$promise.then(function () {\r\n $scope.saveLeaseCallback(save_result);\r\n $uibModalInstance.dismiss();\r\n });\r\n };\r\n\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_add_grazing_inspection;\r\n","//modal to choose activitieslist fields\r\nvar modal_admin_choose_activitylist_fields = ['$scope', '$uibModal','$uibModalInstance','AdminService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, AdminService) {\r\n\r\n $scope.savedActivityListFields = $scope.dataset.Config.ActivityListFields;\r\n\r\n //this HeaderFields thing is a workaround for IE11 because it doesn't render the following. Better would be to just use this in the template:\r\n /*\r\n \r\n */\r\n\r\n $scope.HeaderFields = [];\r\n\r\n $scope.dataset.Fields.forEach(function (field) {\r\n if (field.FieldRoleId == 1) {\r\n field.FullLabel = field.Label + \" (\" + field.Units + \")\";\r\n $scope.HeaderFields.push(field);\r\n }\r\n });\r\n\r\n\r\n $scope.save = function () {\r\n $uibModalInstance.close();\r\n };\r\n\r\n $scope.cancel = function () {\r\n $scope.dataset.Config.ActivityListFields = $scope.savedActivityListFields;\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\nexport default modal_admin_choose_activitylist_fields;\r\n","import * as angular from 'angular';\r\nimport {valueFormatterArrayToList} from \"../../../common/common-functions\";\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\n/*\r\n* This page loads the metafields (entities and properties).\r\n*/\r\n\r\nvar admin_metafields = ['$scope', '$routeParams', 'GridService', 'ProjectService', 'DatasetService', 'CommonService', 'UserService',\r\n '$rootScope', '$uibModal', '$sce', '$window', '$http',\r\n 'ServiceUtilities', 'ConvertStatus', '$location', '$anchorScroll',\r\n function (scope, routeParams, GridService, ProjectService, DatasetService, CommonService, UserService, $rootScope, $uibModal, $sce, $window, $http,\r\n ServiceUtilities, ConvertStatus, $location, $anchorScroll) {\r\n\r\n scope.entities = CommonService.getMetadataEntities();\r\n\r\n scope.entities.$promise.then(function () {\r\n if (!scope.selectedEntity) //only set if it isn't already\r\n scope.selectedEntity = scope.entities[0];\r\n\r\n scope.activateDataGrid();\r\n });\r\n\r\n scope.showEntityProperties = function (entity) {\r\n if (!entity)\r\n return;\r\n\r\n if (scope.selectedEntity && scope.selectedEntity.Id != entity.Id) {\r\n console.log(\"Showing entity properties -- \");\r\n console.dir(entity);\r\n scope.selectedEntity = entity;\r\n if (scope.dataGridOptions.api)\r\n scope.dataGridOptions.api.setRowData(scope.selectedEntity.Properties);\r\n }\r\n };\r\n\r\n var EditLinkTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a');\r\n editBtn.href = '#';\r\n editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.openEditModal(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n scope.dataGridOptions = {\r\n //data: 'datasets',\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: [\r\n {field: 'EditLink', headerName: '', cellRenderer: EditLinkTemplate, width: 50, menuTabs: [], hide: true},\r\n {field: 'Name', headerName: 'Name', width: 180, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n {\r\n field: 'Description',\r\n headerName: 'Description',\r\n cellStyle: {'white-space': 'normal'},\r\n width: 300,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n {field: 'DataType', headerName: 'DataType', width: 100, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n {field: 'ControlType', headerName: 'Control Type', width: 100, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n {\r\n field: 'PossibleValues',\r\n headerName: 'Possible Values',\r\n width: 350,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text',\r\n valueFormatter: function (params) {\r\n return valueFormatterArrayToList(params.node.data.PossibleValues);\r\n }\r\n },\r\n ],\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n scope.dataGridOptions.selectedItems = scope.dataGridOptions.api.getSelectedRows();\r\n scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n selectedItems: [],\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n scope.activateDataGrid = function () {\r\n console.log(\"activating grid...\");\r\n\r\n var ag_grid_div = document.querySelector('#properties-grid') as HTMLElement; //get the container id...\r\n scope.datatab_ag_grid = new Grid(ag_grid_div, scope.dataGridOptions); //bind the grid to it.\r\n scope.dataGridOptions.api.showLoadingOverlay(); //show loading...\r\n scope.dataGridOptions.api.setRowData(scope.selectedEntity.Properties);\r\n\r\n if (scope.project) {\r\n scope.project.$promise.then(function () {\r\n //unhide the edit link column if they are the owner or editor.\r\n if ($rootScope.Profile.canAdminProject(scope.project)) {\r\n scope.dataGridOptions.columnApi.setColumnVisible(\"EditLink\", true);\r\n scope.dataGridOptions.api.refreshHeader();\r\n }\r\n });\r\n } else if ($rootScope.Profile.isAdmin()) { //let the super or org admin still edit if there is no project.\r\n scope.dataGridOptions.columnApi.setColumnVisible(\"EditLink\", true);\r\n scope.dataGridOptions.api.refreshHeader();\r\n }\r\n\r\n\r\n };\r\n\r\n scope.openEditModal = function (a_selection) {\r\n scope.SaveMessage = null;\r\n scope.field_to_edit = angular.copy(a_selection);\r\n scope.field_to_edit.MetadataEntityId = scope.selectedEntity.Id;\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/modal-edit-metadataproperty.html',\r\n controller: 'ModalEditMetadataPropertyCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved) {\r\n //replace that location in the grid with the one we got back\r\n var found = false;\r\n scope.selectedEntity.Properties.forEach(function (existing, index) {\r\n if (existing.Id == saved.Id) {\r\n console.dir(\"found field to replace : \" + existing.Id);\r\n scope.selectedEntity.Properties[index] = saved;\r\n found = true;\r\n }\r\n });\r\n\r\n if (!found)\r\n scope.selectedEntity.Properties.push(saved);\r\n\r\n scope.dataGridOptions.api.setRowData(scope.selectedEntity.Properties);\r\n scope.SaveMessage = \"Success.\";\r\n });\r\n };\r\n\r\n\r\n scope.addProperty = function () {\r\n scope.openEditModal({});\r\n }\r\n\r\n scope.deleteProperty = function () {\r\n scope.dataGridOptions.selectedItems.forEach(function (property) {\r\n var delete_prop = CommonService.deleteMetadataProperty(property);\r\n delete_prop.$promise.then(function () {\r\n scope.selectedEntity.Properties.forEach(function (existing, index) {\r\n if (existing.Id == property.Id) {\r\n console.dir(\"found field to remove : \" + existing.Id);\r\n scope.selectedEntity.Properties.splice(index);\r\n scope.dataGridOptions.api.setRowData(scope.selectedEntity.Properties);\r\n }\r\n });\r\n }, function () {\r\n console.log(\"something went wrong\");\r\n });\r\n });\r\n\r\n };\r\n\r\n\r\n }\r\n\r\n];\r\n\r\nexport default admin_metafields;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {modalFiles_setupControllerForFileChooserModal} from \"../../../common/components/file/modal-files\";\r\n\r\nvar table_data_modal = ['$scope', '$rootScope','$uibModalInstance', 'DatasetService', 'GridService', 'Upload', '$uibModal',\r\n function ($scope, $rootScope, $uibModalInstance, DatasetService, GridService, $upload, $uibModal) {\r\n\r\n $scope.DisabledFields = {};\r\n\r\n $scope.header_message = \"Edit \" + $scope.context_dataset.Name;\r\n\r\n $scope.row = angular.copy($scope.data_modal);\r\n\r\n $rootScope.remainingFiles = [];\r\n\r\n $scope.row.strSelectedItemList = \"\";\r\n $scope.lastField = null;\r\n $scope.MultiSelectAlreadyRan = false;\r\n\r\n $scope.typeOfFilesToCheck = \"\";\r\n\r\n console.log(\"Inside table-data.modal.ts\");\r\n\r\n //console.dir($scope.row);\r\n //incoming we have at least:\r\n /*\r\n scope.context_dataset - dataset\r\n scope.context_grid - grid\r\n scope.context_table - all data rows\r\n scope.row - row\r\n scope.data_parentId - \"subprojectId\" - the Id of the parent\r\n scope.data_type - type we're saving (parent, child, grandchild)\r\n */\r\n\r\n //if we're not editing then we are creating a new one\r\n if (!$scope.row.Id) {\r\n $scope.header_message = \"Add \" + $scope.context_dataset.Name;\r\n } else {\r\n //copy over the LocationId if it exists so that it works with our existing Location dropdown ng-model\r\n if($scope.row.LocationId) {\r\n $scope.row.Activity = { LocationId : $scope.row.LocationId };\r\n }\r\n }\r\n\r\n //set internal fields if they exist\r\n if($scope.row.hasOwnProperty(\"EffDt\"))\r\n $scope.row.EffDt = moment().format(); //'L');\r\n\r\n if($scope.row.hasOwnProperty(\"CreateDate\") && !$scope.row.CreateDate)\r\n $scope.row.CreateDate = moment().format(); //'L');\r\n\r\n if($scope.row.hasOwnProperty(\"ByUserId\"))\r\n $scope.row.ByUserId = $rootScope.Profile.Id;\r\n\r\n if($scope.row.hasOwnProperty(\"ProjectId\") && !$scope.row.ProjectId)\r\n $scope.row.ProjectId = $scope.dataset.ProjectId;\r\n\r\n\r\n $scope.hasFilesToSave = false;\r\n\r\n //if the dataset has a file field then enable the file add/remove modal\r\n // dataset.file_fields is an array of file field names [\"EventFiles\"]\r\n // it exists if there are any file columns in this dataset\r\n if($scope.context_dataset.hasOwnProperty('file_fields')){\r\n\r\n //if ($scope.row[$scope.context_dataset.file_fields] !== null) //will be always empty at this time... and file_fields is an array\r\n $scope.hasFilesToSave = true;\r\n\r\n if($scope.data_parentId != 0)\r\n {\r\n // $scope.row.PurchaseId = $scope.data_parentId; //do we need this? it is specific to Purchasing?\r\n\r\n $scope.viewSubproject = $scope.subprojectId = $scope.data_parentId; //this sets the context for the form file field filter\r\n\r\n // //fetch the subproject parent files\r\n // $scope.ParentFiles = DatasetService.getTableFiles($scope.context_dataset.ProjectId, $scope.data_parentId, $scope.context_dataset.Id);\r\n // $scope.ParentFiles.$promise.then(function(){\r\n // //var file_field = $scope.context_dataset.file_fields[0];\r\n // //$scope.row._files = getFilesArrayAsList($scope.row[file_field]);\r\n // //console.dir($scope.row)\r\n // modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.ParentFiles);\r\n // })\r\n $scope.typeOfFilesToCheck = \"ParentFiles\";\r\n modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.typeOfFilesToCheck);\r\n }else{\r\n // $scope.checkFiles = DatasetService.getTableFiles($scope.context_dataset.ProjectId, $scope.data_parentId, $scope.context_dataset.Id);\r\n // $scope.checkFiles.$promise.then(() => {\r\n // modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.checkFiles);\r\n // });\r\n $scope.typeOfFilesToCheck = \"checkFiles\";\r\n modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.typeOfFilesToCheck);\r\n }\r\n\r\n }\r\n\r\n if ($scope.context_dataset.Config.DataEntryPage)\r\n {\r\n if ($scope.context_dataset.Config.DataEntryPage.DisabledFields)\r\n {\r\n $scope.context_dataset.Config.DataEntryPage.DisabledFields.forEach(function(item){\r\n $scope.DisabledFields[item] = item;\r\n\r\n if ($scope.DisabledFields[item])\r\n {\r\n $scope.DisabledFields[item] = {disabled: true};\r\n //console.log(\"$scope.DisabledFields[item].disabled = \" + $scope.DisabledFields[item].disabled);\r\n }\r\n });\r\n }\r\n\r\n if ($scope.context_dataset.Config.DataEntryPage.SelectedItemList)\r\n {\r\n $scope.context_dataset.Config.DataEntryPage.SelectedItemList.forEach(function(item){\r\n $scope.row.strSelectedItemList = \"\";\r\n if (($scope.row[item]) && ($scope.row[item] !== null))\r\n {\r\n var tmpItem = $scope.row[item];\r\n //var arySelectedItemList = $scope.row[item].split(\",\");\r\n var arySelectedItemList = $scope.row[item].split(\";\");\r\n\r\n // Rebuild the string now, adding the semicolon and newline after every line.\r\n //angular.forEach(arySelectedItemList, function(item){\r\n // $scope.row.strSelectedItemList += item + \";\\n\";\r\n //});\r\n for (var i = 0; i < arySelectedItemList.length; i++)\r\n {\r\n if (arySelectedItemList[i] !== \"\")\r\n $scope.row.strSelectedItemList += arySelectedItemList[i] + \";\\n\";\r\n else\r\n arySelectedItemList.splice(i, 1);\r\n }\r\n\r\n //var strField = item + \"SelectedItemList\";\r\n\r\n //$scope.row[item] = {};\r\n //$scope.row[item].value = tmpItem;\r\n //$scope.row[item].SelectedItemList = strSelectedItemList;\r\n $scope.row.SelectedItemList = $scope.row.strSelectedItemList;\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Could not get a date to go into the DatePicker, via a rule in SQL,\r\n // so I chose this way instead. Still using a rule but a little differently.\r\n if (($scope.context_dataset) && ($scope.context_dataset.Fields))\r\n {\r\n $scope.context_dataset.Fields.forEach(function(aField){\r\n if ((aField.Rule) && (aField.Rule.DefaultValue))\r\n {\r\n console.log(\"typeof aField.Rule.DefaultValue = \" + typeof aField.Rule.DefaultValue);\r\n if ((aField.Rule) &&\r\n (aField.Rule.DefaultValue) &&\r\n (typeof aField.Rule.DefaultValue === 'string') &&\r\n (aField.Rule.DefaultValue.indexOf(\"dtNow\") > -1))\r\n {\r\n $scope.row[aField.DbColumnName] = moment().format('MM/DD/YYYY');\r\n }\r\n }\r\n\r\n //var OtherBoxName = \"Other\" + aField.DbColumnName;\r\n //if (($scope.context_dataset.Fields[OtherBoxName]) && ($scope.context_dataset.Fields[OtherBoxName].ControlType === \"hidden\"))\r\n //{\r\n // $scope.tmpHiddenFields[aField.DbColumnName] = {\"hidden\":true};\r\n //}\r\n });\r\n }\r\n\r\n $scope.save = function () {\r\n console.log(\"Inside table-data-modal.js, $scope.save...\");\r\n\r\n //fire validation on all header fields\r\n for (let headerField of $scope.context_grid.columnDefs){\r\n $scope.onHeaderEditingStopped(headerField);\r\n if(headerField.cdmsField.Field.Rule && headerField.cdmsField.Field.Rule.BeforeSave){\r\n $scope.beforeSave(headerField);\r\n }\r\n }\r\n\r\n //move the LocationId if it exists\r\n if($scope.row.Activity && $scope.row.Activity.LocationId){\r\n $scope.row.LocationId = $scope.row.Activity.LocationId;\r\n delete $scope.row.Activity;\r\n }\r\n\r\n if(Object.keys($scope.headerFieldErrors).length > 0){\r\n alert(\"There are errors on the page. Please fix them before saving.\");\r\n console.dir($scope.headerFieldErrors);\r\n return;\r\n }\r\n\r\n console.log(\" ** saving ** \");\r\n console.dir($scope.row);\r\n console.dir($scope.context_dataset);\r\n\r\n $scope._row = angular.copy($scope.row); //in case things go bad\r\n\r\n $scope.row.ProjectId = $scope.context_dataset.ProjectId;\r\n $scope.row.DatasetId = $scope.context_dataset.Id;\r\n $scope.row.ByUserId = $rootScope.Profile.Id;\r\n\r\n if ((typeof $scope.row.SelectedItemList !== 'undefined') && ($scope.row.SelectedItemList != \"\"))\r\n {\r\n // First, strip out the new line characters.\r\n $scope.row.SelectedItemList = $scope.row.SelectedItemList.replace(/(\\r\\n|\\r|\\n)/gm, \"\");\r\n console.log(\"$scope.row.SelectedItemList after stripping = \" + $scope.row.SelectedItemList);\r\n\r\n // Note, we still have the trailing semicolon.\r\n // Convert the string to an array, so that we can easily remove the applicable funding agency from the string.\r\n var arySelectedItemList = $scope.row.SelectedItemList.split(\";\");\r\n\r\n // Next, get rid of that trailing semicolon.\r\n arySelectedItemList.splice(-1, 1);\r\n console.dir(arySelectedItemList);\r\n\r\n // Rebuild the string now, adding the ; after each item.\r\n var intCount = 0;\r\n $scope.row.SelectedItemList = \"\";\r\n angular.forEach(arySelectedItemList, function(item){\r\n if (intCount === 0)\r\n $scope.row.SelectedItemList += \"'\" + item;\r\n else\r\n $scope.row.SelectedItemList += \";\" + item;\r\n\r\n intCount++;\r\n });\r\n $scope.row.SelectedItemList += \"'\";\r\n $scope.row.County = $scope.row.SelectedItemList;\r\n }\r\n\r\n // If we are saving a new subproject, there won't be a $scope.$parent.context_parentgrid...\r\n if (($scope.$parent.context_parentgrid) && ($scope.$parent.context_parentgrid.selectedItem))\r\n $scope.row.SubprojectId = $scope.$parent.context_parentgrid.selectedItem.Id;\r\n\r\n //var DtEffDt = moment().format(\"YYYY-MM-DD HH:mm:ss.SSS\");\r\n //$scope.row.EffDt = moment().format(\"DD/MM/YYYY HH:mm:ss\");\r\n\r\n //$scope.row.EffDt = moment(); //already set above\r\n\r\n if ($scope.row.Id === null)\r\n $scope.row.Id = undefined;\r\n\r\n\r\n\r\n //if ((typeof $scope.row.TrackingPONumber !== 'undefined') && ($scope.row.TrackingPONumber != null))\r\n //{\r\n // $scope.$parent.context_parentgrid.selectedItem.PurchasePONumber = $scope.row.TrackingPONumber;\r\n // $scope.MustUpdateParent = true;\r\n //}\r\n //throw \"Stopping right here...\";\r\n\r\n //save the data first so that we have the subprojectid\r\n console.log(\"Calling saveTableData, Dataset/subproject-level...\");\r\n $scope.save_result = DatasetService.saveTableData($scope.context_dataset, $scope.row);\r\n\r\n $scope.save_result.$promise.then(function (resultData) {\r\n $scope.saveResults[$scope.data_type]['success'] = \"Success.\";\r\n console.log(\"Saved successfully...\");\r\n\r\n if (($scope.dataset.Config) && ($scope.dataset.Config.TransferFieldsFromGrandChild))\r\n {\r\n console.log(\"Need to transfer fields from grandchild...\");\r\n\r\n //var transferFields = [];\r\n var transferFields = JSON.parse(JSON.stringify($scope.dataset.Config.TransferFieldsFromGrandChild));\r\n //transferFieldsFromJson.forEach(function(item){\r\n //var FieldPair = JSON.parse(item);\r\n //transferFields.push(FieldPair);\r\n //transferFields.push(item);\r\n //});\r\n //var FieldFrom = $scope.dataset.Config.TransferFromGrandChild.FieldFrom;\r\n //var FieldTo = $scope.dataset.Config.TransferFromGrandChild.FieldTo;\r\n\r\n transferFields.forEach(function(item){\r\n if (resultData[0][item.FieldFrom] !== null)\r\n {\r\n //$scope.$parent.context_parentgrid.selectedItem.PurchasePONumber = resultData[0].TrackingPONumber;\r\n\r\n if (($scope.$parent.context_parentgrid) && ($scope.$parent.context_parentgrid.selectedItem))\r\n $scope.$parent.context_parentgrid.selectedItem[item.FieldTo] = resultData[0][item.FieldFrom];\r\n\r\n }\r\n });\r\n\r\n //if (($scope.$parent.context_parentgrid) && ($scope.$parent.context_parentgrid.selectedItem))\r\n //{\r\n // $scope.saveGrandParentResult = DatasetService.saveTableData($scope.$parent.context_parentdataset, $scope.$parent.context_parentgrid.selectedItem);\r\n\r\n // $scope.saveGrandParentResult.$promise.then(function(grandParentData) {\r\n // console.log(\"grandParentData is next...\");\r\n // console.dir(grandParentData);\r\n // });\r\n\r\n // //$scope.$apply();\r\n // $scope.MustUpdateParent = true;\r\n //}\r\n }\r\n\r\n if($scope.hasFilesToSave){\r\n console.log(\"Has a file field - check for any files to upload...\");\r\n $scope.saveResults[$scope.data_type]['success'] = \"Saving file...\";\r\n\r\n if($scope.data_parentId == 0){ //then we just saved a new parent row\r\n //$scope.data_parentId = $scope.save_result.Id; //set it to our new id (this is the subprojectid)\r\n $scope.data_parentId = resultData[0].Id; //set it to our new id (this is the subprojectid)\r\n }\r\n //now save the files\r\n var saveRow = angular.copy($scope.row);\r\n\r\n var data = {\r\n ProjectId: $scope.context_dataset.ProjectId,\r\n DatasetId: $scope.context_dataset.Id,\r\n SubprojectId: $scope.data_parentId,\r\n DatastoreTablePrefix: $scope.context_dataset.Datastore.TablePrefix,\r\n };\r\n //console.log(\"data is next...\");\r\n //console.dir(data);\r\n\r\n //var target = '/api/v1/table/uploadfile';\r\n var target = null;\r\n if ($scope.data_type === 'parent'){\r\n //target = '/api/v1/file/uploadmultipanelsubprojectfile';\r\n // @ts-ignore\r\n data.ItemId = resultData[0].Id; //set the itemid\r\n target = '/api/v1/file/uploaddatasetfile';\r\n }\r\n else if ($scope.data_type === 'child'){\r\n // @ts-ignore\r\n data.ItemId = resultData[0].Id; //set the itemid\r\n target = '/api/v1/file/uploadmultipanelsubprojectfile';\r\n\r\n }\r\n else if ($scope.data_type === 'grandchild'){\r\n // @ts-ignore\r\n data.ItemId = resultData[0].Id; //set the itemid\r\n target = '/api/v1/file/uploadmultipanelsubprojectfile';\r\n }\r\n\r\n $scope.handleFilesToUploadRemove(saveRow, data, target, $upload, $rootScope, $scope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n }\r\n else{\r\n console.log(\"No files to save...\");\r\n\r\n $uibModalInstance.close($scope.save_result);\r\n $scope.emailNotifications();\r\n\r\n }\r\n\r\n // Since we are reloading the parent table, not just refreshing it,\r\n // after the next step, we don't need this step.\r\n // Leaving it in for the moment now though.\r\n //$scope.$parent.context_parentgrid.selectedItem.EffDt = moment().format();\r\n\r\n if ($scope.context_parentdataset)\r\n {\r\n // Reload the parent table, to incorporated the fresh changes.\r\n $scope.$parent.loadTable($scope.context_parentdataset.Id);\r\n\r\n $scope.$parent.sortTableGrid(); // Bump parent to resort.\r\n //$scope.saveParentItem($scope.$parent.context_parentgrid.selectedItem);\r\n }\r\n else\r\n {\r\n $scope.$parent.loadTable($scope.context_dataset.Id);\r\n $scope.$parent.sortTableGrid();\r\n }\r\n\r\n }, function(failure){\r\n console.dir(failure);\r\n $scope.row = $scope._row; //fall back\r\n $scope.saveResults[$scope.data_type]['failure'] = \"Failed: \" + failure.data.ExceptionMessage;\r\n });\r\n\r\n }\r\n\r\n $scope.modalFile_saveParentItem = function (saveRow) {\r\n //console.log(\"Inside table-data-modal.js, $scope.modalFile_saveParentItem...\");\r\n //console.dir(saveRow);\r\n //console.dir($scope.save_result);\r\n\r\n //update file fields with link\r\n\r\n if ($scope.context_dataset.file_fields)\r\n {\r\n if ($scope.save_result[0]) {\r\n $scope.context_dataset.file_fields.forEach(function(field){\r\n if ((saveRow) && (typeof saveRow[field] !== 'undefined') && (saveRow[field] != null))\r\n $scope.save_result[0][field] = saveRow[field];\r\n });\r\n }\r\n }\r\n\r\n console.log(\"Calling saveTableData, Parent-level...\");\r\n //console.log(\"$scope.context_dataset and $scope.save_result[0] are next...\");\r\n //console.dir($scope.context_dataset);\r\n //console.dir($scope.save_result[0]);\r\n\r\n $scope.save_result = DatasetService.saveTableData($scope.context_dataset, $scope.save_result[0]);\r\n $scope.save_result.$promise.then(function(result){\r\n $scope.emailNotifications();\r\n $scope.saveResults[$scope.data_type]['success'] = \"Success.\";\r\n $uibModalInstance.close($scope.save_result);\r\n $scope.$apply();\r\n\r\n }, function(failure){\r\n console.dir(failure);\r\n $scope.row = $scope._row; //fall back\r\n $scope.saveResults[$scope.data_type]['failure'] = \"Failed: \" + failure.data.ExceptionMessage;\r\n });\r\n };\r\n\r\n $scope.modalFile_doRemoveFile = function (file_to_remove, saveRow) {\r\n return DatasetService.deleteTableFile($scope.data_type, $scope.context_dataset.ProjectId, $scope.context_dataset.Id, file_to_remove, $scope.context_grid.selectedItem);\r\n };\r\n\r\n //fire any \"BeforeSave\" rules\r\n $scope.beforeSave = function(field){\r\n var event = {\r\n colDef: field,\r\n node: { data: $scope.row },\r\n data: $scope.row,\r\n scope: $scope,\r\n value: $scope.row[field.DbColumnName],\r\n type: 'beforeSave'\r\n };\r\n\r\n GridService.fireRule(\"BeforeSave\", event);\r\n }\r\n\r\n //send any notifications configured in workflow\r\n $scope.emailNotifications = function(){\r\n //if enabled\r\n if(!$scope.dataset.Config.Notification)\r\n return;\r\n\r\n var messages = [];\r\n var notify = $scope.dataset.Config.Notification;\r\n\r\n //check triggers and add messages\r\n if(notify.ChkEmailOnNewRecord && !$scope.data_modal.Id){\r\n console.log(\"notify: new record\")\r\n messages.push({\r\n Subject: \"New Record for \"+$scope.dataset.Name,\r\n Message: \"\",\r\n });\r\n }\r\n\r\n if(notify.ChkEmailOnUpdatedRecord && $scope.data_modal.Id){\r\n console.log(\"notify: updated record\")\r\n messages.push({\r\n Subject: \"Updated Record for \"+$scope.dataset.Name,\r\n Message: \"\",\r\n });\r\n }\r\n\r\n if(notify.ChkEmailOnFieldChange && $scope.data_modal.Id &&\r\n $scope.row[notify.EmailOnFieldChange] != $scope.data_modal[notify.EmailOnFieldChange]){\r\n console.log(\"notify: record field change\")\r\n messages.push({\r\n Subject: notify.EmailOnFieldChange + \" updated for \"+$scope.dataset.Name,\r\n Message: notify.EmailOnFieldChange + \" changed from \" + $scope.data_modal[notify.EmailOnFieldChange] + \" to \" + $scope.row[notify.EmailOnFieldChange],\r\n });\r\n }\r\n\r\n if(messages.length > 0){\r\n //notify address\r\n if(notify.ChkEmailToAddress){\r\n DatasetService.tableNotification(notify.EmailToAddress, $scope.composeMessage(messages));\r\n }\r\n\r\n //notify field email\r\n if(notify.ChkEmailToField && $scope._row[notify.EmailToField]){\r\n DatasetService.tableNotification($scope.row[notify.EmailToField], $scope.composeMessage(messages));\r\n }\r\n\r\n console.log(\"sent notifications!\");\r\n } else {\r\n console.log(\"no notifications to send.\");\r\n }\r\n\r\n }\r\n\r\n $scope.composeMessage = function(messages){\r\n var message = \"\"\r\n messages.forEach(function(item){\r\n message += \"

\" + item.Subject + \"

\";\r\n message += item.Message + \"
\";\r\n })\r\n\r\n message += \"

Current Record

\";\r\n var skip = ['ProjectId','Id','ByUserId','DatasetId']; //,'rowErrorToolTip', 'validationErrors','rowHasError','strSelectedItemlist'];\r\n\r\n Object.keys($scope.row).forEach(function(property){\r\n // @ts-ignore\r\n if(!skip.contains(property)){\r\n var field;\r\n $scope.dataset.Fields.forEach(function(f){ if(f.DbColumnName == property) field = f});\r\n if(field){\r\n message += \"\"+field.Label + \": \";\r\n\r\n if(field.Field.DataType == \"date\" || field.Field.DataType == \"datetime\")\r\n message += moment($scope.row[field.DbColumnName]).format('MM/DD/YYYY HH:mm') + \"
\";\r\n else\r\n message += $scope.row[field.DbColumnName] + \"
\";\r\n }\r\n }\r\n });\r\n\r\n return message;\r\n\r\n }\r\n\r\n $scope.onHeaderEditingStopped = function (field, logerrors) {\r\n //build event to send for validation\r\n console.log(\"onHeaderEditingStopped: \" + field.DbColumnName);\r\n var event = {\r\n colDef: field,\r\n node: { data: $scope.row },\r\n data: $scope.row,\r\n scope: $scope,\r\n value: $scope.row[field.DbColumnName],\r\n type: 'onHeaderEditingStopped'\r\n };\r\n\r\n $scope.MultiSelectAlreadyRan = false;\r\n\r\n $scope.lastField = field;\r\n\r\n //$scope.context_dataset.Config.DataEntryPage.DisabledFields.forEach(function(item){\r\n // if ($scope.DisabledFields.indexOf(field.DbColumnName) > -1)\r\n // $scope.inactive = true;\r\n //});\r\n\r\n //var OtherBoxName = \"Other\" + event.colDef.DbColumnName;\r\n var OtherBoxName = event.colDef.DbColumnName;\r\n // Turned off the following block, because with the table (multi-panel pages), the Other... boxes are NOT hidden\r\n // as they were originally. Therefore the boxes are displayed on the form. Consquently, the users have \"repurposed\"\r\n // the Other boxes for something not originally intended, but they like the new way.\r\n // Therefore, we now save them like any other property. -GC 10/10/2024.\r\n // //console.log(\"typeof event.data[\" + OtherBoxName + \"] = \" + typeof event.data[OtherBoxName]);\r\n // // Case1: A select box has an option of \"Other\", and the \"Other\" is selected, so disable the associated Other... box.\r\n // if ((typeof event.data[OtherBoxName] !== 'undefined') && (event.value == \"Other\"))\r\n // {\r\n // //var OtherBoxName = \"Other\" + field.DbColumnName;\r\n\r\n // $scope.context_dataset.Fields.forEach(function(aField){\r\n // if (aField.DbColumnName == OtherBoxName)\r\n // {\r\n // //aField.ControlType = \"text\";\r\n // //console.log(\"$scope.DisabledFields[\" + OtherBoxName + \"].disabled = \" + $scope.DisabledFields[OtherBoxName].disabled);\r\n // //console.log(\"field.disabled = \" + field.disabled);\r\n // //console.log(\"field.Disabled = \" + field.Disabled);\r\n\r\n // if ($scope.DisabledFields[OtherBoxName].disabled === true)\r\n // {\r\n // $scope.DisabledFields[OtherBoxName].disabled = false;\r\n // }\r\n // }\r\n // });\r\n\r\n // }\r\n // // Case2: A select box has an option of \"Other\", and the \"Other\" option IS NOT selected, so disable the associated Other... box.\r\n // else if ((typeof event.data[OtherBoxName] !== 'undefined') && (event.value !== null) && (event.value !== \"Other\"))\r\n // {\r\n // if (($scope.DisabledFields[OtherBoxName]) && (event.value != \"Other\"))// && (event.data[OtherBoxName] === null))// && (event.data[OtherBoxName].length < 1))\r\n // {\r\n // event.data[OtherBoxName] = null;\r\n // $scope.DisabledFields[OtherBoxName].disabled = true;\r\n // }\r\n // //aField.ControlType = \"hidden\";\r\n // }\r\n // // Case3: A different control is selected, and has no \"Other...\" box, so do nothing.\r\n // else\r\n // {\r\n // // Do nothing\r\n // }\r\n\r\n if (GridService.validateCell(event)) {\r\n GridService.fireRule(\"OnChange\", event); //only fires when valid change is made\r\n }\r\n\r\n //update our collection of header errors if any were returned\r\n $scope.headerFieldErrors = [];\r\n if ($scope.row.rowHasError) {\r\n $scope.row.validationErrors.forEach(function (error) {\r\n if (Array.isArray($scope.headerFieldErrors[error.field.DbColumnName])) {\r\n $scope.headerFieldErrors[error.field.DbColumnName].push(error.message);\r\n } else {\r\n $scope.headerFieldErrors[error.field.DbColumnName] = [error.message];\r\n }\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n $scope.addItem = function (selectedItem) {\r\n console.log(\"+ button clicked...\");\r\n\r\n if (selectedItem === null)\r\n return;\r\n else if ($scope.lastField.ControlType !== \"select-fancy\")\r\n return;\r\n\r\n //console.log(\"$scope.row.strSelectedItemList = \" + $scope.row.strSelectedItemList);\r\n\r\n var event = {\r\n colDef: $scope.lastField,\r\n node: { data: $scope.row },\r\n data: $scope.row,\r\n scope: $scope,\r\n value: selectedItem,\r\n type: 'addItem'\r\n };\r\n\r\n if (typeof $scope.row.strSelectedItemList === 'undefined')\r\n $scope.row.strSelectedItemList = \"\";\r\n\r\n //var SelectedBoxName = \"Selected\" + event.colDef.DbColumnName;\r\n\r\n // We will add a new line at the end, so that the string presents well on the page.\r\n if (event.value === \"Other\")\r\n {\r\n //scope.row.strCounties += $scope.row.OtherCounty + \";\\n\";\r\n $scope.row.strSelectedItemList += \"Other;\\n\";\r\n\r\n }\r\n else\r\n {\r\n if (!$scope.row.strSelectedItemList.includes(event.value)) {\r\n $scope.row.strSelectedItemList += event.value + \";\\n\";\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n //console.log(\"$scope.row.strSelectedItemList = \" + $scope.row.strSelectedItemList);\r\n console.log(\"$scope.row.strSelectedItemList = \" + $scope.row.strSelectedItemList);\r\n $scope.row.SelectedItemList = $scope.row.strSelectedItemList;\r\n }\r\n\r\n $scope.removeItem = function (selectedItem) {\r\n console.log(\"- button clicked...\");\r\n\r\n if (selectedItem === null)\r\n return;\r\n\r\n //console.log(\"$scope.row.SelectedItemList before stripping = \" + $scope.row.SelectedItemList);\r\n\r\n var event = {\r\n colDef: $scope.lastField,\r\n node: { data: $scope.row },\r\n data: $scope.row,\r\n scope: $scope,\r\n value: selectedItem,\r\n type: 'addItem'\r\n };\r\n\r\n // First, strip out the new line characters.\r\n $scope.row.strSelectedItemList = $scope.row.SelectedItemList.replace(/(\\r\\n|\\r|\\n)/gm, \"\");\r\n console.log(\"$scope.row.strSelectedItemList after stripping = \" + $scope.row.strSelectedItemList);\r\n\r\n // Note, we still have the trailing semicolon.\r\n // Convert the string to an array, so that we can easily remove the applicable funding agency from the string.\r\n var arySelectedItemList = $scope.row.strSelectedItemList.split(\";\");\r\n\r\n // Next, get rid of that trailing semicolon.\r\n arySelectedItemList.splice(-1, 1);\r\n console.dir(arySelectedItemList);\r\n\r\n // Now we can continue with the delete action.\r\n var arySelectedItemListLength = arySelectedItemList.length;\r\n\r\n // First check if the user entered an \"other\" item.\r\n if (selectedItem === \"Other\")\r\n {\r\n var OtherBoxName = \"Other\" + event.colDef.DbColumnName;\r\n\r\n for (var i = 0; i < arySelectedItemListLength; i++)\r\n {\r\n console.log(\"arySelectedItemList[i] = \" + arySelectedItemList[i]);\r\n if (arySelectedItemList[i].indexOf(selectedItem) > -1)\r\n {\r\n console.log(\"Found the item...\");\r\n arySelectedItemList.splice(i,1);\r\n console.log(\"Removed the item.\");\r\n\r\n $scope.row.strSelectedItemList = \"\";\r\n console.log(\"Wiped $scope.row.strSelectedItemList...\");\r\n\r\n // Rebuild the string now, adding the semicolon and newline after every line.\r\n angular.forEach(arySelectedItemList, function(item){\r\n $scope.row.strSelectedItemList += item + \";\\n\";\r\n console.log(\"Added item...\");\r\n });\r\n\r\n // Since we found the item, skip to then end to exit.\r\n i = arySelectedItemListLength;\r\n }\r\n }\r\n }\r\n else\r\n {\r\n for (var i = 0; i < arySelectedItemListLength; i++)\r\n {\r\n console.log(\"arySelectedItemList[i] = \" + arySelectedItemList[i]);\r\n if (arySelectedItemList[i].indexOf(selectedItem) > -1)\r\n {\r\n console.log(\"Found the item...\");\r\n arySelectedItemList.splice(i,1);\r\n console.log(\"Removed the item.\");\r\n\r\n $scope.row.strSelectedItemList = \"\";\r\n console.log(\"Wiped $scope.row.strSelectedItemList...\");\r\n\r\n // Rebuild the string now, adding the semicolon and newline after every line.\r\n angular.forEach(arySelectedItemList, function(item){\r\n $scope.row.strSelectedItemList += item + \";\\n\";\r\n console.log(\"Added item...\");\r\n });\r\n\r\n // Since we found the item, skip to then end to exit.\r\n i = arySelectedItemListLength;\r\n }\r\n }\r\n }\r\n $scope.row.SelectedItemList = $scope.row.strSelectedItemList;\r\n console.log(\"Finished.\");\r\n }\r\n\r\n $scope.AddDefaultItem = function (selectedItem) {\r\n if (!$scope.MultiSelectAlreadyRan)\r\n {\r\n if (($scope.row.County) && ($scope.row.strSelectedItemList === \"\"))\r\n {\r\n $scope.addItem(selectedItem);\r\n }\r\n\r\n $scope.MultiSelectAlreadyRan = true;\r\n }\r\n }\r\n\r\n //select grid modal has to be available in all scopes\r\n $scope.openSelectGridModal = function(field){\r\n\r\n $scope.grid_field = field;\r\n\r\n var modal = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-select-grid.html',\r\n controller: 'ModalSelectGrid',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false,\r\n windowClass: 'modal-large'\r\n }).result.then(function(itemId){\r\n console.log(\"Id selected = \" + itemId);\r\n $scope.row[field.DbColumnName] = itemId;\r\n\r\n });\r\n }\r\n }\r\n];\r\n\r\nexport default table_data_modal;\r\n","import * as angular from 'angular';\r\nimport {modalFiles_setupControllerForFileChooserModal} from \"../../../../core/common/components/file/modal-files\";\r\nimport {SHARINGLEVEL_PRIVATE} from \"../../../../config\";\r\n\r\nvar modal_add_habitat = ['$scope', '$rootScope', '$uibModalInstance', '$uibModal', 'DatasetService','SubprojectService','ServiceUtilities',\r\n\t'$filter', 'Upload','$location', '$anchorScroll',\r\n function ($scope, $rootScope, $uibModalInstance, $uibModal, DatasetService, SubprojectService, ServiceUtilities,\r\n\t$filter, $upload, $location, $anchorScroll){\r\n console.log(\"Inside ModalAddHabitatItemCtrl...\");\r\n\r\n $rootScope.remainingFiles = []; // This will hold the results from modal-file.js\r\n\r\n //mixin the properties and functions to enable the modal file chooser for this controller...\r\n //modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.viewSubproject.Files);\r\n $scope.typeOfFilesToCheck = \"SubprojectFiles\";\r\n modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.typeOfFilesToCheck); //SubprojectFiles\r\n\r\n if ((typeof $scope.viewSubproject !== 'undefined') && ($scope.viewSubproject !== null))\r\n {\r\n $rootScope.subprojectId = $scope.viewSubproject.Id;\r\n } else {\r\n console.error(\"View Subproject is not defined! \");\r\n }\r\n\r\n\t$rootScope.projectId = $scope.project.Id;\r\n\tconsole.log(\"$scope.projectId = \" + $scope.projectId);\r\n\r\n if($scope.hi_row.Id > 0)\r\n {\r\n $scope.header_message = \"Edit Item for: \" + $scope.viewSubproject.ProjectName;\r\n }\r\n\telse\r\n\t{\r\n $scope.hi_row.SharingLevel = SHARINGLEVEL_PRIVATE; //set default\r\n\r\n\t\tif ((typeof $scope.viewSubproject !== 'undefined' ) && ($scope.viewSubproject !== null))\r\n\t\t\t$scope.header_message = \"Add Item to: \" + $scope.viewSubproject.ProjectName;\r\n\t\telse if ((typeof $scope.habProjectName !== 'undefined' ) && ($scope.habProjectName !== null))\r\n\t\t\t$scope.header_message = \"Add Item to: \" + $scope.habProjectName;\r\n\t}\r\n\r\n\t//console.log(\"$scope.hi_row is next...\");\r\n\t//console.dir($scope.hi_row);\r\n\r\n\t$scope.openLinkModal = function(row, field)\r\n\t{\r\n\t\t//console.log(\"Inside ModalAddHabitatItemCtrl, openLinkModal...\");\r\n\t\t//console.log(\"row is next...\");\r\n\t\t//console.dir(row);\r\n\t\t//console.log(\"field is next...\");\r\n\t\t//console.dir(field);\r\n\t\t$scope.link_row = row;\r\n\t\t//$scope.link_field = field;\r\n\t\t$scope.link_field = {\r\n\t\t\tDbColumnName: \"ExternalLinks\"\r\n\t\t};\r\n\r\n\t\tvar modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-link-field.html',\r\n\t\t\tcontroller: 'LinkModalCtrl',\r\n\t\t\tscope: $scope, //scope to make a child of\r\n\t\t\tbackdrop: \"static\",\r\n\t\t\tkeyboard: false\r\n\t\t});\r\n };\r\n\r\n\r\n //callback that is called from modalFile to do the actual file removal (varies by module)\r\n $scope.modalFile_doRemoveFile = function (file_to_remove, saveRow) {\r\n return SubprojectService.deleteHabitatItemFile($scope.projectId, $scope.subprojectId, saveRow.Id, file_to_remove);\r\n };\r\n\r\n $scope.save = function () {\r\n console.log(\"Inside ModalAddHabitatItemCtrl, save...\");\r\n\r\n $rootScope.remainingFiles = [];\r\n\r\n var saveRow = angular.copy($scope.hi_row);\r\n if (!saveRow.Id)\r\n saveRow.Id = 0;\r\n\r\n console.log(\"saveRow is next, after checking/setting the Id...\");\r\n console.dir(saveRow);\r\n\r\n var subprojectId = 0;\r\n if ($scope.viewSubproject)\r\n subprojectId = $scope.viewSubproject.Id\r\n else\r\n subprojectId = $scope.subprojectId;\r\n\r\n //this gets passed along via api call... TODO: this is just to get going...\r\n var data = {\r\n ProjectId: $scope.project.Id,\r\n SubprojectId: subprojectId,\r\n SubprojectType: \"Hab\"\r\n };\r\n\r\n var target = '/api/v1/habsubproject/uploadhabitatfile';\r\n\r\n $scope.handleFilesToUploadRemove(saveRow, data, target, $upload, $rootScope, $scope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n\r\n };\r\n\r\n //call back from save above once the files are done processing and we're ready to save the item\r\n $scope.modalFile_saveParentItem = function (saveRow) {\r\n var save_item_promise = SubprojectService.saveHabitatItem($scope.projectId, $scope.viewSubproject.Id, saveRow);\r\n\r\n //setup the promise.then that runs after the habitat item is saved...\r\n if (typeof save_item_promise !== 'undefined') {\r\n save_item_promise.$promise.then(function () {\r\n //did we edit or add new?\r\n if (saveRow.Id > 0) {\r\n $scope.postEditHabitatItemUpdateGrid(save_item_promise);\r\n $scope.HiId = saveRow.Id;\r\n } else {\r\n $scope.postAddHabitatItemUpdateGrid(save_item_promise);\r\n $scope.HiId = save_item_promise.Id;\r\n }\r\n\r\n $rootScope.remainingFiles.forEach(function(aFile){\r\n SubprojectService.saveFileItemId($scope.project.Id, $scope.viewSubproject.Id, $scope.HiId, aFile.Name);\r\n });\r\n\r\n // @ts-ignore\r\n if (!$scope.filesToUpload[$scope.file_field] && !$scope.removedFiles.length > 0) {\r\n $uibModalInstance.dismiss();\r\n }\r\n\r\n });\r\n\r\n console.log(\"1 typeof $scope.errors = \" + typeof $scope.errors + \", $scope.fileCount = \" + $scope.fileCount + \", $scope.fileProgress = \" + $scope.fileProgress);\r\n if ($scope.fileCount === 0) {\r\n $scope.loading = false; // Stop the fish spinner.\r\n $scope.showCloseButton = true;\r\n $scope.showCancelButton = false;\r\n $scope.showFormItems = false;\r\n }\r\n\r\n if ($scope.filesWithErrors == 0)\r\n $scope.UploadUserMessage = \"All actions successful.\";\r\n else\r\n $scope.UploadUserMessage = \"There was a problem uploading a file. Please try again or contact the Helpdesk if this issue continues.\";\r\n\r\n }\r\n };\r\n\r\n\r\n\r\n\t$scope.close = function(){\r\n\t\tconsole.log(\"Inside $scope.close...\");\r\n\t\t$uibModalInstance.dismiss();\r\n\t};\r\n\r\n $scope.cancel = function () {\r\n //if they've made file changes, the files appear as if they are existing files in the ItemFiles array...\r\n // we need to reset it back to the real, actual existing files.\r\n\r\n if ($scope.originalExistingFiles && $scope.originalExistingFiles.hasOwnProperty($scope.file_field)) {\r\n $scope.hi_row.ItemFiles = $scope.originalExistingFiles[$scope.file_field];\r\n }\r\n\t\t$uibModalInstance.dismiss();\r\n };\r\n }\r\n];\r\n\r\nexport default modal_add_habitat;\r\n","/*\r\nThis was for the old-style tabs which we don't use anymore?\r\ncommon_module.directive('showtab',\r\n function () {\r\n return {\r\n link: function (scope, element, attrs) {\r\n element.click(function (e) {\r\n e.preventDefault();\r\n $(element).tab('show');\r\n });\r\n }\r\n };\r\n });\r\n*/\r\n\r\n/*\r\nNo longer necessary with the angular update\r\ncommon_module.directive('ngBlur', function () {\r\n return function( scope, elem, attrs ) {\r\n elem.bind('blur', function() {\r\n scope.$apply(attrs.ngBlur);\r\n });\r\n };\r\n });\r\n*/\r\n\r\n//Links to permissions for user defined in main.js\r\n// available project roles = admin, owner (same as admin; legacy), editor, viewer\r\n// import common_module from \"../common-module\";\r\ndeclare let Exception: any;\r\n\r\n//NOTE: to use this directive, your controller must have the $rootScope defined.\r\nexport const projectRoleDirective = function(){\r\n return {\r\n link: function(scope,element, attrs)\r\n {\r\n if(!attrs.projectRole)\r\n {\r\n throw new Exception(\"Configuration error: project-role attribute must specify a target role name: admin, editor, viewer.\");\r\n }\r\n\r\n var role = attrs.projectRole.trim();\r\n\r\n if(role != 'owner' && role != 'editor' && role != 'viewer' && role != 'admin')\r\n throw new Exception(\"Configuration error: project-role attribute must be: admin, editor, viewer.\");\r\n\r\n\r\n function applyRoleToElement()\r\n {\r\n //this causes to default to true before the project loads...\r\n //if(!scope.project || !scope.project.$resolved)\r\n // return; //do nothing until the project arrives\r\n\r\n var show = false; //default to NOT show.\r\n //console.log(\"** Checking role \" + role);\r\n\r\n if( (role == 'owner' || role == 'admin') && scope.Profile.canAdminProject(scope.project))\r\n {\r\n //console.log(\" --> SETTING can admin\")\r\n show = true;\r\n }\r\n\r\n if(role == 'editor' && scope.Profile.canEditProject(scope.project) )\r\n {\r\n //console.log(\" --> SETTING can edit\")\r\n show = true;\r\n }\r\n\r\n if (role == 'viewer' && scope.Profile.canViewProject(scope.project))\r\n {\r\n //console.log(\" --> SETTING can view\")\r\n show = true;\r\n }\r\n\r\n //console.log(\"** final check for \" + role + \" is \" + show)\r\n\r\n if(show){\r\n element.show();\r\n //console.log(\"should be showing for \" + role)\r\n }\r\n else{\r\n element.hide();\r\n //console.log(\"should be hiding \"+ role)\r\n }\r\n }\r\n\r\n if(!scope.project || !scope.project.$resolved)\r\n {\r\n //console.log(\"setting watch\")\r\n var projectWatch = scope.$watch('project',function(){\r\n //console.log(\"watch fired\")\r\n if(scope.project != null)\r\n {\r\n //console.log(\"unsetting watch\")\r\n projectWatch(); //clear watch\r\n scope.project.$promise.then(function(){\r\n //console.log(\"applying again\")\r\n applyRoleToElement();\r\n });\r\n }\r\n });\r\n }\r\n //console.log(\"applying \")\r\n applyRoleToElement();\r\n }\r\n };\r\n};\r\n\r\n\r\n/*\r\nthis isn't used anywhere\r\n\r\n//Hides or Shows any element with: has-role=\"someRole\"\r\n// where \"someRole\" is in the current user's roles list\r\ncommon_module.directive('hasRole', function($rootScope){\r\n return{\r\n link: function(scope, element, attrs) {\r\n //console.log(\"checking permission\");\r\n\r\n if(!attrs.hasRole)\r\n return;\r\n\r\n var value = attrs.hasRole.trim();\r\n\r\n var notPermissionFlag = value[0] === '!';\r\n\r\n if(notPermissionFlag)\r\n value.slice(1).trim();\r\n\r\n var hasPermission = $rootScope.Profile.isInGroup(value);\r\n\r\n //console.log(value + \" ? \" + hasPermission);\r\n\r\n if(hasPermission || (notPermissionFlag && !hasPermission) )\r\n {\r\n console.log(\"hasPermission(\"+value+\") = true\");\r\n element.show();\r\n }\r\n else\r\n {\r\n console.log(\"hasPermission(\"+value+\") = false\");\r\n element.hide();\r\n }\r\n }\r\n };\r\n});\r\n*/\r\n","//CommonService includes:\r\n// Location (since locations exist in projects and dataset activities)\r\n// User\r\n// List things (the common ones like: waterbodies, sources, timezones, departments)\r\n// MetadataProperties (projects, datasets)\r\n\r\nimport * as angular from 'angular';\r\n\r\n\r\nconst common_service = ['$q',\r\n 'SaveDatasetMetadata',\r\n 'GetMetadataFor',\r\n 'GetWaterBodies',\r\n 'GetSources',\r\n 'GetTimeZones',\r\n 'GetDepartments',\r\n 'Users',\r\n 'GetAllUsers',\r\n 'SaveUser',\r\n 'DeleteLocationAction',\r\n 'GetAllPossibleDatastoreLocations',\r\n 'SaveProjectLocation',\r\n 'UpdateLocationAction',\r\n 'GetMetadataEntities',\r\n 'SaveMetadataProperty',\r\n 'DeleteMetadataProperty',\r\n 'GetLookupItems',\r\n 'SaveLookupTableItem',\r\n 'GetMetadataPropertiesForEntity',\r\n 'SaveFeedback',\r\n 'GetMetadataProperty',\r\n 'DeleteLookupItem',\r\n 'GetGroups',\r\n 'GetOrganizations',\r\n 'GetOrgUsers',\r\n 'GetOrgGroups',\r\n 'GetOrgDepartments',\r\n 'GetOrgAdministrators',\r\n 'DeleteLocations',\r\n 'GetSelectGridData',\r\n 'GetAllInstruments',\r\n function ($q,\r\n SaveDatasetMetadata,\r\n GetMetadataFor,\r\n GetWaterBodies,\r\n GetSources,\r\n GetTimeZones,\r\n GetDepartments,\r\n Users,\r\n GetAllUsers,\r\n SaveUser,\r\n DeleteLocationAction,\r\n GetAllPossibleDatastoreLocations,\r\n SaveProjectLocation,\r\n UpdateLocationAction,\r\n GetMetadataEntities,\r\n SaveMetadataProperty,\r\n DeleteMetadataProperty,\r\n GetLookupItems,\r\n SaveLookupTableItem,\r\n GetMetadataPropertiesForEntity,\r\n SaveFeedback,\r\n GetMetadataProperty,\r\n DeleteLookupItem,\r\n GetGroups,\r\n GetOrganizations,\r\n GetOrgUsers,\r\n GetOrgGroups,\r\n GetOrgDepartments,\r\n GetOrgAdministrators,\r\n DeleteLocations,\r\n GetSelectGridData,\r\n GetAllInstruments\r\n ) {\r\n\r\n var service = {\r\n\r\n datastoreId: null,\r\n metadataProperties: null,\r\n\r\n clearMetadataProperties: function () {\r\n service.metadataProperties = null;\r\n },\r\n\r\n getLocations: function (id) {\r\n service.datastoreId = id;\r\n return GetAllPossibleDatastoreLocations.query({id: id});\r\n },\r\n\r\n getWaterBodies: function () {\r\n return GetWaterBodies.query();\r\n },\r\n\r\n getSources: function () {\r\n return GetSources.query();\r\n },\r\n\r\n deleteLocation: function (locationId) {\r\n return DeleteLocationAction.save({LocationId: locationId});\r\n },\r\n\r\n deleteLocations: function (locationIds) {\r\n return DeleteLocations.save({LocationIds: locationIds});\r\n },\r\n\r\n //NB: not used anywhere\r\n getTimeZones: function () {\r\n return GetTimeZones.query();\r\n },\r\n\r\n getGroups: function () {\r\n return GetGroups.query();\r\n },\r\n\r\n getOrgGroups: function (id) {\r\n return GetOrgGroups.query({Id: id});\r\n },\r\n\r\n getOrgDepartments: function (id) {\r\n return GetOrgDepartments.query({Id: id});\r\n },\r\n\r\n getOrgAdministrators: function (id) {\r\n return GetOrgAdministrators.query({Id: id});\r\n },\r\n\r\n getOrganizations: function () {\r\n return GetOrganizations.query();\r\n },\r\n\r\n getUsers: function () {\r\n return Users.query();\r\n },\r\n\r\n getOrgUsers: function (id) {\r\n return GetOrgUsers.query({Id: id});\r\n },\r\n\r\n getAllUsers: function () {\r\n return GetAllUsers.query();\r\n },\r\n\r\n getDepartments: function () {\r\n return GetDepartments.query();\r\n },\r\n\r\n getSelectGridData: function (fieldId) {\r\n return GetSelectGridData.query({FieldId: fieldId});\r\n },\r\n\r\n saveNewProjectLocation: function (projectId, location) {\r\n return SaveProjectLocation.save({ProjectId: projectId, Location: location});\r\n },\r\n\r\n //updateProjectLocation: function (projectId, location, newSdeObjectId, oldSdeObjectId) {\r\n //updateLocationAction: function (projectId, location, newSdeObjectId) {\r\n updateLocationAction: function (projectId, location, newSdeObjectId, row) {\r\n console.log(\"Inside CommonService.updateProjectLocation...\");\r\n //console.log(\"ProjectId = \" + projectId + \", location = \" + location + \", newSdeObjectId = \" + newSdeObjectId); // + \", oldSdeObjectId = \" + oldSdeObjectId);\r\n //console.log(\"ProjectId = \" + projectId + \", location = \" + location + \", newSdeObjectId = \" + newSdeObjectId + \", row.Label = \" + row.Label);\r\n console.log(\"ProjectId = \" + projectId + \", location = \" + location + \", newSdeObjectId = \" + newSdeObjectId);\r\n //return UpdateLocationAction.save({ ProjectId: projectId, Location: location, NewSdeObjectId: newSdeObjectId, OldSdeObjectId: oldSdeObjectId});\r\n //return UpdateLocationAction.save({ProjectId: projectId, LocationId: location, NewSdeObjectId: newSdeObjectId});\r\n return UpdateLocationAction.save({ProjectId: projectId, LocationId: location, NewSdeObjectId: newSdeObjectId, Row: row});\r\n },\r\n\r\n filterListForOnlyActiveInstruments: function (instruments) {\r\n var newInstrumentList = [];\r\n\r\n angular.forEach(instruments, function (instrument) {\r\n if (instrument.StatusId === 0)\r\n newInstrumentList.push(instrument);\r\n });\r\n\r\n return newInstrumentList;\r\n },\r\n\r\n checkForDuplicateInstrument: function (instrumentList, instrument) {\r\n var blnInstrumentExists = false;\r\n var blnKeepGoing = true;\r\n\r\n angular.forEach(instrumentList, function (item) {\r\n // Have we found a match yet? If so, we do not need to check the rest of the items.\r\n if (blnKeepGoing) {\r\n //console.log(\"item.Name = \" + item.Name + \", instrument.Name = \" + instrument.Name + \", item.SerialNumber = \" + item.SerialNumber + \", instrument.SerialNumber = \" + instrument.SerialNumber);\r\n if ((item.Name === instrument.Name) && (item.SerialNumber === instrument.SerialNumber)) {\r\n blnInstrumentExists = true;\r\n blnKeepGoing = false;\r\n }\r\n }\r\n });\r\n\r\n return blnInstrumentExists;\r\n },\r\n\r\n getAllInstruments: function () {\r\n return GetAllInstruments.query();\r\n },\r\n\r\n getMetadataProperty: function (id) {\r\n return GetMetadataProperty.query({id: id});\r\n },\r\n\r\n getMetadataProperties: function (propertyTypeId) {\r\n return GetMetadataPropertiesForEntity.query({id: propertyTypeId});\r\n },\r\n\r\n getMetadataEntities: function () {\r\n return GetMetadataEntities.query();\r\n },\r\n\r\n\r\n getMetadataFor: function (relationId, typeId) {\r\n return GetMetadataFor.save({RelationId: relationId, EntityTypeId: typeId});\r\n },\r\n\r\n saveDatasetMetadata: function (datasetId, metadata, saveResults) {\r\n var payload = {\r\n DatasetId: datasetId,\r\n Metadata: metadata\r\n };\r\n\r\n return SaveDatasetMetadata.save(payload);\r\n\r\n },\r\n\r\n saveFeedback: function (feedback) {\r\n return SaveFeedback.save({Feedback: feedback});\r\n },\r\n\r\n saveUser: function (user) {\r\n return SaveUser.save({User: user});\r\n },\r\n\r\n saveMetadataProperty: function (property) {\r\n return SaveMetadataProperty.save(property);\r\n },\r\n\r\n deleteMetadataProperty: function (property) {\r\n return DeleteMetadataProperty.save({Id: property.Id});\r\n },\r\n\r\n getLookupItems: function (lookup) {\r\n return GetLookupItems.query({id: lookup.Id})\r\n },\r\n\r\n saveLookupTableItem: function (payload) {\r\n return SaveLookupTableItem.save(payload);\r\n },\r\n\r\n deleteLookupItem: function (item, lookupId) {\r\n console.log('deleteLookupItem');\r\n var payload = {\r\n ItemId: item.Id,\r\n LookupId: lookupId\r\n };\r\n return DeleteLookupItem.save({payload});\r\n }\r\n\r\n\r\n };\r\n\r\n return service;\r\n }\r\n];\r\n\r\nexport default common_service;\r\n","import * as angular from 'angular';\r\n\r\nvar bsample_chartservice = [\r\n function(){\r\n var service = {\r\n\r\n \tdataset: \"BSample\",\r\n\r\n\t\t\tgetChartConfig: function(){\r\n\t\t\t\tvar config = {\r\n \t\t\t title : 'Fish by Species',\r\n\t\t\t\t tooltips: true,\r\n\t\t\t\t labels : false,\r\n showControls: false,\r\n\r\n\t\t\t\t legend: {\r\n\t\t\t\t display: true,\r\n\t\t\t\t position: 'right'\r\n\t\t\t\t }\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn config;\r\n\t\t\t},\r\n\r\n\r\n\t\t\tgetDefaultChartData: function()\r\n\t\t\t{\r\n\t\t\t\tvar defaultChartData = {\"series\": [], \"data\":[{ \"x\": \"Loading...\", \"y\": [0],\"tooltip\": \"\"}]}; //default\r\n\t\t\t\treturn defaultChartData;\r\n\t\t\t},\r\n\r\n\r\n\t\t\tgetChartData: function()\r\n\t\t\t{\r\n\t\t\t\t//console.log(\"Inside getChartData...\");\r\n\t\t\t var dataCalc = {};\r\n\r\n\t\t\t angular.forEach(data, function(row, key){\r\n\t\t\t var num = (row.TotalFishRepresented) ? row.TotalFishRepresented : 1;\r\n\t\t\t //console.log(row);\r\n\r\n\t\t\t if(row.Species)\r\n\t\t\t {\r\n\r\n\t\t\t if(!dataCalc[row.Species])\r\n\t\t\t dataCalc[row.Species] = { total: 0, males: 0, females: 0};\r\n\r\n\t\t\t dataCalc[row.Species].total += num;\r\n\r\n\t\t\t if(row.Sex == \"M\")\r\n\t\t\t dataCalc[row.Species].males += num;\r\n\t\t\t if(row.Sex == \"F\")\r\n\t\t\t dataCalc[row.Species].females += num;\r\n\r\n\t\t\t }\r\n\r\n\t\t\t //console.log(row.Species + \" = \");\r\n\t\t\t //console.dir(dataCalc[row.Species]);\r\n\r\n\t\t\t });\r\n\r\n\t\t\t var data = {\r\n\t\t\t \"series\": [\r\n\t\t\t \"Total\",\r\n\t\t\t \"Male\",\r\n\t\t\t \"Female\"\r\n\t\t\t ],\r\n\t\t\t \"data\": [\r\n\t\t\t ]\r\n\t\t\t };\r\n\r\n\t\t\t angular.forEach(dataCalc, function(vals, species){\r\n\t\t\t data['data'].push({\r\n\t\t\t \"x\": species,\r\n\t\t\t \"y\": [vals.total,vals.males,vals.females],\r\n\t\t\t });\r\n\t\t\t });\r\n\r\n\t\t\t //console.log(data);\r\n\r\n\t\t\t return data;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tbuildChart: function(){\r\n\r\n\t\t\t},\r\n\r\n };\r\n\r\n return service;\r\n }\r\n];\r\n\r\nexport default bsample_chartservice;\r\n","/* These custom ag-grid cell editors provide improved behavior for our purposes.\r\n* a couple of helpful sites for documentation and examples\r\n* https://www.ag-grid.com/javascript-grid-cell-editor\r\n* https://spapas.github.io/2017/01/03/ag-grid-custom-components/\r\n*/\r\n\r\n//here are the custom cell editors defined in this file:\r\nimport {getOrderedObjectList} from \"../../common-functions\";\r\n\r\nexport function CDMSMultiselectCellEditor() { };\r\nexport function CDMSSelectCellEditor() { };\r\nexport function CDMSTextareaCellEditor() { };\r\nexport function CDMSTextCellEditor() {};\r\n\r\n\r\nvar onKeyDown = function (event) {\r\n //console.log(\"Keypress: \" + event.key + \" >> \" + event.keyCode);\r\n var key = event.which || event.keyCode;\r\n if (key == 37 || // left\r\n key == 39 || // right\r\n key == 9 || // tab\r\n key == 40 || // down\r\n key == 38) // up\r\n {\r\n //console.log(\"stopping progopation for \"+ key);\r\n if (key == 9 || key == 40 || key == 38) {\r\n event.preventDefault();\r\n }\r\n event.stopPropagation();\r\n }\r\n}\r\n\r\n\r\n\r\n/*\r\n* The MULTISELECT cell editor provides a basic multiselect dropdown since one is not included in ag-grid\r\n\r\n//params.values are the possible values.\r\n//params.value is our selection\r\n\r\n*/\r\n\r\nCDMSMultiselectCellEditor.prototype.init = function (params) {\r\n //console.log(\"init: editor params = \");\r\n //console.dir(params);\r\n\r\n var _this = this;\r\n\r\n _this.values = params.values;\r\n _this.container = document.createElement('div');\r\n _this.container.style = \"border-radius: 3px; border: 1px solid grey;background: #e6e6e6;\";\r\n _this.container.onkeydown = onKeyDown;\r\n _this.eSelect = document.createElement(\"select\");\r\n _this.eSelect.multiple = \"multiple\";\r\n _this.eSelect.size = 7;\r\n _this.container.appendChild(_this.eSelect);\r\n\r\n if (params.column.tabbingIn) {\r\n console.log(\"--- cancelling becauswe we are tabbing in ------- .>>>>>>>>>>>>>>>>\");\r\n params.column.tabbingIn = false;\r\n this.cancelBeforeStart = true;\r\n }\r\n\r\n if (params.value === null)\r\n params.value = [];\r\n\r\n if (Array.isArray(params.values)) {\r\n //console.log(\"params.values is an array\");\r\n params.values.sort().forEach(function (value) {\r\n var option = document.createElement('option');\r\n option.value = value;\r\n option.text = value;\r\n if (params.value && params.value.contains(value)) { //is this one already selected?\r\n option.selected = true;\r\n }\r\n _this.eSelect.appendChild(option);\r\n });\r\n }\r\n\r\n if (!Array.isArray(params.values) && typeof params.values === 'object') {\r\n //console.log(\"params.values is an object\");\r\n var ordered_values = getOrderedObjectList(params.values);\r\n\r\n ordered_values.forEach(function (item) {\r\n\r\n var option = document.createElement('option');\r\n option.value = item.Id;\r\n option.text = item.Label;\r\n // @ts-ignore\r\n if (Object.values(params.value).contains(item.Id)) { //is this one already selected?\r\n option.selected = true;\r\n }\r\n _this.eSelect.appendChild(option);\r\n });\r\n }\r\n};\r\n\r\nCDMSMultiselectCellEditor.prototype.getGui = function () {\r\n //this.eSelect.focus();\r\n return this.container;\r\n};\r\n\r\nCDMSMultiselectCellEditor.prototype.getValue = function () {\r\n //console.log(\"getvalue fired ------------ \");\r\n\r\n var selecteditems = [];\r\n for (var i = 0; i < this.eSelect.length; i++) {\r\n if (this.eSelect.options[i].selected)\r\n selecteditems.push(this.eSelect.options[i].value);\r\n }\r\n\r\n return selecteditems;\r\n};\r\n\r\nCDMSMultiselectCellEditor.prototype.isCancelBeforeStart = function () {\r\n //console.log(\"cancel before start: \" + this.cancelBeforeStart);\r\n return this.cancelBeforeStart;\r\n};\r\n\r\nCDMSMultiselectCellEditor.prototype.destroy = function () {};\r\nCDMSMultiselectCellEditor.prototype.isPopup = function () { return true; };\r\nCDMSMultiselectCellEditor.prototype.afterGuiAttached = function () { this.eSelect.focus(); };\r\n\r\n\r\n//SELECT cell edit control provides standard [\"label\"] as well as {\"id\":\"label\"}\r\nCDMSSelectCellEditor.prototype.init = function (params) {\r\n //console.log(\"init: editor params = \");\r\n //console.dir(params);\r\n\r\n var _this = this;\r\n\r\n _this.values = params.values;\r\n _this.container = document.createElement('div');\r\n _this.container.style = \"width: 420px;border-radius: 3px; border: 1px solid grey;background: #e6e6e6\";\r\n _this.container.onkeydown = onKeyDown;\r\n _this.eSelect = document.createElement(\"select\");\r\n _this.eSelect.size = 7;\r\n _this.container.appendChild(_this.eSelect);\r\n\r\n //_this.keypress = function (event) { console.dir(event); }\r\n\r\n //this.cancelBeforeStart = (params.charPress == null && params.keyPress == null) ? true : false;\r\n\r\n //this gets set in dataset-edit-form when tabbing. a work-around because the grid was stealing the focus after edit and tab.\r\n if (params.column.tabbingIn) {\r\n //console.log(\"--- cancelling becauswe we are tabbing in ------- .>>>>>>>>>>>>>>>>\");\r\n params.column.tabbingIn = false;\r\n this.cancelBeforeStart = true;\r\n } else {\r\n this.cancelBeforeStart = false;\r\n }\r\n\r\n if (params.value === null)\r\n params.value = [];\r\n\r\n if (Array.isArray(params.values)) {\r\n params.values.sort().forEach(function (value) {\r\n var option = document.createElement('option');\r\n option.value = value;\r\n option.text = value;\r\n if (params.value === value) { //is this one already selected?\r\n option.selected = true;\r\n }\r\n _this.eSelect.appendChild(option);\r\n });\r\n }\r\n\r\n if (!Array.isArray(params.values) && typeof params.values === 'object') {\r\n\r\n var ordered_values = getOrderedObjectList(params.values);\r\n\r\n ordered_values.forEach(function (item) {\r\n\r\n var option = document.createElement('option');\r\n option.value = item.Id;\r\n option.text = item.Label;\r\n if (params.value == item.Id) { //is this one already selected?\r\n option.selected = true;\r\n }\r\n _this.eSelect.appendChild(option);\r\n });\r\n }\r\n\r\n //_this.eSelect.focus();\r\n\r\n};\r\n\r\nCDMSSelectCellEditor.prototype.isCancelBeforeStart = function () {\r\n //console.log(\"cancel before start: \" + this.cancelBeforeStart);\r\n return this.cancelBeforeStart;\r\n};\r\n\r\nCDMSSelectCellEditor.prototype.getGui = function () {\r\n //console.log(\"getgui fired\");\r\n //console.dir(this.container);\r\n //this.eSelect.focus();\r\n return this.container;\r\n};\r\n\r\nCDMSSelectCellEditor.prototype.getValue = function () {\r\n //console.log(\"getvalue fired ------------ \" + this.eSelect.value);\r\n return this.eSelect.value;\r\n};\r\n\r\nCDMSSelectCellEditor.prototype.destroy = function () { };\r\nCDMSSelectCellEditor.prototype.isPopup = function () { return true; };\r\nCDMSSelectCellEditor.prototype.afterGuiAttached = function () {\r\n //console.log(\"afterguiattched\");\r\n //var _this = this;\r\n //setTimeout(function () {\r\n // console.log(\"timout reached! focusing\");\r\n this.eSelect.focus();\r\n //}, 500);\r\n\r\n};\r\n\r\n\r\n\r\n//TEXTAREA custom cell edit control\r\nCDMSTextareaCellEditor.prototype.init = function (params) {\r\n var _this = this;\r\n\r\n _this.value = (params.value) ? params.value : params.charPress;\r\n _this.container = document.createElement('div');\r\n _this.container.style = \"border-radius: 3px; border: 1px solid grey;background: #e6e6e6;padding: 1px;\";\r\n _this.eSelect = document.createElement(\"textarea\");\r\n _this.eSelect.rows = 7;\r\n _this.eSelect.cols = 40;\r\n _this.eSelect.value = _this.value;\r\n _this.container.appendChild(_this.eSelect);\r\n\r\n if (params.column.tabbingIn) {\r\n console.log(\"--- cancelling becauswe we are tabbing in ------- .>>>>>>>>>>>>>>>>\");\r\n params.column.tabbingIn = false;\r\n this.cancelBeforeStart = true;\r\n }\r\n\r\n};\r\n\r\nCDMSTextareaCellEditor.prototype.getGui = function () {\r\n return this.container;\r\n};\r\n\r\nCDMSTextareaCellEditor.prototype.getValue = function () {\r\n return (this.eSelect.value) ? this.eSelect.value : \"\";\r\n};\r\n\r\nCDMSTextareaCellEditor.prototype.isCancelBeforeStart = function () {\r\n //console.log(\"cancel before start: \" + this.cancelBeforeStart);\r\n return this.cancelBeforeStart;\r\n};\r\n\r\nCDMSTextareaCellEditor.prototype.destroy = function () { };\r\nCDMSTextareaCellEditor.prototype.isPopup = function () { return true; };\r\nCDMSTextareaCellEditor.prototype.afterGuiAttached = function () { this.eSelect.focus(); };\r\n\r\n\r\n// text/number\r\nCDMSTextCellEditor.prototype.init = function (params) {\r\n var _this = this;\r\n\r\n _this.value = (params.value) ? params.value : params.charPress;\r\n _this.eInput = document.createElement('input');\r\n _this.eInput.style = \"margin-top: -1px;\";\r\n _this.eInput.value = _this.value;\r\n\r\n if (params.column.tabbingIn) {\r\n //console.log(\"--- cancelling becauswe we are tabbing in ------- .>>>>>>>>>>>>>>>>\");\r\n params.column.tabbingIn = false;\r\n this.cancelBeforeStart = true;\r\n }\r\n\r\n};\r\n\r\nCDMSTextCellEditor.prototype.getGui = function () {\r\n return this.eInput;\r\n};\r\n\r\nCDMSTextCellEditor.prototype.getValue = function () {\r\n return (this.eInput.value) ? this.eInput.value : \"\";\r\n};\r\n\r\nCDMSTextCellEditor.prototype.isCancelBeforeStart = function () {\r\n //console.log(\"cancel before start: \" + this.cancelBeforeStart);\r\n return this.cancelBeforeStart;\r\n};\r\n\r\nCDMSTextCellEditor.prototype.destroy = function () { };\r\nCDMSTextCellEditor.prototype.afterGuiAttached = function () { this.eInput.focus(); };\r\n\r\n\r\n\r\n\r\n\r\n\r\n","declare const $: any;\r\n\r\nvar modal_manage_user = ['$scope', '$uibModalInstance', 'CommonService',\r\n function (scope, $uibModalInstance, CommonService) {\r\n\r\n scope.UserStatuses = [\r\n { 'Id': 0, 'Name': 'Active' },\r\n { 'Id': 1, 'Name': 'Inactive' },\r\n ];\r\n\r\n if (scope.user.Id) {\r\n scope.headingMessage = \"Edit User: \" + scope.user.Fullname;\r\n if (scope.user.Inactive == null)\r\n scope.user.Inactive = 0;\r\n\r\n }\r\n else {\r\n scope.headingMessage = \"Create new user\";\r\n }\r\n\r\n scope.hidePassword = function () {\r\n if (scope.user.Password) {\r\n $('input#user-password').hide();\r\n $('input#user-password-hidden').show();\r\n }\r\n }\r\n\r\n scope.showPassword = function () {\r\n if (scope.user.Password) {\r\n $('input#user-password-hidden').hide();\r\n $('input#user-password').show().focus();\r\n }\r\n }\r\n\r\n scope.save = function () {\r\n if(scope.user.Password)\r\n scope.user.Password = btoa(scope.user.Password); //encodes\r\n\r\n var promise = CommonService.saveUser(scope.user);\r\n\r\n promise.$promise.then(function () {\r\n console.log(\"done and success!\");\r\n delete scope.user.Password;\r\n\r\n $uibModalInstance.close(promise);\r\n });\r\n\r\n\r\n };\r\n\r\n scope.hidePassword();\r\n\r\n scope.cancel = function () {\r\n delete scope.user.Password;\r\n\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_manage_user;\r\n","//controller for modal-create-season.html\r\n// create/edit season\r\nimport * as angular from 'angular';\r\nimport {initEdit, setDateTo0000, toExactISOString} from \"../../../common/common-functions\";\r\n\r\n\r\nvar modal_create_season = ['$scope', '$rootScope', '$uibModalInstance', '$uibModal', 'DatasetService','CommonService','SubprojectService', 'ServiceUtilities',\r\n\t'$timeout', '$location', '$anchorScroll', '$document', '$upload',\r\n function ($scope, $rootScope, $uibModalInstance, $uibModal, DatasetService, CommonService, SubprojectService, ServiceUtilities,\r\n $timeout, $location, $anchorScroll, $document, $upload)\r\n {\r\n\r\n\t console.log(\"Inside ModalCreateSeasonCtrl...\");\r\n\r\n initEdit(); //prevent backspace\r\n\r\n $scope.header_message = \"Create New Season\";\r\n $rootScope.newSeason = $scope.newSeason = true;\r\n\r\n $scope.season_row = {\r\n StatusId: 0,\r\n };\r\n\r\n $scope.seasonId = 0;\r\n\r\n $scope.setSpecies = function () {\r\n console.log(\"Inside setSpecies...\");\r\n\r\n console.log(\"$scope is next...\");\r\n console.dir($scope);\r\n console.log(\"$scope.season_row.Species (before setting) is next...\");\r\n console.dir($scope.season_row.Species);\r\n console.log(\"typeof $scope.season_row.Species = \" + typeof $scope.season_row.Species)\r\n\r\n // When Species gets first set, from the options in dataset.Confg, the values are strings.\r\n // The select box gyrates on numbers, so we set the value to the proper index, and then\r\n // when modal appears, it has the correct value (string) showing in the Species box.\r\n for (var i = 0; i < $scope.speciesList.length; i++) {\r\n console.log(\"$scope.speciesList[\" + i + \"] = \" + $scope.speciesList[i]);\r\n\r\n if ($scope.season_row.Species === $scope.speciesList[i]) {\r\n $scope.season_row.Species = \"\" + i; // Note the string conversion \"\"\r\n }\r\n }\r\n console.log(\"$scope.season_row.Species (after setting) is next...\");\r\n console.dir($scope.season_row.Species);\r\n console.log(\"typeof $scope.season_row.Species = \" + typeof $scope.season_row.Species)\r\n\r\n };\r\n\r\n\t //if we are editing, viewSubproject will be set. -- prepare scope for editing...\r\n if ($scope.viewSeason) {\r\n console.log(\"We are editing an existing season...\");\r\n console.log(\"$scope.viewSeason is next...\");\r\n console.dir($scope.viewSeason);\r\n\r\n $scope.header_message = \"Edit Season: \" + $scope.viewSeason.Species + \" \" + $scope.viewSeason.Season;\r\n $rootScope.newSeason = $scope.newSeason = false;\r\n $scope.seasonsList = $rootScope.seasonsList;\r\n\r\n $scope.season_row = angular.copy($scope.viewSeason);\r\n //$scope.seasonId = $scope.season_row.Id;\r\n $scope.seasonId = $scope.viewSeason.Id;\r\n\r\n $scope.setSpecies();\r\n }\r\n else {\r\n //$scope.viewSeason either does not exist or is null, so we are creating a new season.\r\n console.log(\"We are creating a new season...\");\r\n }\r\n\r\n console.log(\"Inside ModalCreateSeasonCtrl, after initializing\");\r\n console.log(\"$scope is next...\");\r\n console.dir($scope);\r\n console.log(\"$scope.season_row (after initialization) is next...\");\r\n console.dir($scope.season_row);\r\n\r\n // Initialization done.\r\n\r\n $scope.close = function () {\r\n console.log(\"Inside $scope.close...\");\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n $scope.save = function () {\r\n console.log(\"Inside $scope.save...\");\r\n\r\n console.log(\"$scope is next...\");\r\n console.dir($scope);\r\n console.log(\"$scope.season_row.Species (before resetting) is next...\");\r\n console.dir($scope.season_row.Species);\r\n console.log(\"typeof $scope.season_row.Species = \" + typeof $scope.season_row.Species)\r\n\r\n $scope.seasonSave = undefined;\r\n $scope.seasonSave = [];\r\n $scope.seasonSave.error = false;\r\n $scope.seasonSave.errorMessage = \"\";\r\n\r\n console.log(\"$scope is next...\");\r\n console.dir($scope);\r\n\r\n $scope.seasonSave.errorMessage = \"\";\r\n if ((typeof $scope.season_row.Species === 'undefined') || ($scope.season_row.Species === null)) {\r\n console.log(\"Species is empty...\");\r\n $scope.seasonSave.error = true;\r\n $scope.seasonSave.errorMessage += \"Species cannot be blank! \";\r\n }\r\n\r\n if ((typeof $scope.season_row.Season === 'undefined') || ($scope.season_row.Species === null)) {\r\n console.log(\"Season is empty...\");\r\n $scope.seasonSave.error = true;\r\n $scope.seasonSave.errorMessage += \"Season cannot be blank! \";\r\n }\r\n\r\n if ((typeof $scope.season_row.OpenDate === 'undefined') || (typeof $scope.season_row.CloseDate === 'undefined')) {\r\n console.log(\"Open or Close Date is blank...\");\r\n $scope.seasonSave.error = true;\r\n $scope.seasonSave.errorMessage += \"Open and Close Dates cannot be blank! \";\r\n }\r\n\r\n if ($scope.seasonSave.error)\r\n return;\r\n\r\n // Keep this down here, after the initial error checking; otherwise, it will blank the\r\n // Species box, after we do the following conversion.\r\n // To display the existing value, we had to set Species to its index value first.\r\n // The select box gyrates on numbers, so we set the value to the proper index.\r\n // To save, we must switch the value back, from the index, to its proper string value.\r\n for (var i = 0; i < $scope.speciesList.length; i++) {\r\n console.log(\"$scope.speciesList[\" + i + \"] = \" + $scope.speciesList[i]);\r\n\r\n if ($scope.season_row.Species === i.toString()) {\r\n $scope.season_row.Species = $scope.speciesList[i];\r\n }\r\n }\r\n console.log(\"$scope.season_row.Species (after resetting) is next...\");\r\n console.dir($scope.season_row.Species);\r\n\r\n console.log(\"$scope.season_row, full is next...\");\r\n console.dir($scope.season_row);\r\n\r\n\r\n /********* A note about OpenDate ***********/\r\n\t\t /* \tWhen we save the season, when the backend converts the OpenDate and Close to UTC (adds 8 hours).\r\n\t\t\t So, with an initial saved time of 0000, the backend converts it to 0800.\r\n\t\t\t Each time we save then, the time will have 8 hours added to it. On the 4th save, it will go into the next day.\r\n\t\t\t To avoid this, we take the saved date (now 0800), and set it back to 0000.\r\n\t\t\t This will keep the time in the same spot (keep it from changing).\r\n\t\t\t There may be a better way to handle this issue, but this technique works too...\r\n\t\t */\r\n\r\n if ((typeof $scope.season_row.Id === 'undefined') || ($scope.season_row.Id === null)) {\r\n $scope.season_row.Id = 0;\r\n }\r\n\r\n if (typeof $scope.season_row.OpenDate !== 'string') {\r\n $scope.season_row.OpenDate = setDateTo0000($scope.season_row.OpenDate);\r\n $scope.season_row.OpenDate = toExactISOString($scope.season_row.OpenDate);\r\n }\r\n\r\n if (typeof $scope.season_row.CloseDate !== 'string') {\r\n $scope.season_row.CloseDate = setDateTo0000($scope.season_row.CloseDate);\r\n $scope.season_row.CloseDate = toExactISOString($scope.season_row.CloseDate);\r\n }\r\n\r\n var promise = DatasetService.saveSeason($scope.dataset.ProjectId, parseInt($scope.dataset.Id), $scope.Profile.Username, $scope.season_row, $scope.saveResults);\r\n if (typeof promise !== 'undefined') {\r\n console.log(\"promise is next...\");\r\n console.dir(promise);\r\n promise.$promise.then(function () {\r\n $scope.postSaveSeasonUpdateGrid(promise);\r\n $uibModalInstance.dismiss();\r\n });\r\n }\r\n };\r\n\r\n $scope.cancel = function () {\r\n console.log(\"Inside $scope.cancel...\");\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n $scope.selectSpecies = function () {\r\n console.log(\"Inside selectSpecies...\");\r\n\r\n console.log(\"$scope.season_row.Species is next...\");\r\n console.dir($scope.season_row.Species);\r\n };\r\n\r\n $scope.calculateTotalDays = function () {\r\n if ((typeof $scope.season_row.OpenDate !== 'undefined') && ($scope.season_row.OpenDate !== null) &&\r\n (typeof $scope.season_row.CloseDate !== 'undefined') && ($scope.season_row.CloseDate !== null)\r\n ) {\r\n var soDate = null;\r\n if ($scope.season_row.OpenDate) {\r\n soDate = new Date(Date.parse($scope.season_row.OpenDate));\r\n $scope.season_row.OpenDate = setDateTo0000(soDate);\r\n }\r\n\r\n var scDate = null;\r\n if ($scope.season_row.CloseDate) {\r\n scDate = new Date(Date.parse($scope.season_row.CloseDate));\r\n $scope.season_row.CloseDate = setDateTo0000(scDate);\r\n }\r\n\r\n var intTotalDaysInMilliseconds = Math.abs(scDate - soDate);\r\n\r\n // The calculation: Number millis / 1000 (to seconds) / 60 (to minutes) / 60 (to hours) / 24 (to days)\r\n var intTotalDaysInDays = intTotalDaysInMilliseconds / 1000 / 60 / 60 / 24;\r\n $scope.season_row.TotalDays = intTotalDaysInDays;\r\n }\r\n };\r\n }\r\n];\r\n\r\n\r\nexport default modal_create_season;\r\n","//project factories and service\r\n//includes fishermen and instrument services, too, since they are part of projects.\r\n/*\r\n* define the service that can be used by any module in our application to work with projects.\r\n*/\r\nimport * as angular from 'angular';\r\n\r\nconst project_service = ['$q', '$rootScope',\r\n 'ProjectFunders',\r\n 'ProjectCollaborators',\r\n 'ProjectCounties',\r\n 'Projects',\r\n 'Project',\r\n 'ProjectFiles',\r\n 'ProjectDatasets',\r\n 'SaveProjectPermissions',\r\n 'SaveProject',\r\n 'GetAllInstruments',\r\n 'GetAllInstrumentAccuracyChecks',\r\n 'SaveProjectInstrument',\r\n 'SaveProjectFisherman',\r\n 'SaveInstrument',\r\n 'SaveInstrumentAccuracyCheck',\r\n 'SaveFisherman',\r\n 'UpdateFile',\r\n 'DeleteFile',\r\n 'GetDatastoreProjects',\r\n 'GetInstruments',\r\n 'GetInstrumentTypes',\r\n 'RemoveProjectInstrument',\r\n 'GetFishermen',\r\n 'GetProjectFishermen',\r\n 'RemoveProjectFisherman',\r\n 'RemoveInstrumentAccuracyCheck',\r\n 'GetCrppStaff',\r\n 'GetOlcStaff',\r\n 'SaveProjectConfig',\r\n 'GetPrincipals',\r\n 'ChangeOwner',\r\n 'GetVisibilityPermissions',\r\n 'SaveLink',\r\n 'ProjectLocations',\r\n 'SaveLocations',\r\n 'AddLocation',\r\n 'ProjectDatasetLocations',\r\n function ($q, $rootScope,\r\n ProjectFunders,\r\n ProjectCollaborators,\r\n ProjectCounties,\r\n Projects,\r\n Project,\r\n ProjectFiles,\r\n ProjectDatasets,\r\n SaveProjectPermissions,\r\n SaveProject,\r\n GetAllInstruments,\r\n GetAllInstrumentAccuracyChecks,\r\n SaveProjectInstrument,\r\n SaveProjectFisherman,\r\n SaveInstrument,\r\n SaveInstrumentAccuracyCheck,\r\n SaveFisherman,\r\n UpdateFile,\r\n DeleteFile,\r\n GetDatastoreProjects,\r\n GetInstruments,\r\n GetInstrumentTypes,\r\n RemoveProjectInstrument,\r\n GetFishermen,\r\n GetProjectFishermen,\r\n RemoveProjectFisherman,\r\n RemoveInstrumentAccuracyCheck,\r\n GetCrppStaff,\r\n GetOlcStaff,\r\n SaveProjectConfig,\r\n GetPrincipals,\r\n ChangeOwner,\r\n GetVisibilityPermissions,\r\n SaveLink,\r\n ProjectLocations,\r\n SaveLocations,\r\n AddLocation,\r\n ProjectDatasetLocations\r\n ) {\r\n\r\n var service = {\r\n project: null,\r\n\r\n clearProject: function () {\r\n service.project = null;\r\n },\r\n\r\n getPrincipals: function (id) {\r\n return GetPrincipals.query({id: id});\r\n },\r\n\r\n getVisibilityPermissions: function (id) {\r\n return GetVisibilityPermissions.query({id: id});\r\n },\r\n\r\n //NB: Not used anywhere\r\n getDatastoreProjects: function (id) {\r\n return GetDatastoreProjects.query({id: id});\r\n },\r\n\r\n getProjects: function () {\r\n return Projects.query();\r\n },\r\n\r\n getLocations: function (projectId) {\r\n return ProjectLocations.query({ProjectId: projectId});\r\n },\r\n\r\n getDatasetLocations: function (projectId, datasetId) {\r\n return ProjectDatasetLocations.query({ProjectId: projectId, DatasetId: datasetId});\r\n },\r\n\r\n getProjectDatasets: function (projectId) {\r\n //this.getProject(projectId); //set our local project to the one selected\r\n return ProjectDatasets.query({id: projectId});\r\n },\r\n\r\n getProjectFunders: function (projectId) {\r\n console.log(\"Inside getProjectFunders, projectId = \" + projectId);\r\n //this.getProject(projectId); //set our local project to the one selected\r\n return ProjectFunders.query({id: projectId});\r\n },\r\n\r\n getProjectCollaborators: function (projectId) {\r\n console.log(\"Inside getProjectCollaborators...\");\r\n //this.getProject(projectId); //set our local project to the one selected\r\n return ProjectCollaborators.query({id: projectId});\r\n },\r\n\r\n getProjectCounties: function (projectId) {\r\n console.log(\"Inside getProjectCounties...\");\r\n //this.getProject(projectId); //set our local project to the one selected\r\n return ProjectCounties.query({id: projectId});\r\n },\r\n\r\n saveProject: function (project) {\r\n return SaveProject.save({Project: project});\r\n },\r\n\r\n saveLocations: function (datasetId, locationIds) {\r\n return SaveLocations.save({DatasetId: datasetId, LocationIds: locationIds});\r\n },\r\n\r\n addLocation: function (datasetId, locationId) {\r\n return AddLocation.save({DatasetId: datasetId, LocationId: locationId});\r\n },\r\n\r\n saveLink: function (projectId, link) {\r\n return SaveLink.save({ProjectId: projectId, Link: link});\r\n },\r\n\r\n changeProjectOwner: function (projectId, userId) {\r\n return ChangeOwner.save({ProjectId: projectId, UserId: userId})\r\n },\r\n\r\n saveProjectConfig: function (project) {\r\n return SaveProjectConfig.save({Project: project});\r\n },\r\n\r\n getProjectFiles: function (projectId) {\r\n //console.log(\"Inside getProjectFiles...\");\r\n //console.log(\"projectId = \" + projectId);\r\n return ProjectFiles.query({id: projectId});\r\n },\r\n\r\n getInstruments: function () {\r\n return GetInstruments.query();\r\n },\r\n\r\n getInstrumentTypes: function () {\r\n return GetInstrumentTypes.query();\r\n },\r\n\r\n getFishermen: function () {\r\n return GetFishermen.query();\r\n },\r\n\r\n getProject: function (id) {\r\n //console.log(\"Inside getProject; id = \" + id);\r\n\r\n var project = Project.query({id: id});\r\n\r\n project.$promise.then(function () {\r\n if (!$rootScope.Profile.canViewProject(project)) {\r\n $rootScope.go('/unauthorized');\r\n }\r\n\r\n if (project.Config) {\r\n try {\r\n project.Config = angular.fromJson(project.Config);\r\n } catch (e) {\r\n console.error(\"config could not be parsed for project: \" + project.Config);\r\n console.dir(e);\r\n }\r\n } else {\r\n project.Config = {};\r\n }\r\n })\r\n\r\n return project;\r\n },\r\n\r\n savePermissions: function (projectId, permissions) {\r\n return SaveProjectPermissions.save({ProjectId: projectId, Permissions: permissions})\r\n },\r\n\r\n getAllInstruments: function () {\r\n return GetAllInstruments.query();\r\n },\r\n\r\n saveInstrument: function (projectId, instrument) {\r\n return SaveInstrument.save({ProjectId: projectId, Instrument: instrument}); //will connect to this project if creating instrument\r\n },\r\n\r\n saveFisherman: function (projectId, fisherman, saveResults) {\r\n //console.log(\"Inside saveFisherman...\");\r\n saveResults.saving = true;\r\n //console.log(\"saveResults.saving = \" + saveResults.saving);\r\n\r\n return SaveFisherman.save({ProjectId: projectId, Fisherman: fisherman});\r\n },\r\n\r\n saveProjectInstrument: function (projectId, instrument) {\r\n return SaveProjectInstrument.save({ProjectId: projectId, Instrument: instrument});\r\n },\r\n\r\n saveProjectFisherman: function (projectId, fisherman) {\r\n return SaveProjectFisherman.save({ProjectId: projectId, Fisherman: fisherman});\r\n },\r\n\r\n removeProjectFisherman: function (projectId, fishermanId) {\r\n return RemoveProjectFisherman.save({ProjectId: projectId, FishermanId: fishermanId});\r\n },\r\n\r\n removeProjectInstrument: function (projectId, instrumentId) {\r\n return RemoveProjectInstrument.save({ProjectId: projectId, InstrumentId: instrumentId});\r\n },\r\n\r\n getProjectFishermen: function (projectId) {\r\n console.log(\"Inside getProjectFishermen, projectId = \" + projectId);\r\n return GetProjectFishermen.query({id: projectId});\r\n },\r\n\r\n getAllInstrumentAccuracyChecks: function (instrumentIdList) {\r\n return GetAllInstrumentAccuracyChecks.query();\r\n },\r\n\r\n saveInstrumentAccuracyCheck: function (instrumentId, ac) {\r\n return SaveInstrumentAccuracyCheck.save({InstrumentId: instrumentId, AccuracyCheck: ac});\r\n },\r\n\r\n removeInstrumentAccuracyCheck: function (instrumentId, ac) {\r\n return RemoveInstrumentAccuracyCheck.save({InstrumentId: instrumentId, AccuracyCheck: ac});\r\n },\r\n\r\n updateFile: function (projectId, file) {\r\n return UpdateFile.save({ProjectId: projectId, File: file});\r\n },\r\n\r\n deleteFile: function (projectId, file) {\r\n //console.log(\"ProjectId = \" + projectId + \", attempting to delete file...\");\r\n //console.dir(file);\r\n return DeleteFile.save({ProjectId: projectId, File: file});\r\n },\r\n\r\n getCrppStaff: function () {\r\n //console.log(\"Inside getCrppStaff...\");\r\n return GetCrppStaff.query();\r\n },\r\n\r\n getOlcStaff: function () {\r\n //console.log(\"Inside getOlcStaff...\");\r\n return GetOlcStaff.query();\r\n },\r\n };\r\n\r\n return service;\r\n }\r\n];\r\n\r\nexport default project_service;\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {ConfirmComponent} from \"./confirm-component/confirm.component\";\r\nimport {ConfirmService} from \"./confirm.service\";\r\nimport { ConfirmReviewComponent } from './confirm-review/confirm-review.component';\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {ConfirmRoutingModule} from \"./confirm-routing/confirm-routing.module\";\r\nimport {BrowserModule} from \"@angular/platform-browser\";\r\nimport {UpgradeModule} from \"@angular/upgrade/static\";\r\n\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n BrowserModule,\r\n UpgradeModule,\r\n CommonModule,\r\n FormsModule,\r\n ConfirmRoutingModule\r\n ],\r\n declarations: [\r\n ConfirmComponent,\r\n ConfirmReviewComponent\r\n ],\r\n providers: [\r\n ConfirmService\r\n ]\r\n})\r\nexport class ConfirmModule { }\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {loginUrl, serverUrl, successUrl, USER_PREFERENCE_LANDINGPAGE} from \"../../../../appjsLegacy/config\";\r\nimport {LoginService} from \"../login.service\";\r\nimport {Router} from \"@angular/router\";\r\n// import {ActivatedRouteSnapshot, Router, RouterStateSnapshot} from \"@angular/router\";\r\n// import {Observable} from \"rxjs\";\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.scss']\r\n})\r\nexport class LoginComponent implements OnInit {\r\n public loggingIn: boolean;\r\n public loginMessage: string;\r\n // public login: () => void;\r\n public Password: string;\r\n public error: string | boolean;\r\n public Username: string;\r\n public EncryptedPassword: any;\r\n public successUrl = successUrl;\r\n public loginUrl = loginUrl;\r\n\r\n\r\n constructor(private loginService: LoginService, private router: Router,) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n loginControl() {\r\n console.log(\"Inside controller LoginCtrl...\");\r\n this.loggingIn = false;\r\n this.loginMessage = \"Logging in...\";\r\n\r\n // var login = () => {\r\n console.log(\"Inside function login...\");\r\n\r\n //var strServerNumber = \"\";\r\n //var strClientNumber = \"\";\r\n var strFirstNumber = \"\";\r\n var strSecondNumber = \"\";\r\n\r\n var strOriginalText = this.Password;\r\n\r\n var oText = {\r\n strText: \"\",\r\n intNumber: -1\r\n };\r\n\r\n oText.strText = \"\";\r\n\r\n oText.intNumber = -1;\r\n //oText.intSize = -1;\r\n\r\n\r\n this.error = undefined; //clear any error\r\n\r\n if (!this.Username || !this.Password)\r\n return;\r\n\r\n // For some reason, the login runs twice, without this if check to prevent it.\r\n if (this.loggingIn === false) {\r\n this.loggingIn = true;\r\n try {\r\n this.EncryptedPassword = this.loginService.encrypt(this.Password);\r\n try {\r\n let login_try = this.loginService.login(this.Username, this.EncryptedPassword);\r\n console.log(\"Trying to login...\");\r\n\r\n //IMPORTANT: Do not deploy the following lines to production uncommented!\r\n //They will show the password that was entered by the User!\r\n //console.dir(this);\r\n //console.dir(Router);\r\n\r\n if (login_try) {\r\n login_try.toPromise().then((data) => {\r\n\r\n //@ts-ignore\r\n if (data.Success) {\r\n console.log(\"login was successful...\");\r\n\r\n //@ts-ignore\r\n this.loginMessage = data.Message;\r\n\r\n //Since there are now more than two options for routing after a successful\r\n // login, and to allow for this number to grow even higher, we can use\r\n // an enumerated constant and a case for routing.\r\n const LandingPage = {\r\n FileDownload: \"FileDownload\",\r\n UserPreference: \"UserPreference\",\r\n Dashboard: \"Dashboard\",\r\n None: \"\"\r\n }\r\n\r\n var landingPage = LandingPage.None;\r\n\r\n //Check for file redirection URL. If found, redirect to file.\r\n //Otherwise set successUrl to landingpage if there is a preference.\r\n // @ts-ignore\r\n if (data.isRedirect) {\r\n // //@ts-ignore\r\n // console.log(data.fileRedirectionURL);\r\n\r\n console.log(\"data.isRedirect is TRUE...\");\r\n landingPage = LandingPage.FileDownload;\r\n \r\n // //@ts-ignore\r\n // window.location.href = data.fileRedirectionURL;\r\n } else {\r\n //@ts-ignore\r\n if (data.User && data.User.UserPreferences) {\r\n console.log(\"data.User has preferences...\");\r\n //@ts-ignore\r\n for (var i = data.User.UserPreferences.length - 1; i >= 0; i--) {\r\n // @ts-ignore\r\n var pref = data.User.UserPreferences[i];\r\n\r\n if (pref.Name == USER_PREFERENCE_LANDINGPAGE || pref.Name == 'LandingPage') {\r\n if (pref.Value !== \"\" && pref.Value !== \"/\") {\r\n this.successUrl = pref.Value;\r\n } else {\r\n this.successUrl = successUrl;\r\n }\r\n // this.router.navigateByUrl(pref.Value);\r\n }\r\n }\r\n //this.router.navigateByUrl(this.successUrl);\r\n landingPage = LandingPage.UserPreference;\r\n } else {\r\n console.log(\"data.User has NO preferences set...\");\r\n // this.router.navigateByUrl('dashboard');\r\n landingPage = LandingPage.Dashboard;\r\n }\r\n }\r\n\r\n switch(landingPage) {\r\n case LandingPage.Dashboard:\r\n this.router.navigateByUrl('dashboard');\r\n break;\r\n \r\n case LandingPage.FileDownload:\r\n //NOTE: Tried using this.router.navigateByUrl(data.fileRedirectionURL), but\r\n // it was not actually loading the page indicated by the URL. Subsequently\r\n // tried using this.router.navigate(data.fileRedirectionURL), but that threw\r\n // an error from angular. Currently using window.location.href, which simulates\r\n // physically clicking a link.\r\n\r\n //window.location.href = data.fileRedirectionURL;\r\n\r\n //@ts-ignore\r\n //window.open(data.fileRedirectionURL, '_blank');\r\n alert('LOGIN SUCCESSFUL!\\nPlease try your file link again.');\r\n this.router.navigateByUrl('dashboard');\r\n break;\r\n\r\n case LandingPage.UserPreference:\r\n this.router.navigateByUrl(this.successUrl);\r\n break;\r\n\r\n default:\r\n console.log(\"Error finding preferred path. Logging out.\");\r\n this.loginService.logout();\r\n }\r\n\r\n } else {\r\n this.loggingIn = false;\r\n //@ts-ignore\r\n this.error = data.Message;\r\n this.Password = \"\";\r\n\r\n console.warn('login failed');\r\n // window.location = this.loginUrl;\r\n this.router.navigateByUrl('login');\r\n }\r\n });\r\n } else {\r\n this.loggingIn = false;\r\n this.error = 'There was a problem trying to login. Contact the helpdesk if you need further assistance.';\r\n this.loginMessage = 'There was a problem trying to login. Contact the helpdesk if you need further assistance.';\r\n }\r\n } catch (e) {\r\n console.dir(e);\r\n }\r\n } catch (e) {\r\n console.dir(e);\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","import * as moment from 'moment';\r\nimport {valueFormatterBoolean} from \"../../../../core/common/common-functions\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar modal_add_spring_inspection = ['$scope', '$uibModalInstance','LeasingService',\r\n function ($scope, $uibModalInstance, LeasingService) {\r\n\r\n $scope.header_message = \"Edit Spring Inspection\";\r\n\r\n //if we're not editing then we are creating a new one\r\n if (!$scope.inspection_modal) {\r\n $scope.header_message = \"Add Spring Inspection\";\r\n $scope.inspection_modal = {\r\n InspectionDateTime: $scope.currentDay,\r\n InspectedBy: $scope.currentUser,\r\n LeaseYear: \"\" + moment().year(),\r\n InspectionType: \"Spring\",\r\n ViolationType: \"Crop\",\r\n };\r\n }\r\n\r\n console.dir($scope.inspection_modal);\r\n\r\n var cropsColumnDefsModal = [\r\n { headerName: \"Year\", field: \"LeaseYear\", width: 75, sort: 'asc' },\r\n { headerName: \"Crop Req'd\", field: \"CropRequirement\", width: 120 },\r\n {\r\n headerName: \"AltCrop?\", field: \"OptionAlternateCrop\", width: 95,\r\n valueFormatter: function (params) {\r\n return valueFormatterBoolean(params.node.data.OptionAlternateCrop);\r\n },\r\n\r\n }\r\n ];\r\n\r\n $scope.cropsGridModal = {\r\n columnDefs: cropsColumnDefsModal,\r\n rowData: $scope.lease.LeaseCropPlans,\r\n enableSorting: true,\r\n enableFilter: true,\r\n rowSelection: 'single'\r\n }\r\n\r\n //we want $uibModalInstance.rendered, but that isn't in our angularjs yet. :/\r\n $uibModalInstance.opened.then(function () {\r\n setTimeout(function () {\r\n $scope.cropsGridModalDiv = document.querySelector('#modal-crops-grid');\r\n new Grid($scope.cropsGridModalDiv, $scope.cropsGridModal);\r\n }, 500);\r\n })\r\n\r\n\r\n $scope.save = function () {\r\n console.dir($scope.inspection_modal);\r\n $scope.inspection_modal.LeaseId = $scope.lease.Id;\r\n var save_result = LeasingService.saveInspection($scope.inspection_modal);\r\n\r\n save_result.$promise.then(function () {\r\n $scope.saveLeaseCallback(save_result);\r\n $uibModalInstance.dismiss();\r\n });\r\n\r\n };\r\n\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_add_spring_inspection;\r\n","var modal_invalid_operation = ['$scope', '$uibModalInstance',\r\n function ($scope, $uibModalInstance) {\r\n\r\n $scope.header_title = $scope.invalidOperationTitle;\r\n $scope.header_message = $scope.invalidOperationMessage;\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n }\r\n];\r\n\r\nexport default modal_invalid_operation;\r\n","import * as moment from 'moment';\r\nimport {valueFormatterDate} from \"../../../../core/common/common-functions\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar permit_dashboard = ['$rootScope','$scope', 'PermitService',\r\n function ($rootScope, $scope, PermitService) {\r\n\r\n $scope.PermitStats = PermitService.getPermitStatistics();\r\n $scope.OutstandingRequests = PermitService.getOutstandingRequests();\r\n $scope.ExpiringPermits = PermitService.getExpiringPermits();\r\n $scope.PublicHearingPermits = PermitService.getPublicHearingPermits();\r\n $scope.MyPermitStats = PermitService.getMyPermitStatistics();\r\n\r\n $scope.clickselect = \"allstaff\";\r\n $rootScope.clickselect = $scope.clickselect;\r\n\r\n $scope.DisplayStats = [];\r\n $scope.MyDisplayStats = [];\r\n\r\n $scope.getDisplayStats = function(stat){\r\n return ($scope.DisplayStats[stat]) ? $scope.DisplayStats[stat] : 0;\r\n }\r\n\r\n $scope.getMyDisplayStats = function(stat){\r\n return ($scope.MyDisplayStats[stat]) ? $scope.MyDisplayStats[stat] : 0;\r\n }\r\n\r\n $scope.OutstandingRequests.$promise.then(function () {\r\n $scope.requestsGridDiv = document.querySelector('#outstanding-requests-grid');\r\n new Grid($scope.requestsGridDiv, $scope.requestsGrid);\r\n $scope.requestsGrid.api.setRowData($scope.OutstandingRequests);\r\n });\r\n\r\n $scope.ExpiringPermits.$promise.then(function () {\r\n $scope.expiringGridDiv = document.querySelector('#expiring-permits-grid');\r\n new Grid($scope.expiringGridDiv, $scope.expiringGrid);\r\n $scope.expiringGrid.api.setRowData($scope.ExpiringPermits);\r\n });\r\n\r\n $scope.PublicHearingPermits.$promise.then(function () {\r\n $scope.publichearingGridDiv = document.querySelector('#publichearing-permits-grid');\r\n new Grid($scope.publichearingGridDiv, $scope.publichearingGrid);\r\n $scope.publichearingGrid.api.setRowData($scope.PublicHearingPermits);\r\n });\r\n \r\n $scope.PermitStats.$promise.then(function () {\r\n $scope.PermitStats.forEach(function (stat) {\r\n if(stat.PermitStatus == 'Conditionally Approved' || stat.PermitStatus == 'Approved'){\r\n $scope.DisplayStats['Approved'] = ($scope.DisplayStats['Approved']) ? $scope.DisplayStats['Approved']+ stat.TotalCount : stat.TotalCount;\r\n }\r\n else\r\n $scope.DisplayStats[stat.PermitStatus] = stat.TotalCount;\r\n });\r\n });\r\n\r\n $scope.MyPermitStats.$promise.then(function () {\r\n $scope.MyPermitStats.forEach(function (stat) {\r\n if(stat.PermitStatus == 'Conditionally Approved' || stat.PermitStatus == 'Approved'){\r\n $scope.MyDisplayStats['Approved'] = ($scope.MyDisplayStats['Approved']) ? $scope.MyDisplayStats['Approved']+ stat.TotalCount : stat.TotalCount;\r\n }\r\n else\r\n $scope.MyDisplayStats[stat.PermitStatus] = stat.TotalCount;\r\n });\r\n });\r\n\r\n $scope.requestsGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n rowSelection: 'single',\r\n selectedItem: null,\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onRowDoubleClicked: function (params) {\r\n window.open(\"permits/list?Id=\" + params.data.Id, \"_blank\");\r\n },\r\n };\r\n\r\n $scope.requestsGrid.columnDefs = [\r\n { headerName: \"Reviewer\", field: \"ReviewedBy\", width: 150, menuTabs: ['filterMenuTab'], filter: true, hide: true },\r\n { headerName: \"Permit #\", field: \"PermitNumber\", width: 120, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n //{ headerName: \"Project Name\", field: \"ProjectName\", width: 300, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n //{ headerName: \"Event Type\", field: \"EventType\", width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Type\", field: \"ItemType\", width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Date Sent\", field: \"RequestDate\", width: 150, menuTabs: ['filterMenuTab'],\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.RequestDate);\r\n },\r\n filter: 'agDateColumnFilter', sort: 'asc'\r\n },\r\n //{ headerName: \"Update\", width: 150, menuTabs: ['filterMenuTab'], filter: false }\r\n ];\r\n\r\n\r\n $scope.publichearingGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n rowSelection: 'single',\r\n selectedItem: null,\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onRowDoubleClicked: function (params) {\r\n window.open(\"permits/list?Id=\" + params.data.Id, \"_blank\");\r\n },\r\n };\r\n\r\n $scope.publichearingGrid.columnDefs = [\r\n { headerName: \"Reviewer\", field: \"ReviewedBy\", width: 150, menuTabs: ['filterMenuTab'], filter: true, hide: true },\r\n { headerName: \"Permit #\", field: \"PermitNumber\", width: 120, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: \"Project Name\", field: \"ProjectName\", width: 235, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: \"Hearing Date\", field: \"RequestDate\", width: 140, menuTabs: ['filterMenuTab'],\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.RequestDate);\r\n },\r\n filter: 'agDateColumnFilter', sort: 'asc'\r\n },\r\n ];\r\n\r\n\r\n $scope.expiringGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n rowSelection: 'single',\r\n selectedItem: null,\r\n onRowDoubleClicked: function (params) {\r\n window.open(\"permits/list?Id=\" + params.data.Id, \"_blank\");\r\n },\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n cellStyle: function(params){\r\n if(moment(params.data.ExpireDate).isBefore(moment())) {\r\n return {color: 'red'}\r\n }\r\n }\r\n }\r\n };\r\n\r\n $scope.expiringGrid.columnDefs = [\r\n { headerName: \"Reviewer\", field: \"ReviewedBy\", width: 150, menuTabs: ['filterMenuTab'], filter: true, hide: true},\r\n { headerName: \"Permit #\", field: \"PermitNumber\", width: 120, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: \"Project Name\", field: \"ProjectName\", width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: \"Last Event\", field: \"RequestDate\", width: 120, menuTabs: ['filterMenuTab'], filter: 'agDateColumnFilter', sort: 'asc',\r\n valueFormatter: function (params) {\r\n if(params.node.data.RequestDate > params.node.data.ResponseDate || params.node.data.ResponseDate == null)\r\n return valueFormatterDate(params.node.data.RequestDate);\r\n else\r\n return valueFormatterDate(params.node.data.ResponseDate);\r\n }\r\n },\r\n {\r\n headerName: \"Expire Date\", field: \"ExpireDate\", width: 150, menuTabs: ['filterMenuTab'], filter: 'agDateColumnFilter',\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.ExpireDate);\r\n }\r\n }\r\n\r\n ];\r\n\r\n $scope.changeClickSelect = function () {\r\n if ($scope.clickselect == 'allstaff') {\r\n $scope.expiringGrid.api.setFilterModel(null);\r\n $scope.expiringGrid.api.onFilterChanged();\r\n $scope.publichearingGrid.api.setFilterModel(null);\r\n $scope.publichearingGrid.api.onFilterChanged();\r\n $scope.requestsGrid.api.setFilterModel(null);\r\n $scope.requestsGrid.api.onFilterChanged();\r\n }\r\n else {\r\n var fc = $scope.publichearingGrid.api.getFilterInstance('ReviewedBy');\r\n fc.selectNothing();\r\n fc.selectValue($scope.Profile.Fullname);\r\n $scope.publichearingGrid.api.onFilterChanged();\r\n\r\n var filter_component = $scope.expiringGrid.api.getFilterInstance('ReviewedBy');\r\n filter_component.selectNothing();\r\n filter_component.selectValue($scope.Profile.Fullname);\r\n $scope.expiringGrid.api.onFilterChanged();\r\n\r\n var fcc = $scope.requestsGrid.api.getFilterInstance('ReviewedBy');\r\n fcc.selectNothing();\r\n fcc.selectValue($scope.Profile.Fullname);\r\n $scope.requestsGrid.api.onFilterChanged();\r\n\r\n }\r\n $rootScope.clickselect = $scope.clickselect;\r\n };\r\n }\r\n];\r\n\r\nexport default permit_dashboard;\r\n","export default \"\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";","import {Injectable} from '@angular/core';\r\nimport {buildFinalResults, buildRandomString10, getNumberFromPlace} from \"./login-functions\";\r\nimport {serviceUrl} from \"../../../appjsLegacy/config\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoginService {\r\n\r\n constructor(private http: HttpClient) {\r\n }\r\n\r\n login(username, password) {\r\n console.log(\"Inside LoginSvc, login...\");\r\n return this.http.post(serviceUrl + '/api/v1/account/login', {Username: username, Password: password});\r\n }\r\n\r\n logout() {\r\n console.log(\"Inside LoginSvc, logout...\");\r\n return this.http.get(serviceUrl + '/api/v1/account/logout', {responseType: 'text'});\r\n }\r\n\r\n // retrieveNumber() {\r\n // console.log(\"Inside retrieveNumber...\");\r\n // return this.http.get(serviceUrl + '/api/projects', {params: {id: 'id'}, responseType: 'json'},);\r\n // }\r\n\r\n \r\n\r\n encrypt(strText) {\r\n //var strServerNumber = \"\";\r\n //var strClientNumber = \"\";\r\n var strFirstNumber = \"\";\r\n var strSecondNumber = \"\";\r\n var strPassword = \"\"\r\n var originalTextList = [];\r\n\r\n var strFinalResult = \"\";\r\n //var strLastDigit = \"\";\r\n\r\n var strOriginalText = strText;\r\n //console.log(\"strOriginalText = \" + strOriginalText);\r\n\r\n var oText = {\r\n strText: \"\",\r\n intNumber: null\r\n };\r\n\r\n\r\n oText.strText = \"\";\r\n oText.intNumber = -1;\r\n //oText.intSize = -1;\r\n\r\n strFirstNumber = buildRandomString10();\r\n //strFirstNumber = \"8989898989\"; // Use this for development/testing.\r\n //console.log(\"strFirstNumber = \" + strFirstNumber);\r\n\r\n strSecondNumber = buildRandomString10();\r\n //strSecondNumber = \"7878787878\"; // Use this for development/testing.\r\n //console.log(\"strSecondNumber = \" + strSecondNumber);\r\n\r\n for (let i = 0; i < strOriginalText.length; i++) {\r\n oText = {\r\n strText: \"\",\r\n intNumber: null\r\n };\r\n\r\n oText.strText = strOriginalText.substr(i, 1);\r\n oText.intNumber = strOriginalText.charCodeAt(i);\r\n\r\n originalTextList.push(oText);\r\n }\r\n //console.log(\"originalTextList is next...\");\r\n //console.dir(originalTextList);\r\n\r\n //writeResults(originalTextList);\r\n\r\n var intFirstNumberLength = strFirstNumber.length;\r\n //console.log(\"intFirstNumberLength = \" + intFirstNumberLength);\r\n\r\n for (var i = 0; i < intFirstNumberLength; i++) {\r\n // Step1: 1st digit tells what digit in second number to multiply by.\r\n\r\n // angular.forEach (originalTextList, function(item){\r\n for (let item of originalTextList) {\r\n //console.log(\"strFirstNumber[i] = \" + strFirstNumber[i]);\r\n //console.log(\"item.strText = \" + item.strText + \", \");\r\n //console.log(\"i = \" + i);\r\n //console.log(\"parseInt(strFirstNumber.substr(i, 1)) = \" + parseInt(strFirstNumber.substr(i, 1)));\r\n //console.log(\"strSecondNumber = \" + strSecondNumber);\r\n\r\n if ((i === 0) || (i === 3) || (i === 6) || (i === 9)) {\r\n item.intNumber = item.intNumber + getNumberFromPlace(parseInt(strFirstNumber.substr(i, 1)), strSecondNumber);\r\n } else if ((i === 1) || (i === 4) || (i === 7)) {\r\n item.intNumber = item.intNumber * getNumberFromPlace(parseInt(strFirstNumber.substr(i, 1)), strSecondNumber);\r\n } else if ((i === 2) || (i === 5) || (i === 8)) {\r\n item.intNumber = item.intNumber - getNumberFromPlace(parseInt(strFirstNumber.substr(i, 1)), strSecondNumber);\r\n }\r\n //writeResults(originalTextList);\r\n }\r\n }\r\n\r\n\r\n strPassword = buildFinalResults(originalTextList, strFirstNumber, strSecondNumber);\r\n //console.log(\"strPassword = \" + strPassword);\r\n\r\n return strPassword;\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n// ['LoginRequest','LogoutRequest','RetrieveNumber', function(LoginRequest, LogoutRequest, RetrieveNumber){\r\n// login_module.factory('RetrieveNumber',['$resource', function(resource){\r\n// return resource(serviceUrl +'/api/v1/account/getnumber', {}, {\r\n// //return resource(\"http://10.10.10.86:81/Development/services-dev/account/GetNumber', {}, {\r\n// \t\t\tquery: {method: 'GET', params: {}, isArray: false}\r\n// \t\t});\r\n// //return resource(serviceUrl+'/data/GetNumber', {}, {\r\n// \t\t//\tquery: {method: 'GET', params: {}, isArray: false}\r\n// \t\t//});\r\n// }]);\r\n// //mod.factory('Project',['$resource', function($resource){\r\n// // return $resource(serviceUrl+'/api/projects', {}, {\r\n// // query: {method: 'GET', params: {id:'id'}, isArray: false}\r\n// // });\r\n// //}]);\r\n//\r\n// login_module.factory('LoginRequest',['$resource', function(resource){\r\n// return resource(serviceUrl+'/api/v1/account/login');\r\n// }]);\r\n//\r\n// login_module.factory('LogoutRequest', ['$resource', function(resource){\r\n// return resource(serviceUrl +'/api/v1/account/logout', {}, { query: {method: 'GET', params: {}, isArray: false}});\r\n// }]);\r\n","//modal to choose duplicate fields\r\nvar modal_admin_choose_duplicate_fields = ['$scope', '$uibModal','$uibModalInstance','AdminService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, AdminService) {\r\n\r\n $scope.savedDuplicateCheckFields = $scope.dataset.Config.DuplicateCheckFields;\r\n\r\n //this HeaderFields thing is a workaround for IE11 because it doesn't render the following. Better would be to just use this in the template:\r\n /*\r\n \r\n */\r\n\r\n $scope.HeaderFields = [];\r\n\r\n $scope.dataset.Fields.forEach(function (field) {\r\n if (field.FieldRoleId == 1) {\r\n field.FullLabel = field.Label + \" (\" + field.Units + \")\";\r\n $scope.HeaderFields.push(field);\r\n }\r\n });\r\n\r\n $scope.save = function () {\r\n $uibModalInstance.close();\r\n };\r\n\r\n $scope.cancel = function () {\r\n $scope.dataset.Config.DuplicateCheckFields = $scope.savedDuplicateCheckFields;\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_admin_choose_duplicate_fields;\r\n","/*\r\n* This is the landing page for a project\r\n*/\r\nimport {METADATA_ENTITY_PROJECT, serviceUrl} from \"../../../../config\";\r\nimport {getParsedMetadataValues} from \"../../../common/common-functions\";\r\n\r\ndeclare const $: any;\r\n\r\nvar project_landing = ['$scope', '$routeParams', 'SubprojectService', 'ProjectService', 'DatasetService', 'CommonService', 'UserService',\r\n '$rootScope', '$uibModal', '$sce', '$window', '$http',\r\n 'ServiceUtilities', '$location', '$anchorScroll',\r\n function (scope, routeParams, SubprojectService, ProjectService, DatasetService, CommonService, UserService, $rootScope, $uibModal, $sce, $window, $http,\r\n ServiceUtilities, $location, $anchorScroll) {\r\n //console.log(\"Inside controllers.js, projectDatasetsController...\");\r\n //console.log(\"routeParams.Id = \" + routeParams.Id);\r\n\r\n scope.OnTab = \"Summary\";\r\n\r\n scope.project = ProjectService.getProject(routeParams.Id);\r\n scope.currentUserId = $rootScope.Profile.Id;\r\n\r\n /*\r\n scope.UserIsAdmin = false;\r\n scope.UserIsOwner = false;\r\n scope.UserIsEditor = false;\r\n */\r\n\r\n //scope.metadataList = {};\r\n scope.CellOptions = {}; //for metadata dropdown options\r\n\r\n\r\n scope.project.$promise.then(function () {\r\n scope.afterProjectLoaded();\r\n });\r\n\r\n scope.openProjectEditor = function () {\r\n scope.row = scope.project; //\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/modal-edit-project.html',\r\n controller: 'ModalProjectEditorCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: 'static',\r\n windowClass: 'modal-medium',\r\n keyboard: false\r\n }).result.then(function (saved_project) {\r\n scope.project = saved_project;\r\n scope.afterProjectLoaded();\r\n });\r\n };\r\n\r\n scope.afterProjectLoaded = function () {\r\n //load the metafields for this project once it loads\r\n scope.project.MetaFields = CommonService.getMetadataFor(scope.project.Id, METADATA_ENTITY_PROJECT);\r\n\r\n //if habitat project then load those fields, too...\r\n scope.project.MetaFields.$promise.then(function () {\r\n\r\n /* -- not adding in the habitat level metafields anymore -- */\r\n //var habfields = CommonService.getMetadataFor(scope.project.Id, METADATA_ENTITY_HABITAT);\r\n //habfields.$promise.then(function () {\r\n\r\n // habfields.forEach(function (habfield) {\r\n // habfield.isHabitat = true;\r\n // scope.project.MetaFields.push(habfield);\r\n // });\r\n\r\n //prep the values if it is a multiselect\r\n scope.project.MetaFields.forEach(function (field) {\r\n if (field.Values && (field.ControlType == \"multiselect\" || field.ControlType == \"multiselect-checkbox\")) {\r\n field.Values = getParsedMetadataValues(field.Values);\r\n }\r\n });\r\n //});\r\n\r\n\r\n //console.dir(scope.project);\r\n });\r\n\r\n }\r\n\r\n scope.getMetaField = function (id) {\r\n\r\n var result = \"\";\r\n\r\n scope.project.MetaFields.forEach(function (field) {\r\n if (field.MetadataPropertyId == id)\r\n result = field;\r\n });\r\n\r\n return result;\r\n\r\n };\r\n\r\n\r\n scope.uploadFileType = \"\";\r\n scope.projectName = \"\";\r\n scope.DatastoreTablePrefix = $rootScope.DatastoreTablePrefix = \"\";\r\n scope.filesToUpload = {};\r\n\r\n // Get the project ID from the url.\r\n var theUrl = $location.url();\r\n //console.log(\"theUrl = \" + theUrl);\r\n var theLastSlashLoc = theUrl.lastIndexOf(\"/\");\r\n scope.projectId = theUrl.substring(theLastSlashLoc + 1);\r\n //console.log(\"scope.projectId = \" + scope.projectId);\r\n\r\n\r\n scope.ShowMap = {\r\n Display: false,\r\n Message: \"Show Map\",\r\n MessageToOpen: \"Show Map\",\r\n MessageToClose: \"Hide Map\",\r\n };\r\n\r\n\r\n scope.toggleMap = function () {\r\n if (scope.ShowMap.Display) {\r\n scope.removeFilter(); //also clears location\r\n scope.ShowMap.Display = false;\r\n scope.ShowMap.Message = scope.ShowMap.MessageToOpen;\r\n } else {\r\n scope.ShowMap.Display = true;\r\n scope.ShowMap.Message = scope.ShowMap.MessageToClose;\r\n\r\n setTimeout(function () {\r\n scope.map.reposition();\r\n console.log(\"repositioned\");\r\n }, 400);\r\n\r\n }\r\n };\r\n\r\n\r\n scope.openChooseMapImage = function () {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/modal-choosemap.html',\r\n controller: 'ModalChooseMapCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n scope.openChooseSummaryImages = function () {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/modal-choosesummaryimages.html',\r\n controller: 'ModalChooseSummaryImagesCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n\r\n scope.syncToStreamnet = function () {\r\n $.ajax({\r\n url: serviceUrl + '/api/v1/streamnet/synctostreamnet',\r\n type: 'GET',\r\n // data : formData,\r\n // processData: false, // tell jQuery not to process the data\r\n // contentType: false, // tell jQuery not to set contentType\r\n success: function (data) {\r\n // var output = eval(\"(\" + data + \")\");\r\n alert(data.join('\\n'));\r\n },\r\n error: function (jqXHR, error, errorThrown) {\r\n if (jqXHR.status && jqXHR.status == 400) {\r\n alert(jqXHR.responseText + \"\\n\\n\" + \"Error running sync action!\");\r\n } else {\r\n alert(\"Error running sync action!\");\r\n }\r\n }\r\n });\r\n\r\n };\r\n\r\n //handle favorite toggle\r\n scope.isFavorite = $rootScope.Profile.isProjectFavorite(routeParams.Id);\r\n scope.toggleFavorite = function () {\r\n // If the project has not loaded yet for some reason,\r\n // and the user tries to unfavorite the project,\r\n // it replaces the project in User Preferences (Project.Value) with \"undefined\".\r\n // We need to wait until the project is loaded, before we allow the user to\r\n // Unfavorite the project.\r\n //UserService.toggleFavoriteProject(scope, $rootScope);\r\n\r\n if (scope.project.Id)\r\n UserService.toggleFavoriteProject(scope, $rootScope);\r\n else\r\n alert(\"Please wait... the project has not loaded yet.\");\r\n }\r\n\r\n\r\n }\r\n\r\n];\r\n\r\n\r\nexport default project_landing;\r\n\r\n\r\n\r\n","// defines the covid module\r\nimport * as angular from 'angular';\r\n\r\n// require([\r\n//controllers\r\nimport covid_list from \"./components/employees/list\";\r\n\r\n\r\n//modals\r\n\r\n//service\r\n\r\nimport {serviceUrl} from \"../../config\";\r\nimport covid_services from \"./covid-service\";\r\n\r\n\r\n// ], function () {\r\nconst covid_module = angular.module('CovidModule', ['ui.bootstrap', 'ngResource']);\r\ncovid_module.controller('CovidListController', covid_list);\r\ncovid_module.service('CovidService', covid_services);\r\ncovid_module.factory('MyEmployees', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/covid/supervisedemployees', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\ncovid_module.factory('MyEmployeesWork', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/covid/supervisedemployeeswork', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\ncovid_module.factory('SaveEmployees', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/covid/saveemployees');\r\n}]);\r\n\r\ncovid_module.factory('RemoveEmployee', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/covid/removeemployee');\r\n}]);\r\n\r\nexport default covid_module;\r\n// });\r\n\r\n\r\n\r\n","\r\n// Regular Expression explanation. Also see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\r\n// Enclosing characters: / ... /\r\n// At the beginning: ^\r\n// Escape character for special characters: \\ , in this case the - has special meaning\r\n// Match the preceding character 0 or 1 time; in other words, like -123. The - sign in front may or may not be present: ?\r\n// A sequence of 6 digits: \\d{6}\r\n// Start a section to be remembered: ( and another section (\r\n// Look for a decimal, but the decimal needs escaping, because the . is special: \\.\r\n// Close the decimal section: )\r\n// Look for a digit: \\d\r\n// Match the preceding character 1 or more times: +\r\n// Closed this section for the fractional value: )\r\n// The decimal followed by 1 or more numbers may or may not be present (the whole .123 section): ?\r\n// The fractional part (.123) is treated as the end of the number, and we want to see if the number has a fractional part: $\r\n// Basically, the $ matches the whole () section before the ?, so the decimal section must be at the end of the number.\r\n// Example: For example, /t$/ does not match the 't' in \"eater\", but does match it in \"eat\".\r\nimport common_module from \"../common-module\";\r\n\r\n\r\nexport const integerDirective = function () {\r\n var INTEGER_REGEXP = /^\\-?\\d+$/;\r\n return {\r\n require: 'ngModel',\r\n link: function (scope, elm, attrs, ctrl) {\r\n ctrl.$parsers.unshift(function (viewValue) {\r\n if (viewValue == \"\") {\r\n ctrl.$setValidity('integer', true);\r\n return true;\r\n }\r\n\r\n if (INTEGER_REGEXP.test(viewValue)) {\r\n // it is valid\r\n ctrl.$setValidity('integer', true);\r\n return parseInt(viewValue);\r\n } else {\r\n // it is invalid, return undefined (no model update)\r\n ctrl.$setValidity('integer', false);\r\n return undefined;\r\n }\r\n });\r\n }\r\n };\r\n};\r\n\r\n\r\nexport const integerfourDirective = function () {\r\n var INTEGER_REGEXP4DIG = /^\\d{4}$/;\r\n return {\r\n require: 'ngModel',\r\n link: function (scope, elm, attrs, ctrl) {\r\n ctrl.$parsers.unshift(function (viewValue) {\r\n if (viewValue == \"\") {\r\n ctrl.$setValidity('integer', true);\r\n return true;\r\n }\r\n\r\n if (INTEGER_REGEXP4DIG.test(viewValue)) {\r\n // it is valid\r\n ctrl.$setValidity('integer', true);\r\n return parseInt(viewValue);\r\n } else {\r\n // it is invalid, return undefined (no model update)\r\n ctrl.$setValidity('integer', false);\r\n return undefined;\r\n }\r\n });\r\n }\r\n };\r\n};\r\n\r\n\r\n//common_module.directive('smartFloat', function() { // Note: with the one uppercase letter, the caller cannot find this directive.\r\nexport const smartfloat = function () { // With all lowercase like this, the caller CAN find this directive.\r\n var FLOAT_REGEXP = /^\\-?\\d+((\\.)\\d+)?$/;\r\n return {\r\n require: 'ngModel',\r\n link: function (scope, elm, attrs, ctrl) {\r\n ctrl.$parsers.unshift(function (viewValue) {\r\n if (viewValue == \"\") {\r\n ctrl.$setValidity('float', true);\r\n return true;\r\n }\r\n\r\n if (FLOAT_REGEXP.test(viewValue)) {\r\n ctrl.$setValidity('float', true);\r\n return parseFloat(viewValue.replace(',', '.'));\r\n } else {\r\n ctrl.$setValidity('float', false);\r\n return undefined;\r\n }\r\n });\r\n }\r\n };\r\n};\r\n\r\n\r\nexport const sixfloat = function () {\r\n var FLOAT_REGEXP6 = /^\\-?\\d{6}((\\.)\\d+)?$/;\r\n return {\r\n require: 'ngModel',\r\n link: function (scope, elm, attrs, ctrl) {\r\n ctrl.$parsers.unshift(function (viewValue) {\r\n if (viewValue == \"\") {\r\n ctrl.$setValidity('float', true);\r\n return true;\r\n }\r\n\r\n if (FLOAT_REGEXP6.test(viewValue)) {\r\n ctrl.$setValidity('float', true);\r\n return parseFloat(viewValue.replace(',', '.'));\r\n } else {\r\n ctrl.$setValidity('float', false);\r\n return undefined;\r\n }\r\n\r\n });\r\n }\r\n };\r\n};\r\n\r\n\r\nexport const sevenfloat = function () {\r\n var FLOAT_REGEXP7 = /^\\-?\\d{7}((\\.)\\d+)?$/;\r\n return {\r\n require: 'ngModel',\r\n link: function (scope, elm, attrs, ctrl) {\r\n ctrl.$parsers.unshift(function (viewValue) {\r\n if (viewValue == \"\") {\r\n ctrl.$setValidity('float', true);\r\n return true;\r\n }\r\n\r\n if (FLOAT_REGEXP7.test(viewValue)) {\r\n ctrl.$setValidity('float', true);\r\n return parseFloat(viewValue.replace(',', '.'));\r\n } else {\r\n ctrl.$setValidity('float', false);\r\n return undefined;\r\n }\r\n\r\n });\r\n }\r\n };\r\n};\r\n\r\nexport const textRequired = function () {\r\n return {\r\n require: 'ngModel',\r\n link: function (scope, elm, attrs, ctrl) {\r\n ctrl.$parsers.unshift(function (viewValue) {\r\n if (viewValue == \"\") {\r\n ctrl.$setValidity('text', false);\r\n return undefined;\r\n }\r\n else {\r\n ctrl.$setValidity('text', true);\r\n return true;\r\n }\r\n\r\n });\r\n }\r\n };\r\n};\r\n","import {Component, Injectable, OnInit} from '@angular/core';\r\nimport {LoginService} from \"../login.service\";\r\nimport {loginUrl} from \"../../../../appjsLegacy/config\";\r\nimport {Router} from \"@angular/router\";\r\n@Injectable(\r\n {providedIn: 'root'}\r\n)\r\n@Component({\r\n selector: 'app-logout',\r\n templateUrl: './logout.component.html',\r\n styleUrls: ['./logout.component.scss']\r\n})\r\nexport class LogoutComponent implements OnInit {\r\n\r\n constructor(private loginService: LoginService, private router: Router) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n public logout(){\r\n\r\n var logout = this.loginService.logout();\r\n\r\n\tif(logout)\r\n\t{\r\n\t\tlogout.toPromise().then(() => {\r\n // this.router.navigateByUrl('login');\r\n //@ts-ignore\r\n window.location = loginUrl;\r\n\t\t});\r\n\t}\r\n }\r\n\r\n}\r\n\r\n","'use strict';\r\n\r\n//defines field directives\r\nimport * as angular from 'angular';\r\nimport * as moment from 'moment';\r\n// import common_module from \"../common-module\";\r\nimport {getOrderedObjectList, makeObjectsFromValues} from \"../common-functions\";\r\n//\r\n// common_module.directive('ctuirTextField',\r\n// function(){\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-text.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirCurrencyField',\r\n// function(){\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-currency.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirPhoneNumberField',\r\n// function(){\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-phone-number.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirHiddenField',\r\n// function(){\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-hidden.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n//\r\n// common_module.directive('ctuirSelectGridField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select-grid.html',\r\n// controller:['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n// $scope.selectOptions = getOrderedObjectList(makeObjectsFromValues($scope.field.DatastoreId+$scope.field.DbColumnName, $scope.field.PossibleValues));\r\n// }],\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirTextareaField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-textarea.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirDateField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-date.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirActivityTextField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-activity-text.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n//\r\n// common_module.directive('ctuirActivityDateField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-activity-date.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirLocationSelectField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-location-select.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirTimezoneSelectField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-timezone-select.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirInstrumentSelectField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-instrument-select.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirFishermanSelectField',\r\n// function () {\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-fisherman-select.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirAccuracyCheckSelectField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-accuracy-check-select.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirPostAccuracyCheckSelectField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-post-accuracy-check-select.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirQaStatusSelectField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-qa-status-select.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n//\r\n// common_module.directive('ctuirQaStatusCommentField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-qa-status-comment.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n//\r\n// common_module.directive('ctuirTimeField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-time.html',\r\n// restrict: 'E',\r\n// controller: function($scope, $element, $attrs) {\r\n// //console.dir(\"have a time!\");\r\n// //console.dir($scope.field);\r\n// //console.dir($scope.row);\r\n// if (typeof $scope.row[$scope.field.DbColumnName] === 'string') {\r\n// try {\r\n// var time_only = moment($scope.row[$scope.field.DbColumnName]).format('HH:mm');\r\n// $scope.row[$scope.field.DbColumnName] = time_only;\r\n// }catch(e){\r\n// console.log(\" Could not convert \"+ $scope.field.DbColumnName + \" values \" + $scope.row[$scope.field.DbColumnName] + \" to a date.\");\r\n// }\r\n// }\r\n// }\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirEastingField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-easting.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n// });\r\n//\r\n// common_module.directive('ctuirNorthingField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-northing.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n// });\r\n//\r\n// common_module.directive('ctuirNumberField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-number.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirSelectField',\r\n// function () {\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select.html',\r\n// restrict: 'E',\r\n// controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n// $scope.selectOptions = getOrderedObjectList(makeObjectsFromValues($scope.field.DatastoreId+$scope.field.DbColumnName, $scope.field.PossibleValues));\r\n// }]\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirSelectWithBetterFilterField',\r\n// function () {\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select-with-better-filter.html',\r\n// restrict: 'E',\r\n// controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n// $scope.selectOptions = getOrderedObjectList(makeObjectsFromValues($scope.field.DatastoreId+$scope.field.DbColumnName, $scope.field.PossibleValues));\r\n// }]\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirSelectFancyField',\r\n// function () {\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select-fancy.html',\r\n// restrict: 'E',\r\n// controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n// $scope.selectOptions = getOrderedObjectList(makeObjectsFromValues($scope.field.DatastoreId+$scope.field.DbColumnName, $scope.field.PossibleValues));\r\n// }]\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirSelectGroupField',\r\n// function () {\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select-group.html',\r\n// restrict: 'E',\r\n// controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n// $scope.selectOptions = makeObjectsFromValues($scope.field.DatastoreId+$scope.field.DbColumnName, $scope.field.PossibleValues);\r\n// }]\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n//\r\n//\r\n// common_module.directive('ctuirSelectNumberField',\r\n// function () {\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select-number.html',\r\n// restrict: 'E',\r\n// controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n// $scope.selectOptions = getOrderedObjectList(makeObjectsFromValues($scope.field.DatastoreId+$scope.field.DbColumnName, $scope.field.PossibleValues));\r\n// }]\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n//\r\n// common_module.directive('ctuirMultiselectField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-multiselect.html',\r\n// restrict: 'E',\r\n// controller: ['$scope', '$element', '$attrs', function($scope, $element, $attrs) {\r\n// $scope.selectOptions = makeObjectsFromValues($scope.field.DatastoreId+$scope.field.DbColumnName, $scope.field.PossibleValues);\r\n//\r\n// //console.log(\"--- in ctuirMultiselectfield\")\r\n// //console.dir($scope.selectOptions)\r\n// //console.dir($scope.row)\r\n// //console.dir($scope.field)\r\n// //if the values of the multiselect hasn't been converted to an array, try to convert it otherwise any selected values will not highlight as selected\r\n// if (typeof $scope.row[$scope.field.DbColumnName] === 'string') {\r\n// try {\r\n// $scope.row[$scope.field.DbColumnName] = angular.fromJson($scope.row[$scope.field.DbColumnName]);\r\n// }catch(e){\r\n// console.log(\" Could not convert \"+ $scope.field.DbColumnName + \" values \" + $scope.row[$scope.field.DbColumnName] + \" to an array.\");\r\n// }\r\n// }\r\n// }]\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirMultiselectCheckboxField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-multiselect-checkbox.html',\r\n// restrict: 'E',\r\n// controller: ['$scope', '$element', '$attrs', function($scope, $element, $attrs) {\r\n// $scope.selectOptions = makeObjectsFromValues($scope.field.DatastoreId+$scope.field.DbColumnName, $scope.field.PossibleValues);\r\n// /*\r\n// console.dir(\"have a multiselect-checkbox!\");\r\n// console.dir($scope.selectOptions);\r\n// console.dir($scope.field);\r\n// console.dir($scope.row);\r\n// if (typeof $scope.row[$scope.field.DbColumnName] === 'string') {\r\n// try {\r\n// $scope.row[$scope.field.DbColumnName] = angular.fromJson($scope.row[$scope.field.DbColumnName]);\r\n// }catch(e){\r\n// console.log(\" Could not convert \"+ $scope.field.DbColumnName + \" values \" + $scope.row[$scope.field.DbColumnName] + \" to an array.\");\r\n// }\r\n// }*/\r\n// }]\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n//\r\n// common_module.directive('ctuirFileField',\r\n// function(){\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-file.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n// });\r\n//\r\n// common_module.directive('ctuirTempWaypointFileField',\r\n// function(){\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-waypoint-file.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n// });\r\n//\r\n// common_module.directive('ctuirLinkField',\r\n// function(){\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-link.html',\r\n// restrict: 'E',\r\n// controller: ['$scope', '$element', '$attrs', '$uibModal', function($scope, $element, $attrs, $uibModal)\r\n// {\r\n// //add a function that will enable file modal capability for all fields with controlType = link\r\n// $scope.openLinkModal = function(row, field)\r\n// {\r\n// //console.dir(row);\r\n// //console.dir(field);\r\n// $scope.link_row = row;\r\n// $scope.link_field = field;\r\n//\r\n// var modalInstance = $uibModal.open({\r\n// templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-link-field.html',\r\n// controller: 'LinkModalCtrl',\r\n// scope: $scope, //scope to make a child of\r\n// });\r\n// };\r\n// }]\r\n// };\r\n//\r\n// return result;\r\n// });\r\n//\r\n// common_module.directive('ctuirRadioField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-radio.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirCheckboxField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-checkbox.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('uiSelectWrapper',\r\n// function(){\r\n//\r\n// \t\treturn {\r\n// \t\t\tlink: function(scope, element, attrs) {\r\n// \t\t\t\tvar uiSelectController = element.children().controller('uiSelect');\r\n// \t\t\t\tconsole.log(\"uiSelectController is next...\");\r\n// \t\t\t\tconsole.dir(uiSelectController);\r\n// \t\t\t}\r\n// \t\t}\r\n//\r\n// });\r\n//\r\n// common_module.directive('multiselect', function () {\r\n//\r\n// return {\r\n//\r\n// scope: true,\r\n// link: function (scope, element, attrs) {\r\n//\r\n// element.multiselect({\r\n//\r\n// // Replicate the native functionality on the elements so\r\n// // that angular can handle the changes for us.\r\n// onChange: function (optionElement, checked) {\r\n//\r\n// optionElement.removeAttr('selected');\r\n//\r\n// if (checked) {\r\n// optionElement.attr('selected', 'selected');\r\n// }\r\n//\r\n// element.change();\r\n// }\r\n// });\r\n//\r\n// // Watch for any changes to the length of our select element\r\n// scope.$watch(function () {\r\n// return element[0].length;\r\n// }, function () {\r\n// element.multiselect('rebuild');\r\n// });\r\n//\r\n// // Watch for any changes from outside the directive and refresh\r\n// scope.$watch(attrs.ngModel, function () {\r\n// element.multiselect('refresh');\r\n// });\r\n//\r\n// }\r\n//\r\n// };\r\n// });\r\n//\r\n// common_module.directive('convertToNumber', function () {\r\n// return {\r\n// require: 'ngModel',\r\n// link: function (scope, element, attrs, ngModel) {\r\n// ngModel.$parsers.push(function (val) {\r\n// return parseInt(val, 10);\r\n// });\r\n// ngModel.$formatters.push(function (val) {\r\n// return '' + val;\r\n// });\r\n// }\r\n// };\r\n// });\r\n//\r\n\r\nexport const ctuirTextFieldDirective = function() {\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-text.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\nexport const ctuirCurrencyFieldDirective = function () {\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-currency.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\nexport const ctuirPhoneNumberFieldDirective = function() {\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-phone-number.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirHiddenFieldDirective= function() {\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-hidden.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n}\r\n\r\n\r\nexport const ctuirSelectGridFieldDirective= function () {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select-grid.html',\r\n controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n $scope.selectOptions = getOrderedObjectList(makeObjectsFromValues($scope.field.DatastoreId + $scope.field.DbColumnName, $scope.field.PossibleValues));\r\n }],\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\nexport const ctuirTextareaFieldDirective = function () {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-textarea.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirDateFieldDirective = function () {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-date.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirActivityTextFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-activity-text.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirActivityDateFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-activity-date.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\nexport const ctuirLocationSelectFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-location-select.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n}\r\n\r\nexport const ctuirPermitLocationSelectFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-permit-location-select.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n}\r\n\r\nexport const ctuirTimezoneSelectFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-timezone-select.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\nexport const ctuirInstrumentSelectFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-instrument-select.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirFishermanSelectFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-fisherman-select.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirAccuracyCheckSelectFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-accuracy-check-select.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\nexport const ctuirPostAccuracyCheckSelectFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-post-accuracy-check-select.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirQaStatusSelectFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-qa-status-select.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirQaStatusCommentFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-qa-status-comment.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirTimeFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-time.html',\r\n restrict: 'E',\r\n controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n //console.dir(\"have a time!\");\r\n //console.dir($scope.field);\r\n //console.dir($scope.row);\r\n if (typeof $scope.row[$scope.field.DbColumnName] === 'string') {\r\n try {\r\n var time_only = moment($scope.row[$scope.field.DbColumnName]).format('HH:mm');\r\n $scope.row[$scope.field.DbColumnName] = time_only;\r\n } catch (e) {\r\n console.log(\" Could not convert \" + $scope.field.DbColumnName + \" values \" + $scope.row[$scope.field.DbColumnName] + \" to a date.\");\r\n }\r\n }\r\n }]\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirEastingFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-easting.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n};\r\n\r\n\r\nexport const ctuirNorthingFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-northing.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n};\r\n\r\n\r\nexport const ctuirNumberFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-number.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirSelectFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select.html',\r\n restrict: 'E',\r\n controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n $scope.selectOptions = getOrderedObjectList(makeObjectsFromValues($scope.field.DatastoreId + $scope.field.DbColumnName, $scope.field.PossibleValues));\r\n }]\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirSelectWithBetterFilterFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select-with-better-filter.html',\r\n restrict: 'E',\r\n controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n $scope.selectOptions = getOrderedObjectList(makeObjectsFromValues($scope.field.DatastoreId + $scope.field.DbColumnName, $scope.field.PossibleValues));\r\n }]\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirSelectFancyFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select-fancy.html',\r\n restrict: 'E',\r\n controller:['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n $scope.selectOptions = getOrderedObjectList(makeObjectsFromValues($scope.field.DatastoreId + $scope.field.DbColumnName, $scope.field.PossibleValues));\r\n }]\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirSelectGroupFieldFunctionDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select-group.html',\r\n restrict: 'E',\r\n controller:['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n $scope.selectOptions = makeObjectsFromValues($scope.field.DatastoreId + $scope.field.DbColumnName, $scope.field.PossibleValues);\r\n }]\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirSelectNumberFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select-number.html',\r\n restrict: 'E',\r\n controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n $scope.selectOptions = getOrderedObjectList(makeObjectsFromValues($scope.field.DatastoreId + $scope.field.DbColumnName, $scope.field.PossibleValues));\r\n }]\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirMultiselectFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-multiselect.html',\r\n restrict: 'E',\r\n controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n $scope.selectOptions = makeObjectsFromValues($scope.field.DatastoreId + $scope.field.DbColumnName, $scope.field.PossibleValues);\r\n\r\n //console.log(\"--- in ctuirMultiselectfield\")\r\n //console.dir($scope.selectOptions)\r\n //console.dir($scope.row)\r\n //console.dir($scope.field)\r\n //if the values of the multiselect hasn't been converted to an array, try to convert it otherwise any selected values will not highlight as selected\r\n if ((typeof $scope.row !== 'undefined') && ($scope.row !== null))\r\n {\r\n if (typeof $scope.row[$scope.field.DbColumnName] === 'string') {\r\n try {\r\n $scope.row[$scope.field.DbColumnName] = angular.fromJson($scope.row[$scope.field.DbColumnName]);\r\n } catch (e) {\r\n console.log(\" Could not convert \" + $scope.field.DbColumnName + \" values \" + $scope.row[$scope.field.DbColumnName] + \" to an array.\");\r\n }\r\n }\r\n }\r\n }]\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirMultiselectCheckboxFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-multiselect-checkbox.html',\r\n restrict: 'E',\r\n controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n $scope.selectOptions = makeObjectsFromValues($scope.field.DatastoreId + $scope.field.DbColumnName, $scope.field.PossibleValues);\r\n /*\r\n console.dir(\"have a multiselect-checkbox!\");\r\n console.dir($scope.selectOptions);\r\n console.dir($scope.field);\r\n console.dir($scope.row);\r\n if (typeof $scope.row[$scope.field.DbColumnName] === 'string') {\r\n try {\r\n $scope.row[$scope.field.DbColumnName] = angular.fromJson($scope.row[$scope.field.DbColumnName]);\r\n }catch(e){\r\n console.log(\" Could not convert \"+ $scope.field.DbColumnName + \" values \" + $scope.row[$scope.field.DbColumnName] + \" to an array.\");\r\n }\r\n }*/\r\n }]\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirFileFieldDirective = function() {\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-file.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n};\r\n\r\n\r\nexport const ctuirTempWaypointFileFieldDirective = function() {\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-waypoint-file.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n};\r\n\r\n\r\nexport const ctuirLinkFieldDirective = function() {\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-link.html',\r\n restrict: 'E',\r\n controller: ['$scope', '$element', '$attrs', '$uibModal', function ($scope, $element, $attrs, $uibModal) {\r\n //add a function that will enable file modal capability for all fields with controlType = link\r\n $scope.openLinkModal = function (row, field) {\r\n //console.dir(row);\r\n //console.dir(field);\r\n $scope.link_row = row;\r\n $scope.link_field = field;\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-link-field.html',\r\n controller: 'LinkModalCtrl',\r\n scope: $scope, //scope to make a child of\r\n });\r\n };\r\n }]\r\n };\r\n\r\n return result;\r\n};\r\n\r\n\r\nexport const ctuirRadioFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-radio.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const ctuirCheckboxFieldDirective = function() {\r\n\r\n var result = {\r\n templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-checkbox.html',\r\n restrict: 'E',\r\n };\r\n\r\n return result;\r\n\r\n};\r\n\r\n\r\nexport const uiSelectWrapperDirective = function() {\r\n\r\n return {\r\n link: function (scope, element, attrs) {\r\n var uiSelectController = element.children().controller('uiSelect');\r\n console.log(\"uiSelectController is next...\");\r\n console.dir(uiSelectController);\r\n }\r\n }\r\n\r\n};\r\n\r\nexport const multiselectDirective = function() {\r\n\r\n return {\r\n\r\n scope: true,\r\n link: function (scope, element, attrs) {\r\n\r\n element.multiselect({\r\n\r\n // Replicate the native functionality on the elements so\r\n // that angular can handle the changes for us.\r\n onChange: function (optionElement, checked) {\r\n\r\n optionElement.removeAttr('selected');\r\n\r\n if (checked) {\r\n optionElement.attr('selected', 'selected');\r\n }\r\n\r\n element.change();\r\n }\r\n });\r\n\r\n // Watch for any changes to the length of our select element\r\n scope.$watch(function () {\r\n return element[0].length;\r\n }, function () {\r\n element.multiselect('rebuild');\r\n });\r\n\r\n // Watch for any changes from outside the directive and refresh\r\n scope.$watch(attrs.ngModel, function () {\r\n element.multiselect('refresh');\r\n });\r\n\r\n }\r\n\r\n };\r\n};\r\n\r\nexport const convertToNumberDirective = function() {\r\n return {\r\n require: 'ngModel',\r\n link: function (scope, element, attrs, ngModel) {\r\n ngModel.$parsers.push(function (val) {\r\n return parseInt(val, 10);\r\n });\r\n ngModel.$formatters.push(function (val) {\r\n return '' + val;\r\n });\r\n }\r\n };\r\n};\r\n","\r\n// user preferences factories and service\r\n\r\n/*\r\n* define the service that can be used by any module in our application to work with projects.\r\n*/\r\nconst user_service = ['$q',\r\n 'SaveUserInfo',\r\n 'GetMyProjectsAction',\r\n 'SaveUserPreferenceAction',\r\n 'GetMyDatasetsAction',\r\n 'GetMyLastUpdatedDatasets',\r\n 'UserLoginsPastMonth',\r\n 'UserRequestsTotalPastMonth',\r\n 'DatasetRequestsTotalPastMonth',\r\n 'LastUpdatedDatasets',\r\n 'GetMyProjectsList',\r\n 'GetMyDatasetsList',\r\n 'SearchProjects',\r\n 'SearchDatasets',\r\n 'SearchFiles',\r\n\r\n function ($q,\r\n SaveUserInfo,\r\n GetMyProjectsAction,\r\n SaveUserPreferenceAction,\r\n GetMyDatasetsAction,\r\n GetMyLastUpdatedDatasets,\r\n UserLoginsPastMonth,\r\n UserRequestsTotalPastMonth,\r\n DatasetRequestsTotalPastMonth,\r\n LastUpdatedDatasets,\r\n GetMyProjectsList,\r\n GetMyDatasetsList,\r\n SearchProjects,\r\n SearchDatasets,\r\n SearchFiles\r\n) {\r\n\r\n var service = {\r\n\r\n getUserLoginsPastMonth: function () {\r\n return UserLoginsPastMonth.query();\r\n },\r\n\r\n getUserRequestsTotalPastMonth: function () {\r\n return UserRequestsTotalPastMonth.query();\r\n },\r\n\r\n getDatasetRequestsTotalPastMonth: function () {\r\n return DatasetRequestsTotalPastMonth.query();\r\n },\r\n\r\n getLastUpdatedDatasets: function () {\r\n return LastUpdatedDatasets.query();\r\n },\r\n\r\n getMyDatasets: function () {\r\n return GetMyDatasetsAction.query();\r\n },\r\n\r\n getMyProjects: function () {\r\n return GetMyProjectsAction.query();\r\n },\r\n\r\n getMyDatasetsList: function () {\r\n return GetMyDatasetsList.query();\r\n },\r\n\r\n getMyProjectsList: function () {\r\n return GetMyProjectsList.query();\r\n },\r\n\r\n saveUserPreference: function (name, value) {\r\n var payload = { UserPreference: { Name: name, Value: value } };\r\n\r\n return SaveUserPreferenceAction.save(payload);\r\n\r\n },\r\n\r\n saveUserInfo: function (user, scope) {\r\n console.log(\"Inside services, DatasetService.saveUserInfo...\");\r\n var payload = { User: user };\r\n\r\n return SaveUserInfo.save(payload);\r\n\r\n },\r\n\r\n getMyLastUpdatedDatasets: function () {\r\n return GetMyLastUpdatedDatasets.query();\r\n },\r\n\r\n //the_scope needs the project set; toggles the favorite status.\r\n toggleFavoriteProject: function(the_scope, root_scope){\r\n\r\n if (!the_scope || !the_scope.project)\r\n return;\r\n\r\n the_scope.isFavorite = !the_scope.isFavorite; //make the visible change instantly.\r\n\r\n root_scope.Profile.toggleProjectFavorite(the_scope.project);\r\n\r\n var save_pref = this.saveUserPreference(\"Projects\", root_scope.Profile.favoriteProjects.join());\r\n\r\n save_pref.$promise.then(function () {\r\n //success = already done.\r\n }, function (data) {\r\n //if something goes wrong, roll it back.\r\n the_scope.isFavorite = !the_scope.isFavorite;\r\n root_scope.Profile.toggleProjectFavorite(the_scope.project);\r\n });\r\n },\r\n\r\n //the_scope needs the dataset set; toggles the favorite status.\r\n toggleFavoriteDataset: function(the_scope, root_scope){\r\n\r\n the_scope.isFavorite = !the_scope.isFavorite; //make the visible change instantly.\r\n\r\n root_scope.Profile.toggleDatasetFavorite(the_scope.dataset);\r\n\r\n var save_pref = this.saveUserPreference(\"Datasets\", root_scope.Profile.favoriteDatasets.join());\r\n\r\n save_pref.$promise.then(function () {\r\n //success = already done.\r\n }, function (data) {\r\n //if something goes wrong, roll it back.\r\n the_scope.isFavorite = !the_scope.isFavorite;\r\n root_scope.Profile.toggleDatasetFavorite(the_scope.dataset);\r\n });\r\n },\r\n\r\n searchProjects: function(search_term) {\r\n return SearchProjects.save({Search: search_term});\r\n },\r\n\r\n searchDatasets: function(search_term) {\r\n return SearchDatasets.save({Search: search_term});\r\n },\r\n\r\n searchFiles: function(search_term) {\r\n return SearchFiles.save({Search: search_term});\r\n },\r\n };\r\n\r\n return service;\r\n }\r\n];\r\n\r\nexport default user_service;\r\n\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {\r\n EHS_CODES_DATASETID,\r\n EHS_DATASETID,\r\n EHS_EVENTS_DATASETID, EHS_PROJECTID,\r\n METADATA_PROPERTY_PERMIT_FILETYPES, PERMITCONTACTS_DATASETID\r\n} from \"../../../../config\";\r\nimport {\r\n BooleanCellRenderer,\r\n BooleanEditor,\r\n formatUsPhone, getById,\r\n getFilesArrayAsList,\r\n orderByAlpha, valueFormatterArrayToList\r\n} from \"../../../../core/common/common-functions\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n// import 'jquery'\r\n// import 'jqueryui'\r\ndeclare const $: any;\r\n\r\nvar list_violations = ['$scope', '$route', '$routeParams', '$uibModal', '$location', '$window', '$rootScope', 'PermitService', 'ViolationService', 'GridService', 'DatasetService', 'CommonService',\r\n function ($scope, $route, $routeParams, $uibModal, $location, $window, $rootScope, PermitService, ViolationService, GridService, DatasetService, CommonService) {\r\n\r\n $rootScope.inModule = \"permits\";\r\n\r\n $scope.currentPage = \"All\";\r\n $scope.row = {};\r\n\r\n $scope.ViolationParcels = [];\r\n $scope.ViolationEvents = [];\r\n $scope.ViolationCodes = [];\r\n $scope.ViolationFiles = [];\r\n $scope.ParcelHistory = [];\r\n $scope.ViolationFileTypes = [];\r\n $scope.PermitFileTypes = [];\r\n\r\n $scope.PermitFileTypes = CommonService.getMetadataProperty(METADATA_PROPERTY_PERMIT_FILETYPES);\r\n\r\n $scope.PermitFileTypes.$promise.then(function () {\r\n $scope.PermitFileTypes = angular.fromJson($scope.PermitFileTypes.PossibleValues);\r\n });\r\n\r\n $scope.dataset = DatasetService.getDataset(EHS_DATASETID);\r\n $scope.eventsdataset = DatasetService.getDataset(EHS_EVENTS_DATASETID);\r\n $scope.codesdataset = DatasetService.getDataset(EHS_CODES_DATASETID);\r\n\r\n $scope.contactsdataset = DatasetService.getDataset(PERMITCONTACTS_DATASETID);\r\n\r\n $scope.contactsdataset.$promise.then(function () {\r\n $scope.ContactsDatasetColumnDefs = GridService.getAgColumnDefs($scope.contactsdataset);\r\n });\r\n\r\n $scope.dataset.$promise.then(function () {\r\n\r\n //first, check permissions - we expect a Permission group to be set on dataset.Config.Permissions\r\n $scope.dataset.Config = angular.fromJson($scope.dataset.Config);\r\n if (!$scope.dataset.Config.Permissions || !$scope.dataset.Config.Permissions.View || !$scope.dataset.Config.Permissions.Edit) {\r\n alert(\"Error loading dataset: administrator needs to configure permission: Admin->Dataset->Config->Permissions\");\r\n console.error(\"Configuration error - the administrator needs to configure the permissions for this dataset on Admin->Dataset->Config->Permissions\");\r\n $scope.permits = [];\r\n throw (\"Failed to load\");\r\n }\r\n\r\n if (!$scope.Profile.hasRole($scope.dataset.Config.Permissions.View) && !$scope.Profile.hasRole($scope.dataset.Config.Permissions.Edit)) {\r\n angular.rootScope.go(\"/unauthorized\");\r\n }\r\n\r\n $scope.permitsCanEdit = $scope.Profile.hasRole($scope.dataset.Config.Permissions.Edit);\r\n\r\n $scope.AllColumnDefs = GridService.getAgColumnDefs($scope.dataset);\r\n $scope.ehsGrid.columnDefs = $scope.AllColumnDefs.HeaderFields;\r\n\r\n //setup some custom \"tweaks\" to the column definition defaults TODO: might be a better way\r\n $scope.ehsGrid.columnDefs.forEach(function (coldef) {\r\n if (coldef.DbColumnName == 'FileNumber') {\r\n //coldef.Disabled = true;\r\n coldef.filter = 'agTextColumnFilter'; //change from the default (checkboxes) to a \"contains\" filter\r\n }\r\n\r\n if (coldef.DbColumnName == 'Name' || coldef.DbColumnName == 'SiteAddress') {\r\n coldef.filter = 'agTextColumnFilter';\r\n }\r\n\r\n if (coldef.DbColumnName == 'NotifyRoutes') {\r\n coldef.valueFormatter = function (params) {\r\n return valueFormatterArrayToList(params.node.data.NotifyRoutes);\r\n }\r\n }\r\n\r\n if (coldef.DbColumnName == 'CreateDate')\r\n coldef.sort = 'desc';\r\n });\r\n\r\n //activate the grid with the violations data\r\n $scope.ehsGridDiv = document.querySelector('#active-ehs-grid');\r\n new Grid($scope.ehsGridDiv, $scope.ehsGrid);\r\n\r\n $scope.violations = ViolationService.getAllViolations();\r\n\r\n $scope.violations.$promise.then(function () {\r\n // console.log(\" -- violations back -- \");\r\n $scope.ehsGrid.api.setRowData($scope.violations);\r\n\r\n //if there is an incoming Id, select it.\r\n if ($routeParams.Id) {\r\n $scope.ehsGrid.api.forEachNode(function (node) {\r\n if (node.data.Id == $routeParams.Id) {\r\n node.setSelected(true);\r\n $scope.ehsGrid.api.ensureIndexVisible(node.rowIndex, 'top');\r\n }\r\n });\r\n }\r\n\r\n /*\r\n //if there is an incoming filter, select it\r\n if($routeParams.filter) {\r\n $scope['show'+$routeParams.filter]();\r\n }\r\n */\r\n\r\n GridService.autosizeColumns($scope.ehsGrid);\r\n\r\n });\r\n\r\n //now do some caching from permits persons and parcels...\r\n $scope.Persons = PermitService.getAllPersons();\r\n $scope.CadasterParcels = PermitService.getAllParcels();\r\n\r\n $scope.Persons.$promise.then(function () {\r\n $scope.Persons.forEach(function (person) {\r\n person.Label = $scope.getPersonLabel(person);\r\n });\r\n\r\n $scope.Persons = $scope.Persons.sort(orderByAlpha);\r\n });\r\n });\r\n\r\n $scope.eventsdataset.$promise.then(function () {\r\n console.log(\" -- events dataset back -- \");\r\n var EventColumnDefs = GridService.getAgColumnDefs($scope.eventsdataset);\r\n $scope.violationEventsGrid.columnDefs = angular.merge(\r\n //[{ colId: 'EditLinks', cellRenderer: EditEventLinksTemplate, width: 60, menuTabs: [], hide: true }],\r\n EventColumnDefs.HeaderFields\r\n );\r\n\r\n $scope.orderByIdDesc = function () {\r\n //Order by Id Desc\r\n };\r\n\r\n //activate the violation events grid\r\n if (!$scope.violationEventsGridDiv) {\r\n $scope.violationEventsGridDiv = document.querySelector('#violation-events-grid');\r\n new Grid($scope.violationEventsGridDiv, $scope.violationEventsGrid);\r\n }\r\n\r\n $scope.violationEventsGrid.api.setRowData($scope.ViolationEvents);\r\n\r\n });\r\n\r\n $scope.codesdataset.$promise.then(function () {\r\n console.log(\" -- codes dataset back -- \");\r\n var CodesColumnDefs = GridService.getAgColumnDefs($scope.codesdataset);\r\n $scope.violationCodesGrid.columnDefs = angular.merge(\r\n //[{ colId: 'EditLinks', cellRenderer: EditEventLinksTemplate, width: 60, menuTabs: [], hide: true }],\r\n CodesColumnDefs.HeaderFields\r\n );\r\n\r\n //activate the violation events grid\r\n if (!$scope.violationCodesGridDiv) {\r\n $scope.violationCodesGridDiv = document.querySelector('#violation-codes-grid');\r\n new Grid($scope.violationCodesGridDiv, $scope.violationCodesGrid);\r\n }\r\n\r\n $scope.violationCodesGrid.api.setRowData($scope.ViolationCodes);\r\n\r\n });\r\n\r\n $scope.clearFilters = function () {\r\n $scope.clearingFilters = true;\r\n $scope.ehsGrid.api.setFilterModel(null);\r\n $scope.currentPage = \"All\";\r\n }\r\n\r\n $scope.showComplaints = function () {\r\n $scope.ehsGrid.api.setFilterModel(null);\r\n $scope.ehsGrid.api.setFilterModel({\r\n 'FileType': {\r\n values: ['Complaint'],\r\n },\r\n })\r\n\r\n // var filter_component = $scope.ehsGrid.api.getFilterInstance('FileType');\r\n // filter_component.selectNothing();\r\n // filter_component.selectValue('Complaint');\r\n // $scope.ehsGrid.api.onFilterChanged();\r\n $scope.currentPage = \"Complaints\";\r\n };\r\n\r\n $scope.showViolations = function () {\r\n $scope.ehsGrid.api.setFilterModel(null);\r\n $scope.ehsGrid.api.setFilterModel({\r\n 'FileType': {\r\n values: ['Violation'],\r\n },\r\n })\r\n // var filter_component = $scope.ehsGrid.api.getFilterInstance('FileType');\r\n // filter_component.selectNothing();\r\n // filter_component.selectValue('Violation');\r\n // $scope.ehsGrid.api.onFilterChanged();\r\n $scope.currentPage = \"Violations\";\r\n };\r\n\r\n $scope.showResolved = function () {\r\n $scope.ehsGrid.api.setFilterModel(null);\r\n $scope.ehsGrid.api.setFilterModel({\r\n 'ViolationResolvedDate': {\r\n type: \"greaterThan\",\r\n dateFrom: \"2000-01-01\",\r\n dateTo: null\r\n },\r\n })\r\n\r\n // var filter_component = $scope.ehsGrid.api.getFilterInstance('ViolationResolvedDate');\r\n // console.dir(filter_component);\r\n // //filter_component.selectNothing();\r\n // filter_component.setModel({\r\n // type: \"greaterThan\",\r\n // dateFrom: \"2000-01-01\",\r\n // dateTo: null\r\n // });\r\n\r\n // //filter_component.selectValue('Violation');\r\n // $scope.ehsGrid.api.onFilterChanged();\r\n $scope.currentPage = \"Resolved\";\r\n };\r\n\r\n $scope.showAll = function () {\r\n $scope.clearFilters();\r\n $scope.ehsGrid.api.getFilterModel(null);\r\n $scope.currentPage = \"All\";\r\n //$scope.ShowPermitListGrid = true;\r\n };\r\n\r\n //requirement: can navigate permits by up and down arrow keys\r\n $scope.keyboardNavigation = function (params) {\r\n //console.log(\"my navigation\");\r\n var previousCell = params.previousCellDef;\r\n var suggestedNextCell = params.nextCellDef;\r\n\r\n var KEY_UP = 38;\r\n var KEY_DOWN = 40;\r\n var KEY_LEFT = 37;\r\n var KEY_RIGHT = 39;\r\n\r\n switch (params.key) {\r\n case KEY_DOWN:\r\n //console.log(\"down\");\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell + 1\r\n $scope.ehsGrid.api.forEachNode(function (node) {\r\n if (previousCell.rowIndex + 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_UP:\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell - 1\r\n $scope.ehsGrid.api.forEachNode(function (node) {\r\n if (previousCell.rowIndex - 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_LEFT:\r\n case KEY_RIGHT:\r\n return suggestedNextCell;\r\n default:\r\n throw \"this will never happen, navigation is always one of the 4 keys above\";\r\n }\r\n };\r\n\r\n\r\n $scope.ehsGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n rowSelection: 'single',\r\n hasFilters: false,\r\n onSelectionChanged: function (params) {\r\n\r\n if ($scope.row && $scope.row.dataChanged) {\r\n //warn if they're trying to change the selection when data is changed\r\n if ($scope.row.Id != $scope.ehsGrid.api.getSelectedRows()[0].Id) {\r\n alert(\"It looks like you've changed this record. Please click 'Save' or 'Cancel' before navigating to another record.\");\r\n $scope.ehsGrid.selectedNode.setSelected(true);\r\n }\r\n\r\n //in any case, don't change.\r\n return false;\r\n }\r\n\r\n $scope.ehsGrid.selectedItem = $scope.row = angular.copy($scope.ehsGrid.api.getSelectedRows()[0]);\r\n $scope.ehsGrid.selectedNode = $scope.ehsGrid.api.getSelectedNodes()[0];\r\n $('#tab-basicinfo').tab('show'); //default to the \"Permit Status\" tab when select a different permit\r\n\r\n if ($scope.row)\r\n $scope.selectViolation($scope.row.Id);\r\n\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n\r\n //console.log(\" -- selected item\")\r\n //console.dir($scope.row);\r\n },\r\n selectedItem: null,\r\n selectedNode: null,\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onFilterChanged: function (params) {\r\n if ($scope.clearingFilters == true)\r\n $scope.ehsGrid.hasFilters = $scope.clearingFilters = false;\r\n else\r\n $scope.ehsGrid.hasFilters = true;\r\n\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n navigateToNextCell: $scope.keyboardNavigation\r\n }\r\n\r\n\r\n $scope.violationParcelsGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n rowSelection: 'single',\r\n selectedItem: null,\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onSelectionChanged: function (params) {\r\n $scope.violationParcelsGrid.selectedItem = $scope.violationParcelsGrid.api.getSelectedRows()[0];\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n onRowDoubleClicked: function (params) {\r\n window.open(\"permits/map?ParcelId=\" + params.data.ParcelId, \"_blank\");\r\n },\r\n }\r\n\r\n $scope.violationHistoryGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n rowSelection: 'single',\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onRowDoubleClicked: function (params) {\r\n window.open(\"permits/ehsviolations?Id=\" + params.data.Id, \"_blank\");\r\n },\r\n }\r\n\r\n\r\n $scope.violationFilesGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n rowSelection: 'single',\r\n selectedItem: null,\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onSelectionChanged: function (params) {\r\n $scope.violationFilesGrid.selectedItem = $scope.violationFilesGrid.api.getSelectedRows()[0];\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n onRowDoubleClicked: function (params) {\r\n $scope.openEditFileTypeModal($scope.violationFilesGrid.selectedItem);\r\n },\r\n }\r\n\r\n $scope.parcelHistoryGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n rowSelection: 'single',\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onRowDoubleClicked: function (params) {\r\n // In the SQL command the backend (c#) uses to pull the records, it adds IsViolation (it is not in the database) to the data.\r\n // Check IsViolation, to determine which form should be opened, violations or permits.\r\n if (params.data.IsViolation === \"y\")\r\n window.open(\"permits/ehsviolations?Id=\" + params.data.Id, \"_blank\");\r\n else\r\n window.open(\"permits/list?Id=\" + params.data.Id, \"_blank\");\r\n },\r\n }\r\n\r\n $scope.violationContactsGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n rowSelection: 'single',\r\n selectedItem: null,\r\n components: {\r\n booleanEditor: BooleanEditor,\r\n booleanCellRenderer: BooleanCellRenderer,\r\n },\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onRowDoubleClicked: function (params) {\r\n $scope.openPersonModal($scope.violationContactsGrid.selectedItem.PersonId);\r\n },\r\n onSelectionChanged: function (params) {\r\n $scope.violationContactsGrid.selectedItem = $scope.violationContactsGrid.api.getSelectedRows()[0];\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n }\r\n\r\n $scope.violationEventsGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n selectedItem: null,\r\n rowSelection: 'single',\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onRowDoubleClicked: function (params) {\r\n $scope.openActivityModal($scope.violationEventsGrid.selectedItem);\r\n },\r\n onSelectionChanged: function (params) {\r\n $scope.violationEventsGrid.selectedItem = $scope.violationEventsGrid.api.getSelectedRows()[0];\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n getRowHeight: function (params) {\r\n var comment_length = (params.data.Comments === null) ? 1 : params.data.Comments.length;\r\n var comment_height = 25 * 1; // (Math.floor(comment_length / 45) + 1); //base our detail height on the comments field.\r\n var file_height = 25 * (getFilesArrayAsList(params.data.Files).length); //count up the number of file lines we will have.\r\n return (comment_height > file_height) ? comment_height : file_height;\r\n },\r\n }\r\n\r\n $scope.violationCodesGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n selectedItem: null,\r\n rowSelection: 'single',\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onRowDoubleClicked: function (params) {\r\n $scope.openCodeModal($scope.violationCodesGrid.selectedItem);\r\n },\r\n onSelectionChanged: function (params) {\r\n $scope.violationCodesGrid.selectedItem = $scope.violationCodesGrid.api.getSelectedRows()[0];\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n getRowHeight: function (params) {\r\n var comment_length = (params.data.Comments === null) ? 1 : params.data.Comments.length;\r\n var desc_length = (params.data.Description === null) ? 1 : params.data.Description.length;\r\n if (desc_length > comment_length)\r\n comment_length = desc_length;\r\n var comment_height = 25 * (Math.floor(comment_length / 45) + 1); //base our detail height on the comments field.\r\n var file_height = 25 * (getFilesArrayAsList(params.data.Files).length); //count up the number of file lines we will have.\r\n return (comment_height > file_height) ? comment_height : file_height;\r\n },\r\n }\r\n\r\n var UploadedByTemplate = function (param) {\r\n return moment(param.node.data.UploadDate).format('L') + \" by \" + param.node.data.User.Fullname;\r\n };\r\n\r\n var EditFileLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a');\r\n editBtn.href = '#';\r\n editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openFileModal(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n var EditContactLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a');\r\n editBtn.href = '#';\r\n editBtn.innerHTML = 'Modify';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openContactModal(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n var EditEventLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a');\r\n editBtn.href = '#';\r\n editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openActivityModal(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n\r\n var LinkTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var linkBtn = document.createElement('a');\r\n linkBtn.href = param.data.Link;\r\n linkBtn.innerHTML = param.data.Name;\r\n linkBtn.target = \"_blank\";\r\n div.appendChild(linkBtn);\r\n return div;\r\n };\r\n\r\n\r\n $scope.violationContactsGrid.columnDefs = [\r\n {colId: 'EditLinks', cellRenderer: EditContactLinksTemplate, width: 60, menuTabs: []},\r\n {\r\n headerName: \"Primary\", field: \"IsPrimary\", width: 110,\r\n cellRenderer: 'booleanCellRenderer',\r\n sort: 'desc'\r\n },\r\n {\r\n headerName: \"Contact\", width: 200,\r\n cellRenderer: function (params) {\r\n return $scope.getPersonLabel(params.node.data.Person);\r\n },\r\n filter: 'text',\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n {headerName: \"Type\", field: \"ContactType\", width: 160, menuTabs: ['filterMenuTab'], filter: true},\r\n {\r\n headerName: \"Info\", width: 120,\r\n cellRenderer: function (params) {\r\n if (params.node.data.Person.CellPhone)\r\n return formatUsPhone(params.node.data.Person.CellPhone);\r\n\r\n if (params.node.data.Person.WorkPhone)\r\n return formatUsPhone(params.node.data.Person.WorkPhone);\r\n\r\n if (params.node.data.Person.HomePhone)\r\n return formatUsPhone(params.node.data.Person.HomePhone);\r\n\r\n return (params.node.data.Person.Email) ? params.node.data.Person.Email : \"None provided\";\r\n\r\n },\r\n filter: 'text',\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n\r\n ];\r\n\r\n $scope.violationParcelsGrid.columnDefs = [\r\n {headerName: \"Parcel Id\", field: \"ParcelId\", width: 180, menuTabs: ['filterMenuTab'], filter: true},\r\n {headerName: \"PLSS\", field: \"PLSS\", width: 180, menuTabs: ['filterMenuTab'], filter: true},\r\n //{ headerName: \"Acres\", field: \"Object.Acres_Cty\", width: 150, menuTabs: ['filterMenuTab'] },\r\n {\r\n headerName: \"GIS\", width: 150, menuTabs: ['filterMenuTab'],\r\n valueGetter: function (param) {\r\n if (param.data.Object) { //then we have joined cadaster on objectid for this parcel\r\n return (param.data.Object.ParcelId == param.data.ParcelId) ? \"Cadaster\" : \"Updated\";\r\n } else {\r\n return \"Historical\"; // if no cadaster object\r\n }\r\n }\r\n },\r\n ];\r\n\r\n $scope.parcelHistoryGrid.columnDefs = [\r\n {headerName: \"File Number\", field: \"FileNumber\", width: 150, menuTabs: ['filterMenuTab'], filter: true},\r\n {headerName: \"Name\", field: \"Name\", width: 220, menuTabs: ['filterMenuTab'], filter: true},\r\n {headerName: \"Parcel Id\", field: \"MatchingParcelId\", width: 150, menuTabs: ['filterMenuTab'], filter: true},\r\n {headerName: \"Status\", field: \"ViolationStatus\", width: 150, menuTabs: ['filterMenuTab'], filter: true},\r\n ];\r\n\r\n $scope.violationFilesGrid.columnDefs = [\r\n {headerName: 'File', cellRenderer: LinkTemplate, width: 220, menuTabs: ['filterMenuTab'], filter: true},\r\n {field: 'Description', headerName: 'Caption', width: 200, menuTabs: ['filterMenuTab'], filter: true},\r\n {\r\n field: 'Uploaded',\r\n headerName: \"Uploaded\",\r\n width: 240,\r\n valueGetter: UploadedByTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n ];\r\n\r\n\r\n $scope.createNew = function () {\r\n\r\n if ($scope.row && $scope.row.dataChanged && !confirm(\"It looks like you've made edits on this page. Are you sure you want to clear everything and start a new record?\")) {\r\n return;\r\n }\r\n\r\n //$scope.PermitTypes = PermitService.getPermitTypes(); //load the permit types fresh -- these have our permitnumber to increment...\r\n\r\n $scope.row = $scope.ehsGrid.selectedItem = GridService.getNewRow($scope.ehsGrid.columnDefs);\r\n\r\n $scope.generateFileNumber();\r\n\r\n $scope.ViolationContacts = [];\r\n $scope.ViolationParcels = [];\r\n $scope.ViolationEvents = [];\r\n $scope.ViolationFiles = [];\r\n $scope.ParcelHistory = [];\r\n\r\n $scope.resetGrids();\r\n $('#tab-basicinfo').tab('show'); //default to the \"Permit Details\" tab when select a different permit\r\n\r\n };\r\n\r\n $scope.openContactModal = function (params) {\r\n\r\n //if editing, we'll have incoming params\r\n if (params) {\r\n $scope.contact_modal = params;\r\n $scope.contact_modal.Person.Label = $scope.getPersonLabel($scope.contact_modal.Person);\r\n } else {\r\n $scope.contact_modal = {PermitId: $scope.row.Id, EHSViolationId: $scope.row.Id};\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/list/templates/add-contact-modal.html',\r\n controller: 'ContactModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_contact) {\r\n\r\n $scope.ViolationContacts = ViolationService.getViolationContacts(saved_contact.EHSViolationId);\r\n $scope.ViolationContacts.$promise.then(function () {\r\n $scope.violationContactsGrid.api.setRowData($scope.ViolationContacts);\r\n\r\n $scope.ViolationContacts.forEach(function (contact) {\r\n //ask if they want to copy in the contact info if it is currently blank.\r\n if (contact.PersonId == saved_contact.PersonId) {\r\n if (saved_contact.IsPrimary && !$scope.row.SiteAddress && confirm(\"Do you want to copy the contact's address into this record?\")) {\r\n $scope.row.SiteAddress = contact.Person.PhysicalAddress1;\r\n $scope.row.SiteCity = contact.Person.PhysicalCity;\r\n $scope.row.SiteState = contact.Person.PhysicalState;\r\n $scope.row.SiteZip = contact.Person.PhysicalZip;\r\n $scope.row.dataChanged = true;\r\n }\r\n }\r\n })\r\n });\r\n\r\n });\r\n }\r\n\r\n $scope.openParcelModal = function (params) {\r\n\r\n if ($scope.row.dataChanged) {\r\n alert(\"Please save or cancel your changes before adding a new parcel.\");\r\n return;\r\n }\r\n\r\n //if editing, we'll have incoming params\r\n if (params) {\r\n $scope.parcel_modal = params;\r\n } else {\r\n $scope.parcel_modal = {};\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/list/templates/add-parcel-modal.html',\r\n controller: 'ParcelModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_parcel) {\r\n $scope.ViolationParcels = ViolationService.getViolationParcels(saved_parcel.EHSViolationId);\r\n $scope.ViolationParcels.$promise.then(function () {\r\n $scope.violationParcelsGrid.api.setRowData($scope.ViolationParcels);\r\n //$scope.refreshZones();\r\n $scope.refreshParcelHistory();\r\n });\r\n });\r\n }\r\n\r\n $scope.openFileModal = function (params) {\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/ehs-violations/templates/modal-new-file.html',\r\n controller: 'ViolationFileModalController',\r\n backdrop: 'static',\r\n keyboard: false,\r\n scope: $scope,\r\n }).result.then(function (saved_files) {\r\n if (Array.isArray(saved_files)) {\r\n\r\n saved_files.forEach(function (new_file) {\r\n $scope.ViolationFiles.push(new_file);\r\n });\r\n\r\n $scope.violationFilesGrid.api.setRowData($scope.ViolationFiles);\r\n } else\r\n console.warn(\"looks like no files were saved?\");\r\n });\r\n }\r\n\r\n //open a modal for editing only the filetype\r\n $scope.openEditFileTypeModal = function (params) {\r\n $scope.file_modal = params;\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/ehs-violations/templates/modal-edit-file.html',\r\n controller: 'EditViolationFileTypeModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_file) {\r\n $scope.ViolationFiles.forEach(function (file, index) {\r\n if (file.Id == saved_file.Id) {\r\n file.Description = saved_file.Description;\r\n $scope.violationFilesGrid.api.setRowData($scope.ViolationFiles);\r\n }\r\n });\r\n });\r\n }\r\n\r\n $scope.deleteActivity = function () {\r\n if (confirm(\"Are you sure you want to delete the selected activity?\")) {\r\n var deleted = ViolationService.removeViolationActivity($scope.violationEventsGrid.selectedItem.Id);\r\n deleted.$promise.then(function () {\r\n $scope.ViolationEvents.forEach(function (event, index) {\r\n if (event.Id == $scope.violationEventsGrid.selectedItem.Id) {\r\n $scope.ViolationEvents.splice(index, 1);\r\n $scope.violationEventsGrid.api.setRowData($scope.ViolationEvents);\r\n $scope.violationEventsGrid.selectedItem = null;\r\n }\r\n })\r\n })\r\n }\r\n }\r\n\r\n $scope.openActivityModal = function (params, intent) {\r\n\r\n delete $scope.activity_modal;\r\n $scope.intent = intent;\r\n\r\n //if editing, we'll have incoming params\r\n if (params) {\r\n $scope.activity_modal = params;\r\n } else {\r\n $scope.activity_modal = {EHSViolationId: $scope.row.Id};\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/list/templates/add-violation-activity-modal.html',\r\n controller: 'ViolationActivityModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_activity) {\r\n $scope.selectViolation($scope.row.Id);\r\n // $scope.PermitEvents = PermitService.getPermitEvents($scope.row.Id);\r\n // $scope.PermitEvents.$promise.then(function () {\r\n // $scope.permitEventsGrid.api.setRowData($scope.PermitEvents);\r\n // });\r\n });\r\n }\r\n\r\n $scope.openCodeModal = function (params, intent) {\r\n\r\n delete $scope.code_modal;\r\n $scope.intent = intent;\r\n\r\n //if editing, we'll have incoming params\r\n if (params) {\r\n $scope.code_modal = params;\r\n } else {\r\n $scope.code_modal = {EHSViolationId: $scope.row.Id};\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/list/templates/add-violation-code-modal.html',\r\n controller: 'ViolationCodesModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_activity) {\r\n $scope.selectViolation($scope.row.Id);\r\n // $scope.PermitEvents = PermitService.getPermitEvents($scope.row.Id);\r\n // $scope.PermitEvents.$promise.then(function () {\r\n // $scope.permitEventsGrid.api.setRowData($scope.PermitEvents);\r\n // });\r\n });\r\n }\r\n\r\n\r\n $scope.removeSelectedFile = function () {\r\n\r\n if (!confirm(\"Are you sure you want to delete this file?\")) {\r\n return;\r\n }\r\n\r\n var file_to_remove = $scope.violationFilesGrid.selectedItem;\r\n var deleted = ViolationService.deleteViolationFile(EHS_PROJECTID, $scope.row.Id, 0, file_to_remove);\r\n\r\n deleted.$promise.then(function () {\r\n $scope.ViolationFiles.forEach(function (file, index) {\r\n if (file.Id == file_to_remove.Id) {\r\n $scope.ViolationFiles.splice(index, 1);\r\n $scope.violationFilesGrid.api.setRowData($scope.ViolationFiles);\r\n }\r\n });\r\n });\r\n\r\n }\r\n\r\n //returns a composed label for a person\r\n $scope.getPersonLabel = function (person) {\r\n var label = (person.Organization) ? person.Organization : person.FullName;\r\n if (label == \"\")\r\n person.FirstName + \" \" + person.LastName;\r\n\r\n return label;\r\n }\r\n\r\n $scope.onHeaderEditingStopped = function (field) { //fired onChange for header fields (common/templates/form-fields)\r\n\r\n //console.log(\"onHeaderEditingStopped: \" + field.DbColumnName);\r\n\r\n //build event to send for validation\r\n var event = {\r\n colDef: field,\r\n node: {data: $scope.row},\r\n value: $scope.row[field.DbColumnName],\r\n type: 'onHeaderEditingStopped',\r\n scope: $scope\r\n };\r\n\r\n if (GridService.validateCell(event)) {\r\n GridService.fireRule(\"OnChange\", event); //only fires when valid change is made\r\n }\r\n\r\n //update our collection of header errors if any were returned\r\n $scope.headerFieldErrors = [];\r\n if ($scope.row.rowHasError) {\r\n $scope.row.validationErrors.forEach(function (error) {\r\n if (Array.isArray($scope.headerFieldErrors[error.field.DbColumnName])) {\r\n $scope.headerFieldErrors[error.field.DbColumnName].push(error.message);\r\n } else {\r\n $scope.headerFieldErrors[error.field.DbColumnName] = [error.message];\r\n }\r\n });\r\n }\r\n\r\n if ($scope.row.hasOwnProperty(field.DbColumnName)) { //make sure it is a header field from the permit\r\n\r\n //did the data actually change?\r\n //the selected original permit\r\n var selected = $scope.ehsGrid.api.getSelectedRows()[0];\r\n\r\n //if we've lost our original selection, find it in the permits\r\n if (!selected || selected.Id != $scope.row.Id) {\r\n $scope.violations.forEach(function (itr_permit) {\r\n if (itr_permit.Id == $scope.row.Id)\r\n selected = itr_permit;\r\n });\r\n }\r\n\r\n if (selected && selected[field.DbColumnName] != $scope.row[field.DbColumnName]) {\r\n $scope.row.dataChanged = true;\r\n }\r\n\r\n if (!selected && !$scope.row.Id) //then it is a new record\r\n $scope.row.dataChanged = true;\r\n\r\n }\r\n\r\n $rootScope.$emit('headerEditingStopped', field); //offer child scopes a chance to do something, i.e. add activity modal...\r\n\r\n //if this is a new permit and they changed the Permit Type, then update the permit number\r\n //console.log(field.DbColumnName);\r\n //console.log($scope.row.Id);\r\n\r\n };\r\n\r\n $scope.generateFileNumber = function () {\r\n $scope.row.FileNumber = \"EHV-\" + moment().format('YY') + \"-XXX\";\r\n };\r\n\r\n $scope.cancel = function () {\r\n\r\n $scope.ehsGrid.selectedItem = $scope.row = null;\r\n $scope.ehsGrid.api.deselectAll();\r\n\r\n };\r\n\r\n $scope.resetGrids = function () {\r\n\r\n //activate the violation contacts grid\r\n if (!$scope.violationContactsGridDiv) {\r\n $scope.violationContactsGridDiv = document.querySelector('#violation-contacts-grid');\r\n new Grid($scope.violationContactsGridDiv, $scope.violationContactsGrid);\r\n }\r\n\r\n //activate the violation parcels grid\r\n if (!$scope.violationParcelsGridDiv) {\r\n $scope.violationParcelsGridDiv = document.querySelector('#violation-parcels-grid');\r\n new Grid($scope.violationParcelsGridDiv, $scope.violationParcelsGrid);\r\n }\r\n\r\n //activate the parcel history grid\r\n if (!$scope.parcelHistoryGridDiv) {\r\n $scope.parcelHistoryGridDiv = document.querySelector('#parcel-history-grid');\r\n new Grid($scope.parcelHistoryGridDiv, $scope.parcelHistoryGrid);\r\n }\r\n\r\n //activate the violation files grid\r\n if (!$scope.violationFilesGridDiv) {\r\n $scope.violationFilesGridDiv = document.querySelector('#violation-files-grid');\r\n new Grid($scope.violationFilesGridDiv, $scope.violationFilesGrid);\r\n }\r\n $scope.violationContactsGrid.api.setRowData($scope.ViolationContacts);\r\n $scope.violationParcelsGrid.api.setRowData($scope.ViolationParcels);\r\n $scope.violationFilesGrid.api.setRowData($scope.ViolationFiles);\r\n $scope.parcelHistoryGrid.api.setRowData($scope.ParcelHistory);\r\n\r\n if ($scope.violationEventsGrid && $scope.violationEventsGrid.api)\r\n $scope.violationEventsGrid.api.setRowData($scope.ViolationEvents);\r\n\r\n if ($scope.permitsCanEdit) {\r\n $scope.violationContactsGrid.columnApi.setColumnVisible(\"EditLinks\", true);\r\n $scope.violationParcelsGrid.columnApi.setColumnVisible(\"EditLinks\", true);\r\n $scope.violationFilesGrid.columnApi.setColumnVisible(\"EditLinks\", true);\r\n }\r\n\r\n };\r\n\r\n $scope.save = function () {\r\n\r\n var to_save = angular.copy($scope.row);\r\n $scope.row.isSaving = true;\r\n to_save.NotifyRoutes = angular.toJson(to_save.NotifyRoutes);\r\n to_save.ViolationOffenses = angular.toJson(to_save.ViolationOffenses);\r\n //to_save.Zoning = angular.toJson(to_save.Zoning);\r\n // console.dir(to_save);\r\n\r\n var saved_violation = ViolationService.saveViolation(to_save);\r\n\r\n saved_violation.$promise.then(function () {\r\n $scope.row.isSaving = false;\r\n // console.log(\"permit saved: \");\r\n // console.dir(saved_permit);\r\n\r\n //refresh\r\n if (!$scope.row.Id) {\r\n $scope.violations.push(saved_violation);\r\n $scope.ehsGrid.api.setRowData($scope.violations);\r\n $scope.row = saved_violation;\r\n $scope.row.dataChanged = false;\r\n $scope.showAll();\r\n } else {\r\n\r\n $scope.afterSaveEvents($scope.row, angular.copy($scope.ehsGrid.selectedNode.data));\r\n\r\n $scope.violations.forEach(function (existing_violation) {\r\n if (existing_violation.Id == $scope.row.Id) {\r\n angular.extend(existing_violation, saved_violation);\r\n }\r\n });\r\n\r\n $scope.selectViolation($scope.row.Id);\r\n\r\n $scope.ehsGrid.api.redrawRows();\r\n //$scope.permitsGrid.api.setRowData($scope.permits);\r\n\r\n $scope.row.dataChanged = false;\r\n\r\n }\r\n\r\n //select the permit we just saved/updated\r\n $scope.ehsGrid.api.forEachNode(function (node) {\r\n if (node.data.FileNumber == $scope.row.FileNumber) {\r\n node.setSelected(true);\r\n $scope.ehsGrid.api.ensureIndexVisible(node.childIndex, 'bottom'); //scroll to the selected row\r\n }\r\n })\r\n\r\n }, function (data) {\r\n $scope.row.isSaving = false;\r\n $scope.row.hasError = true;\r\n $scope.row.errorMessage = \"There was a problem saving.\"\r\n });\r\n };\r\n\r\n //in certain state changes, we want to add an activity to the events\r\n $scope.afterSaveEvents = function (saved_record, existing_record) {\r\n\r\n if (!saved_record.Id)\r\n return;\r\n\r\n //make the existing record arrays useable\r\n existing_record.NotifyRoutes = (existing_record.NotifyRoutes) ? angular.fromJson(existing_record.NotifyRoutes) : [];\r\n existing_record.ViolationOffenses = (existing_record.ViolationOffenses) ? angular.fromJson(existing_record.ViolationOffenses) : [];\r\n\r\n if (!Array.isArray(existing_record.NotifyRoutes))\r\n existing_record.NotifyRoutes = [];\r\n\r\n if (!Array.isArray(existing_record.ViolationOffenses))\r\n existing_record.ViolationOffenses = [];\r\n\r\n /*\r\n Save an activity in these cases:\r\n\r\n FileType (Complaint -> Violation)\r\n ViolationOffenses (Adding or removing)\r\n ViolationResolvedDate (when it is set)\r\n ViolationStatus (change)\r\n Notifications (sent)\r\n */\r\n\r\n //console.dir(saved_record);\r\n //console.dir(existing_record);\r\n\r\n\r\n let changes_to_send = false;\r\n\r\n let comment_list = [];\r\n\r\n var new_event = {\r\n EHSViolationId: saved_record.Id,\r\n ByUser: $scope.Profile.Id,\r\n EventDate: moment().format('L'),\r\n EventType: \"Record\",\r\n //Comments: \"\" //Update Status from \" + \"\" + \" to \" + saved_record.PermitStatus\r\n };\r\n\r\n //if saving a brand-new record, existing_record will be null and if we saved then the BE sent notifications.\r\n if (!existing_record) {\r\n\r\n comment_list.push(\"Notifications sent to \" + saved_record.Notifications.join(\"+\"));\r\n changes_to_send = true;\r\n\r\n } else {\r\n\r\n //filetype changed?\r\n if (saved_record.FileType !== existing_record.FileType) {\r\n\r\n comment_list.push(\"File type changed from \" + existing_record.FileType + \" to \" + saved_record.FileType);\r\n\r\n changes_to_send = true;\r\n }\r\n\r\n //violationoffenses changed?\r\n if (saved_record.ViolationOffenses.length != existing_record.ViolationOffenses.length) {\r\n\r\n comment_list.push(\"Violation offenses changed from '\" + existing_record.ViolationOffenses.join(\"+\") + \"' to '\" + saved_record.ViolationOffenses.join(\"+\") + \"'\");\r\n\r\n changes_to_send = true;\r\n }\r\n\r\n //violationresolved date set?\r\n if (existing_record.ViolationResolvedDate != saved_record.ViolationResolvedDate) {\r\n\r\n comment_list.push(\"Violation resolved set to \" + moment(saved_record.ViolationResolvedDate).format('L'));\r\n\r\n changes_to_send = true;\r\n }\r\n\r\n if (saved_record.ViolationStatus != existing_record.ViolationStatus) {\r\n\r\n comment_list.push(\"Violation status changed from \" + existing_record.ViolationStatus + \" to \" + saved_record.ViolationStatus);\r\n\r\n changes_to_send = true;\r\n }\r\n\r\n }\r\n\r\n\r\n if (!changes_to_send)\r\n return;\r\n\r\n // @ts-ignore\r\n new_event.Comments = comment_list.join(\", \");\r\n\r\n console.log(\"Saving a violation state change event: \");\r\n console.dir(new_event);\r\n\r\n var save_event = ViolationService.saveViolationEvent(new_event);\r\n\r\n save_event.$promise.then(function () {\r\n //refresh the activities now that we've saved a new one.\r\n $scope.ViolationEvents = ViolationService.getViolationEvents($scope.row.Id);\r\n $scope.ViolationEvents.$promise.then(function () {\r\n $scope.violationEventsGrid.api.setRowData($scope.ViolationEvents);\r\n });\r\n console.log('success!');\r\n }, function (data) {\r\n console.log(\"An error occured! \");\r\n console.dir(data);\r\n });\r\n\r\n\r\n }\r\n\r\n $scope.resetGrids();\r\n\r\n $scope.refreshParcelHistory = function () {\r\n $scope.ParcelHistory = [];\r\n $scope.parcelHistoryGrid.api.setRowData($scope.ParcelHistory);\r\n\r\n //iterate parcels to find any related violations\r\n $scope.ViolationParcels.forEach(function (parcel) {\r\n var related_violations = ViolationService.getViolationsByRelatedParcels(parcel.ParcelId);\r\n related_violations.$promise.then(function () {\r\n related_violations.forEach(function (violation) {\r\n if (violation.Id !== $scope.row.Id) {\r\n violation.MatchingParcelId = parcel.ParcelId;\r\n $scope.ParcelHistory.push(violation);\r\n }\r\n });\r\n $scope.parcelHistoryGrid.api.setRowData($scope.ParcelHistory);\r\n });\r\n });\r\n };\r\n\r\n $scope.removeSelectedParcel = function () {\r\n if ($scope.violationParcelsGrid.selectedItem && confirm(\"Are you sure you want to remove this Parcel?\")) {\r\n var removed = ViolationService.removeViolationParcel($scope.violationParcelsGrid.selectedItem);\r\n removed.$promise.then(function () {\r\n $scope.ViolationParcels = ViolationService.getViolationParcels($scope.row.Id);\r\n $scope.ViolationParcels.$promise.then(function () {\r\n $scope.violationParcelsGrid.api.setRowData($scope.ViolationParcels);\r\n $scope.refreshParcelHistory();\r\n });\r\n\r\n });\r\n }\r\n };\r\n\r\n\r\n $scope.removeSelectedContact = function () {\r\n if ($scope.violationContactsGrid.selectedItem && confirm(\"Are you sure you want to remove this Contact?\")) {\r\n var removed = ViolationService.removeViolationContact($scope.violationContactsGrid.selectedItem);\r\n removed.$promise.then(function () {\r\n $scope.ViolationContacts.forEach(function (contact, index) {\r\n if (contact.PersonId == $scope.violationContactsGrid.selectedItem.PersonId) {\r\n $scope.ViolationContacts.splice(index, 1);\r\n $scope.violationContactsGrid.api.setRowData($scope.ViolationContacts);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n\r\n $scope.selectViolation = function (Id) {\r\n $scope.ViolationContacts = ViolationService.getViolationContacts(Id);\r\n $scope.ViolationParcels = ViolationService.getViolationParcels(Id);\r\n $scope.ViolationEvents = ViolationService.getViolationEvents(Id);\r\n $scope.ViolationCodes = ViolationService.getViolationCodes(Id);\r\n $scope.ViolationFiles = ViolationService.getViolationFiles(Id);\r\n $scope.row.NotifyRoutes = ($scope.row.NotifyRoutes) ? angular.fromJson($scope.row.NotifyRoutes) : [];\r\n $scope.row.ViolationOffenses = ($scope.row.ViolationOffenses) ? angular.fromJson($scope.row.ViolationOffenses) : [];\r\n\r\n if (!Array.isArray($scope.row.NotifyRoutes))\r\n $scope.row.NotifyRoutes = [];\r\n\r\n if (!Array.isArray($scope.row.ViolationOffenses))\r\n $scope.row.ViolationOffenses = [];\r\n\r\n $scope.ViolationContacts.$promise.then(function () {\r\n $scope.violationContactsGrid.api.setRowData($scope.ViolationContacts);\r\n $scope.violationContactsGrid.selectedItem = null;\r\n });\r\n\r\n $scope.ViolationParcels.$promise.then(function () {\r\n $scope.violationParcelsGrid.api.setRowData($scope.ViolationParcels);\r\n $scope.violationParcelsGrid.selectedItem = null;\r\n $scope.refreshParcelHistory();\r\n });\r\n\r\n $scope.ViolationFiles.$promise.then(function () {\r\n $scope.violationFilesGrid.api.setRowData($scope.ViolationFiles);\r\n $scope.violationFilesGrid.selectedItem = null;\r\n });\r\n\r\n $scope.ViolationEvents.$promise.then(function () {\r\n $scope.violationEventsGrid.api.setRowData($scope.ViolationEvents);\r\n $scope.violationEventsGrid.selectedItem = null;\r\n });\r\n\r\n $scope.ViolationCodes.$promise.then(function () {\r\n $scope.violationCodesGrid.api.setRowData($scope.ViolationCodes);\r\n $scope.violationCodesGrid.selectedItem = null;\r\n });\r\n\r\n //stretch the textareas to the height of the content\r\n $('textarea').each(function () {\r\n this.setAttribute('style', 'min-height: 130px height:auto; height:' + (this.scrollHeight) + 'px;overflow-y:hidden;');\r\n }).on('input', function () {\r\n this.style.height = 'auto';\r\n this.style.minHeight = '130px';\r\n this.style.height = (this.scrollHeight) + 'px';\r\n // @ts-ignore value is present on HTMLInputElement (which this is in actuality) but typescript is typesafe and returns the HTMLElement which does not have a value property\r\n this.value = this.value.replace(/\\n/g, \"\"); //do not allow hard-returns\r\n });\r\n\r\n };\r\n\r\n $scope.sendNotifications = function () {\r\n if ($scope.row.dataChanged) {\r\n if (!confirm(\"The record will be saved before sending notifications. Proceed?\"))\r\n return;\r\n $scope.save();\r\n }\r\n\r\n\r\n let notification = {\r\n EHSViolationId: $scope.row.Id,\r\n NotifyRoutes: $scope.row.NotifyRoutes\r\n };\r\n\r\n\r\n console.dir(notification)\r\n\r\n\r\n let sending = ViolationService.sendNotifications(notification);\r\n\r\n sending.$promise.then(function () {\r\n alert(\"Notifications sent.\");\r\n }, function (data) {\r\n alert(\"There was a problem sending notifications.\");\r\n })\r\n\r\n\r\n }\r\n\r\n $scope.openParcelInMap = function(){\r\n $rootScope.parcelMapFromList = $scope.permitParcelsGrid.selectedItem.ParcelId;\r\n $location.url(\"permits/map\");\r\n }\r\n\r\n $scope.openPersonModal = function (person_id) {\r\n\r\n $scope.person_modal = getById($scope.Persons, person_id);\r\n console.dir($scope.person_modal.Id);\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/contacts/templates/add-person-modal.html',\r\n controller: 'AddPersonModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_person) {\r\n $scope.Persons = PermitService.getAllPersons();\r\n });\r\n }\r\n\r\n\r\n }];\r\n\r\nexport default list_violations;\r\n","// defines the project module and all project controllers.\r\nimport * as angular from 'angular';\r\nimport modal_permission_change_owner from \"./components/project-detail/modal-permission-change-owner\";\r\nimport modal_new_link from \"./components/project-detail/modal-new-link\";\r\nimport modal_edit_file from \"./components/project-detail/modal-edit-file\";\r\nimport modal_new_file from \"./components/project-detail/modal-new-file\";\r\nimport project_locations from \"./components/project-detail/project-locations\";\r\nimport modal_edit_lookup_item from \"./components/project-detail/modal-edit-lookup-item\";\r\nimport modal_edit_location from \"./components/project-detail/modal-edit-location\";\r\nimport modal_edit_project from \"./components/project-detail/modal-edit-project\";\r\nimport modal_choose_map from \"./components/project-detail/modal-choose-map\";\r\nimport project_files from \"./components/project-detail/project-files\";\r\nimport lookup_instruments from \"./components/project-detail/project-lookup-instruments\";\r\nimport module_add_accuracy_check from \"./components/project-detail/modal-add-accuracy-check\";\r\nimport project_landing from \"./components/project-detail/project-landing\";\r\nimport project_data from \"./components/project-detail/project-data\";\r\nimport project_list from \"./components/project-list/project-list\";\r\nimport modal_choose_summary_images from \"./components/project-detail/modal-choose-summary-images\";\r\nimport modal_projectconfig_choose_lists from \"./components/project-detail/modal-choose-project-lists\";\r\nimport project_permissions from \"./components/project-detail/project-permissions\";\r\nimport project_lookups from \"./components/project-detail/project-lookups\";\r\nimport {serviceUrl} from \"../../config\";\r\nimport subproject_service from \"./services/subproject-service\";\r\nimport project_service from \"./services/project-service\";\r\n//load the components for this module\r\n// require([\r\n//'core/projects/components/project-detail/project-detail',\r\n// 'core/projects/components/project-detail/project-landing',\r\n// 'core/projects/components/project-detail/modal-new-file',\r\n// 'core/projects/components/project-detail/modal-new-link',\r\n// 'core/projects/components/project-detail/modal-edit-file',\r\n// 'core/projects/components/project-detail/modal-edit-project',\r\n// 'core/projects/components/project-detail/modal-choose-summary-images',\r\n// 'core/projects/components/project-detail/modal-choose-map',\r\n// 'core/projects/components/project-detail/modal-add-accuracy-check',\r\n// 'core/projects/components/project-detail/modal-edit-location',\r\n// 'core/projects/components/project-detail/modal-edit-lookup-item',\r\n//\r\n// //tabs for the project detail page\r\n// 'core/projects/components/project-detail/project-lookup-instruments',\r\n// 'core/projects/components/project-detail/project-files',\r\n// 'core/projects/components/project-detail/project-data',\r\n// 'core/projects/components/project-detail/project-permissions',\r\n// 'core/projects/components/project-detail/modal-permission-change-owner',\r\n// 'core/projects/components/project-detail/project-lookups',\r\n// 'core/projects/components/project-detail/project-locations',\r\n// 'core/projects/components/project-detail/modal-choose-project-lists',\r\n// 'core/projects/components/project-list/project-list',\r\n//\r\n// //load project service\r\n// 'core/projects/services/project-service',\r\n// 'core/projects/services/subproject-service'\r\n\r\n// ], function () {\r\n//add the controllers and services to the module once the files are loaded!\r\nconst projects_module = angular.module('ProjectModule', ['ui.bootstrap', 'ngFileUpload', 'ui.select2', 'ngResource']);\r\n//projects_module.controller('project-detail-ctrl', project_detail);\r\nprojects_module.controller('ProjectLandingCtrl', project_landing);\r\nprojects_module.controller('ModalEditFileCtrl', modal_edit_file);\r\nprojects_module.controller('ModalNewFileCtrl', modal_new_file);\r\nprojects_module.controller('ModalLinkCtrl', modal_new_link);\r\nprojects_module.controller('ModalProjectEditorCtrl', modal_edit_project);\r\nprojects_module.controller('ModalChooseSummaryImagesCtrl', modal_choose_summary_images);\r\nprojects_module.controller('ModalChooseMapCtrl', modal_choose_map);\r\nprojects_module.controller('ModalEditLocationCtrl', modal_edit_location);\r\nprojects_module.controller('ModalEditLookupItemCtrl', modal_edit_lookup_item);\r\n\r\nprojects_module.controller('LookupInstrumentsCtrl', lookup_instruments);\r\nprojects_module.controller('ProjectFilesCtrl', project_files);\r\nprojects_module.controller('ProjectDataCtrl', project_data);\r\nprojects_module.controller('ProjectPermissionsCtrl', project_permissions);\r\nprojects_module.controller('ModalChangeOwnerCtrl', modal_permission_change_owner);\r\nprojects_module.controller('ProjectLookupsCtrl', project_lookups);\r\nprojects_module.controller('ProjectLocationsCtrl', project_locations);\r\nprojects_module.controller('ModalProjectConfigLists', modal_projectconfig_choose_lists);\r\nprojects_module.controller('ProjectListCtrl', project_list);\r\n\r\nprojects_module.controller('ModalAddAccuracyCheckCtrl', module_add_accuracy_check);\r\n\r\n\r\n\r\n// });\r\n\r\nprojects_module.factory('ProjectFunders', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/habsubproject/getprojectfunders', {}, {\r\n query: { method: 'GET', params: { id: 'projectId' }, isArray: true }\r\n });\r\n}]);\r\n\r\nprojects_module.factory('ProjectCollaborators', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/habsubproject/getprojectcollaborators', {}, {\r\n query: { method: 'GET', params: { id: 'projectId' }, isArray: true }\r\n });\r\n}]);\r\n\r\nprojects_module.factory('ProjectCounties', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/crppsubproject/getprojectcounties', {}, {\r\n query: { method: 'GET', params: { id: 'projectId' }, isArray: true }\r\n });\r\n}]);\r\n\r\nprojects_module.factory('ProjectFiles', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/file/getprojectfiles', {}, {\r\n query: { method: 'GET', params: { id: 'projectId' }, isArray: true }\r\n });\r\n}]);\r\n\r\nprojects_module.factory('Projects', ['$resource', function (resource) {\r\n return resource(serviceUrl + '/api/v1/project/getprojects', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\nprojects_module.factory('ProjectLocations', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/project/getlocations', {}, {\r\n query: { method: 'GET', params: { ProjectId: 'projectId' }, isArray: true }\r\n });\r\n}]);\r\n\r\nprojects_module.factory('ProjectDatasetLocations', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/project/getdatasetlocations', {}, {\r\n query: { method: 'GET', params: { ProjectId: 'projectId', DatasetId: 'datasetId' }, isArray: true }\r\n });\r\n}]);\r\n\r\n\r\nprojects_module.factory('Project', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/project/getproject', {}, {\r\n query: { method: 'GET', params: { id: 'id' }, isArray: false }\r\n });\r\n}]);\r\n\r\nprojects_module.factory('ProjectDatasets', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/project/getprojectdatasets', {}, {\r\n query: { method: 'GET', params: { id: 'projectId' }, isArray: true }\r\n });\r\n}]);\r\n\r\nprojects_module.factory('SaveProjectPermissions', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/project/saveprojectpermissions');\r\n}]);\r\n\r\nprojects_module.factory('SaveLocations',['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/project/savelocations');\r\n}]);\r\n\r\nprojects_module.factory('AddLocation',['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/project/addlocation');\r\n}]);\r\n\r\nprojects_module.factory('SaveProject', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/project/saveproject');\r\n}]);\r\n\r\nprojects_module.factory('SaveLink', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/file/saveprojectlink');\r\n}]);\r\n\r\nprojects_module.factory('SaveProjectConfig', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/project/SaveProjectConfig');\r\n}]);\r\n\r\nprojects_module.factory('GetAllInstruments', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/instrument/getinstruments');\r\n}]);\r\n\r\nprojects_module.factory('GetAllInstrumentAccuracyChecks', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/instrument/getallinstrumentaccuracychecks');\r\n}]);\r\n\r\nprojects_module.factory('SaveProjectInstrument', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/instrument/saveprojectinstrument');\r\n}]);\r\n\r\nprojects_module.factory('SaveProjectFisherman', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/fishermen/saveprojectfisherman');\r\n}]);\r\n\r\nprojects_module.factory('SaveInstrument', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/instrument/saveinstrument');\r\n}]);\r\n\r\nprojects_module.factory('SaveInstrumentAccuracyCheck', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/instrument/saveinstrumentaccuracycheck');\r\n}]);\r\n\r\nprojects_module.factory('RemoveInstrumentAccuracyCheck', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/instrument/removeinstrumentaccuracycheck');\r\n}]);\r\n\r\nprojects_module.factory('SaveFisherman', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/fishermen/savefisherman');\r\n}]);\r\n\r\nprojects_module.factory('UpdateFile', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/file/updatefile');\r\n}]);\r\n\r\nprojects_module.factory('DeleteFile', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/file/deletefile');\r\n}]);\r\n\r\nprojects_module.factory('GetDatastoreProjects', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/datastore/getdatastoreprojects');\r\n}]);\r\n\r\nprojects_module.factory('GetInstruments', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/instrument/getinstruments');\r\n}]);\r\n\r\nprojects_module.factory('GetInstrumentTypes', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/instrument/getinstrumenttypes');\r\n}]);\r\n\r\nprojects_module.factory('RemoveProjectInstrument', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/instrument/removeprojectinstrument');\r\n}]);\r\n\r\nprojects_module.factory('GetFishermen', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/fishermen/getfishermen');\r\n}]);\r\n\r\nprojects_module.factory('GetProjectFishermen', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/fishermen/getprojectfishermen');\r\n}]);\r\n\r\nprojects_module.factory('RemoveProjectFisherman', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/fishermen/removeprojectfisherman');\r\n}]);\r\n\r\nprojects_module.factory('GetCrppStaff', ['$resource', function($resource){\r\n return $resource(serviceUrl+'/api/v1/user/GetCrppStaff'); // This line will need adjusting.\r\n}]);\r\n\r\nprojects_module.factory('GetOlcStaff', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/user/GetOlcStaff'); // This line will need adjusting.\r\n}]);\r\n\r\nprojects_module.factory('GetPrincipals', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/project/GetPrincipals'); //\r\n}]);\r\n\r\nprojects_module.factory('GetVisibilityPermissions', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/project/GetVisibilityPermissions'); //\r\n}]);\r\n\r\nprojects_module.factory('ChangeOwner', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/project/changeowner'); //\r\n}]);\r\n\r\nprojects_module.service('ProjectService', project_service);\r\n\r\nprojects_module.factory('ProjectSubprojects', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/habsubproject/gethabsubprojects', {}, {\r\n save: { method: 'POST', isArray: true }\r\n });\r\n}]);\r\n\r\n// Although SubprojectFiles calls the backend controller crppsubproject, method getcrppsubprojectfiles,\r\n// getcrppsubprojectfiles passes the projectId and handles files for EITHER CRPP or Habitat.\r\nprojects_module.factory('SubprojectFiles', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/crppsubproject/getcrppsubprojectfiles', {}, {\r\n query: { method: 'GET', params: { id: 'projectId' }, isArray: true }\r\n });\r\n}]);\r\n\r\nprojects_module.factory('OlcSubprojectFiles', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/olcsubproject/getolcsubprojectfiles', {}, {\r\n query: { method: 'GET', params: { id: 'projectId' }, isArray: true }\r\n });\r\n}]);\r\n\r\nprojects_module.factory('SaveCorrespondenceEvent', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/crppsubproject/savecorrespondenceevent');\r\n}]);\r\n\r\nprojects_module.factory('SaveOlcEvent', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/olcsubproject/saveolcevent');\r\n}]);\r\n\r\nprojects_module.factory('SaveHabitatItem', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/habsubproject/savehabitatitem');\r\n}]);\r\n\r\nprojects_module.factory('DeleteCorresEventFile', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/crppsubproject/deletecorreseventfile');\r\n}]);\r\n\r\nprojects_module.factory('DeleteOlcEventFile', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/olcsubproject/deleteolceventfile');\r\n}]);\r\n\r\nprojects_module.factory('DeleteHabitatItemFile', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/habsubproject/deletehabitatitemfile');\r\n}]);\r\n\r\nprojects_module.factory('DeleteHabSubprojectFile', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/habsubproject/deletehabsubprojectfile');\r\n}]);\r\n\r\nprojects_module.factory('SaveSubproject', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/crppsubproject/savecrppsubproject');\r\n}]);\r\n\r\nprojects_module.factory('SaveCrppSubproject', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/crppsubproject/savecrppsubproject');\r\n}]);\r\n\r\nprojects_module.factory('SaveHabSubproject', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/habsubproject/savehabsubproject');\r\n}]);\r\n\r\nprojects_module.factory('SaveOlcSubproject', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/olcsubproject/saveolcsubproject');\r\n}]);\r\n\r\nprojects_module.factory('GetSubprojects', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/crppsubproject/getcrppsubprojects');\r\n}]);\r\n\r\n//NB: does this need an ID parameter? -- actually it isn't used anywhere...\r\nprojects_module.factory('GetHabSubproject', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/habsubproject/gethabsubproject');\r\n}]);\r\n\r\nprojects_module.factory('GetHabSubprojects', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/habsubproject/gethabsubprojects');\r\n}]);\r\n\r\nprojects_module.factory('RemoveSubproject', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/crppsubproject/removecrppsubproject', {}, {\r\n save: { method: 'POST', isArray: false }\r\n });\r\n}]);\r\n\r\nprojects_module.factory('RemoveHabSubproject', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/habsubproject/removehabsubproject');\r\n}]);\r\n\r\nprojects_module.factory('RemoveOlcSubproject', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/olcsubproject/removeolcsubproject');\r\n}]);\r\n\r\nprojects_module.factory('RemoveCorrespondenceEvent', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/crppsubproject/removecorrespondenceevent');\r\n}]);\r\n\r\nprojects_module.factory('RemoveOlcEvent', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/olcsubproject/removeolcevent');\r\n}]);\r\n\r\nprojects_module.factory('RemoveHabitatItem', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/habsubproject/removehabitatitem');\r\n}]);\r\n\r\nprojects_module.factory('GetOlcSubprojects', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/olcsubproject/getolcsubprojects');\r\n}]);\r\n\r\n//projects_module.factory('GetOlcSubprojectsForSearch', ['$resource', function ($resource) {\r\n// return $resource(serviceUrl + '/api/v1/olcsubproject/getolcsubprojectsforsearch');\r\n//}]);\r\n\r\nprojects_module.factory('QueryOlcSubprojectsForSearch', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/olcsubproject/queryolcsubprojectsforsearch', {}, {\r\n save: { method: 'POST', isArray: true }\r\n });\r\n}]);\r\n\r\n//datasets_module.factory('QueryActivitiesAction', ['$resource', function ($resource) {\r\n// return $resource(serviceUrl + '/api/v1/query/querydatasetactivities', {}, {\r\n// save: { method: 'POST', isArray: true }\r\n// });\r\n//}]);\r\n\r\nprojects_module.factory('MigrateOlcEvent', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/olcsubproject/migrateolcevent');\r\n}]);\r\n\r\nprojects_module.factory('SaveFileItemId', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/habsubproject/savefileitemid');\r\n}]);\r\n\r\nprojects_module.service('SubprojectService', subproject_service);\r\n\r\nexport default projects_module;\r\n\r\n\r\n\r\n\r\n","//CDMSDateTimeCellValidator - extends CellValidator\r\n\r\n// validates datetime cells.\r\n\r\nimport * as moment from 'moment';\r\nimport {CellValidator, ValidationError} from \"../cell-validation\";\r\n\r\nexport function CDMSDateTimeCellValidator(cdms_field) {\r\n this.base = CellValidator;\r\n this.base(cdms_field);\r\n}\r\nCDMSDateTimeCellValidator.prototype = new CellValidator;\r\n\r\nCDMSDateTimeCellValidator.prototype.validateFieldControlTypeValidation = function (data) {\r\n\r\n //console.log(\"-- date validation --\");\r\n //console.dir(data);\r\n\r\n if (data.value == null || data.value == \"\")\r\n return this.errors;\r\n\r\n var the_date = moment(data.value, [\"MM-DD-YYYY h:m\", \"YYYY-MM-DD h:m\"],false);\r\n //console.dir(the_date);\r\n if (!the_date.isValid()) {\r\n this.errors.push(new ValidationError(this.cdms_field, \"Value is not a date-time (mm-dd-yyyy hh:mm).\"));\r\n }\r\n else // it IS a valid date value, make sure it isn't older than 1901!\r\n {\r\n if(the_date.year() < 1901)\r\n this.errors.push(new ValidationError(this.cdms_field, \"Year is before 1901 (set from Excel?); Please update Year.\"));\r\n }\r\n\r\n return this.errors;\r\n};\r\n","//modal to edit org/group\r\nvar modal_admin_item = ['$scope', '$uibModal','$uibModalInstance','AdminService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, AdminService) {\r\n\r\n\r\n $scope.save = function () {\r\n\r\n if($scope.itemType == \"Group\"){\r\n $scope.item.OrganizationId = $scope.orgGrid.selectedItem.Id;\r\n var saved_item = AdminService.saveGroup($scope.item);\r\n saved_item.$promise.then(function () {\r\n saved_item.Members = [];\r\n $uibModalInstance.close(saved_item);\r\n }, function (error) {\r\n $scope.ModalErrorMessage = \"Error: \" + error.data.ExceptionMessage;\r\n });\r\n }\r\n\r\n if($scope.itemType == \"Department\"){\r\n $scope.item.OrganizationId = $scope.orgGrid.selectedItem.Id;\r\n var saved_item = AdminService.saveDepartment($scope.item);\r\n saved_item.$promise.then(function () {\r\n $uibModalInstance.close(saved_item);\r\n }, function (error) {\r\n $scope.ModalErrorMessage = \"Error: \" + error.data.ExceptionMessage;\r\n });\r\n }\r\n\r\n if($scope.itemType == \"Organization\"){\r\n var saved_item = AdminService.saveOrganization($scope.item);\r\n saved_item.$promise.then(function () {\r\n $uibModalInstance.close(saved_item);\r\n }, function (error) {\r\n $scope.ModalErrorMessage = \"Error: \" + error.data.ExceptionMessage;\r\n });\r\n }\r\n\r\n\r\n };\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_admin_item;\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {AppjsRoutingModule} from './appjs-routing.module';\r\nimport {HttpClientModule} from '@angular/common/http';\r\nimport {AppjsComponent} from './appjs.component';\r\nimport {UpgradeModule} from '@angular/upgrade/static';\r\nimport {NgbDropdownModule, NgbModule} from '@ng-bootstrap/ng-bootstrap';\r\nimport {LoginModule} from \"../login/login.module\";\r\nimport {ConfirmModule} from \"../confirm/confirm.module\";\r\n\r\n\r\n@NgModule({\r\n declarations: [AppjsComponent],\r\n imports: [\r\n CommonModule,\r\n AppjsRoutingModule,\r\n HttpClientModule,\r\n UpgradeModule,\r\n NgbModule,\r\n NgbDropdownModule,\r\n LoginModule\r\n ],\r\n providers: []\r\n})\r\nexport class AppjsModule {\r\n}\r\n","export default \"
\\r\\n\";","//modal to add/edit permit parcel\r\nimport * as angular from 'angular';\r\nimport {getByField} from \"../../../../core/common/common-functions\";\r\n\r\n\r\nvar modal_edit_permitparcel = ['$scope', '$uibModal','$uibModalInstance','Upload','PermitService','ViolationService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, $upload, PermitService, ViolationService) {\r\n\r\n $scope.mode = \"edit\";\r\n\r\n if (!$scope.parcel_modal.Id) {\r\n $scope.mode = \"new\";\r\n }\r\n\r\n $scope.parcelEntry = \"\";\r\n $scope.parcelMatches = [];\r\n\r\n $scope.Selected = {Parcel : []};\r\n\r\n $scope.parcelEntryUpdate = function () {\r\n $scope.parcelEntry = $scope.parcelEntry.toUpperCase();\r\n $scope.parcelMatches = [];\r\n $scope.Selected.Parcel.length = 0;\r\n $scope.parcel_modal = {};\r\n\r\n\r\n var entryLength = $scope.parcelEntry.length;\r\n\r\n $scope.CadasterParcels.forEach(function (parcel) {\r\n\r\n if (parcel.ParcelId == null || parcel.ParcelId == \"\")\r\n return;\r\n\r\n if (entryLength > 0){\r\n\r\n if(parcel.ParcelId.substring(0, entryLength) == $scope.parcelEntry ||\r\n (parcel.Address && parcel.Address.toUpperCase().substring(0, entryLength) == $scope.parcelEntry ) ) {\r\n\r\n if (parcel.ParcelId == $scope.parcelEntry || (parcel.Address && parcel.Address.toUpperCase() == $scope.parcelEntry)) {\r\n $scope.parcel_modal = parcel;\r\n $scope.Selected.Parcel.push(angular.toJson($scope.parcel_modal)); //this is the trick\r\n }\r\n\r\n $scope.parcelMatches.push(parcel);\r\n }\r\n }\r\n });\r\n };\r\n\r\n $scope.selectParcel = function(){\r\n $scope.parcel_modal = angular.fromJson($scope.Selected.Parcel[0]); //this is the trick\r\n }\r\n\r\n if($scope.row.SiteAddress) {\r\n $scope.parcelEntry = $scope.row.SiteAddress;\r\n $scope.parcelEntryUpdate();\r\n }\r\n\r\n $scope.save = function () {\r\n\r\n var new_parcel = \"\";\r\n\r\n if($scope.violations != null){\r\n $scope.parcel_modal.EHSViolationId = $scope.row.Id;\r\n new_parcel = ViolationService.saveViolationParcel($scope.parcel_modal);\r\n }\r\n else\r\n {\r\n $scope.parcel_modal.PermitId = $scope.row.Id;\r\n new_parcel = PermitService.savePermitParcel($scope.parcel_modal);\r\n }\r\n\r\n var the_new_parcel = getByField($scope.CadasterParcels, $scope.parcel_modal.ParcelId, 'ParcelId');\r\n $scope.parcel_modal.ObjectId = the_new_parcel.ObjectId;\r\n\r\n // @ts-ignore\r\n new_parcel.$promise.then(function () {\r\n $uibModalInstance.close(new_parcel);\r\n });\r\n\r\n };\r\n\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n\r\n }\r\n];\r\n\r\nexport default modal_edit_permitparcel;\r\n","import * as angular from 'angular';\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar permit_map = ['$scope', '$route', '$routeParams', '$uibModal', '$location', '$window', '$rootScope', 'PermitService',\r\n function ($scope, $route, $routeParams, $uibModal, $location, $window, $rootScope, PermitService) {\r\n\r\n $rootScope.inModule = \"permits\";\r\n\r\n console.log(\"Inside private...permit-map.ts\");\r\n\r\n\r\n $scope.setOut = function () {\r\n $scope.outAllotment;\r\n console.log(\"allotment change on grid click\");\r\n }\r\n\r\n if (!$scope.Profile.hasRole(\"Permits\"))\r\n angular.rootScope.go(\"/unauthorized\");\r\n\r\n $scope.permits = PermitService.getAllPermits();\r\n $scope.CadasterParcels = PermitService.getAllParcels();\r\n\r\n\r\n $scope.searchResults = [];\r\n $scope.searchComplete = false;\r\n\r\n $scope.parcelMatches = [];\r\n $scope.Selected = {Parcel: []};\r\n $scope.outAllotment = \"\";\r\n // $scope.parcel = \"\";\r\n console.log($rootScope.parcelMapFromList)\r\n\r\n $scope.permits.$promise.then(function () {\r\n\r\n if (!$scope.searchGridDiv) {\r\n $scope.searchGridDiv = document.querySelector(\"#search-permits-grid\");\r\n new Grid($scope.searchGridDiv, $scope.searchGrid);\r\n }\r\n\r\n if ($routeParams.ParcelId != null) {\r\n $scope.searchTerm = $routeParams.ParcelId;\r\n $scope.searchButton();\r\n }\r\n if($rootScope.parcelMapFromList) {\r\n $scope.searchByString($rootScope.parcelMapFromList);\r\n $rootScope.parcelMapFromList = undefined;\r\n }\r\n });\r\n\r\n var SearchLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a');\r\n editBtn.href = '#';\r\n editBtn.innerHTML = 'Open';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.viewPermit(param.data.Id, param.data.IsViolation);\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n var searchColumnDefs = [\r\n {colId: 'ViewLink', width: 60, cellRenderer: SearchLinksTemplate, menuTabs: []},\r\n {headerName: \"Permit\", field: \"PermitNumber\", width: 130, filter: 'text', sort: 'asc'},\r\n {\r\n headerName: \"Status\", field: \"PermitStatus\", width: 200, filter: true\r\n },\r\n\r\n ];\r\n\r\n $scope.searchGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: searchColumnDefs,\r\n rowData: [],\r\n rowSelection: 'single',\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n menuTabs: ['filterMenuTab']\r\n },\r\n onRowClicked: function (params) {\r\n $scope.selectedPermit = params.data;\r\n $scope.showRelatedParcels(params.data.Id);\r\n // $scope.searchTerm = params.data.Id;\r\n }\r\n }\r\n\r\n $scope.searchButton = function () {\r\n console.log(\"searchButton clicked...\");\r\n $scope.searchByString($scope.searchTerm);\r\n }\r\n\r\n\r\n $scope.searchByString = function (in_string) {\r\n $scope.searchParcel = \"\";\r\n console.log(\"search \" + in_string);\r\n $scope.searchComplete = false;\r\n\r\n $scope.searchResults.length = 0; //permit matches\r\n $scope.Selected.Parcel.length = 0;\r\n $scope.parcelMatches = [];\r\n\r\n $scope.searchTerm = in_string.toUpperCase();\r\n in_string = $scope.searchTerm;\r\n var exact_match = false;\r\n\r\n //step 1 - search for matching permits by permit number\r\n $scope.permits.forEach(function (permit) {\r\n\r\n if (permit.PermitNumber && permit.PermitNumber.toUpperCase().indexOf(in_string) !== -1) {\r\n $scope.searchResults.push(permit);\r\n }\r\n // if (permit.PermitNumber === in_string) {\r\n // $scope.searchResults.push(permit);\r\n // }\r\n\r\n });\r\n\r\n $scope.searchDescription = \"Permits matching \" + in_string;\r\n if ($scope.searchGrid != undefined) {\r\n $scope.searchGrid.api.setRowData($scope.searchResults);\r\n }\r\n console.log($scope.searchResults);\r\n\r\n // step 2 - search for matching parcels\r\n //\r\n $scope.CadasterParcels.forEach(function (parcel) {\r\n if (parcel.ParcelId == null || parcel.ParcelId == \"\")\r\n return;\r\n\r\n var regex = RegExp(in_string, 'g');\r\n if (regex.test(parcel.ParcelId)) {\r\n //$scope.Selected.Parcel.push(angular.toJson(parcel)); //this is the trick\r\n $scope.parcelMatches.push(parcel);\r\n if (parcel.ParcelId == in_string)\r\n exact_match = true;\r\n $scope.searchParcel = parcel.ParcelId;\r\n }\r\n });\r\n\r\n if ($scope.searchResults.length == 0) {\r\n $scope.findRelatedPermits($scope.searchParcel);\r\n }\r\n\r\n // $scope.PermitParcels = [];\r\n //\r\n // var related_permits = PermitService.getPermitsByRelatedParcels(in_string);\r\n // console.log(\"searching for permits related to \" + in_string);\r\n // related_permits.$promise.then(function () {\r\n // console.log(\"found some! \" + related_permits.length);\r\n // $scope.parcel.length = 0;\r\n // related_permits.forEach(function (permit) {\r\n // $scope.searchResults.push(permit);\r\n // });\r\n // })\r\n\r\n /*\r\n\r\n //step 3 - if we have no parcel match, search our own list of parcels to see if any \"outdated\" ones (not in Cadaster) match\r\n if(!exact_match){\r\n var oldpermitidmatches = PermitService.getPermitsByRelatedParcels(in_string);\r\n oldpermitidmatches.$promise.then(function(){\r\n oldpermitidmatches.forEach(function(permit){\r\n $scope.parcelMatches.push(permit);\r\n })\r\n });\r\n }\r\n */\r\n\r\n // if(exact_match){\r\n $scope.outAllotment = in_string;\r\n // $scope.findOnMap(in_string);\r\n // }\r\n\r\n $scope.searchComplete = true;\r\n\r\n }\r\n\r\n $scope.selectParcel = function () {\r\n var parcel = angular.fromJson($scope.Selected.Parcel[0]);\r\n $scope.outAllotment = parcel.ParcelId;\r\n // $scope.findRelatedPermits($scope.outAllotment);\r\n $scope.findRelatedPermits(parcel.ParcelId);\r\n // $scope.searchTerm = $scope.parcel.ParcelId\r\n // $scope.findOnMap(parcel.ParcelId);\r\n }\r\n\r\n $scope.showRelatedParcels = function (id) {\r\n $scope.PermitParcels = PermitService.getPermitParcels(id);\r\n };\r\n\r\n //clicked when user clicks id of related parcel\r\n $scope.clickRelatedParcel = function (id) {\r\n $scope.parcelMatches.length = 0;\r\n $scope.outAllotment = id;\r\n $scope.findRelatedPermits(id);\r\n // $scope.findOnMap(id);\r\n }\r\n\r\n $scope.viewPermit = function (Id, IsViolation) {\r\n if (IsViolation === \"y\")\r\n window.open(\"permits/ehsviolations?Id=\" + Id, \"_blank\");\r\n else\r\n window.open(\"permits/list?Id=\" + Id, \"_blank\");\r\n };\r\n\r\n\r\n // expose a method for handling clicks ON THE MAP\r\n $scope.mapClick = function (e) {\r\n $scope.parcel = e;\r\n console.log(\"Click!\");\r\n\r\n $scope.isPermitSelected = true;\r\n $scope.hasResults = true;\r\n\r\n // var objectid = $scope.map.selectedFeature.attributes.OBJECTID;\r\n // var allotment = $scope.map.selectedFeature.attributes.PARCELID;\r\n console.log($scope.parcel.PARCELID)\r\n $scope.searchTerm = $scope.parcel.PARCELID\r\n $scope.searchButton();\r\n $scope.findRelatedPermits($scope.parcel.PARCELID);\r\n // $scope.searchByString($scope.parcel.PARCELID);\r\n\r\n\r\n // $scope.map.loading = false;\r\n $scope.$apply(); //bump angular\r\n\r\n // });\r\n };\r\n\r\n\r\n $scope.findRelatedPermits = function (parcel) {\r\n\r\n $scope.searchTerm = parcel;\r\n $scope.searchDescription = \"Related Permits to \" + parcel;\r\n $scope.PermitParcels = [];\r\n\r\n var related_permits = PermitService.getPermitsByRelatedParcels(parcel);\r\n console.log(\"searching for permits related to \" + parcel);\r\n related_permits.$promise.then(function () {\r\n console.log(\"found some! \" + related_permits.length);\r\n $scope.searchResults.length = 0;\r\n related_permits.forEach(function (permit) {\r\n $scope.searchResults.push(permit);\r\n });\r\n\r\n $scope.searchGrid.api.setRowData($scope.searchResults);\r\n });\r\n }\r\n }];\r\n\r\nexport default permit_map;\r\n","//modal to choose project config lists\r\nvar modal_permission_change_owner = ['$scope', '$uibModal','$uibModalInstance','ProjectService','CommonService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, ProjectService, CommonService) {\r\n\r\n $scope.save = function () {\r\n\r\n var save_project = ProjectService.changeProjectOwner($scope.project.Id, $scope.newOwner.Id);\r\n\r\n save_project.$promise.then(function(){\r\n $scope.SaveMessage = \"Success\";\r\n $uibModalInstance.close(save_project);\r\n }, function(){\r\n $scope.SaveMessage = \"An error occurred.\";\r\n })\r\n\r\n };\r\n\r\n $scope.cancel = function () {\r\n $scope.project.Config.Lookups = $scope.savedLookups;\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_permission_change_owner;\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJsb2dpbi5jb21wb25lbnQuc2NzcyJ9 */\";","/*\r\n* These are functions used in services or controllers in the datasets module.\r\n*/\r\nimport * as angular from 'angular';\r\nimport {\r\n check4Digits,\r\n checkDateTimeFormat1,\r\n checkInteger,\r\n checkTime,\r\n extractYearFromString, is_empty, isNumber, makeObjectsFromValues,\r\n stringIsNumber, stringIsTime\r\n} from \"../common/common-functions\";\r\nimport {NUM_FLOAT_DIGITS} from \"../../config\";\r\n\r\n\r\n// makes a field column definition\r\nexport function makeField(colName, placeholder) {\r\n return '';\r\n}\r\n\r\n\r\nexport function makeFieldColDef(field, scope) {\r\n //console.log(\"Inside makeFieldColDef...\");\r\n //console.log(\"field is next...\");\r\n //console.dir(field);\r\n\r\n var coldef =\r\n {\r\n field: field.DbColumnName,\r\n displayName: field.Label,\r\n minWidth: 70,\r\n defaultValue: field.DefaultValue\r\n };\r\n\r\n //if (scope.dataset.Id === 1206) // Creel Survey\r\n if (scope.DatastoreTablePrefix == \"CreelSurvey\") {\r\n scope.disableFields = true;\r\n }\r\n else {\r\n scope.datasheetColDefs.cellEditableCondition = true;\r\n }\r\n\r\n //only setup edit templates for fields in grids with cell editing enabled.\r\n if (scope.gridDatasheetOptions.enableCellEdit) {\r\n //first of all!\r\n // @ts-ignore\r\n coldef.enableCellEdit = true;\r\n //if (scope.dataset.Id === 1206)\r\n if (scope.DatastoreTablePrefix == \"CreelSurvey\") {\r\n scope.datasheetColDefs.cellEditableCondition = false;\r\n }\r\n else {\r\n scope.datasheetColDefs.cellEditableCondition = true;\r\n }\r\n\r\n //setup column according to what type it is\r\n // the \"coldef\" options available here are \"ColumnDefs Options\" http://angular-ui.github.io/ng-grid/\r\n\r\n switch (field.ControlType) {\r\n case 'select':\r\n case 'lookup':\r\n // Check for common misconfiguration error\r\n if (field.Field.PossibleValues == null)\r\n console.log(\"Missing list of possible values from select/lookup field \" + field.Field.Name);\r\n\r\n // @ts-ignore\r\n coldef.editableCellTemplate = '';\r\n scope.CellOptions[field.DbColumnName + 'Options'] = makeObjectsFromValues(scope.dataset.DatastoreId + field.DbColumnName, field.Field.PossibleValues);\r\n // console.log(\"and we used: \" + scope.dataset.DatastoreId+field.DbColumnName + \" as the key\");\r\n break;\r\n case 'multiselect':\r\n case 'multilookup':\r\n //coldef.editableCellTemplate = '';\r\n scope.CellOptions[field.DbColumnName + 'Options'] = makeObjectsFromValues(scope.dataset.DatastoreId + field.DbColumnName, field.Field.PossibleValues);\r\n // console.log(\"and we used: \" + scope.dataset.DatastoreId+field.DbColumnName + \" as the key\");\r\n break;\r\n\r\n case 'easting':\r\n // @ts-ignore\r\n coldef.editableCellTemplate = makeField(field.DbColumnName, 'ex. 541324');\r\n break;\r\n case 'northing':\r\n // @ts-ignore\r\n coldef.editableCellTemplate = makeField(field.DbColumnName, 'ex. 7896254');\r\n break;\r\n\r\n case 'date':\r\n // @ts-ignore\r\n //coldef.editableCellTemplate = '';\r\n coldef.editableCellTemplate = makeField(field.DbColumnName, 'ex. 07/23/2014');\r\n break;\r\n case 'time':\r\n // @ts-ignore\r\n coldef.editableCellTemplate = makeField(field.DbColumnName, 'ex. 16:20');\r\n break;\r\n case 'datetime':\r\n // @ts-ignore\r\n coldef.editableCellTemplate = makeField(field.DbColumnName, 'ex. 07/23/2014 16:20');\r\n break;\r\n\r\n case 'textarea':\r\n case 'text':\r\n // @ts-ignore\r\n coldef.editableCellTemplate = '';\r\n break;\r\n case 'number':\r\n case 'currency':\r\n //var maxmin = field.Field.Validation ? 'max=\"'+field.Field.Validation[1]+'\" min=\"'+field.Field.Validation[0]+'\"' : ''; //either returns our min/max setup for a numeric field or empty string.\r\n // @ts-ignore\r\n coldef.editableCellTemplate = '';\r\n //coldef.cellTemplate = '
{{row.getProperty(col.field)}}
';\r\n break;\r\n case 'checkbox':\r\n // @ts-ignore\r\n coldef.showSelectionCheckbox = true;\r\n // @ts-ignore\r\n coldef.editableCellTemplate = '';\r\n // @ts-ignore\r\n coldef.cellTemplate = coldef.editableCellTemplate; //checkbox for display and edit.\r\n break;\r\n case 'file':\r\n // @ts-ignore\r\n coldef.cellTemplate = ' ';\r\n //';\r\n break;\r\n //case 'grid':\r\n // coldef.cellTemplate = ' ';\r\n // break;\r\n default:\r\n console.log(\"Unknown control type: \" + field.ControlType);\r\n }\r\n }\r\n\r\n //setup cellfilters\r\n switch (field.ControlType) {\r\n case 'multiselect':\r\n case 'multilookup':\r\n // @ts-ignore\r\n coldef.cellFilter = 'arrayValues';\r\n break;\r\n\r\n case 'date':\r\n // @ts-ignore\r\n coldef.cellFilter = 'date: \\'MM/dd/yyyy\\'';\r\n break;\r\n\r\n case 'currency':\r\n // @ts-ignore\r\n coldef.cellFilter = 'currency';\r\n break;\r\n\r\n case 'datetime':\r\n // @ts-ignore\r\n coldef.cellFilter = 'date: \\'MM/dd/yyyy HH:mm:ss\\'';\r\n break;\r\n\r\n case 'link':\r\n case 'file':\r\n //override the defaul width for files...\r\n // @ts-ignore\r\n coldef.minWidth = '200';\r\n // @ts-ignore\r\n coldef.maxWidth = '400';\r\n // @ts-ignore\r\n coldef.width = '200';\r\n // @ts-ignore\r\n if (!coldef.enableCellEdit)\r\n // @ts-ignore\r\n coldef.cellTemplate = '
';//';\r\n break;\r\n case 'grid':\r\n // @ts-ignore\r\n coldef.minWidth = '150';\r\n // @ts-ignore\r\n coldef.maxWidth = '150';\r\n // @ts-ignore\r\n coldef.width = '150';\r\n // @ts-ignore\r\n coldef.cellTemplate = '
';\r\n //coldef.cellTemplate = '';\r\n break;\r\n }\r\n\r\n return coldef;\r\n}\r\n\r\n/*\r\n* Handles preparing a field to be used by the system...\r\n*/\r\nexport function parseField(field, scope) {\r\n //console.log(\"Inside services, parseField...\");\r\n //console.log(\"field is next...\");\r\n //console.dir(field);\r\n\r\n //do this no matter what.\r\n scope.FieldLookup[field.DbColumnName] = field; //setup our little convenience lookup associative array - used for validation\r\n\r\n //are we already parsed?\r\n if (field.parsed === true)\r\n return;\r\n\r\n var displayName = \"\";\r\n\r\n //if we are a DatasetField\r\n if (field.Label)\r\n displayName = field.Label;\r\n\r\n //if we are a Field\r\n if (field.Name)\r\n displayName = field.Name;\r\n\r\n //include units in the label if we are a DatasetField\r\n if (field.Field && field.Field.Units)\r\n if (field.Field.Units !== \"NULL\") // DO NOT include units, if it = \"NULL\"\r\n displayName += \" (\" + field.Field.Units + \")\";\r\n\r\n //or if we are a Field\r\n if (field.Units)\r\n displayName += \" (\" + field.Units + \")\";\r\n\r\n field.Label = displayName;\r\n\r\n //configure field validation for DatasetFields (will be skipped for global Fields (in the case of global query))\r\n if (field.Field && field.Field.Validation) {\r\n\r\n //kb 1/2/18 - changing this - we don't want this to happen for the new grid.\r\n try {\r\n console.log(\"configuring validation for \" + field.DbColumnName);\r\n\t\t\t//console.dir(field.Field.Validation);\r\n //field.Field.Validation = angular.fromJson(field.Field.Validation);\r\n //var tryme = angular.fromJson(field.Field.Validation);\r\n }\r\n catch (e) {\r\n // Original code\r\n //console.log(\"*** There is an error parsing the validation for: \"+ field.Field.Name + \" ***\");\r\n //console.dir(e);\r\n //console.log(\"Validation == \" + field.Field.Validation);\r\n\r\n //TODO: we need to talk about this whole validation approach... no reason to \"angular.fromJson\" above\r\n // when we are going to fail a bunch of times on purpose because we're doing something different\r\n // with the whole switch thing below...\r\n\r\n //console.log(\"e string = \" + e.message.toString());\r\n let errorDescription = e.message.valueOf();\r\n if ((field.Field.Validation === \"t\") ||\r\n (field.Field.Validation === \"i\") ||\r\n (field.Field.Validation === \"y\") ||\r\n (field.Field.Validation === \"NULL\"))\r\n\t\t\t{\r\n // This could probably be handled a better way...\r\n // Do nothing. The \"t\" means we are checking a time.\r\n // Ken previously used the field validation for checking upper/lower limits on numbers.\r\n // GC added these letters...\r\n // t : to indicate a time value\r\n // i : to indicate an integer\r\n // y : to indicate a 4-digit year\r\n if (field.Field.Validation === \"y\") {\r\n // We are looking for a year.\r\n check4Digits()\r\n }\r\n }\r\n else if (errorDescription == \"Invalid character\") {\r\n // Do nothing. We handle checking the value in the ValidateField function.\r\n }\r\n else {\r\n console.log(\"** There is an error parsing the validation for: \" + field.Field.Name + \" **\");\r\n console.dir(e);\r\n console.log(\"Validation == \" + field.Field.Validation);\r\n }\r\n }\r\n }\r\n\r\n //setup and parse the rule if there is one.\r\n try {\r\n field.Rule = (field.Rule) ? angular.fromJson(field.Rule) : {};\r\n\r\n if (field.Field)\r\n field.Field.Rule = (field.Field.Rule) ? angular.fromJson(field.Field.Rule) : {};\r\n }\r\n catch (e) {\r\n // Original code\r\n //console.log(\"*** there is a rule parsing error for \" + field.Field.Name + \" *** \");\r\n //console.dir(e);\r\n\r\n //console.log(\"e string = \" + e.description.toString());\r\n\r\n let errorDescription = \"\";\r\n if (e && e.hasOwnProperty('description'))\r\n errorDescription = e.description.valueOf();\r\n\r\n if ((field.Field.Validation === \"t\") ||\r\n (field.Field.Validation === \"i\") ||\r\n (field.Field.Validation === \"NULL\")) {\r\n // This could probably be handled a better way...\r\n // Do nothing. The \"t\" means we are checking a time.\r\n // Ken previously used the field validation for checking upper/lower limits on numbers.\r\n // GC added these letters...\r\n // t : to indicate a time value\r\n // i : to indicate an integer\r\n }\r\n else if (errorDescription == \"Invalid character\") {\r\n // Do nothing. We handle checking the value in the ValidateField function.\r\n }\r\n else {\r\n console.error(\"** There is an error parsing the validation for: \" + field.Field.Name + \" **\");\r\n console.dir(e);\r\n console.error(\"Validation == \" + field.Field.Validation);\r\n }\r\n }\r\n\r\n fireRules(\"DefaultValue\", null, field, null, null, null, null);\r\n fireRules(\"Default\", null, field, null, null, null, null);\r\n\r\n field.parsed = true;\r\n\r\n}\r\n\r\n\r\n\r\nexport function isInvalidOption(scope, field, value) {\r\n return Object.keys(scope.CellOptions[field.DbColumnName + 'Options']).indexOf(value.toString()) == -1;\r\n}\r\n\r\n\r\nexport function checkNumber(row, field, value, range, row_errors) {\r\n //console.log(\"Inside checkNumber...\");\r\n //console.dir(row);\r\n //console.dir(field);\r\n //console.log(\"value = \" + value);\r\n //console.dir(range);\r\n //console.dir(row_errors);\r\n\r\n if (is_empty(value))\r\n return true;\r\n\r\n // Check if input is a number even if we haven't specified a numeric range\r\n if (!stringIsNumber(value)) {\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Value is not a number.\");\r\n return false;\r\n }\r\n // The range (Validation field) could be an alphanumeric string (4d for 4 decimal places), not just [min, max], and we must allow for the possibility.\r\n //else if(range && range.length == 2) // Expecting a 2-element array [min,max]; yes, but if the value is a string, this will be a false positive for a range.\r\n else if (range && (typeof range === 'object') && range.length === 2) // Expecting a 2-element array [min,max], an array is an object...\r\n {\r\n var min = range[0];\r\n var max = range[1];\r\n\r\n if (min && value < min) {\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Value is too low.\");\r\n return false;\r\n }\r\n\r\n if (max && value > max) {\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Value is too high.\");\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\n\r\n//function validateField(field, row, key, scope, row_errors)\r\nexport function validateField(field, row, key, scope, row_errors) {\r\n //console.log(\"Inside services, validateField...\");\r\n //console.log(\"field is next...\");\r\n //console.dir(field);\r\n //console.log(\"scope.callingPage = \" + scope.callingPage);\r\n\r\n var value = row[key];\r\n\r\n //if (typeof field.DbColumnName !== 'undefined')\r\n //\tconsole.log(\"Validating: (\" + value + \") on field: \" + field.DbColumnName);\r\n //console.dir(field);\r\n\r\n switch (field.ControlType) {\r\n case 'select':\r\n //is the value in our list of options?\r\n //console.log(\"scope.CellOptions for \" + field.DbColumnName + \" are next...\");\r\n //console.log(scope.CellOptions[field.DbColumnName+'Options']);\r\n if (scope.CellOptions[field.DbColumnName + 'Options']) {\r\n if (isInvalidOption(scope, field, value)) // Is value in the option list?\r\n\t\t\t\t{\r\n\t\t\t\t\t//console.log(\"[\" + field.DbColumnName + \"] Invalid selection, value = \" + value);\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Invalid selection, value = \" + value);\r\n\t\t\t\t}\r\n\t\t\t\t//else\r\n\t\t\t\t//\tconsole.log(\"[\" + field.DbColumnName + \"] Valid selection, value = \" + value);;\r\n }\r\n else {\r\n console.log(\"Error: no CellOptions for \" + field.DbColumnName + 'Options');\r\n console.dir(scope.CellOptions);\r\n console.log(\"This might be because you're calling a rule wrong?\");\r\n }\r\n break;\r\n\r\n case 'multiselect':\r\n //is each value in our list of options?\r\n var values = angular.fromJson(value);\r\n row[key] = values;\r\n //console.log(\"doing a comparison: \" + values + \" for value: \"+ value);\r\n for (var a = 0; a < values.length; a++) {\r\n var a_value = values[a];\r\n if (isInvalidOption(scope, field, a_value)) // Is value in the option list?\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Invalid selection (\" + a_value + \")\");\r\n }\r\n break;\r\n case 'date':\r\n //console.log(\"date value = \" + value);\r\n if (isNaN(Date.parse(value))) {\r\n if (!checkDateTimeFormat1(value)) {\r\n //console.log(\"value IS NOT a date format: \" + value);\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Value is not a date (mm/dd/yyyy).\");\r\n }\r\n //else\r\n //console.log(\"value IS a date format: \" + value);\r\n }\r\n break;\r\n case 'datetime':\r\n //console.log(\"Inside datetime...\");\r\n //console.log(\"value = \" + value);\r\n if (isNaN(Date.parse(value)))\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Value is not a date-time (mm/dd/yyyy hh:mm).\");\r\n else // Valid date value.\r\n {\r\n var theDate = new Date(value);\r\n var theYear = theDate.getFullYear();\r\n //console.log(\"theYear = \" + theYear);\r\n if (theYear < 1901)\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Value has a default year (from Excel?); user must set year.\");\r\n }\r\n\r\n break;\r\n\r\n case 'time':\r\n var theTime = value;\r\n var strTime = theTime.toString();\r\n //console.log(\"strTime = \" + strTime);\r\n\r\n var timeContentValid = true;\r\n if (!stringIsTime(value) && !is_empty(value))\r\n timeContentValid = false;\r\n else if (value.indexOf(\".\") > -1)\r\n timeContentValid = false;\r\n else if (value.indexOf(\":\") === -1)\r\n timeContentValid = false;\r\n\r\n if (!timeContentValid)\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Value is not a time (hh:mm).\");\r\n\r\n break;\r\n\r\n case 'text':\r\n if (field.Field.Validation && (field.Field.Validation !== 'null')) {\r\n if (field.Field.Validation === \"t\") // For a time\r\n {\r\n //console.log(\"Text time field name = \" + field.DbColumnName);\r\n //if ((field.DbColumnName === \"InterviewTime\") || (field.DbColumnName === \"TimeStart\") || (field.DbColumnName === \"TimeEnd\")) // This looks for specific field names.\r\n if ((field.Field.Units === \"00:00\") || (field.Field.Units === \"HH:MM\")) // This looks for time fields (better).\r\n {\r\n //console.log(\"In services, validateField, found time field...\");\r\n //console.log(\"scope.callingPage = \" + scope.callingPage);\r\n //if(!stringIsNumber(value) && !is_empty(value))\r\n\r\n //\r\n\r\n\r\n if ((field.DbColumnName === \"InterviewTime\") ||\r\n (field.DbColumnName === \"TimeStart\") ||\r\n (field.DbColumnName === \"TimeEnd\")\r\n //(field.DbColumnName === \"ArrivalTime\")\r\n )\r\n {\r\n if ((typeof scope.callingPage !== 'undefined') && (scope.callingPage === \"Import\")) {\r\n if (!checkDateTimeFormat1(value))\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Value is not a date-time format (YYYY-MM-DD hh:mm)\");\r\n\r\n\r\n let theYear = extractYearFromString(value);\r\n\r\n if (parseInt(theYear) < 1901) {\r\n strErrorMessage = \"[\" + field.DbColumnName + \"] has a less than 1901 (Excel default year); user must enter a valid year (YYYY)\";\r\n console.log(strErrorMessage);\r\n row_errors.push(strErrorMessage);\r\n }\r\n }\r\n else {\r\n // value may contain a time (HH:MM) or the time may be in a datetime string (YYYY-MM-DDTHH:mm:SS format).\r\n //console.log(\"value (before extracting time)= \" + value);\r\n if (value !== null) {\r\n var colonLocation = value.indexOf(\":\");\r\n value = value.substr(colonLocation - 2);\r\n if (value.length > 5)\r\n value = value.substr(0, 6);\r\n\r\n //console.log(\"value (after extracting time)= \" + value);\r\n var validTime = checkTime(value);\r\n //console.log(\"validTime (time is valid)= \" + validTime)\r\n if ((typeof validTime === 'undefined') || (value.length < 5)) {\r\n console.log(\"Error: Invalid time entry in \" + field.DbColumnName + \".\");\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Invalid entry. The entry must use the 24-hr military time format. Example: 8:00 a.m. = 08:00 and 5:15 p.m. = 17:15\");\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // value may contain a time (HH:MM) or the time may be in a datetime string (YYYY-MM-DDTHH:mm:SS format).\r\n console.log(\"value (before extracting time)= \" + value);\r\n if (value != null) {\r\n var colonLocation = value.indexOf(\":\");\r\n value = value.substr(colonLocation - 2);\r\n if (value.length > 5)\r\n value = value.substr(0, 6);\r\n\r\n //console.log(\"value (after extracting time)= \" + value);\r\n var validTime = checkTime(value);\r\n //console.log(\"validTime (time is valid)= \" + validTime)\r\n\r\n if ((typeof validTime === 'undefined') || (value.length < 5)) {\r\n console.log(\"Error: Invalid time entry in \" + field.DbColumnName + \".\");\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Invalid entry. The entry must use the 24-hr military time format. Example: 8:00 a.m. = 08:00 and 5:15 p.m. = 17:15\");\r\n }\r\n }\r\n }\r\n\t\t\t\t\t\t/* Before import change\r\n\t\t\t\t\t\tconsole.log(\"Found time field...\");\r\n\t\t\t\t\t\t//if(!stringIsNumber(value) && !is_empty(value))\r\n\t\t\t\t\t\tconsole.log(\"Value = \" + value);\r\n\t\t\t\t\t\tvar validTime = checkTime(value);\r\n\t\t\t\t\t\tconsole.log(\"validTime = \" + validTime)\r\n\t\t\t\t\t\tif ((typeof validTime === 'undefined') || (value.length < 5))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconsole.log(\"Error: Invalid time entry in \" + field.DbColumnName + \".\" );\r\n\t\t\t\t\t\t\trow_errors.push(\"[\"+field.DbColumnName+\"] Invalid entry. The entry must use the 24-hr military time format. Example: 8:00 a.m. = 08:00 and 5:15 p.m. = 17:15\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t*/\r\n }\r\n }\r\n else if (field.Field.Validation === \"nb\") // For a name, nb = not blank\r\n {\r\n console.log(\"Field name = \" + field.DbColumnName);\r\n if (field.DbColumnName === \"Surveyor\") {\r\n console.log(\"Found surveyor field...\");\r\n //if(!stringIsNumber(value) && !is_empty(value))\r\n console.log(\"Value = \" + value);\r\n if (value.length > 0)\r\n var validName = value;\r\n else\r\n console.log(\"validName = \" + validName);\r\n\r\n if (typeof validName === 'undefined') {\r\n console.log(\"Error: Invalid time entry in \" + field.DbColumnName + \".\");\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Invalid entry. [Surveyor] cannot be blank.\");\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n case 'easting':\r\n return checkNumber(row, field, value, [100000, 999999], row_errors);\r\n case 'northing':\r\n return checkNumber(row, field, value, [1000000, 9999999], row_errors);\r\n\r\n case 'number':\r\n //return checkNumber(row, field, value, field.Field.Validation, row_errors); // Chris' code.\r\n\r\n //console.log(\"Inside validateField, case number...\");\r\n //console.log(\"field.Field.DbColumnName = \" + field.Field.DbColumnName);\r\n //console.log(\"field.Field.Validation = \" + field.Field.Validation);\r\n //console.log(\"field.Field.DataType = \" + field.Field.DataType);\r\n //console.log(\"value = \" + value);\r\n //if (field.Field.DataType === 'float')\r\n //{\r\n //\treturn checkNumber(row, field, value, field.Field.Validation, row_errors);\r\n //}\r\n //console.log(\"typeof field.Field.Validation = \" + typeof field.Field.Validation);\r\n\r\n if (typeof field.Field.Validation === \"number\") {\r\n field.Field.Validation = \"\" + field.Field.Validation;\r\n //console.log(\"typeof field.Field.Validation = \" + typeof field.Field.Validation);\r\n }\r\n\r\n if ((field.Field.Validation !== null) && (field.Field.Validation.indexOf(\"null\") < 0)) {\r\n //console.log(\"Validation exists and is not null...\");\r\n if (field.Field.Validation === \"i\") // For an Integer\r\n //if (field.Field.Validation.indexOf(\"i\") > -1) // For an Integer\r\n {\r\n //console.log(\"Must be an integer...\");\r\n //console.log(\"Field name = \" + field.DbColumnName);\r\n //console.log(\"value = \" + value);\r\n if ((typeof value !== 'undefined') && (value !== null)) {\r\n //console.log(\"field.DbColumnName = \" + field.DbColumnName + \", value = \" + value);\r\n // First verify the number is an integer.\r\n var validNumber = checkInteger(value);\r\n //console.log(\"validNumber = \" + validNumber)\r\n if (typeof validNumber === 'undefined') {\r\n console.log(\"Error: Invalid entry in \" + field.DbColumnName + \".\");\r\n if ((field.DbColumnName === \"NumberAnglersObserved\") || (field.DbColumnName === \"NumberAnglersInterviewed\")) {\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Invalid entry in header. The entry must be a whole number. Example: 3\");\r\n }\r\n else {\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Invalid entry. The entry must be a whole number. Example: 3\");\r\n }\r\n }\r\n\r\n //console.log(\"NumberAnglersInterviewed = \" + value);\r\n if (field.DbColumnName === \"NumberAnglersInterviewed\") {\r\n //console.log(\"Found NumberAnglersInterviewed...\");\r\n ////console.log(\"scope is next...\");\r\n //console.dir(scope);\r\n if (row.NumberAnglersInterviewed > row.NumberAnglersObserved) {\r\n row_errors.push(\"[\" + field.DbColumnName + \"] cannot be more than [NumberAnglersObserved]\");\r\n }\r\n\r\n }\r\n\r\n if (field.DbColumnName === \"NumberAnglersObserved\") {\r\n //console.log(\"Found NumberAnglersObserved...\");\r\n ////console.log(\"scope is next...\");\r\n //console.dir(scope);\r\n if (row.NumberAnglersObserved < row.NumberAnglersInterviewed) {\r\n row_errors.push(\"[\" + field.DbColumnName + \"] cannot be less than [NumberAnglersInterviewed]\");\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n else if (field.Field.Validation === \"i4\") // 4-digit integer\r\n {\r\n //console.log(\"Must be a 4-digit integer...\");\r\n //console.log(\"Field name = \" + field.DbColumnName);\r\n //console.log(\"value = \" + value);\r\n if (is_empty(value)) {\r\n // Empty is OK. Do nothing.\r\n }\r\n else if ((typeof value !== 'undefined') && (value !== null)) {\r\n var strErrorMessage = \"[\" + field.DbColumnName + \"] Invalid entry. The entry must be a 4-digit whole number. Example: 1234\";\r\n\r\n var strValue = value.toString();\r\n var validNumber = checkInteger(value);\r\n //console.log(\"validNumber = \" + validNumber)\r\n if (typeof validNumber === 'undefined') {\r\n row_errors.push(strErrorMessage);\r\n }\r\n else if ((strValue.length < 4) || (strValue.length > 4)) {\r\n row_errors.push(strErrorMessage);\r\n }\r\n }\r\n }\r\n else if (field.Field.Validation === \"y\") // We are looking for a year (4-digit number)\r\n {\r\n //console.log(\"Field name = \" + field.DbColumnName);\r\n //console.log(\"value = \" + value);\r\n //console.log(\"typeof value = \" + typeof value);\r\n\r\n // The value can be blank. If present, value must be a 4-digit year.\r\n if ((typeof value !== 'undefined') && (value !== null) && (value.length > 0)) {\r\n\r\n let validNumber = check4Digits(value);\r\n if (typeof validNumber === 'undefined') {\r\n console.log(\"Error: Invalid entry in \" + field.DbColumnName + \".\");\r\n if (field.DbColumnName === \"YearReported\") {\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Invalid value for year. The entry must be a 4-digit year. Example: 2017\");\r\n }\r\n else {\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Invalid entry. The entry must be a whole number. Example: 3\");\r\n }\r\n }\r\n }\r\n }\r\n else if (field.Field.Validation.indexOf(\"4d\") > -1) // No more than 4 decimal places\r\n {\r\n //console.log(\"Inside check for 4d...\");\r\n if ((typeof value !== 'undefined') && (value !== null)) {\r\n var strValue = value.toString();\r\n var strDecimalPart = \"\";\r\n var intDecimalLoc = strValue.indexOf(\".\");\r\n\r\n if (intDecimalLoc > -1) {\r\n strDecimalPart = strValue.substring(intDecimalLoc + 1);\r\n if (strDecimalPart.length > 4)\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Invalid entry. The entry can only have 4 decimal places.\")\r\n }\r\n }\r\n }\r\n //else if (field.Field.DataType === 'float')\r\n else if (field.Field.DataType.indexOf(\"float\") > -1) {\r\n //console.log(\"We have a float type...\");\r\n return checkNumber(row, field, value, field.Field.Validation, row_errors);\r\n }\r\n else {\r\n return checkNumber(row, field, value, field.Field.Validation, row_errors);\r\n }\r\n }\r\n //else if (field.Field.DataType === 'float')\r\n //{\r\n //\treturn checkNumber(row, field, value, field.Field.Validation, row_errors);\r\n //}\r\n break;\r\n case 'checkbox':\r\n //anything here?\r\n break;\r\n\r\n }\r\n\r\n\r\n // You can test validation rules here\r\n //------------------------------------\r\n /*\r\n if(field.DbColumnName == \"Disposition\")\r\n {\r\n console.log(\"Disposition value: \" + value);\r\n var testRule =\r\n {\r\n \"OnValidate\":\r\n \"if((value == 'O' || value == 'T') && (scope.FieldLookup['ReleaseSite'] && !row['ReleaseSite'])) row_errors.push('[ReleaseSite] Disposition choice requires ReleaseSite');\"\r\n };\r\n\r\n field.Field.Rule = angular.fromJson(testRule);\r\n }\r\n */\r\n /*\r\n console.log(field.DbColumnName);\r\n if(field.DbColumnName == \"FinClip\")\r\n {\r\n console.log(\"Origin value: \" + value);\r\n var testRule =\r\n {\r\n \"OnValidate\":\r\n \"row['Origin'] = 'NAT';if(!(!row['FinClip'] || (row['FinClip'] == 'NONE' || row['FinClip'] == 'NA')) || ( row['Tag'] == 'WIRE')) row['Origin'] = 'HAT';\"\r\n };\r\n\r\n field.Field.Rule = angular.fromJson(testRule);\r\n }\r\n */\r\n\r\n fireRules(\"OnValidate\", row, field, value, scope.row, row_errors, scope);\r\n\r\n}\r\n\r\n\r\n\r\n//convert a F to C\r\nexport function convertFtoC(fahr) {\r\n if (fahr != null) {\r\n var celsius = ((parseFloat(fahr) - 32) * (5 / 9)).toFixed(NUM_FLOAT_DIGITS);\r\n //if (!isNaN(celsius))\r\n // return celsius;\r\n\r\n if (isNumber(celsius))\r\n return celsius;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport function convertCtoF(cels) {\r\n if (cels != null)\r\n var fahr = (parseFloat(cels) * 9 / 5 + 32).toFixed(NUM_FLOAT_DIGITS);\r\n\r\n // isNaN is not working correctly (per documentation).\r\n // This article has a solution.\r\n //https://stackoverflow.com/questions/35048081/javascript-isnan-function-not-working\r\n //if (!isNaN(fahr))\r\n // return fahr;\r\n\r\n if (ItIsNumber(fahr.toString()))\r\n return fahr;\r\n\r\n return null;\r\n}\r\n\r\nexport function ItIsNumber (strText)\r\n{\r\n //var found = fahr.search(/^(\\d*\\.?\\d*)$/);\r\n var found = strText.search(/^(\\d*\\.?\\d+)$/);\r\n //Change to ^(\\d*\\.?\\d+)$ if you don't want the number to end with a . such as 2.\r\n //Currently validates .2, 0.2, 2.0 and 2.\r\n if(found > -1) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n\r\n\r\nexport function previousActivity(activities, routeId, $location) {\r\n var previousId;\r\n\r\n //spin through the activities - when we get to the one we're on, send the one before\r\n // (unless we are on the first one, then do nothing)\r\n\r\n for (var i = 0; i < activities.length; i++) {\r\n var activity = activities[i];\r\n\r\n if (activity.Id == routeId) {\r\n if (previousId)\r\n break; // meaning the previousId is set already; we are good to go.\r\n else {\r\n previousId = activity.Id; //meaning we are on the first one.\r\n break;\r\n }\r\n }\r\n previousId = activity.Id;\r\n };\r\n\r\n $location.path(\"/dataview/\" + previousId);\r\n};\r\n\r\nexport function nextActivity(activities, routeId, $location) {\r\n var nextId;\r\n var found = false;\r\n\r\n for (var i = 0; i < activities.length; i++) {\r\n var activity = activities[i];\r\n\r\n if (found) {\r\n nextId = activity.Id;\r\n break;\r\n }\r\n\r\n if (activity.Id == routeId) {\r\n found = true;\r\n nextId = activity.Id; // in case we don't get another one.\r\n }\r\n\r\n };\r\n\r\n $location.path(\"/dataview/\" + nextId);\r\n}\r\n\r\n\r\n\r\n\r\nexport function fireRules(type, row, field, value, headers, errors, scope) {\r\n //console.log(\"firerules: \" + type);\r\n //console.dir(field);\r\n var row_errors = errors; //older rules use \"row_errors\"\r\n try {\r\n //fire Field rule if it exists -- OnChange\r\n if (field.Field && field.Field.Rule && field.Field.Rule[type]) {\r\n //console.log(\"Dataset field rule: \" + field.Field.Rule[type]);\r\n if (type == \"DefaultValue\")\r\n field.DefaultValue = field.Field.Rule[type];\r\n else\r\n eval(field.Field.Rule[type]);\r\n }\r\n\r\n //fire Datafield rule if it exists -- OnChange\r\n if (field.Rule && field.Rule[type]) {\r\n console.log(\"Master field rule: \" + field.Rule[type]);\r\n if (type == \"DefaultValue\")\r\n field.DefaultValue = field.Rule[type];\r\n else\r\n eval(field.Rule[type]);\r\n }\r\n } catch (e) {\r\n //so we don't die if the rule fails....\r\n console.dir(e);\r\n }\r\n\r\n}\r\n","var modal_quick_add_accuracycheck = ['$scope', '$uibModalInstance', 'ProjectService', '$rootScope',\r\n function ($scope, $uibModalInstance, ProjectService, $rootScope){\r\n\r\n $scope.ac_row = {};\r\n\r\n $scope.save = function(){\r\n\r\n var new_AC = ProjectService.saveInstrumentAccuracyCheck($scope.row.Activity.Instrument.Id, $scope.ac_row);\r\n new_AC.$promise.then(function(){\r\n $uibModalInstance.close(new_AC);\r\n });\r\n };\r\n\r\n $scope.cancel = function(){\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_quick_add_accuracycheck;\r\n","// defines the habitat module\r\nimport * as angular from 'angular';\r\n// require([\r\n//controllers\r\nimport modal_add_habitat from \"./components/habitat-sites/modal-add-habitat-item\";\r\nimport page_sites from \"./components/habitat-sites/page-sites\";\r\nimport modal_create_habitat_subproject from \"./components/habitat-sites/modal-create-habitat-subproject\";\r\nimport {downgradeComponent} from \"@angular/upgrade/static\";\r\nimport permit_module from \"../permits/permit-module\";\r\nimport {HabitatMapComponent} from \"../../../app/map/habitat-map/habitat-map.component\";\r\n\r\n// ], function () {\r\n\r\nconst habitat_module = angular.module('HabitatModule', ['ui.bootstrap', 'ngResource']);\r\nhabitat_module.controller('ModalAddHabitatItemCtrl', modal_add_habitat);\r\nhabitat_module.controller('ModalCreateHabSubprojectCtrl', modal_create_habitat_subproject);\r\nhabitat_module.controller('HabitatSitesCtrl', page_sites);\r\npermit_module.directive('habitatMap', downgradeComponent({component: HabitatMapComponent}));\r\n\r\nexport default habitat_module;\r\n\r\n\r\n\r\n","//CDMSTimeCellValidator - extends CellValidator\r\n\r\n// validates time cells.\r\n\r\nimport * as moment from 'moment';\r\nimport {CellValidator, ValidationError} from \"../cell-validation\";\r\nimport {stringIsTime} from \"../../../common-functions\";\r\n\r\n\r\nexport function CDMSTimeCellValidator(cdms_field) {\r\n this.base = CellValidator;\r\n //console.log(\"calling constructor?\");\r\n this.base(cdms_field);\r\n //this.init(cdms_field);\r\n}\r\nCDMSTimeCellValidator.prototype = new CellValidator;\r\n\r\nCDMSTimeCellValidator.prototype.validateFieldControlTypeValidation = function (data) {\r\n\r\n/*\r\n //george's time checking\r\n\r\n var value = data.value;\r\n\r\n var timeContentValid = true;\r\n\r\n if (!is_empty(value) && !stringIsTime(value))\r\n timeContentValid = false;\r\n else if (value.indexOf(\".\") > -1)\r\n timeContentValid = false;\r\n else if (value.indexOf(\":\") === -1)\r\n timeContentValid = false;\r\n\r\n if (!timeContentValid)\r\n this.errors.push(new ValidationError(this.cdms_field, \"Value is not a valid time (hh:mm).\"));\r\n\r\n*/\r\n\r\n if (data.value == null || data.value == \"\")\r\n return this.errors;\r\n\r\n if ((data.value.length < 19) && (!stringIsTime(data.value))) {\r\n this.errors.push(new ValidationError(this.cdms_field, \"Value is either not a time, or is in an invalid time format; please use hh:mm format.\"));\r\n return this.errors;\r\n }\r\n\r\n var the_date = moment(data.value, [\"HH:mm\"], true);\r\n\r\n if (!the_date.isValid()) {\r\n the_date = moment(data.value); //is it a \"full\" date?\r\n }\r\n\r\n if (!the_date.isValid()) {\r\n this.errors.push(new ValidationError(this.cdms_field, \"Value is not a time (hh:mm).\"));\r\n }\r\n else // it IS a valid date value, make sure it isn't older than 1901!\r\n {\r\n if (the_date.year() < 1901)\r\n this.errors.push(new ValidationError(this.cdms_field, \"Year is before 1901 (set from Excel?); Please update Year.\"));\r\n }\r\n\r\n return this.errors;\r\n};\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import * as angular from 'angular';\r\n\r\nvar admin_edit_dataset_workflow = ['$scope', '$uibModal', '$timeout', '$routeParams', 'DatasetService', 'CommonService','ProjectService','AdminService',\r\n function ($scope, $uibModal, $timeout, $routeParams, DatasetService, CommonService, ProjectService, AdminService) {\r\n\r\n $scope.OnTab = \"Workflow\";\r\n $scope.SaveMessage = null;\r\n $scope.dataset = DatasetService.getDataset($routeParams.Id);\r\n\r\n $scope.dataset.$promise.then(function () {\r\n if(typeof $scope.dataset.Config.Notification === 'undefined'){\r\n $scope.dataset.Config.Notification = {};\r\n }\r\n });\r\n\r\n\r\n $scope.saveConfig = function () {\r\n $scope.SaveMessage = \"Saving...\";\r\n $scope.ErrorMessage = \"\";\r\n\r\n //validation\r\n if($scope.dataset.Config.Notification.ChkEmailOnFieldChange && !$scope.dataset.Config.Notification.EmailOnFieldChange){\r\n $scope.ErrorMessage = \"Choose a field to watch for changes or uncheck Email on Field Change\";\r\n $scope.SaveMessage = \"\";\r\n return;\r\n }\r\n\r\n if($scope.dataset.Config.Notification.ChkEmailToAddress && !$scope.dataset.Config.Notification.EmailToAddress){\r\n $scope.ErrorMessage = \"Enter an email address to notify or uncheck Email to Address\";\r\n $scope.SaveMessage = \"\";\r\n return;\r\n }\r\n\r\n if($scope.dataset.Config.Notification.ChkEmailToField && !$scope.dataset.Config.Notification.EmailToField){\r\n $scope.ErrorMessage = \"Choose a field with an email address to notify or uncheck Field to Email\";\r\n $scope.SaveMessage = \"\";\r\n return;\r\n }\r\n\r\n console.dir($scope.dataset.Config);\r\n\r\n $scope.dataset.Config = angular.toJson($scope.dataset.Config);\r\n\r\n var promise = DatasetService.saveDataset($scope.dataset );\r\n\r\n promise.$promise.then(function () {\r\n $scope.dataset.Config = angular.fromJson(promise.Config);\r\n $scope.SaveMessage = \"Save successful.\";\r\n }, function(error) {\r\n console.log(\"something went wrong:\");\r\n console.dir(promise);\r\n $scope.SaveMessage = \"\";\r\n $scope.ErrorMessage = \"Error. Try again or contact your administrator\"\r\n });\r\n };\r\n\r\n }\r\n\r\n];\r\n\r\nexport default admin_edit_dataset_workflow;\r\n","import {DATASTORE_ACTIVITYSYSTEMFIELDS} from \"../../../../config\";\r\nimport {getByField} from \"../../../common/common-functions\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar admin_edit_dataset_fields = ['$scope', '$uibModal', '$timeout', '$routeParams', 'DatasetService', 'CommonService','ProjectService','AdminService',\r\n function ($scope, $uibModal, $timeout, $routeParams, DatasetService, CommonService, ProjectService, AdminService ){\r\n\r\n $scope.OnTab = \"Fields\";\r\n\r\n\t\t$scope.dataset = DatasetService.getDataset($routeParams.Id);\r\n\t\t$scope.FieldLookup = {};\r\n\r\n $scope.MasterFields = [];\r\n $scope.allFields = [];\r\n\r\n\t\t//$scope.Sources = CommonService.getSources();\r\n\t\t//$scope.Instruments = ProjectService.getInstruments();\r\n\r\n\r\n var EditLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openEditModal(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var delBtn = document.createElement('a'); delBtn.href = '#'; delBtn.innerHTML = 'Remove';\r\n delBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.removeField(param.data);\r\n });\r\n div.appendChild(delBtn);\r\n\r\n return div;\r\n };\r\n\r\n $scope.fieldGridOptions = {\r\n rowSelection: 'single',\r\n suppressPropertyNamesCheck: true, // this removes the console warning for custom properties, this is a known problem, see https://github.com/ag-grid/ag-grid/issues/2320\r\n columnDefs:\r\n [\r\n { colId: 'EditLinks', cellRenderer: EditLinksTemplate, width: 120, menuTabs: [] },\r\n { field: 'FieldRoleId', headerName: 'Field Role', width: 120, menuTabs: ['filterMenuTab'], filter: true },\r\n { field: 'Field.DbColumnName', headerName: 'DbColumnName', width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'Label', headerName: 'Label', width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'Field.Description', headerName: 'Master Description', cellStyle: { 'white-space': 'normal' }, width: 300, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'OrderIndex', headerName: 'Order Index', sort:'asc', width: 120, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'ColumnIndex', headerName: 'Column Index', width: 120, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'ControlType', headerName: 'Control Type', width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'Field.PossibleValues', headerName: 'Master Possible Values', width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'Validation', headerName: 'Local Validation', width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'Rule', headerName: 'Local Rule', width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'DataType', headerName: 'DataType', width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'Field.ControlType', headerName: 'Master Control Type', width: 250, menuTabs: ['filterMenuTab'], },\r\n { field: 'Field.Name', headerName: 'Master Name', width: 180, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'Field.Units', headerName: 'Master Units', width: 200, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'Field.DataSource', headerName: 'Master Data Source', width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'Field.Validation', headerName: 'Master Validation', width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'Field.Rule', headerName: 'Master Rule', width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n ],\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n\r\n $scope.activateGrid = function () {\r\n\r\n var ag_grid_div = document.querySelector('#fields-grid') as HTMLElement; //get the container id...\r\n\r\n if (typeof $scope.ag_grid_div === 'undefined')\r\n $scope.ag_grid_div = new Grid(ag_grid_div, $scope.fieldGridOptions); //bind the grid to it.\r\n\r\n $scope.fieldGridOptions.api.showLoadingOverlay(); //show loading...\r\n $scope.fieldGridOptions.api.setRowData($scope.dataset.Fields);\r\n //$scope.galleryGridOptions.api.sizeColumnsToFit();\r\n\r\n\r\n };\r\n\r\n\r\n\t\t$scope.dataset.$promise.then( function(){\r\n\r\n var promise = AdminService.getMasterFields($scope.dataset.Datastore.Id);\r\n\r\n promise.$promise.then(function (data) {\r\n $scope.allFields = promise;\r\n\r\n //also add in the activity system fields\r\n if($scope.dataset.Datastore.TableType == \"Header+Detail\") {\r\n\r\n var systemFields = AdminService.getMasterFields(DATASTORE_ACTIVITYSYSTEMFIELDS);\r\n systemFields.$promise.then(function () {\r\n systemFields.forEach(function (systemfield) {\r\n $scope.allFields.push(systemfield);\r\n });\r\n\r\n });\r\n }\r\n\r\n $scope.populateAddFieldDropdown();\r\n\r\n });\r\n\r\n $scope.activateGrid();\r\n\r\n\r\n\t\t});\r\n\r\n\r\n\t\t$scope.removeField = function(params)\r\n\t\t{\r\n\r\n var removed_field = AdminService.removeField($scope.dataset.Id, params.FieldId);\r\n\r\n removed_field.$promise.then(function () {\r\n $scope.dataset.Fields.forEach(function (field_removed,index) {\r\n console.dir(field_removed);\r\n if (field_removed.FieldId == params.FieldId) {\r\n console.dir(\"found field to remove : \" + field_removed.FieldId);\r\n $scope.dataset.Fields.splice(index, 1);\r\n }\r\n });\r\n\r\n $scope.populateAddFieldDropdown();\r\n $scope.fieldGridOptions.api.setRowData($scope.dataset.Fields);\r\n });\r\n\r\n\r\n\r\n\t\t}\r\n\r\n\t\t$scope.addMasterField = function()\r\n\t\t{\r\n\t\t\t// Note: Given a list with zero-based index (0, 1, 2, 3, etc.), like we have here.\r\n\t\t\t// With angular, when you select the first item in a list, it often (always?) shows blank (null).\r\n\t\t\t// The problem does not present itself for items 1 and following.\r\n\t\t\t// This problem is a known issue (see this article: http://stackoverflow.com/questions/12654631/why-does-angularjs-include-an-empty-option-in-select).\r\n\t\t\t// To avoid this problem, we access the first item (0), using index 0.\r\n\t\t\tif ($scope.newField === null)\r\n\t\t\t\t$scope.newField = $scope.MasterFields[0].Id;\r\n\r\n\t\t\tconsole.log(\"$scope.newField = \" + $scope.newField);\r\n console.dir($scope.newField);\r\n\r\n\t\t\tvar result = AdminService.addMasterFieldToDataset($scope.dataset.Id, $scope.newField);\r\n\r\n result.$promise.then(function () {\r\n console.dir(result);\r\n $scope.dataset.Fields.push(result);\r\n $scope.populateAddFieldDropdown();\r\n $scope.fieldGridOptions.api.setRowData($scope.dataset.Fields);\r\n //$scope.newField = $scope.MasterFields[0].Id;\r\n\r\n //$(\"select2Options\").val('').change();\r\n\r\n });\r\n\t\t};\r\n\r\n $scope.openEditModal = function (a_selection, a_callback) {\r\n $scope.SaveMessage = null;\r\n $scope.field_to_edit = a_selection;\r\n $scope.callback = a_callback;\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/modal-edit-dataset-field.html',\r\n controller: 'ModalEditDatasetFieldCtrl',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_field) {\r\n //replace that field in the grid with the one we got back\r\n $scope.dataset.Fields.forEach(function (existing_field,index) {\r\n if (existing_field.FieldId == saved_field.FieldId) {\r\n console.dir(\"found field to replace : \" + existing_field.FieldId);\r\n $scope.dataset.Fields[index] = saved_field;\r\n }\r\n });\r\n\r\n $scope.populateAddFieldDropdown();\r\n $scope.fieldGridOptions.api.setRowData($scope.dataset.Fields);\r\n $scope.SaveMessage = \"Success.\";\r\n });\r\n };\r\n\r\n $scope.populateAddFieldDropdown = function () {\r\n $scope.MasterFields.length = 0;\r\n //make sure incoming master fields aren't already in the dataset fields\r\n $scope.allFields.forEach(function (field, index) {\r\n if (!getByField($scope.dataset.Fields, field.Id, 'FieldId')) {\r\n $scope.MasterFields.push(field);\r\n }\r\n });\r\n };\r\n\t}\r\n];\r\n\r\nexport default admin_edit_dataset_fields;\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJoYWJpdGF0LW1hcC5jb21wb25lbnQuc2NzcyJ9 */\";","// all dataset (activities, datastore) related factories and DatasetService.\r\n\r\nimport * as angular from 'angular';\r\n\r\n\r\nconst dataset_service = ['$q',\r\n 'DatasetFiles',\r\n 'Activities',\r\n 'GetSeasons',\r\n 'SaveSeason',\r\n 'RemoveSeason',\r\n 'ActivitiesForView',\r\n 'CreelSurveyActivitiesForView',\r\n 'Dataset',\r\n 'Datasets',\r\n 'Data',\r\n 'SaveActivitiesAction',\r\n 'UpdateActivitiesAction',\r\n 'QueryActivitiesAction',\r\n 'ExportActivitiesAction',\r\n 'DeleteActivitiesAction',\r\n 'SetQaStatusAction',\r\n 'GetDatastore',\r\n 'GetAllDatastores',\r\n 'GetDatastoreDatasets',\r\n 'GetHeadersDataForDataset',\r\n 'DeleteDatasetFile',\r\n 'DeleteMultiPanelFile',\r\n 'GetRelationData',\r\n 'MigrationYears',\r\n 'RunYears',\r\n 'ReportYears',\r\n 'BenthicSampleYears',\r\n 'DriftSampleYears',\r\n 'SpawningYears',\r\n 'BroodYears',\r\n 'OutmigrationYears',\r\n 'SpecificActivities',\r\n 'SpecificActivitiesWithBounds',\r\n 'SpecificWaterTempActivities',\r\n 'SpecificCreelSurveyActivities',\r\n 'SpecificScrewTrapActivities',\r\n 'AddDatasetToProject',\r\n 'UpdateDataset',\r\n 'HasExistingActivity',\r\n 'GetDatasetsList',\r\n 'GetTableData',\r\n 'SaveTableData',\r\n 'DeleteTableData',\r\n 'GetTableFiles',\r\n 'GetChildTableData',\r\n 'DeleteTableFile',\r\n 'TableNotification',\r\n 'GetAllDatasetsList',\r\n function ($q,\r\n DatasetFiles,\r\n Activities,\r\n GetSeasons,\r\n SaveSeason,\r\n RemoveSeason,\r\n ActivitiesForView,\r\n CreelSurveyActivitiesForView,\r\n Dataset,\r\n Datasets,\r\n Data,\r\n SaveActivitiesAction,\r\n UpdateActivitiesAction,\r\n QueryActivitiesAction,\r\n ExportActivitiesAction,\r\n DeleteActivitiesAction,\r\n SetQaStatusAction,\r\n GetDatastore,\r\n GetAllDatastores,\r\n GetDatastoreDatasets,\r\n GetHeadersDataForDataset,\r\n DeleteDatasetFile,\r\n DeleteMultiPanelFile,\r\n GetRelationData,\r\n MigrationYears,\r\n RunYears,\r\n ReportYears,\r\n BenthicSampleYears,\r\n DriftSampleYears,\r\n SpawningYears,\r\n BroodYears,\r\n OutmigrationYears,\r\n SpecificActivities,\r\n SpecificActivitiesWithBounds,\r\n SpecificWaterTempActivities,\r\n SpecificCreelSurveyActivities,\r\n SpecificScrewTrapActivities,\r\n AddDatasetToProject,\r\n UpdateDataset,\r\n HasExistingActivity,\r\n GetDatasetsList,\r\n GetTableData,\r\n SaveTableData,\r\n DeleteTableData,\r\n GetTableFiles,\r\n GetChildTableData,\r\n DeleteTableFile,\r\n TableNotification,\r\n GetAllDatasetsList\r\n ) {\r\n\r\n var service = {\r\n\r\n datastoreId: null,\r\n dataset: null,\r\n\r\n clearDataset: function () {\r\n service.dataset = null;\r\n },\r\n\r\n getDatastore: function (id) {\r\n return GetDatastore.query({id: id});\r\n },\r\n\r\n getDatastores: function () {\r\n return GetAllDatastores.query();\r\n },\r\n\r\n getDatastoreDatasets: function (id) {\r\n return GetDatastoreDatasets.query({id: id});\r\n },\r\n\r\n getDataset: function (datasetId) {\r\n //if (service.dataset && service.dataset.Id == datasetId)\r\n // return service.dataset;\r\n\r\n console.log(\"Inside dataset-service.js, getDataset...\");\r\n\r\n service.dataset = Dataset.query({id: datasetId});\r\n\r\n //load our configuration if there is one\r\n service.dataset.$promise.then(function () {\r\n service.configureDataset(service.dataset);\r\n console.log(\"service dataset config included\");\r\n console.log(\"service.dataset = \" + service.dataset);\r\n });\r\n\r\n return service.dataset;\r\n },\r\n\r\n getDatasets: function () {\r\n return Datasets.query();\r\n },\r\n\r\n getDatasetsList: function () {\r\n return GetDatasetsList.query();\r\n },\r\n\r\n getAllDatasetsList: function () {\r\n return GetAllDatasetsList.query();\r\n },\r\n\r\n getTableData: function (datasetId) {\r\n return GetTableData.query({id: datasetId})\r\n },\r\n\r\n saveTableData: function (dataset, data) {\r\n return SaveTableData.save({DatasetId: dataset.Id, TableData: data});\r\n },\r\n\r\n // deleteTableFile: function (projectId, subprojectId, dataset, itemId, file) {\r\n // return DeleteTableFile.save({ProjectId: projectId, SubprojectId: subprojectId, DatasetId: dataset.Id, ItemId: itemId, File: file});\r\n // },\r\n deleteTableFile: function (theType, projectId, datasetId, file, item) {\r\n return DeleteTableFile.save({Type: theType, ProjectId: projectId, DatasetId: datasetId, RemoveFile: file, Item: item});\r\n },\r\n\r\n deleteDataTableRow: function (dataset, data) {\r\n return DeleteTableData.save({DatasetId: dataset.Id, TableData: data});\r\n },\r\n\r\n getTableFiles: function (projectId, parentId, datasetId) {\r\n return GetTableFiles.save({ProjectId: projectId, ParentId: parentId, DatasetId: datasetId})\r\n },\r\n\r\n getChildTableData: function (datasetId, parentId) {\r\n return GetChildTableData.save({DatasetId: datasetId, ParentId: parentId})\r\n },\r\n\r\n tableNotification: function (toAddress, message) {\r\n return TableNotification.save({ToAddress: toAddress, Message: message})\r\n },\r\n\r\n //configureDataset: function(dataset)\r\n configureDataset: function (dataset, scope?) {\r\n //console.log(\"configuring dataset.Name = \" + dataset.Name);\r\n //default page routes\r\n dataset.activitiesRoute = \"activities\"; //default route -- when they click to go to \"activities\" this is the route they should use.\r\n\r\n if (typeof dataset.Config == 'undefined' || dataset.Config == null || dataset.Config == \"NULL\" || dataset.Config == \"null\") {\r\n dataset.Config = {};\r\n return;\r\n }\r\n\r\n try {\r\n dataset.Config = angular.fromJson(dataset.Config);\r\n } catch (e) {\r\n console.error(\"Could not parse Config for this dataset:\");\r\n console.dir(dataset);\r\n }\r\n\r\n //if there are page routes in configuration, set them in our dataset\r\n if (dataset.Config.ActivitiesPage && dataset.Config.ActivitiesPage.Route)\r\n dataset.activitiesRoute = dataset.Config.ActivitiesPage.Route;\r\n\r\n /*\r\n in the new permissions - the project wouldn't have permission so neither would the dataset\r\n so to restrict access to a dataset, you'd manage permissions through the project.\r\n\r\n //part of configuration is authorization. If the user isn't authorized\r\n // for this dataset, bump them to error\r\n if (typeof dataset.Config.RestrictRoles !== 'undefined') {\r\n var authorized = false;\r\n for (var i = dataset.Config.RestrictRoles.length - 1; i >= 0; i--) {\r\n if (angular.rootScope.Profile.hasRole(dataset.Config.RestrictRoles[i]))\r\n authorized = true;\r\n };\r\n\r\n if (!authorized) {\r\n\r\n if (typeof scope !== 'undefined') {\r\n scope.AuthorizedToViewProject = false;\r\n }\r\n else {\r\n angular.rootScope.go('/unauthorized');\r\n }\r\n }\r\n\r\n //console.dir(angular.rootScope.Profile);\r\n //console.dir(dataset.Config.RestrictRoles);\r\n }\r\n */\r\n\r\n },\r\n\r\n getHeadersDataForDataset: function (datasetId) {\r\n return GetHeadersDataForDataset.query({id: datasetId});\r\n },\r\n\r\n getActivityData: function (id) {\r\n return Data.query({id: id});\r\n },\r\n\r\n getActivities: function (id) {\r\n return Activities.query({id: id});\r\n },\r\n\r\n getSeasons: function (id) {\r\n console.log(\"Inside dataset-service.js, getSeasons...\");\r\n return GetSeasons.query({id: id});\r\n },\r\n\r\n checkForDuplicateActivity: function (query) {\r\n return HasExistingActivity.save(query);\r\n },\r\n\r\n saveSeason: function (projectId, datasetId, userId, season, saveResults) {\r\n console.log(\"Inside saveSeason...starting save...\");\r\n console.log(\"season is next...\");\r\n console.dir(season);\r\n\r\n season.saving = true; //tell everyone we are saving\r\n season.UserId = userId;\r\n season.DatasetId = datasetId;\r\n season.ProjectId = projectId;\r\n return SaveSeason.save(season, function (data) {\r\n season.success = \"Save successful.\";\r\n season.errors = false;\r\n console.log(\"Initialized season.errors...\");\r\n season.new_record = data;\r\n console.log(\"Success!\");\r\n\r\n season.saving = false; //and... we're done.\r\n }, function (data) {\r\n season.success = false;\r\n // activities.errors = {saveError: \"There was a problem saving your data. Please try again or contact support.\"}; // Original line.\r\n // Let's provide a little more information that will help us figure out what happened.\r\n var theErrorText = \"\";\r\n if (typeof data.message !== 'undefined')\r\n theErrorText = data.message;\r\n else if (typeof data.data !== 'undefined') {\r\n if (typeof data.data.ExceptionMessage !== 'undefined') {\r\n theErrorText = data.data.ExceptionMessage;\r\n console.log(\"Save error: theErrorText = \" + theErrorText);\r\n } else {\r\n theErrorText = data.data;\r\n var titleStartLoc = theErrorText.indexOf(\"\") + 7;\r\n console.log(\"titleStartLoc = \" + titleStartLoc);\r\n var titleEndLoc = theErrorText.indexOf(\"\");\r\n console.log(\"titleEndLoc = \" + titleEndLoc);\r\n theErrorText = theErrorText.substr(titleStartLoc, titleEndLoc - titleStartLoc);\r\n }\r\n }\r\n var theErrorMessage = \"There was a problem saving your data (\" + theErrorText + \"). Please try again or contact support.\";\r\n season.errors = {saveError: theErrorMessage};\r\n console.log(\"Failure!\");\r\n console.log(theErrorText);\r\n console.log(theErrorMessage);\r\n console.dir(data);\r\n season.saving = false; //and... we're done.\r\n });\r\n },\r\n\r\n removeSeason: function (projectId, datasetId, seasonId) {\r\n return RemoveSeason.save({ProjectId: projectId, DatasetId: datasetId, SeasonId: seasonId});\r\n },\r\n\r\n getActivitiesForView: function (id) {\r\n return ActivitiesForView.query({id: id});\r\n },\r\n\r\n getCreelSurveyActivitiesForView: function (id) {\r\n return CreelSurveyActivitiesForView.query({id: id});\r\n },\r\n\r\n saveDataset: function (a_dataset) {\r\n return UpdateDataset.save({id: a_dataset.Id, dataset: a_dataset});\r\n },\r\n getDatasetFiles: function (datasetId) {\r\n console.log(\"Inside getDatasetFiles...\");\r\n console.log(\"datasetId = \" + datasetId);\r\n //this.getProject(projectId); //set our local project to the one selected\r\n return DatasetFiles.query({id: datasetId});\r\n },\r\n\r\n deleteDatasetFile: function (projectId, datasetId, file) {\r\n console.log(\"Inside deleteDatasetFile\");\r\n console.log(\"ProjectId = \" + projectId + \", DatasetId = \" + datasetId + \", attempting to delete file...\");\r\n console.dir(file);\r\n return DeleteDatasetFile.save({ProjectId: projectId, DatasetId: datasetId, File: file});\r\n },\r\n\r\n deleteMultiPanelFile: function (theType, projectId, datasetId, item) {\r\n console.log(\"Inside deleteMultiPanelFile\");\r\n console.log(\"theType = \" + theType + \", ProjectId = \" + projectId + \", DatasetId = \" + datasetId + \", attempting to delete file...\");\r\n console.dir(item);\r\n return DeleteMultiPanelFile.save({Type: theType, ProjectId: projectId, DatasetId: datasetId, Item: item});\r\n },\r\n\r\n //NB: looks like this isn't used.\r\n //this should give you the possible QA Statuses for this dataset's rows\r\n getPossibleRowQAStatuses: function (id) {\r\n //for now we fake it:\r\n return [{\r\n id: 1,\r\n name: \"ok\",\r\n },\r\n {\r\n id: 2,\r\n name: \"error\",\r\n }\r\n ];\r\n\r\n },\r\n\r\n queryActivities: function (query) {\r\n //using \"save\" here because we need to POST our query criteria object\r\n //return QueryActivitiesAction.save(query.criteria);\r\n return QueryActivitiesAction.save(query.criteria);\r\n\r\n },\r\n\r\n exportActivities: function (query) {\r\n ExportActivitiesAction.save(query.criteria, function (data) {\r\n console.log(\"success!\");\r\n query.loading = false;\r\n query.exportedFile = data;\r\n console.dir(data);\r\n //console.dir(angular.fromJson(data));\r\n }, function (data) {\r\n console.log(\"Failure!\");\r\n query.failed = true;\r\n query.loading = false;\r\n });\r\n },\r\n\r\n //updateActivities: function(userId, datasetId, activities)\r\n updateActivities: function (payload) {\r\n return UpdateActivitiesAction.save(payload);\r\n /*\r\n , function (data) {\r\n saveResult.success = \"Update successful.\";\r\n saveResult.error = false;\r\n console.log(\"Success!\");\r\n saveResult.saving = false; //and... we're done.\r\n }, function (data) {\r\n saveResult.success = false;\r\n saveResult.error = \"There was a problem saving your data. Please try again or contact support.\" ;\r\n console.log(\"Failure!\");\r\n console.dir(data);\r\n saveResult.saving = false; //and... we're done.\r\n });*/\r\n\r\n },\r\n\r\n addDatasetToProject: function (a_datastoreId, a_projectId, a_fields) {\r\n return AddDatasetToProject.save({DatastoreId: a_datastoreId, ProjectId: a_projectId, DatasetFields: a_fields});\r\n },\r\n\r\n saveActivities: function (payload) {\r\n console.log(\"Inside data-service.ts, saveActivities...\");\r\n return SaveActivitiesAction.save(payload);\r\n /*\r\n , function (data) {\r\n //activities.success = \"Save successful.\";\r\n activities.errors = false;\r\n console.log(\"Set activities.errors...\");\r\n activities.new_records = data;\r\n console.log(\"Success!\");\r\n // Situation 1: The user has NOT clicked Add Section yet, but has clicked Save and close.\r\n if (typeof activities.addNewSection === 'undefined') {\r\n console.log(\"Save and close save successful..., Add Section not clicked.\");\r\n activities.success = \"Save successful.\"; // This line closes the page after a successful save; this is for Save and close.\r\n }\r\n // Situation 2: The user has clicked Add Section on that page, before clicking Save and close on the last record entered.\r\n else if (activities.addNewSection === false) {\r\n console.log(\"Save and close save successful..., Add Section previously clicked.\");\r\n activities.success = \"Save successful.\"; // This line closes the page after a successful save; this is for Save and close.\r\n }\r\n // Situation 3: The user has only clicked Add Section.\r\n else if (activities.addNewSection === true) {\r\n console.log(\"Add Section save successful..., Add Section only clicked.\");\r\n activities.addNewSection = false; // This flag indicates to the Data Entry form that we are adding a new section, not save and close.\r\n }\r\n\r\n activities.saving = false; //and... we're done.\r\n }, function (data) {\r\n activities.success = false;\r\n // activities.errors = {saveError: \"There was a problem saving your data. Please try again or contact support.\"}; // Original line.\r\n // Let's provide a little more information that will help us figure out what happened.\r\n var theErrorText = \"\";\r\n if (typeof data.message !== 'undefined')\r\n theErrorText = data.message;\r\n else if (typeof data.data !== 'undefined') {\r\n if (typeof data.data.ExceptionMessage !== 'undefined') {\r\n theErrorText = data.data.ExceptionMessage;\r\n console.log(\"Save error: theErrorText = \" + theErrorText);\r\n }\r\n else {\r\n theErrorText = data.data;\r\n var titleStartLoc = theErrorText.indexOf(\"\") + 7;\r\n console.log(\"titleStartLoc = \" + titleStartLoc);\r\n var titleEndLoc = theErrorText.indexOf(\"\");\r\n console.log(\"titleEndLoc = \" + titleEndLoc);\r\n theErrorText = theErrorText.substr(titleStartLoc, titleEndLoc - titleStartLoc);\r\n }\r\n }\r\n var theErrorMessage = \"There was a problem saving your data (\" + theErrorText + \"). Please try again or contact support.\";\r\n activities.errors = { saveError: theErrorMessage };\r\n console.log(\"Failure!\");\r\n console.log(theErrorText);\r\n console.log(theErrorMessage);\r\n console.dir(data);\r\n activities.saving = false; //and... we're done.\r\n });*/\r\n },\r\n\r\n //delete selectedItems activities\r\n deleteActivities: function (userId, datasetId, activityids) {\r\n\r\n var payload = {\r\n UserId: userId,\r\n DatasetId: datasetId,\r\n ActivityIds: activityids,\r\n }\r\n\r\n return DeleteActivitiesAction.save(payload);\r\n\r\n },\r\n\r\n updateQaStatus: function (ActivityId, QAStatusId, Comments) {\r\n\r\n var payload = {\r\n QAStatusId: QAStatusId,\r\n ActivityId: ActivityId,\r\n Comments: Comments,\r\n };\r\n\r\n console.dir(payload);\r\n\r\n return SetQaStatusAction.save(payload);\r\n },\r\n\r\n getRelationData: function (relationFieldId, activityId, rowId) {\r\n return GetRelationData.save({FieldId: relationFieldId, ActivityId: activityId, ParentRowId: rowId});\r\n },\r\n\r\n getMigrationYears: function (datasetId) {\r\n console.log(\"Inside dataset-service, getMigrationYears\");\r\n return MigrationYears.query({id: datasetId});\r\n },\r\n\r\n getRunYears: function (datasetId) {\r\n console.log(\"Inside dataset-service, getRunYears\");\r\n return RunYears.query({id: datasetId});\r\n },\r\n\r\n getReportYears: function (datasetId) {\r\n console.log(\"Inside dataset-service, getReportYears\");\r\n return ReportYears.query({id: datasetId});\r\n },\r\n\r\n getBenthicSampleYears: function (datasetId) {\r\n console.log(\"Inside dataset-service, getBenthicSampleYears\");\r\n return BenthicSampleYears.query({id: datasetId});\r\n },\r\n\r\n getDriftSampleYears: function (datasetId) {\r\n console.log(\"Inside dataset-service, getDriftSampleYears\");\r\n return DriftSampleYears.query({id: datasetId});\r\n },\r\n\r\n getSpawningYears: function (datasetId) {\r\n console.log(\"Inside dataset-service, getSpawningYears\");\r\n return SpawningYears.query({id: datasetId});\r\n },\r\n\r\n getBroodYears: function (datasetId) {\r\n console.log(\"Inside dataset-service, getBroodYears\");\r\n return BroodYears.query({id: datasetId});\r\n },\r\n\r\n getOutmigrationYears: function (datasetId) {\r\n console.log(\"Inside dataset-service, getOutmigrationYears\");\r\n return OutmigrationYears.query({id: datasetId});\r\n },\r\n\r\n getSpecificActivities: function (datasetId, locationIdList, activityDateList) {\r\n console.log(\"Inside dataset-service.js, getSpecificActivities...\");\r\n var searchCriteria = {\r\n DatasetId: datasetId,\r\n LocationId: locationIdList,\r\n ActivityDate: activityDateList\r\n }\r\n\r\n return SpecificActivitiesWithBounds.save(searchCriteria);\r\n },\r\n\r\n getSpecificWaterTempActivities: function (datasetId, locationIdList, instrumentIdList, dateTimeList) {\r\n console.log(\"Inside dataset-service.js, getSpecificWaterTempActivities...\");\r\n var searchCriteria = {\r\n DatasetId: datasetId,\r\n LocationId: locationIdList,\r\n InstrumentId: instrumentIdList,\r\n DateTimeList: dateTimeList\r\n }\r\n\r\n return SpecificWaterTempActivities.save(searchCriteria);\r\n },\r\n\r\n getSpecificCreelSurveyActivities: function (datasetId, locationIdList, acvtivityDateList, timeStartList) {\r\n console.log(\"Inside dataset-service.js, getSpecificCreelSurveyActivities...\");\r\n var searchCriteria = {\r\n DatasetId: datasetId,\r\n LocationId: locationIdList,\r\n ActivityDate: acvtivityDateList,\r\n TimeStart: timeStartList\r\n }\r\n\r\n return SpecificCreelSurveyActivities.save(searchCriteria);\r\n },\r\n\r\n getSpecificScrewTrapActivities: function (datasetId, locationIdList, acvtivityDateList, arrivalTimeList) {\r\n console.log(\"Inside dataset-service.js, getSpecificScrewTrapActivities...\");\r\n var searchCriteria = {\r\n DatasetId: datasetId,\r\n LocationId: locationIdList,\r\n ActivityDate: acvtivityDateList,\r\n ArrivalTime: arrivalTimeList\r\n }\r\n\r\n return SpecificScrewTrapActivities.save(searchCriteria);\r\n }\r\n };\r\n\r\n return service;\r\n }\r\n];\r\n\r\nexport default dataset_service;\r\n","import common_module from '../common-module';\r\n\r\nconst uiCurrencyDirective =['$filter', '$parse', function ($filter, $parse) {\r\n return {\r\n require: 'ngModel',\r\n restrict: 'A',\r\n priority: 1,\r\n link: function (scope, element, attrs, ngModel) {\r\n\r\n function parse(viewValue, noRender) {\r\n // console.log(\"CURRENCY: \" + viewValue);\r\n if (!viewValue) {\r\n return \"\"; //viewValue;\r\n }\r\n\r\n // strips all non digits leaving periods.\r\n var clean = viewValue.toString().replace(/[^0-9.]+/g, '').replace(/\\.{2,}/, '.');\r\n\r\n // case for users entering multiple periods throughout the number\r\n var dotSplit = clean.split('.');\r\n if (dotSplit.length > 2) {\r\n clean = dotSplit[0] + '.' + dotSplit[1].slice(0, 2);\r\n } else if (dotSplit.length == 2) {\r\n clean = dotSplit[0] + '.' + dotSplit[1].slice(0, 2);\r\n }\r\n\r\n if (!noRender)\r\n ngModel.$render();\r\n\r\n return clean;\r\n }\r\n\r\n ngModel.$parsers.unshift(parse);\r\n\r\n ngModel.$render = function () {\r\n // console.log('viewValue', ngModel.$viewValue);\r\n // console.log('modelValue', ngModel.$modelValue);\r\n\r\n if (ngModel.$modelValue == null) //kb fix: was keeping the previous currency value!\r\n element.val(\"\");\r\n\r\n var clean = parse(ngModel.$viewValue, true);\r\n if (!clean)\r\n return;\r\n\r\n var currencyValue,\r\n dotSplit = clean.split('.');\r\n\r\n // todo: refactor, this is ugly\r\n if (clean[clean.length - 1] === '.') {\r\n currencyValue = '$' + $filter('number')(parseFloat(clean)) + '.';\r\n\r\n } else if (clean.indexOf('.') != -1 && dotSplit[dotSplit.length - 1].length == 1) {\r\n currencyValue = '$' + $filter('number')(parseFloat(clean), 1);\r\n } else if (clean.indexOf('.') != -1 && dotSplit[dotSplit.length - 1].length == 1) {\r\n currencyValue = '$' + $filter('number')(parseFloat(clean), 2);\r\n } else {\r\n currencyValue = '$' + $filter('number')(parseFloat(clean));\r\n }\r\n\r\n element.val(currencyValue);\r\n };\r\n }\r\n };\r\n}];\r\n\r\nexport default uiCurrencyDirective;\r\n","//modal to add/edit permit event\r\nimport * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {modalFiles_setupControllerForFileChooserModal} from \"../../../../core/common/components/file/modal-files\";\r\nimport {PERMIT_PROJECTID} from \"../../../../config\";\r\n\r\nvar requests_modal = ['$rootScope','$scope', '$uibModal','$uibModalInstance','GridService','Upload','PermitService',\r\n\r\n function ($rootScope, $scope, $uibModal, $uibModalInstance, GridService, $upload, PermitService) {\r\n\r\n $scope.permit = $scope.row;\r\n $scope.row = $scope.activity_modal; //note: this creates a LOCAL scope variable of ROW that will go away when this scope goes away...\r\n\r\n $scope.Results = {\r\n SuccessMessage: null,\r\n FailureMessage: null,\r\n DoneSaving: false,\r\n };\r\n\r\n $scope.mode = \"edit\"; //we only edit\r\n\r\n if(!$scope.row.ResponseDate)\r\n $scope.row.ResponseDate = moment().format('L');\r\n\r\n if(!$scope.row.Reviewer)\r\n $scope.row.Reviewer = $scope.Profile.Fullname;\r\n\r\n $scope.permitEventsGrid.columnDefs.forEach(function (coldef) {\r\n if (coldef.DbColumnName == 'Reference')\r\n coldef.Label = \"Reference\";\r\n\r\n if (coldef.DbColumnName == 'RequestDate')\r\n coldef.Label = \"Date Requested\";\r\n });\r\n\r\n\r\n\r\n if (!$scope.row.Files)\r\n $scope.row.Files = [];\r\n\r\n //set up for attaching files - just make sure the permitfiles are loaded.\r\n $scope.PermitFiles.$promise.then(function(){\r\n modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.PermitFiles);\r\n });\r\n\r\n $scope.save = function () {\r\n\r\n $scope.Results.DoneSaving = false;\r\n $scope.Results.IsSaving = true;\r\n\r\n $scope.row.ByUser = $scope.Profile.Id;\r\n\r\n var target = '/api/v1/permit/uploadfile';\r\n\r\n var data = {\r\n ProjectId: PERMIT_PROJECTID,\r\n SubprojectId: $scope.row.PermitId,\r\n ItemId: $scope.row.Id\r\n };\r\n\r\n if (Array.isArray($scope.row.Files)) {\r\n if ($scope.row.Files.length == 0)\r\n delete $scope.row.Files;\r\n else\r\n $scope.row.Files = angular.toJson($scope.row.Files);\r\n }\r\n\r\n var to_save = angular.copy($scope.row);\r\n\r\n if($scope.row.FilesToInclude){\r\n var new_files = [];\r\n $scope.row.FilesToInclude.forEach(function(file){\r\n console.dir(file);\r\n file = angular.fromJson(file);\r\n delete file.User;\r\n new_files.push(file);\r\n })\r\n to_save.FilesToInclude = new_files;\r\n }else{\r\n to_save.FilesToInclude = [];\r\n }\r\n\r\n $scope.handleFilesToUploadRemove($scope.row, data, target, $upload, $rootScope, $scope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n\r\n };\r\n\r\n //callback that is called from modalFile to do the actual file removal (varies by module)\r\n $scope.modalFile_doRemoveFile = function (file_to_remove, saveRow) {\r\n //console.dir(file_to_remove);\r\n return PermitService.deletePermitFile(PERMIT_PROJECTID, $scope.row.PermitId, saveRow.Id, file_to_remove);\r\n };\r\n\r\n //call back from save above once the files are done processing and we're ready to save the item\r\n $scope.modalFile_saveParentItem = function (saveRow) {\r\n\r\n //save again to update with the files we uploaded\r\n $scope.saved_event = PermitService.savePermitEvent(saveRow);\r\n\r\n $scope.saved_event.$promise.then(function () {\r\n\r\n $scope.Results.DoneSaving = true;\r\n\r\n console.log(\"done and success updating the files\");\r\n\r\n $scope.Results.SuccessMessage = \"Saved.\";\r\n\r\n //note: we don't close - let the user do that...\r\n\r\n }, function (data) {\r\n console.error(\"failure!\");\r\n console.dir(data);\r\n $scope.Results.FailureMessage = \"There was a problem saving or sending notifications.\";\r\n $scope.Results.DoneSaving = false;\r\n });\r\n\r\n };\r\n\r\n $scope.close = function () {\r\n $uibModalInstance.close($scope.saved_event);\r\n };\r\n\r\n //fire validation for all columns when we load (if we are editing)\r\n if ($scope.mode === 'edit') {\r\n $scope.permitEventsGrid.columnDefs.forEach(function (field) {\r\n $scope.onHeaderEditingStopped(field);\r\n });\r\n }\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n\r\n $scope.getFileLabel = function(file){\r\n return file.Name + ((file.Description) ? \" (\"+file.Description+\")\" : \"\");\r\n }\r\n\r\n}];\r\n\r\nexport default requests_modal;\r\n","import * as angular from 'angular';\r\nimport {parseArrayToStringValues} from \"../../../common/common-functions\";\r\n\r\nvar modal_edit_project = ['$scope', '$uibModal', '$uibModalInstance', 'ProjectService', 'CommonService',\r\n function (scope, $uibModal, $uibModalInstance, ProjectService, CommonService) {\r\n\r\n if (scope.row && scope.row.Id) {\r\n scope.header_message = \"Edit project: \" + scope.project.Name;\r\n } else {\r\n scope.header_message = \"Create new project\";\r\n scope.row = scope.project;\r\n }\r\n\r\n // Note: If the propery value similar to ({\"ShowHabitatSitesForDatasets\":{},...}),\r\n // it will fail the hasOwnProperty test.\r\n // If the value is similar to ({\"ShowHabitatSitesForDatasets\":[],...}), it will pass.\r\n if (scope.project.Config && scope.project.Config.hasOwnProperty(\"ShowHabitatSitesForDatasets\")) {\r\n // Checking the length,\r\n if (typeof scope.project.Config.ShowHabitatSitesForDatasets.length !== 'undefined')\r\n scope.project.Config.ShowHabitatSitesForDatasetsValues = parseArrayToStringValues(scope.project.Config.ShowHabitatSitesForDatasets);\r\n }\r\n\r\n scope.SavedConfig = scope.project.Config;\r\n\r\n //make the row of values that map to our field directives.\r\n scope.project.MetaFields.forEach(function (field) {\r\n field.DbColumnName = field.Label = field.Name;\r\n if (field.Values)\r\n scope.row[field.DbColumnName] = field.Values;\r\n else\r\n scope.row[field.DbColumnName] = null;\r\n });\r\n\r\n scope.openChooseLookupLists = function () {\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/modal-choose-project-lists.html',\r\n controller: 'ModalProjectConfigLists',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_field) {\r\n\r\n });\r\n };\r\n\r\n scope.getConfig = function () {\r\n var result = \"\";\r\n try {\r\n result = angular.toJson(scope.project.Config);\r\n } catch (e) {\r\n //nothing in config.\r\n console.log(\"couldn't toJson config: \" + scope.project.Config)\r\n }\r\n\r\n return result;\r\n };\r\n\r\n scope.save = function () {\r\n\r\n if (!scope.row.Name) {\r\n alert(\"You must enter a Program/Project Name!\");\r\n return;\r\n }\r\n\r\n if (!scope.row['Program'] || !scope.row['Sub-program']) {\r\n alert(\"You must choose a Program and Sub-program on the 'Project' tab.\");\r\n return;\r\n }\r\n\r\n scope.row.Metadata = [];\r\n\r\n //need to make multi-selects into json objects\r\n angular.forEach(scope.row.MetaFields, function (md) {\r\n if (scope.row[md.DbColumnName]) {\r\n\r\n //flatten multiselect values into an json array string\r\n if (md.ControlType == \"multiselect\" || md.ControlType == \"multiselect-checkbox\") {\r\n md = angular.copy(md);\r\n md.Values = angular.toJson(scope.row[md.DbColumnName]);\r\n } else {\r\n md.Values = scope.row[md.DbColumnName];\r\n }\r\n md.RelationId = scope.project.Id;\r\n md.UserId = scope.currentUserId;\r\n delete md.EffDt;\r\n scope.row.Metadata.push(md);\r\n }\r\n });\r\n\r\n var saveRow = angular.copy(scope.row);\r\n\r\n delete saveRow.Editors;\r\n delete saveRow.Files;\r\n delete saveRow.Instruments;\r\n delete saveRow.Editors;\r\n delete saveRow.Locations;\r\n delete saveRow.MetaFields;\r\n delete saveRow.Owner;\r\n\r\n if (scope.project.Config && scope.project.Config.hasOwnProperty('ShowHabitatSitesForDatasetsValues'))\r\n delete scope.project.Config.ShowHabitatSitesForDatasetsValues;\r\n\r\n saveRow.Config = scope.getConfig();\r\n\r\n var promise = ProjectService.saveProject(saveRow);\r\n promise.$promise.then(function (saved_project) {\r\n //reconstitute our saved project's config\r\n try {\r\n saved_project.Config = angular.fromJson(saved_project.Config);\r\n } catch (e) {\r\n console.log(\"couldn't reload config: \" + saved_project.Config)\r\n //do nothing\r\n }\r\n $uibModalInstance.close(saved_project);\r\n });\r\n\r\n };\r\n\r\n scope.cancel = function () {\r\n scope.project.Config = scope.SavedConfig;\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n\r\n }\r\n];\r\n\r\nexport default modal_edit_project;\r\n","export default \"
\\r\\n\";","/*\r\n* This page loads the project locations.\r\n*/\r\nimport * as angular from 'angular';\r\nimport {\r\n SYSTEM_LOCATION_DATASET, \r\n GEOMETRY_SERVICE_URL, \r\n NAD83_SPATIAL_REFERENCE, \r\n ENVIRONMENT,\r\n CDMS_POINTS_TEST_URL, \r\n CDMS_POINTS_PROD_URL\r\n} from \"../../../../config\";\r\nimport {modalFiles_setupControllerForFileChooserModal} from \"../../../common/components/file/modal-files\";\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\nimport { EsriMapComponent } from \"src/app/map/esri-map/esri-map.component\";\r\n//--------\r\nimport Map from \"@arcgis/core/Map\";\r\nimport SimpleMarkerSymbol from \"@arcgis/core/symbols/SimpleMarkerSymbol\";\r\nimport Graphic from \"@arcgis/core/Graphic\";\r\nimport SpatialReference from \"@arcgis/core/geometry/SpatialReference\";\r\nimport * as geometryServ from \"@arcgis/core/rest/geometryService\";\r\nimport Point from \"@arcgis/core/geometry/Point\";\r\n//import ProjectParameters from \"@arcgis/core/tasks/support/ProjectParameters\"; // Deprecated\r\nimport ProjectParameters from \"@arcgis/core/rest/support/ProjectParameters\";\r\nimport Query from \"@arcgis/core/rest/support/Query\";\r\nimport FeatureLayer from \"@arcgis/core/layers/FeatureLayer\";\r\n\r\nvar project_locations = ['$scope', '$routeParams', 'GridService', 'ProjectService', 'DatasetService', 'CommonService', 'UserService',\r\n '$rootScope', '$uibModal', '$sce', '$window', '$http',\r\n 'ServiceUtilities', '$location', '$anchorScroll', 'Upload', 'SubprojectService',\r\n function (scope, routeParams, GridService, ProjectService, DatasetService, CommonService, UserService, $rootScope, $uibModal, $sce, $window, $http,\r\n ServiceUtilities, $location, $anchorScroll, $upload, SubprojectService) {\r\n console.log(\"Inside controllers.js, projectDatasetsController...\");\r\n console.log(\"routeParams.Id = \" + routeParams.Id);\r\n\r\n //$rootScope.IsFirstRun = true;\r\n\r\n scope.OnTab = \"Locations\";\r\n scope.ag_grid_div = false;\r\n scope.datasets = ProjectService.getProjectDatasets(routeParams.Id);\r\n scope.project = ProjectService.getProject(routeParams.Id);\r\n scope.locationDataset = DatasetService.getDataset(SYSTEM_LOCATION_DATASET); //load the dataset with the fields for location grid\r\n scope.selectedDataset = null;\r\n scope.map = new Map();\r\n\r\n scope.ShowMap = {\r\n Display: false,\r\n Prod: false,\r\n Test: false,\r\n Message: \"Show Map\",\r\n MessageToOpen: \"Show Map\",\r\n MessageToClose: \"Hide Map\",\r\n };\r\n\r\n console.log(\"ENVIRONMENT = \" + ENVIRONMENT);\r\n if (ENVIRONMENT == \"prod\")\r\n {\r\n scope.ShowMap.Test = false;\r\n scope.ShowMap.Prod = true;\r\n scope.map.locationLayer = new FeatureLayer({url:CDMS_POINTS_PROD_URL});\r\n }\r\n else\r\n {\r\n scope.ShowMap.Test = true;\r\n scope.ShowMap.Prod = false;\r\n scope.map.locationLayer = new FeatureLayer({url:CDMS_POINTS_TEST_URL});\r\n }\r\n console.log(\"scope.map.locationLayer is next...\");\r\n console.dir(scope.map.locationLayer);\r\n\r\n scope.toggleMap = function () {\r\n if (scope.ShowMap.Display) {\r\n scope.ShowMap.Display = false;\r\n scope.ShowMap.Message = scope.ShowMap.MessageToOpen;\r\n } else {\r\n scope.ShowMap.Display = true;\r\n scope.ShowMap.Message = scope.ShowMap.MessageToClose;\r\n }\r\n };\r\n\r\n modalFiles_setupControllerForFileChooserModal(scope, $uibModal, scope.project.Files);\r\n //once the datasets load, make sure each is configured with our scope.\r\n /*\r\n scope.datasets.$promise.then(function () {\r\n if ((scope.datasets) && (scope.datasets.length > 0)) {\r\n for (var i = 0; i < scope.datasets.length; i++) {\r\n DatasetService.configureDataset(scope.datasets[i], scope); // We must pass the scope along on this call.\r\n }\r\n } else {\r\n console.warn(\"This project has no datasets.\");\r\n }\r\n });\r\n*/\r\n // todo: why is this promise resolving twice sometimes?\r\n scope.locationDataset.$promise.then(function () {\r\n scope.dataGridOptions.columnDefs = GridService.getAgColumnDefs(scope.locationDataset).HeaderFields;\r\n scope.dataGridOptions.columnDefs.unshift(\r\n {\r\n field: 'Assigned',\r\n headerName: 'Assigned',\r\n headerCheckboxSelection: true,\r\n checkboxSelection: true,\r\n width: 110,\r\n maxWidth: 110,\r\n alwaysShowField: true,\r\n hide: true,\r\n menuTabs: [],\r\n comparator: scope.assignedComparator\r\n }),\r\n scope.activateDataGrid();\r\n //console.dir(scope.dataGridOptions.columnDefs);\r\n console.log(\"project locations resolved\");\r\n });\r\n\r\n scope.showLocations = function (dataset) {\r\n\r\n //select the locations for this dataset - and float selected to the top\r\n scope.selectedDataset = dataset;\r\n\r\n scope.dataGridOptions.api.deselectAll();\r\n scope.dataGridOptions.api.forEachNode(function (node) {\r\n\r\n dataset.Locations.forEach(function (location) {\r\n if (location.Id == node.data.Id)\r\n node.setSelected(true);\r\n })\r\n });\r\n\r\n scope.dataGridOptions.columnApi.setColumnVisible('Assigned', true);\r\n scope.dataGridOptions.suppressRowClickSelection = true;\r\n\r\n var sort = [\r\n {colId: 'Assigned', sort: 'desc'}\r\n ];\r\n\r\n scope.dataGridOptions.api.setSortModel(sort);\r\n\r\n };\r\n\r\n scope.showProjectLocations = function () {\r\n scope.selectedDataset = null;\r\n scope.dataGridOptions.api.deselectAll();\r\n\r\n scope.dataGridOptions.columnApi.setColumnVisible('Assigned', false);\r\n scope.dataGridOptions.suppressRowClickSelection = false;\r\n\r\n //scope.displayLocationsOnMap();\r\n };\r\n\r\n\r\n scope.displayLocationsOnMap = function () {\r\n var locationIds = [];\r\n if (scope.dataGridOptions.api.getSelectedNodes().length != 0) {\r\n scope.dataGridOptions.api.getSelectedNodes().forEach(node => {\r\n locationIds.push(node.data.SdeObjectId);\r\n });\r\n\r\n } else {\r\n scope.dataGridOptions.api.forEachNodeAfterFilter(function (node) {\r\n //console.dir(node);\r\n locationIds.push(node.data.SdeObjectId);\r\n });\r\n }\r\n\r\n\r\n // if (scope.map && scope.map.locationLayer && scope.map.locationLayer.hasOwnProperty('showLocationsById'))\r\n scope.locationIds = locationIds;\r\n // scope.selectedIds = locationIds;\r\n\r\n //console.log(\"showing these locations\");\r\n //console.dir(locationIds);\r\n\r\n }\r\n\r\n scope.highlightSelectionOnMap = function () {\r\n var selectedRows = [];\r\n if (scope.dataGridOptions.api.getSelectedNodes().length != 0) {\r\n scope.dataGridOptions.api.getSelectedNodes().forEach(node => {\r\n // locationIds.push(node.data.SdeObjectId);\r\n selectedRows.push(node.data);\r\n // node.index = 0;\r\n });\r\n }\r\n // else {\r\n // scope.dataGridOptions.api.forEachNodeAfterFilter(function (node) {\r\n // console.log()\r\n // //console.dir(node);\r\n // // selectedRows.push(node.data);\r\n // // locationIds.push(node.data.SdeObjectId);\r\n // });\r\n // }\r\n\r\n scope.selectedIds = selectedRows;\r\n\r\n // let sort = [\r\n // {colId: 'Assigned', sort: 'desc'}\r\n // ];\r\n //\r\n // // set selected row to top of grid\r\n // scope.dataGridOptions.api.setSortModel(sort);\r\n\r\n }\r\n\r\n //datasets tab grid\r\n scope.dataGridOptions = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: [],\r\n rowSelection: 'multiple',\r\n suppressRowClickSelection: false,\r\n onSelectionChanged: function (params) {\r\n //console.dir(params);\r\n scope.dataGridOptions.selectedItems = scope.dataGridOptions.api.getSelectedRows();\r\n // scope.displayLocationsOnMap();\r\n scope.highlightSelectionOnMap();\r\n scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n\r\n },\r\n onGridReady: function (params) {\r\n console.log(\"Grid ready!\");\r\n },\r\n selectedItems: [],\r\n onRowDoubleClicked: function (params) {\r\n console.log(\"Inside onRowDoubleClicked...\");\r\n console.dir(params);\r\n if (scope.Profile.canEdit(scope.project))\r\n scope.openEditModal(params.data);\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n width: 180,\r\n maxWidth: 250\r\n },\r\n onFirstDataRendered: function (params) {\r\n let allColumnIds = [];\r\n scope.dataGridOptions.columnApi.getAllColumns().forEach(function (columnDef) {\r\n allColumnIds.push(columnDef.colId);\r\n });\r\n scope.dataGridOptions.columnApi.autoSizeColumns(allColumnIds);\r\n scope.displayLocationsOnMap();\r\n },\r\n\r\n };\r\n\r\n scope.updateGrid = function (sdeObjectId) {\r\n\r\n scope.dataGridOptions.api.forEachNode(node => {\r\n if (node.data.SdeObjectId == sdeObjectId) {\r\n scope.dataGridOptions.api.deselectAll();\r\n node.setSelected(true);\r\n node.checkboxSelection = true;\r\n scope.$apply();\r\n }\r\n });\r\n }\r\n\r\n\r\n scope.activateDataGrid = function () {\r\n\r\n if (!scope.ag_grid_div) {\r\n scope.ag_grid_div = document.querySelector('#locations-grid') as HTMLElement;\r\n scope.datatab_ag_grid = new Grid(scope.ag_grid_div, scope.dataGridOptions); //bind the grid to it.\r\n scope.dataGridOptions.api.showLoadingOverlay(); //show loading...\r\n scope.ag_grid_div = true;\r\n }\r\n\r\n scope.project.$promise.then(function () {\r\n\r\n scope.loadProjectLocations();\r\n\r\n scope.project.Config = (scope.project.Config) ? angular.fromJson(scope.project.Config) : {};\r\n console.log(\"activate data grid called\")\r\n // scope.displayLocationsOnMap();\r\n\r\n });\r\n\r\n };\r\n\r\n scope.openEditModal = function (a_selection) {\r\n scope.SaveMessage = null;\r\n scope.row = angular.copy(a_selection);\r\n scope.outpayload = {info: {}};\r\n $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/modal-edit-location.html',\r\n controller: 'ModalEditLocationCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false,\r\n // resolve: scope.outpayload\r\n }).result.then(function (saved_location) {\r\n console.log(\"resolving promise and saved location\")\r\n console.log(saved_location);\r\n scope.outpayload = saved_location;\r\n //replace that location in the grid with the one we got back\r\n scope.all_locations.forEach(function (existing_location, index) {\r\n if (existing_location.Id == saved_location.Location.Id) {\r\n console.dir(\"found field to replace : \" + existing_location.Id);\r\n scope.all_locations[index] = saved_location.Location;\r\n\r\n // scope.dataGridOptions.api.setRowData(scope.all_locations[index]);\r\n }\r\n });\r\n\r\n scope.dataGridOptions.api.setRowData(scope.all_locations);\r\n scope.SaveMessage = \"Success.\";\r\n\r\n if (!scope.selectedDataset) {\r\n scope.showProjectLocations();\r\n } else {\r\n scope.showLocations(scope.selectedDataset);\r\n }\r\n\r\n });\r\n };\r\n\r\n\r\n scope.addLocation = function (a_selection) {\r\n scope.SaveMessage = null;\r\n scope.row = GridService.getNewRow(scope.dataGridOptions.columnDefs); //sets the DefaultValue, etc.\r\n scope.row.Status = 0;\r\n\r\n //console.dir(scope.row);\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/modal-edit-location.html',\r\n controller: 'ModalEditLocationCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_location) {\r\n scope.outpayload = saved_location;\r\n // console.log(saved_location);\r\n // console.log(\"in project-locations.addLocation()\");\r\n // //reload all the project locations to pickup the new one\r\n scope.loadProjectLocations();\r\n\r\n //if we were in the context of a dataset, link this new location to it\r\n if (scope.selectedDataset) {\r\n var save = ProjectService.addLocation(scope.selectedDataset.Id, saved_location.Id);\r\n\r\n save.$promise.then(function () {\r\n //reload the project locations\r\n scope.datasets = ProjectService.getProjectDatasets(routeParams.Id);\r\n\r\n //reload the dataset that was updated\r\n scope.datasets.$promise.then(function () {\r\n scope.datasets.forEach(function (dataset) {\r\n if (dataset.Id == scope.selectedDataset.Id)\r\n scope.showLocations(dataset);\r\n })\r\n })\r\n })\r\n\r\n\r\n }\r\n });\r\n };\r\n\r\n\r\n scope.deleteLocations = function () {\r\n\r\n //delete selected locations\r\n var locationIds = [];\r\n // these are the object Ids that will be passed to the map component for deletion\r\n let deleteIds = [];\r\n\r\n \r\n scope.dataGridOptions.selectedItems.forEach(function (location) {\r\n deleteIds.push(location.SdeObjectId);\r\n locationIds.push(location.Id);\r\n });\r\n\r\n var blnLocationBelongsToHabitatDataset = false;\r\n var blnGetHabitatsHasFinished = false;\r\n var ErrMessage = \"\"; //This location cannot be deleted, until it is removed from the following datasets...\\n\";\r\n scope.HabitatSubprojects = SubprojectService.getHabSubprojects();\r\n\r\n scope.HabitatSubprojects.$promise.then(function () {\r\n scope.HabitatSubprojects.forEach(function (hs) {\r\n locationIds.forEach(function (aLocId) {\r\n if (hs.LocationId === aLocId)\r\n {\r\n blnLocationBelongsToHabitatDataset = true;\r\n ErrMessage += \"One of the locations selected for deletion is a habitat site.\\n\" +\r\n \"Habitat locations must be removed using the Habitat pages.\";\r\n }\r\n });\r\n });\r\n\r\n if (blnLocationBelongsToHabitatDataset)\r\n {\r\n alert(ErrMessage);\r\n return;\r\n }\r\n\r\n //scope.deletePoints = deleteIds;\r\n\r\n //var esriMapComponent = new EsriMapComponent();\r\n\r\n //esriMapComponent.deleteLocations(scope.project.Id, scope.row, $rootScope.IsFirstRun, scope.deletePoints, $rootScope);\r\n\r\n // $uibModalInstance.close(\r\n // // on close this information is sent to the esri-map component, and enters as the inPayload object.\r\n // {\r\n // 'ProjectId': scope.project.Id,\r\n // 'Location': scope.row,\r\n // 'IsFirstRun': true,\r\n // 'deletePoints': deleteIds\r\n // });\r\n\r\n //scope.deletePoints.forEach (function (item) {\r\n deleteIds.forEach (function (item) {\r\n\r\n var inSR = new SpatialReference({ wkt: NAD83_SPATIAL_REFERENCE });\r\n var outSR = new SpatialReference({ wkid: 102100 });\r\n //var GeometryService = new geometryService({URL: GEOMETRY_SERVICE_URL});\r\n \r\n var theSdeObjectId = 0;\r\n var theEasting = 0;\r\n var theNorthing = 0;\r\n scope.selectedIds.forEach(function (sId) {\r\n if (sId.SdeObjectId === item)\r\n {\r\n theSdeObjectId = sId.SdeObjectId;\r\n theEasting = sId.GPSEasting;\r\n theNorthing = sId.GPSNorthing;\r\n }\r\n });\r\n\r\n //var theEasting = scope.selectedIds.GPSEasting;\r\n //var theNorthing = scope.selectedIds.GPSNorthing;\r\n //var pointParams = {\"x\": theEasting, \"y\": theNorthing};\r\n //$scope.newPoint = new Point($scope.row.GPSEasting, $scope.row.GPSNorthing, inSR);\r\n //scope.newPoint = new Point(pointParams);\r\n // Instead of creating the parameters for a new point,\r\n // and then creating the point from them, like we did above,\r\n // just create the point by passing the parameters in directly, in the next line.\r\n scope.newPoint = new Point({x: theEasting, y: theNorthing, spatialReference: inSR});\r\n \r\n //convert spatial reference\r\n var PrjParams = new ProjectParameters();\r\n PrjParams.outSpatialReference = outSR;\r\n \r\n PrjParams.geometries = [scope.newPoint];\r\n \r\n //geometryService.project(PrjParams, function (outputpoint) {\r\n geometryServ.project(GEOMETRY_SERVICE_URL, PrjParams).then((outputpoint) => {\r\n let symbol = new SimpleMarkerSymbol({\r\n style: \"circle\",\r\n color: \"#00ff00\",\r\n size: \"8px\",\r\n });\r\n \r\n var attributes = {OBJECTID: theSdeObjectId};\r\n //var deleteGraphic = new Graphic({geometry: this.newPoint, attributes: attributes});\r\n \r\n //scope.newPoint = new Point(outputpoint[0], outSR);\r\n //var newGraphic = new Graphic({geometry: scope.newPoint, symbol: symbol});\r\n scope.PointToDelete = new Point(outputpoint[0]);\r\n \r\n //throw \"Stopping right here...\";\r\n \r\n var deleteGraphic = new Graphic({geometry: scope.PointToDelete, symbol: symbol, attributes: attributes});\r\n // var deletes = {\r\n // deleteFeatures: [deleteGraphic]\r\n // };\r\n //var DeleteFeats = {\r\n // deletes: [deleteGraphic]\r\n //};\r\n \r\n // Note: You cannot just pass the point to delete; they must be in a graphic object,\r\n // or the code dies in dojo-land, which is different than what is shown in \r\n // ArcGIS documenation on the service interface.\r\n // this.locationLayer.applyEdits({deleteFeatures: [deleteGraphic]}, null,).then((deleteResults) => { // From esri-map.component.ts\r\n //scope.map.locationLayer.deleteFeatures({objectIds: theSdeObjectId}).then (function (deleteResults) { // locationLayer.deleteFeatures is not a function\r\n //$scope.map.locationLayer.applyEdits(null, null, [deleteGraphic], function (addResults, updateResults, deleteResults) { // From masterV2\r\n //scope.map.locationLayer.applyEdits(null, null, [deleteGraphic]).then (function (deleteResults) { // Cleaned and adjusted for V3. \r\n //Error: Missing params: addFeatures, updateFeatures, or deleteFeatures is required.\r\n //scope.map.locationLayer.applyEdits({deleteFeatures: [deleteGraphic]}, null).then (function (deleteResults) { // Err: Unable to complete operation.\r\n //Error: No edits (adds, updates, deletes, or attachment edits) were specified.\r\n //scope.map.locationLayer.applyEdits({deleteFeatures: {adds: null, updates: null, deleted: [deleteGraphic]}}, null).then (function (deleteResults) { // Err\r\n //Error: deleteFeatures.forEach is not a function.\r\n //scope.map.locationLayer.applyEdits(deletes).then (function (deleteResults) { // Err: Unable to complete operation\r\n //Error: No Edits (adds, updates, deletes, or attachment edits) were specified.\r\n //scope.map.locationLayer.applyEdits(null, null, deletes, null).then (function (deleteResults) { // \r\n //Error: Apply Edits - Delete - failed: 'addFeatures', 'updateFeatures', 'deleteFeatures', 'addAttachments', 'updateAttachments' or 'deleteAttachments' parameter is required\r\n //scope.map.locationLayer.applyEdits(null, null, deleteFeatures).then (function (deleteResults) { // feature-layer:missing-parameters\r\n //Error: 'addFeatures', 'updateFeatures', 'deleteFeatures', 'addAttachments', 'updateAttachments' or 'deleteAttachments' parameter is required\"\r\n //scope.map.locationLayer.applyEdits({deleteFeatures: DeleteFeats}).then (function (deleteResults) { // deleteFeatures.forEach is not a function\r\n //Error: \r\n //scope.map.locationLayer.applyEdits({deleteFeatures: deletes}).then (function (deleteResults) { // deleteFeatures.forEach is not a function\r\n //Error: \r\n // Keeping in the iterations above, just to remember them and avoid going through it all again to get the next line.\r\n // The next line is what actually works. \r\n scope.map.locationLayer.applyEdits({deleteFeatures: [deleteGraphic]}).then (function (deleteResults) { // This works\r\n \r\n //var query = new Query();\r\n //query.objectIds = [deletes[0].objectId];\r\n //$scope.map.locationLayer.selectFeatures(query, )\r\n console.log(\"deleteResults is next...\");\r\n console.dir(deleteResults);\r\n \r\n //.then(function (deleteResults) {\r\n // if (Array.isArray(deleteResults) && deleteResults[0] && deleteResults[0].length === 0)\r\n // {\r\n // scope.SaveMessage = \"The location did not exist in SDE.\";\r\n // console.dir(deleteResults);\r\n // }\r\n // else if (Array.isArray(deleteResults) && deleteResults[0] && deleteResults[0].success) {\r\n // console.log(\"Deleted old point! \" + scope.row.SdeObjectId);\r\n\r\n // //CommonService.UpdateLocationAction($scope.project.Id, $scope.row.Id, $scope.row.SdeObjectId, $scope.OldSdeObjectId);\r\n // CommonService.updateLocationAction(scope.project.Id, scope.row.Id, scope.row.SdeObjectId);\r\n // }\r\n // else {\r\n // scope.SaveMessage = \"There was a problem deleting that location.\";\r\n // console.dir(deleteResults);\r\n // }\r\n\r\n if ((deleteResults) &&\r\n (deleteResults.deleteFeatureResults) &&\r\n (deleteResults.deleteFeatureResults.length === 0)\r\n )\r\n {\r\n scope.SaveMessage = \"The location did not exist in SDE.\";\r\n //console.dir(deleteResults);\r\n }\r\n else if ((deleteResults) &&\r\n (deleteResults.deleteFeatureResults) &&\r\n (deleteResults.deleteFeatureResults.length > 0)\r\n )\r\n {\r\n console.log(\"Deleted the following item from SDE: \" + deleteResults.deleteFeatureResults[0].objectId);\r\n }\r\n else {\r\n scope.SaveMessage = \"There was a problem deleting that location.\";\r\n console.dir(deleteResults);\r\n }\r\n }, function (err) {\r\n console.log(\"Apply Edits - Delete - failed: \" + err.message);\r\n });\r\n \r\n \r\n var data = {\r\n ProjectId: scope.project.Id,\r\n };\r\n \r\n \r\n //var target = '/api/v1/file/UploadProjectFile';\r\n //scope.handleFilesToUploadRemove(scope.row, data, target, $upload, $rootScope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n \r\n });\r\n });\r\n \r\n //throw \"Inside project-locations.ts, stopping right here, to leave the point in CDMS.\";\r\n var delete_loc = CommonService.deleteLocations(locationIds); // This just removes the location from CDMS, not SDE.\r\n \r\n delete_loc.$promise.then(function (data) {\r\n console.log(\"deleted locations\");\r\n scope.dataGridOptions.api.deselectAll()\r\n scope.loadProjectLocations();\r\n }, function (error) {\r\n console.dir(error);\r\n alert(\"Could not delete some locations because activities exist. Remove them and then you can delete those locations.\");\r\n scope.loadProjectLocations();\r\n \r\n // $uibModalInstance.close(\r\n // // on close this information is sent to the esri-map component, and enters as the inPayload object.\r\n // {\r\n // 'ProjectId': $scope.project.Id,\r\n // 'Location': $scope.row,\r\n // 'IsFirstRun': true\r\n // });\r\n });\r\n //}\r\n\r\n });\r\n };\r\n\r\n scope.click = function () {\r\n } //don't do anything for clicking for now...\r\n\r\n //handle favorite toggle\r\n scope.isFavorite = $rootScope.Profile.isProjectFavorite(routeParams.Id);\r\n scope.toggleFavorite = function () {\r\n UserService.toggleFavoriteProject(scope, $rootScope);\r\n }\r\n\r\n scope.assignedComparator = function (one, two, nodeone, nodetwo) {\r\n if (nodeone.isSelected() && nodetwo.isSelected())\r\n return 0;\r\n\r\n if (!nodeone.isSelected() && !nodetwo.isSelected())\r\n return 0;\r\n\r\n if (nodeone.isSelected() && !nodetwo.isSelected())\r\n return 1;\r\n\r\n if (!nodeone.isSelected() && nodetwo.isSelected())\r\n return -1;\r\n\r\n }\r\n\r\n scope.resetAssignments = function () {\r\n scope.showLocations(scope.selectedDataset);\r\n }\r\n\r\n scope.assignedUnchanged = function () {\r\n\r\n if (!scope.dataGridOptions.selectedItems || !scope.selectedDataset || !scope.selectedDataset.Locations)\r\n return true;\r\n\r\n //easy - if the lengths don't match then obviously we've changed.\r\n if (scope.selectedDataset.Locations.length != scope.dataGridOptions.selectedItems.length)\r\n return false;\r\n\r\n var noChange = true;\r\n scope.dataGridOptions.selectedItems.forEach(function (item) {\r\n var isAssignedLocation = false;\r\n scope.selectedDataset.Locations.forEach(function (loc) {\r\n if (loc.Id == item.Id)\r\n isAssignedLocation = true;\r\n })\r\n noChange = noChange && isAssignedLocation;\r\n })\r\n\r\n //noChange only true at this point if all assigned exist in datset locations\r\n // so if all assigned are in the locations and none are added then we return true, else false.\r\n return (noChange && scope.selectedDataset.Locations.length == scope.dataGridOptions.selectedItems.length);\r\n\r\n }\r\n\r\n scope.loadProjectLocations = function () {\r\n scope.all_locations = ProjectService.getLocations(scope.project.Id);\r\n\r\n scope.all_locations.$promise.then(function () {\r\n scope.dataGridOptions.api.setRowData(scope.all_locations);\r\n\r\n //autoexpand columns once we have data\r\n\r\n let allColumnIds = [];\r\n scope.dataGridOptions.columnApi.getAllColumns().forEach(function (columnDef) {\r\n\r\n allColumnIds.push(columnDef.colId);\r\n });\r\n\r\n scope.dataGridOptions.columnApi.autoSizeColumns(allColumnIds);\r\n })\r\n }\r\n\r\n scope.saveLocations = function () {\r\n\r\n var locationIds = [];\r\n scope.dataGridOptions.selectedItems.forEach(function (item) {\r\n locationIds.push(item.Id);\r\n })\r\n\r\n var save = ProjectService.saveLocations(scope.selectedDataset.Id, locationIds);\r\n\r\n save.$promise.then(function () {\r\n //reload the project locations\r\n scope.datasets = ProjectService.getProjectDatasets(routeParams.Id);\r\n scope.loadProjectLocations();\r\n\r\n //reload the dataset that was updated\r\n scope.datasets.$promise.then(function () {\r\n scope.datasets.forEach(function (dataset) {\r\n if (dataset.Id == scope.selectedDataset.Id)\r\n scope.showLocations(dataset);\r\n })\r\n })\r\n })\r\n }\r\n\r\n scope.saveNewPoint = function (inId) {\r\n console.log('inside saveNewPoint');\r\n console.log(inId);\r\n if (inId.pointId) {\r\n scope.row.SdeObjectId = inId.pointId\r\n console.log(\"Set row.SdeObjectId: \" + scope.row.SdeObjectId);\r\n\r\n var data = {\r\n ProjectId: scope.project.Id,\r\n };\r\n\r\n var target = '/api/v1/file/UploadProjectFile';\r\n\r\n scope.handleFilesToUploadRemove(scope.row, data, target, $upload, $rootScope, scope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n\r\n } else {\r\n scope.SaveMessage = \"There was a problem saving that location.\";\r\n console.dir(inId.pointId);\r\n }\r\n }\r\n\r\n scope.updateExistingPoint = function (inId) {\r\n if (inId.hasOwnProperty('Editing'))\r\n // $uibModalInstance.close(\r\n // // on close this information is sent to the esri-map component\r\n // {\r\n // 'ProjectId': scope.project.Id,\r\n // 'Location': scope.row,\r\n // });\r\n\r\n\r\n // Capture the old SdeObjectId, so we can delete it later.\r\n scope.OldSdeObjectId = scope.row.SdeObjectId;\r\n\r\n\r\n // scope.map.locationLayer.applyEdits([scope.newGraphic], null, null).then(function (addResults) {\r\n if (inId.hasOwnProperty('pointId')) {\r\n\r\n //.then(function (deleteResults) {\r\n if (inId.hasOwnProperty('failed')) {\r\n scope.SaveMessage = \"The location did not exist in SDE.\";\r\n console.dir(inId);\r\n } else if (inId.hasOwnProperty('pointId')) {\r\n console.log(\"In project-locations. Deleted old point in sdevector! \" + scope.row.SdeObjectId);\r\n\r\n //CommonService.UpdateLocationAction(scope.project.Id, scope.row.Id, scope.row.SdeObjectId, scope.OldSdeObjectId);\r\n CommonService.updateLocationAction(scope.project.Id, scope.row.Id, scope.row.SdeObjectId);\r\n } else {\r\n scope.SaveMessage = \"There was a problem deleting that location.\";\r\n console.dir(inId);\r\n }\r\n // }\r\n // ,\r\n\r\n // function (err) {\r\n // console.log(\"Apply Edits - Delete - failed: \" + err.message);\r\n // }\r\n\r\n // );\r\n\r\n var data = {\r\n ProjectId: scope.project.Id,\r\n };\r\n\r\n var target = '/api/v1/file/UploadProjectFile';\r\n scope.handleFilesToUploadRemove(scope.row, data, target, $upload, $rootScope, scope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n } else {\r\n scope.SaveMessage = \"There was a problem adding the new location.\";\r\n console.dir(inId);\r\n }\r\n\r\n\r\n // });\r\n // });\r\n\r\n var target = '/api/v1/file/UploadProjectFile';\r\n\r\n scope.handleFilesToUploadRemove(scope.row, data, target, $upload, $rootScope, scope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n\r\n }\r\n\r\n scope.modalFile_saveParentItem = function (saveRow) {\r\n\r\n saveRow.WaterBody = undefined;\r\n\r\n var new_location = CommonService.saveNewProjectLocation(scope.project.Id, saveRow);\r\n new_location.$promise.then(function () {\r\n console.log(\"done and success!\");\r\n scope.loadProjectLocations();\r\n return new_location;\r\n // $uibModalInstance.close(new_location);\r\n });\r\n };\r\n }\r\n\r\n];\r\n\r\n\r\nexport default project_locations;\r\n\r\n\r\n\r\n","export default \"
\\r\\n\";","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {BING_KEY, defaultLayer, parcelLayerConfig, proxyUrl, servicesLayerConfig} from \"../../../appjsLegacy/config\";\r\nimport MapView from \"@arcgis/core/views/MapView\";\r\nimport Map from \"@arcgis/core/Map\";\r\nimport esriConfig from \"@arcgis/core/config\";\r\nimport {EsriMapComponent} from \"../esri-map/esri-map.component\";\r\nimport GraphicsLayer from \"@arcgis/core/layers/GraphicsLayer\";\r\nimport Graphic from \"@arcgis/core/Graphic\";\r\nimport FeatureLayer from \"@arcgis/core/layers/FeatureLayer\";\r\nimport SimpleFillSymbol from \"@arcgis/core/symbols/SimpleFillSymbol\";\r\nimport QueryTask from \"@arcgis/core/tasks/QueryTask\";\r\nimport TileLayer from \"@arcgis/core/layers/TileLayer\";\r\nimport Query from \"@arcgis/core/rest/support/Query\";\r\nimport SpatialReference from \"@arcgis/core/geometry/SpatialReference\";\r\nimport * as intl from \"@arcgis/core/intl\";\r\nimport Color from \"@arcgis/core/Color\";\r\nimport MapImageLayer from \"@arcgis/core/layers/MapImageLayer\";\r\nimport {addProxyRule} from \"@arcgis/core/core/urlUtils\";\r\nimport Basemap from \"@arcgis/core/Basemap\";\r\nimport ImageryLayer from \"@arcgis/core/layers/ImageryLayer\";\r\nimport ImageryTileLayer from \"@arcgis/core/layers/ImageryTileLayer\";\r\nimport * as watchUtils from \"@arcgis/core/core/watchUtils\"\r\nimport PopupTemplate from \"@arcgis/core/PopupTemplate\";\r\nimport BingMapsLayer from \"@arcgis/core/layers/BingMapsLayer\";\r\n\r\n@Component({\r\n selector: 'permit-map',\r\n templateUrl: './permit-map.component.html',\r\n styleUrls: ['./permit-map.component.scss']\r\n})\r\nexport class PermitMapComponent extends EsriMapComponent implements OnInit, OnChanges {\r\n @ViewChild('permitMapViewNode', {static: true}) private permitMapViewElement: ElementRef;\r\n @Input() center: string;\r\n @Input() zoom: number;\r\n @Input() scale: number;\r\n @Input() gridSelection: any;\r\n @Input() clearIt: boolean;\r\n @Output() parcel: EventEmitter = new EventEmitter();\r\n map: Map;\r\n mapView: MapView;\r\n selectedBasemap: string;\r\n selectedServiceLayers: string[];\r\n serviceLayers: any[];\r\n parcelLayer: GraphicsLayer;\r\n showingParcel: boolean;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n spatialReference = new SpatialReference({wkid: 102100});\r\n selectedFeature: any;\r\n selectedGraphic: any;\r\n locationLayer: any;\r\n // mapSearchResults: any;\r\n mapSearchResults = {Message: \"\"};\r\n serviceLayerArr = [\r\n \"parcels_outline\",\r\n // \"parcels\"\r\n ];\r\n\r\n\r\n ngOnInit() {\r\n this.initializeMap(this.serviceLayerArr, this.permitMapViewElement.nativeElement);\r\n\r\n this.spatialReference = new SpatialReference({wkid: 102100});\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n // this is getting the input from appraisal-map\r\n // this.updatedGrid();\r\n if (this.mapView) {\r\n this.clearAll();\r\n this.findOnMap(this.gridSelection);\r\n }\r\n }\r\n\r\n initializeMap(serviceLayerArr: string[], container: any) {\r\n this.map = new Map({\r\n basemap: \"hybrid\"\r\n });\r\n //let new_layer = new BingMapsLayer({style: \"hybrid\", key: BING_KEY});\r\n // this.map = new Map({\r\n // basemap: {\r\n // baseLayers: [\r\n // new_layer\r\n // ]\r\n // }\r\n // });\r\n\r\n // declare our map\r\n console.log(\"trying to make the map\");\r\n\r\n\r\n addProxyRule({\r\n urlPrefix: \"restdata.ctuir.org\",\r\n proxyUrl: proxyUrl\r\n });\r\n\r\n\r\n //our first layer from up above...\r\n //console.log(\"//restdata.umatilla.nsn.us/arcgis/rest/services/BasemapParcelViewerCTUIR/MapServer?token=\" + security_token);\r\n this.selectedServiceLayers = serviceLayerArr;\r\n //setup basemaps\r\n this.selectedBasemap = defaultLayer; //\"imageryLayer\"\r\n // this.selectedServiceLayers = this.serviceLayers;\r\n\r\n this.basemaps = [];\r\n for (let property in parcelLayerConfig) {\r\n if (parcelLayerConfig.hasOwnProperty(property)) {\r\n this.basemaps.push({label: parcelLayerConfig[property].Display, name: property});\r\n }\r\n }\r\n\r\n\r\n this.serviceLayers = [];\r\n for (let property in servicesLayerConfig) {\r\n if (servicesLayerConfig.hasOwnProperty(property)) {\r\n this.serviceLayers.push({label: servicesLayerConfig[property].Display, name: property});\r\n }\r\n }\r\n\r\n\r\n //might want to do this: https://developers.arcgis.com/javascript/3/jssamples/query_hover.html\r\n // did try but had errors. might not be possible without using featureservice?: https://community.esri.com/thread/191330-popup-on-mouse-over-on-dynamic-service\r\n\r\nlet new_layer = new TileLayer({url: 'https://services.arcgisonline.com/arcgis/rest/services/World_Topo_Map/MapServer'});\r\n // this.map.basemap = new Basemap({\r\n // baseLayers: [\r\n // new_layer\r\n // ],\r\n // title: 'esri topo basemap',\r\n // id: 'basemap'\r\n // });\r\n let center;\r\n if (this.center) {\r\n center = this.center.split(\",\").map(c => parseFloat(c));\r\n }\r\n this.mapView = new MapView({\r\n container: container,\r\n center,\r\n scale: this.scale,\r\n map: this.map,\r\n spatialReference: {\r\n wkid: 102100 //mercator\r\n // wkid:26911 //nad_1983\r\n //\"wkt\":'PROJCS[\"NAD83(NSRS2007) / UTM zone 11N\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"D_\",SPHEROID[\"GRS_1980\",6378137,298.257222101]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]]'\r\n\r\n }\r\n });\r\n\r\n this.updateLayers();\r\n\r\n\r\n // start exposing an API by setting properties on \"this\" which is our controller\r\n // lets expose the \"addLayer\" method so child directives can add themselves to the map\r\n\r\n\r\n // // listen for click events and expost them as broadcasts on the scope and suing the scopes click handler\r\n // this.map.on(\"click\", function (e) {\r\n // // emit a message that bubbles up scopes, listen for it on your scope\r\n // $scope.$emit(\"this.map.click\", e);\r\n //\r\n // // use the scopes click fuction to handle the event\r\n // $scope.$apply(function ($scope) {\r\n // $scope.click.call($scope, e);\r\n // });\r\n // });\r\n\r\n this.mapView.on(\"click\", (e) => {\r\n this.clickedMap(e);\r\n });\r\n\r\n watchUtils.whenTrue(this.mapView.popup, 'visible', () => {\r\n watchUtils.whenFalseOnce(this.mapView.popup, 'visible', () => {\r\n this.parcelLayer.removeAll();\r\n });\r\n });\r\n\r\n return this.mapView;\r\n\r\n }\r\n\r\n // updatedGrid() {\r\n // console.log(`grid selection: ${this.gridSelection}`);\r\n // }\r\n updateLayers() {\r\n\r\n console.log(\"Changing Layer: \" + this.selectedBasemap);\r\n\r\n try {\r\n console.log(\"Loading layer: \" + parcelLayerConfig[this.selectedBasemap].ServiceURL);\r\n\r\n this.map.removeAll();\r\n\r\n //add the selected basemap\r\n // var new_layer = new MapImageLayer({url: \"https://restdata.ctuir.org/arcgis/rest/services/BasemapImagery/MapServer\"});\r\n // let new_layer = new TileLayer({url: 'http://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer'});\r\n // let new_layer = new TileLayer({url: 'https://services.arcgisonline.com/arcgis/rest/services/World_Topo_Map/MapServer'});\r\n\r\n // this.map.layers.add(new_layer);\r\n // this.map.layers.add(new_layer);\r\n // this.map.basemap = basemap;\r\n\r\n\r\n //now add any selected service layers\r\n for (var i = this.selectedServiceLayers.length - 1; i >= 0; i--) {\r\n var service_layer;\r\n if (servicesLayerConfig[this.selectedServiceLayers[i]].ServiceURL.includes(\"FeatureServer\") || this.selectedServiceLayers[i] == 'parcels' || this.selectedServiceLayers[i] == 'farms') {\r\n service_layer = new FeatureLayer({url: servicesLayerConfig[this.selectedServiceLayers[i]].ServiceURL});\r\n } else //then it is a MapServer\r\n {\r\n service_layer = new MapImageLayer({url: servicesLayerConfig[this.selectedServiceLayers[i]].ServiceURL});\r\n }\r\n\r\n console.log(\"adding \" + servicesLayerConfig[this.selectedServiceLayers[i]].ServiceURL);\r\n this.map.add(service_layer);\r\n }\r\n\r\n\r\n this.parcelLayer = new GraphicsLayer();\r\n this.map.add(this.parcelLayer);\r\n\r\n console.log(\"done!\");\r\n // this.map.reposition();\r\n } catch (e) {\r\n console.dir(e);\r\n }\r\n };\r\n\r\n addLayer(layer) {\r\n return this.map.layers.add(layer)\r\n };\r\n\r\n querySearchParcel(searchParam, callback) {\r\n var queryTask = new QueryTask({url: parcelLayerConfig[this.selectedBasemap].QueryURL});\r\n var query = new Query();\r\n query.where = intl.substitute(parcelLayerConfig[this.selectedBasemap].ParcelQuery, [searchParam]);\r\n console.log(\"query.where is next...\");\r\n console.dir(query.where);\r\n query.returnGeometry = false;\r\n query.outSpatialReference = this.spatialReference;\r\n query.outFields = [\"*\"];\r\n\r\n queryTask.execute(query).then(result => {\r\n callback(result.features); //give back the parcel features we found...\r\n }, function (err) {\r\n // console.log(\"Failure executing query!\");\r\n console.dir(err);\r\n console.dir(query);\r\n });\r\n }\r\n\r\n queryMatchParcel(searchParam, callback) {\r\n var queryTask = new QueryTask({url: parcelLayerConfig[this.selectedBasemap].QueryURL});\r\n var query = new Query();\r\n query.where = intl.substitute(parcelLayerConfig[this.selectedBasemap].LocateParcelQuery, [searchParam]);\r\n query.returnGeometry = false;\r\n query.outSpatialReference = this.spatialReference;\r\n query.outFields = [\"*\"];\r\n\r\n queryTask.execute(query).then(result => {\r\n callback(result.features); //give back the parcel features we found...\r\n }, function (err) {\r\n console.log(\"Failure executing query!\");\r\n console.dir(err);\r\n console.dir(query);\r\n });\r\n };\r\n\r\n querySelectParcel(mapPoint, objectId, callback) {\r\n console.log(\"Inside leasing or appraisal Map.js...\");\r\n console.log(\"Running query on: \" + parcelLayerConfig[this.selectedBasemap].QueryURL);\r\n\r\n var queryTask = new QueryTask({url: parcelLayerConfig[this.selectedBasemap].QueryURL});\r\n var query = new Query();\r\n\r\n query.outSpatialReference = this.spatialReference;\r\n query.returnGeometry = true;\r\n query.outFields = [\"*\"];\r\n if (mapPoint) {\r\n query.geometry = mapPoint;\r\n } else {\r\n query.objectIds = [objectId];\r\n }\r\n\r\n query.spatialRelationship = \"intersects\";\r\n queryTask.execute(query).then(result => {\r\n console.dir(result);\r\n callback(result.features); //give back the parcel features we found...\r\n }, function (err) {\r\n console.log(\"Failure executing query!\");\r\n console.dir(err);\r\n console.dir(query);\r\n });\r\n }\r\n\r\n clearGraphics() {\r\n if (this.parcelLayer != undefined) {\r\n return this.parcelLayer.removeAll();\r\n }\r\n }\r\n\r\n addParcelToMap(feature, color?, alpha?) {\r\n console.log(feature)\r\n let graphic;\r\n if (!color)\r\n color = \"#FF6600\";\r\n\r\n if (!alpha)\r\n alpha = .25;\r\n\r\n\r\n let lineColor = new Color(color);\r\n // lineColor.setColor(color);\r\n\r\n let fillColor = new Color(color);\r\n fillColor.a = alpha;\r\n\r\n var symbol = new SimpleFillSymbol({\r\n style: \"solid\",\r\n outline: {\r\n style: \"solid\",\r\n color: lineColor,\r\n width: 3,\r\n },\r\n color: fillColor\r\n });\r\n\r\n graphic = new Graphic({\r\n geometry: feature.geometry,\r\n symbol: symbol,\r\n attributes: feature.attributes\r\n });\r\n\r\n this.parcelLayer.removeAll();\r\n this.parcelLayer.add(graphic);\r\n this.selectedFeature = feature;\r\n this.selectedGraphic = graphic;\r\n\r\n // return this.featureEmit.emit(\"this.map.selectedFeature\", feature); //notify\r\n\r\n }\r\n\r\n centerAndZoomToGraphic(graphic, levelOrFactor?) {\r\n var the_level = (levelOrFactor) ? levelOrFactor : 20000;\r\n\r\n var centerPoint = graphic.geometry.extent.center;\r\n\r\n this.mapView.popup.open({content: this.getContentForPopup(graphic), location: centerPoint});\r\n return this.mapView.goTo({center: centerPoint, scale: the_level});\r\n };\r\n\r\n findOnMap(in_allotment) {\r\n\r\n console.log(\"finding on map \" + in_allotment);\r\n\r\n console.log(\"first search for related parcels\")\r\n // $scope.findRelatedPermits(in_allotment);\r\n\r\n this.queryMatchParcel(in_allotment, (features) => {\r\n if (features.length == 0) {\r\n console.log(\"parcel not found: \" + in_allotment);\r\n } else {\r\n //found the parcel but it doesn't include geometry so we need to get it\r\n this.querySelectParcel(null, features[0].attributes.OBJECTID, (geo_features) => {\r\n this.addParcelToMap(geo_features[0]);\r\n // this.centerAndZoomToGraphic(features[0]);\r\n this.centerAndZoomToGraphic(geo_features[0]);\r\n //$scope.findRelatedPermits(features[0].attributes.PARCELID);\r\n });\r\n\r\n }\r\n });\r\n }\r\n\r\n\r\n getContentForPopup(feature) {\r\n let att = feature.attributes;\r\n\r\n this.mapView.popup.title = `${att.Alias} ID: ${att.PARCELID}`;\r\n\r\n let html = \"\";\r\n\r\n if (att.Address && att.Address.trim() != \"\") {\r\n html += \"Address: \" + att.Address + \"
\";\r\n }\r\n\r\n if (att.OWNERSHIPS) {\r\n html += \"Ownership: \" + att.OWNERSHIPS + \"
\";\r\n }\r\n\r\n if (att.ACRES_GIS) {\r\n html += \"Acres (GIS): \" + att.ACRES_GIS;\r\n }\r\n\r\n return html;\r\n }\r\n\r\n\r\n clearAll() {\r\n this.clearGraphics();\r\n this.mapView.popup.close();\r\n this.parcelLayer.removeAll();\r\n this.selectedFeature = null;\r\n this.showingParcel = false;\r\n this.mapSearchResults.Message = \"\";\r\n }\r\n\r\n clickedMap(e) {\r\n this.querySelectParcel(e.mapPoint, null, (features) => {\r\n if (features.length == 0) {\r\n this.clearAll();\r\n alert('No parcel found at that location.');\r\n return;\r\n } else {\r\n this.selectedFeature = features[0];\r\n this.addParcelToMap(features[0]);\r\n\r\n // this.getContentForPopup(features[0]);\r\n this.mapView.popup.open({content: this.getContentForPopup(features[0])});\r\n // console.log(this.selectedFeature.attributes);\r\n // console.dir(this.selectedFeature.attributes);\r\n // let objectid = this.selectedFeature.attributes.OBJECTID;\r\n // let allotment = this.selectedFeature.attributes.PARCELID;\r\n this.parcel.emit(this.selectedFeature.attributes);\r\n }\r\n });\r\n }\r\n\r\n}\r\n\r\n","import {Injectable} from '@angular/core';\r\nimport {BehaviorSubject, Observable, ReplaySubject, Subject} from 'rxjs';\r\nimport {getByName} from \"../../appjsLegacy/core/common/common-functions\";\r\nimport * as angular from 'angular';\r\nimport {DEFAULT_PROJECT_PERMISSION, WHOAMI_URL} from \"../../appjsLegacy/config\";\r\nimport {catchError, filter, finalize, map, share, skip, skipWhile, switchMap, take, tap} from \"rxjs/operators\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {ActivatedRouteSnapshot, Router, RouterStateSnapshot} from \"@angular/router\";\r\nimport { Location } from '@angular/common';\r\n// import {nextActivity} from \"../../appjsLegacy/core/datasets/datasets-functions\";\r\n\r\ninterface Department {\r\n Description: string;\r\n Id: number;\r\n Name: string;\r\n Organization: Organization;\r\n OrganizationId: number;\r\n}\r\n\r\ninterface Group {\r\n Description: string;\r\n Id: number;\r\n Name: string;\r\n Organization: Organization;\r\n OrganizationId: number;\r\n}\r\n\r\ninterface Organization {\r\n Id: number;\r\n Name: string;\r\n Description: string;\r\n}\r\n\r\ninterface UserPreferences {\r\n Id: number;\r\n Name: string;\r\n UserId: number;\r\n Value: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProfileService {\r\n\r\n public ready: ReplaySubject = new ReplaySubject();\r\n // add loading flag that is set to true -> whoami gets called\r\n public favoriteDatasets: string[];\r\n public Department: Department;\r\n public Description: string;\r\n public Fullname: string;\r\n public GUID: number;\r\n public Groups: Group[];\r\n public Id: number;\r\n public Inactive: number;\r\n public IsOrganizationAdmin: boolean;\r\n public IsSuperAdmin: boolean;\r\n public LastLogin: string;\r\n public Organization: Organization;\r\n public OrganizationId: number;\r\n public ProfileImageUrl: string;\r\n public Roles: string;\r\n public UserPreferences: UserPreferences[];\r\n public Username: string;\r\n public favoriteProjects: string[];\r\n public permission: boolean | string;\r\n private loadingProfile: Observable;\r\n // public LandingPage: angular.rootScope.$location.url();\r\n private _permissions: any = {};\r\n public LandingPage: string;\r\n\r\n\r\n constructor(private http: HttpClient, private router: Router, private location: Location) {\r\n }\r\n\r\n public initialize(): Observable {\r\n if (!this.loadingProfile) {\r\n\r\n this.loadingProfile = this.loadProfile().pipe(take(1));\r\n // this.loadingProfile = this.ready;\r\n }\r\n\r\n return this.loadingProfile;\r\n };\r\n\r\n private loadProfile() {\r\n return this.http.get(WHOAMI_URL).pipe(\r\n tap((profile: any) => {\r\n this.loadUserPreferences(profile);\r\n }),\r\n catchError(e => this.router.navigate(['login'])),\r\n finalize(() => this.ready.next(true)),\r\n map(() => true)\r\n )\r\n }\r\n\r\n public loadUserPreferences(profile: any) {\r\n Object.assign(this, profile);\r\n const favoriteDatasets = getByName(profile.UserPreferences, \"Datasets\");\r\n\r\n if (favoriteDatasets) {\r\n this.favoriteDatasets = favoriteDatasets.Value.split(\",\")\r\n } else {\r\n this.favoriteDatasets = [];\r\n }\r\n\r\n var favoriteProjects = getByName(profile.UserPreferences, \"Projects\");\r\n if (favoriteProjects) {\r\n this.favoriteProjects = favoriteProjects.Value.split(\",\")\r\n } else {\r\n this.favoriteProjects = [];\r\n }\r\n\r\n let landing = getByName(profile.UserPreferences, \"LandingPage\");\r\n if (landing) {\r\n this.LandingPage = getByName(profile.UserPreferences, \"LandingPage\").Value;\r\n }\r\n return profile;\r\n }\r\n public hasRole(role: string): boolean {\r\n return this.isInGroup(role);\r\n\r\n // var hasRoleInGroup = this.isInGroup(role);\r\n // console.log(\"hasRoleInGroup = \" + hasRoleInGroup);\r\n // return hasRoleInGroup;\r\n };\r\n\r\n public canEdit(project) {\r\n if (!project) {\r\n return null;\r\n }\r\n\r\n return this.canEditProject(project);\r\n };\r\n\r\n public isProjectEditor(project: string): boolean {\r\n return this.canEditProject(project);\r\n };\r\n\r\n public isAdmin() {\r\n if (this.IsOrganizationAdmin || this.IsSuperAdmin) {\r\n //console.log(this.IsOrganizationAdmin);\r\n return true;\r\n }\r\n // return (this.IsOrganizationAdmin || this.IsSuperAdmin);\r\n };\r\n\r\n public canViewProject(project) {\r\n\r\n if (!project || !project.$resolved)\r\n return false;\r\n\r\n if (this.IsSuperAdmin) {\r\n // console.log(\"Super Admin can do anything!\")\r\n return true;\r\n }\r\n\r\n if (project.OrganizationId == this.OrganizationId && this.IsOrganizationAdmin == true) {\r\n //console.log(\"Organization Admin can do anything in this Org!\")\r\n return true;\r\n }\r\n\r\n var permission = this.getProjectPermission(project);\r\n\r\n //console.log(\" Can the user VIEW \"+project.Id+\": \" + permission);\r\n\r\n return (permission) //if they have any existing permission for this project then they can view\r\n\r\n };\r\n\r\n public canEditProject(project) {\r\n // console.log(`checking canEditProject for:`)\r\n // console.log(project);\r\n // if (project) {\r\n // console.log('project is here!');\r\n // }\r\n if (!project || !project.$resolved) {\r\n console.log(\"canEditProject - no project given - returning false\");\r\n return false;\r\n }\r\n\r\n if (this.IsSuperAdmin) {\r\n // console.log(\"Super Admin can do anything!\")\r\n return true;\r\n }\r\n\r\n if (project.OrganizationId == this.OrganizationId && this.IsOrganizationAdmin == true) {\r\n //console.log(\"Organization Admin can do anything in this Org!\")\r\n return true;\r\n }\r\n\r\n var permission = this.getProjectPermission(project);\r\n\r\n console.log(\" Can the user EDIT \"+project.Id+\": \" + permission);\r\n\r\n return (permission && (permission == \"Edit\" || permission == \"Admin\"))\r\n\r\n };\r\n\r\n public canAdminProject(project) {\r\n\r\n if (!project || !project.$resolved) {\r\n //console.log(\"Project not loaded for canAdminProject - returning false\");\r\n return false;\r\n }\r\n\r\n if (this.IsSuperAdmin) {\r\n //console.log(\"Super Admin can do anything!\")\r\n return true;\r\n }\r\n\r\n if (project.OrganizationId == this.OrganizationId && this.IsOrganizationAdmin == true) {\r\n //console.log(\"Organization Admin can do anything in this Org!\")\r\n return true;\r\n }\r\n\r\n var permission = this.getProjectPermission(project);\r\n\r\n //console.log(\" Can the user ADMIN \"+project.Id+\": \" + permission);\r\n return (permission && permission == \"Admin\");\r\n\r\n };\r\n\r\n public isProjectOwner(project): boolean {\r\n\r\n if (!project || !project.$resolved)\r\n return false;\r\n\r\n if (project && project.OwnerId == this.Id)\r\n return true;\r\n\r\n //if(profile.canAdminProject(project))\r\n //\treturn true;\r\n\r\n //console.log(profile.Id + \" is not owner: \" + project.OwnerId);\r\n return false;\r\n };\r\n\r\n public getProjectPermission(project) {\r\n console.log(project)\r\n if (!project || !project.$resolved) {\r\n //console.log(\"project is unresolved or empty\")\r\n return false;\r\n }\r\n\r\n var key = 'p' + project.Id;\r\n this.permission = false;\r\n\r\n if (this._permissions.hasOwnProperty(key)) {\r\n this.permission = this._permissions[key];\r\n //console.log(\" >> cache hit on permission key \" + key + \": \" + permission);\r\n } else {\r\n //console.log(\" >> cache MISS on permission key \" + key + \". checking permission...\");\r\n }\r\n\r\n //if it was cached then return. our work is finished here!\r\n if (this.permission) {\r\n return this.permission;\r\n }\r\n\r\n //console.log('checking permission');\r\n\r\n //in priority order of permission application:\r\n\r\n //console.log(\"user auth?\")\r\n\r\n //is owner of project?\r\n if (project.OwnerId == this.Id) {\r\n console.log(\" User is project owner = Admin\")\r\n\r\n this.permission = 'Admin';\r\n\r\n //cache and return\r\n this._permissions[key] = this.permission;\r\n return this.permission;\r\n }\r\n\r\n //user auth\r\n project.Permissions.forEach((perm) => {\r\n if (perm.PrincipalType == \"User\") {\r\n if (this.Id == perm.PrincipalId) {\r\n this.permission = perm.Level;\r\n console.log(\"User auth = \" + this.permission);\r\n }\r\n }\r\n })\r\n\r\n //cache and return\r\n if (this.permission) {\r\n this._permissions[key] = this.permission;\r\n return this.permission;\r\n }\r\n\r\n //console.log(\"dept auth?\")\r\n\r\n //dept auth\r\n project.Permissions.forEach(function (perm) {\r\n if (perm.PrincipalType == \"Department\") {\r\n if (this.DepartmentId == perm.PrincipalId) {\r\n this.permission = perm.Level;\r\n console.log(\"Department auth = \" + this.permission);\r\n }\r\n }\r\n });\r\n\r\n //cache and return\r\n if (this.permission) {\r\n this._permissions[key] = this.permission;\r\n return this.permission;\r\n }\r\n\r\n\r\n //console.log(\"group auth?\")\r\n\r\n //group auth\r\n project.Permissions.forEach((perm) => {\r\n if (perm.PrincipalType == \"Group\") {\r\n //is the user in this group?\r\n this.Groups.forEach((group) => {\r\n if (group.Id == perm.PrincipalId) {\r\n //check to make sure we get the highest group permission of any group\r\n if (!this.permission) {\r\n this.permission = perm.Level;\r\n } else if (perm.Level == \"Admin\") {\r\n this.permission = perm.Level;\r\n\r\n } else if (perm.Level == \"Edit\" && this.permission == \"View\") {\r\n this.permission = perm.Level;\r\n }\r\n console.log(\"group auth (\" + group.Name + \") = \" + this.permission);\r\n }\r\n })\r\n }\r\n })\r\n\r\n //cache and return\r\n if (this.permission) {\r\n this._permissions[key] = this.permission;\r\n return this.permission;\r\n }\r\n\r\n //console.log(\"dept orguser?\")\r\n var hasOrgUserPermissionSet = false;\r\n\r\n //global project - orguser\r\n project.Permissions.forEach((perm) => {\r\n if (perm.PrincipalType == \"OrgUser\") {\r\n if (this.OrganizationId == project.OrganizationId && perm.Level == \"View\") {\r\n this.permission = perm.Level;\r\n console.log(\"orgUser auth = \" + this.permission);\r\n }\r\n\r\n hasOrgUserPermissionSet = true; //\r\n }\r\n })\r\n\r\n //cache and return\r\n if (this.permission) {\r\n this._permissions[key] = this.permission;\r\n return this.permission;\r\n }\r\n\r\n //console.log(\"public auth?\")\r\n\r\n //global project - public\r\n project.Permissions.forEach((perm) => {\r\n if (perm.PrincipalType == \"Public\" && perm.Level == \"View\") {\r\n this.permission = perm.Level;\r\n console.log(\"Public auth = \" + this.permission);\r\n }\r\n })\r\n\r\n //cache and return\r\n if (this.permission) {\r\n this._permissions[key] = this.permission;\r\n return this.permission;\r\n }\r\n\r\n //if we're here, the last chance is if thee was no OrgUser permission set for the project and yet the system-wide default is to allow view\r\n\r\n if (!hasOrgUserPermissionSet && DEFAULT_PROJECT_PERMISSION.Permission.OrgUser == \"View\") {\r\n\r\n this.permission = DEFAULT_PROJECT_PERMISSION.Permission.OrgUser;\r\n console.log(\"System-wide view enabled and no orguser parameter set\")\r\n }\r\n\r\n //cache and return\r\n if (this.permission) {\r\n this._permissions[key] = this.permission;\r\n }\r\n\r\n console.log(\" final permission: \" + this.permission)\r\n\r\n return this.permission;\r\n };\r\n\r\n public setLandingPage() {\r\n // console.log(\" our location: \" + window.location.pathname);\r\n this.LandingPage = window.location.pathname;\r\n\r\n this.location.replaceState(\"/mypreferences\");\r\n };\r\n\r\n public isDatasetFavorite(datasetId): boolean {\r\n return (this.favoriteDatasets.indexOf(datasetId + \"\") != -1);\r\n };\r\n\r\n public isInGroup(in_group: string): boolean {\r\n //console.log(\"Inside isInGroup...\");\r\n if (this.IsSuperAdmin)\r\n return true;\r\n\r\n var inGroup = false;\r\n this.Groups.forEach(function (group) {\r\n if (group.Name === in_group) {\r\n inGroup = true;\r\n }\r\n });\r\n\r\n //console.log(\"inGroup = \" + inGroup);\r\n return inGroup;\r\n }\r\n\r\n public isProjectFavorite(projectId): boolean {\r\n return (this.favoriteProjects.indexOf(projectId + \"\") != -1);\r\n };\r\n\r\n public toggleDatasetFavorite(dataset) {\r\n var dsid = dataset.Id + \"\";\r\n var index = this.favoriteDatasets.indexOf(dsid);\r\n if (index == -1) { //doesn't exist\r\n this.favoriteDatasets.push(dsid);\r\n } else {\r\n this.favoriteDatasets.splice(index, 1);\r\n }\r\n };\r\n\r\n public toggleProjectFavorite(project) {\r\n var dsid = project.Id + \"\";\r\n var index = this.favoriteProjects.indexOf(dsid);\r\n if (index == -1) { //doesn't exist\r\n this.favoriteProjects.push(dsid);\r\n } else {\r\n this.favoriteProjects.splice(index, 1);\r\n }\r\n };\r\n\r\n canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean {\r\n return this.initialize();\r\n }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, State: RouterStateSnapshot): Observable | Promise | boolean {\r\n return this.initialize();\r\n }\r\n\r\n}\r\n\r\n\r\n// move configureProfile into here\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {PermitMapComponent} from \"../permit-map/permit-map.component\";\r\nimport GraphicsLayer from \"@arcgis/core/layers/GraphicsLayer\";\r\nimport QueryTask from \"@arcgis/core/tasks/QueryTask\";\r\nimport Graphic from \"@arcgis/core/Graphic\";\r\nimport Query from \"@arcgis/core/rest/support/Query\";\r\nimport SpatialReference from \"@arcgis/core/geometry/SpatialReference\";\r\nimport PopupTemplate from \"@arcgis/core/PopupTemplate\";\r\nimport Color from \"@arcgis/core/Color\";\r\nimport Map from \"@arcgis/core/Map\";\r\nimport MapView from \"@arcgis/core/views/MapView\";\r\nimport FeatureLayer = __esri.FeatureLayer;\r\nimport FeatureLayerView = __esri.FeatureLayerView;\r\n\r\n@Component({\r\n selector: 'leasing-map',\r\n templateUrl: './leasing-map.component.html',\r\n styleUrls: ['./leasing-map.component.scss']\r\n})\r\nexport class LeasingMapComponent extends PermitMapComponent implements OnInit, OnChanges {\r\n @ViewChild('leasingMapViewNode', {static: true}) private leasingMapViewElement: ElementRef;\r\n @Input() clickSelect: string;\r\n @Input() gridSelection: any;\r\n @Output() leaseparcel: EventEmitter = new EventEmitter();\r\n searchTerm: any;\r\n map: Map;\r\n mapView: MapView;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.initializeMap([\r\n \"farms\",\r\n \"parcels_outline\",\r\n ], this.leasingMapViewElement.nativeElement);\r\n this.mapSearchResults = {Message: \"\"};\r\n this.spatialReference = new SpatialReference({wkid: 102100});\r\n this.clickSelect = 'allotments';\r\n // this.layerVisSwitch(this.clickSelect);\r\n // this.mapView.on('pointer-move', (e) => {\r\n // this.map.layers.forEach(featlayer => {\r\n // console.log(featlayer);\r\n // if (featlayer.title == 'FarmTracts RAF - Farm Tracts' && featlayer.type == \"feature\") {\r\n // //@ts-ignore\r\n // let query = featlayer.createQuery();\r\n // query.geometry = e.MapPoint;\r\n // query.spatialRelationship = \"intersects\";\r\n // query.returnGeometry = true;\r\n // query.outFields = [\"*\"];\r\n //\r\n // // @ts-ignore\r\n // featlayer.queryFeatures(query).then(res => {\r\n // console.log(res);\r\n // })\r\n //\r\n //\r\n //\r\n //\r\n // }\r\n // });\r\n //\r\n // });\r\n\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n // super.ngOnChanges(changes);\r\n if (this.mapView) {\r\n this.clearAll();\r\n // this.layerVisSwitch(this.clickSelect);\r\n if (changes.hasOwnProperty('gridSelection')) {\r\n // console.log(this.gridSelection);\r\n this.findOnMap(this.gridSelection);\r\n }\r\n }\r\n }\r\n\r\n addLayer(layer, filter?) {\r\n // this.locationLayer = this.map.layers.add(layer);\r\n\r\n// console.log(\"Added layer to map\");\r\n// console.log(\"layer_\"+layer.id);\r\n\r\n //setup our layer locationid function so we can all it again sometime\r\n layer.showLocationsById = function (locationObjectIds) {\r\n try {\r\n this.clearSelection();\r\n var definitionExpression = \"OBJECTID IN (\" + locationObjectIds + \")\";\r\n console.log(\"Definition expression: \" + definitionExpression);\r\n this.setDefinitionExpression(definitionExpression);\r\n this.refresh();\r\n } catch (e) {\r\n console.dir(e);\r\n }\r\n };\r\n\r\n if (filter && filter == \"location\") {\r\n if (typeof this.locationObjectIds == \"undefined\") {\r\n // $scope.$watch('locationObjectIds', function () {\r\n\r\n //skip the first run\r\n if (typeof this.locationObjectIds == \"undefined\")\r\n return;\r\n\r\n layer.showLocationsById(this.locationObjectIds); // now call it\r\n\r\n layer.show();\r\n\r\n // });\r\n }\r\n }\r\n\r\n\r\n return this.map.layers.add(layer);\r\n };\r\n\r\n // setupHoverQuery(mapPoint) {\r\n // console.log(\"Starting up the hover\");\r\n // var queryTask = new QueryTask({url: \"https://arcserv4.ctuir.org/server/rest/services/FarmTracts_RAF/MapServer/0\"});\r\n // //build query filter\r\n // let query = new Query();\r\n // query.returnGeometry = true;\r\n // query.outFields = [\"*\"]; //\"Acres\", \"Allotment\", \"Land_Use\"];\r\n // query.outSpatialReference = new SpatialReference({wkid: 102100});\r\n //\r\n //\r\n // if (mapPoint) {\r\n // query.geometry = mapPoint;\r\n // }\r\n // //query.where = \"1=1\";\r\n //\r\n // var infoTemplate = new PopupTemplate({\r\n // // title: `${Allotment}`,\r\n // // content: `Allotment: ${Allotment}
` +\r\n // // `Land Use: ${Land_Use}
` +\r\n // // `Acres: ${Acres}
`,\r\n // });\r\n //\r\n // // map.infoWindow.resize(245, 125); infoWindow not in v4 API\r\n //\r\n // console.log(\"2\");\r\n //\r\n // //Can listen for complete event to process results\r\n // //or can use the callback option in the queryTask.execute method.\r\n // queryTask.execute(query).then((result) => {\r\n // console.log(\"query back\");\r\n //\r\n // // this.mapView.graphics.removeAll();\r\n // // var highlightSymbol = {\r\n // // symbol: \"simple-fill\",\r\n // // style: \"solid\",\r\n // // color: new Color([125, 125, 125, 0.35]),\r\n // // outline: {\r\n // // color: new Color([255, 0, 0]),\r\n // // style: \"solid\"\r\n // // }\r\n // // }\r\n // //\r\n // // var symbol = {\r\n // // symbol: \"simple-fill\",\r\n // // style: \"solid\",\r\n // // color: new Color([125, 125, 125, 0.35]),\r\n // // outline: {\r\n // // color: new Color([255, 255, 255, 0.35]),\r\n // // style: \"solid\",\r\n // // width: 1,\r\n // // }\r\n // // }\r\n //\r\n //\r\n // var features = result.features;\r\n // console.log(features);\r\n // // console.dir(event);\r\n // //\r\n // // var countiesGraphicsLayer = new GraphicsLayer();\r\n // // //QueryTask returns a featureSet.\r\n // // //Loop through features in the featureSet and add them to the map.\r\n // // var featureCount = (features) ? features.length : 0;\r\n // // for (var i = 0; i < featureCount; i++) {\r\n // // //Get the current feature from the featureSet.\r\n // // var graphic = features[i]; //Feature is a graphic\r\n // // graphic.set('symbol', symbol);\r\n // // graphic.popupTemplate = infoTemplate;\r\n // //\r\n // // countiesGraphicsLayer.add(graphic);\r\n // // }\r\n // // this.map.layers.add(countiesGraphicsLayer);\r\n // // // this.mapView.graphics.enableMouseEvents();\r\n // // //listen for when the mouse-over event fires on the countiesGraphicsLayer\r\n // // //when fired, create a new graphic with the geometry from event.graphic\r\n // // //and add it to the maps graphics layer\r\n // // // this.mapView.graphics.on(\"pointer-move\", (event) => {\r\n // // // console.log(\"over\");\r\n // // // this.mapView.graphics.removeAll(); //use the maps graphics layer as the highlight layer\r\n // // // var graphic = event.graphic;\r\n // // // this.mapView.popup.content = graphic.getContent();\r\n // // // this.mapView.popup.title = graphic.getTitle();\r\n // // // var highlightGraphic = new Graphic({geometry: graphic.geometry, symbol: highlightSymbol});\r\n // // // this.mapView.graphics.add(highlightGraphic);\r\n // // // this.mapView.popup.open();\r\n // // // // this.mapView.popup.show(event.screenPoint,\r\n // // // // this.mapView.getInfoWindowAnchor(event.screenPoint));\r\n // // // });\r\n // // //\r\n // // // //listen for when map.graphics mouse-out event is fired\r\n // // // //and then clear the highlight graphic\r\n // // // //and hide the info window\r\n // // // this.mapView.graphics.on(\"mouse-out\", () => {\r\n // // // console.log(\"out\");\r\n // // // this.mapView.graphics.removeAll();\r\n // // // this.mapView.popup.close();\r\n // // // });\r\n // });\r\n // console.log(\"3\");\r\n // queryTask.execute(query);\r\n //\r\n //\r\n // };\r\n\r\n querySelectField(mapPoint, objectId, callback) {\r\n\r\n var queryurl = \"https://arcserv4.ctuir.org/server/rest/services/FarmTracts_RAF/MapServer/0\";\r\n\r\n console.log(\"Running query on: \" + queryurl);\r\n\r\n let queryTask = new QueryTask({url: queryurl});\r\n var query = new Query();\r\n\r\n query.outSpatialReference = this.spatialReference;\r\n query.returnGeometry = true;\r\n query.outFields = [\"*\"];\r\n if (mapPoint) {\r\n query.geometry = mapPoint;\r\n } else {\r\n query.objectIds = [objectId];\r\n }\r\n\r\n query.spatialRelationship = \"intersects\";\r\n queryTask.execute(query).then(result => {\r\n // console.dir(result);\r\n callback(result.features); //give back the parcel features we found...\r\n }, function (err) {\r\n console.log(\"Failure executing query!\");\r\n console.dir(err);\r\n console.dir(query);\r\n });\r\n }\r\n\r\n clickedMap(e) {\r\n if (this.clickSelect == 'fields') {\r\n // todo: get info about fields layer\r\n this.querySelectField(e.mapPoint, null, (features) => {\r\n if (features.length == 0) {\r\n alert('No ' + this.clickSelect + ' found at that location.');\r\n return;\r\n }\r\n\r\n this.addParcelToMap(features[0]);\r\n this.centerAndZoomToGraphic(features[0]);\r\n console.dir(this.selectedFeature.attributes);\r\n this.mapView.popup.open({content: this.getContentForPopup(features[0])});\r\n var objectid = this.selectedFeature.attributes.OBJECTID; //fieldid or cadasterobjectid\r\n var allotment = this.selectedFeature.attributes.Allotment ? this.selectedFeature.attributes.Allotment : this.selectedFeature.attributes.PARCELID; //parcel = allotment / allotment = field\r\n this.leaseparcel.emit(this.selectedFeature.attributes);\r\n });\r\n } else if (this.clickSelect == 'allotments') {\r\n this.querySelectParcel(e.mapPoint, null, (features) => {\r\n if (features.length == 0) {\r\n alert('No ' + this.clickSelect + ' found at that location.');\r\n return;\r\n }\r\n this.addParcelToMap(features[0]);\r\n this.centerAndZoomToGraphic(features[0]);\r\n this.mapView.popup.open({content: this.getContentForPopup(features[0])});\r\n console.dir(this.selectedFeature.attributes);\r\n this.leaseparcel.emit(this.selectedFeature.attributes);\r\n // var objectid = this.selectedFeature.attributes.OBJECTID; //fieldid or cadasterobjectid\r\n // var allotment = (this.selectedFeature.attributes.Allotment) ? this.selectedFeature.attributes.Allotment : this.selectedFeature.attributes.PARCELID; //parcel = allotment / allotment = field\r\n\r\n });\r\n\r\n\r\n }\r\n }\r\n\r\n // this can be implemented for the fields data\r\n // layerVisSwitch(selected) {\r\n //\r\n // if (selected == 'allotments') { // this should be the parcel layer outlines\r\n //\r\n // this.map.layers.forEach(layer => {\r\n // if (layer.title != null) {\r\n // if (layer.title.includes('Farm')) {\r\n // console.log('allotments farms OFF');\r\n // // console.log(layer);\r\n // layer.visible = false;\r\n // } else if (layer.title.includes('Parcels')) {\r\n // layer.visible = true;\r\n // }\r\n // }\r\n // });\r\n // } else if (selected == 'fields') {\r\n // this.map.layers.forEach(layer => {\r\n // if (layer.title != null) {\r\n // if (layer.title.includes('Parcels')) {\r\n // layer.visible = false;\r\n // console.log('fields parcels OFF');\r\n // // console.log(layer.title);\r\n // } else if (layer.title.includes('Farm') && layer.type != \"graphics\") {\r\n // layer.visible = true;\r\n // }\r\n // }\r\n // })\r\n // }\r\n // }\r\n\r\n getContentForPopup(feature) {\r\n\r\n let att = feature.attributes;\r\n let html = \"\";\r\n if (att.hasOwnProperty('PARCELID')) {\r\n this.mapView.popup.title = `${att.Alias} ID: ${att.PARCELID}`;\r\n\r\n\r\n if (att.Address && att.Address.trim() != \"\") {\r\n html += \"Address: \" + att.Address + \"
\";\r\n }\r\n\r\n if (att.OWNERSHIPS) {\r\n html += \"Ownership: \" + att.OWNERSHIPS + \"
\";\r\n }\r\n\r\n if (att.ACRES_GIS) {\r\n html += \"Acres (GIS): \" + att.ACRES_GIS;\r\n }\r\n }\r\n\r\n if (att.hasOwnProperty('Allotment')) {\r\n this.mapView.popup.title = `Allotment: ${att.Allotment}`;\r\n\r\n html += `Allotment: ${att.Allotment}
`;\r\n html += `Land Use: ${att.Land_Use}
`;\r\n html += `Acres: ${att.Acres}
`;\r\n }\r\n\r\n\r\n return html;\r\n }\r\n\r\n findOnMap(in_allotment) {\r\n\r\n console.log(\"finding on map \" + in_allotment);\r\n\r\n console.log(\"first search for related parcels\")\r\n // $scope.findRelatedPermits(in_allotment);\r\n\r\n this.queryMatchParcel(in_allotment, (features) => {\r\n if (features.length == 0) {\r\n console.log(\"parcel not found: \" + in_allotment);\r\n } else {\r\n //found the parcel but it doesn't include geometry so we need to get it\r\n this.querySelectParcel(null, features[0].attributes.OBJECTID, (geo_features) => {\r\n this.addParcelToMap(geo_features[0]);\r\n this.centerAndZoomToGraphic(geo_features[0]);\r\n // $scope.findRelatedPermits(features[0].attributes.PARCELID);\r\n });\r\n\r\n }\r\n });\r\n\r\n }\r\n\r\n // leasingMap() {\r\n //\r\n //\r\n //\r\n // // setup our map options based on the attributes and scope\r\n // // var mapOptions = {\r\n // // center: ($attrs.center) ? $attrs.center.split(\",\") : $scope.center,\r\n // // zoom: ($attrs.zoom) ? $attrs.zoom : $scope.zoom,\r\n // // spatialReference: {\r\n // // wkid: 102100 //mercator\r\n // // // wkid:26911 //nad_1983\r\n // // //\"wkt\":'PROJCS[\"NAD83(NSRS2007) / UTM zone 11N\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"D_\",SPHEROID[\"GRS_1980\",6378137,298.257222101]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]]'\r\n // //\r\n // // }\r\n // // };\r\n // //\r\n // // // declare our map\r\n // // console.log(\"trying to make the map\");\r\n // //\r\n // // loadModules([\"esri/config\"], {version: '3.37'}).then(([esriConfig]) => {\r\n // //\r\n // // esriConfig.defaults.io.proxyUrl = proxyUrl; // From the config.js file.\r\n // // esriConfig.defaults.io.alwaysUseProxy = true;\r\n // //\r\n // // });\r\n // //\r\n // // var map = new Map($attrs.id, mapOptions);\r\n // // //our first layer from up above...\r\n // // //console.log(\"//restdata.umatilla.nsn.us/arcgis/rest/services/BasemapParcelViewerCTUIR/MapServer?token=\" + security_token);\r\n // //\r\n // // //setup basemaps\r\n // // map.selectedBasemap = defaultLayer; //\"imageryLayer\"\r\n // // map.selectedServiceLayers = [\r\n // // \"parcels\",\r\n // // \"parcels_outline\",\r\n // // \"farms\"\r\n // // ];\r\n // //\r\n // // map.basemaps = [];\r\n // // for (var property in parcelLayerConfig) {\r\n // // if (parcelLayerConfig.hasOwnProperty(property)) {\r\n // // map.basemaps.push({label: parcelLayerConfig[property].Display, name: property});\r\n // // }\r\n // // }\r\n // // ;\r\n // //\r\n // // map.serviceLayers = [];\r\n // // for (var property in servicesLayerConfig) {\r\n // // if (servicesLayerConfig.hasOwnProperty(property)) {\r\n // // map.serviceLayers.push({label: servicesLayerConfig[property].Display, name: property});\r\n // // }\r\n // // }\r\n // // ;\r\n //\r\n //\r\n // //might want to do this: https://developers.arcgis.com/javascript/3/jssamples/query_hover.html\r\n // // did try but had errors. might not be possible without using featureservice?: https://community.esri.com/thread/191330-popup-on-mouse-over-on-dynamic-service\r\n //\r\n // // map.updateLayers = function () {\r\n // //\r\n // // console.log(\"Changing Layer: \" + map.selectedBasemap);\r\n // //\r\n // // try {\r\n // // console.log(\"Loading layer: \" + parcelLayerConfig[map.selectedBasemap].ServiceURL);\r\n // //\r\n // // map.removeAllLayers();\r\n // //\r\n // // //add the selected basemap\r\n // // var new_layer = new ArcGISTiledMapServiceLayer(parcelLayerConfig[map.selectedBasemap].ServiceURL);\r\n // // map.addLayer(new_layer);\r\n // // map.currentBasemapLayer = new_layer;\r\n // //\r\n // // //now add any selected service layers\r\n // // for (var i = map.selectedServiceLayers.length - 1; i >= 0; i--) {\r\n // // var service_layer;\r\n // // if (servicesLayerConfig[map.selectedServiceLayers[i]].ServiceURL.includes(\"FeatureServer\")) {\r\n // // service_layer = new FeatureLayer(servicesLayerConfig[map.selectedServiceLayers[i]].ServiceURL);\r\n // // } else //then it is a MapServer\r\n // // {\r\n // // service_layer = new MapImageLayer(servicesLayerConfig[map.selectedServiceLayers[i]].ServiceURL);\r\n // // }\r\n // //\r\n // // console.log(\"adding \" + servicesLayerConfig[map.selectedServiceLayers[i]].ServiceURL);\r\n // // map.addLayer(service_layer);\r\n // // }\r\n // // ;\r\n // //\r\n // // map.parcelLayer = new GraphicsLayer();\r\n // // map.addLayer(map.parcelLayer);\r\n // //\r\n // // console.log(\"done!\");\r\n // // map.reposition();\r\n // // } catch (e) {\r\n // // console.dir(e);\r\n // // }\r\n // // };\r\n //\r\n // // this.updateLayers();\r\n //\r\n //\r\n // // start exposing an API by setting properties on \"this\" which is our controller\r\n // // lets expose the \"addLayer\" method so child directives can add themselves to the map\r\n // // this.addLayer = function (layer, filter?) {\r\n // // map.locationLayer = map.addLayer(layer);\r\n // //\r\n // // // console.log(\"Added layer to map\");\r\n // // // console.log(\"layer_\"+layer.id);\r\n // //\r\n // // //setup our layer locationid function so we can all it again sometime\r\n // // layer.showLocationsById = function (locationObjectIds) {\r\n // // try {\r\n // // this.clearSelection();\r\n // // var definitionExpression = \"OBJECTID IN (\" + locationObjectIds + \")\";\r\n // // console.log(\"Definition expression: \" + definitionExpression);\r\n // // this.setDefinitionExpression(definitionExpression);\r\n // // this.refresh();\r\n // // } catch (e) {\r\n // // console.dir(e);\r\n // // }\r\n // // };\r\n // //\r\n // // if (filter && filter == \"location\") {\r\n // // if (typeof $scope.locationObjectIds == \"undefined\") {\r\n // // $scope.$watch('locationObjectIds', function () {\r\n // //\r\n // // //skip the first run\r\n // // if (typeof $scope.locationObjectIds == \"undefined\")\r\n // // return;\r\n // //\r\n // // layer.showLocationsById($scope.locationObjectIds); // now call it\r\n // //\r\n // // layer.show();\r\n // //\r\n // // });\r\n // // }\r\n // // }\r\n // //\r\n // // return map.locationLayer;\r\n // // };\r\n //\r\n // //the hover isn't working yet... WIP\r\n // //map.on(\"load\", setupHoverQuery);\r\n //\r\n //\r\n //\r\n // // IN PERMIT MAP COMPONENT\r\n // // //use this for doing a search by parcelid or address\r\n // // map.querySearchParcel = function (searchParam, callback) {\r\n // // var queryTask = new QueryTask(parcelLayerConfig[map.selectedBasemap].QueryURL);\r\n // // var query = new Query();\r\n // // query.where = dojo.string.substitute(parcelLayerConfig[map.selectedBasemap].ParcelQuery, [searchParam]);\r\n // // console.log(\"query.where is next...\");\r\n // // console.dir(query.where);\r\n // // query.returnGeometry = false;\r\n // // query.outSpatialReference = this.spatialReference;\r\n // // query.outFields = [\"*\"];\r\n // //\r\n // // queryTask.execute(query, function (result) {\r\n // // callback(result.features); //give back the parcel features we found...\r\n // // }, function (err) {\r\n // // console.log(\"Failure executing query!\");\r\n // // console.dir(err);\r\n // // console.dir(query);\r\n // // });\r\n // // };\r\n //\r\n // // IN PERMIT MAP COMPONENT\r\n // //use this for selecting a specific parcel/allotment by id (no geometry)\r\n // // map.queryMatchParcel = function (searchParam, callback) {\r\n // // var queryTask = new QueryTask(parcelLayerConfig[map.selectedBasemap].QueryURL);\r\n // // var query = new Query();\r\n // // query.where = dojo.string.substitute(parcelLayerConfig[map.selectedBasemap].LocateParcelQuery, [searchParam]);\r\n // // query.returnGeometry = false;\r\n // // query.outSpatialReference = this.spatialReference;\r\n // // query.outFields = [\"*\"];\r\n // //\r\n // // queryTask.execute(query, function (result) {\r\n // // callback(result.features); //give back the parcel features we found...\r\n // // }, function (err) {\r\n // // console.log(\"Failure executing query!\");\r\n // // console.dir(err);\r\n // // console.dir(query);\r\n // // });\r\n // // };\r\n //\r\n //\r\n // // IN PERMIT MAP COMPONENT\r\n // //use this to select a particular parcel either by objectid (like after a search) or x,y mapPoint\r\n // // map.querySelectParcel = function (mapPoint, objectId, callback) {\r\n // // console.log(\"Inside leasingMap.js...\");\r\n // // console.log(\"Running query on: \" + parcelLayerConfig[map.selectedBasemap].QueryURL);\r\n // //\r\n // // var queryTask = new QueryTask(parcelLayerConfig[map.selectedBasemap].QueryURL);\r\n // // var query = new Query();\r\n // //\r\n // // query.outSpatialReference = this.spatialReference;\r\n // // query.returnGeometry = true;\r\n // // query.outFields = [\"*\"];\r\n // // if (mapPoint) {\r\n // // query.geometry = mapPoint;\r\n // // } else {\r\n // // query.objectIds = [objectId];\r\n // // }\r\n // //\r\n // // query.spatialRelationship = Query.SPATIAL_REL_INTERSECTS;\r\n // // queryTask.execute(query, function (result) {\r\n // // console.dir(result);\r\n // // callback(result.features); //give back the parcel features we found...\r\n // // }, function (err) {\r\n // // console.log(\"Failure executing query!\");\r\n // // console.dir(err);\r\n // // console.dir(query);\r\n // // });\r\n //\r\n //\r\n // };\r\n\r\n\r\n //use this to select a particular parcel either by objectid (like after a search) or x,y mapPoint\r\n\r\n\r\n // IN PARCEL MAP COMPONENT\r\n // map.clearGraphics = function () {\r\n // this.parcelLayer.clear();\r\n // }\r\n\r\n // IN PARCEL MAP COMPONENT\r\n // map.addParcelToMap = function (feature, color, alpha) {\r\n //\r\n // var graphic;\r\n // if (!color)\r\n // color = \"#FF6600\";\r\n //\r\n // if (!alpha)\r\n // alpha = .25;\r\n //\r\n //\r\n // var lineColor = new dojo.Color();\r\n // lineColor.setColor(color);\r\n //\r\n // var fillColor = new dojo.Color();\r\n // fillColor.setColor(color);\r\n // fillColor.a = alpha;\r\n //\r\n // var symbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,\r\n // new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, lineColor, 3), fillColor);\r\n //\r\n // graphic = new Graphic(feature.geometry, symbol, feature.attributes);\r\n //\r\n // this.parcelLayer.clear();\r\n // this.parcelLayer.add(graphic);\r\n // this.selectedFeature = feature;\r\n // this.selectedGraphic = graphic;\r\n //\r\n // $scope.$emit(\"map.selectedFeature\", feature); //notify\r\n // }\r\n\r\n // IN PERMIT MAP COMPONENT\r\n // map.centerAndZoomToGraphic = function (graphic, levelOrFactor) {\r\n // var the_level = (levelOrFactor) ? levelOrFactor : 2;\r\n //\r\n // var centerPoint = graphic.geometry.getExtent().getCenter();\r\n // return map.centerAndZoom(centerPoint, the_level);\r\n // };\r\n\r\n // IN ESRI MAP COMPONENT\r\n // lets expose a version of centerAt that takes an array of [lng,lat]\r\n // this.centerAt = function (center) {\r\n // var point = new Point({\r\n // x: center[0],\r\n // y: center[1],\r\n // spatialReference: {\r\n // wkid: 102100 //mercator\r\n // //wkid:26911 //nad_1983\r\n // //\"wkt\":'PROJCS[\"NAD83(NSRS2007) / UTM zone 11N\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"D_\",SPHEROID[\"GRS_1980\",6378137,298.257222101]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]]'\r\n // }\r\n // });\r\n //\r\n // map.centerAt(point);\r\n // };\r\n\r\n // listen for click events and expost them as broadcasts on the scope and suing the scopes click handler\r\n // map.on(\"click\", function (e) {\r\n // // emit a message that bubbles up scopes, listen for it on your scope\r\n // $scope.$emit(\"map.click\", e);\r\n //\r\n // // use the scopes click fuction to handle the event\r\n // $scope.$apply(function ($scope) {\r\n // $scope.click.call($scope, e);\r\n // });\r\n // });\r\n\r\n\r\n // });\r\n // }]\r\n // };\r\n// };\r\n\r\n\r\n}\r\n\r\n\r\n","//CONFIGURATION\r\n\r\n//CDMS - Centralized Data Management System\r\n//Written by Ken Burcham, George Clark, Colette Coiner\r\n//Instructions on getting started can be found here: https://github.com/CTUIR/cdms-docs/wiki/Getting-Started\r\n\r\n/*\r\n\r\nThis system is (C) 2014, 2019 by the Confederated Tribes of the Umatilla Indian Reservation.\r\nAny use is subject to our license agreement included with this code.\r\nA copy is currently located here: https://github.com/CTUIR/cdms-dev/blob/master/LICENSE\r\n\r\nTHE CDMS AND COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN \"AS IS\" BASIS,\r\nWITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION,\r\nWARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR\r\nPURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE\r\n IS WITH LICENSEE. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, LICENSEE (NOT THE CTUIR\r\n OR ANY OTHER CONTRIBUTOR) ASSUMES THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION.\r\n THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF\r\n ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.\r\n\r\n*/\r\n\r\n\r\n// This file contains all of the various config values.\r\n// Many of these items will need to be configured when you implement this system\r\n// in a new environment.\r\n\r\nimport {LicenseManager} from \"ag-grid-enterprise\";\r\n\r\nexport let CODE_BASE = 'ctuir'; // core, ctuir, critfc, npt, warmsprings, etc.\r\nexport let ENVIRONMENT = 'prod'; // dev, test, or prod\r\nexport let DISPLAY_NAME = 'PALUUT 2'; // This shows on the top ribbon bar, on the left, next to the organization branding.\r\nexport let CURRENT_VERSION = '2.0';\r\nexport let PUBLIC_OR_PRIVATE = 'public'; // Paluut = public, CDMS_Priv = private.\r\nexport let HOST_SERVER = 'dmz-web02';\r\n\r\n//Change these to point to your own webserver directories\r\nexport let serverUrl = 'https://paluut.ctuir.org'; //location of cdms-dev files (Javascript+HTML application)\r\nexport let serviceUrl = serverUrl + '/services'; //location of cdms-services deployment (REST Services)\r\nexport let cdmsShareUrl = serviceUrl + '/uploads/'; // Location of project/dataset/subproject files\r\nexport let proxyUrl = serverUrl + '/DotNet/proxy.ashx';\r\nexport let ANALYTICS_CODE = 'UA-105142901-1'; //this should be your own analytics code for google analytics.\r\n\r\nexport let REPORTSERVER_URL = 'https://paluutreports.ctuir.org/Reports'; //the Datastore \"name\" will be appended here, so make sure your report server folders are named the same as your datastore\r\nexport let PROJECT_REPORT_URL = 'CONFIG_PROJECT_REPORT_SERVER/ReportServer/Pages/ReportViewer.aspx?%2fQuadReport_Prototype%2fQuadReport_Single&rs:Command=Render&Id='; //this is the report called from the \"Quad REport\" button on the project view page\r\nexport let CDMS_DOCUMENTATION_URL = \"https://gis.ctuir.org/wp-content/uploads/2019/03/CDMSVersion2UserGuide.pdf\";\r\nexport let CTUIR_AGOL_URL = \"https://ctuirgis.maps.arcgis.com/home/gallery.html?view=grid&sortOrder=true&sortField=relevance\";\r\nexport let CTUIR_GIS_URL = \"https://gis.ctuir.org\";\r\n//export let GIS_TAX_PARCELS_URL = \"https://gisportal.ctuir.org/portal/apps/webappviewer/index.html?id=54fd175f4e2745ff92b278d04b987ad9\";\r\nexport let GIS_TAX_PARCELS_URL = 'https://paluut.ctuir.org/permits/map';\r\nexport let TAX_PARCEL_VIEWER_URL = 'https://gisportal.ctuir.org/portal/apps/webappviewer/index.html?id=54fd175f4e2745ff92b278d04b987ad9';\r\nexport let PARCEL_PERMIT_SEARCH_URL = 'https://paluut.ctuir.org/permits/map';\r\nexport let TPO_REPORTS_URL = 'https://paluutreports.ctuir.org/Reports/browse/TPO';\r\nexport let YOUR_FEATURE_SERVICE_DOMAIN = \"restdata.ctuir.org\";\r\nexport let ESRI_AGOL_URL = '';\r\n\r\nexport let NUM_FLOAT_DIGITS = 3;\r\nexport let SystemDefaultColumnWidth = 150; //default column width for ag-grid\r\n\r\n// The max records threshold for Excel exports from dataset query\r\nexport let DATASET_RECORDS_EXPORT_FORMAT_THRESHOLD = 500000;\r\n\r\n// The user IDs for Admin type users. These IDs are from dbo.Users in the backend database.\r\nexport let AdminUserIds = [1081,2,4247];\r\n\r\n// For Dev/Test environments\r\nexport let CDMS_POINTS_TEST_URL = \"https://restdata.ctuir.org/server/rest/services/CDMS_Points_TEST/FeatureServer/0\";\r\n// For Dev/Test environment\r\nexport let CDMS_POINTS_PROD_URL = \"https://restdata.ctuir.org/server/rest/services/CDMS_ProjectPoints/FeatureServer/0\";\r\n\r\n//const AG_GRID_LICENSE = \"CompanyName=Confederated Tribes of the Umatilla Indian Reservation,LicensedApplication=CDMS,LicenseType=SingleApplication,LicensedConcurrentDeveloperCount=2,LicensedProductionInstancesCount=0,AssetReference=AG-015120,ExpiryDate=29_May_2022_[v2]_MTY1Mzc3ODgwMDAwMA==e10e92e983bf16f828e8482a29ee0184\";\r\n//export let AG_GRID_LICENSE = \"CompanyName=Confederated Tribes of The Umatilla Indian Reservation,LicensedApplication=CDMS,LicenseType=SingleApplication,LicensedConcurrentDeveloperCount=2,LicensedProductionInstancesCount=0,AssetReference=AG-027270,SupportServicesEnd=1_July_2023_[v2]_MTY4ODE2NjAwMDAwMA==c3d7750e2cac72dfc40ffddd542d7e87\";\r\nexport let AG_GRID_LICENSE = \"Using_this_AG_Grid_Enterprise_key_( AG-042094 )_in_excess_of_the_licence_granted_is_not_permitted___Please_report_misuse_to_( legal@ag-grid.com )___For_help_with_changing_this_key_please_contact_( info@ag-grid.com )___( Confederated Tribes of The Umatilla Indian Reservation )_is_granted_a_( Single Application )_Developer_License_for_the_application_( CDMS )_only_for_( 2 )_Front-End_JavaScript_developers___All_Front-End_JavaScript_developers_working_on_( CDMS )_need_to_be_licensed___( CDMS )_has_not_been_granted_a_Deployment_License_Add-on___This_key_works_with_AG_Grid_Enterprise_versions_released_before_( 30 June 2024 )____[v2]_MTcxOTcwMjAwMDAwMA==ca87f515bbea573673274a76316d1128\";\r\n\r\nLicenseManager.setLicenseKey(AG_GRID_LICENSE);\r\n\r\n//GIS defaults - change these to point to your own ArcGIS server\r\nexport let GEOMETRY_SERVICE_URL = \"https://restdata.ctuir.org/server/rest/services/Utilities/Geometry/GeometryServer\";\r\n\r\nexport let NAD83_SPATIAL_REFERENCE = 'PROJCS[\"NAD83(NSRS2007) / UTM zone 11N\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"D_\",SPHEROID[\"GRS_1980\",6378137,298.257222101]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]]';\r\nexport let DEFAULT_LOCATION_PROJECTION_ZONE = {\r\n Projection: \"NAD83\",\r\n UTMZone: \"11\",\r\n }; //Used as default when creating a new location\r\n\r\nexport let BING_KEY = \"AuaAtT6zhx1rfuP1hR_e0zh5pxy6u7Echhe9KbwfCcQRG_Y_ewSg5OcFDm-DF-8w\"; //CTUIR's bing key -- only licensed from our server, so get a public/free one and use it\r\n\r\nexport let uiConfig = {\r\n logo: \"../assets/images/flag.jpg\",\r\n version: \"CDMS v.3.1\", // Version text\r\n welcomeText: \"CTUIR\", // First line of text above login\r\n welcomeSubtext: \"Central Data Management System\", // Second line of text above login\r\n headerText: \"CTUIR CDMS\", // Top left header text\r\n usesMap: false, // Set false to not create points when adding locations/when not using map\r\n usesPermits: false,\r\n // NOTE: The background image is currently located in src/assets/images and is controlled in src/assets/css/background.css\r\n // It would be really nice to have the background image handled via the config file too.\r\n // backgroundImage: url(../images/YourBackgroundImage) no-repeat center center fixed;\r\n};\r\n\r\n//export let DEFAULT_BASEMAP = \"BingMapsRoad\";\r\nexport let SDE_FEATURECLASS_TAXLOTQUERY = 4;\r\n\r\nexport let MAX_DATASET_RECORDS_THRESHOLD = 300000;\r\n\r\n//database index constant values\r\n// NOTE: you may need to change these to match index values in your own database\r\nexport let DEFAULT_PROJECT_LOCATION_TYPE = 3; // Primary Project Location, from table LocationTypes\r\nexport let PRIMARY_PROJECT_LOCATION_TYPEID = 3;\r\nexport let LOCATION_TYPE_Hab = 118;\r\nexport let LOCATION_TYPE_APPRAISAL = 8;\r\nexport let MAX_FILE_NAME_LENGTH = 50;\r\n\r\nexport let DATASTORE_ACTIVITYSYSTEMFIELDS = 23; //id for activitysystemfields datastore\r\nexport let SYSTEM_LOCATION_DATASET = 1262; //id for systemlocation dataset\r\n\r\n//metadata entities and properties\r\nexport let METADATA_ENTITY_CORRESPONDENCE = 7;\r\nexport let METADATA_ENTITY_HABSITES = 8;\r\nexport let METADATA_ENTITY_PROJECT = 1;\r\nexport let METADATA_ENTITY_HABITAT = 2;\r\nexport let METADATA_ENTITY_DATASETTYPEID = 5;\r\nexport let METADATA_PROPERTY_PROGRAM = 23;\r\nexport let METADATA_PROPERTY_SUBPROGRAM = 24;\r\nexport let METADATA_PROPERTY_MAPIMAGE = 26;\r\nexport let METADATA_PROPERTY_MAPIMAGE_HTML = 25;\r\nexport let METADATA_PROPERTY_SUMMARYIMAGE = 11;\r\nexport let METADATA_PROPERTY_SUMMARYIMAGE_HTML = 13;\r\nexport let METADATA_ENTITY_OLCEVENTS = 11;\r\n\r\n\r\n//datasets that are lookups/lists\r\nexport let FISHERMEN_DATASETID = 1275;\r\nexport let SEASONS_DATASETID = 1276;\r\n\r\n//PERMITS\r\nexport let PERMIT_DATASETID = 1281;\r\nexport let PERMITEVENTS_DATASETID = 1282;\r\nexport let PERMIT_PROJECTID = 11044;\r\nexport let PERMITCONTACTS_DATASETID = 1284;\r\nexport let METADATA_PROPERTY_PERMIT_FILETYPES = 64;\r\nexport let PERMIT_WRP_DATASETID = 1329;\r\n\r\n//EHS\r\nexport let EHS_DATASETID = 1294;\r\nexport let EHS_PROJECTID = 11049;\r\nexport let EHS_EVENTS_DATASETID = 1295;\r\nexport let EHS_CODES_DATASETID = 1297;\r\n\r\n//BOT dashboard - runs on private, but here for consistency\r\nexport let PROJECT_TYPE_BOTACTIONS = 17;\r\nexport let PROJECT_TYPE_BOTPROJECTS = 18;\r\nexport let PROJECT_TYPE_OEDPROJECTS = 19;\r\n\r\n//Default system-wide project permission\r\nexport let DEFAULT_PROJECT_PERMISSION = {Permission: { OrgUser: \"View\", Public: \"Hidden\" }};\r\n\r\n// Arbitrary values for testing leasing\r\n//export let METADATA_PROPERTY_LEASING_LEASETYPES = 1;\r\n//export let METADATA_PROPERTY_LEASING_PRODUCTIONDELIVERY = 1;\r\n//export let METADATA_PROPERTY_LEASING_CROPOPTIONS= 1;\r\n//export let METADATA_PROPERTY_LEASING_WEEDS= 1;\r\n//export let METADATA_PROPERTY_LEASING_RESIDUETYPES= 1;\r\n//export let METADATA_PROPERTY_LEASING_ANIMALTYPES= 1;\r\n//export let METADATA_PROPERTY_LEASING_SUBPRACTICES= 1;\r\n//export let METADATA_PROPERTY_LEASING_PRODUCTIONTYPES= 1;\r\n//export let METADATA_PROPERTY_LEASING_OPSTATES= 1;\r\n//export let METADATA_PROPERTY_LEASING_OPCITIES= 1;\r\n//export let METADATA_PROPERTY_LEASING_COMPLIANCE_INSP_TYPES= 1;\r\n//export let METADATA_PROPERTY_LEASING_VIOLATION_TYPES= 1;\r\n//export let METADATA_PROPERTY_LEASING_INSPECTIONVIOLATIONS= 1;\r\n//export let METADATA_PROPERTY_LEASING_SYSTEM_LASTLEASENUMBER= 1;\r\n\r\nexport let METADATA_ENTITY_LEASING = 9;\r\nexport let METADATA_ENTITY_LEASING_SYSTEM = 10;\r\nexport let METADATA_PROPERTY_LEASING_SYSTEM_LASTLEASENUMBER = 63;\r\nexport let METADATA_PROPERTY_LEASING_LEASETYPES = 60;\r\nexport let METADATA_PROPERTY_LEASING_PRODUCTIONDELIVERY = 59;\r\nexport let METADATA_PROPERTY_LEASING_INSPECTIONVIOLATIONS = 58;\r\nexport let METADATA_PROPERTY_LEASING_PRODUCTIONTYPES = 57;\r\nexport let METADATA_PROPERTY_LEASING_ANIMALTYPES = 56;\r\nexport let METADATA_PROPERTY_LEASING_SUBPRACTICES = 55;\r\nexport let METADATA_PROPERTY_LEASING_RESIDUETYPES = 54;\r\nexport let METADATA_PROPERTY_LEASING_WEEDS = 53;\r\nexport let METADATA_PROPERTY_LEASING_CROPOPTIONS = 52;\r\nexport let METADATA_PROPERTY_LEASING_OPSTATES = 62;\r\nexport let METADATA_PROPERTY_LEASING_OPCITIES = 61;\r\nexport let METADATA_PROPERTY_LEASING_COMPLIANCE_INSP_TYPES = 65;\r\nexport let METADATA_PROPERTY_LEASING_VIOLATION_TYPES = 66;\r\n\r\n//export let METADATA_ENTITY_OLCEVENTS = 1;\r\n\r\n//export let METADATA_ENTITY_LEASING_SYSTEM= 1;\r\n//export let METADATA_ENTITY_LEASING= 1;\r\n\r\nexport let LEASE_STATUS_ACTIVE= 1;\r\nexport let LEASE_STATUS_PENDING= 3;\r\nexport let LEASE_STATUS_CANCELLED= 2;\r\n\r\n\r\n//probably don't need to change anything below this line --------------------------------------\r\n\r\n//constants\r\nexport let FIELD_ROLE_HEADER = 1;\r\nexport let FIELD_ROLE_DETAIL = 2;\r\nexport let FIELD_ROLE_SUMMARY = 3;\r\nexport let FIELD_ROLE_CALCULATED = 4;\r\nexport let FIELD_ROLE_VIRTUAL = 5;\r\nexport let USER_PREFERENCE_LANDINGPAGE = \"LandingPage\"; //Name of UserPreference that contains a user's landing page (if specified)\r\n\r\nexport let profile = null;\r\nexport let LOGIN_URL = serverUrl + '/login.html';\r\nexport let WHOAMI_URL = serviceUrl + '/api/v1/account/whoami';\r\nexport let date_pattern = \"/[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}/\";\r\n\r\n//login-controller\r\n//export let successUrl = serverUrl + '/index.html';\r\nexport let successUrl = 'dashboard';\r\nexport let loginUrl = serverUrl + '/login';\r\n\r\n\r\n//import-controller uses these constants\r\n// note: we did have to hard-code these on the dataset-import.html page in ng-disabled attributes\r\nexport let DO_NOT_MAP = 0;\r\nexport let ACTIVITY_DATE = 1;\r\nexport let INDEX_FIELD = 2;\r\nexport let LOCATION_ID = 2;\r\nexport let ROW_QA_STATUS_ID = 3;\r\nexport let FISHERMAN = 3;\r\n\r\nexport let MAP_DO_NOT_MAP_VALUE = \"[-- Do not map --]\"; //new ones\r\nexport let MAP_ACTIVITY_DATE = \"[-- Activity Date --]\";\r\nexport let MAP_LOCATION = \"[-- Location --]\";\r\n\r\nexport let SHARINGLEVEL_PRIVATE = 1;\r\nexport let SHARINGLEVEL_GROUPREAD = 2;\r\nexport let SHARINGLEVEL_PUBLICREAD = 3;\r\nexport let SHARINGLEVEL_GROUPWRITE = 4;\r\nexport let SHARINGLEVEL_PUBLICWRITE = 5;\r\nexport let SHARINGLEVEL_REFERENCE_LIBRARY = 6;\r\n\r\nexport let SharingLevel = {\r\n 'SHARINGLEVEL_PRIVATE' : \"CDMS Only\",\r\n 'SHARINGLEVEL_PUBLICREAD' : \"Share to web\",\r\n 'SHARINGLEVEL_GROUPREAD' : \"Collaborators\",\r\n 'SHARINGLEVEL_REFERENCE_LIBRARY' : \"Reference Library\"\r\n};\r\n\r\nexport let DEFAULT_IMPORT_QACOMMENT = \"Initial Import\";\r\n\r\nexport let ROWSTATUS_ACTIVE = 0;\r\nexport let ROWSTATUS_DELETED = 1;\r\n\r\n//System Timezones\r\nexport let millis_per_h = 3600000;\r\nexport let SystemTimezones = [\r\n {\r\n\t\"Id\" : 0,\r\n \"Name\" : \"Pacific Standard Time (GMT-08:00)\",\r\n \"Description\" : \"(GMT-08:00) Pacific Standard Time (US & Canada)\",\r\n \"TimezoneOffset\" : -8 * millis_per_h,\r\n },\r\n {\r\n\t\"Id\" : 1,\r\n \"Name\" : \"Pacific Daylight Time (GMT-07:00)\",\r\n \"Description\" : \"(GMT-07:00) Pacific Daylight Time (US & Canada)\",\r\n \"TimezoneOffset\" : -7 * millis_per_h,\r\n },\r\n //{\r\n // \"Name\" : \"Mountain Standard Time (GMT-07:00)\",\r\n // \"Description\" : \"(GMT-07:00) Mountain Standard Time (US & Canada)\",\r\n // \"TimezoneOffset\" : -7 * millis_per_h,\r\n //},\r\n //{\r\n // \"Name\" : \"Central Standard Time\",\r\n // \"Description\" : \"(GMT-06:00) Central Standard Time (US & Canada)\",\r\n // \"TimezoneOffset\" : -6 * millis_per_h,\r\n //},\r\n //{\r\n // \"Name\" : \"Eastern Standard Time\",\r\n // \"Description\" : \"(GMT-05:00) Eastern Standard Time (US & Canada)\",\r\n // \"TimezoneOffset\" : -5 * millis_per_h,\r\n //},\r\n //{\r\n // \"Name\" : \"Mountain Daylight Time (GMT-06:00)\",\r\n // \"Description\" : \"(GMT-06:00) Mountain Daylight Time (US & Canada)\",\r\n // \"TimezoneOffset\" : -6 * millis_per_h,\r\n //},\r\n\r\n {\r\n\t\"Id\" : 7,\r\n \"Name\" : \"Greenwich Mean Time (GMT-00:00)\",\r\n \"Description\" : \"(GMT-00:00) Greenwich Mean Time\",\r\n \"TimezoneOffset\" : 0,\r\n },\r\n\r\n\r\n //{\r\n // \"Name\" : \"Central Daylight Time\",\r\n // \"Description\" : \"(GMT-05:00) Central Daylight Time (US & Canada)\",\r\n // \"TimezoneOffset\" : -5 * millis_per_h,\r\n // }, {\r\n // \"Name\" : \"Eastern Daylight Time\",\r\n // \"Description\" : \"(GMT-04:00) Eastern Daylight Time (US & Canada)\",\r\n // \"TimezoneOffset\" : -4 * millis_per_h,\r\n //}\r\n];\r\n\r\n//Data Grade Methods -- shows up as a select list in accuracy check\r\nexport let DataGradeMethods = [];\r\nDataGradeMethods.push(\"\"); // 0\r\nDataGradeMethods.push(\"NIST check in BOTH warm and ice baths\");\r\nDataGradeMethods.push(\"NIST check in ice bath only\");\r\nDataGradeMethods.push(\"Manufacturer Calibration\");\r\nDataGradeMethods.push(\"No Accuracy Check Conducted\");\r\nDataGradeMethods.push(\"Unknown Accuracy Method\");\r\n\r\n//Appraisal Map config\r\n//export let security_token = \"XHJGK7m0g3_RwZv9Z57OErIXkE-1KwT3nyvuuxZgZnROXr55r0q87YpUAY1m-bEMVAlkj2fZidrWZwCke9gwlA..\"; // updated 4/19/2017 https://cdms.ctuir.org\r\nexport let security_token = \"x3X0E2fiVdWmuLupSgGk3Moeg075l-CO6xpTQ9mkdQDLbLEGcGGdX64GxOgWKZLc8lHHejhpPTDBMfSBVq-0iA..\";\r\nexport let defaultLayer = \"imageryLayer\";\r\n\r\n//used for dataset-activities (standard datasets)\r\nexport let datasetActivitiesBasemapConfig = {\r\n // { library: \"Esri\", type: 'streets', title: 'ESRI Roads'},\r\n //{ library: \"Esri\", type: 'topo', title: 'Topographical'},\r\n //{ library: \"Esri\", type: 'hybrid', title: 'Hybrid' },\r\n\r\n\t\t// We had problems with Bing, down below, so we switched back to the ESRI map.\r\n\t\t// Note: The roadsLayer, imageryLayer, and hybridLayer constants are not in the ESRI map,\r\n\t\t// but we use the library to tell which map service to call ~/js/directives/Maps.js\r\n roadsLayer: { library: \"Esri\", type: \"//www.arcgis.com/home/webmap/viewer.html?url=http%3A%2F%2Fserver.arcgisonline.com%2Farcgis%2Frest%2Fservices%2FWorld_Street_Map%2FMapServer&source=sd\", Display: 'Roads' },\r\n imageryLayer: { library: \"Esri\", type: \"//server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer\", Display: 'Aerial' },\r\n\r\n\t\t// The Bing map is better, but we had problems with it.\r\n //roadsLayer: { library: \"Bing\", type: 'BingMapsRoad', Display: 'Roads' },\r\n //imageryLayer: { library: \"Bing\", type: 'BingMapsAerial', Display: 'Aerial' },\r\n //hybridLayer: { library: \"Bing\", type: 'BingMapsHybrid', Display: 'Hybrid' },\r\n};\r\n\r\n\r\n//This is the list of Basemaps that show up on the Appraisals custom dataset page --- Private side only\r\nexport let parcelLayerConfig =\r\n {\r\n taxParcelLayer: {\r\n Display: \"Tax Parcel\",\r\n QueryURL: \"https://restdata.ctuir.org/server/rest/services/TaxParcelQueryCTUIR/MapServer/0\",//?token=\" + security_token,\r\n ServiceURL: \"https://restdata.ctuir.org/server/rest/services/BasemapParcelViewerCTUIR/MapServer\",//?token=\" + security_token,\r\n OutFields: \"PARCELID, Address\",\r\n isAddressSearchService: true,\r\n ParcelQuery: \"PARCELID LIKE '%${0}%' OR ALLOTMENT LIKE '%${0}%' OR ADDRESS LIKE '%${0}%'\",\r\n LocateParcelQuery: \"PARCELID = '${0}' OR ALLOTMENT = '${0}'\",\r\n DisplayFields: [\"PARCELID\", \"Address\"],\r\n UseColor: true,\r\n objectIDField: \"PARCELID\",\r\n Color: \"#FF6600\",\r\n Alpha: 0.25,\r\n },\r\n imageryLayer: {\r\n Display: \"Imagery\",\r\n ServiceURL: \"https://restdata.ctuir.org/server/rest/services/BasemapImagery/MapServer\",//?token=\" + security_token,\r\n QueryURL: \"https://restdata.ctuir.org/server/rest/services/Parcels_LIVE/MapServer/0\",\r\n OutFields: \"PARCELID, Address\",\r\n isAddressSearchService: true,\r\n ParcelQuery: \"PARCELID LIKE '%${0}%'\",\r\n LocateParcelQuery: \"PARCELID = '${0}'\",\r\n DisplayFields: [\"PARCELID\", \"Address\"],\r\n UseColor: true,\r\n objectIDField: \"PARCELID\",\r\n Color: \"#FF6600\",\r\n Alpha: 0.25,\r\n },\r\n\r\n platLayer: {\r\n Display: \"Plat\",\r\n QueryURL: \"https://restdata.ctuir.org/server/rest/services/TaxParcelQueryCTUIR/MapServer/0\",//?token=\" + security_token,\r\n ServiceURL: \"https://restdata.ctuir.org/server/rest/services/DECD/BasemapsDECD_Plat/MapServer\",//?token=\" + security_token,\r\n OutFields: \"PARCELID, Address\",\r\n isAddressSearchService: true,\r\n ParcelQuery: \"PARCELID LIKE '%${0}%' OR ALLOTMENT LIKE '%${0}%' OR ADDRESS LIKE '%${0}%'\",\r\n LocateParcelQuery: \"PARCELID = '${0}' OR ALLOTMENT = '${0}'\",\r\n DisplayFields: [\"PARCELID\", \"Address\"],\r\n UseColor: true,\r\n objectIDField: \"PARCELID\",\r\n Color: \"#FF6600\",\r\n Alpha: 0.25,\r\n },\r\n soilLayer: {\r\n Display: \"Soil\",\r\n QueryURL: \"https://restdata.ctuir.org/server/rest/services/TaxParcelQueryCTUIR/MapServer/0\",//?token=\" + security_token,\r\n ServiceURL: \"https://restdata.ctuir.org/server/rest/services/DECD/BasemapsDECD_Soils/MapServer\",//?token=\" + security_token,\r\n OutFields: \"PARCELID, Address\",\r\n isAddressSearchService: true,\r\n ParcelQuery: \"PARCELID LIKE '%${0}%' OR ALLOTMENT LIKE '%${0}%' OR ADDRESS LIKE '%${0}%'\",\r\n LocateParcelQuery: \"PARCELID = '${0}' OR ALLOTMENT = '${0}'\",\r\n DisplayFields: [\"PARCELID\", \"Address\"],\r\n UseColor: true,\r\n objectIDField: \"PARCELID\",\r\n Color: \"#FF6600\",\r\n Alpha: 0.25,\r\n },\r\n topoLayer: {\r\n Display: \"Topography\",\r\n QueryURL: \"https://restdata.ctuir.org/server/rest/services/TaxParcelQueryCTUIR/MapServer/0\",//?token=\" + security_token,\r\n ServiceURL: \"https://restdata.ctuir.org/server/rest/services/DECD/BasemapsDECD_Topo/MapServer\",//?token=\" + security_token,\r\n OutFields: \"PARCELID, Address\",\r\n isAddressSearchService: true,\r\n ParcelQuery: \"PARCELID LIKE '%${0}%' OR ALLOTMENT LIKE '%${0}%' OR ADDRESS LIKE '%${0}%'\",\r\n LocateParcelQuery: \"PARCELID = '${0}' OR ALLOTMENT = '${0}'\",\r\n DisplayFields: [\"PARCELID\", \"Address\"],\r\n UseColor: true,\r\n objectIDField: \"PARCELID\",\r\n Color: \"#FF6600\",\r\n Alpha: 0.25,\r\n },\r\n zoneLayer: {\r\n Display: \"Zoning\",\r\n QueryURL: \"https://restdata.ctuir.org/server/rest/services/TaxParcelQueryCTUIR/MapServer/0\",//?token=\" + security_token,\r\n ServiceURL: \"https://restdata.ctuir.org/server/rest/services/BasemapZoningParcels/MapServer\",//?token=\" + security_token,\r\n OutFields: \"PARCELID, Address\",\r\n isAddressSearchService: true,\r\n ParcelQuery: \"PARCELID LIKE '%${0}%' OR ALLOTMENT LIKE '%${0}%' OR ADDRESS LIKE '%${0}%'\",\r\n LocateParcelQuery: \"PARCELID = '${0}' OR ALLOTMENT = '${0}'\",\r\n DisplayFields: [\"PARCELID\", \"Address\"],\r\n UseColor: true,\r\n objectIDField: \"PARCELID\",\r\n Color: \"#FF6600\",\r\n Alpha: 0.25,\r\n },\r\n\r\n };\r\n\r\n//This is the list of services that show up in the layers selector for the custom Appraisals webapp.\r\nexport let servicesLayerConfig =\r\n{\r\n streamBuffers: {\r\n Display: \"Stream Buffers\",\r\n ServiceURL: \"https://restdata.ctuir.org/server/rest/services/StreamBuffers/MapServer\",//?token=\" + security_token,\r\n },\r\n utilityLines: {\r\n Display: \"Utilities\",\r\n ServiceURL: \"https://restdata.ctuir.org/server/rest/services/UtilityLines/MapServer\",//?token=\" + security_token,\r\n },\r\n waterSewer: {\r\n Display: \"Water / Sewer\",\r\n ServiceURL: \"https://restdata.ctuir.org/server/rest/services/WaterSewer/MapServer\",//?token=\" + security_token,\r\n },\r\n roads: {\r\n Display: \"Roads\",\r\n ServiceURL: \"https://restdata.ctuir.org/server/rest/services/Roads/MapServer\",//?token=\" + security_token,\r\n },\r\n range: {\r\n Display: \"Grazing Range\",\r\n ServiceURL: \"https://restdata.ctuir.org/server/rest/services/RangeUnits/MapServer\",//?token=\" + security_token,\r\n },\r\n forest: {\r\n Display: \"Timber Stands\",\r\n ServiceURL: \"https://restdata.ctuir.org/server/rest/services/ForestStands/MapServer\",//?token=\" + security_token,\r\n },\r\n parcels: {\r\n Display: \"Parcels\",\r\n ServiceURL: \"https://restdata.ctuir.org/server/rest/services/Parcels_LIVE/MapServer\",\r\n\t//ServiceURL: \"https://arcserv6.ctuir.org/server/rest/services/Parcels_LIVE/MapServer\",\r\n },\r\n parcels_outline: {\r\n Display: \"ParcelOutline\",\r\n //ServiceURL: \"https://restdata.ctuir.org/server/rest/services/Parcels_LIVE/MapServer\",\r\n //ServiceURL: \"https://arcserv6.ctuir.org/server/rest/services/Parcels_LIVE/MapServer\",\r\n ServiceURL: \"https://restdata.ctuir.org/server/rest/services/Parcels_outline/MapServer\",\r\n }\r\n};\r\n\r\n//export let PARCEL_LAYER = \"https://restdata.ctuir.org/server/rest/services/Parcels_LIVE/MapServer/0\";\r\nexport let PARCEL_LAYER = \"https://restdata.ctuir.org/server/rest/services/Parcels_LIVE/MapServer\";\r\nexport let ZONING_LAYER = \"https://restdata.ctuir.org/server/rest/services/Zoning/MapServer/4\";\r\n//export let MapPointsLayer = \"https://restdata.ctuir.org/server/rest/services/CDMS_ProjectPoints/FeatureServer/0\";\r\n\r\n//analytics configuration\r\ndeclare const ga: any;\r\n// @ts-ignore\r\n(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\r\n(i[r].q=i[r].q||[]).push(arguments)},\r\n // @ts-ignore\r\n i[r].l=1*new Date();\r\n a=s.createElement(o),\r\nm=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\r\n})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');\r\nga('create', ANALYTICS_CODE, 'auto');\r\nga('send', 'pageview');\r\n","import * as moment from 'moment';\r\n\r\ndeclare let $uibModalInstance: any;\r\n\r\nvar modal_feedback = ['$scope', '$uibModal', '$rootScope','CommonService',\r\n function ($scope, $uibModal, $rootScope, CommonService) {\r\n\r\n $scope.feedback = {\r\n SubmitterName: $scope.Profile.Fullname,\r\n SubmitDate: moment().format('YYYY-MM-DD HH:mm:ss')\r\n };\r\n\r\n $scope.saving = false;\r\n\r\n $scope.save = function () {\r\n $scope.saving = true;\r\n var saved_feedback = CommonService.saveFeedback($scope.feedback);\r\n saved_feedback.$promise.then(function () {\r\n $scope.successMessage = \"Your feedback is recorded (issue #: \" + saved_feedback.Id + \")\";\r\n\r\n $scope.feedback = {\r\n SubmitterName: $scope.Profile.Fullname,\r\n SubmitDate: moment().format('YYYY-MM-DD HH:mm:ss')\r\n };\r\n\r\n $scope.saving = false;\r\n\r\n });\r\n };\r\n\r\n $scope.cancel = function(){\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_feedback;\r\n","import * as angular from 'angular';\r\nimport {initEdit} from \"../../../../core/common/common-functions\";\r\n\r\nvar modal_create_olc_subproject = ['$scope', '$rootScope', '$uibModalInstance', 'DatasetService', 'SubprojectService', 'ServiceUtilities',\r\n '$timeout', '$location', '$anchorScroll', '$document',\r\n function ($scope, $rootScope, $uibModalInstance, DatasetService, SubprojectService, ServiceUtilities,\r\n $timeout, $location, $anchorScroll, $document) {\r\n console.log(\"Inside ModalCreateOlcSubprojectCtrl...\");\r\n\r\n initEdit();\r\n\r\n $scope.header_message = \"Create new project\";\r\n $rootScope.olcCatalogNumber = $scope.olcCatalogNumber = \"\";\r\n $rootScope.projectId = $scope.project.Id;\r\n\r\n $scope.subproject_row = {\r\n StatusId: 0,\r\n //OwningDepartmentId: 1,\r\n };\r\n\r\n\r\n $scope.showAddDocument = true;\r\n $scope.showOtherFacilityHoused = false;\r\n\r\n\t\tconsole.log(\"$scope is next...\");\r\n\t\tconsole.dir($scope);\r\n\r\n if ($scope.viewSubproject) {\r\n $scope.header_message = \"Edit OLC project: \" + $scope.viewSubproject.ProjectName;\r\n\r\n //$scope.viewSubproject.OtherFacilityHoused = \"\";\r\n\r\n\t\t\tconsole.log(\"$scope.viewSubproject is next...\");\r\n\t\t\tconsole.dir($scope.viewSubproject);\r\n\r\n $scope.subproject_row = angular.copy($scope.viewSubproject);\r\n\r\n //var intColonLoc = $scope.subproject_row.FacilityHoused.indexOf(\":\");\r\n //if (intColonLoc > -1) {\r\n // $scope.subproject_row.OtherFacilityHoused = $scope.subproject_row.FacilityHoused.substring(intColonLoc + 1, $scope.subproject_row.FacilityHoused.length - 1);\r\n //$scope.subproject_row.FacilityHoused = JSON.parse($scope.subproject_row.FacilityHoused);\r\n //}\r\n\r\n if ($scope.subproject_row.FacilityHoused === \"Other\")\r\n $scope.showOtherFacilityHoused = true;\r\n\r\n console.log(\"$scope.subproject_row is next...\");\r\n console.dir($scope.subproject_row);\r\n\r\n $scope.showAddDocument = false;\r\n\r\n var keepGoing = true;\r\n var foundIt = false;\r\n\r\n }\r\n\r\n console.log(\"$scope inside ModalCreateOlcSubprojectCtrl, after initializing, is next...\");\r\n //console.dir($scope);\r\n\r\n $scope.selectFacilityHoused = function () {\r\n if ($scope.subproject_row.FacilityHoused === \"Other\")\r\n $scope.showOtherFacilityHoused = true;\r\n else\r\n $scope.showOtherFacilityHoused = false;\r\n };\r\n\r\n $scope.save = function () {\r\n console.log(\"Inside ModalCreateOlcSubprojectCtrl, save...\");\r\n\t\t\t//console.log(\"$scope.subproject_row is next...\");\r\n\t\t\t//console.dir($scope.subproject_row);\r\n\r\n $scope.subprojectSave = undefined;\r\n $scope.subprojectSave = [];\r\n $scope.createNewSubproject = false;\r\n\t\t\t$scope.errorMessage = \"\";\r\n\r\n //console.dir($scope);\r\n\r\n if (!$scope.subprojectSave.error) {\r\n // Capture the AddDocument flag, before discarding it.\r\n console.log(\"$scope.subproject_row, full is next...\");\r\n console.dir($scope.subproject_row);\r\n\r\n //var addDocument = $scope.subproject_row.AddDocument;\r\n //$scope.subproject_row.AddDocument = null;\r\n //console.log(\"addDocument = \" + addDocument);\r\n //console.log(\"$scope.subproject_row, after del is next...\");\r\n //console.dir($scope.subproject_row);\r\n\r\n //if ($scope.subproject_row.FacilityHoused === \"Other\") {\r\n // $scope.subproject_row.OtherFacilityHoused = $scope.subproject_row.OtherFacilityHoused;\r\n // $scope.subproject_row.OtherFacilityHoused = undefined;\r\n //}\r\n\r\n var saveRow = angular.copy($scope.subproject_row);\r\n console.log(\"saveRow (after its creation) is next..\");\r\n console.dir(saveRow);\r\n\r\n saveRow.olcEvents = undefined;\r\n console.log(\"saveRow (after deleting olcEvents) is next...\");\r\n console.dir(saveRow);\r\n\t\t\t\t//throw \"Stopping right here...\";\r\n\r\n $scope.saveResults = {};\r\n //console.log(\"$scope is next...\");\r\n //console.dir($scope);\r\n var promise = SubprojectService.saveOlcSubproject($scope.project.Id, saveRow, $scope.saveResults);\r\n\r\n\t\t\t\tif (typeof promise !== 'undefined') {\r\n\t\t\t\t\tpromise.$promise.then(function () {\r\n\t\t\t\t\t\t//window.location.reload();\r\n\t\t\t\t\t\tconsole.log(\"promise is next...\");\r\n\t\t\t\t\t\tconsole.dir(promise);\r\n\t\t\t\t\t\t$scope.subprojectId = $rootScope.subprojectId = promise.Id;\r\n\t\t\t\t\t\tconsole.log(\"$scope.subprojectId = \" + $scope.subprojectId);\r\n\r\n\t\t\t\t\t\t$scope.subproject_row = 'undefined';\r\n\t\t\t\t\t\t$scope.olcCatalogNumber = saveRow.CatalogNumber;\r\n\r\n\t\t\t\t\t\t//$scope.reloadSubprojects();\r\n\t\t\t\t\t\t$scope.postSaveSubprojectUpdateGrid(promise);\r\n\r\n /*\r\n\t\t\t\t\t\tif (addDocument === \"Yes\") {\r\n\t\t\t\t\t\t\tconsole.log(\"addDocument = Yes...\");\r\n\r\n\t\t\t\t\t\t\t// If the user wishes to add a Correspondence Event right away, we must wait to get the ID of the new subproject, before we can continue.\r\n\t\t\t\t\t\t\t//$scope.reloadSubproject(promise.Id);\r\n\t\t\t\t\t\t\t//var promise2 = $scope.reloadSubproject(promise.Id);\r\n\t\t\t\t\t\t\t//console.log(\"Inside reloadSubproject...\");\r\n\t\t\t\t\t\t\t//SubprojectService.clearSubproject();\r\n\t\t\t\t\t\t\t//$scope.reloadSubproject($scope.subprojectId);\r\n\t\t\t\t\t\t\t$uibModalInstance.dismiss();\r\n\t\t\t\t\t\t\t$scope.openCorrespondenceEventForm(promise, {});\r\n\t\t\t\t\t\t\t//$scope.subproject = SubprojectService.getSubproject(id);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tconsole.log(\"addDocument != Yes\");\r\n\r\n\t\t\t\t\t\t\t// If the user just wants to create the Subproject, we can continue without waiting.\r\n\t\t\t\t\t\t\t//$scope.reloadSubproject($scope.subprojectId);\r\n\t\t\t\t\t\t\t$uibModalInstance.dismiss();\r\n }\r\n */\r\n $uibModalInstance.dismiss();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n };\r\n\r\n $scope.cancel = function () {\r\n // If the user clicks on Cancel, we need to grab the contents of the Other... boxes and put it back into the main box.\r\n\r\n // County Name: If the user selected Other, we must use the name they supplied in OtherCounty.\r\n //if ($scope.subproject_row.OtherCounty) {\r\n // $scope.subproject_row.County = $scope.subproject_row.OtherCounty;\r\n // $scope.subproject_row.OtherCounty = null; // Throw this away, because we do not want to save it; no database field or it.\r\n //}\r\n $scope.subproject_row = 'undefined';\r\n\r\n $uibModalInstance.dismiss();\r\n };\r\n }\r\n];\r\n\r\nexport default modal_create_olc_subproject;\r\n","// defines the permit module\r\nimport * as angular from 'angular';\r\n\r\n// require([\r\n// //controllers\r\nimport list_permits from \"./components/list/list-permits\";\r\nimport modal_violation_edit_filetype from \"./components/list/modal-violation-edit-file\";\r\nimport list_violations from \"./components/ehs-violations/list-violations\";\r\nimport modal_edit_violationcode from \"./components/list/add-violation-code-modal\";\r\nimport modal_edit_permitcontact from \"./components/list/add-contact-modal\";\r\nimport permit_dashboard from \"./components/dashboard/dashboard\";\r\nimport modal_violation_new_file from \"./components/list/modal-violation-new-file\";\r\nimport modal_permit_edit_filetype from \"./components/list/modal-permit-edit-file\";\r\nimport request_inspection from \"./components/list/request-inspection\";\r\nimport requests_list from \"./components/requests/list\";\r\nimport requests_modal from \"./components/requests/request-modal\";\r\nimport permit_contacts from \"./components/contacts/manage-contacts\";\r\nimport modal_edit_permitevent from \"./components/list/add-permit-activity-modal\";\r\nimport modal_edit_permitparcel from \"./components/list/add-parcel-modal\";\r\nimport modal_edit_violationevent from \"./components/list/add-violation-activity-modal\";\r\nimport modal_permit_new_file from \"./components/list/modal-permit-new-file\";\r\nimport modal_add_permitperson from \"./components/contacts/add-person-modal\";\r\n//import modal_edit_location from \"../../core/projects/components/project-detail/modal-edit-location\";\r\nimport modal_edit_location from \"./components/list/add-location-modal\"; // For the initial location picker.\r\nimport edit_location_modal from \"./components/list/edit-location-modal\"; // For editing the properties of a location.\r\n//\r\n// //modals\r\n\r\n//\r\n// //services\r\n\r\n\r\n//\r\n// //map directive\r\nimport permit_map from \"./components/map/permit-map\";\r\nimport modal_add_fee from \"./components/taskboard/add-fee-modal\";\r\nimport permit_routes from \"./components/taskboard/routes\";\r\nimport permit_notifications from \"./components/notifications/notifications\";\r\nimport {serviceUrl} from \"../../config\";\r\nimport permit_services from \"./permit-service\";\r\nimport project_service from \"../../core/projects/services/project-service\";\r\nimport violation_services from \"./violation-service\";\r\nimport {downgradeComponent} from \"@angular/upgrade/static\";\r\nimport {PermitMapComponent} from \"../../../app/map/permit-map/permit-map.component\";\r\nimport {EsriMapComponent} from \"../../../app/map/esri-map/esri-map.component\";\r\nimport { map } from 'jquery';\r\n\r\n// ], function () {\r\nconst permit_module = angular.module('PermitModule', ['ui.bootstrap', 'ngResource']);\r\npermit_module.controller('PermitListController', list_permits);\r\npermit_module.controller('PermitActivityModalController', modal_edit_permitevent);\r\npermit_module.controller('ViolationActivityModalController', modal_edit_violationevent);\r\npermit_module.controller('ContactModalController', modal_edit_permitcontact);\r\npermit_module.controller('LocationModalController', modal_edit_location);\r\npermit_module.controller('EditLocationModalController', edit_location_modal);\r\npermit_module.controller('ParcelModalController', modal_edit_permitparcel);\r\npermit_module.controller('PermitFileModalController', modal_permit_new_file);\r\npermit_module.controller('ViolationFileModalController', modal_violation_new_file);\r\npermit_module.controller('AddPersonModalController', modal_add_permitperson);\r\npermit_module.controller('PermitRoutesController', permit_routes);\r\npermit_module.controller('AddFeeModalController', modal_add_fee);\r\npermit_module.controller('PermitDashboardController', permit_dashboard);\r\npermit_module.controller('RequestInspectionController', request_inspection);\r\npermit_module.controller('PermitNotificationsController', permit_notifications);\r\npermit_module.controller('PermitMapController', permit_map);\r\npermit_module.controller('PermitManageContactsController', permit_contacts);\r\npermit_module.controller('EditPermitFileTypeModalController', modal_permit_edit_filetype);\r\npermit_module.controller('EditViolationFileTypeModalController', modal_violation_edit_filetype);\r\npermit_module.controller('EhsViolationsController', list_violations);\r\npermit_module.controller('ViolationCodesModalController', modal_edit_violationcode);\r\npermit_module.controller('PermitRequestsController', requests_list);\r\npermit_module.controller('PermitRequestsModalController', requests_modal);\r\npermit_module.service('PermitService', permit_services);\r\npermit_module.service('ProjectService', project_service);\r\npermit_module.service('ViolationService', violation_services);\r\npermit_module.directive('permitMap', downgradeComponent({component: PermitMapComponent}));\r\npermit_module.directive('esriMap', downgradeComponent({component: EsriMapComponent}));\r\npermit_module.filter('personOrgName', function () {\r\n return function (person) {\r\n if (!person)\r\n return \"\";\r\n\r\n return (person.Organization) ? person.Organization : person.FullName;\r\n }\r\n});\r\n\r\npermit_module.filter('sce', ['$sce', function ($sce) {\r\n return function (html) {\r\n return $sce.trustAsHtml(html);\r\n };\r\n}]);\r\n\r\npermit_module.factory('AllPermits', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/allpermits', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetGroupPermits', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetGroupPermits', {}, {\r\n query: { method: 'GET', params: { Id: 'Id'}, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('RoutingPermits', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/routingpermits', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('InspectionPermits', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/inspectionpermits', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('AllParcels', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/allparcels', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetPermitContacts', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetPermitContacts', {}, {\r\n query: { method: 'GET', params: { Id: 'Id'}, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetPermitParcels', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetPermitParcels', {}, {\r\n query: { method: 'GET', params: { Id: 'Id'}, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetPermitEvents', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetPermitEvents', {}, {\r\n query: { method: 'GET', params: { Id: 'Id'}, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetPermitEventsForMe', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetPermitEventsForMe', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetPermitEventsByItemType', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetPermitEventsByItemType', {}, {\r\n save: { method: 'POST', isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetRelatedParcels', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetRelatedParcels', {}, {\r\n query: { method: 'GET', params: { ParcelId: 'ParcelId'}, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetPermitFiles', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetPermitFiles', {}, {\r\n query: { method: 'GET', params: { ProjectId: 'ProjectId', PermitId: 'PermitId'}, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetAllPersons', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/person/GetAllPersons', {}, {\r\n query: { method: 'GET', params: { }, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('SavePermit', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/savepermit');\r\n}]);\r\n\r\npermit_module.factory('SavePerson', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/person/saveperson');\r\n}]);\r\n\r\npermit_module.factory('SavePermitContact', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/savepermitcontact');\r\n}]);\r\n\r\npermit_module.factory('SavePermitLocation', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/savepermitlocation');\r\n}]);\r\n\r\npermit_module.factory('RemovePermitContact', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/RemovePermitContact');\r\n}]);\r\n\r\npermit_module.factory('RemovePermitLocation', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/RemovePermitLocation');\r\n}]);\r\n\r\npermit_module.factory('SavePermitParcel', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/savepermitparcel');\r\n}]);\r\n\r\npermit_module.factory('RemovePermitParcel', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/RemovePermitParcel');\r\n}]);\r\n\r\npermit_module.factory('SavePermitEvent', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/SavePermitEvent');\r\n}]);\r\n\r\npermit_module.factory('DeletePermitFile', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/DeletePermitFile');\r\n}]);\r\n\r\npermit_module.factory('DeletePerson', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/person/DeletePerson');\r\n}]);\r\n\r\npermit_module.factory('GetOutstandingRequests', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetOutstandingRequests', {}, {\r\n query: { method: 'GET', params: { }, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetExpiringPermits', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetExpiringPermits', {}, {\r\n query: { method: 'GET', params: { }, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetPermitStatistics', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetPermitStatistics', {}, {\r\n query: { method: 'GET', params: { }, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetMyPermitStatistics', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetMyPermitStatistics', {}, {\r\n query: { method: 'GET', params: { }, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetPermitByPermitNumber', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetPermitByPermitNumber', {}, {\r\n query: { method: 'GET', params: { }, isArray: false }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetPublicHearingPermits', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetPublicHearingPermits', {}, {\r\n query: { method: 'GET', params: { }, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetNotifications', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/syslog/GetNotificationsByModule', {}, {\r\n query: { method: 'GET', params: { }, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetPermitRoutes', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetPermitRoutes', {}, {\r\n query: { method: 'GET', params: { }, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetPermitTypes', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetPermitTypes', {}, {\r\n query: { method: 'GET', params: { }, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('DownloadInspectionTemplate', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/DownloadInspectionDocument');\r\n}]);\r\n\r\npermit_module.factory('GetViolations', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/violation/allviolations', {}, {\r\n query: { method: 'GET', params: { }, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('SaveViolation', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/violation/saveviolation');\r\n}]);\r\n\r\npermit_module.factory('GetViolationContacts', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/violation/GetViolationContacts', {}, {\r\n query: { method: 'GET', params: { Id: 'Id'}, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('SaveViolationContact', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/violation/saveviolationcontact');\r\n}]);\r\n\r\n\r\npermit_module.factory('GetViolationParcels', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/violation/GetViolationParcels', {}, {\r\n query: { method: 'GET', params: { Id: 'Id'}, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetViolationRelatedParcels', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/violation/GetRelatedParcels', {}, {\r\n query: { method: 'GET', params: { ParcelId: 'ParcelId'}, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('SaveViolationParcel', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/violation/saveviolationparcel');\r\n}]);\r\n\r\npermit_module.factory('DeleteViolationFile', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/violation/DeleteViolationFile');\r\n}]);\r\n\r\npermit_module.factory('GetViolationFiles', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/violation/GetViolationFiles', {}, {\r\n query: { method: 'GET', params: { ProjectId: 'ProjectId', ViolationId: 'ViolationId'}, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetViolationEvents', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/violation/GetViolationEvents', {}, {\r\n query: { method: 'GET', params: { Id: 'Id'}, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('SaveViolationEvent', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/violation/SaveViolationEvent');\r\n}]);\r\n\r\npermit_module.factory('GetViolationCodes', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/violation/GetViolationCodes', {}, {\r\n query: { method: 'GET', params: { Id: 'Id'}, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('SaveViolationCode', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/violation/SaveViolationCode');\r\n}]);\r\n\r\npermit_module.factory('RemoveViolationContact', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/violation/RemoveViolationContact');\r\n}]);\r\n\r\npermit_module.factory('RemoveViolationParcel', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/violation/RemoveViolationParcel');\r\n}]);\r\n\r\npermit_module.factory('RemoveViolationActivity', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/violation/RemoveViolationActivity');\r\n}]);\r\n\r\npermit_module.factory('SendNotification', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/violation/SendNotification');\r\n}]);\r\n\r\npermit_module.factory('GetNotifications', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/syslog/GetNotificationsByModule', {}, {\r\n query: { method: 'GET', params: { }, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetPermitLocations', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetPermitLocations', {}, {\r\n query: { method: 'GET', params: { Id: 'Id' }, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetPermitDatasetLocations', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetPermitDatasetLocations', {}, {\r\n query: { method: 'GET', params: { Id: 'Id' }, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('GetAllPermitLocations', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/permit/GetAllPermitLocations', {}, {\r\n query: { method: 'GET', params: { }, isArray: true }\r\n });\r\n}]);\r\n\r\npermit_module.factory('SearchPermits', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/search/searchpermits', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n }]);\r\n\r\n//\r\n// });\r\n\r\nexport default permit_module;\r\n\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {\r\n getByField,\r\n getFilesArrayAsList,\r\n getParsedMetadataValues,\r\n instrumentsToPossibleValues, makeObjects, orderByAlpha\r\n} from \"../../../common/common-functions\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar dataset_query_view_all_records = ['$scope', '$routeParams', 'DatasetService', '$location', '$uibModal', '$rootScope', 'ChartService',\r\n 'ProjectService', 'CommonService', 'SubprojectService','GridService','$timeout',\r\n function ($scope, $routeParams, DatasetService, $location, $uibModal, $rootScope, ChartService, ProjectService, CommonService, SubprojectService, GridService, $timeout) {\r\n\r\n $scope.system = { loading: true, messages : [] };\r\n\r\n if (!$rootScope.infGridParams)\r\n {\r\n alert(\"To run this page, you must start with the Dataset Query page first!\");\r\n\r\n $location.path(\"/projects\");\r\n return;\r\n }\r\n\r\n $scope.Criteria = {};\r\n $scope.criteriaList = [];\r\n\r\n $scope.selectedRow = {};\r\n $scope.onField = {};\r\n\r\n $scope.instrumentIdList = [];\r\n $scope.instrumentAccuracyCheckList = [];\r\n\r\n $scope.prevTop = -1;\r\n $scope.lastRecord = 0;\r\n $scope.queryFullResults = [];\r\n $scope.queryTotalRecords = 0;\r\n $scope.queryTotalRecordsRun = false;\r\n $scope.DatasetTotalRecordsRun = false;\r\n $scope.DatasetTotalRecords = \"...\";\r\n $scope.RecordGroupSize = 30;\r\n $scope.prevStartRow = 0;\r\n $scope.endRow = $scope.RecordGroupSize;\r\n $scope.ScrollIndex = 0;\r\n $scope.scrollCount = 0;\r\n $scope.lastVisibleRow = 18;\r\n $scope.endPadding = 5;\r\n $scope.queryLoaded = false;\r\n $scope.datasource = null;\r\n $scope.NumberOfRecordsToPull = -1;\r\n $scope.NumberOfRecordsToPullSave = $scope.NumberOfRecordsToPull;\r\n $scope.infGridParams = null;\r\n $scope.fieldCriteriaRemoved = false;\r\n $scope.queryResult = {\r\n Error: false,\r\n ErrorMessage: null\r\n }\r\n $scope.runningQueryWithFieldCriteria = false;\r\n $scope.runningQueryToLoadAllRecords = false;\r\n\r\n $scope.dataset = DatasetService.getDataset($routeParams.Id);\r\n\r\n $scope.dataset.$promise.then(function () {\r\n\r\n $scope.project = ProjectService.getProject($scope.dataset.ProjectId);\r\n\r\n if ($scope.dataset.Datastore.TablePrefix === \"WaterTemp\")\r\n $scope.instrumentAccuracyCheckList = ProjectService.getAllInstrumentAccuracyChecks();\r\n\r\n $scope.project.$promise.then(function () {\r\n $scope.activateGrid();\r\n });\r\n\r\n //$scope.queryGetRecordCount();\r\n\r\n });\r\n\r\n $scope.clearValue = function()\r\n {\r\n $scope.Criteria.Value = null;\r\n console.dir($scope.Criteria);\r\n };\r\n\r\n //ag-grid - header + details --- alrid for multiple activities\r\n $scope.dataAgGridOptions = {\r\n rowBuffer: 0,\r\n animateRows: true,\r\n columnDefs: null,\r\n rowData: [],\r\n rowSelection: 'multiple',\r\n suppressPropertyNamesCheck: true, // this removes the console warning for custom properties, this is a known problem, see https://github.com/ag-grid/ag-grid/issues/2320\r\n //@ts-ignore\r\n gridOptions: any = this.gridOptions,\r\n\r\n onSelectionChanged: function (params) {\r\n $scope.selectedRow = $scope.dataAgGridOptions.api.getSelectedRows()[0];\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n\r\n onCellFocused: function (params) {\r\n //console.dir(params);\r\n if (!params.column)\r\n return;\r\n\r\n $scope.onField = (params.column.colDef.cdmsField);\r\n $scope.$apply();\r\n },\r\n\r\n onBodyScroll: function(params){\r\n // Leaving this funciton in, in case we need it sometime in the future.\r\n //console.log(\" scrolling \");\r\n //console.dir(params);\r\n //console.dir($scope.ag_grid);\r\n\r\n //$scope.scrollCount++;\r\n //console.log(\"$scope.scrollCount = \" + $scope.scrollCount);\r\n //console.log(\"-----\");\r\n },\r\n\r\n onGridReady: function (params) {\r\n console.log(\"GRID READY fired. ------------------------------------------>>>\");\r\n $scope.system.loading = false;\r\n $scope.$apply();\r\n GridService.autosizeColumns($scope.dataAgGridOptions);\r\n },\r\n\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n filter: true,\r\n },\r\n\r\n processCellForClipboard: $scope.processCellDataForOutput,\r\n };\r\n\r\n $scope.activateGrid = function () {\r\n console.log(\"activating grid!\");\r\n //setup grid and coldefs and then go!\r\n $timeout(function () {\r\n\r\n //need to set some header field possible values manually BEFORE we load our coldefs - so that the named value will display in the grid.\r\n var instrument_coldef = getByField($scope.dataset.Fields,\"InstrumentId\", \"DbColumnName\");\r\n if (instrument_coldef) {\r\n instrument_coldef.Field.PossibleValues = instrumentsToPossibleValues($scope.project.Instruments);\r\n }\r\n\r\n //var hidden_header_controltypes = [\"file\", \"hidden\", \"accuracy-check-select\", \"activity-text\", \"instrument-select\", \"post-accuracy-check-select\", \"qa-status-comment\", \"timezone-select\"];\r\n var hidden_header_controltypes = [\"file\", \"hidden\", \"activity-text\", \"instrument-select\", \"qa-status-comment\"];\r\n //var hidden_grid_controltypes = [\"hidden\", \"activity-text\",\"accuracy-check-select\",\"timezone-select\",\"post-accuracy-check-select\"];\r\n var hidden_grid_controltypes = [\"hidden\", \"activity-text\"];\r\n\r\n $scope.dataAgColumnDefs = GridService.getAgColumnDefs($scope.dataset);\r\n\r\n //setup any possible values that are needed - detail\r\n //note: the \"hide\" property hides the column in the results grid; the \"hide_header\" hides it in the header list in columns multiselect\r\n angular.forEach($scope.dataAgColumnDefs.DetailFields, function (fieldDef) {\r\n if (fieldDef.field == \"QAStatusId\") { //RowQAStatusId because we're in the details\r\n fieldDef.field = fieldDef.DbColumnName = \"RowQAStatusId\";\r\n fieldDef.PossibleValuesList = makeObjects($scope.dataset.RowQAStatuses, 'Id', 'Name');\r\n fieldDef.setPossibleValues(fieldDef.PossibleValuesList);\r\n fieldDef.hide_header = true;\r\n\r\n } else {\r\n fieldDef.PossibleValuesList = getParsedMetadataValues(fieldDef.PossibleValues);\r\n }\r\n\r\n if (fieldDef.ControlType == 'file' || fieldDef.ControlType == 'hidden')\r\n fieldDef.hide_header = true;\r\n\r\n });\r\n\r\n //setup activity fields to point to the right place\r\n //note: the \"hide\" property hides the column in the results grid; the \"hide_header\" hides it in the header list in columns multiselect\r\n angular.forEach($scope.dataAgColumnDefs.HeaderFields, function (fieldDef) {\r\n //console.dir(fieldDef);\r\n if (fieldDef.field == \"LocationId\") {\r\n\r\n //load the config so that we can check if we are supposed to include the habitat sites for this project\r\n try {\r\n $scope.project.Config = ($scope.project.Config) ? angular.fromJson($scope.project.Config) : {};\r\n } catch (e) {\r\n console.error(\"config could not be parsed for project\" + $scope.project.Config);\r\n console.dir(e);\r\n }\r\n\r\n var dataset_locations = ProjectService.getDatasetLocations($scope.project.Id, $scope.dataset.Id);\r\n\r\n dataset_locations.$promise.then(function(){\r\n dataset_locations = dataset_locations.sort(orderByAlpha);\r\n\r\n fieldDef.PossibleValuesList = dataset_locations; //makeObjects(dataset_locations, 'Id', 'Label'); //used in the headers\r\n\r\n if (fieldDef.hasOwnProperty('setPossibleValues'))\r\n fieldDef.setPossibleValues(makeObjects(dataset_locations, 'Id', 'Label')); //used in the grid\r\n })\r\n\r\n\r\n } else if (fieldDef.field == \"QAStatusId\") { //ActivityQAStatusId\r\n fieldDef.field = fieldDef.DbColumnName = \"ActivityQAStatusId\";\r\n fieldDef.PossibleValuesList = makeObjects($scope.dataset.QAStatuses, 'Id', 'Name');\r\n\r\n if (fieldDef.hasOwnProperty('setPossibleValues'))\r\n fieldDef.setPossibleValues(fieldDef.PossibleValuesList);\r\n\r\n fieldDef.hide_header = true; //hide in header\r\n }\r\n else if (fieldDef.field == \"QAComments\") { //ActivityQAStatusId\r\n fieldDef.field = fieldDef.DbColumnName = \"ActivityQAComments\";\r\n }\r\n\r\n if (fieldDef.ControlType == \"select\" || fieldDef.ControlType == \"multiselect\") {\r\n fieldDef.PossibleValuesList = getParsedMetadataValues(fieldDef.PossibleValues);\r\n\r\n if (fieldDef.hasOwnProperty('setPossibleValues'))\r\n fieldDef.setPossibleValues(fieldDef.PossibleValuesList);\r\n\r\n } else if (fieldDef.ControlType == \"instrument-select\") {// || fieldDef.ControlType == \"accuracy-check-select\" || fieldDef.ControlType ==\"post-accuracy-check-select\" || fieldDef.ControlType == \"timezone-select\") {\r\n fieldDef.PossibleValuesList = makeObjects(fieldDef.PossibleValues, 'Id', 'Label');\r\n\r\n if (fieldDef.hasOwnProperty('setPossibleValues'))\r\n fieldDef.setPossibleValues(fieldDef.PossibleValuesList);\r\n\r\n //fieldDef.AccuracyChecks =\r\n\r\n } else if (fieldDef.ControlType == \"fisherman-select\") {\r\n fieldDef.PossibleValuesList = fieldDef.PossibleValues;\r\n\r\n if (fieldDef.hasOwnProperty('setPossibleValues'))\r\n fieldDef.setPossibleValues(fieldDef.PossibleValuesList);\r\n\r\n } else if (fieldDef.ControlType == \"number-select\") {\r\n fieldDef.PossibleValuesList = fieldDef.PossibleValues;\r\n\r\n if (fieldDef.hasOwnProperty('setPossibleValues'))\r\n fieldDef.setPossibleValues(fieldDef.PossibleValuesList);\r\n\r\n } else if (fieldDef.ControlType == \"accuracy-check-select\") {\r\n fieldDef.PossibleValuesList = fieldDef.PossibleValues;\r\n\r\n if (fieldDef.hasOwnProperty('setPossibleValues'))\r\n fieldDef.setPossibleValues(fieldDef.PossibleValuesList);\r\n\r\n } else if (fieldDef.ControlType == \"post-accuracy-check-select\") {\r\n fieldDef.PossibleValuesList = fieldDef.PossibleValues;\r\n\r\n if (fieldDef.hasOwnProperty('setPossibleValues'))\r\n fieldDef.setPossibleValues(fieldDef.PossibleValuesList);\r\n\r\n }\r\n\r\n //hidden headers\r\n // @ts-ignore\r\n if (hidden_header_controltypes.contains(fieldDef.ControlType))\r\n fieldDef.hide_header = true; //just the headers\r\n\r\n //hidden in grid\r\n // @ts-ignore\r\n if (hidden_grid_controltypes.contains(fieldDef.ControlType))\r\n fieldDef.hide = true; //just the detail\r\n\r\n\r\n });\r\n\r\n $scope.dataAgGridOptions.columnDefs = $scope.dataAgColumnDefs.HeaderFields.concat($scope.dataAgColumnDefs.DetailFields);\r\n\r\n //console.log(\"Ready to go!\");\r\n //console.dir($scope.dataAgGridOptions.columnDefs);\r\n //console.dir($scope.imported_rows);\r\n\r\n\r\n var ag_grid_div = document.querySelector('#query-grid') as HTMLElement; //get the container id...\r\n $scope.ag_grid = new Grid(ag_grid_div, $scope.dataAgGridOptions); //bind the grid to it.\r\n //$scope.dataAgGridOptions.api.showLoadingOverlay(); //show loading...\r\n\r\n $scope.infGridParams = angular.copy($rootScope.infGridParams);\r\n $scope.DatasetTotalRecords = $rootScope.infGridParams.NumberOfRecordsToPull;\r\n\r\n $scope.executeQuery($scope.infGridParams);\r\n\r\n //set the detail values into the grid\r\n //$scope.dataAgGridOptions.api.setRowData($scope.imported_rows);\r\n\r\n //$scope.dataAgGridOptions.api.redrawRows();\r\n //GridService.autosizeColumns($scope.dataAgGridOptions);\r\n\r\n //$scope.calculateStatistics();\r\n //-----\r\n\r\n }, 0);\r\n };\r\n\r\n /*$scope.runQueryWithCriteria = function(params){\r\n // When the page opens and the query first runs, it pulls the first set of\r\n // records, with no filters (get everything).\r\n // When the user clicks Execute Query, they have probably added\r\n // criteria. Therefore, we must reset the query,\r\n // so that we don't append the new results onto the old result set.\r\n // Also, we want to start at the beginning,\r\n // rather than offsetting into the data (having a startRow > 0).\r\n\r\n // First dump the last results and reset things.\r\n $scope.clearGrid();\r\n $scope.query = undefined;\r\n\r\n $scope.queryTotalRecords = 0;\r\n $scope.DatasetTotalRecords = \"...\";\r\n $scope.queryTotalRecordsRun = false;\r\n $scope.DatasetTotalRecordsRun = false;\r\n $scope.resetQueryError();\r\n $scope.runningQueryWithFieldCriteria = true;\r\n $scope.NumberOfRecordsToPull = $scope.NumberOfRecordsToPullSave;\r\n\r\n // Now, set the datasource for the grid back to the real thing.\r\n $scope.dataAgGridOptions.api.setDatasource($scope.dataSource);\r\n\r\n // Update the offset and endRow.\r\n params.startRow = 0;\r\n params.endRow = $scope.NumberOfRecordsToPull;\r\n\r\n $scope.dataSource.getRows(params);\r\n };\r\n\r\n $scope.runQueryWithCriteriaLoadAllItems = function(){\r\n\r\n // Dump the last results and reset things.\r\n $scope.clearGrid();\r\n $scope.query = undefined;\r\n\r\n $scope.queryTotalRecords = 0;\r\n //$scope.queryTotalRecordsRun = false; // Should be true still.\r\n //$scope.DatasetTotalRecordsRun = false; // Should be true still.\r\n $scope.resetQueryError();\r\n //$scope.runningQueryWithFieldCriteria = true; // More thoughts on this below.\r\n\r\n // Now, set the datasource for the grid back to the real thing.\r\n //$scope.dataAgGridOptions.api.setDatasource($scope.dataSource);\r\n\r\n if ($scope.fieldCriteriaRemoved)\r\n $scope.runningQueryWithFieldCriteria = false;\r\n\r\n $scope.runningQueryToLoadAllRecords = true;\r\n\r\n // Set the starting row and ending row, so that we can get all the records.\r\n $scope.infGridParams.startRow = 0;\r\n $scope.infGridParams.endRow = $scope.DatasetTotalRecords;\r\n $scope.infGridParams.NumberOfRecordsToPull = $scope.DatasetTotalRecords;\r\n $scope.NumberOfRecordsToPullSave = $scope.NumberOfRecordsToPull =\r\n\r\n // $scope.NumberOfRecordsToPull is set initially when the page/dataset loads.\r\n $scope.NumberOfRecordsToPull = $scope.DatasetTotalRecords;\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-rowqaupdate.html',\r\n controller: 'ModalBulkRowQAChangeCtrl',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n\r\n $location.path(\"/datasetquery/\" + $scope.dataset.Id);\r\n\r\n };\r\n */\r\n\r\n $scope.executeQuery = function(params){\r\n $scope.query = $scope.buildQuery(params);\r\n\r\n $scope.query.loading = true;\r\n\r\n $scope.query.criteria.GetTotalCount = false;\r\n\r\n $scope.query.results = DatasetService.queryActivities($scope.query);\r\n\r\n $scope.query.results.$promise.then(function () {\r\n\r\n if (!$scope.query.results.$resolved)\r\n return;\r\n\r\n $scope.query.results.forEach(function (item) {\r\n if (item.SqlError)\r\n {\r\n $scope.query.loading = false;\r\n console.error(\"SQL Timeout in the backend...\");\r\n\r\n $scope.queryResult.Error = true;\r\n $scope.queryResult.ErrorMessage = \"The query results are currently too intense for this system. Please contact the GIS office for support with this request.\";\r\n //alert($scope.queryResult.ErrorMessage);\r\n return;\r\n }\r\n\r\n $scope.instrumentAccuracyCheckList.forEach(function (accCheck) {\r\n if (item.AccuracyCheckId === accCheck.Id) {\r\n item.AccuracyCheckId = accCheck.Bath1Grade + \"-\" + accCheck.Bath2Grade + \" \" + moment(accCheck.CheckDate).format('MMM DD YYYY');\r\n }\r\n if (item.PostAccuracyCheckId === accCheck.Id) {\r\n item.PostAccuracyCheckId = accCheck.Bath1Grade + \"-\" + accCheck.Bath2Grade + \" \" + moment(accCheck.CheckDate).format('MMM DD YYYY');\r\n }\r\n });\r\n\r\n if (item.Timezone) {\r\n var parsedTimezone = JSON.parse(item.Timezone);\r\n item.Timezone = parsedTimezone.Name;\r\n }\r\n\r\n $scope.queryTotalRecords++;\r\n });\r\n\r\n if ($scope.queryResult.Error)\r\n return; // Get us out of here.\r\n\r\n console.log(\"$scope.queryTotalRecords = \" + $scope.queryTotalRecords);\r\n\r\n // Can only call setRowData when using normal row model (not infinite).\r\n $scope.dataAgGridOptions.api.setRowData($scope.query.results);\r\n\r\n\r\n\r\n $scope.query.loading = false;\r\n\r\n // If we have not pulled the record count yet, we need to,\r\n // but we only want to run it once, when the page loads,\r\n // or when the user supplies some fields to filter on.\r\n //if (!$scope.DatasetTotalRecordsRun)\r\n //{\r\n // $scope.queryGetRecordCount();\r\n // $scope.DatasetTotalRecordsRun = true;\r\n //}\r\n\r\n\r\n }\r\n );\r\n };\r\n\r\n /*$scope.queryGetRecordCount = function(){\r\n\r\n $scope.query.criteria.GetTotalCount = true;\r\n\r\n $scope.query.TotalRecordCount = DatasetService.queryActivities($scope.query);\r\n $scope.query.TotalRecordCount.$promise.then(function () {\r\n // There should only be one...\r\n $scope.query.TotalRecordCount.forEach(function (item) {\r\n $scope.DatasetTotalRecords = item.TotalRecords;\r\n });\r\n $scope.query.criteria.GetTotalCount = undefined;\r\n\r\n $scope.infGridParams.startRow = 0;\r\n $scope.infGridParams.endRow = $scope.DatasetTotalRecords;\r\n $scope.infGridParams.NumberOfRecordsToPull = $scope.DatasetTotalRecords;\r\n });\r\n };\r\n */\r\n\r\n $scope.buildQuery = function(params){\r\n\r\n /*var queryCriteriaList = angular.copy($scope.criteriaList);\r\n queryCriteriaList.forEach(function (criteria) {\r\n try {\r\n if(Array.isArray(criteria.Value))\r\n criteria.Value = angular.toJson(criteria.Value);\r\n } catch (e) {\r\n //oh well.\r\n }\r\n });\r\n */\r\n\r\n var query = null;\r\n query =\r\n {\r\n criteria: {\r\n DatasetId: \t $scope.dataset.Id,\r\n Fields: \t $rootScope.queryCriteriaList,\r\n TablePrefix: $scope.dataset.Datastore.TablePrefix,\r\n startRow: params.startRow,\r\n endRow: params.endRow,\r\n sortModel: params.sortModel,\r\n filterModel: params.filterModel,\r\n NumberOfRecordsToPull: params.NumberOfRecordsToPull,\r\n PullAllRecords: true\r\n },\r\n loading: true,\r\n };\r\n\r\n $scope.startRow = params.startRow;\r\n\r\n //console.log(\"query in buildQuery is next...\");\r\n //console.dir(query);\r\n\r\n return query;\r\n };\r\n\r\n $scope.openActivity = function()\r\n {\r\n console.dir($scope.selectedRow);\r\n $location.path(\"/dataview/\"+$scope.selectedRow.ActivityId);\r\n };\r\n\r\n //export the data - button click\r\n $scope.doExport = function () {\r\n\r\n if (!$scope.ExportFilename) {\r\n alert(\"Please enter a name for your export file like: 'TucannonJune25Export'.\");\r\n return;\r\n }\r\n\r\n var params = {\r\n fileName: $scope.ExportFilename + \".xlsx\",\r\n processCellCallback : $scope.processCellDataForOutput,\r\n };\r\n\r\n $scope.dataAgGridOptions.api.exportDataAsExcel(params);\r\n };\r\n\r\n //this is used by both export and copy functions to de-reference our values\r\n $scope.processCellDataForOutput = function (params) {\r\n\r\n //here we do any special formatting since export does NOT call cell renderers or cell formatters...\r\n //if ((params.column.colDef.DbColumnName == \"LocationId\") && (params.column.colDef.PossibleValues !== null)) {\r\n if ((params.column.colDef.DbColumnName == \"LocationId\") && ($scope.dataset.Locations !== null)){\r\n //return params.column.colDef.PossibleValues[params.value];\r\n\r\n // For locations, overwrite the params value with the Label,\r\n // rather than the Id, before it goes to the file, so that\r\n // the text name shows in the file, rather than the Id.\r\n $scope.dataset.Locations.forEach(function (item){\r\n if (params.value == item.Id)\r\n params.value = item.Label;\r\n //return item.Label;\r\n });\r\n\r\n }\r\n\r\n if ((params.column.colDef.DbColumnName == \"InstrumentId\") && (params.column.colDef.PossibleValues !== null)) {\r\n return params.column.colDef.PossibleValues[params.value];\r\n }\r\n\r\n if ((params.column.colDef.DbColumnName == \"FishermanId\") && (params.column.colDef.PossibleValues !== null)) {\r\n return params.column.colDef.PossibleValues[params.value];\r\n }\r\n\r\n if ((params.column.colDef.DbColumnName == \"StreamName\") && (params.column.colDef.PossibleValues !== null)) {\r\n return params.column.colDef.PossibleValues[params.value];\r\n }\r\n\r\n if ((params.column.colDef.DbColumnName == \"ActivityQAStatusId\") && (params.column.colDef.PossibleValues !== null)) {\r\n return params.column.colDef.PossibleValues[params.value];\r\n }\r\n\r\n if ((params.column.colDef.DbColumnName == \"RowQAStatusId\") && (params.column.colDef.PossibleValues !== null)) {\r\n return params.column.colDef.PossibleValues[params.value];\r\n }\r\n\r\n if (params.column.colDef.ControlType == 'file' || params.column.colDef.ControlType == 'link') {\r\n var retvalue = [];\r\n var files = getFilesArrayAsList(params.value);\r\n files.forEach(function (file) {\r\n if (params.column.colDef.ControlType == 'file')\r\n {\r\n if (file.Name)\r\n retvalue.push(file.Name);\r\n else\r\n retvalue.push(file);\r\n }\r\n else if (params.column.colDef.ControlType == 'link')\r\n retvalue.push(file.Link);\r\n });\r\n return retvalue.join();\r\n }\r\n\r\n if (params.column.colDef.ControlType == \"datetime\" || params.column.colDef.ControlType == \"time\") {\r\n\r\n let retval = params.value;\r\n try {\r\n\r\n retval = moment(params.value).format(\"YYYY-MM-DD HH:mm:ss\");\r\n } catch (e) {\r\n\r\n console.log(\"problem converting: \" + retval + \" to datetime text\");\r\n console.dir(e);\r\n }\r\n\r\n return retval;\r\n }\r\n\r\n if (params.column.colDef.ControlType == \"date\" || params.column.colDef.ControlType == \"activity-date\") {\r\n\r\n let retval = params.value;\r\n try {\r\n retval = moment(params.value).format(\"YYYY-MM-DD\");\r\n } catch (e) {\r\n console.log(\"problem converting: \" + retval + \" to datetime text\");\r\n console.dir(e);\r\n }\r\n return retval;\r\n }\r\n\r\n //default\r\n return params.value;\r\n\r\n };\r\n\r\n $scope.resetQueryError = function ()\r\n {\r\n $scope.queryResult.Error = false;\r\n $scope.queryResult.ErrorMessage = null;\r\n };\r\n\r\n }];\r\n\r\nexport default dataset_query_view_all_records;\r\n","declare const d3: any;\r\n\r\nvar adultweir_chartservice = [\r\n function () {\r\n var service = {\r\n\r\n dataset: \"AdultWeir\",\r\n\r\n getChartConfig: function () {\r\n\r\n var options = {\r\n chart: {\r\n type: 'multiBarChart',\r\n height: 230,\r\n width: 500,\r\n x: function (d) { return d.label; },\r\n y: function (d) { return d.value; },\r\n showLabels: true,\r\n //duration: 500,\r\n labelThreshold: 0.01,\r\n //labelSunbeamLayout: true,\r\n showControls: false,\r\n showLegend: false,\r\n yAxis: {\r\n tickFormat: function (d) {\r\n return d3.format(\"~.0\")(d);\r\n },\r\n }\r\n },\r\n title: {\r\n enable: true,\r\n text: 'Fish by Species'\r\n },\r\n };\r\n\r\n return options;\r\n\r\n },\r\n\r\n\r\n getChartData: function () {\r\n\r\n /* -- this is the format we need to return for the series to work --\r\n var retvaldata = [\r\n {\r\n \"key\": \"Female\",\r\n \"color\": \"#d62728\",\r\n \"values\": [\r\n {\r\n \"label\": \"CHS\",\r\n \"value\": 4\r\n },\r\n {\r\n \"label\": \"STH\",\r\n \"value\": 3\r\n },\r\n\r\n ]\r\n },\r\n {\r\n \"key\": \"Male\",\r\n \"color\": \"#1f77b4\",\r\n \"values\": [\r\n {\r\n \"label\": \"CHS\",\r\n \"value\": 2\r\n },\r\n {\r\n \"label\": \"STH\",\r\n \"value\": 13\r\n },\r\n\r\n ]\r\n }\r\n ];\r\n */\r\n\r\n\r\n var dataCalc = {};\r\n var data = []\r\n data.forEach(function (row, key) {\r\n var num = 1;\r\n if (row.TotalFishRepresented)\r\n num = row.TotalFishRepresented;\r\n else if (row.FishCount)\r\n num = row.FishCount;\r\n\r\n if (row.Sex && row.Species) {\r\n\r\n if (!dataCalc[row.Sex])\r\n dataCalc[row.Sex] = {};\r\n\r\n if(!dataCalc[row.Sex][row.Species])\r\n dataCalc[row.Sex][row.Species] = num;\r\n else\r\n dataCalc[row.Sex][row.Species] += num;\r\n\r\n }\r\n\r\n });\r\n\r\n var color = {\r\n 'M': \"#1f77b4\",\r\n 'F': \"#d62728\",\r\n 'UNK': \"#f4b042\",\r\n };\r\n\r\n var label = {\r\n 'M': \"Male\",\r\n 'F': \"Female\",\r\n 'UNK': \"Unknown\",\r\n };\r\n\r\n // var\r\n data = [];\r\n Object.keys(dataCalc).forEach(function (sex) {\r\n var the_count = [];\r\n Object.keys(dataCalc[sex]).forEach(function (species) {\r\n var val = dataCalc[sex][species];\r\n the_count.push({ 'label': species, 'value': val });\r\n });\r\n\r\n data.push({\r\n \"key\": label[sex],\r\n \"color\": color[sex],\r\n \"values\": the_count\r\n });\r\n });\r\n\r\n return data;\r\n },\r\n };\r\n\r\n return service;\r\n }\r\n];\r\n\r\nexport default adultweir_chartservice;\r\n","// import common_module from \"../common-module\";\r\n\r\nvar service_utilities = ['Logger', '$window', '$route',\r\n //mod.service('ServiceUtilities',[ 'Logger', '$window', '$route', $q, // Note: If you had the $q on this line, it causes an error.\r\n function (Logger, $window, $route, $q) {\r\n\r\n var service = {\r\n\r\n // ***** Date and Time functions start *****\r\n checkDateTimeFormat1: function (strDateTime) {\r\n var DateTime_REGEXP = /^\\d{4}(-)\\d{2}(-)\\d{2}( )\\d{2}(:)\\d{2}$/;\r\n\r\n if (DateTime_REGEXP.test(strDateTime)) {\r\n return true;\r\n } else {\r\n return undefined;\r\n }\r\n },\r\n\r\n dateTimeNowToStrYYYYMMDD_HHmmSS: function () {\r\n // This function gets a date/time hack (now), and returns it in the format of YYYYMMDD_HHmmSS\r\n var dtNow = new Date();\r\n var intYear = dtNow.getFullYear();\r\n var intMonth = dtNow.getMonth();\r\n var strMonth = this.padNumber(intMonth);\r\n var intDate = dtNow.getDate();\r\n var strDate = this.padNumber(intDate);\r\n var intHours = dtNow.getHours();\r\n var strHours = this.padNumber(intHours);\r\n var intMinutes = dtNow.getMinutes();\r\n var strMinutes = this.padNumber(intMinutes);\r\n var intSeconds = dtNow.getSeconds();\r\n var strSeconds = this.padNumber(intSeconds);\r\n var strNow = intYear + strMonth + strDate + \"_\" + strHours + strMinutes + strSeconds;\r\n return strNow;\r\n },\r\n\r\n dateTimeNowToStrYYYYMMDD_HHmmSS2: function () {\r\n // This function takes a date/time hack (now), and returns it in the format of YYYY-MM-DD HH:mm:SS.nnn\r\n var dtNow = new Date();\r\n var intYear = dtNow.getFullYear();\r\n var intMonth = dtNow.getMonth();\r\n var strMonth = this.padNumber(intMonth);\r\n var intDate = dtNow.getDate();\r\n var strDate = this.padNumber(intDate);\r\n var intHours = dtNow.getHours();\r\n var strHours = this.padNumber(intHours);\r\n var intMinutes = dtNow.getMinutes();\r\n var strMinutes = this.padNumber(intMinutes);\r\n var intSeconds = dtNow.getSeconds();\r\n var strSeconds = this.padNumber(intSeconds);\r\n var intMilliseconds = dtNow.getMilliseconds();\r\n var strMilliseconds = this.padNumber(intMilliseconds);\r\n var strNow = intYear + \"-\" + strMonth + \"-\" + strDate + \" \" + strHours + \":\" + strMinutes + \":\" + strSeconds + \".\" + strMilliseconds;\r\n return strNow;\r\n },\r\n\r\n removeTSfromDateTimeString: function (strDate) {\r\n // This function takes a date/time string like this: 2015-08-14T00:00:00\r\n // and make it look like this: 2015-08-14 00:00\r\n //console.log(\"strDate = \" + strDate);\r\n strDate = strDate.replace(\"T\", \" \");\r\n strDate = strDate.substring(0, (strDate.length - 3));\r\n return strDate;\r\n },\r\n\r\n extractDateFromString: function (strDate) {\r\n // This function takes an incoming date in this format: 2015-08-14T00:00:00\r\n // and extracts/converts it to this format: 2015-08-14\r\n console.log(\"Inside extractDateFromString...\");\r\n console.log(\"strDate = \" + strDate);\r\n\r\n var newDate = strDate.substring(0, 10);\r\n console.log(\"newDate = \" + newDate);\r\n\r\n return newDate;\r\n },\r\n\r\n extractTimeFromString: function (strDateTime) {\r\n // This function takes an incoming date in this format: 2015-08-14T08:00:00\r\n // and extracts/converts it to this format: 08:00\r\n console.log(\"Inside extractTimeFromString...\");\r\n console.log(\"strDateTime = \" + strDateTime);\r\n\r\n var newTime = strDateTime.substring(11, 16);\r\n console.log(\"newTime = \" + newTime);\r\n\r\n return newTime;\r\n },\r\n\r\n extractTimeFromString2: function (strDateTime) {\r\n // This function takes an incoming date as string, in one of these formats,\r\n /*\t(HH:MM),\r\n *\t(HH:MM:SS),\r\n *\t(YYYY-MM-DDTHH:mm:SS format)\r\n */\r\n // and extracts the time (HH:MM) from the string.\r\n\r\n //console.log(\"strDateTime = \" + strDateTime);\r\n var theString = strDateTime;\r\n //var theLength = theString.length;\r\n var colonLocation = theString.indexOf(\":\");\r\n\r\n // Some fields may have double quotes on the time fields.\r\n // To determine if they do, we remove (via replace) the double quotes.\r\n // Then we compare the string length from before and after the replace action.\r\n var stringLength = theString.length;\r\n var tmpString = theString.replace(\"\\\"\", \"\");\r\n var tmpStringLength = tmpString.length;\r\n //console.log(\"colonLocation = \" + colonLocation + \", stringLength = \" + stringLength);\r\n\r\n if (stringLength !== tmpStringLength) {\r\n //console.log(\"The string includes double quotes..\");\r\n // The string includes \"\" (coming from a CSV file) so we must allow for them.\r\n if (stringLength > 5)\t// \"HH:MM:SS\" Note the \"\", or YYYY-MM-DDTHH:mm:SS\r\n theString = theString.substring(colonLocation - 2, stringLength - 4);\r\n } else {\r\n //console.log(\"The string DOES NOT have double quotes...\");\r\n if (stringLength > 5)\t// \"HH:MM:SS\" Note the \"\", or YYYY-MM-DDTHH:mm:SS\r\n theString = theString.substring(colonLocation - 2, stringLength - 3);\r\n }\r\n return theString;\r\n },\r\n\r\n extractYearFromString: function (strDateTime) {\r\n // This function takes an incomving date as string (YYYY-MM-DDTHH:mm:SS format), and extracts the year (YYYY) from it.\r\n var theString = strDateTime;\r\n var hyphenLocation = theString.indexOf(\"-\");\r\n if (hyphenLocation < 0)\r\n return hyphenLocation;\r\n\r\n theString = theString.substr(0, hyphenLocation); //(start where, how many)\r\n\r\n // Some fields may have double quotes on the time fields.\r\n // To determine if they do, we remove (via replace) the double quotes.\r\n // Then we compare the string length from before and after the replace action.\r\n var stringLength = theString.length;\r\n var tmpString = theString.replace(\"\\\"\", \"\");\r\n var tmpStringLength = tmpString.length;\r\n //console.log(\"hyphenLocation = \" + hyphenLocation + \", stringLength = \" + stringLength);\r\n\r\n if (stringLength !== tmpStringLength) {\r\n //console.log(\"The string includes double quotes..\");\r\n // The string includes \"\" (coming from a CSV file) so we must allow for them.\r\n theString = theString.substr(1, 4);\r\n } else {\r\n //console.log(\"The string DOES NOT have double quotes...\");\r\n theString = theString.substr(0, 4);\r\n }\r\n return theString;\r\n },\r\n\r\n padNumber: function (number) {\r\n // This function takes a number (< 10) as string, and adds a leading zero to it.\r\n // Changes this: \"2\"\r\n // To this: \"02\"\r\n console.log(\"Inside padNumber...\");\r\n\r\n if (number < 10) {\r\n return '0' + number;\r\n }\r\n return number;\r\n },\r\n\r\n\r\n toExactISOString: function (a_date) {\r\n // This function takes a date as DateTime, and converts is to a string\r\n // that looks like this: 2017-02-04T08:05:04.123Z\r\n console.log(\"Inside toExactISOString...\");\r\n console.log(\"a_date is next...\");\r\n console.dir(a_date);\r\n\r\n // If an 2-digit year comes in, let's say 17 for 2017, the system will default 17 to 1917 instead.\r\n // Therefore, the idea was to just add 100 years to the number, to put it into the correct century.\r\n // TODO: better way to fix this?\r\n //if (a_date.getFullYear() < 1950)\r\n // a_date.setFullYear(a_date.getFullYear() + 100);\r\n\r\n var s_utc = a_date.getFullYear() +\r\n '-' + this.padNumber(a_date.getMonth() + 1) +\r\n '-' + this.padNumber(a_date.getDate()) +\r\n 'T' + this.padNumber(a_date.getHours()) +\r\n ':' + this.padNumber(a_date.getMinutes()) +\r\n ':' + this.padNumber(a_date.getSeconds()) +\r\n // '.' + (a_date.getMilliseconds() / 1000).toFixed(3).slice(2, 5); // original line\r\n '.' + (a_date.getMilliseconds() / 1000).toFixed(3).slice(2, 5) +\r\n 'Z';\r\n\r\n return s_utc;\r\n },\r\n\r\n formatDate: function (d) {\r\n //date to friendly format: \"3/05/2014 04:35:44\"\r\n\r\n var d_str =\r\n [d.getMonth() + 1, d.getDate(), d.getFullYear()].join('/') + \" \" +\r\n [(\"00\" + d.getHours()).slice(-2), (\"00\" + d.getMinutes()).slice(-2), (\"00\" + d.getSeconds()).slice(-2)].join(':');\r\n\r\n return d_str;\r\n },\r\n\r\n formatDate2: function (d) {\r\n //date to friendly format: \"03/05/2014 04:35:44\" Note the 2-digit month.\r\n\r\n var d_str =\r\n [this.padNumber(d.getMonth() + 1), this.padNumber(d.getDate()), d.getFullYear()].join('/') + \" \" +\r\n [(\"00\" + d.getHours()).slice(-2), (\"00\" + d.getMinutes()).slice(-2), (\"00\" + d.getSeconds()).slice(-2)].join(':');\r\n\r\n return d_str;\r\n },\r\n\r\n convertHhMmToMinutes: function (aTime) {\r\n // This function expects a time duration like this: 01:15 (an hour and 15 minutes), and converts it to minutes.\r\n console.log(\"typeof aTime = \" + typeof aTime);\r\n\r\n\r\n var numberMinutes = 0;\r\n\r\n var theHours = parseInt(aTime.substr(0, 2)); // (start at, get this many)\r\n //console.log(\"theHours = \" + theHours);\r\n var theMinutes = parseInt(aTime.substr(3, 2));\r\n //console.log(\"theMinutes = \" + theMinutes);\r\n numberMinutes = theHours * 60 + theMinutes;\r\n //console.log(\"TotalTimeFished (in min) = \" + TotalTimeFished);\r\n return numberMinutes;\r\n },\r\n\r\n convertMinutesToHhMm: function (numberMinutes) {\r\n // This function expects a number of minutes, and converts it to a time duration (as a string) formatted like this: hh:mm\r\n\r\n var NumMinutes = numberMinutes;\r\n //console.log(\"NumMinutes = \" + NumMinutes);\r\n //@ts-ignore\r\n var theHours = parseInt(NumMinutes / 60, 10);\r\n //console.log(\"theHours = \" + theHours);\r\n var theMinutes = NumMinutes - (theHours * 60);\r\n //console.log(\"theMinutes = \" + theMinutes);\r\n var strTime = \"\";\r\n\r\n if (theHours < 10)\r\n var strHours = \"0\" + theHours;\r\n else\r\n var strHours = \"\" + theHours;\r\n\r\n if (theMinutes < 10)\r\n var strMinutes = \"0\" + theMinutes;\r\n else\r\n var strMinutes = \"\" + theMinutes;\r\n\r\n strTime = strHours + \":\" + strMinutes;\r\n\r\n return strTime;\r\n },\r\n // ***** Date and Time functions end *****\r\n\r\n // ***** Number-related (how many digits, etc.) functions start *****\r\n // Given a float type number, this function verifies that it has six digits before the decimal.\r\n checkSixFloat: function (aNumber) {\r\n // Regular Expression explanation. Also see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\r\n // Enclosing characters: / ... /\r\n // At the beginning: ^\r\n // Escape character for special characters: \\ , in this case the - has special meaning\r\n // Match the preceding character 0 or 1 time; in other words, like -123. The - sign in front may or may not be present: ?\r\n // A sequence of 6 digits: \\d{6}\r\n // Start a section to be remembered: ( and another section (\r\n // Look for a decimal, but the decimal needs escaping, because the . is special: \\.\r\n // Close the decimal section: )\r\n // Look for a digit: \\d\r\n // Match the preceding character 1 or more times: +\r\n // Closed this section for the fractional value: )\r\n // The decimal followed by 1 or more numbers may or may not be present (the whole .123 section): ?\r\n // The fractional part (.123) is treated as the end of the number, and we want to see if the number has a fractional part: $\r\n // Basically, the $ matches the whole () section before the ?, so the decimal section must be at the end of the number.\r\n // Example: For example, /t$/ does not match the 't' in \"eater\", but does match it in \"eat\".\r\n var FLOAT_REGEXP6 = /^\\-?\\d{6}((\\.)\\d+)?$/;\r\n var n = \"\" + aNumber;\r\n n = n.replace(',', '.');\r\n\r\n if (FLOAT_REGEXP6.test(n)) {\r\n return parseFloat(n.replace(',', '.'));\r\n } else {\r\n return undefined;\r\n }\r\n },\r\n // Given text that could be an integer, this function verifies that it is an integer.\r\n checkInteger: function (aNumber) {\r\n var INTEGER_REGEXP = /^\\-?\\d+$/;\r\n var n = \"\" + aNumber;\r\n n = n.replace(',', '.');\r\n\r\n if (INTEGER_REGEXP.test(n)) {\r\n return parseFloat(n.replace(',', '.'));\r\n } else {\r\n return undefined;\r\n }\r\n },\r\n\r\n check4Digits: function (aNumber) {\r\n console.log(\"Inside check4Digits...\")\r\n var INTEGER_REGEXP = /^\\d{4}$/;\r\n var n = \"\" + aNumber;\r\n n = n.replace(',', '.');\r\n\r\n if (INTEGER_REGEXP.test(n)) {\r\n return parseFloat(n.replace(',', '.'));\r\n } else {\r\n return undefined;\r\n }\r\n },\r\n\r\n\r\n // ***** Number-related (how many digits, etc.) functions end *****\r\n\r\n setFileName: function (aFileName, scope) {\r\n scope.FieldSheetFile = aFileName;\r\n }\r\n }\r\n\r\n return service;\r\n\r\n }];\r\n\r\nexport default service_utilities;\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJjb25maXJtLXJldmlldy5jb21wb25lbnQuc2NzcyJ9 */\";","import * as angular from 'angular';\r\n\r\nvar creelsurvey_chartservice = [\r\n function(){\r\n\t\t//console.log(\"Inside CreelSurvey_ChartService...\");\r\n var service = {\r\n\r\n \tdataset: \"CreelSurvey\",\r\n\r\n\t\t\tgetChartConfig: function(){\r\n\t\t\t\tvar config = {\r\n \t\t\t title : 'Fish by Species',\r\n\t\t\t\t tooltips: true,\r\n showControls: false,\r\n\t\t\t\t labels : false,\r\n\r\n\t\t\t\t legend: {\r\n\t\t\t\t display: true,\r\n\t\t\t\t position: 'right'\r\n\t\t\t\t }\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn config;\r\n\t\t\t},\r\n\r\n\r\n\t\t\tgetDefaultChartData: function()\r\n\t\t\t{\r\n\t\t\t\tvar defaultChartData = {\"series\": [], \"data\":[{ \"x\": \"Loading...\", \"y\": [0],\"tooltip\": \"\"}]}; //default\r\n\t\t\t\treturn defaultChartData;\r\n\t\t\t},\r\n\r\n\r\n\t\t\tgetChartData: function()\r\n\t\t\t{\r\n\t\t\t var dataCalc = {};\r\n\r\n\t\t\t angular.forEach(data, function(row, key){\r\n\t\t\t //var num = (row.TotalFishRepresented) ? row.TotalFishRepresented : 1; // From AdultWeir\r\n\t\t\t var num = row.FishCount;\r\n\t\t\t //console.log(\"row is next...\");\r\n\t\t\t\t\t//console.dir(row);\r\n\t\t\t\t\t//console.log(\"num = \" + num);\r\n\r\n\t\t\t if(row.Species)\r\n\t\t\t {\r\n\t\t\t\t\t\t//console.log(\"Inside row.Species if...\");\r\n\t\t\t if(!dataCalc[row.Species])\r\n\t\t\t dataCalc[row.Species] = { total: 0, males: 0, females: 0};\r\n\r\n\t\t\t dataCalc[row.Species].total += num;\r\n\r\n\t\t\t if(row.Sex == \"M\")\r\n\t\t\t dataCalc[row.Species].males += num;\r\n\t\t\t if(row.Sex == \"F\")\r\n\t\t\t dataCalc[row.Species].females += num;\r\n\r\n\t\t\t }\r\n\r\n\t\t\t //console.log(row.Species + \" = \");\r\n\t\t\t //console.dir(dataCalc[row.Species]);\r\n\r\n\t\t\t });\r\n\r\n\t\t\t var data = {\r\n\t\t\t \"series\": [\r\n\t\t\t \"Total\",\r\n\t\t\t \"Male\",\r\n\t\t\t \"Female\"\r\n\t\t\t ],\r\n\t\t\t \"data\": [\r\n\t\t\t ]\r\n\t\t\t };\r\n\r\n\t\t\t angular.forEach(dataCalc, function(vals, species){\r\n\t\t\t data['data'].push({\r\n\t\t\t \"x\": species,\r\n\t\t\t \"y\": [vals.total,vals.males,vals.females],\r\n\t\t\t });\r\n\t\t\t });\r\n\r\n\t\t\t\t//console.log(\"Inside chartservices.js, CreelSurvey, at end of getChartData, data is next...\");\r\n\t\t\t //console.dir(data);\r\n\r\n\t\t\t return data;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tbuildChart: function(){\r\n\r\n\t\t\t},\r\n\r\n };\r\n\r\n return service;\r\n }\r\n];\r\n\r\nexport default creelsurvey_chartservice;\r\n","import {getByField} from \"../../../common/common-functions\";\r\nimport {METADATA_PROPERTY_SUMMARYIMAGE, METADATA_PROPERTY_SUMMARYIMAGE_HTML} from \"../../../../config\";\r\n\r\nvar modal_choose_summary_images = ['$scope', '$uibModalInstance', 'ProjectService',\r\n function ($scope, $uibModalInstance, ProjectService){\r\n\r\n var galleryLinkTemplate = '' +\r\n '
' +\r\n '' +\r\n '
';\r\n $scope.chooseSummaryImagesSelection = [];\r\n\r\n $scope.chooseSummaryImagesGallery = {\r\n data: 'project.Images',\r\n columnDefs:\r\n [\r\n {field:'Name',displayName: 'File', cellTemplate: galleryLinkTemplate},\r\n {field: 'Title'},\r\n {field: 'Description'},\r\n //{field: 'Size'},\r\n ],\r\n multiSelect: true,\r\n selectedItems: $scope.chooseSummaryImagesSelection\r\n\r\n };\r\n\r\n\r\n $scope.save = function(){\r\n\r\n if($scope.chooseSummaryImagesSelection.length == 0)\r\n {\r\n alert(\"Please choose at least one image to save by clicking on it and try again.\");\r\n return;\r\n }\r\n\r\n //is there already a metadata record?\r\n var imgmd = getByField($scope.project.Metadata, METADATA_PROPERTY_SUMMARYIMAGE, \"MetadataPropertyId\");\r\n var imgmd_html = getByField($scope.project.Metadata, METADATA_PROPERTY_SUMMARYIMAGE_HTML, \"MetadataPropertyId\");\r\n\r\n if(!imgmd)\r\n {\r\n imgmd = { MetadataPropertyId: METADATA_PROPERTY_SUMMARYIMAGE, UserId: $scope.Profile.Id };\r\n $scope.project.Metadata.push(imgmd);\r\n }\r\n\r\n if(!imgmd_html)\r\n {\r\n imgmd_html = { MetadataPropertyId: METADATA_PROPERTY_SUMMARYIMAGE_HTML, UserId: $scope.Profile.Id };\r\n $scope.project.Metadata.push(imgmd_html);\r\n }\r\n\r\n var selections = [];\r\n var the_html = \"\";\r\n\r\n for (var i = $scope.chooseSummaryImagesSelection.length - 1; i >= 0; i--) {\r\n var selection = $scope.chooseSummaryImagesSelection[i];\r\n\r\n //whip up the html .. might be good to have this in a pattern somewhere external!\r\n the_html += \"
\";\r\n the_html += \"\";\r\n if (selection.Description)\r\n the_html += \"

\" + selection.Description + \"

\";\r\n the_html += \"
\";\r\n\r\n selections.push(selection.Id);\r\n\r\n }\r\n\r\n imgmd_html.Values = the_html;\r\n imgmd.Values = selections.toString();\r\n\r\n //console.dir($scope.project.Metadata);\r\n\r\n var promise = ProjectService.saveProject($scope.project);\r\n promise.$promise.then(function(){\r\n $scope.reloadProject();\r\n $uibModalInstance.dismiss();\r\n });\r\n\r\n };\r\n\r\n\r\n $scope.cancel = function(){\r\n $uibModalInstance.dismiss();\r\n };\r\n }\r\n];\r\n\r\nexport default modal_choose_summary_images;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'angular';\r\nimport {\r\n convertStringArrayToNormalString,\r\n convertStringWithSeparatorsAndReturnsToNormalString,\r\n convertStringWithSeparatorsToStringWithSeparatorsAndReturns,\r\n getDateFromDate, isArray,\r\n removeStringItemFromList\r\n} from \"../../../../core/common/common-functions\";\r\nimport {modalFiles_setupControllerForFileChooserModal} from \"../../../../core/common/components/file/modal-files\";\r\nimport {METADATA_ENTITY_OLCEVENTS, METADATA_ENTITY_PROJECT} from \"../../../../config\";\r\n\r\n\r\nvar modal_add_olc_event = ['$scope', '$rootScope', '$uibModalInstance', '$uibModal', 'DatasetService', 'SubprojectService', 'CommonService', 'ServiceUtilities',\r\n '$filter', 'Upload', '$location', '$anchorScroll',\r\n function ($scope, $rootScope, $uibModalInstance, $uibModal, DatasetService, SubprojectService, CommonService, ServiceUtilities,\r\n $filter, $upload, $location, $anchorScroll) {\r\n\r\n console.log(\"Inside ModalAddOlcEventCtrl...\");\r\n\r\n $scope.filesWithErrors = 0;\r\n\r\n $scope.setupOlcMetaFields = function () {\r\n\r\n // row.column (from database) and metadata name\r\n $scope.olcMetaFieldColumns = {\r\n \"Boundary\": \"Boundary\",\r\n \"SignificantArea\": \"Significant Area\",\r\n \"MiscellaneousContext\": \"Miscellaneous Context\"\r\n };\r\n\r\n if ($scope.project.MetaFields)\r\n return;\r\n\r\n var olcfields = CommonService.getMetadataFor($scope.project.Id, METADATA_ENTITY_OLCEVENTS);\r\n olcfields.$promise.then(function () {\r\n\r\n $scope.project.MetaFields = [];\r\n\r\n var projFields = CommonService.getMetadataFor($scope.project.Id, METADATA_ENTITY_PROJECT);\r\n\r\n projFields.$promise.then(function () {\r\n\r\n //projFields.forEach(function (projfield) {\r\n // if (projfield.Name == \"Boundary\" || projfield.Name == \"Significant Area\") || (olcfield.Name !== \"MiscellensiousContext\")) { //include only these from proj\r\n // projfield.isOlc = true;\r\n // $scope.project.MetaFields.push(projfield);\r\n // }\r\n //});\r\n\r\n olcfields.forEach(function (olcfield) {\r\n if ((olcfield.Name === \"Boundary\") || (olcfield.Name === \"SignificantArea\") || (olcfield.Name === \"MiscellensiousContext\")) { //include\r\n olcfields.isHabitat = true;\r\n $scope.project.MetaFields.push(olcfield);\r\n }\r\n });\r\n\r\n $scope.project.MetaFields.forEach(function (field) {\r\n field.DbColumnName = field.Label = field.Name;\r\n });\r\n\r\n console.dir($scope.project.MetaFields);\r\n console.dir($scope.event_row);\r\n\r\n });\r\n\r\n });\r\n };\r\n\r\n //mixin the properties and functions to enable the modal file chooser for this controller...\r\n modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.viewSubproject.Files); //\"EventFiles\"\r\n\r\n var intCount = 0;\r\n if ((typeof $scope.viewSubproject !== 'undefined') && ($scope.viewSubproject !== null))\r\n $rootScope.subprojectId = $scope.viewSubproject.Id;\r\n {\r\n $scope.setupOlcMetaFields();\r\n }\r\n var foundIt = false;\r\n\r\n // If event_row.Id is greater than 0, we're editing...\r\n if ($scope.event_row.Id > 0) {\r\n $scope.header_message = \"Edit Event for Catalog Number \" + $scope.viewSubproject.CatalogNumber;\r\n }\r\n else {\r\n if ((typeof $scope.viewSubproject !== 'undefined') && ($scope.viewSubproject !== null))\r\n $scope.header_message = \"Add Event to Project \" + $scope.viewSubproject.CatalogNumber;\r\n else if ((typeof $scope.CatalogNumber !== 'undefined') && ($scope.CatalogNumber !== null))\r\n $scope.header_message = \"Add Event to Project \" + $scope.CatalogNumber;\r\n }\r\n\r\n if ((typeof $scope.event_row.Boundary !== 'undefined') && ($scope.event_row.Boundary !== null)) {\r\n\r\n try {\r\n $scope.event_row.Boundary = JSON.parse($scope.event_row.Boundary);\r\n } catch (e) {\r\n console.log(\"$scope.event_row.Boundary is already parsed into JSON...\");\r\n }\r\n //$scope.event_row.strBoundaries = \"\";\r\n\r\n //$scope.event_row.Boundary.forEach(function (boundary) {\r\n // $scope.event_row.strBoundaries += boundary + \";\\n\";\r\n //});\r\n\r\n }\r\n\r\n if ((typeof $scope.event_row.OtherBoundary !== 'undefined') && ($scope.event_row.OtherBoundary !== null)) {\r\n\r\n $scope.showOtherBoundary = true;\r\n }\r\n else {\r\n $scope.showOtherBoundary = false;\r\n }\r\n\r\n if ((typeof $scope.event_row.SignificantArea !== 'undefined') && ($scope.event_row.SignificantArea !== null)) {\r\n\r\n //$scope.event_row.SignificantArea = JSON.parse($scope.event_row.SignificantArea);\r\n try {\r\n $scope.event_row.SignificantArea = JSON.parse($scope.event_row.SignificantArea);\r\n } catch (e) {\r\n console.log(\"$scope.event_row.SignificantArea is already parsed into JSON...\");\r\n }\r\n }\r\n\r\n if ((typeof $scope.event_row.MiscellaneousContext !== 'undefined') && ($scope.event_row.MiscellaneousContext !== null)) {\r\n\r\n //$scope.event_row.MiscellaneousContext = JSON.parse($scope.event_row.MiscellaneousContext);\r\n try {\r\n $scope.event_row.MiscellaneousContext = JSON.parse($scope.event_row.MiscellaneousContext);\r\n } catch (e) {\r\n console.log(\"$scope.event_row.MiscellaneousContext is already parsed into JSON...\");\r\n }\r\n }\r\n\r\n if ((typeof $scope.event_row.SurveyDates !== 'undefined') && ($scope.event_row.SurveyDates !== null)) {\r\n if (!isArray($scope.event_row.SurveyDates))\r\n $scope.event_row.SurveyDates = convertStringWithSeparatorsToStringWithSeparatorsAndReturns($scope.event_row.SurveyDates);\r\n else {\r\n // If tmpArySurveyDates is an array (a,b,c), we need it to be a string like this (a;b;c;) to display properly.\r\n var strSurveyDates = convertStringArrayToNormalString($scope.event_row.SurveyDates);\r\n\r\n $scope.event_row.SurveyDates = convertStringWithSeparatorsToStringWithSeparatorsAndReturns(strSurveyDates);\r\n }\r\n }\r\n\r\n if ((typeof $scope.event_row.Reference !== 'undefined') && ($scope.event_row.Reference !== null)) {\r\n if (!isArray($scope.event_row.Reference))\r\n $scope.event_row.Reference = convertStringWithSeparatorsToStringWithSeparatorsAndReturns($scope.event_row.Reference);\r\n else {\r\n // If tmpArySurveyDates is an array (a,b,c), we need it to be a string like this (a;b;c;) to display properly.\r\n var strReference = convertStringArrayToNormalString($scope.event_row.Reference);\r\n\r\n $scope.event_row.Reference = convertStringWithSeparatorsToStringWithSeparatorsAndReturns(strReference);\r\n }\r\n }\r\n\r\n if ((typeof $scope.event_row.Tasks !== 'undefined') && ($scope.event_row.Tasks !== null)) {\r\n if (!isArray($scope.event_row.Tasks))\r\n $scope.event_row.Tasks = convertStringWithSeparatorsToStringWithSeparatorsAndReturns($scope.event_row.Tasks);\r\n else {\r\n // If tmpArySurveyDates is an array (a,b,c), we need it to be a string like this (a;b;c;) to display properly.\r\n var strTasks = convertStringArrayToNormalString($scope.event_row.Tasks);\r\n\r\n $scope.event_row.Tasks = convertStringWithSeparatorsToStringWithSeparatorsAndReturns(strTasks);\r\n }\r\n }\r\n\r\n if ((typeof $scope.event_row.Description !== 'undefined') && ($scope.event_row.Description !== null)) {\r\n //$scope.event_row.Description = convertStringWithSeparatorsToStringWithSeparatorsAndReturns($scope.event_row.Description);\r\n\r\n if (!isArray($scope.event_row.Description))\r\n $scope.event_row.Description = convertStringWithSeparatorsToStringWithSeparatorsAndReturns($scope.event_row.Description);\r\n else {\r\n // If tmpArySurveyDates is an array (a,b,c), we need it to be a string like this (a;b;c;) to display properly.\r\n var strDescription = convertStringArrayToNormalString($scope.event_row.Description);\r\n\r\n $scope.event_row.Description = convertStringWithSeparatorsToStringWithSeparatorsAndReturns(strDescription);\r\n }\r\n }\r\n\r\n if ((typeof $scope.event_row.TwnRngSec !== 'undefined') && ($scope.event_row.TwnRngSec !== null)) {\r\n if (!isArray($scope.event_row.TwnRngSec))\r\n $scope.event_row.TwnRngSec = convertStringWithSeparatorsToStringWithSeparatorsAndReturns($scope.event_row.TwnRngSec);\r\n else {\r\n // If tmpArySurveyDates is an array (a,b,c), we need it to be a string like this (a;b;c;) to display properly.\r\n var strTwnRngSec = convertStringArrayToNormalString($scope.event_row.TwnRngSec);\r\n\r\n $scope.event_row.TwnRngSec = convertStringWithSeparatorsToStringWithSeparatorsAndReturns(strTwnRngSec);\r\n }\r\n }\r\n\r\n //console.log(\"$scope.event_row is next...\");\r\n //console.dir($scope.event_row);\r\n\r\n $scope.field = {\r\n DbColumnName: \"FileAttach\"\r\n };\r\n\r\n //callback that is called from modalFile to do the actual file removal (varies by module)\r\n $scope.modalFile_doRemoveFile = function (file_to_remove, saveRow) {\r\n return SubprojectService.deleteOlcEventFile($scope.projectId, $scope.subprojectId, saveRow.Id, file_to_remove);\r\n };\r\n\r\n $scope.selectBoundary = function () {\r\n $scope.showOtherBoundary = false;\r\n\r\n // Walk the list of options the user has selected, and see if one of them is Other.\r\n $scope.event_row.Boundary.forEach(function (item) {\r\n if (item === \"Other\")\r\n $scope.showOtherBoundary = true;\r\n });\r\n\r\n };\r\n\r\n $scope.addBoundary = function () {\r\n console.log(\"+B clicked...\");\r\n console.log(\"$scope.event_row.strBoundaries (at top of addBoundary) = \" + $scope.event_row.strBoundaries);\r\n\r\n if (typeof $scope.event_row.Boundary === 'undefined')\r\n return;\r\n\r\n if (typeof $scope.event_row.strBoundaries === 'undefined')\r\n $scope.event_row.strBoundaries = \"\";\r\n\r\n // We will add a new line at the end, so that the string presents well on the page.\r\n //if ($scope.row.Collaborators === \"Other\") {\r\n // $scope.row.strCollaborators += $scope.row.OtherCollaborators + \";\\n\";\r\n //}\r\n //else {\r\n $scope.event_row.strBoundaries += $scope.event_row.Boundary + \";\\n\";\r\n //}\r\n\r\n console.log(\"$scope.event_row.strBoundaries (at bottom of addBoundary) = \" + $scope.event_row.strBoundaries);\r\n };\r\n\r\n $scope.removeBoundary = function () {\r\n console.log(\"-B clicked...\");\r\n console.log(\"$scope.event_row.strBoundaries before stripping = \" + $scope.event_row.strBoundaries);\r\n\r\n $scope.event_row.strBoundaries = convertStringWithSeparatorsAndReturnsToNormalString($scope.event_row.strBoundaries);\r\n\r\n var aryBoundaries = $scope.event_row.strBoundaries.split(\";\");\r\n\r\n $scope.event_row.strBoundaries = removeStringItemFromList($scope.event_row.Boundary, aryBoundaries);\r\n\r\n console.log(\"Finished.\");\r\n };\r\n\r\n //called when the user clicks \"save\"\r\n $scope.save = function () {\r\n console.log(\"Inside ModalAddOlcEventCtrl, save...\");\r\n\r\n // Areas\r\n console.log(\"$scope.event_row.strAreas = \" + $scope.event_row.strAreas);\r\n console.log(\"type of $scope.event_row.strAreas = \" + typeof $scope.event_row.strAreas);\r\n\r\n console.log(\"$scope.event_row.DocumentType = \" + $scope.event_row.DocumentType);\r\n var saveRow = angular.copy($scope.event_row);\r\n console.log(\"saveRow is next, before checking the Id...\");\r\n console.dir(saveRow);\r\n if (!saveRow.Id)\r\n saveRow.Id = 0;\r\n\r\n /*\r\n //copy the bound vars into the column fields to save\r\n if ($scope.olcMetaFieldColumns) {\r\n Object.keys($scope.olcMetaFieldColumns).forEach(function (col) {\r\n try {\r\n //saveRow[col] = angular.toJson($scope.event_row[$scope.olcMetaFieldColumns[col]]);\r\n saveRow[col] = angular.toJson($scope.event_row[$scope.olcMetaFieldColumns[col]]);\r\n delete saveRow[$scope.olcMetaFieldColumns[col]];\r\n } catch (e) {\r\n console.warn(\"had a problem but carrying on...\");\r\n console.dir(e);\r\n }\r\n });\r\n }\r\n */\r\n\r\n var subprojectId = 0;\r\n if ($scope.viewSubproject)\r\n subprojectId = $scope.viewSubproject.Id;\r\n else\r\n subprojectId = $scope.subprojectId;\r\n\r\n //this gets passed along via api call... TODO: this is just to get going...\r\n var data = {\r\n ProjectId: $scope.project.Id,\r\n SubprojectId: subprojectId,\r\n DatastoreTablePrefix: $scope.DatastoreTablePrefix,\r\n };\r\n\r\n var target = '/api/v1/olcsubproject/uploadolcsubprojectfile';\r\n\r\n $scope.handleFilesToUploadRemove(saveRow, data, target, $upload, $rootScope, $scope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n\r\n\r\n };\r\n\r\n //call back from save above once the files are done processing and we're ready to save the item\r\n $scope.modalFile_saveParentItem = function (saveRow) {\r\n //prepare to save the OLC event\r\n // Now let's handle the other fields on the form.\r\n console.log(\"typeof saveRow.DocumentDate = \" + typeof saveRow.DocumentDate);\r\n if ((typeof saveRow.DocumentDate !== 'undefined') && (saveRow.DocumentDate !== null) && (typeof saveRow.DocumentDate !== \"string\")) {\r\n console.log(\"saveRow.DocumentDate = \" + saveRow.DocumentDate);\r\n var strDocumentDate = ServiceUtilities.toExactISOString(saveRow.DocumentDate);\r\n console.log(\"strDocumentDate = \" + strDocumentDate);\r\n saveRow.DocumentDate = ServiceUtilities.extractDateFromString(strDocumentDate);\r\n console.log(\"saveRow.DocumentDate = \" + saveRow.DocumentDate);\r\n }\r\n\r\n console.log(\"typeof saveRow.DateDiscovered = \" + typeof saveRow.DateDiscovered);\r\n if ((typeof saveRow.DateDiscovered !== 'undefined') && (saveRow.DateDiscovered !== null) && (typeof saveRow.DateDiscovered !== \"string\")) {\r\n var strDateDiscovered = ServiceUtilities.toExactISOString(saveRow.DateDiscovered);\r\n console.log(\"strDateDiscovered = \" + strDateDiscovered);\r\n saveRow.DateDiscovered = ServiceUtilities.extractDateFromString(strDateDiscovered);\r\n console.log(\"saveRow.DateDiscovered = \" + saveRow.DateDiscovered);\r\n }\r\n\r\n if ((typeof saveRow.SurveyDates !== 'undefined') && (saveRow.SurveyDates !== null)) {\r\n console.log(\"saveRow.SurveyDates = \" + saveRow.SurveyDates);\r\n\r\n // First, strip out the new line characters.\r\n //saveRow.SurveyDates = saveRow.SurveyDates.replace(/(\\r\\n|\\r|\\n)/gm, \"\");\r\n saveRow.SurveyDates = convertStringWithSeparatorsAndReturnsToNormalString(saveRow.SurveyDates);\r\n console.log(\"saveRow.SurveyDates after stripping = \" + saveRow.SurveyDates);\r\n\r\n // We don't want to send this, so delete it.\r\n saveRow.SurveyDate = undefined;\r\n }\r\n\r\n if ((typeof saveRow.Description !== 'undefined') && (saveRow.Description !== null)) {\r\n console.log(\"saveRow.Description = \" + saveRow.Description);\r\n\r\n // First, strip out the new line characters.\r\n //saveRow.SurveyDates = saveRow.SurveyDates.replace(/(\\r\\n|\\r|\\n)/gm, \"\");\r\n saveRow.Description = convertStringWithSeparatorsAndReturnsToNormalString(saveRow.Description);\r\n console.log(\"saveRow.Description after stripping = \" + saveRow.Description);\r\n\r\n // We don't want to send this, so delete it.\r\n saveRow.DescriptionItem = undefined;\r\n }\r\n\r\n if ((typeof saveRow.TwnRngSec !== 'undefined') && (saveRow.TwnRngSec !== null)) {\r\n console.log(\"saveRow.TwnRngSec = \" + saveRow.TwnRngSec);\r\n\r\n // If the TwnRngSec does not end with a \";\", add it to the text.\r\n saveRow.TwnRngSec = saveRow.TwnRngSec.trim();\r\n if (saveRow.TwnRngSec.substring(saveRow.TwnRngSec.length) !== \";\")\r\n saveRow.TwnRngSec += \";\";\r\n\r\n // First, strip out the new line characters.\r\n //saveRow.SurveyDates = saveRow.SurveyDates.replace(/(\\r\\n|\\r|\\n)/gm, \"\");\r\n saveRow.Description = convertStringWithSeparatorsAndReturnsToNormalString(saveRow.Description);\r\n console.log(\"saveRow.Description after stripping = \" + saveRow.Description);\r\n\r\n // We don't want to send this, so delete it.\r\n saveRow.DescriptionItem = undefined;\r\n }\r\n\r\n //saveRow.Boundaries = JSON.stringify(saveRow.Boundaries);\r\n //console.log(\"saveRow.Boundaries = \" + saveRow.Boundaries);\r\n\r\n // Wipe the field, before rebuilding it with what we want to save.\r\n //saveRow.Boundary = [];\r\n\r\n /*\r\n if ((typeof saveRow.strBoundaries !== 'undefined') && (saveRow.strBoundaries !== null) && (saveRow.strBoundaries.length > 0)) {\r\n $rootScope.boundaryPresent = $scope.boundaryPresent = true;\r\n var strBoundaries = saveRow.strBoundaries.replace(/(\\r\\n|\\r|\\n)/gm, \"\"); // Remove all newlines (used for presentation).\r\n console.log(\"strBoundaries = \" + strBoundaries);\r\n var aryBoundaries = saveRow.strBoundaries.split(\";\"); //\r\n //aryCollaborators.splice(-1, 1);\r\n\r\n angular.forEach(aryBoundaries, function (item) {\r\n //After the split on \";\", one of the lines is a newline. We need to watch for and omit that line.\r\n //console.log(\"item = X\" + item + \"X\");\r\n //item = item.replace(/(\\r\\n|\\r|\\n)/gm, \"\");\r\n item = item.replace(/\\n/g, \"\");\r\n //console.log(\"item = X\" + item + \"X\");\r\n\r\n if (item.length > 0) {\r\n var boundaryOption = new Object();\r\n boundaryOption.Id = 0;\r\n boundaryOption.Name = \"\";\r\n\r\n boundaryOption.Name = item.trim();\r\n //console.log(\"collaboratorOption.Name = \" + collaboratorOption.Name);\r\n\r\n //saveRow.Boundary.push(boundaryOption);\r\n saveRow.Boundary.push(item.trim());\r\n }\r\n });\r\n saveRow.Boundary = JSON.stringify(saveRow.Boundary);\r\n saveRow.strBoundaries = undefined;\r\n }\r\n */\r\n\r\n if ((typeof saveRow.Boundary !== 'undefined') && (saveRow.Boundary !== null)) {\r\n saveRow.Boundary = JSON.stringify(saveRow.Boundary);\r\n console.log(\"saveRow.Boundary = \" + saveRow.Boundary);\r\n }\r\n\r\n if ((typeof saveRow.SignificantArea !== 'undefined') && (saveRow.SignificantArea !== null)) {\r\n saveRow.SignificantArea = JSON.stringify(saveRow.SignificantArea);\r\n console.log(\"saveRow.SignificantArea = \" + saveRow.SignificantArea);\r\n }\r\n\r\n if ((typeof saveRow.MiscellaneousContext !== 'undefined') && (saveRow.MiscellaneousContext !== null)) {\r\n saveRow.MiscellaneousContext = JSON.stringify(saveRow.MiscellaneousContext);\r\n console.log(\"saveRow.MiscellaneousContext = \" + saveRow.MiscellaneousContext);\r\n }\r\n\r\n console.log(\"saveRow is next, after processing dates...\");\r\n console.dir(saveRow);\r\n\r\n //throw (\"Stopping right here...\");\r\n\r\n // Response Type: If the user selected Other, we must use the name they supplied in OtherResponseType.\r\n //if ((saveRow.OtherResponseType) && (typeof saveRow.OtherResponseType !== 'undefined'))\r\n //if (saveRow.ResponseType === \"Other\") {\r\n // saveRow.ResponseType = saveRow.OtherResponseType;\r\n // saveRow.OtherResponseType = 'undefined'; // Throw this away, because we do not want to save it; no database field or it.\r\n //}\r\n\r\n //console.log(\"$scope is next...\");\r\n //console.dir($scope);\r\n\r\n\r\n var save_item_promise = SubprojectService.saveOlcEvent($scope.project.Id, $scope.viewSubproject.Id, saveRow);\r\n\r\n //setup the promise.then that runs after the olc event is saved...\r\n if (typeof save_item_promise !== 'undefined') {\r\n\r\n save_item_promise.$promise.then(function () {\r\n //did we edit or add new?\r\n if (saveRow.Id === 0) //we saved a new one!\r\n $scope.postAddOlcEventUpdateGrid(save_item_promise);\r\n else //we edited one!\r\n $scope.postEditOlcEventUpdateGrid(save_item_promise);\r\n\r\n\r\n console.log(\"all done saving olc event!\");\r\n\r\n // @ts-ignore\r\n if (!$scope.filesToUpload[$scope.file_field] && !$scope.removedFiles.length > 0) {\r\n $uibModalInstance.dismiss();\r\n }\r\n\r\n });\r\n\r\n console.log(\"1 typeof $scope.errors = \" + typeof $scope.errors + \", $scope.fileCount = \" + $scope.fileCount + \", $scope.fileProgress = \" + $scope.fileProgress);\r\n if ($scope.fileCount === 0) {\r\n $scope.loading = false; // Stop the fish spinner.\r\n $scope.showCloseButton = true;\r\n $scope.showCancelButton = false;\r\n $scope.showFormItems = false;\r\n }\r\n\r\n if ($scope.filesWithErrors === 0)\r\n $scope.UploadUserMessage = \"All actions successful.\";\r\n else\r\n $scope.UploadUserMessage = \"There was a problem uploading a file. Please try again or contact the Helpdesk if this issue continues.\";\r\n\r\n }\r\n };\r\n\r\n $scope.modalFile_closeParentItem = function () {\r\n console.log(\"Inside $scope.modalFile_closeParentItem...\");\r\n\r\n if ($scope.fileCount === 0) {\r\n $scope.loading = false; // Stop the fish spinner.\r\n $scope.showCloseButton = true;\r\n $scope.showCancelButton = false;\r\n $scope.showFormItems = false;\r\n }\r\n\r\n if ($scope.filesWithErrors === 0)\r\n $scope.UploadUserMessage = \"All actions successful.\";\r\n else\r\n $scope.UploadUserMessage = \"There was a problem moving a file. Please try again or contact the Helpdesk if this issue continues.\";\r\n\r\n $scope.close();\r\n };\r\n\r\n $scope.close = function () {\r\n console.log(\"Inside $scope.close...\");\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n $scope.cancel = function () {\r\n\r\n if ($scope.originalExistingFiles && $scope.originalExistingFiles.hasOwnProperty($scope.file_field)) {\r\n $scope.event_row.EventFiles = $scope.originalExistingFiles[$scope.file_field];\r\n //console.log(\"setting EventFiles to \" + $scope.originalExistingFiles[$scope.file_field]);\r\n }\r\n\r\n if ((typeof $scope.event_row.SurveyDates !== 'undefined') && ($scope.event_row.SurveyDates !== null))\r\n if (isArray($scope.event_row.SurveyDates))\r\n $scope.event_row.SurveyDates = convertStringArrayToNormalString($scope.event_row.SurveyDates);\r\n else\r\n $scope.event_row.SurveyDates = convertStringWithSeparatorsAndReturnsToNormalString($scope.event_row.SurveyDates);\r\n\r\n if ((typeof $scope.event_row.Description !== 'undefined') && ($scope.event_row.Description !== null))\r\n $scope.event_row.Description = convertStringWithSeparatorsAndReturnsToNormalString($scope.event_row.Description);\r\n\r\n if ($scope.event_row.FileAttach)\r\n $scope.event_row.FileAttach = undefined;\r\n\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n $scope.migrateEvent = function () {\r\n console.log(\"Inside migrateEvent...\")\r\n console.log(\"$scope is next...\");\r\n console.dir($scope.event_row);\r\n\r\n $rootScope.SubprojectId = $scope.SubprojectId = $scope.event_row.SubprojectId;\r\n //console.log(\"ok subproject set: \");\r\n //console.dir($scope.viewSubproject);\r\n\r\n //$scope.event_row = event_row;\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/olc/components/events/templates/modal-migrate-olc-event.html',\r\n controller: 'OlcMigrateEventCtrl',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n $scope.addDescription = function () {\r\n console.log(\"+D clicked...\");\r\n console.log(\"$scope.row.DescriptionItem = \" + $scope.event_row.DescriptionItem);\r\n\r\n if ((typeof $scope.event_row.DescriptionItem === 'undefined') || ($scope.event_row.DescriptionItem === null))\r\n return;\r\n\r\n // We will add a new line at the end, so that the string presents well on the page.\r\n if ((typeof $scope.event_row.Description === 'undefined') || ($scope.event_row.Description === null))\r\n $scope.event_row.Description = \"\";\r\n\r\n $scope.event_row.Description += $scope.event_row.DescriptionItem + \";\\n\";\r\n\r\n console.log(\"$scope.event_row.Description = \" + $scope.event_row.Description);\r\n };\r\n\r\n $scope.removeDescription = function () {\r\n console.log(\"-D clicked...\");\r\n console.log(\"$scope.event_row.Description before stripping = \" + $scope.event_row.Description);\r\n\r\n $scope.event_row.Description = convertStringWithSeparatorsAndReturnsToNormalString($scope.event_row.Description);\r\n\r\n var aryDescription = $scope.event_row.Description.split(\";\");\r\n\r\n $scope.event_row.Description = removeStringItemFromList($scope.event_row.DescriptionItem, $scope.event_row.Description);\r\n\r\n };\r\n\r\n $scope.addSurveyDate = function () {\r\n console.log(\"+SD clicked...\");\r\n console.log(\"$scope.row.SurveyDate = \" + $scope.event_row.SurveyDate);\r\n\r\n if ((typeof $scope.event_row.SurveyDate === 'undefined') || ($scope.event_row.SurveyDate === null))\r\n return;\r\n\r\n if ((typeof $scope.event_row.SurveyDates === 'undefined') || ($scope.event_row.SurveyDates === null))\r\n $scope.event_row.SurveyDates = \"\";\r\n\r\n // We will add a new line at the end, so that the string presents well on the page.\r\n $scope.event_row.SurveyDates += getDateFromDate($scope.event_row.SurveyDate) + \";\\n\";\r\n\r\n console.log(\"$scope.event_row.SurveyDates = \" + $scope.event_row.SurveyDates);\r\n };\r\n\r\n $scope.removeSurveyDate = function () {\r\n console.log(\"-SD clicked...\");\r\n console.log(\"$scope.row.SurveyDates before stripping = \" + $scope.event_row.SurveyDates);\r\n\r\n // First, strip out the new line characters.\r\n $scope.event_row.SurveyDates = $scope.event_row.SurveyDates.replace(/(\\r\\n|\\r|\\n)/gm, \"\");\r\n console.log(\"$scope.event_row.SurveyDates after stripping = \" + $scope.event_row.SurveyDates);\r\n\r\n // Note, we still have the trailing semicolon.\r\n // Convert the string to an array, so that we can easily remove the applicable funding agency from the string.\r\n var arySurveyDates = $scope.event_row.SurveyDates.split(\";\");\r\n\r\n // Next, get rid of that trailing semicolon.\r\n arySurveyDates.splice(-1, 1);\r\n console.dir(arySurveyDates);\r\n\r\n // Now we can continue with the delete action.\r\n var arySurveyDatesLength = arySurveyDates.length;\r\n\r\n for (var i = 0; i < arySurveyDatesLength; i++) {\r\n console.log(\"arySurveyDates[i] = \" + arySurveyDates[i]);\r\n var utcOffset = moment().utcOffset();\r\n var searchDate = null;\r\n\r\n if (utcOffset === -420) {\r\n\r\n searchDate = moment($scope.event_row.SurveyDate).add(1,'days').format('YYYY-MM-DD');\r\n }\r\n else if (utcOffset === -480)\r\n searchDate = moment($scope.event_row.SurveyDate).add(1080, 'minutes').format('YYYY-MM-DD');\r\n\r\n searchDate = getDateFromDate(searchDate);\r\n\r\n console.log(\"searchDate = \" + searchDate);\r\n //var searchDate = getDateFromDate($scope.event_row.SurveyDate);\r\n var listDate = arySurveyDates[i];\r\n\r\n //if (arySurveyDates[i].indexOf(moment($scope.event_row.SurveyDate, \"YYYY-MM-DD\")) > -1) {\r\n if (listDate.indexOf(searchDate) > -1) {\r\n console.log(\"Found the item...\");\r\n arySurveyDates.splice(i, 1);\r\n console.log(\"Removed the item.\");\r\n\r\n $scope.event_row.SurveyDates = \"\";\r\n console.log(\"Wiped $scope.event_row.SurveyDates...\");\r\n\r\n // Rebuild the string now, adding the semicolon and newline after every line.\r\n angular.forEach(arySurveyDates, function (item) {\r\n $scope.event_row.SurveyDates += item + \";\\n\";\r\n console.log(\"Added item...\");\r\n });\r\n\r\n // Since we found the item, skip to then end to exit.\r\n i = arySurveyDatesLength;\r\n }\r\n }\r\n console.log(\"Finished.\");\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_add_olc_event;\r\n","import * as moment from 'moment';\r\n\r\n// declare const jQuery: any;\r\nimport * as jQuery from 'jquery';\r\nvar modal_add_permitperson = ['$scope', '$uibModalInstance', 'PermitService', 'GridService',\r\n function ($scope, $uibModalInstance, PermitService, GridService) {\r\n\r\n $scope.header_message = \"Edit Contact Person\";\r\n\r\n $scope.row = $scope.person_modal;\r\n\r\n //if we're not editing then we are creating a new one\r\n if (!$scope.row) {\r\n $scope.header_message = \"Add Contact Person\";\r\n $scope.row = { Id: 0, IsMailingDifferent: false };\r\n }\r\n\r\n //console.dir($scope.row);\r\n\r\n $scope.row.LastUpdated = moment().format('L');\r\n $scope.row.UpdatedBy = $scope.Profile.Fullname;\r\n\r\n $scope.updateFullname = function () {\r\n $scope.row.FullName = ($scope.row.Prefix) ? $scope.row.Prefix + \" \" : \"\";\r\n $scope.row.FullName += ($scope.row.FirstName) ? $scope.row.FirstName + \" \" : \"\";\r\n $scope.row.FullName += ($scope.row.LastName) ? $scope.row.LastName : \"\";\r\n $scope.row.FullName += ($scope.row.Suffix) ? \", \" + $scope.row.Suffix : \"\";\r\n };\r\n\r\n $scope.save = function () {\r\n\r\n var save_result = PermitService.savePerson($scope.row);\r\n\r\n save_result.$promise.then(function () {\r\n $uibModalInstance.close(save_result);\r\n });\r\n };\r\n\r\n $scope.onHeaderEditingStopped = function (field, logerrors) {\r\n //build event to send for validation\r\n console.log(\"onHeaderEditingStopped: \" + field.DbColumnName);\r\n var event = {\r\n colDef: field,\r\n node: { data: $scope.row },\r\n scope: $scope,\r\n value: $scope.row[field.DbColumnName],\r\n type: 'onHeaderEditingStopped'\r\n };\r\n\r\n GridService.validateCell(event);\r\n GridService.fireRule(\"OnChange\", event);\r\n\r\n if ((field.DbColumnName == \"Organization\") ||\r\n (field.DbColumnName == \"Prefix\") ||\r\n (field.DbColumnName == \"FirstName\") ||\r\n (field.DbColumnName == \"LastName\") ||\r\n (field.DbColumnName == \"Suffix\")\r\n )\r\n {\r\n // Organization present; but prefix, first name, last name, and suffix blank.\r\n // We don't want the organization name all by itself, with a trailing -, like this: UPPR-\r\n if ((($scope.row.Prefix == null) || ($scope.row.Prefix == \"\")) &&\r\n (($scope.row.FirstName == null) || ($scope.row.FirstName == \"\")) && \r\n (($scope.row.LastName == null) || ($scope.row.LastName == \"\")) &&\r\n (($scope.row.Suffix == null) || ($scope.row.Suffix == \"\"))\r\n )\r\n {\r\n $scope.row.FullName = (($scope.row.Organization) ? $scope.row.Organization : \"\");\r\n }\r\n else // Org present; and prefix, first name, last name, and suffix may or may not be present.\r\n {\r\n $scope.row.FullName = (($scope.row.Organization) ? $scope.row.Organization + \"-\" : \"\") +\r\n (($scope.row.Prefix) ? $scope.row.Prefix + \" \" : \"\") +\r\n (($scope.row.FirstName) ? $scope.row.FirstName + \" \" : \"\") +\r\n (($scope.row.LastName) ? $scope.row.LastName : \"\") +\r\n (($scope.row.Suffix) ? \"-\" + $scope.row.Suffix : \"\");\r\n }\r\n\r\n $scope.row.FullName = $scope.row.FullName.trim();\r\n }\r\n }\r\n\r\n $scope.toggleMailingAddress = function(){\r\n if($scope.row.IsMailingDifferent){\r\n console.log(\"showing mailing fields\")\r\n jQuery(\"[id^='field-Mailing']\").show();\r\n }\r\n else {\r\n console.log(\"hiding mailing fields\")\r\n jQuery(\"[id^='field-Mailing']\").hide();\r\n }\r\n\r\n }\r\n\r\n $uibModalInstance.opened.then(function(){\r\n setTimeout(function(){\r\n $scope.toggleMailingAddress();\r\n },500)\r\n\r\n });\r\n\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_add_permitperson;\r\n","import {Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild} from '@angular/core';\r\nimport MapView from \"@arcgis/core/views/MapView\";\r\nimport Map from \"@arcgis/core/Map\";\r\nimport {PermitMapComponent} from \"../permit-map/permit-map.component\";\r\nimport GraphicsLayer from \"@arcgis/core/layers/GraphicsLayer\";\r\n// import {addProxyRule} from \"@arcgis/core/core/urlUtils\";\r\n// import {defaultLayer, parcelLayerConfig, proxyUrl, servicesLayerConfig} from \"../../../appjsLegacy/config\";\r\n// import MapImageLayer from \"@arcgis/core/layers/MapImageLayer\";\r\n// import FeatureLayer from \"@arcgis/core/layers/FeatureLayer\";\r\n// import TileLayer from \"@arcgis/core/layers/TileLayer\";\r\n// import Basemap from \"@arcgis/core/Basemap\";\r\n// import MapImageLayer from \"@arcgis/core/layers/MapImageLayer\";\r\n\r\n@Component({\r\n selector: 'appraisal-map',\r\n templateUrl: './appraisal-map.component.html',\r\n styleUrls: ['./appraisal-map.component.scss']\r\n})\r\nexport class AppraisalMapComponent extends PermitMapComponent implements OnInit, OnChanges {\r\n @ViewChild('appraisalMapViewNode', {static: true}) private appraisalMapViewElement: ElementRef;\r\n @Input() center: string;\r\n @Input() zoom: number;\r\n @Input() scale: number;\r\n @Input() gridSelection: any;\r\n @Output() parcel: EventEmitter = new EventEmitter();\r\n\r\n set locationObjectIds(val: any[]) {\r\n this.showLocationsById(val);\r\n }\r\n\r\n map: Map;\r\n mapView: MapView\r\n serviceLayers: any[];\r\n selectedServiceLayers: string[];\r\n parcelLayer: GraphicsLayer;\r\n locationLayer: any;\r\n\r\n constructor() {\r\n super();\r\n };\r\n\r\n ngOnInit() {\r\n console.log('starting up appraisal map component')\r\n this.initializeMap([\"parcels_outline\"], this.appraisalMapViewElement.nativeElement);\r\n }\r\n\r\n ngOnChanges() {\r\n // this is getting the input from appraisal-map\r\n if (this.mapView) {\r\n this.clearAll();\r\n this.findOnMap(this.gridSelection);\r\n }\r\n }\r\n\r\n addLayer(layer, filter?) {\r\n // this.locationLayer = this.map.layers.add(layer);\r\n\r\n// console.log(\"Added layer to map\");\r\n// console.log(\"layer_\"+layer.id);\r\n\r\n //setup our layer locationid function so we can all it again sometime\r\n layer.showLocationsById = function (locationObjectIds) {\r\n try {\r\n this.clearSelection();\r\n var definitionExpression = \"OBJECTID IN (\" + locationObjectIds + \")\";\r\n console.log(\"Definition expression: \" + definitionExpression);\r\n this.setDefinitionExpression(definitionExpression);\r\n this.refresh();\r\n } catch (e) {\r\n console.dir(e);\r\n }\r\n };\r\n\r\n if (filter && filter == \"location\") {\r\n if (typeof this.locationObjectIds == \"undefined\") {\r\n // $scope.$watch('locationObjectIds', function () {\r\n\r\n //skip the first run\r\n if (typeof this.locationObjectIds == \"undefined\")\r\n return;\r\n\r\n layer.showLocationsById(this.locationObjectIds); // now call it\r\n\r\n layer.show();\r\n\r\n // });\r\n }\r\n }\r\n\r\n\r\n return this.map.layers.add(layer);\r\n };\r\n\r\n findOnMap(in_allotment) {\r\n this.showingParcel = false;\r\n this.mapSearchResults = {'Message': \"\"};\r\n\r\n this.queryMatchParcel(in_allotment, (features) => {\r\n if (features.length == 0) {\r\n console.log(\"allotment not found: \" + in_allotment);\r\n this.mapSearchResults.Message = \"Not found on map.\";\r\n } else {\r\n this.querySelectParcel(null, features[0].attributes.OBJECTID, (geo_features) => {\r\n this.addParcelToMap(geo_features[0]);\r\n this.centerAndZoomToGraphic(this.selectedGraphic, 2);\r\n\r\n this.mapView.popup.content = this.getContentForPopup(features[0]);\r\n this.mapView.popup.open({location: this.selectedGraphic.geometry.extent.center});\r\n });\r\n this.showingParcel = features[0].attributes.OBJECTID;\r\n }\r\n });\r\n }\r\n\r\n // initializeMap(serviceLayerArr: string[], container: any) {\r\n // this.map = new Map();\r\n //\r\n // // declare our map\r\n // console.log(\"trying to make the map\");\r\n //\r\n //\r\n // addProxyRule({\r\n // urlPrefix: \"restdata.ctuir.org\",\r\n // proxyUrl: proxyUrl\r\n // });\r\n //\r\n //\r\n // //our first layer from up above...\r\n // //console.log(\"//restdata.umatilla.nsn.us/arcgis/rest/services/BasemapParcelViewerCTUIR/MapServer?token=\" + security_token);\r\n // this.selectedServiceLayers = serviceLayerArr;\r\n // //setup basemaps\r\n // this.selectedBasemap = defaultLayer; //\"imageryLayer\"\r\n // // this.selectedServiceLayers = this.serviceLayers;\r\n //\r\n // this.basemaps = [];\r\n // for (let property in parcelLayerConfig) {\r\n // if (parcelLayerConfig.hasOwnProperty(property)) {\r\n // this.basemaps.push({label: parcelLayerConfig[property].Display, name: property});\r\n // }\r\n // }\r\n //\r\n //\r\n // this.serviceLayers = [];\r\n // for (let property in servicesLayerConfig) {\r\n // if (servicesLayerConfig.hasOwnProperty(property)) {\r\n // this.serviceLayers.push({label: servicesLayerConfig[property].Display, name: property});\r\n // }\r\n // }\r\n //\r\n //\r\n // //might want to do this: https://developers.arcgis.com/javascript/3/jssamples/query_hover.html\r\n // // did try but had errors. might not be possible without using featureservice?: https://community.esri.com/thread/191330-popup-on-mouse-over-on-dynamic-service\r\n //\r\n // const center = this.center.split(\",\").map(c => parseInt(c));\r\n // this.mapView = new MapView({\r\n // container: container,\r\n // center,\r\n // scale: this.scale,\r\n // map: this.map,\r\n // spatialReference: {\r\n // wkid: 102100 //mercator\r\n // // wkid:26911 //nad_1983\r\n // //\"wkt\":'PROJCS[\"NAD83(NSRS2007) / UTM zone 11N\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"D_\",SPHEROID[\"GRS_1980\",6378137,298.257222101]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]]'\r\n //\r\n // }\r\n // });\r\n // this.updateLayers();\r\n //\r\n //\r\n // // start exposing an API by setting properties on \"this\" which is our controller\r\n // // lets expose the \"addLayer\" method so child directives can add themselves to the map\r\n //\r\n //\r\n // // // listen for click events and expost them as broadcasts on the scope and suing the scopes click handler\r\n // // this.map.on(\"click\", function (e) {\r\n // // // emit a message that bubbles up scopes, listen for it on your scope\r\n // // $scope.$emit(\"this.map.click\", e);\r\n // //\r\n // // // use the scopes click fuction to handle the event\r\n // // $scope.$apply(function ($scope) {\r\n // // $scope.click.call($scope, e);\r\n // // });\r\n // // });\r\n //\r\n // this.mapView.on(\"click\", (e) => {\r\n // this.clickedMap(e);\r\n // });\r\n //\r\n // return this.mapView;\r\n //\r\n // }\r\n // updateLayers() {\r\n //\r\n // console.log(\"Changing Layer: \" + this.selectedBasemap);\r\n //\r\n // try {\r\n // console.log(\"Loading layer: \" + parcelLayerConfig[this.selectedBasemap].ServiceURL);\r\n //\r\n // this.map.removeAll();\r\n //\r\n // //add the selected basemap\r\n // var new_layer1 = new MapImageLayer({url: parcelLayerConfig[this.selectedBasemap].ServiceURL});\r\n // // let new_layer = new TileLayer({url: 'http://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer'});\r\n // this.map.layers.add(new_layer1);\r\n // // this.map.layers.add(new_layer);\r\n // // this.map.basemap = new Basemap(new_layer);\r\n //\r\n //\r\n // //now add any selected service layers\r\n // for (var i = this.selectedServiceLayers.length - 1; i >= 0; i--) {\r\n // var service_layer;\r\n // console.log(i);\r\n // console.log(this.selectedServiceLayers[i]);\r\n // if (servicesLayerConfig[this.selectedServiceLayers[i]].ServiceURL.includes(\"FeatureServer\") || this.selectedServiceLayers[i] == 'parcels') {\r\n // service_layer = new FeatureLayer({url: servicesLayerConfig[this.selectedServiceLayers[i]].ServiceURL});\r\n // } else //then it is a MapServer\r\n // {\r\n // service_layer = new MapImageLayer({url: servicesLayerConfig[this.selectedServiceLayers[i]].ServiceURL});\r\n // }\r\n //\r\n // console.log(\"adding \" + servicesLayerConfig[this.selectedServiceLayers[i]].ServiceURL);\r\n // this.map.layers.add(service_layer);\r\n // }\r\n //\r\n //\r\n // this.parcelLayer = new GraphicsLayer();\r\n // this.map.layers.add(this.parcelLayer);\r\n //\r\n // console.log(\"done!\");\r\n // // this.map.reposition();\r\n // } catch (e) {\r\n // console.dir(e);\r\n // }\r\n // };\r\n // updateLayers() {\r\n //\r\n // console.log(\"Changing Layer: \" + this.selectedBasemap);\r\n //\r\n // try {\r\n // console.log(\"Loading layer: \" + parcelLayerConfig[this.selectedBasemap].ServiceURL);\r\n //\r\n // this.map.removeAll();\r\n //\r\n // //add the selected basemap\r\n // var new_layer = new TileLayer({url: parcelLayerConfig[this.selectedBasemap].ServiceURL});\r\n //\r\n // this.map.layers.add(new_layer);\r\n // this.map.basemap = new Basemap(new_layer);\r\n //\r\n // //now add any selected service layers\r\n // for (var i = this.selectedServiceLayers.length - 1; i >= 0; i--) {\r\n // var service_layer = new MapImageLayer(servicesLayerConfig[this.selectedServiceLayers[i]].ServiceURL);\r\n // this.map.layers.add(service_layer);\r\n // }\r\n //\r\n // this.parcelLayer = new GraphicsLayer();\r\n // this.map.layers.add(this.parcelLayer);\r\n //\r\n // console.log(\"done!\");\r\n // } catch (e) {\r\n // console.dir(e);\r\n // }\r\n // };\r\n\r\n\r\n // appraisalMap() {\r\n //\r\n //\r\n // esriConfig.request.proxyUrl = proxyUrl; // From the config.js file.\r\n //\r\n // this.map = new Map();\r\n // const center = this.center.split(\",\").map(c => parseInt(c));\r\n // this.mapView = new MapView({\r\n // center: center,\r\n // zoom: this.zoom,\r\n // map: this.map,\r\n // spatialReference: {\r\n // wkid: 102100 //mercator\r\n // //wkid:26911 //nad_1983\r\n // //\"wkt\":'PROJCS[\"NAD83(NSRS2007) / UTM zone 11N\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"D_\",SPHEROID[\"GRS_1980\",6378137,298.257222101]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]]'\r\n //\r\n // }\r\n // });\r\n // //our first layer from up above...\r\n // //console.log(\"//restdata.umatilla.nsn.us/arcgis/rest/services/BasemapParcelViewerCTUIR/MapServer?token=\" + security_token);\r\n //\r\n // //setup basemaps\r\n // this.selectedBasemap = defaultLayer; //imageryLayer\r\n // this.selectedServiceLayers = [];\r\n //\r\n // this.basemaps = [];\r\n // for (let property in parcelLayerConfig) {\r\n // if (parcelLayerConfig.hasOwnProperty(property)) {\r\n // this.basemaps.push({label: parcelLayerConfig[property].Display, name: property});\r\n // }\r\n // }\r\n //\r\n // this.serviceLayers = [];\r\n // for (var property in servicesLayerConfig) {\r\n // if (servicesLayerConfig.hasOwnProperty(property)) {\r\n // this.serviceLayers.push({label: servicesLayerConfig[property].Display, name: property});\r\n // }\r\n // }\r\n //\r\n //\r\n // //var layer = new esri.layers.ArcGISTiledMapServiceLayer(\"//restdata.umatilla.nsn.us/arcgis/rest/services/BasemapParcelViewerCTUIR/MapServer?token=\" + security_token);\r\n //\r\n // //var layer = new esri.layers.ArcGISTiledMapServiceLayer(parcelLayerConfig[this.map.selectedBasemap].ServiceURL);\r\n // //this.map.addLayer(layer);\r\n // //this.map.currentBasemapLayer = layer;\r\n //\r\n // //this.map.parcelLayer = new esri.layers.GraphicsLayer();\r\n // //this.map.addLayer(this.map.parcelLayer);\r\n // this.updateLayers();\r\n //\r\n //\r\n // // start exposing an API by setting properties on \"this\" which is our controller\r\n // // lets expose the \"addLayer\" method so child directives can add themselves to the map\r\n // //use this for doing a search by parcelid or address\r\n //\r\n //\r\n // //use this for selecting a specific parcel/allotment by id (no geometry)\r\n // // ALREADY EXISTS IN PERMIT MAP DIRECTIVE\r\n // // this.map.queryMatchParcel = function (searchParam, callback) {\r\n // // var queryTask = new QueryTask(parcelLayerConfig[this.map.selectedBasemap].QueryURL);\r\n // // var query = new Query();\r\n // // query.where = dojo.string.substitute(parcelLayerConfig[this.map.selectedBasemap].LocateParcelQuery, [searchParam]);\r\n // // query.returnGeometry = false;\r\n // // query.outSpatialReference = this.spatialReference;\r\n // // query.outFields = [\"*\"];\r\n // //\r\n // // queryTask.execute(query, function (result) {\r\n // // callback(result.features); //give back the parcel features we found...\r\n // // }, function (err) {\r\n // // console.log(\"Failure executing query!\");\r\n // // console.dir(err);\r\n // // console.dir(query);\r\n // // });\r\n // // };\r\n //\r\n //\r\n // //use this to select a particular parcel either by objectid (like after a search) or x,y mapPoint\r\n // // EXISTS IN PERMIT MAP COMPONENT\r\n // // this.map.querySelectParcel = function (mapPoint, objectId, callback) {\r\n // // console.log(\"Inside Appraisalthis.map.js...\");\r\n // // console.log(\"Running query on: \" + parcelLayerConfig[this.map.selectedBasemap].QueryURL);\r\n // //\r\n // // var queryTask = new QueryTask(parcelLayerConfig[this.map.selectedBasemap].QueryURL);\r\n // // var query = new Query();\r\n // //\r\n // // query.outSpatialReference = this.spatialReference;\r\n // // query.returnGeometry = true;\r\n // // query.outFields = [\"*\"];\r\n // // if (mapPoint) {\r\n // // query.geometry = mapPoint;\r\n // // } else {\r\n // // query.objectIds = [objectId];\r\n // // }\r\n // //\r\n // // query.spatialRelationship = Query.SPATIAL_REL_INTERSECTS;\r\n // // queryTask.execute(query, function (result) {\r\n // // console.dir(result);\r\n // // callback(result.features); //give back the parcel features we found...\r\n // // }, function (err) {\r\n // // console.log(\"Failure executing query!\");\r\n // // console.dir(err);\r\n // // console.dir(query);\r\n // // });\r\n // //\r\n // //\r\n // // };\r\n //\r\n // // THIS IS IN PERMIT MAP COMPONENT\r\n // // this.map.clearGraphics = function () {\r\n // // this.parcelLayer.clear();\r\n // // }\r\n // //\r\n // // THIS IS IN PERMIT MAP DIRECTIVE\r\n // // this.map.addParcelToMap = function (feature, color, alpha) {\r\n // //\r\n // // var graphic;\r\n // // if (!color)\r\n // // color = \"#FF6600\";\r\n // //\r\n // // if (!alpha)\r\n // // alpha = .25;\r\n // //\r\n // //\r\n // // var lineColor = new dojo.Color();\r\n // // lineColor.setColor(color);\r\n // //\r\n // // var fillColor = new dojo.Color();\r\n // // fillColor.setColor(color);\r\n // // fillColor.a = alpha;\r\n // //\r\n // // var symbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,\r\n // // new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, lineColor, 3), fillColor);\r\n // //\r\n // // graphic = new Graphic(feature.geometry, symbol, feature.attributes);\r\n // //\r\n // // this.parcelLayer.clear();\r\n // // this.parcelLayer.add(graphic);\r\n // // this.selectedFeature = feature;\r\n // // this.selectedGraphic = graphic;\r\n // //\r\n // // $scope.$emit(\"this.map.selectedFeature\", feature); //notify\r\n // // }\r\n // //\r\n // // THIS IS IN PERMIT MAP DIRECTIVE\r\n // // this.map.centerAndZoomToGraphic = function (graphic) {\r\n // // var centerPoint = graphic.geometry.getExtent().getCenter();\r\n // // return this.map.centerAndZoom(centerPoint, 15);\r\n // // };\r\n //\r\n //\r\n // // lets expose a version of centerAt that takes an array of [lng,lat]\r\n // //THIS IS IN ESRI MAP COMPONENT\r\n // // this.centerAt = function (center) {\r\n // // var point = new Point({\r\n // // x: center[0],\r\n // // y: center[1],\r\n // // spatialReference: {\r\n // // wkid: 102100 //mercator\r\n // // //wkid:26911 //nad_1983\r\n // // //\"wkt\":'PROJCS[\"NAD83(NSRS2007) / UTM zone 11N\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"D_\",SPHEROID[\"GRS_1980\",6378137,298.257222101]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]]'\r\n // // }\r\n // // });\r\n // //\r\n // // this.map.centerAt(point);\r\n // // };\r\n //\r\n // // listen for click events and expost them as broadcasts on the scope and suing the scopes click handler\r\n // // this.map.on(\"click\", function (e) {\r\n // // // emit a message that bubbles up scopes, listen for it on your scope\r\n // // $scope.$emit(\"this.map.click\", e);\r\n // //\r\n // // // use the scopes click fuction to handle the event\r\n // // $scope.$apply(function ($scope) {\r\n // // $scope.click.call($scope, e);\r\n // // });\r\n // // });\r\n //\r\n // return this.mapView;\r\n // }\r\n\r\n\r\n // this exists already in the permit Map component\r\n // querySearchParcel(searchParam, callback) {\r\n // var queryTask = new QueryTask(parcelLayerConfig[this.map.selectedBasemap].QueryURL);\r\n // var query = new Query();\r\n // query.where = dojo.string.substitute(parcelLayerConfig[this.map.selectedBasemap].ParcelQuery, [searchParam]);\r\n // console.log(\"query.where is next...\");\r\n // console.dir(query.where);\r\n // query.returnGeometry = false;\r\n // query.outSpatialReference = this.spatialReference;\r\n // query.outFields = [\"*\"];\r\n //\r\n // queryTask.execute(query, function (result) {\r\n // callback(result.features); //give back the parcel features we found...\r\n // }, function (err) {\r\n // console.log(\"Failure executing query!\");\r\n // console.dir(err);\r\n // console.dir(query);\r\n // });\r\n // };\r\n // })\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {\r\n BING_KEY,\r\n datasetActivitiesBasemapConfig,\r\n defaultLayer, \r\n GEOMETRY_SERVICE_URL, \r\n NAD83_SPATIAL_REFERENCE,\r\n proxyUrl,\r\n PUBLIC_OR_PRIVATE,\r\n ENVIRONMENT,\r\n CDMS_POINTS_TEST_URL,\r\n CDMS_POINTS_PROD_URL\r\n} from \"../../../appjsLegacy/config\";\r\nimport BingMapsLayer from \"@arcgis/core/layers/BingMapsLayer\";\r\nimport FeatureLayer from \"@arcgis/core/layers/FeatureLayer\";\r\nimport TileLayer from \"@arcgis/core/layers/TileLayer\";\r\nimport Point from \"@arcgis/core/geometry/Point\";\r\nimport MapView from \"@arcgis/core/views/MapView\";\r\nimport Map from \"@arcgis/core/Map\";\r\nimport {addProxyRule} from '@arcgis/core/core/urlUtils';\r\nimport SimpleMarkerSymbol from \"@arcgis/core/symbols/SimpleMarkerSymbol\";\r\nimport ProjectParameters from \"@arcgis/core/rest/support/ProjectParameters\";\r\nimport Graphic from \"@arcgis/core/Graphic\";\r\nimport SpatialReference from \"@arcgis/core/geometry/SpatialReference\";\r\nimport * as geometryServ from \"@arcgis/core/rest/geometryService\";\r\nimport Query from \"@arcgis/core/rest/support/Query\";\r\nimport * as execute from \"@arcgis/core/rest/query/executeQueryJSON\"\r\nimport Circle from \"@arcgis/core/geometry/Circle\";\r\nimport Color from \"@arcgis/core/Color\";\r\nimport GraphicsLayer from \"@arcgis/core/layers/GraphicsLayer\";\r\nimport * as watchUtils from \"@arcgis/core/core/watchUtils\";\r\nimport Multipoint from \"@arcgis/core/geometry/Multipoint\";\r\nimport * as geometryEngine from \"@arcgis/core/geometry/geometryEngine\";\r\n\r\n@Component({\r\n selector: 'esri-map',\r\n templateUrl: './esri-map.component.html',\r\n styleUrls: ['./esri-map.component.scss'],\r\n})\r\nexport class EsriMapComponent implements OnInit, OnChanges {\r\n @ViewChild('mapViewNode', {static: true}) private mapViewElement: ElementRef;\r\n // private centerAt: (center) => void;\r\n @Input() zoom: number;\r\n @Input() center: string;\r\n @Input() basemap: string;\r\n @Input() url: string;\r\n @Input() row: any;\r\n @Input() project: any;\r\n @Input() inPayload: any;\r\n @Input() deleteIds: any[];\r\n\r\n @Input()\r\n set gridSelectIds(val: any[]) {\r\n this.showSelectedLocationsById(val)\r\n }\r\n\r\n @Input()\r\n set locationObjectIds(val: any[]) {\r\n this.showLocationsById(val);\r\n }\r\n\r\n // @Output() handleUploadRemove: EventEmitter = new EventEmitter();\r\n @Output() updateLocation: EventEmitter = new EventEmitter();\r\n @Output() sde: EventEmitter = new EventEmitter();\r\n\r\n // SdeObjectId: number;\r\n OldSdeObjectId: number;\r\n\r\n newPoint: Point;\r\n newGraphic: Graphic;\r\n\r\n // SaveMessage: string;\r\n selectedBasemap: string;\r\n basemaps: any[];\r\n map: Map;\r\n mapView: MapView;\r\n locationLayer: FeatureLayer;\r\n pointsLayer: GraphicsLayer;\r\n spatialReference = new SpatialReference({wkid: 102100});\r\n selectedFeature: any;\r\n selectedGraphic: any;\r\n\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n this.createMap();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n console.log(changes);\r\n console.log(\"this.inPaylaod (ngOnChanges) is next...\");\r\n console.log(this.inPayload);\r\n\r\n // Note: ngOnChanges runs whenever these is a change to the value it has.\r\n // In this case, it has inPayload.\r\n // So, when in PayLoad changes, it causes this to run.\r\n // Therefore, we added IsFirstRun in modal-edit-location.ts, $scope.save,\r\n // so that this page can keep track of whether it has run already or not.\r\n // Thereby, we keep this to only run once (add a new location only once).\r\n if (this.inPayload && this.inPayload.IsFirstRun)\r\n {\r\n if (this.inPayload != undefined && this.inPayload.hasOwnProperty('Location')) {\r\n if (this.inPayload.hasOwnProperty('Update')) {\r\n this.row = this.inPayload.Location;\r\n\r\n }\r\n this.modalLocationEdit();\r\n //var permitLocationObject = null;\r\n //this.modalLocationEdit(permitLocationObject);\r\n }\r\n\r\n //if (this.project && this.locationLayer) {\r\n if (this.row && this.row.ProjectId && this.locationLayer) {\r\n //this.filterMap(this.project.Id);\r\n this.filterMap(this.row.ProjectId);\r\n }\r\n\r\n if (this.deleteIds) {\r\n this.deletePoints(this.deleteIds);\r\n }\r\n\r\n this.inPayload.IsFirstRun = false;\r\n }\r\n }\r\n\r\n changeFromChild(obj): void {\r\n if (!this.inPayload)\r\n {\r\n this.inPayload = obj;\r\n }\r\n console.log(\"this.inPaylaod (changeFromChild) is next...\");\r\n console.log(this.inPayload);\r\n if (this.inPayload != undefined && this.inPayload.hasOwnProperty('Location')) {\r\n if (this.inPayload.hasOwnProperty('Update')) {\r\n this.row = this.inPayload.Location;\r\n\r\n }\r\n this.modalLocationEdit();\r\n //var permitLocationObject = null;\r\n //this.modalLocationEdit(permitLocationObject);\r\n }\r\n\r\n //if (this.project && this.locationLayer) {\r\n if (this.row && this.row.ProjectId && this.locationLayer) {\r\n //this.filterMap(this.project.Id);\r\n this.filterMap(this.row.ProjectId);\r\n }\r\n\r\n if (this.deleteIds) {\r\n this.deletePoints(this.deleteIds);\r\n }\r\n }\r\n\r\n deletePoints(locationIds) {\r\n this.locationLayer.applyEdits({deleteFeatures: [{objectId: locationIds}]}).then(res => {\r\n res.deleteFeatureResults.forEach(feat => {\r\n if (!feat.error) {\r\n console.log(`Successfully deleted point ${feat.objectId} from map layer.`)\r\n } else {\r\n console.log(`error deleting point: ${feat.objectId}`);\r\n }\r\n });\r\n });\r\n }\r\n\r\n updateLayers() {\r\n console.log(\"Inside this.map.js, Changing Layer: \" + this.selectedBasemap);\r\n\r\n try {\r\n //console.log(\"Loading layer: \" + datasetActivitiesBasemapConfig[this.selectedBasemap].ServiceURL);\r\n\r\n this.map.removeAll();\r\n\r\n let new_layer = undefined;\r\n var bing_layers_map = {\r\n BingMapsRoad: new BingMapsLayer({style: 'road', key: BING_KEY}),\r\n BingMapsAerial: new BingMapsLayer({style: 'aerial', key: BING_KEY}),\r\n BingMapsHybrid: new BingMapsLayer({style: 'hybrid', key: BING_KEY}),\r\n };\r\n\r\n console.dir(bing_layers_map);\r\n //add the selected basemap\r\n if (datasetActivitiesBasemapConfig[this.selectedBasemap].library == 'CTUIR')\r\n new_layer = new TileLayer({url: datasetActivitiesBasemapConfig[this.selectedBasemap].ServiceURL});\r\n else if (datasetActivitiesBasemapConfig[this.selectedBasemap].library == 'Esri') {\r\n //new_layer = new esri.layers.TileLayer(datasetActivitiesBasemapConfig[this.selectedBasemap].ServiceURL);\r\n //new_layer = new esri.layers.TileLayer(\"http://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer\");\r\n // new_layer = new TileLayer(datasetActivitiesBasemapConfig[this.selectedBasemap].type);\r\n new_layer = new TileLayer({url: 'http://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer'});\r\n console.log(\"Created new_layer using ESRI...\");\r\n } else if (datasetActivitiesBasemapConfig[this.selectedBasemap].library == 'Bing') {\r\n new_layer = new BingMapsLayer({\r\n key: BING_KEY,\r\n style: bing_layers_map[datasetActivitiesBasemapConfig[this.selectedBasemap].type]\r\n });\r\n console.log(\"Created new_layer using Bing...\");\r\n }\r\n\r\n this.map.layers.add(new_layer);\r\n // this.map.currentBasemapLayer = new_layer;\r\n\r\n // Somehow, this.url gets set to the production feature layer service url.\r\n // Therefore, we must set it to the correct one for our environment.\r\n if (this.url) {\r\n if (ENVIRONMENT === \"prod\")\r\n {\r\n this.url = CDMS_POINTS_PROD_URL;\r\n }\r\n else\r\n {\r\n this.url = CDMS_POINTS_TEST_URL;\r\n }\r\n console.log(\"esri-map-component: this.url = \" + this.url);\r\n\r\n this.locationLayer = new FeatureLayer({url: this.url});\r\n this.map.layers.add(this.locationLayer);\r\n this.pointsLayer = new GraphicsLayer();\r\n this.map.layers.add(this.pointsLayer);\r\n }\r\n\r\n\r\n console.log(\"done!\");\r\n } catch (e) {\r\n console.dir(e);\r\n }\r\n }\r\n\r\n createMap() {\r\n\r\n // setup our map options based on the attributes and scope\r\n this.map = new Map();\r\n\r\n\r\n // if (PUBLIC_OR_PRIVATE === \"private\") {\r\n // // declare our map\r\n // // loadModules([\"esri/core/urlUtils\"]).then(([urlUtils]) => { // formerly esri/urlUtils\r\n // addProxyRule({\r\n // urlPrefix: \"restdata.ctuir.org\",\r\n // proxyUrl: proxyUrl\r\n // });\r\n\r\n // //esriConfig.defaults.io.proxyUrl = proxyUrl; // From the config.js file.\r\n // //esriConfig.defaults.io.alwaysUseProxy = false;\r\n\r\n // // });\r\n // }\r\n\r\n\r\n this.selectedBasemap = defaultLayer;\r\n\r\n this.basemaps = [];\r\n for (var property in datasetActivitiesBasemapConfig) {\r\n if (datasetActivitiesBasemapConfig.hasOwnProperty(property)) {\r\n this.basemaps.push({label: datasetActivitiesBasemapConfig[property].Display, name: property});\r\n }\r\n }\r\n\r\n let center;\r\n if (this.center) {\r\n center = this.center.split(\",\").map(c => parseFloat(c));\r\n }\r\n\r\n this.mapView = new MapView({\r\n // center: ($attrs.center) ? $attrs.center.split(\",\") : this.center,\r\n // zoom: ($attrs.zoom) ? $attrs.zoom : this.zoom,\r\n container: this.mapViewElement.nativeElement,\r\n zoom: this.zoom,\r\n center,\r\n //basemap: 'streets', //($attrs.basemap) ? $attrs.basemap : this.basemap,\r\n map: this.map,\r\n spatialReference: {\r\n wkid: 102100 //mercator\r\n //wkid:26911 //nad_1983\r\n //\"wkt\":'PROJCS[\"NAD83(NSRS2007) / UTM zone 11N\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"D_\",SPHEROID[\"GRS_1980\",6378137,298.257222101]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]]'\r\n\r\n }\r\n });\r\n\r\n this.mapView.on(\"click\", (e) => {\r\n this.clickedMap(e);\r\n });\r\n\r\n // this.map.on(\"load\", function (e) { todo: ask george about createBasemapDropdown\r\n // //createBasemapDropdown(map);\r\n // });\r\n\r\n //this.map.resize();\r\n this.updateLayers();\r\n watchUtils.whenTrue(this.mapView.popup, 'visible', () => {\r\n watchUtils.whenFalseOnce(this.mapView.popup, 'visible', () => {\r\n this.pointsLayer.removeAll();\r\n this.mapView.graphics.removeAll();\r\n this.sde.emit();\r\n });\r\n });\r\n //console.log(\"Map is complete and in scope.\");\r\n return this.mapView;\r\n // });\r\n }\r\n\r\n centerAt(center) {\r\n var point = new Point({\r\n x: center[0],\r\n y: center[1],\r\n spatialReference: {\r\n wkid: 102100 //mercator\r\n //wkid:26911 //nad_1983\r\n //\"wkt\":'PROJCS[\"NAD83(NSRS2007) / UTM zone 11N\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"D_\",SPHEROID[\"GRS_1980\",6378137,298.257222101]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]]'\r\n\r\n }\r\n });\r\n\r\n this.mapView.goTo(point);\r\n };\r\n\r\n showSelectedLocationsById(selectedIds) {\r\n let color = \"#FF6600\";\r\n let alpha = .25;\r\n let lineColor = new Color(color);\r\n // lineColor.setColor(color);\r\n\r\n let fillColor = new Color(color);\r\n fillColor.a = alpha;\r\n\r\n let symbol = new SimpleMarkerSymbol({\r\n style: \"diamond\",\r\n color: fillColor,\r\n size: \"10px\",\r\n outline: {\r\n style: \"solid\",\r\n color: lineColor,\r\n width: 3,\r\n },\r\n });\r\n\r\n try {\r\n if (this.locationLayer && selectedIds && this.pointsLayer) {\r\n this.pointsLayer.removeAll();\r\n selectedIds.forEach(row => {\r\n // console.log(row);\r\n let selectedPoint = new Point({\r\n x: row.GPSEasting,\r\n y: row.GPSNorthing,\r\n spatialReference: new SpatialReference({wkid: 26911}),\r\n });\r\n let selectedGraphic = new Graphic({geometry: selectedPoint, symbol: symbol, attributes: row});\r\n this.pointsLayer.add(selectedGraphic);\r\n });\r\n }\r\n } catch (e) {\r\n console.log(\"issue selecting those graphics\");\r\n console.dir(e);\r\n }\r\n }\r\n\r\n showLocationsById(locationObjectIds) {\r\n console.info(\" --- showLocationsByid ---\");\r\n try {\r\n if (this.locationLayer) {\r\n // this.clearSelection(); todo: note feature selection is not occurring\r\n\r\n var definitionExpression = \"\";\r\n // If we have a new user,\r\n if (locationObjectIds === \"\") {\r\n console.log(\"locationObjectIds is blank; give it a number, but we won't pull anything...\");\r\n definitionExpression = \"OBJECTID IN (0)\";\r\n } else {\r\n console.log(\"locationObjectIds has something; pull only those points...\");\r\n // console.log(locationObjectIds);\r\n definitionExpression = \"OBJECTID IN (\" + locationObjectIds + \")\";\r\n }\r\n // console.log(\"Inside this.map.js, Definition expression: \" + definitionExpression);\r\n //console.log(\"In Map.js, definitionExpression: ...\");\r\n\r\n return this.locationLayer.definitionExpression = definitionExpression;\r\n }\r\n\r\n\r\n } catch (e) {\r\n console.log(\"died in showLocationsById\");\r\n console.dir(e);\r\n }\r\n };\r\n\r\n\r\n modalLocationEdit() {\r\n //modalLocationEdit(permitLocationObject) {\r\n //OK -- if we are saving a NEW location then start off by adding the point to the featurelayer\r\n if (!this.row) {\r\n console.log(\"Adding a NEW location in map component... \");\r\n this.row = this.inPayload.Location;\r\n // $scope.map.reposition(); //this is important or else we end up with our map points off somehow.\r\n\r\n //nad83 zone 11... might have to have this as alist somehwere...\r\n let inSR = new SpatialReference({wkt: NAD83_SPATIAL_REFERENCE});\r\n console.log(\"Created inSR...\");\r\n\r\n let outSR = new SpatialReference({wkid: 102100})\r\n console.log(\"Created outSR...\");\r\n // let geometryService = new GeometryService({url: GEOMETRY_SERVICE_URL});\r\n\r\n let newPoint = new Point({\r\n x: this.inPayload.Location.GPSEasting,\r\n y: this.inPayload.Location.GPSNorthing,\r\n spatialReference: inSR\r\n });\r\n\r\n //convert spatial reference\r\n let PrjParams = new ProjectParameters();\r\n\r\n PrjParams.geometries = [newPoint];\r\n // PrjParams.outSR is not set yet, so we must set it also.\r\n PrjParams.outSpatialReference = outSR;\r\n PrjParams.toJSON();\r\n //throw \"Stopping right here...\";\r\n\r\n //do the projection (conversion)\r\n geometryServ.project(GEOMETRY_SERVICE_URL, PrjParams).then((outputpoint) => {\r\n let symbol = new SimpleMarkerSymbol({\r\n style: \"circle\",\r\n color: \"#00ff00\",\r\n size: \"8px\",\r\n });\r\n\r\n this.newPoint = new Point(outputpoint[0]);\r\n this.newGraphic = new Graphic({geometry: newPoint, symbol: symbol});\r\n this.mapView.graphics.add(this.newGraphic);\r\n\r\n //add the graphic to the map and get SDE_ObjectId\r\n this.locationLayer.applyEdits({addFeatures: [this.newGraphic]}).then(results => {\r\n if (results.addFeatureResults[0]) {\r\n console.log(results.addFeatureResults[0])\r\n this.row.SdeObjectId = results.addFeatureResults[0].objectId;\r\n\r\n results.addFeatureResults[0].SDEObjectID = results.addFeatureResults[0].objectId;\r\n results.addFeatureResults[0].SdeObjectId = results.addFeatureResults[0].objectId;\r\n this.newGraphic = results.addFeatureResults[0];\r\n console.log(\"Created a new point! \" + this.row.SdeObjectId);\r\n // this.pointsLayer.add(this.newGraphic);\r\n this.updateLocation.emit({pointId: this.row.SdeObjectId});\r\n this.inPayload = null;\r\n\r\n this.mapView.goTo({\r\n center: [this.newPoint.longitude, this.newPoint.latitude]\r\n });\r\n this.row = null;\r\n // this.locationLayer.applyEdits({updateFeatures: results.addFeatureResults[0].OBJECTID }).then((res) => {\r\n // console.log(res)\r\n // });\r\n\r\n } else {\r\n this.updateLocation.emit({failed: \"adding graphic failed\"});\r\n console.log('failed adding new location')\r\n console.dir(results);\r\n }\r\n\r\n }).catch((error) => {\r\n console.log(\"error = \", error);\r\n });\r\n });\r\n } else //updating an existing...\r\n {\r\n console.log(\"updating existing point in map component...\");\r\n console.log(\"this is next...\");\r\n console.dir(this);\r\n\r\n let query = new Query();\r\n\r\n query.outSpatialReference = this.spatialReference;\r\n query.returnGeometry = true;\r\n // query.where = `objectId = ${this.row.SdeObjectId}`;\r\n query.where = `objectId = ${this.row.SdeObjectId} OR SDEObjectID =${this.row.SdeObjectId}`;\r\n query.outFields = [\"*\"];\r\n // Capture the old SdeObjectId, so we can delete it later.\r\n this.OldSdeObjectId = this.row.SdeObjectId;\r\n // getting the old point\r\n this.locationLayer.queryFeatures(query).then(res => {\r\n console.log(\"update this feature\");\r\n console.log(\"this.row is next...\");\r\n console.dir(this.row);\r\n\r\n // deleting the old point\r\n if ((typeof res.features[0] !== 'undefined') && (typeof res.features[0].attributes !== 'undefined'))\r\n {\r\n console.log(\"res.features attibutes exists; delete old point.\");\r\n this.deletePoints(res.features[0].attributes.OBJECTID);\r\n }\r\n else\r\n {\r\n console.log(\"res.features attributes is undefined; nothing to delete...\");\r\n }\r\n\r\n\r\n var inSR = new SpatialReference({wkt: NAD83_SPATIAL_REFERENCE});\r\n var outSR = new SpatialReference({wkid: 102100})\r\n // var geometryService = new GeometryService({url: GEOMETRY_SERVICE_URL});\r\n this.newPoint = new Point({x: this.row.GPSEasting, y: this.row.GPSNorthing, spatialReference: inSR});\r\n\r\n //convert spatial reference\r\n var PrjParams = new ProjectParameters();\r\n\r\n PrjParams.geometries = [this.newPoint];\r\n // PrjParams.outSR is not set yet, so we must set it also.\r\n PrjParams.outSpatialReference = outSR;\r\n\r\n\r\n // throw \"Stopping right here...\";\r\n //\r\n // do the projection(conversion)\r\n\r\n geometryServ.project(GEOMETRY_SERVICE_URL, PrjParams).then((outputpoint) => {\r\n let symbol = new SimpleMarkerSymbol({\r\n style: \"circle\",\r\n color: \"#00ff00\",\r\n size: \"8px\",\r\n });\r\n\r\n this.newPoint = new Point(outputpoint[0]);\r\n this.newGraphic = new Graphic({geometry: this.newPoint, symbol: symbol});\r\n this.mapView.graphics.add(this.newGraphic);\r\n\r\n var attributes = {OBJECTID: this.row.SdeObjectId};\r\n\r\n this.locationLayer.applyEdits({addFeatures: [this.newGraphic]}).then((addResults) => {\r\n if (addResults) {\r\n console.log('apply location edits')\r\n console.log(addResults)\r\n this.row.SdeObjectId = addResults.addFeatureResults[0].objectId;\r\n console.log(\"Added new point! \" + this.row.SdeObjectId);\r\n this.updateLocation.emit({Editing: true, pointId: this.row.SdeObjectId});\r\n //throw \"Stopping right here...\";\r\n\r\n // var attributes = {\r\n // OBJECTID: this.OldSdeObjectId\r\n // }\r\n // var deleteGraphic = new Graphic({geometry: this.newPoint, attributes: attributes});\r\n\r\n // Note: You cannot just pass the point to delete; they must be in a graphic object,\r\n // or the code dies in dojo-land, which is different than what is shown in\r\n // ArcGIS documenation on the service interface.\r\n //$scope.map.locationLayer.applyEdits(null, null, pointsToDelete).then(function (deleteResults) {\r\n //$scope.map.locationLayer.applyEdits(null, null, $scope.aryDeletes).then(function (deleteResults) {\r\n // this.locationLayer.applyEdits({deleteFeatures: [deleteGraphic]}, null,).then((deleteResults) => {\r\n\r\n //var query = new Query();\r\n //query.objectIds = [deletes[0].objectId];\r\n //$scope.map.locationLayer.selectFeatures(query, )\r\n // console.log(\"deleteResults is next...\");\r\n // console.dir(deleteResults);\r\n //\r\n // //.then(function (deleteResults) {\r\n // if (Array.isArray(deleteResults.deleteFeatureResults) && deleteResults.deleteFeatureResults[0] && deleteResults.deleteFeatureResults.length === 0) {\r\n // this.updateLocation.emit({failed: \"The location did not exist in SDE.\"});\r\n // // this.SaveMessage.emit(\"The location did not exist in SDE.\");\r\n // console.dir(deleteResults);\r\n // } else if (deleteResults.deleteFeatureResults.length) {\r\n // console.log(\"Deleted old point in sdevector! \" + this.row.SdeObjectId);\r\n //\r\n // this.updateLocation.emit({Editing: true, pointId: this.row.SdeObjectId});\r\n // // OLD CommonService.UpdateLocationAction($scope.project.Id, $scope.row.Id, $scope.row.SdeObjectId, $scope.OldSdeObjectId);\r\n // // CommonService.updateLocationAction($scope.project.Id, $scope.row.Id, $scope.row.SdeObjectId);\r\n // } else {\r\n // this.updateLocation.emit({failed: \"Problem deleting location.\"});\r\n // // this.SaveMessage = \"There was a problem deleting that location.\";\r\n // console.dir(deleteResults);\r\n // }\r\n // }, function (err) {\r\n // console.log(\"Apply Edits - Delete - failed: \" + err.message);\r\n // });\r\n\r\n // var data = {\r\n // ProjectId: this.project.Id,\r\n // };\r\n //\r\n // // var target = '/api/v1/file/UploadProjectFile';\r\n // // this.updateLocation.emit(this.row.SdeObjectId);\r\n // this.inPayload = null;\r\n // $scope.handleFilesToUploadRemove($scope.row, data, target, $upload, $rootScope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n } else {\r\n // this.handleUploadRemove.emit();\r\n // this.SaveMessage.emit(\"There was a problem adding the new location.\");\r\n this.updateLocation.emit({failed: \"Problem adding location.\"})\r\n console.dir(addResults);\r\n }\r\n\r\n\r\n });\r\n });\r\n });\r\n\r\n\r\n // var target = '/api/v1/file/UploadProjectFile';\r\n // this.handleUploadRemove.emit(true);\r\n // $scope.handleFilesToUploadRemove($scope.row, data, target, $upload, $rootScope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n\r\n }\r\n\r\n }\r\n\r\n clickedMap(e) {\r\n // this will return the nearest point to the map click within a 1000 foot buffer\r\n if (this.url) {\r\n let query = new Query();\r\n query.outSpatialReference = this.spatialReference;\r\n query.returnGeometry = true;\r\n query.outFields = [\"*\"];\r\n\r\n if (e.mapPoint) {\r\n query.geometry = new Circle({\r\n center: e.mapPoint,\r\n radius: 0.25,\r\n radiusUnit: \"miles\"\r\n });\r\n // query.geometry = pointBuffer;\r\n } else {\r\n this.pointsLayer.removeAll();\r\n }\r\n\r\n query.spatialRelationship = \"intersects\";\r\n // executing the query to return all the map points within 1000 feet of the map click\r\n execute.executeQueryJSON(this.url, query).then(res => {\r\n // alert the user if no sample was found\r\n if (res.features.length == 0) {\r\n alert(\"No sample found at that location\");\r\n this.pointsLayer.removeAll();\r\n this.sde.emit();\r\n } else {\r\n\r\n // generate a graphic and open a popup for the closest sample\r\n // same colors as parcel layer selection\r\n let graphic;\r\n let color = \"#FF6600\";\r\n let alpha = .25;\r\n let lineColor = new Color(color);\r\n // lineColor.setColor(color);\r\n\r\n let fillColor = new Color(color);\r\n fillColor.a = alpha;\r\n\r\n let symbol = new SimpleMarkerSymbol({\r\n style: \"diamond\",\r\n color: fillColor,\r\n size: \"10px\",\r\n outline: {\r\n style: \"solid\",\r\n color: lineColor,\r\n width: 3,\r\n },\r\n });\r\n\r\n // this array of graphics will is used for the multipoint feature for the geometry service and the resulting graphic\r\n let nearPoints = [];\r\n\r\n // adding a graphic for each returned item of the query\r\n res.features.forEach(point => {\r\n nearPoints.push(new Graphic({\r\n geometry: new Point({\r\n latitude: point.geometry.latitude,\r\n longitude: point.geometry.longitude,\r\n x: point.geometry.x,\r\n y: point.geometry.y,\r\n spatialReference: this.spatialReference,\r\n }),\r\n attributes: point.attributes\r\n })\r\n );\r\n });\r\n\r\n // creating a new multipoint geometry that is passed into the geometryEngine\r\n let multiPoint = new Multipoint({spatialReference: this.spatialReference});\r\n nearPoints.forEach(point => {\r\n // adding each point to the multipoint geometry\r\n multiPoint.addPoint(point.geometry);\r\n })\r\n\r\n // returning the nearest point from the geometry engine and creating a graphic at that location\r\n let nearest = geometryEngine.nearestCoordinate(multiPoint, new Point({\r\n x: e.mapPoint.x,\r\n y: e.mapPoint.y,\r\n spatialReference: this.spatialReference\r\n }));\r\n\r\n let nearestPt = new Point({\r\n x: nearest.coordinate.x,\r\n y: nearest.coordinate.y,\r\n spatialReference: this.spatialReference\r\n });\r\n\r\n graphic = new Graphic({\r\n geometry: nearestPt,\r\n symbol: symbol,\r\n attributes: nearPoints[nearest.vertexIndex].attributes\r\n });\r\n\r\n graphic.attributes.SDEObjectID = graphic.attributes.OBJECTID;\r\n this.sde.emit(graphic.attributes.SDEObjectID);\r\n\r\n this.mapView.goTo({\r\n center: [nearPoints[nearest.vertexIndex].geometry.longitude, nearPoints[nearest.vertexIndex].geometry.latitude]\r\n });\r\n\r\n // this.mapView.popup.open({\r\n // title: `SDEObjectID: ${graphic.attributes.SDEObjectID}`,\r\n // location: graphic.geometry\r\n // });\r\n\r\n this.pointsLayer.removeAll();\r\n this.pointsLayer.add(graphic);\r\n // this.selectedFeature = res.features[nearest.vertexIndex];\r\n this.selectedGraphic = graphic;\r\n }\r\n })\r\n }\r\n }\r\n\r\n filterMap(projectId) {\r\n this.locationLayer.definitionExpression = `ProjectId = ${projectId}`;\r\n }\r\n}\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {\r\n BooleanCellRenderer,\r\n BooleanEditor, valueFormatterArrayToList,\r\n valueFormatterBoolean,\r\n valueFormatterDate\r\n} from \"../../../../core/common/common-functions\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\nimport {METADATA_PROPERTY_LEASING_INSPECTIONVIOLATIONS} from \"../../../../config\";\r\n\r\nvar inspection_violations = ['$scope', '$route', '$routeParams', '$uibModal', '$location', '$window', '$rootScope', 'LeasingService',\r\n function ($scope, $route, $routeParams, $uibModal, $location, $window, $rootScope,LeasingService) {\r\n\r\n $rootScope.inModule = \"leasing\";\r\n\r\n if (!$scope.Profile.hasRole(\"Leasing\"))\r\n angular.rootScope.go(\"/unauthorized\");\r\n\r\n //$scope.FromDate = moment().subtract(10, \"years\"); //how many violations to show?\r\n $scope.ShowResolved = true;\r\n\r\n $scope.violations = LeasingService.getInspectionViolations({ShowResolved: $scope.ShowResolved});\r\n\r\n $scope.violationResolutions = $scope.leaseTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_INSPECTIONVIOLATIONS);\r\n\r\n $scope.violations.$promise.then(function () {\r\n $scope.violationsGridDiv = document.querySelector('#inspection-violations-grid');\r\n new Grid($scope.violationsGridDiv, $scope.violationsGrid);\r\n\r\n if ($rootScope.Profile.hasRole(\"LeasingEditor\")) {\r\n $scope.violationsGrid.columnApi.setColumnVisible(\"EditLinks\", true);\r\n $scope.violationsGrid.api.refreshHeader();\r\n }\r\n\r\n });\r\n\r\n var EditLinksTemplate = function (param) {\r\n\r\n if(!$rootScope.Profile.hasRole('LeasingEditor')){\r\n return;\r\n }\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openInspectionViolationModal(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n var violationsColumnDefs = [\r\n { colId: 'EditLinks', width: 90, cellRenderer: EditLinksTemplate, menuTabs: [], hide: true },\r\n\r\n {\r\n headerName: \"Inspection Date\", field: \"InspectionDateTime\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.InspectionDateTime) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.InspectionDateTime);\r\n },\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'date',\r\n sort: 'desc',\r\n filterParams: { apply: true }\r\n },\r\n {\r\n headerName: \"Resolved?\", field: \"ViolationIsResolved\", width: 120,\r\n valueFormatter: function (params) {\r\n if (params && params.node) {\r\n return valueFormatterBoolean(params.node.data.ViolationIsResolved);\r\n } else {\r\n return valueFormatterBoolean(params.value === \"true\"); //for filter!\r\n }\r\n },\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n\r\n { headerName: \"Allotment\", field: \"AllotmentName\", width: 120, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Crop Present\", field: \"CropPresent\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Inspection Type\", field: \"InspectionType\", width: 160, menuTabs: ['filterMenuTab'], filter: true},\r\n { headerName: \"Violation Type\", field: \"ViolationType\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Inspection Notes\", field: \"InspectionNotes\", width: 300, menuTabs: ['filterMenuTab'], filter: \"text\" },\r\n\r\n {\r\n headerName: \"Resolution\", field: \"ViolationResolution\", width: 160, menuTabs: ['filterMenuTab'], filter: true\r\n },\r\n { headerName: \"Fee Collected\", field: \"ViolationFeeCollected\", width: 160, menuTabs: ['filterMenuTab'], filter: \"number\" },\r\n {\r\n headerName: \"Date Fee Collected\", field: \"ViolationDateFeeCollected\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.ViolationDateFeeCollected) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.ViolationDateFeeCollected);\r\n }, menuTabs: ['filterMenuTab'], filter: \"number\"\r\n },\r\n { headerName: \"Fee Collected By\", field: \"ViolationFeeCollectedBy\", width: 160, menuTabs: ['filterMenuTab']},\r\n { headerName: \"Hours Spent\", field: \"ViolationHoursSpent\", width: 160,menuTabs: ['filterMenuTab'], filter: \"number\" },\r\n { headerName: \"Comments\", field: \"ViolationComments\", width: 160,menuTabs: ['filterMenuTab'], filter: \"text\"},\r\n\r\n //more lease fields\r\n { headerName: \"Lease Number\", field: \"LeaseNumber\", width: 160, menuTabs: ['filterMenuTab'], filter: \"text\" },\r\n { headerName: \"Lease Type\", field: \"LeaseType\", width: 160, menuTabs: ['filterMenuTab'] , filter: true},\r\n { headerName: \"Lease Acres\", field: \"LeaseAcres\", width: 160, menuTabs: ['filterMenuTab'], filter: \"number\" },\r\n {\r\n headerName: \"Optional Alt Crop\", field: \"OptionalAlternativeCrop\", width: 160,\r\n valueGetter: function (params) {\r\n return valueFormatterBoolean(params.node.data.OptionalAlternativeCrop);\r\n },\r\n menuTabs: ['filterMenuTab']\r\n },\r\n { headerName: \"Graze Animal\", field: \"GrazeAnimal\", width: 160, menuTabs: ['filterMenuTab'],\r\n valueFormatter: function (params) {\r\n return valueFormatterArrayToList(params.node.data.GrazeAnimal);\r\n }\r\n },\r\n { headerName: \"TAAMSNumber\", field: \"TAAMSNumber\", width: 160, menuTabs: ['filterMenuTab'], filter: \"text\" },\r\n { headerName: \"Lease Year\", field: \"LeaseYear\", width: 160, menuTabs: ['filterMenuTab'], filter: \"number\" },\r\n { headerName: \"Inspected By\", field: \"InspectedBy\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n\r\n ];\r\n\r\n $scope.rowsChanged = {};\r\n\r\n $scope.violationsGrid = {\r\n columnDefs: violationsColumnDefs,\r\n rowData: $scope.violations,\r\n rowSelection: 'single',\r\n selectedItem: null,\r\n onSelectionChanged: function (params) {\r\n if(!$rootScope.Profile.hasRole('LeasingEditor')){ return; }\r\n $scope.violationsGrid.selectedItem = $scope.violationsGrid.api.getSelectedRows()[0];\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n components: {\r\n booleanEditor: BooleanEditor,\r\n booleanCellRenderer: BooleanCellRenderer,\r\n },\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n }\r\n\r\n $scope.openInspectionViolationModal = function (params) {\r\n\r\n $scope.violation_modal = params;\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/inspection-violation-modal.html',\r\n controller: 'InspectionViolationModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n }\r\n\r\n $scope.removeInspection = function(){\r\n if(!confirm(\"Are you sure you want to remove this inspection? There is no undo.\")){\r\n return;\r\n }\r\n\r\n var remove = LeasingService.removeInspection($scope.violationsGrid.selectedItem.InspectionId); //note: the Id is not the InspectionId\r\n remove.$promise.then(function(){\r\n $scope.violations.forEach(function(violation, index){\r\n if(violation.InspectionId == $scope.violationsGrid.selectedItem.InspectionId){\r\n $scope.violations.splice(index,1);\r\n }\r\n })\r\n\r\n $scope.violationsGrid.api.setRowData($scope.violations);\r\n $scope.violationsGrid.selectedItem = null;\r\n }, function(data){\r\n alert(\"There was a problem removing that inspection violation.\");\r\n console.dir(data);\r\n })\r\n }\r\n\r\n $scope.saveInspectionCallback = function () {\r\n $scope.violations = LeasingService.getInspectionViolations({ ShowResolved: $scope.ShowResolved });\r\n $scope.violations.$promise.then(function () {\r\n $scope.violationsGrid.api.setRowData($scope.violations);\r\n });\r\n }\r\n\r\n}];\r\n\r\nexport default inspection_violations;\r\n","import * as angular from 'angular';\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar admin_groups = ['$scope', '$uibModal', 'CommonService',\r\n function (scope, $uibModal, CommonService) {\r\n\r\n if (!scope.Profile.isAdmin())\r\n angular.rootScope.go(\"/unauthorized\");\r\n\r\n scope.groups = CommonService.getGroups();\r\n scope.organizations = CommonService.getOrganizations();\r\n\r\n scope.groups.$promise.then(function(){\r\n\r\n var agColumnDefs = [\r\n { field: 'Organization.Name', headerName: 'Organization', width: 280, menuTabs: ['filterMenuTab'], filter: true, sort: 'asc'},\r\n { field: 'Name', headerName: 'Group Name', width: 300, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n { field: 'Description', headerName: 'Description', width: 300, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n { headerName: \"Members\", width: 120, cellRenderer: function(params){\r\n return params.data.Members.length;\r\n }}\r\n ];\r\n\r\n scope.groupGrid = {\r\n // showToolPanel: false,\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: agColumnDefs,\r\n rowData: scope.groups,\r\n selectedItem: null,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n scope.groupGrid.selectedItem = scope.groupGrid.api.getSelectedRows()[0];\r\n scope.$apply();\r\n },\r\n onRowDoubleClicked: function(params) {\r\n scope.openAdminGroupModal(scope.groupGrid.selectedItem);\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n var ag_grid_div = document.querySelector('#groups-grid')as HTMLElement; //get the container id...\r\n scope.ag_grid = new Grid(ag_grid_div, scope.groupGrid); //bind the grid to it.\r\n\r\n\r\n });\r\n\r\n scope.openAdminGroupMembersModal = function(){\r\n scope.SaveMessage = null;\r\n\r\n scope.group = scope.groupGrid.selectedItem;\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/modal-admin-group-members.html',\r\n controller: 'ModalAdminGroupMembersCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function () {\r\n scope.groupGrid.api.setRowData(scope.groups);\r\n });\r\n }\r\n\r\n scope.openAdminGroupModal = function(in_group){\r\n scope.SaveMessage = null;\r\n\r\n scope.group = (in_group) ? in_group : {};\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/modal-admin-item.html',\r\n controller: 'ModalAdminItemCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_group) {\r\n if(scope.group.hasOwnProperty('Id')) //edited\r\n {\r\n scope.groups.forEach(function(item, index){\r\n if(item.Id == saved_group.Id){\r\n angular.extend(item, saved_group);\r\n scope.groupGrid.api.setRowData(scope.groups);\r\n }\r\n });\r\n } else { //created\r\n scope.groups.push(saved_group);\r\n scope.groupGrid.api.setRowData(scope.groups);\r\n }\r\n\r\n scope.SaveMessage = \"Success.\";\r\n }, function(error){\r\n console.dir(error);\r\n scope.ErrorMessage = \"Failed.\";\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n];\r\n\r\nexport default admin_groups;\r\n","/*\r\n* This page loads the project permissions\r\n*/\r\nimport * as angular from 'angular';\r\nimport * as $ from 'jquery';\r\nimport {orderByAlphaName, orderUserByAlpha} from \"../../../common/common-functions\";\r\nimport {DEFAULT_PROJECT_PERMISSION} from \"../../../../config\";\r\n\r\nvar project_permissions = ['$scope', '$routeParams','SubprojectService', 'ProjectService', 'DatasetService', 'CommonService', 'UserService',\r\n '$rootScope', '$uibModal',\r\n function (scope, routeParams, SubprojectService, ProjectService, DatasetService, CommonService, UserService, $rootScope, $uibModal) {\r\n\r\n\r\n scope.OnTab = \"Permissions\";\r\n\r\n scope.PrincipalTypeSelection = \"User\";\r\n scope.saveResults = { success: false, failure: false};\r\n scope.select2Options = { allowClear:true };\r\n scope.selectedItem = null;\r\n scope.currentUserId = $rootScope.Profile.Id;\r\n //remove existing permissions from the dropdowns.\r\n scope.filterLists = function()\r\n {\r\n scope.permissions.forEach(function(perm){\r\n //console.dir(perm);\r\n var objlist = scope.getPrincipalList(perm.PrincipalType);\r\n for(var a = 0; a < objlist.length; a++){\r\n if(objlist[a].Id == perm.PrincipalId){\r\n //console.log(\"splicing\")\r\n //console.dir(perm);\r\n objlist.splice(a,1);\r\n break;\r\n }\r\n }\r\n })\r\n\r\n scope.users = scope.users.sort(orderUserByAlpha);\r\n scope.departments = scope.departments.sort(orderByAlphaName)\r\n scope.groups = scope.groups.sort(orderByAlphaName)\r\n }\r\n\r\n\r\n scope.addPermission = function(){\r\n console.log(scope.PrincipalTypeSelection);\r\n console.log(scope.selectedItem);\r\n var objlist = scope.getPrincipalList(scope.PrincipalTypeSelection);\r\n\r\n for (var i = 0; i < objlist.length; i++) {\r\n var obj = objlist[i];\r\n\r\n if(obj.Id == scope.selectedItem)\r\n {\r\n scope.pushPermission(scope.PrincipalTypeSelection, obj);\r\n objlist.splice(i,1);\r\n break;\r\n }\r\n };\r\n\r\n scope.selectedItem = null;\r\n //$(\"select2Options\").val('').change()\r\n\r\n };\r\n\r\n scope.getPrincipalList = function(type){\r\n var objlist = null;\r\n\r\n if(type == \"User\"){\r\n objlist = scope.users;\r\n } else if (type == \"Group\"){\r\n objlist = scope.groups;\r\n } else if (type == \"Department\"){\r\n objlist = scope.departments;\r\n }\r\n\r\n return objlist;\r\n\r\n }\r\n\r\n scope.pushPermission = function(principalType, principal) {\r\n scope.permissions.push({\r\n Level: \"View\",\r\n Principal: principal,\r\n PrincipalType: principalType,\r\n PrincipalId: principal.Id,\r\n TargetId: scope.project.Id,\r\n TargetType: \"Project\"\r\n })\r\n }\r\n\r\n scope.removePermission = function(index)\r\n {\r\n //remove it from the permissions list\r\n var obj = scope.permissions.splice(index,1)[0];\r\n\r\n //add it to the right list and re-sort\r\n var objlist = scope.getPrincipalList(obj.PrincipalType);\r\n objlist.push(obj.Principal);\r\n\r\n if(obj.PrincipalType == \"User\")\r\n objlist = objlist.sort(orderUserByAlpha);\r\n else\r\n objlist = objlist.sort(orderByAlphaName);\r\n\r\n };\r\n\r\n scope.savePermissions = function()\r\n {\r\n var allpermissions = angular.copy(scope.permissions);\r\n allpermissions.push(scope.OrganizationUser);\r\n allpermissions.push(scope.Public);\r\n\r\n var saved = ProjectService.savePermissions(scope.project.Id, allpermissions);\r\n\r\n saved.$promise.then(function(){\r\n scope.saveResults.success = true;\r\n scope.saveResults.failure = false;\r\n }, function(){\r\n scope.saveResults.success = false;\r\n scope.saveResults.failure = true;\r\n })\r\n };\r\n\r\n\r\n scope.reload = function()\r\n {\r\n scope.saveResults.success = false;\r\n scope.saveResults.failure = false;\r\n\r\n scope.project = ProjectService.getProject(routeParams.Id);\r\n\r\n scope.project.$promise.then(function () {\r\n\r\n //set project visibility defaults\r\n scope.OrganizationUser = { Level: DEFAULT_PROJECT_PERMISSION.Permission.OrgUser, PrincipalId: scope.project.OrganizationId, TargetId: scope.project.Id, TargetType: 'Project', PrincipalType: 'OrgUser' };\r\n scope.Public = { Level: DEFAULT_PROJECT_PERMISSION.Permission.Public, TargetId: scope.project.Id, PrincipalId: scope.project.OrganizationId, TargetType: 'Project', PrincipalType: 'Public' };\r\n\r\n //load them and replace if they exist\r\n scope.visibility = ProjectService.getVisibilityPermissions(scope.project.Id);\r\n scope.visibility.$promise.then(function(){\r\n scope.visibility.forEach(function(perm){\r\n if(perm.PrincipalType == 'OrgUser')\r\n scope.OrganizationUser = perm;\r\n if(perm.PrincipalType == 'Public')\r\n scope.Public = perm;\r\n })\r\n })\r\n\r\n //load our project permissions for users/groups/departments\r\n scope.permissions = ProjectService.getPrincipals(scope.project.Id);\r\n scope.permissions.$promise.then(function(){\r\n scope.users = CommonService.getUsers();\r\n scope.users.$promise.then(function(){\r\n scope.departments = CommonService.getDepartments();\r\n scope.departments.$promise.then(function(){\r\n scope.groups = CommonService.getGroups();\r\n scope.groups.$promise.then(function(){\r\n scope.filterLists();\r\n });\r\n });\r\n });\r\n });\r\n\r\n });\r\n\r\n };\r\n\r\n scope.changeOwner = function (a_selection) {\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/modal-permission-change-owner.html',\r\n controller: 'ModalChangeOwnerCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_project) {\r\n scope.reload();\r\n });\r\n };\r\n\r\n scope.canEdit = function (project) {\r\n return $rootScope.Profile.canEdit(project);\r\n };\r\n\r\n //handle favorite toggle\r\n scope.isFavorite = $rootScope.Profile.isProjectFavorite(routeParams.Id);\r\n scope.toggleFavorite = function () {\r\n UserService.toggleFavoriteProject(scope, $rootScope);\r\n }\r\n\r\n scope.reload();\r\n\r\n\r\n }\r\n\r\n];\r\n\r\nexport default project_permissions;\r\n\r\n\r\n\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport {RouterModule, Routes} from \"@angular/router\";\r\nimport {ConfirmComponent} from \"../confirm-component/confirm.component\";\r\nimport {ConfirmReviewComponent} from \"../confirm-review/confirm-review.component\";\r\n\r\nconst routes: Routes = [\r\n {path: 'inspection/:Id', component: ConfirmComponent},\r\n {path: 'review/:Id', component: ConfirmReviewComponent}\r\n]\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n RouterModule.forChild(routes)\r\n ],\r\n exports: [RouterModule]\r\n})\r\nexport class ConfirmRoutingModule { }\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {getByField, makeObjects} from \"../../../common/common-functions\";\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n//multiple activities grid\r\nvar modal_activities_grid = ['$scope', '$uibModal','$uibModalInstance','GridService','$timeout','$rootScope','DatasetService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, GridService, $timeout, $rootScope, DatasetService) {\r\n console.log(\"Inside modal-activities-grid.ts, at the top...\");\r\n\r\n $scope.pagemode = \"ImportMultipleActivities\";\r\n\r\n\r\n $uibModalInstance.rendered.then(function() {\r\n console.log(\"Rendered, so now we will activate.\");\r\n $scope.activateGrid();\r\n });\r\n\r\n $scope.system = {\r\n loading: true,\r\n messages: [ \"Processing data and preparing the grid...\"]\r\n };\r\n\r\n $scope.hasDuplicateError = false;\r\n $scope.ActivityDatesDuplicates = [];\r\n $scope.ActivitiesToSave = [];\r\n\r\n $scope.calculateStatistics = function () {\r\n\r\n $scope.ActivityDates = [];\r\n $scope.PageErrorCount = 0;\r\n\r\n if (!$scope.dataAgGridOptions.hasOwnProperty('api'))\r\n return; //not loaded yet.\r\n\r\n $scope.dataAgGridOptions.api.forEachNode(function (node) {\r\n if (node.data.rowHasError)\r\n $scope.PageErrorCount++;\r\n\r\n try {\r\n var the_date = moment(node.data.Activity.ActivityDate).format('YYYY-MM-DDTHH:mm');\r\n var the_key = the_date + \"_\" + node.data.Activity.LocationId;\r\n if (!$scope.ActivityDates.contains(the_key)) {\r\n $scope.ActivityDates.push(the_key);\r\n }\r\n }catch(e){\r\n console.warn(\"invalid date not added to ActivityDates calculation: \"+node.data.Activity.ActivityDate);\r\n console.dir(e);\r\n }\r\n });\r\n };\r\n\r\n\r\n //ag-grid - header + details --- all in one grid for multiple activities\r\n $scope.dataAgGridOptions = {\r\n suppressPropertyNamesCheck: true,\r\n animateRows: true,\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n // showToolPanel: false,\r\n columnDefs: null,\r\n rowData: null,\r\n dataChanged: false, //updated to true if ever any data is changed\r\n rowSelection: 'multiple',\r\n onSelectionChanged: function (params) {\r\n\r\n var rows = params.api.getSelectedRows();\r\n $scope.dataAgGridOptions.selectedItems.length = 0; //truncate, don't replace with [] -- otherwise it is a shadow copy\r\n rows.forEach(function (row) {\r\n $scope.dataAgGridOptions.selectedItems.push(row);\r\n });\r\n\r\n $scope.$apply(); //bump angular (won't work otherwise!)\r\n },\r\n selectedItems: [],\r\n onGridReady: function (params) {\r\n console.log(\"GRID READY fired. ------------------------------------------>>>\");\r\n $scope.system.loading = false;\r\n\r\n $scope.$apply();\r\n GridService.autosizeColumns($scope.dataAgGridOptions);\r\n\r\n },\r\n\r\n defaultColDef: {\r\n editable: true,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n rowClassRules: {\r\n 'row-validation-error': function(params) { return params.node.data.rowHasError; }\r\n },\r\n onCellEditingStarted: function (event) {\r\n //console.log('cellEditingStarted');\r\n },\r\n onCellEditingStopped: function (event) {\r\n //save the row we just edited\r\n //console.log(\"finished editing.\");\r\n //console.dir(event);\r\n\r\n if (GridService.validateCell(event)) {\r\n GridService.fireRule(\"OnChange\", event); //only fires when valid change is made\r\n }\r\n\r\n //this might be too slow, but it is nice to have...\r\n $scope.calculateStatistics();\r\n GridService.refreshRow(event);\r\n $scope.$apply();\r\n\r\n if ($scope.dataset.Config.DuplicateCheckFields && $scope.dataset.Config.DuplicateCheckFields.contains(event.colDef.DbColumnName)) {\r\n $scope.checkRowForDuplicates(event.node);\r\n }\r\n\r\n //console.log(\"all done edit validation\");\r\n\r\n },\r\n };\r\n\r\n\r\n //call to fire up the grid after the $scope.dataset is ready\r\n $scope.activateGrid = function () {\r\n console.log(\"activating grid!\");\r\n $scope.system.messages.push(\"Preparing data for grid...\");\r\n //setup grid and coldefs and then go!\r\n\r\n $scope.dataAgColumnDefs = GridService.getAgColumnDefs($scope.dataset);\r\n\r\n //setup any possible values that are needed - detail\r\n $scope.dataAgColumnDefs.DetailFields.forEach(function (fieldDef) {\r\n if (fieldDef.field == \"QAStatusId\") { //RowQAStatusId because we're in the details\r\n fieldDef.setPossibleValues(makeObjects($scope.dataset.RowQAStatuses, 'Id', 'Name'));\r\n }\r\n\r\n if (fieldDef.ControlType == 'file' || fieldDef.ControlType == 'hidden')\r\n fieldDef.hide = true;\r\n\r\n });\r\n\r\n //setup activity fields to point to the right place\r\n $scope.dataAgColumnDefs.HeaderFields.forEach(function (fieldDef) {\r\n if (fieldDef.field == \"LocationId\") {\r\n if (fieldDef.setPossibleValues) {\r\n fieldDef.setPossibleValues(makeObjects($scope.project.Locations, 'Id', 'Label'));\r\n fieldDef.field = \"Activity.\" + fieldDef.DbColumnName;\r\n }\r\n }\r\n\r\n if (fieldDef.field == \"QAStatusId\") { //ActivityQAStatusId\r\n fieldDef.setPossibleValues(makeObjects($scope.dataset.QAStatuses, 'Id', 'Name'));\r\n fieldDef.field = \"Activity.\" + fieldDef.DbColumnName;\r\n }\r\n\r\n if (fieldDef.field == \"QAComments\") {\r\n fieldDef.field = \"Activity.\" + fieldDef.DbColumnName;\r\n }\r\n\r\n if (fieldDef.field == \"ActivityDate\") {\r\n fieldDef.field = \"Activity.\" + fieldDef.DbColumnName;\r\n }\r\n\r\n if (fieldDef.ControlType == 'file' || fieldDef.ControlType == 'hidden')\r\n fieldDef.hide = true;\r\n\r\n });\r\n $scope.system.messages.push(\"Preparing grid...\");\r\n\r\n $scope.dataAgGridOptions.columnDefs = $scope.dataAgColumnDefs.HeaderFields.concat($scope.dataAgColumnDefs.DetailFields);\r\n //$scope.fields = { header: $scope.dataAgColumnDefs.HeaderFields, detail: $scope.dataAgColumnDefs.DetailFields };\r\n\r\n console.log(\"Ready to go!\");\r\n //console.dir($scope.dataAgGridOptions.columnDefs);\r\n //console.dir($scope.imported_rows);\r\n\r\n\r\n var ag_grid_div = document.querySelector('#data-import-grid') as HTMLElement; //get the container id...\r\n $scope.ag_grid = new Grid(ag_grid_div, $scope.dataAgGridOptions); //bind the grid to it.\r\n //$scope.dataAgGridOptions.api.showLoadingOverlay(); //show loading...\r\n\r\n //set the detail values into the grid\r\n //console.log(\"setting grid data\");\r\n $scope.dataAgGridOptions.api.setRowData($scope.imported_rows);\r\n\r\n //console.log(\"GRID Validate. ------------------------------------------>>>\");\r\n GridService.validateGrid($scope.dataAgGridOptions);\r\n //console.log(\"GRID Validate IS DONE ------------------------------------------>>>\");\r\n\r\n //fire any onchange rules (like watertemp C to F)\r\n GridService.fireAllOnChange($scope.dataAgGridOptions);\r\n\r\n $scope.system.messages.push(\"Checking for duplicates...\");\r\n //console.log(\"GRID Dupe check ------------------------------------------>>>\");\r\n $scope.checkAllRowsForDuplicates();\r\n //console.log(\"GRID Dupe check IS DONE ------------------------------------------>>>\");\r\n\r\n $scope.dataAgGridOptions.api.redrawRows();\r\n\r\n $scope.system.messages.push(\"Calculating statistics...\");\r\n $scope.calculateStatistics();\r\n GridService.bubbleErrors($scope.dataAgGridOptions);\r\n\r\n $scope.system.messages.push(\"Done...\");\r\n\r\n\r\n //}, 0);\r\n };\r\n\r\n //check for duplicates in all rows\r\n $scope.checkAllRowsForDuplicates = function () {\r\n\r\n if (!$scope.dataset.Config.EnableDuplicateChecking || !$scope.dataset.Config.DuplicateCheckFields.contains('ActivityDate')) {\r\n return; //early return, bail out since we aren't configured to duplicate check or don't have ActivityDate as a key\r\n }\r\n\r\n $scope.ActivityDatesChecked = [];\r\n $scope.num_checked = 0;\r\n\r\n //check for duplicate using each unique ActivityDate (if there is one defined (water temp doesn't have one))\r\n $scope.dataAgGridOptions.api.forEachNode(function (node) {\r\n var the_date = moment(node.data.Activity.ActivityDate).format('YYYY-MM-DDTHH:mm');\r\n\r\n if (!$scope.ActivityDatesChecked.contains(the_date)) {\r\n //ok, let's check this one...\r\n $scope.ActivityDatesChecked.push(the_date);\r\n $scope.checkRowForDuplicates(node);\r\n }\r\n });\r\n };\r\n\r\n //checks a row(node) for duplicate record. if so, pushes to ActivityDatesDuplicates\r\n $scope.checkRowForDuplicates = function (node) {\r\n\r\n var the_date = moment(node.data.Activity.ActivityDate).format('YYYY-MM-DDTHH:mm');\r\n\r\n var row = {\r\n 'Activity': {\r\n 'ActivityDate': node.data.Activity.ActivityDate,\r\n 'LocationId': node.data.Activity.LocationId,\r\n 'Id': 0,\r\n }\r\n };\r\n\r\n //if this is already marked as a duplicate, don't bother sending off another request...\r\n\r\n var saveResult = {};\r\n var dupe_promise = GridService.checkForDuplicates($scope.dataset, $scope.dataAgGridOptions, row, saveResult );\r\n if (dupe_promise !== null) {\r\n dupe_promise.$promise.then(function () {\r\n $scope.num_checked++;\r\n // @ts-ignore\r\n if (saveResult.hasError) { //is a duplicate!\r\n var existing_dupe = getByField($scope.ActivityDatesDuplicates, the_date, 'ActivityDate');\r\n if (existing_dupe) {\r\n existing_dupe.marked = false;\r\n } else {\r\n // @ts-ignore\r\n $scope.ActivityDatesDuplicates.push({ 'ActivityDate': the_date, 'LocationId': node.data.Activity.LocationId, 'marked': false, 'message': saveResult.error, 'row': row }); //will be marked by a watcher\r\n }\r\n }\r\n if ($scope.num_checked == $scope.ActivityDatesChecked.length) {\r\n //console.log(\" >>>>>>>>> ok all done with all rows! --------------------\");\r\n //ok, duplicate checking promises are all back -- let's mark any in our grid that are duplicates and then bubble them up.\r\n var hadAnyError = false;\r\n\r\n $scope.ActivityDatesDuplicates.forEach(function (dupe) {\r\n if (!dupe.marked && $scope.dataAgGridOptions.api) {\r\n dupe.marked = true;\r\n $scope.dataAgGridOptions.api.forEachNode(function (node) {\r\n var the_date = moment(node.data.Activity.ActivityDate).format('YYYY-MM-DDTHH:mm');\r\n\r\n if (the_date == dupe.ActivityDate) {\r\n hadAnyError = true;\r\n GridService.addErrorToNode(node, dupe.message, null);\r\n }\r\n });\r\n }\r\n });\r\n\r\n if (hadAnyError) {\r\n $scope.hasDuplicateError = hadAnyError;\r\n $scope.dataAgGridOptions.api.redrawRows();\r\n $scope.calculateStatistics();\r\n GridService.bubbleErrors($scope.dataAgGridOptions);\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n\r\n $scope.save = function () {\r\n //compose an activity for each and give a condition \"we will save 17 new activities\"\r\n //lets get a list of all activities that we will save\r\n\r\n //if (($scope.dataset.Config) && ($scope.dataset.Config.AllowSaveWithErrors))\r\n //{\r\n // //if ($scope.PageErrorCount > 0) {\r\n // if (($scope.dataset.Config.AllowSaveWithErrors === false) && ($scope.PageErrorCount > 0)) {\r\n // alert(\"There are errors on the page. Please fix them before saving.\");\r\n // console.dir($scope.headerFieldErrors);\r\n // return;\r\n // }\r\n //}\r\n\r\n console.log(\"Inside modal-activities-grid.ts, $scope.save...\");\r\n\r\n if ($scope.PageErrorCount > 0)\r\n {\r\n if (($scope.dataset.Config) && ($scope.dataset.Config.AllowSaveWithErrors))\r\n {\r\n if ($scope.dataset.Config.AllowSaveWithErrors === false)\r\n {\r\n alert(\"There are errors on the page. Please fix them before saving.\");\r\n console.dir($scope.headerFieldErrors);\r\n return;\r\n }\r\n else\r\n {\r\n // We have a dataset.Config, AND AllowSaveWithErrors, AND it is true...\r\n // Continue with the save, even with the errors.\r\n }\r\n }\r\n else\r\n {\r\n // We have a dataset.Config, but no AllowSaveWithErrors,\r\n // So we don't save with the errors.\r\n alert(\"There are errors on the page. Please fix them before saving.\");\r\n console.dir($scope.headerFieldErrors);\r\n return;\r\n }\r\n }\r\n\r\n $scope.system.messages.length = 0;\r\n $scope.system.loading = true;\r\n\r\n var unique_dates = [];\r\n $scope.ActivityDatesDuplicates.forEach(function (dupe) { unique_dates.push(dupe.ActivityDate+\"_\"+dupe.LocationId) });\r\n\r\n var missing_fields = false;\r\n\r\n $scope.dataAgGridOptions.api.forEachNode(function (node) {\r\n if (!node.data.Activity.ActivityDate || !node.data.Activity.LocationId) {\r\n missing_fields = true;\r\n console.log(\"uhoh - missing stuff from activity:\");\r\n console.dir(node.data.Activity);\r\n }\r\n var the_date = moment(node.data.Activity.ActivityDate).format('YYYY-MM-DDTHH:mm');\r\n var the_key = the_date + \"_\" + node.data.Activity.LocationId;\r\n\r\n // @ts-ignore\r\n if (!unique_dates.contains(the_key)) {\r\n unique_dates.push(the_key);\r\n $scope.ActivitiesToSave.push({ 'ActivityDate': the_date, 'Key': the_key, 'LocationId': node.data.Activity.LocationId });\r\n }\r\n\r\n });\r\n\r\n if (missing_fields) {\r\n alert(\"All rows require an ActivityDate and Location. Please check your data and try again.\");\r\n $scope.ActivitiesToSave.length = 0;\r\n return;\r\n }\r\n\r\n //console.dir($scope.ActivitiesToSave);\r\n\r\n if (!confirm(\"A total of \" + $scope.ActivitiesToSave.length + \" activities will be saved.\")) {\r\n $scope.system.loading = false;\r\n $scope.ActivitiesToSave.length = 0;\r\n return;\r\n }\r\n\r\n $scope.CallingPage = \"ImportMultipleActivities\";\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-editor/templates/modal-save-status.html',\r\n controller: 'ModalSaveStatusCtrl',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n\r\n // ***********************\r\n // Moved the code below here to modal-save-status.ts\r\n // $scope.ActivitiesToSave.forEach(function (activity) {\r\n // //compose our payload\r\n // var payload = {\r\n // 'Activity': null,\r\n // 'DatasetId': $scope.dataset.Id,\r\n // 'ProjectId': $scope.project.Id,\r\n // 'UserId': $rootScope.Profile.Id,\r\n // 'deletedRowIds': [],\r\n // 'editedRowIds': [],\r\n // 'header': null,\r\n // 'details': [],\r\n // };\r\n\r\n // $scope.dataAgGridOptions.api.forEachNode(function (node, index) {\r\n // var the_date = moment(node.data.Activity.ActivityDate).format('YYYY-MM-DDTHH:mm');\r\n\r\n // if (activity.ActivityDate == the_date && node.data.Activity.LocationId == activity.LocationId) {\r\n // //console.dir(node);\r\n // if (payload.header == null) {\r\n // payload.Activity = node.data.Activity;\r\n // payload.header = {};\r\n\r\n // $scope.dataAgColumnDefs.HeaderFields.forEach(function (header_field) {\r\n // payload.header[header_field.DbColumnName] = node.data[header_field.DbColumnName];\r\n // })\r\n // //add the ActivityQAStatus back in with values from the activity\r\n // payload.Activity.ActivityQAStatus = {\r\n // 'Comments': node.data.Activity.QAComments,\r\n // 'QAStatusId': node.data.Activity.QAStatusId,\r\n // };\r\n // delete payload.header['QAStatusId'];\r\n // delete payload.header['QAComments'];\r\n // delete payload.header['LocationId'];\r\n // delete payload.header['ActivityDate'];\r\n\r\n // }\r\n // //console.dir(node);\r\n // if (node.data.data_row_hasdata) {\r\n\r\n // var the_detail = { 'QAStatusId': node.data['QAStatusId'] };\r\n\r\n // $scope.dataAgColumnDefs.DetailFields.forEach(function (detail_field) {\r\n // if (detail_field.ControlType == \"multiselect\" && Array.isArray(node.data[detail_field.DbColumnName]))\r\n // the_detail[detail_field.DbColumnName] = angular.toJson(node.data[detail_field.DbColumnName]);\r\n // else\r\n // the_detail[detail_field.DbColumnName] = node.data[detail_field.DbColumnName];\r\n // });\r\n // payload.details.push(the_detail);\r\n // //console.dir(the_detail);\r\n // } else {\r\n // console.log(\"skipping data for this row because it was empty!\");\r\n // }\r\n\r\n // }\r\n // });\r\n\r\n // activity.numRecords = payload.details.length;\r\n\r\n // //console.dir(payload);\r\n // activity.result = DatasetService.saveActivities(payload);\r\n\r\n // activity.result.$promise.then(\r\n // function () {\r\n // activity.result.success = \"Save successful.\";\r\n // console.log(\"Success!\");\r\n // $scope.system.loading = false;\r\n // },\r\n // function (data) {\r\n // console.log(\"Failure!\");\r\n // $scope.system.loading = false;\r\n // //console.dir(data);\r\n // let theErrorText: any;\r\n // if (typeof data.data !== 'undefined') {\r\n // if (typeof data.data.ExceptionMessage !== 'undefined') {\r\n // theErrorText = data.data.ExceptionMessage;\r\n // console.log(\"Save error: theErrorText = \" + theErrorText);\r\n // }\r\n\r\n // }\r\n // activity.result.error = \"Error: \" + theErrorText ;\r\n\r\n // });\r\n\r\n // });\r\n // ***********************\r\n\r\n\r\n\r\n\r\n //$scope.dataAgGridOptions.api.forEachNode(function (node) {\r\n\r\n //$scope.ActivityDatesDuplicates.forEach(function(unique_activity\r\n\r\n //$scope.dataAgColumnDefs.HeaderFields.forEach(\r\n\r\n\r\n //$uibModalInstance.close();\r\n };\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n $scope.close = function () {\r\n $uibModalInstance.close();\r\n }\r\n }\r\n];\r\n\r\nexport default modal_activities_grid;\r\n","declare const d3: any;\r\n\r\nvar electrofishing_chartservice = [\r\n function(){\r\n var service = {\r\n\r\n \tdataset: \"ElectroFishing\",\r\n\r\n\t\t\t getChartConfig: function () {\r\n\r\n var options = {\r\n chart: {\r\n type: 'multiBarChart',\r\n height: 230,\r\n width: 500,\r\n x: function (d) { return d.label; },\r\n y: function (d) { return d.value; },\r\n showLabels: true,\r\n showControls: false,\r\n //duration: 500,\r\n labelThreshold: 0.01,\r\n //labelSunbeamLayout: true,\r\n showLegend: false,\r\n yAxis: {\r\n tickFormat: function (d) {\r\n return d3.format(\"~.0\")(d);\r\n },\r\n }\r\n },\r\n title: {\r\n enable: true,\r\n text: 'Fish Count'\r\n },\r\n };\r\n\r\n return options;\r\n\r\n },\r\n\r\n getChartData: function () {\r\n\r\n var dataCalc = {\r\n 'Total': {}\r\n };\r\n var data = [];\r\n //count up the total by species\r\n data.forEach(function (row, key) {\r\n\r\n var num = row.FishCount || 1;\r\n\t\t\t var species = row.SpeciesRunRearing || row.OtherSpecies || row.Species || 'Not specified';\r\n\r\n if(!dataCalc['Total'][species])\r\n dataCalc['Total'][species] = num;\r\n else\r\n dataCalc['Total'][species] += num;\r\n\r\n });\r\n\r\n\r\n\r\n Object.keys(dataCalc).forEach(function (key) {\r\n var the_count = [];\r\n Object.keys(dataCalc[key]).forEach(function (species) {\r\n var val = dataCalc[key][species];\r\n the_count.push({ 'label': species, 'value': val });\r\n });\r\n\r\n data.push({\r\n \"key\": key,\r\n //\"color\": color[sex],\r\n \"values\": the_count\r\n });\r\n });\r\n\r\n return data;\r\n },\r\n\r\n\r\n };\r\n\r\n return service;\r\n }\r\n];\r\n\r\nexport default electrofishing_chartservice;\r\n","import {getById} from \"../../../common/common-functions\";\r\n\r\nvar modal_qa_update = ['$scope', 'DatasetService', 'ProjectService', '$uibModalInstance',\r\n function ($scope, DatasetService, ProjectService, $uibModalInstance) {\r\n\r\n $scope.NewActivityStatus = {};\r\n\r\n $scope.message = \"\";\r\n\r\n $scope.save = function () {\r\n var result = DatasetService.updateQaStatus(\r\n $scope.row.Activity.Id,\r\n $scope.NewActivityStatus.QAStatusId,\r\n $scope.NewActivityStatus.Comments\r\n );\r\n\r\n console.dir(result);\r\n result.$promise.then(function () {\r\n\r\n $scope.row.Activity.ActivityQAStatus.QAStatus = getById($scope.dataset.QAStatuses,$scope.NewActivityStatus.QAStatusId);\r\n $scope.row.Activity.ActivityQAStatus.User = $scope.Profile;\r\n $scope.row.Activity.ActivityQAStatus.QAStatusId = $scope.NewActivityStatus.QAStatusId;\r\n $scope.row.Activity.ActivityQAStatus.Comments = $scope.NewActivityStatus.Comments;\r\n\r\n console.dir($scope.row.Activity.ActivityQAStatus);\r\n\r\n $uibModalInstance.dismiss();\r\n }, function () {\r\n $scope.message = \"There was a problem saving the new status.\";\r\n });\r\n\r\n };\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_qa_update;\r\n","import * as moment from 'moment';\r\n\r\ndeclare const d3:any;\r\n\r\nvar user_analytics = ['$scope', 'UserService',\r\n function ($scope, UserService) {\r\n\r\n $scope.UserLoginsPastMonth = UserService.getUserLoginsPastMonth();\r\n $scope.UserRequestsTotalPastMonth = UserService.getUserRequestsTotalPastMonth();\r\n $scope.DatasetRequestsTotalPastMonth = UserService.getDatasetRequestsTotalPastMonth();\r\n $scope.LastUpdatedDatasets = UserService.getLastUpdatedDatasets();\r\n\r\n $scope.LoginsToday = 0;\r\n $scope.LoginsMonth = 0;\r\n $scope.TopRequestsMonth = 0;\r\n $scope.LatestUpload = \"\";\r\n\r\n $scope.DatasetRequestsTotalPastMonth.$promise.then(function () {\r\n $scope.TopRequestsMonth = $scope.DatasetRequestsTotalPastMonth[0].Requests;\r\n });\r\n\r\n $scope.LastUpdatedDatasets.$promise.then(function () {\r\n $scope.LatestUpload = $scope.LastUpdatedDatasets[0].LastUpdated;\r\n });\r\n\r\n $scope.UserLoginsPastMonth.$promise.then(function () {\r\n var today = moment().format('YYYY-MM-DD');\r\n\r\n $scope.UserLoginsPastMonth.forEach(function (row) {\r\n if (today == row.RequestDate) //if it is today\r\n $scope.LoginsToday = row.Logins;\r\n\r\n $scope.LoginsMonth += row.Logins; //add up our logins this month\r\n\r\n $scope.loginData[0].values.push(row);\r\n\r\n });\r\n });\r\n\r\n\r\n\r\n //UserLoginsPastMonth graph config\r\n $scope.loginOptions = {\r\n chart: {\r\n type: 'multiBarChart',\r\n width: 700,\r\n height: 400,\r\n margin: {\r\n top: 20,\r\n right: 20,\r\n bottom: 65,\r\n left: 50\r\n },\r\n x: function(d) { return moment(d.RequestDate).format('MMM D') },\r\n y: function (d) { return d.Logins },\r\n showLabels: true,\r\n showValues: true,\r\n showLegend: false,\r\n stacked: false,\r\n showControls: false,\r\n reduceXTicks: false,\r\n text: function(d){return d.Logins;}, //show label\r\n transitionDuration: 500,\r\n xAxis: {\r\n rotateLabels: 40,\r\n },\r\n yAxis: {\r\n axisLabel: '# logins',\r\n axisLabelDistance: -10,\r\n tickFormat: function (d) {\r\n return d3.format(\"~.0\")(d);\r\n },\r\n },\r\n }\r\n };\r\n $scope.loginData = [\r\n {\r\n \"key\" : \"Logins\",\r\n \"bar\" : true,\r\n \"values\" : []\r\n }\r\n ];\r\n\r\n }\r\n];\r\n\r\nexport default user_analytics;\r\n","import * as angular from 'angular';\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar admin_view = ['$scope', '$uibModal', 'DatasetService', 'AdminService',\r\n function ($scope, $uibModal, DatasetService, AdminService) {\r\n\r\n if (!$scope.Profile.isAdmin()) {\r\n angular.rootScope.go(\"/unauthorized\");\r\n }\r\n\r\n\r\n $scope.datastoresIgnore = [\"ActivitySystemFields\", \"LocationSystemFields\"];\r\n\r\n $scope.datastores = DatasetService.getDatastores();\r\n\r\n $scope.datastores.$promise.then(function () {\r\n $scope.datasets = DatasetService.getAllDatasetsList();\r\n\r\n $scope.datasets.$promise.then(function () {\r\n\r\n var CellRendererDataset = function (params) {\r\n return '';\r\n };\r\n\r\n var CellRendererDatastore = function (params) {\r\n return '';\r\n };\r\n\r\n var datasetColumnDefs = [\r\n {\r\n field: 'Name',\r\n headerName: 'Dataset Name',\r\n cellRenderer: CellRendererDataset,\r\n width: 300,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text',\r\n sort: 'asc'\r\n },\r\n {\r\n field: 'DatastoreName',\r\n headerName: 'Datastore Name',\r\n width: 280,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n {field: 'ProjectName', headerName: 'Project', width: 300, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n ];\r\n\r\n $scope.datasetGridOptions = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: datasetColumnDefs,\r\n rowData: [],\r\n onGridReady: function (params) {\r\n params.api.sizeColumnsToFit();\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n var datastoreColumnDefs = [\r\n {\r\n field: 'Name',\r\n headerName: 'Datastore Name',\r\n cellRenderer: CellRendererDatastore,\r\n width: 280,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text',\r\n sort: 'asc'\r\n },\r\n {field: 'TableType', headerName: 'Table Type', width: 280, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n {\r\n field: 'hasDataSet',\r\n headerName: \"Datasets Exist\",\r\n width: 200,\r\n menuTabs: ['filterMenuTab'],\r\n valueGetter: function (data) {\r\n if (data.data.hasDataset) return \"Yes\"; else return \"No\";\r\n },\r\n filter: true\r\n }\r\n ];\r\n\r\n $scope.datastoreGridOptions = {\r\n columnDefs: datastoreColumnDefs,\r\n rowData: [],\r\n onGridReady: function (params) {\r\n params.api.sizeColumnsToFit();\r\n },\r\n selectedItem: null,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n $scope.datastoreGridOptions.selectedItem = $scope.datastoreGridOptions.api.getSelectedRows()[0];\r\n $scope.$apply();\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n\r\n var dataset_grid_div = document.querySelector('#datasets-list-grid') as HTMLElement; //get the container id...\r\n $scope.dataset_grid = new Grid(dataset_grid_div, $scope.datasetGridOptions); //bind the grid to it.\r\n $scope.datasetGridOptions.api.setRowData($scope.datasets);\r\n\r\n $scope.tempDatastores = [];\r\n\r\n //see which datastores have a dataset already and remove any datastore in our ignore list\r\n $scope.datastores.forEach(function (datastore, index) {\r\n\r\n if (!$scope.datastoresIgnore.contains(datastore.Name)) {\r\n $scope.tempDatastores.push(datastore);\r\n }\r\n\r\n //iterate the datasets and mark this datastore as having a dataset if it does\r\n $scope.datasets.forEach(function (dataset) {\r\n if (dataset.DatastoreId == datastore.Id) {\r\n datastore.hasDataset = true;\r\n return;\r\n }\r\n })\r\n\r\n if (!datastore.hasDataset) {\r\n datastore.hasDataset = false;\r\n }\r\n\r\n })\r\n\r\n $scope.datastores = $scope.tempDatastores;\r\n\r\n var datastore_grid_div = document.querySelector('#datastores-list-grid') as HTMLElement; //get the container id...\r\n $scope.datastore_grid = new Grid(datastore_grid_div, $scope.datastoreGridOptions); //bind the grid to it.\r\n $scope.datastoreGridOptions.api.setRowData($scope.datastores);\r\n })\r\n\r\n\r\n });\r\n\r\n $scope.createDatastore = function () {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/modal-datastore.html',\r\n controller: 'ModalDatastore',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_datastore) {\r\n saved_datastore.hasDataset = false;\r\n $scope.hasNewDatastore = true;\r\n $scope.datastores.push(saved_datastore);\r\n $scope.datastoreGridOptions.api.setRowData($scope.datastores);\r\n });\r\n\r\n };\r\n\r\n $scope.removeDatastore = function () {\r\n if (confirm(\"Are you sure you want to delete this datastore, fields, and table(s)? There is no Undo.\")) {\r\n var deleted = AdminService.removeDatastore($scope.datastoreGridOptions.selectedItem.Id);\r\n deleted.$promise.then(function () {\r\n $scope.datastores.forEach(function (store, index) {\r\n if (store.Id == $scope.datastoreGridOptions.selectedItem.Id) {\r\n $scope.datastores.splice(index, 1);\r\n }\r\n });\r\n $scope.datastoreGridOptions.selectedItem = null;\r\n $scope.datastoreGridOptions.api.setRowData($scope.datastores);\r\n }, function (error) {\r\n console.log(\"there was an error.\");\r\n console.dir(error);\r\n })\r\n }\r\n }\r\n\r\n $scope.regenerateViews = function () {\r\n if (confirm(\"Are you sure you want to regenerate views for all datasets? There is no Undo.\")) {\r\n $scope.RegenerationResults = AdminService.regenerateViews();\r\n }\r\n }\r\n }\r\n];\r\n\r\nexport default admin_view;\r\n","import {Component, ElementRef, OnDestroy, OnInit} from '@angular/core';\r\nimport {DISPLAY_NAME, \r\n PUBLIC_OR_PRIVATE, \r\n REPORTSERVER_URL,\r\n CDMS_DOCUMENTATION_URL,\r\n CTUIR_AGOL_URL,\r\n CTUIR_GIS_URL,\r\n GIS_TAX_PARCELS_URL,\r\n TAX_PARCEL_VIEWER_URL,\r\n PARCEL_PERMIT_SEARCH_URL,\r\n TPO_REPORTS_URL\r\n} from 'src/appjsLegacy/config';\r\nimport {AppjsLoaderService} from './appjs-loader.service';\r\nimport {ProfileService} from '../login/profile.service';\r\nimport {Observable} from \"rxjs\";\r\nimport {LoginService} from \"../login/components/login.service\";\r\nimport {LogoutComponent} from \"../login/components/logout/logout.component\";\r\n\r\n\r\n@Component({\r\n selector: 'app-appjs',\r\n templateUrl: './appjs.component.html',\r\n styleUrls: ['./appjs.component.css']\r\n})\r\nexport class AppjsComponent implements OnInit, OnDestroy {\r\n public DISPLAY_NAME;\r\n public REPORTSERVER_URL;\r\n public PUBLIC_OR_PRIVATE;\r\n public CDMS_DOCUMENTATION_URL;\r\n public CTUIR_AGOL_URL;\r\n public CTUIR_GIS_URL;\r\n public GIS_TAX_PARCELS_URL;\r\n public TAX_PARCEL_VIEWER_URL;\r\n public PARCEL_PERMIT_SEARCH_URL;\r\n public TPO_REPORTS_URL;\r\n // public Profile;\r\n\r\n\r\n constructor(\r\n private lazyLoader: AppjsLoaderService,\r\n private elRef: ElementRef,\r\n public profileService: ProfileService,\r\n public logoutComponent: LogoutComponent,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.DISPLAY_NAME = DISPLAY_NAME;\r\n this.REPORTSERVER_URL = REPORTSERVER_URL;\r\n this.PUBLIC_OR_PRIVATE = PUBLIC_OR_PRIVATE;\r\n this.CDMS_DOCUMENTATION_URL = CDMS_DOCUMENTATION_URL;\r\n this.CTUIR_AGOL_URL = CTUIR_AGOL_URL;\r\n this.CTUIR_GIS_URL = CTUIR_GIS_URL;\r\n this.GIS_TAX_PARCELS_URL = GIS_TAX_PARCELS_URL;\r\n this.TAX_PARCEL_VIEWER_URL = TAX_PARCEL_VIEWER_URL;\r\n this.PARCEL_PERMIT_SEARCH_URL = PARCEL_PERMIT_SEARCH_URL;\r\n this.TPO_REPORTS_URL = TPO_REPORTS_URL;\r\n this.lazyLoader.load(this.elRef.nativeElement);\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.lazyLoader.destroy();\r\n }\r\n}\r\n","//modal to add/edit violation event\r\nimport * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {modalFiles_setupControllerForFileChooserModal} from \"../../../../core/common/components/file/modal-files\";\r\nimport {EHS_PROJECTID} from \"../../../../config\";\r\n\r\nvar modal_edit_violationevent = ['$rootScope','$scope', '$uibModal','$uibModalInstance','GridService','Upload','ViolationService',\r\n\r\n function ($rootScope, $scope, $uibModal, $uibModalInstance, GridService, $upload, ViolationService) {\r\n\r\n $scope.violation = $scope.row; // parent violation\r\n $scope.row = $scope.activity_modal; //event form -- note: this creates a LOCAL scope variable for the EVENT that will go away when this scope goes away...\r\n\r\n $scope.Results = {\r\n SuccessMessage: null,\r\n FailureMessage: null,\r\n DoneSaving: false,\r\n };\r\n\r\n $scope.mode = ($scope.row.Id) ? \"edit\" : \"new\";\r\n\r\n if (!$scope.row.Id) {\r\n $scope.row.EventDate = moment().format('L');\r\n $scope.row.RequestDate = moment().format('L');\r\n }\r\n else {\r\n //if(!$scope.row.ResponseDate)\r\n // $scope.row.ResponseDate = moment().format('L');\r\n\r\n if(!$scope.row.Reviewer)\r\n $scope.row.Reviewer = $scope.Profile.Fullname;\r\n }\r\n\r\n if (!$scope.row.Files)\r\n $scope.row.Files = [];\r\n\r\n //set up for attaching files\r\n //modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.ViolationFiles);\r\n $scope.typeOfFilesToCheck = \"ViolationFiles\";\r\n modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.typeOfFilesToCheck);\r\n\r\n $scope.save = function () {\r\n\r\n $scope.Results.DoneSaving = false;\r\n $scope.Results.IsSaving = true;\r\n\r\n $scope.row.ByUser = $scope.Profile.Id;\r\n\r\n var target = '/api/v1/violation/uploadfile';\r\n\r\n var data = {\r\n ProjectId: EHS_PROJECTID,\r\n SubprojectId: $scope.violation.Id, //parent violation id\r\n ItemId: $scope.row.Id //event id\r\n };\r\n\r\n if (Array.isArray($scope.row.Files)) {\r\n if ($scope.row.Files.length == 0)\r\n delete $scope.row.Files;\r\n else\r\n $scope.row.Files = angular.toJson($scope.row.Files);\r\n }\r\n\r\n var to_save = angular.copy($scope.row);\r\n\r\n /*\r\n if($scope.row.FilesToInclude){\r\n var new_files = [];\r\n $scope.row.FilesToInclude.forEach(function(file){\r\n console.dir(file);\r\n file = angular.fromJson(file);\r\n delete file.User;\r\n new_files.push(file);\r\n })\r\n to_save.FilesToInclude = new_files;\r\n }else{\r\n to_save.FilesToInclude = [];\r\n }\r\n*/\r\n //if this is a new event, save it first to get the ID\r\n if (!$scope.row.Id) {\r\n\r\n var new_event = ViolationService.saveViolationEvent(to_save);\r\n\r\n new_event.$promise.then(function () {\r\n console.log(\"done and success saving event!\");\r\n $scope.row.Id = data.ItemId = new_event.Id;\r\n\r\n $scope.handleFilesToUploadRemove($scope.row, data, target, $upload, $rootScope, $scope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n });\r\n\r\n } else {\r\n $scope.handleFilesToUploadRemove($scope.row, data, target, $upload, $rootScope, $scope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n }\r\n\r\n };\r\n\r\n //callback that is called from modalFile to do the actual file removal (varies by module)\r\n $scope.modalFile_doRemoveFile = function (file_to_remove, saveRow) {\r\n //console.dir(file_to_remove);\r\n return ViolationService.deleteViolationFile(EHS_PROJECTID, $scope.violation.Id, saveRow.Id, file_to_remove);\r\n };\r\n\r\n //call back from save above once the files are done processing and we're ready to save the item\r\n $scope.modalFile_saveParentItem = function (saveRow) {\r\n\r\n //save again to update with the files we uploaded\r\n $scope.saved_event = ViolationService.saveViolationEvent(saveRow);\r\n\r\n $scope.saved_event.$promise.then(function () {\r\n\r\n $scope.Results.DoneSaving = true;\r\n\r\n console.log(\"done and success updating the files\");\r\n $scope.Results.SuccessMessage = \"Saved.\";\r\n\r\n\r\n }, function (data) {\r\n console.error(\"failure!\");\r\n console.dir(data);\r\n $scope.Results.FailureMessage = \"There was a problem saving or sending notifications.\";\r\n $scope.Results.DoneSaving = false;\r\n });\r\n\r\n };\r\n\r\n $scope.close = function () {\r\n $uibModalInstance.close($scope.saved_event);\r\n };\r\n\r\n\r\n //fire validation for all columns when we load (if we are editing)\r\n if ($scope.mode === 'edit') {\r\n $scope.violationEventsGrid.columnDefs.forEach(function (field) {\r\n $scope.onHeaderEditingStopped(field);\r\n });\r\n }\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n $scope.getFileLabel = function(file){\r\n return file.Name + ((file.Description) ? \" (\"+file.Description+\")\" : \"\");\r\n }\r\n\r\n //setup an event listener that fires every time a header field is changed.\r\n $rootScope.$on('headerEditingStopped', function (event, field) {\r\n // anything?\r\n });\r\n\r\n}];\r\n\r\nexport default modal_edit_violationevent;\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {EsriMapComponent} from \"../esri-map/esri-map.component\";\r\nimport Map from \"@arcgis/core/Map\";\r\nimport MapView from \"@arcgis/core/views/MapView\";\r\nimport Point from \"@arcgis/core/geometry/Point\";\r\nimport Graphic from \"@arcgis/core/Graphic\";\r\nimport FeatureLayer from \"@arcgis/core/layers/FeatureLayer\";\r\nimport GraphicsLayer from \"@arcgis/core/layers/GraphicsLayer\";\r\nimport SpatialReference from \"@arcgis/core/geometry/SpatialReference\";\r\nimport {\r\n BING_KEY,\r\n datasetActivitiesBasemapConfig, \r\n defaultLayer,\r\n GEOMETRY_SERVICE_URL,\r\n NAD83_SPATIAL_REFERENCE, \r\n proxyUrl, \r\n PUBLIC_OR_PRIVATE,\r\n ENVIRONMENT,\r\n CDMS_POINTS_TEST_URL,\r\n CDMS_POINTS_PROD_URL\r\n} from \"../../../appjsLegacy/config\";\r\n// import GeometryService from \"@arcgis/core/tasks/GeometryService\";\r\nimport ProjectParameters from \"@arcgis/core/rest/support/ProjectParameters\";\r\nimport SimpleMarkerSymbol from \"@arcgis/core/symbols/SimpleMarkerSymbol\";\r\nimport * as geometryServ from \"@arcgis/core/rest/geometryService\";\r\nimport BingMapsLayer from \"@arcgis/core/layers/BingMapsLayer\";\r\nimport TileLayer from \"@arcgis/core/layers/TileLayer\";\r\nimport {addProxyRule} from \"@arcgis/core/core/urlUtils\";\r\nimport * as watchUtils from \"@arcgis/core/core/watchUtils\";\r\n\r\n@Component({\r\n selector: 'habitat-map',\r\n templateUrl: './habitat-map.component.html',\r\n styleUrls: ['./habitat-map.component.scss']\r\n})\r\nexport class HabitatMapComponent extends EsriMapComponent implements OnInit, OnChanges {\r\n @ViewChild('mapViewNode', {static: true}) private habitatViewElement: ElementRef;\r\n @Input() zoom: number;\r\n @Input() center: string;\r\n @Input() basemap: string;\r\n @Input() url: string;\r\n @Input() row: any;\r\n @Input() project: any;\r\n @Input() inPayload: any;\r\n @Input() deleteIds: any[];\r\n private SaveMessage: string;\r\n\r\n @Input()\r\n set gridSelectIds(val: any[]) {\r\n this.showSelectedLocationsById(val)\r\n }\r\n\r\n @Input()\r\n set locationObjectIds(val: any[]) {\r\n this.showLocationsById(val);\r\n }\r\n\r\n // @Output() handleUploadRemove: EventEmitter = new EventEmitter();\r\n @Output() updateLocation: EventEmitter = new EventEmitter();\r\n @Output() sde: EventEmitter = new EventEmitter();\r\n\r\n // SdeObjectId: number;\r\n OldSdeObjectId: number;\r\n\r\n newPoint: Point;\r\n newGraphic: Graphic;\r\n\r\n // SaveMessage: string;\r\n selectedBasemap: string;\r\n basemaps: any[];\r\n map: Map;\r\n mapView: MapView;\r\n locationLayer: FeatureLayer;\r\n pointsLayer: GraphicsLayer;\r\n spatialReference = new SpatialReference({wkid: 102100});\r\n selectedFeature: any;\r\n selectedGraphic: any;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.createMap();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n // super.ngOnChanges(changes);\r\n console.log(changes);\r\n console.log(\"this.inPaylaod (ngOnChanges) is next...\");\r\n console.log(this.inPayload);\r\n\r\n // Note: ngOnChanges runs whenever these is a change to the value it has.\r\n // In this case, it has inPayload.\r\n // So, when in PayLoad changes, it causes this to run.\r\n // Therefore, we added IsFirstRun in modal-edit-location.ts, $scope.save,\r\n // so that this page can keep track of whether it has run already or not.\r\n // Thereby, we keep this to only run once (add a new location only once).\r\n if (this.inPayload && this.inPayload.IsFirstRun)\r\n {\r\n if (changes.hasOwnProperty('inPayload')) {\r\n if (this.inPayload != undefined && this.inPayload.hasOwnProperty('Location')) {\r\n if (this.inPayload.hasOwnProperty('Update')) {\r\n console.log('update')\r\n console.log(this.inPayload)\r\n this.row = this.inPayload.Location;\r\n this.project = this.inPayload.ProjectId\r\n this.updateExisting();\r\n } else {\r\n console.log('new')\r\n console.log(this.inPayload)\r\n this.project = this.inPayload.ProjectId\r\n this.row = this.inPayload.Location;\r\n this.newLocation();\r\n }\r\n }\r\n }\r\n\r\n this.inPayload.IsFirstRun = false;\r\n }\r\n }\r\n\r\n updateLayers() {\r\n console.log(\"Inside this.map.js, Changing Layer: \" + this.selectedBasemap);\r\n\r\n try {\r\n //console.log(\"Loading layer: \" + datasetActivitiesBasemapConfig[this.selectedBasemap].ServiceURL);\r\n\r\n this.map.removeAll();\r\n\r\n let new_layer = undefined;\r\n var bing_layers_map = {\r\n BingMapsRoad: new BingMapsLayer({style: 'road', key: BING_KEY}),\r\n BingMapsAerial: new BingMapsLayer({style: 'aerial', key: BING_KEY}),\r\n BingMapsHybrid: new BingMapsLayer({style: 'hybrid', key: BING_KEY}),\r\n };\r\n\r\n console.dir(bing_layers_map);\r\n //add the selected basemap\r\n if (datasetActivitiesBasemapConfig[this.selectedBasemap].library == 'CTUIR')\r\n new_layer = new TileLayer({url: datasetActivitiesBasemapConfig[this.selectedBasemap].ServiceURL});\r\n else if (datasetActivitiesBasemapConfig[this.selectedBasemap].library == 'Esri') {\r\n //new_layer = new esri.layers.TileLayer(datasetActivitiesBasemapConfig[this.selectedBasemap].ServiceURL);\r\n //new_layer = new esri.layers.TileLayer(\"http://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer\");\r\n // new_layer = new TileLayer(datasetActivitiesBasemapConfig[this.selectedBasemap].type);\r\n new_layer = new TileLayer({url: 'http://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer'});\r\n console.log(\"Created new_layer using ESRI...\");\r\n } else if (datasetActivitiesBasemapConfig[this.selectedBasemap].library == 'Bing') {\r\n new_layer = new BingMapsLayer({\r\n key: BING_KEY,\r\n style: bing_layers_map[datasetActivitiesBasemapConfig[this.selectedBasemap].type]\r\n });\r\n console.log(\"Created new_layer using Bing...\");\r\n }\r\n\r\n this.map.layers.add(new_layer);\r\n // this.map.currentBasemapLayer = new_layer;\r\n\r\n // Somehow, this.url gets set to the production feature layer service url.\r\n // Therefore, we must set it to the correct one for our environment.\r\n if (this.url) {\r\n if (ENVIRONMENT === \"prod\")\r\n {\r\n this.url = CDMS_POINTS_PROD_URL;\r\n }\r\n else\r\n {\r\n this.url = CDMS_POINTS_TEST_URL;\r\n }\r\n console.log(\"habitat-map-component: this.url = \" + this.url);\r\n\r\n this.locationLayer = new FeatureLayer({url: this.url});\r\n this.map.layers.add(this.locationLayer);\r\n this.pointsLayer = new GraphicsLayer();\r\n this.map.layers.add(this.pointsLayer);\r\n }\r\n\r\n\r\n console.log(\"done!\");\r\n } catch (e) {\r\n console.dir(e);\r\n }\r\n }\r\n\r\n createMap() {\r\n\r\n // setup our map options based on the attributes and scope\r\n this.map = new Map();\r\n\r\n\r\n if (PUBLIC_OR_PRIVATE === \"private\") {\r\n // declare our map\r\n // loadModules([\"esri/core/urlUtils\"]).then(([urlUtils]) => { // formerly esri/urlUtils\r\n addProxyRule({\r\n urlPrefix: \"restdata.ctuir.org\",\r\n proxyUrl: proxyUrl\r\n });\r\n\r\n //esriConfig.defaults.io.proxyUrl = proxyUrl; // From the config.js file.\r\n //esriConfig.defaults.io.alwaysUseProxy = false;\r\n\r\n // });\r\n }\r\n\r\n\r\n this.selectedBasemap = defaultLayer;\r\n\r\n this.basemaps = [];\r\n for (var property in datasetActivitiesBasemapConfig) {\r\n if (datasetActivitiesBasemapConfig.hasOwnProperty(property)) {\r\n this.basemaps.push({label: datasetActivitiesBasemapConfig[property].Display, name: property});\r\n }\r\n }\r\n\r\n let center;\r\n if (this.center) {\r\n center = this.center.split(\",\").map(c => parseFloat(c));\r\n }\r\n\r\n this.mapView = new MapView({\r\n // center: ($attrs.center) ? $attrs.center.split(\",\") : this.center,\r\n // zoom: ($attrs.zoom) ? $attrs.zoom : this.zoom,\r\n container: this.habitatViewElement.nativeElement,\r\n zoom: this.zoom,\r\n center,\r\n //basemap: 'streets', //($attrs.basemap) ? $attrs.basemap : this.basemap,\r\n map: this.map,\r\n spatialReference: {\r\n wkid: 102100 //mercator\r\n //wkid:26911 //nad_1983\r\n //\"wkt\":'PROJCS[\"NAD83(NSRS2007) / UTM zone 11N\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"D_\",SPHEROID[\"GRS_1980\",6378137,298.257222101]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]]'\r\n\r\n }\r\n });\r\n\r\n this.mapView.on(\"click\", (e) => {\r\n this.clickedMap(e);\r\n });\r\n\r\n // this.map.on(\"load\", function (e) { todo: ask george about createBasemapDropdown\r\n // //createBasemapDropdown(map);\r\n // });\r\n\r\n //this.map.resize();\r\n this.updateLayers();\r\n watchUtils.whenTrue(this.mapView.popup, 'visible', () => {\r\n watchUtils.whenFalseOnce(this.mapView.popup, 'visible', () => {\r\n this.pointsLayer.removeAll();\r\n this.mapView.graphics.removeAll();\r\n this.sde.emit();\r\n });\r\n });\r\n //console.log(\"Map is complete and in scope.\");\r\n return this.mapView;\r\n // });\r\n }\r\n\r\n\r\n newLocation() {\r\n console.log('creating a new habitat subproject location....')\r\n //nad83 zone 11... might have to have this as a list somehwere...\r\n var inSR = new SpatialReference({wkt: NAD83_SPATIAL_REFERENCE}); //esri/SpatialReference\r\n var outSR = new SpatialReference({wkid: 102100});\r\n // var geometryService = new GeometryService({url: GEOMETRY_SERVICE_URL}); //esri/tasks/GeometryService\r\n this.newPoint = new Point({x: this.row.GPSEasting, y: this.row.GPSNorthing, spatialReference: inSR}); // esri/geometry/Point\r\n //convert spatial reference\r\n //var PrjParams = new tasks.ProjectParameters();\r\n let PrjParams = new ProjectParameters(); //esri/tasks/ProjectParameters\r\n\r\n PrjParams.geometries = [this.newPoint];\r\n // PrjParams.outSR is not set yet, so we must set it also.\r\n PrjParams.outSpatialReference = outSR;\r\n PrjParams.toJSON();\r\n //do the projection (conversion)\r\n // PrjParams has Easting and Northing; outputpoint has x, y values.\r\n // The x, y values are what get sent/stored in the points table in sdevector.\r\n geometryServ.project(GEOMETRY_SERVICE_URL, PrjParams).then((outputpoint) => {\r\n\r\n this.newPoint = new Point(outputpoint[0]);\r\n //this.newGraphic = new Graphic(this.newPoint, new symbol.SimpleMarkerSymbol());\r\n this.newGraphic = new Graphic({geometry: this.newPoint, symbol: new SimpleMarkerSymbol()});\r\n this.mapView.graphics.add(this.newGraphic);\r\n\r\n //add the graphic to the map and get SDE_ObjectId\r\n this.locationLayer.applyEdits({addFeatures: [this.newGraphic]}).then((results) => {\r\n\r\n if (results.addFeatureResults[0]) {\r\n this.row.SdeObjectId = this.sde = results.addFeatureResults[0].objectId;\r\n\r\n this.updateLocation.emit({new: [this.project, this.row]});\r\n // this.setSdeObjectId(this.SdeObjectId);\r\n // console.log(\"Created a new point! \" + newLocation.SdeObjectId);\r\n // this.NewPoint = true;\r\n //\r\n // var promise = CommonService.saveNewProjectLocation(this.project.Id, newLocation);\r\n // promise.$promise.then(function (result) {\r\n // \tconsole.log(\"done and success!\");\r\n // \tconsole.log(\"result is next...\");\r\n // \tconsole.dir(result);\r\n // \tangular.forEach(result, function (item, key) {\r\n // \t\t//console.log(\"key = \" + key + \", item is next...\");\r\n // \t\t//console.dir(item);\r\n // \t\tif (key === \"Id\") {\r\n // \t\t\t//this.locationId = promise.LocationId;\r\n // \t\t\t//this.subproject_row.LocationId = item;\r\n // \t\t\tthis.row.LocationId = item;\r\n // \t\t\t//console.log(\"this.subproject_row.LocationId = \" + this.subproject_row.LocationId);\r\n // \t\t\tconsole.log(\"this.row.LocationId = \" + this.row.LocationId);\r\n //\r\n // \t\t\t//ok - new location is saved and we are prepped to save the subproject so handoff to next step:\r\n // \t\t\tthis.saveFilesAndParent();\r\n // \t\t}\r\n // \t});\r\n //\r\n // \t//reload the project -- this will cause the locations and locationlayer to be reloaded! wow! go AngularJS! :)\r\n // \t//this.refreshProjectLocations();\r\n // \t//$uibModalInstance.dismiss(); // This is from the ActivitiesConroller, ModalAddLocationCtrl. We have this down below, so we do not need it here; it causes an error.\r\n // });\r\n\r\n }\r\n }); //applyedits\r\n }); //geometryservice.project\r\n }\r\n\r\n updateExisting() {\r\n console.log('Updating an existing habitat subproject location....')\r\n //nad83 zone 11... might have to have this as a list somehwere...\r\n var inSR = new SpatialReference({wkt: NAD83_SPATIAL_REFERENCE}); //esri/SpatialReference\r\n var outSR = new SpatialReference({wkid: 102100});\r\n // var geometryService = new GeometryService({url: GEOMETRY_SERVICE_URL}); //esri/tasks/GeometryService\r\n this.newPoint = new Point({x: this.row.GPSEasting, y: this.row.GPSNorthing, spatialReference: inSR}); // esri/geometry/Point\r\n this.OldSdeObjectId = this.row.OldSdeObjectId;\r\n //convert spatial reference\r\n //var PrjParams = new tasks.ProjectParameters();\r\n let PrjParams = new ProjectParameters(); //esri/tasks/ProjectParameters\r\n\r\n PrjParams.geometries = [this.newPoint];\r\n // PrjParams.outSR is not set yet, so we must set it also.\r\n PrjParams.outSpatialReference = outSR;\r\n PrjParams.toJSON();\r\n //do the projection (conversion)\r\n // PrjParams has Easting and Northing; outputpoint has x, y values.\r\n // The x, y values are what get sent/stored in the points table in sdevector.\r\n geometryServ.project(GEOMETRY_SERVICE_URL, PrjParams).then((outputpoint) => {\r\n\r\n this.newPoint = new Point(outputpoint[0]);\r\n this.newGraphic = new Graphic({geometry: this.newPoint, symbol: new SimpleMarkerSymbol()});\r\n this.mapView.graphics.add(this.newGraphic);\r\n\r\n //add the graphic to the map and get SDE_ObjectId\r\n this.locationLayer.applyEdits({addFeatures: [this.newGraphic]}).then((addResults) => {\r\n\r\n if (addResults.addFeatureResults[0]) {\r\n //newLocation.SdeObjectId = this.SdeObjectId = addResults[0].objectId;\r\n this.row.SdeObjectId = this.sde = addResults.addFeatureResults[0].objectId;\r\n // this.setSdeObjectId(this.SdeObjectId);\r\n //console.log(\"Added a new point! \" + newLocation.SdeObjectId);\r\n console.log(\"Added a new point! \" + this.row.SdeObjectId);\r\n\r\n //this.NewPoint = true;\r\n var attributes = {OBJECTID: this.OldSdeObjectId}\r\n var deleteGraphic = new Graphic({geometry: this.newPoint, attributes: attributes});\r\n this.locationLayer.applyEdits({deleteFeatures: [deleteGraphic]}).then(deleteResults => {\r\n\r\n console.log(\"deleteResults is next...\");\r\n\r\n console.dir(deleteResults.deleteFeatureResults[0]);\r\n\r\n if (!deleteResults.deleteFeatureResults[0]) {\r\n this.SaveMessage = \"The location did not exist in SDE.\";\r\n console.log(\"The location did not exist in SDE.\");\r\n console.dir(deleteResults.deleteFeatureResults[0]);\r\n this.updateLocation.emit({update: {nonexistent: [this.project, this.row.LocationId, this.row.SdeObjectId, this.row]}});\r\n\r\n // CommonService.updateLocationAction(this.project.Id, this.row.LocationId, this.row.SdeObjectId);\r\n } else if (deleteResults.deleteFeatureResults[0]) {\r\n console.log(\"Deleted old point in sdevector! \" + this.OldSdeObjectId);\r\n this.updateLocation.emit({update: {deleted: [this.project, this.row.LocationId, this.row.SdeObjectId]}})\r\n // CommonService.updateLocationAction(this.project.Id, this.row.LocationId, this.row.SdeObjectId);\r\n } else {\r\n this.SaveMessage = \"There was a problem deleting that location.\";\r\n console.dir(deleteResults.deleteFeatureResults[0]);\r\n }\r\n }, function (err) {\r\n console.log(\"Apply Edits - Delete - failed: \" + err.message);\r\n });\r\n\r\n //throw \"Stopping right here...\";\r\n\r\n //ok - new location is saved and we are prepped to save the subproject so handoff to next step:\r\n // this.saveFilesAndParent();\r\n } else {\r\n this.SaveMessage = \"There was a problem adding the new location.\";\r\n console.dir(addResults.addFeatureResults[0]);\r\n }\r\n\r\n }); //applyedits\r\n }); //geometryservice.project\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n\r\n\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJjb25maXJtLmNvbXBvbmVudC5zY3NzIn0= */\";","/**\r\n * Checklist-model\r\n * AngularJS directive for list of checkboxes\r\n */\r\nimport * as angular from 'angular';\r\n// import common_module from \"../common-module\";\r\n// common_module\r\nconst checklist_model_directive = ['$parse', '$compile', function($parse, $compile) {\r\n // contains\r\n function contains(arr, item) {\r\n if (angular.isArray(arr)) {\r\n for (var i = 0; i < arr.length; i++) {\r\n if (angular.equals(arr[i], item)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n // add\r\n function add(arr, item) {\r\n arr = angular.isArray(arr) ? arr : [];\r\n for (var i = 0; i < arr.length; i++) {\r\n if (angular.equals(arr[i], item)) {\r\n return arr;\r\n }\r\n }\r\n arr.push(item);\r\n return arr;\r\n }\r\n\r\n // remove\r\n function remove(arr, item) {\r\n if (angular.isArray(arr)) {\r\n for (var i = 0; i < arr.length; i++) {\r\n if (angular.equals(arr[i], item)) {\r\n arr.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n // http://stackoverflow.com/a/19228302/1458162\r\n function postLinkFn(scope, elem, attrs) {\r\n // compile with `ng-model` pointing to `checked`\r\n $compile(elem)(scope);\r\n\r\n // getter / setter for original model\r\n var getter = $parse(attrs.checklistModel);\r\n var setter = getter.assign;\r\n\r\n // value added to list\r\n var value = $parse(attrs.checklistValue)(scope.$parent);\r\n\r\n // watch UI checked change\r\n scope.$watch('checked', function(newValue, oldValue) {\r\n if (newValue === oldValue) {\r\n return;\r\n }\r\n var current = getter(scope.$parent);\r\n if (newValue === true) {\r\n setter(scope.$parent, add(current, value));\r\n } else {\r\n setter(scope.$parent, remove(current, value));\r\n }\r\n });\r\n\r\n // watch original model change\r\n scope.$parent.$watch(attrs.checklistModel, function(newArr, oldArr) {\r\n scope.checked = contains(newArr, value);\r\n }, true);\r\n }\r\n\r\n return {\r\n restrict: 'A',\r\n priority: 1000,\r\n terminal: true,\r\n scope: true,\r\n compile: function(tElement, tAttrs) {\r\n if (tElement[0].tagName !== 'INPUT' || !tElement.attr('type', 'checkbox')) {\r\n throw 'checklist-model should be applied to `input[type=\"checkbox\"]`.';\r\n }\r\n\r\n if (!tAttrs.checklistValue) {\r\n throw 'You should provide `checklist-value`.';\r\n }\r\n\r\n // exclude recursion\r\n tElement.removeAttr('checklist-model');\r\n\r\n // local scope var storing individual checkbox model\r\n tElement.attr('ng-model', 'checked');\r\n\r\n return postLinkFn;\r\n }\r\n };\r\n}];\r\n\r\nexport default checklist_model_directive;\r\n","import * as angular from \"angular\";\r\n\r\n\r\nvar artificialproduction_chartservice = [\r\n function(){\r\n var service = {\r\n\r\n \tdataset: \"ArtificialProduction\",\r\n\r\n\t\t\tgetChartConfig: function(){\r\n\t\t\t\tconsole.log(\"Inside getChartConfig...\");\r\n\t\t\t\tvar config = {\r\n \t\t\t title : 'Fish by Species',\r\n\t\t\t\t tooltips: true,\r\n\t\t\t\t labels : false,\r\n showControls: false,\r\n\r\n\t\t\t\t legend: {\r\n\t\t\t\t display: true,\r\n\t\t\t\t position: 'right'\r\n\t\t\t\t }\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn config;\r\n\t\t\t},\r\n\r\n\r\n\t\t\tgetDefaultChartData: function()\r\n\t\t\t{\r\n\t\t\t\tvar defaultChartData = {\"series\": [], \"data\":[{ \"x\": \"Loading...\", \"y\": [0],\"tooltip\": \"\"}]}; //default\r\n\t\t\t\treturn defaultChartData;\r\n\t\t\t},\r\n\r\n\r\n\t\t\tgetChartData: function()\r\n\t\t\t{\r\n\t\t\t\tconsole.log(\"Inside getChartData...\");\r\n\t\t\t var dataCalc = {};\r\n\r\n\t\t\t angular.forEach(data, function(row, key){\r\n\t\t\t var num = (row.TotalFishRepresented) ? row.TotalFishRepresented : 1;\r\n\t\t\t //console.log(row);\r\n\r\n\t\t\t if(row.Species)\r\n\t\t\t {\r\n\r\n\t\t\t if(!dataCalc[row.Species])\r\n\t\t\t dataCalc[row.Species] = { total: 0, males: 0, females: 0};\r\n\r\n\t\t\t dataCalc[row.Species].total += num;\r\n\r\n\t\t\t if(row.Sex == \"M\")\r\n\t\t\t dataCalc[row.Species].males += num;\r\n\t\t\t if(row.Sex == \"F\")\r\n\t\t\t dataCalc[row.Species].females += num;\r\n\r\n\t\t\t }\r\n\r\n\t\t\t //console.log(row.Species + \" = \");\r\n\t\t\t //console.dir(dataCalc[row.Species]);\r\n\r\n\t\t\t });\r\n\r\n\t\t\t var data = {\r\n\t\t\t \"series\": [\r\n\t\t\t \"Total\",\r\n\t\t\t \"Male\",\r\n\t\t\t \"Female\"\r\n\t\t\t ],\r\n\t\t\t \"data\": [\r\n\t\t\t ]\r\n\t\t\t };\r\n\r\n\t\t\t angular.forEach(dataCalc, function(vals, species){\r\n\t\t\t data['data'].push({\r\n\t\t\t \"x\": species,\r\n\t\t\t \"y\": [vals.total,vals.males,vals.females],\r\n\t\t\t });\r\n\t\t\t });\r\n\r\n\t\t\t console.log(data);\r\n\r\n\t\t\t return data;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tbuildChart: function(){\r\n\r\n\t\t\t},\r\n\r\n };\r\n\r\n return service;\r\n }\r\n];\r\n\r\nexport default artificialproduction_chartservice;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {cdmsShareUrl, METADATA_PROPERTY_PROGRAM, METADATA_PROPERTY_SUBPROGRAM} from '../../config';\r\n\r\ndeclare const $: any;\r\n/*\r\n* These are functions used in services or controllers across modules\r\n*/\r\n\r\n//there are quite a lot of functions in here related to Date handling -- it would be\r\n// a very good idea to not maintain our own date code since there is an excellent\r\n// date package called \"Moment\" that we should use instead of rolling our own. It is\r\n// well-maintained and tested.\r\n\r\n\r\n//anything we might need to do in initializing edit/entry pages.\r\n\r\nexport function initEdit() {\r\n\r\n $(document).unbind('keydown').bind('keydown', function (event) {\r\n var doPrevent = false;\r\n\r\n //backspace key intercepted to prevent navigating back a page\r\n //http://stackoverflow.com/questions/1495219/how-can-i-prevent-the-backspace-key-from-navigating-back/1495435#1495435\r\n if (event.keyCode === 8) {\r\n\r\n var d = event.srcElement || event.target;\r\n if ((d.tagName.toUpperCase() === 'INPUT' && (d.type.toUpperCase() === 'TEXT' || d.type.toUpperCase() === 'PASSWORD' || d.type.toUpperCase() === 'FILE'))\r\n || d.tagName.toUpperCase() === 'TEXTAREA') {\r\n doPrevent = d.readOnly || d.disabled;\r\n }\r\n else {\r\n doPrevent = true;\r\n }\r\n }\r\n\r\n //enter key intercepted in order to prevent the form submit\r\n if (event.keyCode == 13) {\r\n\r\n var d = event.srcElement || event.target;\r\n //console.log(d);\r\n if ((d.tagName.toUpperCase() === 'INPUT' && (d.type.toUpperCase() === 'TEXT' || d.type.toUpperCase() === 'PASSWORD' || d.type.toUpperCase() === 'FILE'))) {\r\n doPrevent = true;\r\n }\r\n }\r\n/*\r\n //prevent arrow keys from scrolling\r\n if ([37, 38, 39, 40].indexOf(event.keyCode) > -1) {\r\n doPrevent = true;\r\n }\r\n */\r\n //console.log(\"do prevent = \" + doPrevent);\r\n\r\n if (doPrevent) {\r\n //console.log(\"-- prevented that key from doing anything --\");\r\n event.preventDefault();\r\n }\r\n });\r\n}\r\n\r\n\r\n//in any array with an \"Id\" attribute, get the matching item\r\nexport function getById(list, search_name) {\r\n return getByField(list, search_name, 'Id');\r\n}\r\n\r\n\r\n\r\n//in any array with a \"Name\" attribute, get the matching item\r\nexport function getByName(list, search_name) {\r\n return getByField(list, search_name, 'Name');\r\n}\r\n\r\n//returns single match in any fieldname\r\nexport function getByField(list, search, field) {\r\n\r\n\t// This loop iterates through the list sequentially.\r\n\tfor (var i = 0; i < list.length; i++) {\r\n var pref = list[i];\r\n if (pref[field] == search)\r\n return pref;\r\n };\r\n\r\n return null;\r\n}\r\n\r\nexport function binIdSearch(list?, search?, field?){\r\n\r\n\tvar listLength = list.length;\r\n\r\n if (binIdSearch())\r\n\r\n\treturn -1;\r\n}\r\n\r\n//returns array with matching field value\r\nexport function getMatchingByField(data, search, field) {\r\n\t//console.log(\"data is next...\");\r\n\t//console.dir(data);\r\n\t//console.log(\"search is next...\");\r\n\t//console.dir(search);\r\n\r\n var newlist = [];\r\n\r\n for (var key in data) {\r\n\t\t//console.log(\"key = \" + key + \", field = \" + field);\r\n\t\t//console.dir(key);\r\n if (data[key][field] == search)\r\n\t\t{\r\n\t\t\t//console.log(\"Found it...\");\r\n newlist.push(data[key]);\r\n\t\t}\r\n }\r\n\r\n //console.log(\"did a search on \" + search + \" for \" + field);\r\n //console.dir(newlist);\r\n\r\n return newlist;\r\n}\r\n\r\n//filters an array, returning only those objects where field matches search\r\nexport function getAllMatchingFromArray(data, search, field) {\r\n\r\n if (!Array.isArray(data))\r\n return null;\r\n\r\n var retval = [];\r\n data.forEach(function (row) {\r\n if (row[field] == search)\r\n retval.push(row);\r\n });\r\n\r\n return retval;\r\n\r\n}\r\n\r\n//returns array with matching field value\r\nexport function getMatchingByFieldArray(data, search, field) {\r\n var newlist = [];\r\n var theSearch = \"\";\r\n\r\n for (var key2 in search) {\r\n //console.log(\"key2 \" + key2);\r\n for (var key in data) {\r\n //console.log(\"key \" + key);\r\n //console.log(\"Field = \" + data[key][field] + \" \" + \"Search = \" + search[key2]);\r\n if ((data[key][field] !== \"undefined\") && (data[key][field] !== null)) {\r\n if (data[key][field] === search[key2]) {\r\n newlist.push(data[key]);\r\n var theSearch = theSearch + search[key2] + \",\";\r\n console.log(\"Searched and found \" + search[key2] + \" for \" + field);\r\n }\r\n }\r\n }\r\n }\r\n\r\n //console.log(\"did a search on \" + search + \" for \" + field);\r\n //console.log(\"newlist display is next...\");\r\n //console.dir(newlist); // the result is an array.\r\n //newList = sortLocations(sortLocations);\r\n //console.dir(newlist); // the result is an array.\r\n\r\n return newlist;\r\n}\r\n\r\n//takes an array and iterates into key/value object array\r\n//also needs keyProperty and valueProperty strings; property names of individual items in the list.\r\n//use like: makeObjects(project.Locations, 'Id','Label')\r\n//returns \"{keyProperty: valueProperty, ...}\r\nexport function makeObjects(optionList, keyProperty, valueProperty) {\r\n //console.log(\"Inside services.js, makeObjects...\");\r\n //console.log(\"optionList is next... keyProperty = \" + keyProperty + \", valueProperty = \" + valueProperty);\r\n //console.dir(optionList);\r\n var objects = {};\r\n\r\n angular.forEach(optionList, function (item) {\r\n //console.log(\"item is next...\");\r\n //console.dir(item);\r\n //console.log(\"item[keyProperty] = \" + item[keyProperty] + \", item[valueProperty] = \" + item[valueProperty]);\r\n\r\n objects[item[keyProperty]] = item[valueProperty];\r\n //console.log(\"(objects[item[keyProperty]] is next...\");\r\n //console.dir(objects[item[keyProperty]]);\r\n //console.log(\"string = \" + item[keyProperty].toString());\r\n });\r\n\r\n return objects;\r\n}\r\n\r\n//specific for instruments because we need the serial number too\r\nexport function makeInstrumentObjects(optionList) {\r\n //console.log(\"Inside services.js, makeInstrumentObjects...\");\r\n var objects = {};\r\n\r\n angular.forEach(optionList, function (item) {\r\n //console.dir(item);\r\n //objects[item['Id']] = item['Name'] + '(' + item['SerialNumber'] + ')';\r\n objects[item['Id']] = item['Name'] + '(' + item['SerialNumber'] + ')';\r\n });\r\n\r\n return objects;\r\n}\r\n\r\n//takes project.Instruments and returns them as works for possiblevalues\r\nexport function instrumentsToPossibleValues(instruments) {\r\n\r\n var result = [];\r\n\r\n instruments.forEach(function (item) {\r\n result.push({ Id: item.Id, Label: item.Name + ' (' + item.SerialNumber + ')'})\r\n });\r\n\r\n return result;\r\n}\r\n\r\n//takes an array of objects and makes possiblevalues object: {1: \"My name\", 2: \"Another\"}\r\nexport function arrayToPossibleValues(in_array) {\r\n\r\n var result = {};\r\n\r\n in_array.forEach(function (item) {\r\n result[item.Id] = item.Name;\r\n });\r\n\r\n return result;\r\n}\r\n\r\n\r\n//TODO: this will be handy in the future when we refactor the way lookupOptions works to use\r\n// an array of objects instead of properties of a single object.\r\nexport function sortObjectsByValue(list) {\r\n var sorted = [];\r\n Object.keys(list)\r\n .map(function (k) { return [k, list[k]]; })\r\n .sort(function (a, b) {\r\n if (a[1] < b[1]) return -1;\r\n if (a[1] > b[1]) return 1;\r\n return 0;\r\n })\r\n .forEach(function (d) {\r\n var nextObj = {};\r\n nextObj[d[0]] = d[1];\r\n sorted.push(nextObj);\r\n });\r\n\r\n return sorted;\r\n\r\n}\r\n//takes a possiblevalues field list and turns it into a list we can use in a select\r\n//give us a unique key to reference it by for caching.\r\nexport function makeObjectsFromValues(key, valuesList) {\r\n //update: we can't cache because now datasets can vary in their possible values\r\n //var objects = angular.rootScope.Cache[key]; //see if we have it squirreled away in our cache\r\n //console.log(\" -- make objects from values key : \" + key);\r\n var objects = {};\r\n\r\n if (!valuesList) {\r\n //throw new Exception(\"No values provided.\");\r\n throw (\"No values provided.\");\r\n }\r\n var selectOptions: any;\r\n selectOptions = \"\";\r\n\r\n try {\r\n selectOptions = angular.fromJson(valuesList);\r\n } catch (e) {\r\n console.log(\"problem parsing: \" + valuesList + \" for field: \" + key);\r\n }\r\n\r\n //make array elements have same key/value\r\n if (angular.isArray(selectOptions)) {\r\n selectOptions.forEach(function (item) {\r\n if (typeof item == 'object' && item.hasOwnProperty('Id')) {\r\n objects[item.Id] = item;\r\n }\r\n else {\r\n objects[item] = item;\r\n }\r\n });\r\n }\r\n else {\r\n for (var idx in selectOptions) {\r\n objects[idx] = selectOptions[idx];\r\n }\r\n\r\n }\r\n //angular.rootScope.Cache[key] = objects; //save into our cache\r\n //console.log(\"returning \" + objects.length);\r\n //console.dir(objects);\r\n// var retObjects = getOrderedObjectList(objects);\r\n //console.dir(retObjects);\r\n// return retObjects;\r\n return objects;\r\n}\r\n\r\nexport function order2dArrayByAlpha(a, b) {\r\n if (!a || !b)\r\n return 0;\r\n\r\n //console.log(a[1] + \", \" + b[1]);\r\n var a = a[1].toLowerCase();\r\n var b = b[1].toLowerCase();\r\n //console.log(a + \", \" + b);\r\n\r\n if (a < b)\r\n return -1;\r\n else if (a > b)\r\n return 1;\r\n else\r\n return 0;\r\n}\r\n\r\nexport function convertFtoC(f) {\r\n if (!f)\r\n return 0;\r\n\r\n var c = (f - 32) * 5 / 9;\r\n //console.log(\"f = \" + f + \", c = \" + c);\r\n\r\n return c;\r\n}\r\n\r\nexport function convertCtoF(c) {\r\n if (!c)\r\n return 0;\r\n\r\n var f = c * 9/5 + 32;\r\n //console.log(\"f = \" + f + \", c = \" + c);\r\n\r\n return f;\r\n}\r\n\r\n//takes in an \"ObjectList\" like {1: \"Sam\", 3: \"Bubba\"}\r\n// and returns an array of item objects sorted by the value like [{Id: '3', Label: 'Bubba'}, {Id: '1', Label: 'Sam'}]\r\nexport function getOrderedObjectList(list) {\r\n var sorted_obj_list = [];\r\n\r\n //convert to array of objects for sorting\r\n for (var key in list) {\r\n sorted_obj_list.push({ Id: key, Label: list[key] });\r\n }\r\n\r\n return sorted_obj_list.sort(orderByAlpha);\r\n\r\n}\r\n\r\n\r\nexport function orderByAlpha(a, b) {\r\n if (!a || !b || !a.Label || !b.Label)\r\n return 0;\r\n\r\n if(typeof a.Label !== 'string' || typeof b.Label !== 'string')\r\n return 0;\r\n\r\n var nameA = a.Label.toLowerCase(), nameB = b.Label.toLowerCase()\r\n if (nameA < nameB) //sort string ascending\r\n return -1\r\n if (nameA > nameB)\r\n return 1\r\n return 0 //default return value (no sorting)\r\n}\r\n\r\nexport function orderByAlphaName(a, b) {\r\n if (!a || !b || !a.Name || !b.Name)\r\n return 0;\r\n\r\n var nameA = a.Name.toLowerCase(), nameB = b.Name.toLowerCase()\r\n if (nameA < nameB) //sort string ascending\r\n return -1\r\n if (nameA > nameB)\r\n return 1\r\n return 0 //default return value (no sorting)\r\n}\r\n\r\nexport function orderUserByAlpha(a, b) {\r\n var nameA = a.Fullname.toLowerCase(), nameB = b.Fullname.toLowerCase()\r\n if (nameA < nameB) //sort string ascending\r\n return -1\r\n if (nameA > nameB)\r\n return 1\r\n return 0 //default return value (no sorting)\r\n}\r\n\r\nexport function orderByIndex(a, b) {\r\n if (!a || !b || !a.OrderIndex || !b.OrderIndex || !a.FieldRoleId || !b.FieldRoleId)\r\n return 0;\r\n\r\n if (a.OrderIndex && b.OrderIndex)\r\n return (a.OrderIndex - b.OrderIndex);\r\n else\r\n return (a.FieldRoleId - b.FieldRoleId);\r\n}\r\n\r\nexport function orderByOrderIndex(a, b) {\r\n if (!a || !b || !a.OrderIndex || !b.OrderIndex)\r\n return 0;\r\n\r\n var nameA = parseInt(a.OrderIndex), nameB = parseInt(b.OrderIndex)\r\n if (nameA < nameB) //sort ascending\r\n return -1\r\n if (nameA > nameB)\r\n return 1\r\n return 0 //default return value (no sorting)\r\n}\r\n\r\n//works for either regular arrays or associative arrays\r\nexport function array_count(the_array) {\r\n var count = 0;\r\n var keys = (Array.isArray(the_array)) ? the_array : Object.keys(the_array);\r\n for (var i = 0; i < keys.length; i++) {\r\n count++;\r\n };\r\n\r\n return count;\r\n}\r\n\r\n\r\nexport function stringIsNumber(s) {\r\n return !isNaN(parseFloat(s)) && isFinite(s);\r\n}\r\n\r\n\r\nexport function stringIsTime(s) {\r\n if (s == null)\r\n return false;\r\n\r\n if (typeof s != 'string')\r\n return false;\r\n\r\n s = s.trim();\r\n\r\n //return s.match(/^\\s*([01]?\\d|2[0-3]):([0-5]\\d)\\s*$/);\r\n return s.match(/^([01]?\\d|2[0-3]):([0-5]\\d)$/);\r\n}\r\n\r\n\r\nexport function is_empty(obj) {\r\n\r\n // null and undefined are empty\r\n if (obj == null) return true;\r\n // Assume if it has a length property with a non-zero value\r\n // that that property is correct.\r\n if (obj.length && obj.length > 0) return false;\r\n if (obj.length === 0) return true;\r\n\r\n for (var key in obj) {\r\n\r\n if (obj.hasOwnProperty.call(obj, key)) return false;\r\n }\r\n\r\n // Doesn't handle toString and toValue enumeration bugs in IE < 9\r\n\r\n return true;\r\n}\r\n\r\n\r\n\r\n\r\nexport function capitalizeFirstLetter(someText) {\r\n var firstLetter = someText.toUpperCase(someText.charAt(0));\r\n var remainingLetters = someText.toLowerCase(someText.substring(1));\r\n var newText = firstLetter + remainingLetters;\r\n\r\n return newText;\r\n}\r\n\r\n\r\n\r\n\r\nexport function sortLocations(a, b) {\r\n //if ((a !== 'undefined') && (a !== null) && (b !== 'undefined') && (b !== null))\r\n if ((b !== 'undefined') && (b !== null)) {\r\n var l1 = a[8];\r\n var l2 = b[8];\r\n\r\n if ((l1 !== \"undefined\") && (l1 !== null))\r\n l1.toLowerCase();\r\n if ((l2 !== \"undefined\") && (l2 !== null))\r\n l2.toLowerCase();\r\n\r\n\r\n\r\n if (l1 < l2) return -1;\r\n if (l1 > l2) return 1;\r\n return 0;\r\n }\r\n}\r\n\r\n//returns array with UN-matching field value\r\nexport function getUnMatchingByField(data, search, field) {\r\n var newlist = [];\r\n\r\n for (var key in data) {\r\n if (data[key][field] != search)\r\n newlist.push(data[key]);\r\n }\r\n\r\n //console.log(\"did a search on \" + search + \" for \" + field);\r\n //console.dir(newlist);\r\n\r\n return newlist;\r\n}\r\n\r\n\r\n\r\nexport function isNumber(n) {\r\n return !isNaN(parseFloat(n)) && isFinite(n);\r\n}\r\n\r\nexport function isPercent(n) {\r\n return (isNumber(n) && n >= 0 && n <= 100);\r\n}\r\n\r\nexport function isInteger (value) {\r\n return typeof value === 'number' &&\r\n isFinite(value) &&\r\n Math.floor(value) === value;\r\n};\r\n\r\nexport function isArray(value) {\r\n return Object.prototype.toString.call(value) === '[object Array]';\r\n};\r\n\r\n//TODO note: this is moved into a filter in datasets_module. delete me when convenient.\r\n//give me an instrument's accuracy check and I'll give you the datagrade to display\r\nexport function getDataGrade(check) {\r\n if (!check)\r\n return;\r\n\r\n var grade = \"N/A\";\r\n if (check.CheckMethod == 1)\r\n grade = check.Bath1Grade + \"-\" + check.Bath2Grade;\r\n else if (check.CheckMethod == 2)\r\n grade = check.Bath1Grade;\r\n\r\n return grade;\r\n};\r\n\r\nexport function populateMetadataDropdowns(scope, property) {\r\n if (property.ControlType == \"select\" || property.ControlType == \"multiselect\") {\r\n scope.CellOptions[property.Id + '_Options'] = makeObjectsFromValues(property.Id + \"_Options\", property.PossibleValues);\r\n }\r\n};\r\n\r\nexport function getLocationObjectIdsByType(type, locations) {\r\n throw \"LocationTypeIds are no longer used\";\r\n\r\n /*\r\n console.log(\"Inisde services, getLocationObjectIdsByType...\");\r\n //var locationsArray = getUnMatchingByField(locations,type,\"LocationTypeId\");\r\n var locationsArray = getMatchingByField(locations, type, \"LocationTypeId\");\r\n var locationObjectIdArray = [];\r\n\r\n angular.forEach(locationsArray, function (item, key) {\r\n locationObjectIdArray.push(item.SdeObjectId);\r\n });\r\n\r\n var locationObjectIds = locationObjectIdArray.join();\r\n console.log(\"found project locations (locationObjectIds): \" + locationObjectIds);\r\n\r\n return locationObjectIds;\r\n */\r\n}\r\n\r\nexport function getLocationObjectIdsByInverseType(type, locations) {\r\n throw \"LocationTypeIds are no longer used\";\r\n\r\n /*\r\n //console.log(\"reloading project locations\");\r\n //var locationsArray = getUnMatchingByField(locations,type,\"LocationTypeId\");\r\n var locationsArray = getMatchingByField(locations, type, \"LocationTypeId\");\r\n var locationObjectIdArray = [];\r\n\r\n angular.forEach(locationsArray, function (item, key) {\r\n if (item.SdeObjectId)\r\n locationObjectIdArray.push(item.SdeObjectId);\r\n });\r\n\r\n var locationObjectIds = locationObjectIdArray.join();\r\n //console.log(\"In services, getLocationObjectIdsByInverseType, found project locations: \" + locationObjectIds);\r\n\r\n return locationObjectIds;\r\n */\r\n}\r\n\r\nexport function getLocationObjectIdsFromLocationsWithSubprojects(locations) {\r\n throw \"LocationTypeIds are no longer used\";\r\n\r\n /*\r\n //console.log(\"reloading project locations\");\r\n //var locationsArray = getUnMatchingByField(locations,type,\"LocationTypeId\");\r\n //var locationsArray = getMatchingByField(locations,type,\"LocationTypeId\");\r\n var locationObjectIdArray = [];\r\n\r\n angular.forEach(locations, function (item, key) {\r\n if (item.SdeObjectId)\r\n locationObjectIdArray.push(item.SdeObjectId);\r\n });\r\n\r\n var locationObjectIds = locationObjectIdArray.join();\r\n console.log(\"In services, getLocationObjectIdsFromLocationsWithSubprojects, found project locations: \" + locationObjectIds);\r\n\r\n return locationObjectIds;\r\n */\r\n}\r\n\r\n\r\nexport function extractYearFromString(strDateTime) {\r\n // This function takes an incomving date as string (YYYY-MM-DDTHH:mm:SS format), and extracts the year (YYYY) from it.\r\n var theString = strDateTime;\r\n var hyphenLocation = theString.indexOf(\"-\");\r\n if (hyphenLocation < 0)\r\n return hyphenLocation;\r\n\r\n theString = theString.substr(0, hyphenLocation); //(start where, how many)\r\n\r\n // Some fields may have double quotes on the time fields.\r\n // To determine if they do, we remove (via replace) the double quotes.\r\n // Then we compare the string length from before and after the replace action.\r\n var stringLength = theString.length;\r\n var tmpString = theString.replace(\"\\\"\", \"\");\r\n var tmpStringLength = tmpString.length;\r\n //console.log(\"hyphenLocation = \" + hyphenLocation + \", stringLength = \" + stringLength);\r\n\r\n if (stringLength !== tmpStringLength) {\r\n //console.log(\"The string includes double quotes..\");\r\n // The string includes \"\" (coming from a CSV file) so we must allow for them.\r\n theString = theString.substr(1, 4);\r\n }\r\n else {\r\n //console.log(\"The string DOES NOT have double quotes...\");\r\n theString = theString.substr(0, 4);\r\n }\r\n return theString;\r\n}\r\n\r\n\r\n/* Regarding the following functions (checkInteger, checkSixFloat, checkSevenFloat),\r\nthe ..._REGEXP is also found in the directives.js file. According to my research,\r\nwe cannot call a directive from a service. Therefore, we had to copy the content\r\nof the directives having ..._REGEXP and implement it/them here.\r\n*/\r\n// Given text that could be an integer, this function verifies that it is an integer.\r\nexport function checkInteger(aNumber) {\r\n var INTEGER_REGEXP = /^\\-?\\d+$/;\r\n var n = \"\" + aNumber;\r\n n = n.replace(',', '.');\r\n\r\n if (INTEGER_REGEXP.test(n)) {\r\n return parseFloat(n.replace(',', '.'));\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n\r\nexport function check4Digits(aNumber?) {\r\n var INTEGER_REGEXP = /^\\d{4}$/;\r\n var n = \"\" + aNumber;\r\n n = n.replace(',', '.');\r\n\r\n if (INTEGER_REGEXP.test(n)) {\r\n return n; //parseFloat(n.replace(',', '.'));\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n\r\nexport function check2Digits(aNumber) {\r\n var INTEGER_REGEXP = /^\\d{2}$/;\r\n var n = \"\" + aNumber;\r\n //n = n.replace(',', '.');\r\n\r\n if (INTEGER_REGEXP.test(n)) {\r\n return n; //parseFloat(n.replace(',', '.'));\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n\r\n// Given a float type number, this function verifies that it has six digits before the decimal.\r\nexport function checkSixFloat(aNumber) {\r\n // Regular Expression explanation. Also see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\r\n // Enclosing characters: / ... /\r\n // At the beginning: ^\r\n // Escape character for special characters: \\ , in this case the - has special meaning\r\n // Match the preceding character 0 or 1 time; in other words, like -123. The - sign in front may or may not be present: ?\r\n // A sequence of 6 digits: \\d{6}\r\n // Start a section to be remembered: ( and another section (\r\n // Look for a decimal, but the decimal needs escaping, because the . is special: \\.\r\n // Close the decimal section: )\r\n // Look for a digit: \\d\r\n // Match the preceding character 1 or more times: +\r\n // Closed this section for the fractional value: )\r\n // The decimal followed by 1 or more numbers may or may not be present (the whole .123 section): ?\r\n // The fractional part (.123) is treated as the end of the number, and we want to see if the number has a fractional part: $\r\n // Basically, the $ matches the whole () section before the ?, so the decimal section must be at the end of the number.\r\n // Example: For example, /t$/ does not match the 't' in \"eater\", but does match it in \"eat\".\r\n var FLOAT_REGEXP6 = /^\\-?\\d{6}((\\.)\\d+)?$/;\r\n var n = \"\" + aNumber;\r\n n = n.replace(',', '.');\r\n\r\n if (FLOAT_REGEXP6.test(n)) {\r\n return parseFloat(n.replace(',', '.'));\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n\r\n// Given a float type number, this function verifies that it has seven digits before the decimal.\r\nexport function checkSevenFloat(aNumber) {\r\n var FLOAT_REGEXP7 = /^\\-?\\d{7}((\\.)\\d+)?$/;\r\n var n = \"\" + aNumber;\r\n n = n.replace(',', '.');\r\n\r\n if (FLOAT_REGEXP7.test(n)) {\r\n return parseFloat(n.replace(',', '.'));\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n\r\nexport function checkTime(aTime) {\r\n var FLOAT_REGEXPTIME = /^\\d{2}((\\:)\\d{2})$/;\r\n var t = \"\" + aTime;\r\n //t = t.replace(',', '.');\r\n\r\n if (FLOAT_REGEXPTIME.test(t)) {\r\n //return parseFloat(t.replace(/\\D+/,\"\"));\r\n return t;\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n\r\nexport function checkDateTimeFormat1(strDateTime) {\r\n //var DateTime_REGEXP = /^\\d{4}(\\-)\\d{2}(\\-)\\d{2}(\\ )\\d{2}(\\:)\\d{2}$/;\r\n //var dt = strDateTime\r\n\r\n //if (DateTime_REGEXP.test(dt))\r\n //{\r\n //\treturn dt;\r\n //}\r\n //else\r\n //{\r\n //\treturn undefined;\r\n //}\r\n\r\n var strYear = strDateTime.substr(0, 4);\r\n //console.log(\"strYear = \" + strYear);\r\n var intYear = parseInt(strYear);\r\n //console.log(\"intYear = \" + intYear);\r\n //console.log(\"typeof intYear = \" + typeof intYear);\r\n\r\n if (typeof intYear !== 'number')\r\n return false;\r\n else\r\n strDateTime = strDateTime.slice(4);\r\n\r\n //console.log(\"strDateTime = \" + strDateTime);\r\n\r\n var isLeapYear = (intYear % 100 === 0) ? (intYear % 400 === 0) : (intYear % 4 === 0);\r\n //console.log(\"isLeapYear = \" + isLeapYear);\r\n\r\n if (strDateTime.charAt(0) !== '-')\r\n return false;\r\n else\r\n strDateTime = strDateTime.slice(1);\r\n\r\n //console.log(\"strDateTime = \" + strDateTime);\r\n\r\n var strMonth = strDateTime.substr(0, 2);\r\n //console.log(\"strMonth = \" + strMonth);\r\n var intMonth = parseInt(strMonth);\r\n\r\n if (typeof intMonth !== 'number')\r\n return false;\r\n else if (intMonth > 12)\r\n return false;\r\n else\r\n strDateTime = strDateTime.slice(2);\r\n\r\n switch (intMonth) {\r\n case 1:\r\n case 3:\r\n case 5:\r\n case 7:\r\n case 8:\r\n case 10:\r\n case 12:\r\n if (intDay > 31) {\r\n return false;\r\n }\r\n break;\r\n case 4:\r\n case 6:\r\n case 9:\r\n case 11:\r\n if (intDay > 30) {\r\n return false;\r\n }\r\n break;\r\n case 2:\r\n if ((isLeapYear) && (intDay > 29)) {\r\n return false;\r\n }\r\n else if (intDay > 28) {\r\n return false;\r\n }\r\n break;\r\n }\r\n\r\n //console.log(\"strDateTime = \" + strDateTime);\r\n\r\n if (strDateTime.charAt(0) !== '-')\r\n return false;\r\n else\r\n strDateTime = strDateTime.slice(1);\r\n\r\n //console.log(\"strDateTime = \" + strDateTime);\r\n\r\n var strDay = strDateTime.substr(0, 2);\r\n //console.log(\"strDay = \" + strDay);\r\n var intDay = parseInt(strDay);\r\n\r\n if (typeof intDay !== 'number')\r\n return false;\r\n else\r\n strDateTime = strDateTime.slice(2);\r\n\r\n //console.log(\"strDateTime = \" + strDateTime);\r\n\r\n //if (strDateTime.charAt(0) !== ' ')\r\n if ((strDateTime.charAt(0) !== ' ') && (strDateTime.charAt(0) !== 'T'))\r\n return false;\r\n else\r\n strDateTime = strDateTime.slice(1);\r\n\r\n //console.log(\"strDateTime = \" + strDateTime);\r\n\r\n var strHours = strDateTime.substr(0, 2);\r\n //console.log(\"strHours = \" + strHours);\r\n var intHours = parseInt(strHours);\r\n\r\n if (typeof intHours !== 'number')\r\n return false;\r\n else if (intHours > 23)\r\n return false;\r\n else\r\n strDateTime = strDateTime.slice(2);\r\n\r\n //console.log(\"strDateTime = \" + strDateTime);\r\n\r\n if (strDateTime.charAt(0) !== ':')\r\n return false;\r\n else\r\n strDateTime = strDateTime.slice(1);\r\n\r\n //console.log(\"strDateTime = \" + strDateTime);\r\n\r\n var intColonLoc = strDateTime.indexOf(\":\");\r\n var strMinutes = strDateTime.substr(0, 2);\r\n //console.log(\"strMinutes = \" + strMinutes);\r\n var intMinutes = parseInt(strMinutes);\r\n\r\n if (typeof intMinutes !== 'number')\r\n return false;\r\n else if (intMinutes > 59)\r\n return false;\r\n else\r\n strDateTime = strDateTime.slice(2);\r\n\r\n //console.log(\"strDateTime = \" + strDateTime);\r\n\r\n if (strDateTime.charAt(0) !== ':')\r\n return false;\r\n else\r\n strDateTime = strDateTime.slice(1);\r\n\r\n //console.log(\"strDateTime = \" + strDateTime);\r\n\r\n var intColonLoc = strDateTime.indexOf(\".\");\r\n var strSeconds = strDateTime.substr(0, 2);\r\n var intSeconds = parseInt(strSeconds);\r\n\r\n if (typeof intSeconds !== 'number')\r\n return false;\r\n else if (intSeconds > 59)\r\n return false;\r\n else\r\n strDateTime = strDateTime.slice(2);\r\n\r\n //console.log(\"strDateTime = \" + strDateTime);\r\n\r\n if (strDateTime.charAt(0) !== '.')\r\n return false;\r\n else\r\n strDateTime = strDateTime.slice(1);\r\n\r\n //console.log(\"strDateTime = \" + strDateTime);\r\n\r\n var strMilli = strDateTime.substr(0);\r\n var intMilli = parseInt(strMilli);\r\n\r\n if (strDateTime.length === 3)\r\n return true;\r\n else\r\n return false;\r\n}\r\n\r\n//give me a date and I will convert it to a UTC date.\r\n// used in rules.\r\nexport function dateToUTC(a_date) {\r\n var utc = new Date(Date.UTC(\r\n a_date.getFullYear(),\r\n a_date.getMonth(),\r\n a_date.getDate(),\r\n a_date.getHours(),\r\n a_date.getMinutes(),\r\n a_date.getSeconds()\r\n ));\r\n\r\n return utc;\r\n}\r\n\r\nexport function pad(number) {\r\n if (number < 10) {\r\n return '0' + number;\r\n }\r\n return number;\r\n}\r\n\r\n\r\nexport function toExactISOString(a_date) {\r\n // If an 2-digit year comes in, let's say 17 for 2017, the system will default 17 to 1917 instead.\r\n // Therefore, the idea was to just add 100 years to the number, to put it into the correct century.\r\n // TODO: better way to fix this?\r\n //if(a_date.getFullYear() < 1950)\r\n // a_date.setFullYear(a_date.getFullYear() + 100);\r\n\r\n // We decided to put the onus on the user to enter the correct data.\r\n var s_utc = a_date.getFullYear() +\r\n '-' + pad(a_date.getMonth() + 1) +\r\n '-' + pad(a_date.getDate()) +\r\n 'T' + pad(a_date.getHours()) +\r\n ':' + pad(a_date.getMinutes()) +\r\n ':' + pad(a_date.getSeconds()) +\r\n '.' + (a_date.getMilliseconds() / 1000).toFixed(3).slice(2, 5);\r\n\r\n return s_utc;\r\n}\r\n\r\nexport function setDateTo0000(a_date) {\r\n console.log(\"a_date = \" + a_date);\r\n console.log(\"type of a_date = \" + typeof a_date);\r\n var inDate = a_date;\r\n\r\n var theYear = inDate.getFullYear();\r\n console.log(\"theYear = \" + theYear);\r\n var theMonth = inDate.getMonth();\r\n console.log(\"theMonth = \" + theMonth);\r\n var theDay = inDate.getDate();\r\n console.log(\"theDay = \" + theDay);\r\n var theHour = 0;\r\n var theMinutes = 0;\r\n var theSeconds = 0;\r\n var theMilliseconds = 0;\r\n\r\n var newDate = new Date(theYear, theMonth, theDay, theHour, theMinutes, theSeconds, theMilliseconds);\r\n console.log(\"newDate = \" + newDate);\r\n\r\n return newDate;\r\n}\r\n\r\nexport function toTimeString(a_date) {\r\n var t = 'T' + pad(a_date.getHours()) +\r\n ':' + pad(a_date.getMinutes()) +\r\n ':' + pad(a_date.getSeconds());\r\n\r\n return t;\r\n\r\n}\r\n\r\nexport function getDateFromDate(a_date)\r\n{\r\n // This function receives a date object, converts it to a string, and returns only the date info.\r\n // Example return: 2018-01-02\r\n var strYear = \"\";\r\n var strMonth = \"\";\r\n var strDay = \"\";\r\n\r\n\tconsole.log(\"a_date = \" + a_date);\r\n\tconsole.log(\"typeof a_date = \" + typeof a_date);\r\n\r\n\t// When the date comes in from the Data Entry page, a_date is a date object.\r\n\t// When the date comes in from the Date Edit page, a_date is a string.\r\n\tif (typeof a_date !== 'string')\r\n\t{\r\n\t\tstrYear = a_date.getFullYear().toString();\r\n\r\n\t\t// Note: getMonth gives a zero-based month; January is 0.\r\n\t\tstrMonth = (a_date.getMonth() + 1).toString();\r\n\t\tif (strMonth.length < 2)\r\n\t\t\tstrMonth = \"0\" + strMonth;\r\n\r\n\t\tstrDay = a_date.getDate().toString();\r\n\t\tif (strDay.length < 2)\r\n\t\t\tstrDay = \"0\" + strDay;\r\n\t}\r\n\telse\r\n\t{\r\n\t\tstrYear = a_date.substr(0, 4);\r\n\t\tstrMonth = a_date.substr(5, 2);\r\n\t\tstrDay = a_date.substr(8, 2);\r\n\t}\r\n\r\n console.log(\"The date = \" + strYear + \"-\" + strMonth + \"-\" + strDay);\r\n\t//throw \"Stopping right here\";\r\n\r\n return strYear + \"-\" + strMonth + \"-\" + strDay;\r\n}\r\n\r\nexport function getTimeFromDate(a_date) {\r\n var d = a_date.toString();\r\n //console.log(\"d = \" + d);\r\n var theYear = d.substring(0, 4);\r\n //console.log(\"theYear = \" + theYear);\r\n\r\n var separatorLocation = d.indexOf(\"-\");\r\n d = d.substring(separatorLocation + 1);\r\n //console.log(\"d = \" + d);\r\n var theMonth = d.substring(0, 2);\r\n //console.log(\"theMonth = \" + theMonth);\r\n\r\n separatorLocation = d.indexOf(\"-\");\r\n d = d.substring(separatorLocation + 1);\r\n //console.log(\"d = \" + d);\r\n var theDay = d.substring(0, 2);\r\n //console.log(\"theDay = \" + theDay);\r\n\r\n d = d.substring(3);\r\n //console.log(\"d = \" + d);\r\n var theHour = d.substring(0, 2);\r\n //console.log(\"theHour = \" + theHour);\r\n\r\n separatorLocation = d.indexOf(\":\");\r\n d = d.substring(separatorLocation + 1);\r\n //console.log(\"d = \" + d);\r\n var theMinutes = d.substring(0, 2);\r\n //console.log(\"theMinutes = \" + theMinutes);\r\n\r\n return theHour + \":\" + theMinutes;\r\n}\r\n\r\n// Expects a UTC Date/Time string like this: 2018-07-18T09:00:00.000\r\n// And returns an hours/min time like this: 09:00\r\nexport function getTimeFromUtcString(strDate) {\r\n console.log(\"Inside common-functions.js, getTimeFromUtcString...\");\r\n // Start just past the \"T\" in the string, and get the time portion (the next 5 characters).\r\n var intTLoc = strDate.indexOf(\"T\");\r\n var strTime = strDate.substr(intTLoc + 1, 5);\r\n\r\n return strTime;\r\n}\r\n\r\n// Expects a friendly Date/Time string like this: 07/18/2018 09:00:00\r\n// And returns an hours/min time like this: 09:00\r\nexport function getTimeFromFriendlyString(strDate) {\r\n console.log(\"Inside common-functions.js, getTimeFromFriendlyString...\");\r\n // Start just past the \" \" in the string, and get the time portion (the next 5 characters).\r\n var intSpaceLoc = strDate.indexOf(\" \");\r\n var strTime = strDate.substr(intSpaceLoc + 1, 5);\r\n\r\n return strTime;\r\n}\r\n\r\n//give me a date string and offset (in ms) and I'll give you back a Date\r\n// with the offset applied.\r\n// used in rules.\r\nexport function toDateOffset(str_date, int_offset) {\r\n //console.log(int_offset);\r\n //console.log(str_date);\r\n var orig_date = new Date(str_date);\r\n //console.log(orig_date.toISOString());\r\n var d = new Date(orig_date.getTime() + int_offset);\r\n //console.log(d.toISOString());\r\n\r\n return d;\r\n}\r\n\r\n//date to friendly format: \"12/05/2014 04:35:44\"\r\nexport function formatDate(d) {\r\n var d_str =\r\n [d.getMonth() + 1, d.getDate(), d.getFullYear()].join('/') + \" \" +\r\n [(\"00\" + d.getHours()).slice(-2), (\"00\" + d.getMinutes()).slice(-2), (\"00\" + d.getSeconds()).slice(-2)].join(':');\r\n\r\n return d_str;\r\n}\r\n\r\n// Date from 2010-08-11T12:25:00.000\r\n// To 08/11/2010 12:25\r\nexport function formatDateFromUtcToFriendly(d) {\r\n console.log(\"d = \" + d);\r\n var theYear = d.substring(0, 4);\r\n console.log(\"theYear = \" + theYear);\r\n\r\n var separatorLocation = d.indexOf(\"-\");\r\n d = d.substring(separatorLocation + 1);\r\n console.log(\"d = \" + d);\r\n var theMonth = d.substring(0, 2);\r\n console.log(\"theMonth = \" + theMonth);\r\n\r\n separatorLocation = d.indexOf(\"-\");\r\n d = d.substring(separatorLocation + 1);\r\n console.log(\"d = \" + d);\r\n var theDay = d.substring(0, 2);\r\n console.log(\"theDay = \" + theDay);\r\n\r\n d = d.substring(3);\r\n console.log(\"d = \" + d);\r\n var theHour = d.substring(0, 2);\r\n console.log(\"theHour = \" + theHour);\r\n\r\n separatorLocation = d.indexOf(\":\");\r\n d = d.substring(separatorLocation + 1);\r\n console.log(\"d = \" + d);\r\n var theMinutes = d.substring(0, 2);\r\n console.log(\"theMinutes = \" + theMinutes);\r\n\r\n separatorLocation = d.indexOf(\":\");\r\n d = d.substring(separatorLocation + 1);\r\n console.log(\"d = \" + d);\r\n var theSeconds = d.substring(0, 2);\r\n console.log(\"theSeconds = \" + theSeconds);\r\n\r\n separatorLocation = d.indexOf(\".\");\r\n d = d.substring(separatorLocation + 1);\r\n console.log(\"d = \" + d);\r\n var theMilli = d.substring(0);\r\n console.log(\"theMilli = \" + theMilli);\r\n\r\n var friendlyDate = theMonth + \"/\" + theDay + \"/\" + theYear + \" \" + theHour + \":\" + theMinutes;\r\n\r\n return friendlyDate\r\n}\r\n\r\n// The date may come in different string formats:\r\n//\t\t1/1/2015 8:00:00 or\r\n//\t\t01/01/2015 08:00:00\r\n// Therefore, we must allow for either format and convert.\r\nexport function formatDateFromFriendlyToUtc(d) {\r\n\t//console.log(\"Inside formatDateFromFriendlyToUtc; d = \" + d);\r\n //console.log(\"d = \" + d);\r\n var separatorLocation = d.indexOf(\"/\");\r\n //console.log(\"slashLocation = \" + separatorLocation);\r\n if (separatorLocation < 2) {\r\n var theMonth = d.substring(0, 1);\r\n //console.log(\"theMonth = \" + theMonth);\r\n theMonth = pad(theMonth);\r\n //console.log(\"theMonth = \" + theMonth);\r\n d = d.substring(2);\r\n }\r\n else {\r\n var theMonth = d.substring(0, 2);\r\n //console.log(\"theMonth = \" + theMonth);\r\n d = d.substring(3);\r\n }\r\n\r\n //console.log(\"d = \" + d);\r\n\r\n separatorLocation = d.indexOf(\"/\");\r\n if (separatorLocation < 2) {\r\n var theDay = d.substring(0, 1);\r\n //console.log(\"theDay = \" + theDay);\r\n theDay = pad(theDay);\r\n //console.log(\"theDay = \" + theDay);\r\n d = d.substring(2);\r\n }\r\n else {\r\n var theDay = d.substring(0, 2);\r\n //console.log(\"theDay = \" + theDay);\r\n d = d.substring(3);\r\n }\r\n\r\n //console.log(\"d = \" + d);\r\n\r\n var theYear = d.substring(0, 4);\r\n //console.log(\"theYear = \" + theYear);\r\n d = d.substring(5);\r\n //console.log(\"d = \" + d);\r\n\r\n\tvar theHour = \"00\";\r\n\tvar theMinutes = \"00\";\r\n\tvar theSeconds = \"00\";\r\n separatorLocation = d.indexOf(\":\");\r\n\tif (separatorLocation < 0) // The string has only date, no time.\r\n\t{\r\n\t\t// Do nothing; the hour/minutes/seconds are already set.\r\n\t}\r\n else if (separatorLocation < 2) {\r\n theHour = d.substring(0, 1);\r\n //console.log(\"theHour = \" + theHour);\r\n theHour = pad(theHour);\r\n //console.log(\"theHour = \" + theHour);\r\n d = d.substring(2);\r\n }\r\n else {\r\n theHour = d.substring(0, 2);\r\n //console.log(\"theHour = \" + theHour);\r\n d = d.substring(3);\r\n }\r\n\r\n //console.log(\"d = \" + d);\r\n\tif (separatorLocation < 0)\r\n\t{\r\n\t\t// Do nothing; the hour/minutes/seconds are already set.\r\n\t}\r\n\telse\r\n\t{\r\n\t\ttheMinutes = d.substring(0, 2);\r\n\t\t//console.log(\"theMinutes = \" + theMinutes);\r\n\t\td = d.substring(3);\r\n\t\t//console.log(\"d = \" + d);\r\n\t\td = \"\" + d;\r\n\t\t//console.log(\"d = \" + d);\r\n\t\tif ((d.length > 0) && (d.length < 2))\r\n\t\t\ttheSeconds = pad(d);\r\n\t\telse\r\n\t\t\ttheSeconds = \"00\";\r\n\t}\r\n //console.log(\"theSeconds = \" + theSeconds);\r\n\r\n var utc = theYear +\r\n \"-\" + theMonth +\r\n \"-\" + theDay +\r\n \" \" + theHour +\r\n \":\" + theMinutes +\r\n \":\" + theSeconds +\r\n \".\" + \"000\";\r\n\r\n //console.log(\"utc = \" + utc);\r\n return utc;\r\n}\r\n\r\n// This function takes a date string in the following formats...\r\n// YYYY-MM-DDTHH:MM:SS.mmm\r\n// MM/DD/YYYY HH:MM:SS\r\n// and converts it into this format: YYYY-MM-DD HH:MM:SSS.mmm\r\nexport function convertDateFromUnknownStringToUTC(strD) {\r\n//function convertDateFromUnknownStringToUTC(strD, strTimeFormat) {\r\n //console.log(\"Inside common-functions.js, convertDateFromUnknownStringToUTC...\");\r\n //console.log(\"strD = \" + strD + \", strTimeFormat = \" + strTimeFormat);\r\n\r\n\tvar strIsoDateTime = \"\";\r\n\tvar strType = \"\";\r\n\tstrType = typeof strD;\r\n\t//console.log(\"strType = \" + strType);\r\n\tif (strType === \"string\")\r\n\t{\r\n\t\tif (strD.indexOf(\"T\") > -1) // UTC (YYYY-MM-DDTHH:MM:SS.mmm)\r\n\t\t{\r\n\t\t\tstrIsoDateTime = strD.replace(\"T\", \" \");\r\n\t\t}\r\n\t\telse if (strD.indexOf(\"/\") > -1) // Friendly (MM/DD/YYYY HH:MM)\r\n\t\t{\r\n\t\t\tstrIsoDateTime = formatDateFromFriendlyToUtc(strD);\r\n }\r\n\r\n //if ((typeof strTimeFormat !== 'undefined') && (strTimeFormat !== null)) {\r\n // if (strTimeFormat === \"HH:MM\") {\r\n // var intColonLoc = strIsoDateTime.indexOf(\":\"); // The location of the colon after the hour.\r\n\r\n // strIsoDateTime = strIsoDateTime.substr(0, intColonLoc + 3);\r\n // }\r\n //}\r\n\t}\r\n\telse\r\n\t{\r\n\r\n\t}\r\n\t//console.log(\"strIsoDateTime = \" + strIsoDateTime);\r\n\treturn strIsoDateTime;\r\n\r\n}\r\n\r\n//if(somearray.contains(\"a\"))... (case insensitive) -- can't be used with ints\r\n// @ts-ignore\r\nif (!Array.prototype.contains) {\r\n // @ts-ignore\r\n Array.prototype.contains = function (searchElement) {\r\n\r\n if (typeof searchElement === 'string') {\r\n searchElement = searchElement.toLowerCase();\r\n }\r\n\r\n if (this == null)\r\n throw new TypeError('Array.contains: \"this\" is null or not defined');\r\n\r\n if (this.length == 0)\r\n return false;\r\n\r\n for (var i = this.length - 1; i >= 0; i--) {\r\n if (typeof this[i] !== 'string')\r\n continue;\r\n\r\n if (this[i].toLowerCase() == searchElement)\r\n return true;\r\n };\r\n\r\n return false;\r\n }\r\n}\r\n\r\n//case sensitive contains\r\n// @ts-ignore\r\nif (!Array.prototype.containsExactly) {\r\n // @ts-ignore\r\n Array.prototype.containsExactly = function (searchElement) {\r\n\r\n if (this == null)\r\n throw new TypeError('Array.contains: \"this\" is null or not defined');\r\n\r\n if (this.length == 0)\r\n return false;\r\n\r\n for (var i = this.length - 1; i >= 0; i--) {\r\n if (this[i] == searchElement)\r\n return true;\r\n };\r\n\r\n return false;\r\n }\r\n}\r\n\r\n\r\n//if(somearray.contains(17))... -- use with ints\r\n// @ts-ignore\r\nif (!Array.prototype.containsInt) {\r\n // @ts-ignore\r\n Array.prototype.containsInt = function (searchElement) {\r\n if (this == null)\r\n throw new TypeError('Array.contains: \"this\" is null or not defined');\r\n\r\n if (this.length == 0)\r\n return false;\r\n\r\n for (let i = 0; i < this.length; i++) {\r\n if (this[i] == searchElement)\r\n return true;\r\n };\r\n\r\n return false;\r\n }\r\n}\r\n// @ts-ignore\r\nArray.prototype.remove = function() {\r\n var what, a = arguments, L = a.length, ax;\r\n while (L && this.length) {\r\n what = a[--L];\r\n while ((ax = this.indexOf(what)) !== -1) {\r\n this.splice(ax, 1);\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n//might be a list of metadata values from project.Metadata or a list of actual properties.\r\nexport function addMetadataProperties(metadata_list, ignored, scope, CommonService) {\r\n\r\n //console.log(\"--- running addMetadataProperties --- \");\r\n //console.log(\"metadata_list : \" + metadata_list.length, metadata_list);\r\n //console.log(\"scope.metadataList : \" + angular.toJson(scope.metadataList), scope.metadataList);\r\n\r\n metadata_list.forEach( function (i_property, key) {\r\n\r\n var property = i_property;\r\n if (i_property.MetadataPropertyId) //is it a value from project.Metadata? if so then grab the property.\r\n property = CommonService.getMetadataProperty(i_property.MetadataPropertyId);\r\n\r\n //property var is a \"metadataProperty\" (not a metadata value)\r\n\r\n //console.log(\"typeof property.Name = \" + property.Name);\r\n //if (typeof property.Name !== 'undefined')\r\n //\tconsole.log(\"property.Name = \" + property.Name);\r\n //else\r\n //\tconsole.log(\"property.Name = \" + \"'undefined'\");\r\n\r\n //if it isn't already there, add it as an available option\r\n //if(!(property.Name in scope.metadataList))\r\n if ((typeof property.Name !== 'undefined') && (property.Name !== null) && !(property.Name in scope.metadataList)) {\r\n //scope.metadataList[property.Name] =\r\n scope.metadataList[property.Name] =\r\n {\r\n field: property.Name,\r\n MetadataPropertyId: property.Id,\r\n controlType: property.ControlType,\r\n };\r\n }\r\n\r\n //set the value no matter what if we have it.\r\n if (i_property.Values) {\r\n if (property.ControlType == \"multiselect\") {\r\n //need to see if we are dealing with old style (just a list) or if it is a bonafide object.\r\n var values;\r\n try {\r\n values = angular.fromJson(i_property.Values);\r\n }\r\n catch (e) //if we can't then it wasn't an object... use split instead.\r\n {\r\n values = i_property.Values.split(\",\")\r\n }\r\n\r\n scope.metadataList[property.Name].Values = values;\r\n }\r\n else {\r\n scope.metadataList[property.Name].Values = i_property.Values;\r\n }\r\n\r\n if (scope.project)\r\n scope.project.MetadataValue[property.Id] = scope.metadataList[property.Name].Values; //make it easy to get values by metadata id.\r\n }\r\n else {\r\n scope.metadataList[property.Name].Values = \"\";\r\n //console.log(\" --->>> setting property VALUES to empty: \", property.Name);\r\n }\r\n\r\n //console.log(\" and in the end: \" + property.Name + \".Values is \", scope.metadataList[property.Name].Values);\r\n\r\n if (property.PossibleValues) {\r\n populateMetadataDropdowns(scope, property); //setup the dropdown\r\n scope.metadataList[property.Name].options = scope.CellOptions[property.Id + \"_Options\"];\r\n }\r\n\r\n\r\n\r\n });//foreach\r\n\r\n //console.error(\" >>>>>>>>>>>>>>>>>>>>>>>>>>>> at the end of adding: scope.metadataList \");\r\n //console.dir(scope.metadataList);\r\n\r\n\r\n};\r\n\r\n// This function takes an array that may have duplicate entries, and removes the duplicates.\r\n// [a, a, b, c, c, c] -> [a, b, c]\r\nexport function uniq_fast(a) {\r\n\t//console.log(\"Inside uniq_fast...\");\r\n\t//console.dir(a);\r\n\tvar seen = {};\r\n\tvar out = [];\r\n\tvar len = a.length;\r\n\tvar j = 0;\r\n\r\n\t//console.log(\"len = \" + len);\r\n\tfor (var i = 0; i < len; i++)\r\n\t{\r\n\t\tvar item = a[i];\r\n\t\t//console.log(\"item = \" + item);\r\n\t\t//console.log(\"seen[\" + item + \"] = \" + seen[item]);\r\n\t\tif ((seen[item] === undefined) || (seen[item] !== 1))\r\n\t\t{\r\n\t\t\t//console.log(\"New item...\");\r\n\t\t\tseen[item] = 1;\r\n\t\t\tout[j++] = item;\r\n\t\t}\r\n\t}\r\n\t//console.log(\"out is next...\");\r\n\t//console.dir(out);\r\n\r\n\treturn out;\r\n};\r\n\r\n// Is an object empty ({}) or not?\r\n// This function takes an object and checks to see if it has any properties inside.\r\n// Reference: https://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object\r\nexport function isObjectEmpty(obj) {\r\n\tconsole.log(\"Inside common-functions.js, isObjectEmpty...\");\r\n\tfor(var prop in obj){\r\n\t\tif (obj.hasOwnProperty(prop))\r\n\t\t\treturn false;\r\n\t}\r\n\treturn true;\r\n};\r\n\r\n// This function expects a string looking like this: \"a;b;c;d;\"\r\n// and converts the string into an array looking like this: [a,b,c,d].\r\nexport function convertStringToArray(aString){\r\n\tconsole.log(\"Inside common-functions.js, convertStringToArray...\");\r\n\t//console.log(\"aString = \" + aString);\r\n\r\n\tvar aryItems = aString.split(\";\");\r\n\t//console.log(\"aryItems is next...\");\r\n\t//console.dir(aryItems);\r\n\r\n\t// Next, get rid of that trailing semicolon record.\r\n\taryItems.splice(-1, 1);\r\n\t//console.dir(aryItems);\r\n\r\n\treturn aryItems;\r\n}\r\n\r\nexport function convertStringArrayToNormalString(aArray) {\r\n // The join make the list a comma-separated string; we need a semi-colon-separated string.\r\n //var strA = aArray.join();\r\n //Add the trailing ;\r\n //strA += \";\";\r\n\r\n var strA = \"\";\r\n\r\n aArray.forEach(function (item) {\r\n strA += item + \";\";\r\n });\r\n\r\n return strA;\r\n}\r\n\r\n// This function expects a string looking like this: \"a;\\nb;\\nc;\\nd;\"\r\n// and converts the string into a string looking like this: \"a;b;c;d;\"\r\n// Handles strings like Collaborators; this export function for saving.\r\nexport function convertStringWithSeparatorsAndReturnsToNormalString(aString) {\r\n var strA = aString.replace(/(\\r\\n|\\r|\\n)/gm, \"\");\r\n\r\n return strA;\r\n}\r\n\r\n// This function expects a string looking like this: \"a;b;c;d;\"\r\n// and converts the string into a string looking like this: \"a;\\nb;\\nc;\\nd;\"\r\n// Handles strings like Collaborators; this export function for displaying.\r\nexport function convertStringWithSeparatorsToStringWithSeparatorsAndReturns(aString) {\r\n var strA = aString.replace(/(\\r\\n|\\r|\\n)/gm, \"\");\r\n var aryA = strA.split(';');\r\n\r\n // Next, get rid of that trailing semicolon record.\r\n aryA.splice(-1, 1);\r\n\r\n strA = \"\";\r\n\r\n //var intCount = 0;\r\n aryA.forEach(function (item) {\r\n //if (intCount === 0) {\r\n //strA += item;\r\n //strA += item + \";\";\r\n strA += item + \";\\n\";\r\n //}\r\n //else {\r\n //strA += \"\\n\" + item + \";\";\r\n // strA += item + \";\\n\";\r\n //}\r\n //intCount++;\r\n });\r\n\r\n return strA;\r\n}\r\n\r\n// This function expects a string looking like this:\r\n// str1;\r\n// str2;\r\n// str3;\r\n// Assuming str2 is passed in, the function removes str2 from the string: str1;str3;\r\nexport function removeStringItemFromList(strItem, in_list) {\r\n /*in_list.forEach(function (list_item, index) {\r\n if (list_item === strText) {\r\n in_list.splice(index, 1);\r\n console.log(\" -- removing \" + list_item);\r\n } else {\r\n console.log(\" -- keeping \" + list_item);\r\n }\r\n });\r\n */\r\n\r\n var strNew = \"\";\r\n var aryA = in_list.split(\";\");\r\n\r\n // Next, get rid of that trailing blank record.\r\n aryA.splice(-1, 1);\r\n console.dir(aryA);\r\n\r\n var aryLength = aryA.length;\r\n\r\n for (var i = 0; i < aryLength; i++) {\r\n console.log(\"aryA[i] = \" + aryA[i]);\r\n if (aryA[i].indexOf(strItem) > -1) {\r\n console.log(\"Found the item...\");\r\n aryA.splice(i, 1);\r\n console.log(\"Removed the item.\");\r\n\r\n // Rebuild the string now, adding the semicolon and newline after every line.\r\n angular.forEach(aryA, function (item) {\r\n strNew += item + \";\\n\";\r\n console.log(\"Added item...\");\r\n });\r\n\r\n // Since we found the item, skip to then end to exit.\r\n i = aryLength;\r\n }\r\n }\r\n\r\n return strNew;\r\n}\r\n\r\n//looks at the metadata setting to see if it is a habitat project\r\nexport function isHabitatProject (a_project) {\r\n return (a_project.MetadataValue[METADATA_PROPERTY_SUBPROGRAM]) === \"Habitat\";\r\n};\r\n\r\n//looks at the metadata setting to see if it is a crpp project\r\nexport function isCRPPProject (a_project) {\r\n return (a_project.MetadataValue[METADATA_PROPERTY_PROGRAM]) === \"CRPP\";\r\n}\r\n\r\n\r\n//checks to see if the uploading file already exists\r\n//takes the incoming file to check and a reference to the files\r\n//returns boolean\r\nexport function isDuplicateUploadFile(incoming_file, files_to_check) {\r\n var foundDuplicate = false;\r\n\r\n incoming_file.Name = incoming_file.name; //copy this value into \"Name\" property to avoid confusion!\r\n\r\n console.log(\"checking for duplicates: incoming_file.Name = \" + incoming_file.Name);\r\n\r\n if (files_to_check && Array.isArray(files_to_check)) {\r\n\r\n console.log(\" -- checking in \" + files_to_check.length + \" files... \");\r\n //console.dir(files_to_check);\r\n\r\n files_to_check.forEach(function (existing_file) {\r\n if (existing_file.Name === incoming_file.Name) {\r\n console.log(\" -- found a duplicate: \" + incoming_file.Name + \" already exists in the incoming files_to_check.\");\r\n foundDuplicate = true;\r\n }\r\n });\r\n }\r\n else\r\n console.log(\" -- no files given... i guess there can't be any duplicates!\");\r\n\r\n return foundDuplicate;\r\n}\r\n\r\n//helper function that unJSON's the vals if a string or else returns the vals if already an object\r\nexport function getJsonObjects(vals) {\r\n\r\n let objvals = vals;\r\n\r\n try {\r\n if (typeof vals === 'string' && vals !== null && vals !== \"\") {\r\n objvals = angular.fromJson(vals);\r\n if (Array.isArray(objvals) && objvals.length > 0) {\r\n //console.dir(objvals);\r\n if (objvals[0].hasOwnProperty('ID')) {\r\n objvals = makeObjects(objvals, 'ID', 'LABEL'); //if our possible values are objectified (fisherman, etc. from LookupHelper)\r\n }\r\n else if (typeof objvals[0] == 'object' && 'POSSIBLEVALUES' in objvals[0]) { //true when a datasource is a metafield (select PossibleValues from metadataproperties where name = 'ProjectLead')\r\n //console.log(\"have possible values\");\r\n //console.dir(objvals[0]);\r\n objvals = angular.fromJson(objvals[0].POSSIBLEVALUES);\r\n if (Array.isArray(objvals))\r\n objvals = objvals.sort();\r\n //console.dir(objvals);\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n console.error(\"Failed converting to json:\" + vals);\r\n console.dir(e);\r\n }\r\n\r\n //console.warn(\"possiblevalues\");\r\n //console.dir(objvals);\r\n return objvals;\r\n}\r\n\r\n\r\n//helper function that aggregates the filenames for a list of activities\r\n// returns null if there are none.\r\n\r\n//the activities are an array of\r\n// results that come from http://localhost/services/api/v1/activity/getdatasetactivitydata?id=18887 (for example)\r\n//so the structure is var activity = {Dataset: obj, Header: obj, Details: [obj,...]}\r\nexport function getFilenamesForTheseActivities(dataset, activities) {\r\n\r\n console.log(\" compiling filenames for \" + activities.length + \" activities.\");\r\n\r\n //early return if incoming variables aren't setup for us.\r\n if (!activities || !dataset || !Array.isArray(activities))\r\n return null;\r\n\r\n var files = [];\r\n var file_names = [];\r\n\r\n var file_fields = getFileFields(dataset);\r\n\r\n //get the files out of each file field for each activity\r\n activities.forEach(function (activity) {\r\n\r\n //for each header file field\r\n file_fields.Header.forEach(function (header_file_field) {\r\n var file_json = activity.Header[header_file_field.DbColumnName]; //like \"FarmingLeaseFiles\"\r\n //console.log(\"typeof file_json = \" + typeof file_json);\r\n //console.log(\"file_json is next...\");\r\n //console.dir(file_json);\r\n if (file_json) {\r\n var file_obj = angular.fromJson(file_json); //the files turned into the array in the file field, e.g. \"FarmingLeaseFiles\"\r\n if (Array.isArray(file_obj)) {\r\n file_obj.forEach(function (file_to_add) {\r\n files.push(file_to_add);\r\n file_names.push(file_to_add.Name);\r\n });\r\n }\r\n }\r\n });\r\n\r\n //for each detail row, do the same thing\r\n activity.Details.forEach(function (detail) {\r\n file_fields.Details.forEach(function (detail_file_field) {\r\n var file_json = detail[detail_file_field.DbColumnName]; //like \"AppraisalFiles\"\r\n if (file_json) {\r\n var file_obj = angular.fromJson(file_json); //the files turned into the array in the file field, e.g. \"AppraisalFiles\"\r\n if (Array.isArray(file_obj)) {\r\n file_obj.forEach(function (file_to_add) {\r\n files.push(file_to_add);\r\n file_names.push(file_to_add.Name);\r\n });\r\n }\r\n }\r\n });\r\n });\r\n });\r\n\r\n //so when we're done we should have a list of all the files and the filenames.\r\n var result = (file_names.length > 0) ? file_names.join(\", \") : null;\r\n console.log(\"done! we found \" + files.length + \" files: \", result);\r\n\r\n return result;\r\n\r\n\r\n}\r\n\r\n\r\n//compiles all of the file fields for header/detail and\r\n//returns an object with {Header: [header_file_filds,...], Details: [detail_file_fields,...]}\r\nexport function getFileFields(dataset) {\r\n\r\n var file_fields = {\r\n Header: [],\r\n Details: []\r\n };\r\n\r\n //gather our fields that are files and separate into header/detail\r\n dataset.Fields.forEach(function (field) {\r\n if (field.ControlType == \"file\") {\r\n if (field.FieldRoleId == 1)\r\n file_fields[\"Header\"].push(field);\r\n else\r\n file_fields[\"Details\"].push(field);\r\n }\r\n });\r\n\r\n return file_fields;\r\n\r\n}\r\n\r\n//remove file from the list (otherwise our duplicate checking will have false positives.)\r\nexport function removeFileFromList(in_file, in_list) {\r\n in_list.forEach(function (list_file, index) {\r\n if (list_file.Name === in_file.Name) {\r\n in_list.splice(index, 1);\r\n console.log(\" -- removing \" + list_file.Name);\r\n } else {\r\n console.log(\" -- keeping \" + list_file.Name);\r\n }\r\n });\r\n};\r\n\r\n\r\n//return whether or not the file given is in the list given (checks by the Name matching)\r\nexport function isFileInList(in_file, in_list) {\r\n var isInList = false;\r\n\r\n in_list.forEach(function (list_file, index) {\r\n if (list_file.Name === in_file.Name)\r\n isInList = true;\r\n });\r\n\r\n return isInList;\r\n}\r\n\r\n\r\nexport function buildDatasetLocationObjectsList(projectLocations, locationType)\r\n{\r\n throw \"LocationTypeIds are no longer used\";\r\n\r\n /*\r\n console.log(\"Inside buildDatasetLocationObjectsList...\");\r\n var thisDatasetLocationObjects = [];\r\n\r\n angular.forEach(projectLocations, function (location, key) {\r\n //console.log(\"location.LocationType.Id = \" + location.LocationType.Id + \", locationType = \" + locationType);\r\n if (location.LocationType.Id === locationType)\r\n thisDatasetLocationObjects.push(location.SdeObjectId);\r\n });\r\n\r\n return thisDatasetLocationObjects;\r\n */\r\n}\r\n\r\n//can be used by any valueFormatter to format a date. returns empty string if invalid date\r\n// @param in_date the date you want to format\r\n// @param in_format the format you want to use (moment's formatter types) - defaults to M/d/Y\r\nexport function valueFormatterDate(in_date, in_format?) {\r\n const the_format = typeof in_format !== 'undefined' ? in_format : 'L'; //default to L type (M/d/Y)\r\n\r\n let retval = \"\";\r\n\r\n if (in_date) {\r\n const the_date = moment(in_date);\r\n\r\n if (the_date.isValid())\r\n retval = the_date.format(the_format);\r\n }\r\n\r\n return retval;\r\n}\r\n\r\n//format a value to currency\r\nexport function valueFormatterCurrency(in_value) {\r\n return filterToCurrency(in_value);\r\n}\r\n\r\n//format a numeric value to include commas\r\nexport function valueFormatterNumericCommas(x) {\r\n if (!x)\r\n return x;\r\n\r\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n}\r\n\r\n//Takes a string or number, however formatted, and turns it into a javascript number.\r\nexport function parseToFloat(value, decimal?) {\r\n\r\n if (!decimal)\r\n decimal = 2; //2 decimal places by default\r\n\r\n // @ts-ignore\r\n var regex = new RegExp(\"[^0-9-\" + '.' + \"]\", [\"g\"]);\r\n var output = parseFloat(\r\n (\"\" + value)\r\n .replace(/\\((?=\\d+)(.*)\\)/, \"-$1\") // replace bracketed values with negatives\r\n .replace(regex, '') // strip out any cruft\r\n );\r\n\r\n output.toFixed(decimal);\r\n\r\n return output;\r\n}\r\n\r\n//Takes a string or number, however formatted, and returns it filtered for USD currency.\r\nexport function filterToCurrency(value) {\r\n var p_val = parseToFloat(value);\r\n\r\n if (isNaN(p_val))\r\n return value;\r\n\r\n return (parseToFloat(value)).toLocaleString('en-US', { style: 'currency', currency: 'USD' });\r\n}\r\n\r\n\r\n\r\n//return an array from the eventfiles.\r\nexport function getFilesArrayAsList (theFiles) {\r\n\r\n if (theFiles === undefined || theFiles === null)\r\n return [];\r\n\r\n var files = null;\r\n\r\n try {\r\n files = angular.fromJson(theFiles);\r\n }\r\n catch (e) {\r\n try { // theFiles is not an object; is it a string?\r\n files = theFiles.split(\",\");\r\n }\r\n catch (e) {\r\n console.error(\"could not parse files: \" + theFiles);\r\n }\r\n }\r\n\r\n return (files === null || !Array.isArray(files)) ? [] : files; //if it isn't an array, make an empty array\r\n\r\n};\r\n\r\n//return an array from the items.\r\n// Receives: a;b;c;\r\n// Returns: [a,b,c]\r\nexport function getTextArrayAsList(theItems) {\r\n\r\n if (theItems === undefined || theItems === null)\r\n return [];\r\n\r\n var items = null;\r\n var newItemList = [];\r\n try {\r\n //items = angular.fromJson(theItems);\r\n items = theItems.split(\";\");\r\n items.forEach(function (item) {\r\n newItemList.push(item);\r\n });\r\n\r\n newItemList.splice(-1, 1);\r\n }\r\n catch (e) {\r\n console.error(\"could not parse items: \" + theItems);\r\n }\r\n\r\n return newItemList; //if it isn't an array, make an empty array\r\n\r\n};\r\n\r\n//return an array of file links to cdmsShareUrl (defined in config) for subproject\r\nexport function getSubprojectFilesArrayAsLinks (a_projectId, a_subprojectId, a_files)\r\n{\r\n var files = getFilesArrayAsList(a_files);\r\n var retval = [];\r\n\r\n files.forEach(function (file) {\r\n if(file.Link)\r\n retval.push(\"\" + file.Name + \"\");\r\n else\r\n retval.push(\"\" + file.Name + \"\");\r\n });\r\n\r\n return retval;\r\n}\r\n\r\n//return an array of file links to cdmsShareUrl (defined in config) for project\r\nexport function getProjectFilesArrayAsLinks (a_projectId, a_datasetId, a_files)\r\n{\r\n var files = getFilesArrayAsList(a_files);\r\n var retval = [];\r\n\r\n files.forEach(function (file) {\r\n //console.dir(file);\r\n if(file.Link)\r\n retval.push(\"\" + file.Name + \"\");\r\n else if (file.Name)\r\n retval.push(\"\" + file.Name + \"\");\r\n else\r\n retval.push(\"\" + file + \"\");\r\n });\r\n\r\n return retval;\r\n}\r\n\r\n//Receive a text array, and convert it into a list with \\n after each item.\r\nexport function getProjectItemsArrayAsTextList(a_itemList) {\r\n var itemList = getTextArrayAsList(a_itemList);\r\n var retval = [];\r\n\r\n itemList.forEach(function (item) {\r\n //console.dir(file);\r\n retval.push(item + \"\\n\");\r\n });\r\n\r\n return retval;\r\n}\r\n\r\n//Receive an array like this: [a,b,c]\r\n//Return:\r\n//-a\r\n//-b\r\n//-c\r\nexport function buildBulletedItemList(a_itemList) {\r\n var list = '
    ';\r\n //var itemList = getTextArrayAsList(a_itemList);\r\n\r\n a_itemList.forEach(function (item) {\r\n list += '
  • ' + item + '
  • ';\r\n });\r\n\r\n list += '
';\r\n\r\n //console.dir(list);\r\n return list;\r\n}\r\n\r\n\r\nexport function getParsedMetadataValues(raw_values) {\r\n //get the value no matter what if we have it.\r\n\r\n var values = raw_values;\r\n\r\n if (raw_values) {\r\n\r\n try {\r\n values = angular.fromJson(raw_values);\r\n }\r\n catch (e) //if we can't then it wasn't an object... use split instead.\r\n {\r\n if (typeof values === 'string')\r\n values = raw_values.split(\",\");\r\n }\r\n }\r\n\r\n return values;\r\n\r\n}\r\n\r\n\r\nexport function valueFormatterBoolean(in_bool) {\r\n return (in_bool) ? \"Yes\" : \"No\";\r\n}\r\n\r\n//takes a json string of an array '[\"a\",\"b\",\"c\"]' and returns a,b,c\r\n// if it isn't an array, it returns what we got.\r\nexport function valueFormatterArrayToList(the_array) {\r\n\r\n if (is_empty(the_array))\r\n return \"\";\r\n\r\n var list = the_array;\r\n\r\n var selectOptions = [];\r\n\r\n try {\r\n selectOptions = angular.fromJson(the_array);\r\n\r\n //make array elements have same key/value\r\n if (Array.isArray(selectOptions)) {\r\n list = selectOptions.join();\r\n }\r\n\r\n } catch (e) {\r\n console.log(\"problem parsing: \" + the_array );\r\n }\r\n\r\n //console.dir(list);\r\n\r\n return list;\r\n\r\n}\r\n\r\nexport function getNameFromUserId(theId, userList) {\r\n var strUser = \"\";\r\n var blnKeepGoing = true;\r\n\r\n userList.forEach(function (user) {\r\n if (blnKeepGoing) {\r\n if (user.Id === theId) {\r\n // Table Users has a column Fullname\r\n // Table Fishermen has a column FullName\r\n // This function will work for both cases, with the following if block...\r\n if (user.Fullname)\r\n strUser = user.Fullname;\r\n else if (user.FullName)\r\n strUser = user.FullName;\r\n\r\n blnKeepGoing = false;\r\n }\r\n }\r\n });\r\n\r\n return strUser;\r\n}\r\n\r\n\r\nexport function getAgGridFilterByType(type, dbColumnName) {\r\n\r\n //if(type == 'textarea' || type == 'easting'|| type == 'northing'|| type == 'time' || type == 'activity-text')\r\n if(type == 'textarea' || type == 'easting'|| type == 'northing'|| type == 'time' || type == 'activity-text' || type == 'text' || type == 'select' ||\r\n ((dbColumnName !== null) && (dbColumnName.indexOf(\"Name\") > -1))\r\n )\r\n return 'agTextColumnFilter';\r\n\r\n if (type == 'number')\r\n return \"agNumberColumnFilter\";\r\n\r\n if (type == \"date\" || type == 'datetime' || type == 'activity-date')\r\n return \"agDateColumnFilter\";\r\n\r\n return true; //default to the checkboxy filter\r\n}\r\n\r\nexport function getAgGridFilterParamsByType(type) {\r\n if (type == \"date\" || type == 'datetime' || type == 'activity-date')\r\n return { comparator: momentComparator, apply: true };\r\n\r\n return null; //default to nothing\r\n}\r\n\r\nexport function getAgGridFilterKeyCreator(values) {\r\n //console.log(\"values is next...\");\r\n //console.dir(values);\r\n if (Array.isArray(values)) { //if array type of possible values, just return the value;\r\n return function(params) { \r\n //console.log(\"Array; params is next...\");\r\n //console.dir(params)\r\n return params.value; \r\n }\r\n }\r\n else {\r\n return function(params) { \r\n //console.log(\"NOT array: params is next...\");\r\n //console.dir(params)\r\n return values[params.value]; \r\n }\r\n }\r\n}\r\n\r\n//compare two dates just using the day (ignoring the time)\r\nexport function momentComparator(moment1, moment2) {\r\n\r\n if (moment(moment1).isSame(moment2, 'day'))\r\n return 0;\r\n\r\n if (moment(moment1).isBefore(moment2, 'day'))\r\n return 1;\r\n\r\n if (moment(moment1).isAfter(moment2, 'day'))\r\n return -1;\r\n\r\n}\r\n\r\n//takes an array and returns a string list\r\nexport function parseArrayToStringValues (array_in) {\r\n var result = '';\r\n array_in.forEach(function (item) {\r\n result += item + \"\\n\";\r\n })\r\n\r\n return result;\r\n}\r\n\r\n//takes a string list (like a textarea) and returns an array\r\nexport function parseStringValuesToArray (string_values) {\r\n //do some cleanup of the incoming data\r\n string_values = string_values.replace(/,|\"/g, \"\");\r\n\r\n var ListValues = string_values.trim().split('\\n');\r\n\r\n for (let i = 0; i < ListValues.length; i++) {\r\n ListValues[i] = ListValues[i].trim();\r\n }\r\n\r\n return ListValues;\r\n\r\n//};\r\n}\r\n\r\nexport function parseCostCenter (strValue) {\r\n //strValue = strValue.replace(/\\s\\s+/g,''); //Remove the spaces\r\n strValue = strValue.replace(/ /g,''); //Remove the spaces\r\n strValue = strValue.replace(/-/g,'');\r\n strValue = strValue.substr(0, 3) + \"-\" + strValue.substr(3,3);\r\n\r\n return strValue;\r\n}\r\n\r\n//polyfill for @%#@ IE\r\nif (typeof Object.assign != 'function') {\r\n Object.assign = function(target) {\r\n 'use strict';\r\n if (target == null) {\r\n throw new TypeError('Cannot convert undefined or null to object');\r\n }\r\n\r\n target = Object(target);\r\n for (var index = 1; index < arguments.length; index++) {\r\n var source = arguments[index];\r\n if (source != null) {\r\n for (var key in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n target[key] = source[key];\r\n }\r\n }\r\n }\r\n }\r\n return target;\r\n };\r\n}\r\n\r\n\r\n/// validation functions\r\nexport function validateOriginFinClip(row, row_errors) {\r\n //console.dir(row);\r\n if (row['Origin'] == 'NAT') {\r\n //then we shouldn't have a tag or fin clip\r\n if (row['Tag'] && (row['Tag'].indexOf('WIRE')>-1 || row['Tag'].indexOf('VIE')>-1))\r\n row_errors.push('NAT is incompatible with Tag WIRE or VIE');\r\n\r\n //if there is a finclip give an error\r\n if (row['FinClip'] && !(row['FinClip'].indexOf('NONE') > -1 || row['FinClip'].indexOf('NA') > -1 )) {\r\n row_errors.push(row['Origin'] + ' should not have a FinClip');\r\n }\r\n\r\n }\r\n else if (row['Origin'] == 'HAT') {\r\n //then if a tag is set it should be wire or vie\r\n if (row['Tag'] && (row['Tag'].indexOf('WIRE')==-1 && row['Tag'].indexOf('VIE')==-1))\r\n row_errors.push('HAT expects Tag to be WIRE or VIE (not '+row['Tag']+')');\r\n\r\n //and if there is no finclip we expect one\r\n if (!row['FinClip'] || row['FinClip'].indexOf('NONE') > -1) {\r\n row_errors.push(row['Origin'] + ' expects a FinClip');\r\n }\r\n\r\n //if finclip is NA and tag is not wire/vie, we expect a different finclip\r\n if(row['FinClip'] == 'NA' && (['Tag'].indexOf('WIRE')==-1 || row['Tag'].indexOf('VIE')==-1))\r\n row_errors.push(row['Origin'] + ' expects a FinClip or a Tag of WIRE or VIE');\r\n\r\n }\r\n\r\n}\r\n\r\nexport function getProjectPrimaryLocation(projectLocations, projectId) {\r\n throw \"LocationTypeIds are no longer used\";\r\n/*\r\n var intLocationId = 0;\r\n var keepGoing = true;\r\n\r\n projectLocations.forEach(function (loc) {\r\n if (keepGoing) {\r\n if (loc.ProjectId === projectId && loc.LocationTypeId === PRIMARY_PROJECT_LOCATION_TYPEID) // Primary project location\r\n {\r\n intLocationId = loc.Id;\r\n keepGoing = false; // Stop checking the LocationTypeId now.\r\n }\r\n }\r\n });\r\n\r\n return intLocationId;\r\n */\r\n}\r\n\r\n/* Boolean Cell Renderer - gives you a checkbox for a boolean cell in ag-grid */\r\nexport function BooleanEditor() { };\r\nexport function BooleanCellRenderer() { };\r\n\r\nBooleanCellRenderer.prototype.init = function (params) {\r\n this.eGui = document.createElement('span');\r\n if (params.value !== \"\" || params.value !== undefined || params.value !== null) {\r\n var checkedStatus = params.value ? \"checked\" : \"\";\r\n var input = document.createElement('input');\r\n input.type = \"checkbox\";\r\n input.checked = params.value;\r\n input.addEventListener('click', function (event) {\r\n\r\n if (!params.colDef.editable) {\r\n console.log(\"ignoring click - colDef.editable = false\");\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n params.value = !params.value;\r\n params.data[params.colDef.field] = params.value;\r\n //console.log(params.colDef.field + \" changed to : \" + params.value);\r\n if( params.api.gridOptionsWrapper.gridOptions.hasOwnProperty('onCellValueChanged')){\r\n params.api.gridOptionsWrapper.gridOptions.onCellValueChanged(params); //call our cell changed\r\n console.log(\"changed a boolean!\");\r\n }\r\n //console.dir(params);\r\n });\r\n this.eGui.innerHTML = '';\r\n this.eGui.appendChild(input);\r\n }\r\n};\r\n\r\nBooleanCellRenderer.prototype.getGui = function () {\r\n return this.eGui;\r\n};\r\n\r\nBooleanEditor.prototype.init = function (params) {\r\n this.container = document.createElement('div');\r\n this.value = params.value;\r\n params.stopEditing();\r\n};\r\nBooleanEditor.prototype.getGui = function () {\r\n return this.container;\r\n};\r\n\r\nBooleanEditor.prototype.afterGuiAttached = function () {\r\n};\r\n\r\nBooleanEditor.prototype.getValue = function () {\r\n return this.value;\r\n};\r\n\r\nBooleanEditor.prototype.destroy = function () {\r\n};\r\n\r\nBooleanEditor.prototype.isPopup = function () {\r\n return true;\r\n};\r\n\r\n\r\nexport function formatUsPhone(phone) {\r\n\r\n if(!phone)\r\n return phone;\r\n\r\n var phoneTest = new RegExp(/^((\\+1)|1)? ?\\(?(\\d{3})\\)?[ .-]?(\\d{3})[ .-]?(\\d{4})( ?(ext\\.? ?|x)(\\d*))?$/);\r\n\r\n phone = phone.trim();\r\n var results = phoneTest.exec(phone);\r\n if (results !== null && results.length > 8) {\r\n\r\n return \"(\" + results[3] + \") \" + results[4] + \"-\" + results[5] + (typeof results[8] !== \"undefined\" ? \" x\" + results[8] : \"\");\r\n\r\n }\r\n else {\r\n return phone;\r\n }\r\n}\r\n\r\n//polyfill for includes in IE\r\nif (!String.prototype.includes) {\r\n String.prototype.includes = function(search, start) {\r\n 'use strict';\r\n if (typeof start !== 'number') {\r\n start = 0;\r\n }\r\n\r\n if (start + search.length > this.length) {\r\n return false;\r\n } else {\r\n return this.indexOf(search, start) !== -1;\r\n }\r\n };\r\n}\r\n\r\n//returns the next business day with the given format (default to 'L')\r\nexport function getNextBusinessDay(dateFormat){\r\n if(!dateFormat)\r\n dateFormat = 'L';\r\n\r\n let dayIncrement = 1;\r\n\r\n if (moment().day() === 5) {\r\n // set to monday\r\n dayIncrement = 3;\r\n } else if (moment().day() === 6) {\r\n // set to monday\r\n dayIncrement = 2;\r\n }\r\n\r\n return moment().add(dayIncrement,'d').format(dateFormat);\r\n\r\n}\r\n\r\n//gets the possible values for a datasetfield\r\n// if defined in datasetfield, return them otherwise if in field return, otherwise null\r\nexport function getPossibleValues (field){\r\n var pv = null;\r\n\r\n if(field.PossibleValues != null && field.PossibleValues != \"\"){\r\n pv = getJsonObjects(field.PossibleValues)\r\n } else if (field.Field.PossibleValues != null && field.Field.PossibleValues != \"\"){\r\n pv = getJsonObjects(field.Field.PossibleValues)\r\n }\r\n\r\n //if we have a list of objects (as from a DataSource query) then convert\r\n // to an object type with the property as the Id and the Label as the value\r\n if (pv){\r\n if(Array.isArray(pv) && pv.length > 0){\r\n if(typeof pv[0] == 'object' && !pv[0].hasOwnProperty(\"Group\")){\r\n var retvalues = {};\r\n pv.forEach(function(item){\r\n if(item.hasOwnProperty(\"Id\"))\r\n retvalues[item.Id] = item.Label;\r\n else if(item.hasOwnProperty(\"ID\"))\r\n retvalues[item.ID] = item.LABEL;\r\n })\r\n pv = retvalues;\r\n }\r\n }\r\n }\r\n\r\n return pv;\r\n}\r\n\r\n//we need a function that takes possible values as either {Id: 1, Label: \"Something\"} or arrays [\"Something\",\"Another\"]\r\n// and returns the former object array in both cases to display in a grid\r\nexport function getPossibleValueGridObjects(objvals){\r\n var retvalues = objvals;\r\n\r\n if (objvals && Array.isArray(objvals) && objvals.length > 0 && typeof objvals[0] === 'string') {\r\n retvalues = [];\r\n objvals.forEach(function(val){\r\n retvalues.push({\"Id\": val, \"Label\": val});\r\n })\r\n } else if (objvals && typeof objvals == 'object') {\r\n console.dir(objvals)\r\n retvalues = [];\r\n Object.keys(objvals).forEach(function(key){\r\n retvalues.push({\"Id\": key, \"Label\": objvals[key]});\r\n })\r\n }\r\n\r\n return retvalues;\r\n\r\n}\r\n\r\nexport function combineDateAndTime(in_date, in_time) {\r\n//console.log(\"combineDateAndTime\")\r\n//console.log(in_date);\r\n//console.log(in_time);\r\n\r\n var the_date = moment(in_date);\r\n if (!the_date.isValid()){\r\n console.log('the date was not valid: ' + in_date)\r\n return; //continue\r\n }\r\n\r\n var the_time = moment(in_time, [\"HH:mm\"], true);\r\n if (!the_time.isValid()){\r\n console.log('the time was not valid: ' + in_time)\r\n return; //continue\r\n }\r\n\r\n var the_combined_date = the_time.set(\r\n {\r\n year: the_date.year(),\r\n month: the_date.month(),\r\n date: the_date.date()\r\n });\r\n\r\n var retval = the_combined_date.format('YYYY-MM-DD HH:mm');\r\n //console.log(retval);\r\n return retval;\r\n}\r\n\r\n//validate link URL\r\n// it must parse as a URL and begin with either http:// or https://\r\nexport function isValidURL(theUrl){\r\n\r\n var result = false;\r\n\r\n if(typeof theUrl === 'string') {\r\n try{\r\n var testurl = new URL(theUrl);\r\n\r\n if((testurl.protocol == \"http:\" || testurl.protocol == \"https:\") && ( theUrl.startsWith(\"http://\") || theUrl.startsWith(\"https://\"))){\r\n result = true; //we're good\r\n }\r\n } catch (e) {\r\n result = false;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function isValidFileName (strName) {\r\n\r\n var blnSpecialCharsPresent = false;\r\n var blnContainsPeriods = false;\r\n //var blnLengthTooLong = false;\r\n\r\n // List of special chars [ `!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?~]\r\n\r\n // What we don't want in a file name. Hyphen and underline OK; nothing else.\r\n // We will check for the file extension period later.\r\n var arySpecialChars = /[ `!@#$%^&*()+\\=\\[\\]{};':\"\\\\|,<>\\/?~]/;\r\n var blnSpecialCharsPresent = arySpecialChars.test(strName);\r\n \r\n // Now check for any periods other than the one for the extension.\r\n var intExtensionPeriod = strName.lastIndexOf('.');\r\n var intPeriodLocation = strName.indexOf('.');\r\n if (intExtensionPeriod !== intPeriodLocation)\r\n {\r\n blnContainsPeriods = true;\r\n }\r\n\r\n // Now check the length of the name.\r\n // if (strName.length > 50)\r\n // {\r\n // blnLengthTooLong = true;\r\n // }\r\n\r\n\r\n //if (blnSpecialCharsPresent || blnContainsPeriods || blnLengthTooLong)\r\n if (blnSpecialCharsPresent || blnContainsPeriods)\r\n return true;\r\n else\r\n return false;\r\n\r\n}\r\n","import * as angular from 'angular';\r\nimport {REPORTSERVER_URL} from \"../../../../config\";\r\n\r\nvar dataset_preferences = ['$scope', '$rootScope', '$location', 'DatasetService','UserService','$window',\r\n function ($scope, $rootScope, $location, DatasetService, UserService, $window){\r\n\r\n\t\t//var mydatasets = getByName($rootScope.Profile.UserPreferences, 'Datasets');\r\n\t\t$scope.mydatasets = UserService.getMyDatasets();\r\n\t\t$scope.favoriteDatasetStores = {};\r\n\r\n\t\t$scope.$watch('mydatasets',function(){\r\n\t\t\tif($scope.mydatasets.$resolved)\r\n\t\t\t{\r\n\t\t\t\tangular.forEach($scope.mydatasets, function(dataset, key){\r\n\r\n\t\t //need to bump this since we are looking at a LIST of datasets...\r\n\t DatasetService.configureDataset(dataset);\r\n\r\n\t\t\t\t\tif(!$scope.favoriteDatasetStores[dataset.Datastore.Name])\r\n\t\t\t\t\t\t$scope.favoriteDatasetStores[dataset.Datastore.Name] = { Datastore: dataset.Datastore, favoriteDatasets: []};\r\n\r\n\t\t\t\t\t$scope.favoriteDatasetStores[dataset.Datastore.Name].favoriteDatasets.push(dataset);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},true);\r\n\r\n\t\t$scope.openReportWindow = function( target ){\r\n\t\t\t$window.open( REPORTSERVER_URL + target,'_blank');\r\n\t\t};\r\n\r\n}];\r\n\r\nexport default dataset_preferences;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {\r\n getAgGridFilterByType,\r\n getAgGridFilterParamsByType, getByField, getFilenamesForTheseActivities,\r\n makeObjects,\r\n orderByOrderIndex, valueFormatterArrayToList\r\n} from \"../../../common/common-functions\";\r\nimport {AdminUserIds, FIELD_ROLE_HEADER, SystemDefaultColumnWidth} from \"../../../../config\";\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\n// note: removed $uibModal because it wasn't used\r\nvar dataset_activities_list = ['$scope', '$routeParams',\r\n 'DatasetService', 'SubprojectService', 'ProjectService', 'CommonService', 'UserService','GridService',\r\n '$location', '$window', '$rootScope', '$timeout',\r\n function ($scope, $routeParams,\r\n DatasetService, SubprojectService, ProjectService, CommonService, UserService, GridService,\r\n $location, $window, $rootScope, $timeout) {\r\n\r\n $scope.dataset = DatasetService.getDataset($routeParams.Id);\r\n\r\n $scope.fishermen = ProjectService.getFishermen();\r\n $scope.fishermen.$promise.then(function () {\r\n console.log(\"Fishermen loaded...\");\r\n //console.log(\"Fishermen loaded and is next...\");\r\n //console.dir($scope.fishermen);\r\n });\r\n\r\n //this is the default columns (fields) to show in the activities grid,\r\n // but it will be overridden if there is one configured in the dataset.\r\n var DefaultActivityListFields = [\r\n \"ActivityDate\",\r\n \"LocationId\",\r\n \"QAStatus\",\r\n \"UserId\",\r\n ];\r\n\r\n $scope.InstrumentCache = {};\r\n\r\n $scope.dataset.$promise.then(function () {\r\n\r\n $scope.project = ProjectService.getProject($scope.dataset.ProjectId);\r\n $scope.project.$promise.then(function () {\r\n //if user can edit this project, unhide the edit links\r\n if ($scope.Profile.canEditProject($scope.project)) {\r\n $scope.agGridOptions.columnApi.setColumnVisible(\"EditLink\", true);\r\n $scope.agGridOptions.api.refreshHeader();\r\n }\r\n\r\n //in the new location design, we have to fetch the locations separately - these are all the valid locations for a project\r\n $scope.project.Locations = ProjectService.getDatasetLocations($scope.project.Id, $scope.dataset.Id);\r\n\r\n $scope.project.Locations.$promise.then(function(){\r\n $scope.activities = DatasetService.getActivitiesForView($routeParams.Id);\r\n $scope.activities.$promise.then(function () {\r\n //now that the activities are loaded, tell the grid so that it can refresh.\r\n $scope.agGridOptions.api.setRowData($scope.activities);\r\n GridService.autosizeColumns($scope.agGridOptions);\r\n });\r\n })\r\n\r\n });\r\n\r\n\r\n $scope.QAStatusList = makeObjects($scope.dataset.QAStatuses, 'Id', 'Name');\r\n\r\n //once the dataset loads, determine our columns\r\n\r\n var gridColumnNames = DefaultActivityListFields;\r\n\r\n if ($scope.dataset.Config.SpecifyActivityListFields)\r\n gridColumnNames = $scope.dataset.Config.ActivityListFields;\r\n\r\n var gridColDefs = [\r\n { field: 'ViewLink', headerName: '', cellRenderer: viewTemplate, width: 50, alwaysShowField: true, menuTabs: [] },\r\n { field: 'EditLink', headerName: '', cellRenderer: editTemplate, width: 50, alwaysShowField: true, menuTabs: [], hide: true },\r\n ];\r\n\r\n $scope.dataset.Fields.sort(orderByOrderIndex).forEach(function (field,index) {\r\n // @ts-ignore\r\n if (field.FieldRoleId == FIELD_ROLE_HEADER && gridColumnNames.contains(field.DbColumnName)) { //is a header and should be in our grid\r\n\r\n field.Label = (field.Field.Units) ? field.Label + \" (\" + field.Field.Units + \")\" : field.Label;\r\n\r\n var newColDef = null;\r\n //initial values for header column definition\r\n //var newColDef = {\r\n /*\r\n if (field.DbColumnName === \"FishermanId\") {\r\n newColDef = {\r\n headerName: field.Label,\r\n field: field.DbColumnName,\r\n width: SystemDefaultColumnWidth,\r\n Label: field.Label,\r\n DbColumnName: field.DbColumnName,\r\n ControlType: field.ControlType,\r\n PossibleValues: field.Field.PossibleValues,\r\n //cellRenderer: $scope.CellRenderers[field.ControlType],\r\n valueGetter: $scope.ValueGetters[field.ControlType],\r\n valueFormatter: function (params) { // Note: params.node.data contains the row data\r\n var the_str = getNameFromUserId(params.node.data.FishermanId, $scope.fishermen);\r\n if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n the_str = the_str.replace(/\"/g, '');\r\n return the_str;\r\n },\r\n filter: getAgGridFilterByType(field.ControlType),\r\n filterParams: getAgGridFilterParamsByType(field.ControlType),\r\n menuTabs: ['filterMenuTab'],\r\n };\r\n }\r\n else {\r\n */\r\n newColDef = {\r\n headerName: field.Label,\r\n field: field.DbColumnName,\r\n width: SystemDefaultColumnWidth,\r\n Label: field.Label,\r\n DbColumnName: field.DbColumnName,\r\n ControlType: field.ControlType,\r\n PossibleValues: field.Field.PossibleValues,\r\n //cellRenderer: $scope.CellRenderers[field.ControlType],\r\n valueGetter: $scope.ValueGetters[field.ControlType],\r\n valueFormatter: $scope.ValueFormatters[field.ControlType],\r\n filter: getAgGridFilterByType(field.ControlType, field.DbColumnName),\r\n filterParams: getAgGridFilterParamsByType(field.ControlType),\r\n menuTabs: ['filterMenuTab'],\r\n };\r\n //}\r\n\r\n gridColDefs.push(newColDef);\r\n }\r\n });\r\n\r\n //set the first column to be the sort column:\r\n if(gridColDefs[2])\r\n // @ts-ignore\r\n gridColDefs[2].sort = \"desc\";\r\n\r\n //add the user fullname to the end. this will appear for all datasets.\r\n gridColDefs.push({\r\n headerName: \"By User\",\r\n field: \"UserFullname\", //column from the activities list\r\n menuTabs: ['filterMenuTab'],\r\n // @ts-ignore\r\n filter: true,\r\n });\r\n\r\n /*\r\n gridColDefs.push({\r\n headerName: \"Fisherman\",\r\n field: \"FullName\", //column from the activities list\r\n valueGetter: $scope.ValueGetters[field.ControlType],\r\n valueFormatter: $scope.ValueFormatters[field.ControlType],\r\n menuTabs: ['filterMenuTab'],\r\n filter: true,\r\n });\r\n */\r\n\r\n //tell the grid we've changed the coldefs\r\n $scope.agGridOptions.api.setColumnDefs(gridColDefs);\r\n\r\n //console.log(\" -- ok grid loaded and the coldefs are: \");\r\n //console.dir(gridColDefs);\r\n\r\n });\r\n\r\n\r\n $scope.ValueGetters = {\r\n 'activity-date': function (params) {\r\n return moment(params.node.data[params.colDef.DbColumnName]);\r\n },\r\n\r\n 'time': function (params) {\r\n return moment(params.node.data[params.colDef.DbColumnName]);\r\n },\r\n\r\n 'datetime': function (params) {\r\n return moment(params.node.data[params.colDef.DbColumnName]);\r\n },\r\n\r\n 'text': function (params) {\r\n //if (params.node.data.headerdata.YearReported === undefined)\r\n // return;\r\n //else\r\n return params.node.data[params.colDef.DbColumnName] ;\r\n },\r\n\r\n 'location-select': function (params) {\r\n return params.node.data.LocationLabel\r\n + ((params.node.data.OtherAgencyId) ? (' (' + params.node.data.OtherAgencyId + ')' ) : ''); //ternery: if otheragencyid then show it\r\n //return params.node.data[params.colDef.DbColumnName];\r\n },\r\n\r\n 'qa-status-select': function (params) {\r\n //return $scope.QAStatusList[params.node.data.ActivityQAStatus.QAStatusId];\r\n return $scope.QAStatusList[params.node.data[params.colDef.DbColumnName]];\r\n },\r\n\r\n 'instrument-select': function (params) {\r\n\r\n if ($scope.project.Instruments && !$scope.InstrumentCache.hasOwnProperty(params.node.data[params.colDef.DbColumnName])) {\r\n var instrument = getByField($scope.project.Instruments, params.node.data[params.colDef.DbColumnName], \"Id\");\r\n if(instrument)\r\n $scope.InstrumentCache[params.node.data[params.colDef.DbColumnName]] = instrument.Name + \" (SN:\" + instrument.SerialNumber + \")\";\r\n }\r\n return $scope.InstrumentCache[params.node.data[params.colDef.DbColumnName]];\r\n },\r\n\r\n 'fisherman-select': function (params) {\r\n\r\n if ($scope.fishermen && params.node.data[params.colDef.DbColumnName]) {\r\n var fisherman = getByField($scope.fishermen, params.node.data[params.colDef.DbColumnName], \"Id\");\r\n if (fisherman)\r\n params.node.data[params.colDef.DbColumnName] = fisherman.FullName;\r\n }\r\n return params.node.data[params.colDef.DbColumnName];\r\n },\r\n\r\n 'multiselect': function (params) {\r\n var the_str = valueFormatterArrayToList(params.node.data[params.colDef.DbColumnName]);\r\n if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n the_str = the_str.replace(/\"/g, '');\r\n\r\n return the_str;\r\n }\r\n\r\n };\r\n\r\n\r\n $scope.ValueFormatters = {\r\n\r\n 'activity-date': function (params) {\r\n //console.dir(params);\r\n return moment(params.value).format('L');\r\n },\r\n\r\n 'time': function (params) {\r\n return moment(params.node.data[params.colDef.DbColumnName]).format('HH:mm');\r\n },\r\n\r\n 'datetime': function (params) {\r\n return moment(params.node.data[params.colDef.DbColumnName]).format('YYYY-MM-DD HH:mm');\r\n },\r\n/*\r\n 'text': function (params) {\r\n return params.node.data[params.colDef.DbColumnName];\r\n },\r\n\r\n 'location-select': function (params) {\r\n return params.node.data[params.colDef.DbColumnName];\r\n },\r\n\r\n 'qa-status-select': function (params) {\r\n return params.node.data[params.colDef.DbColumnName];\r\n },\r\n\r\n 'instrument-select': function (params) {\r\n\r\n if ($scope.project.Instruments && !$scope.InstrumentCache.hasOwnProperty(params.colDef.DbColumnName)) {\r\n var instrument = getByField($scope.project.Instruments, params.node.data[params.colDef.DbColumnName], \"Id\");\r\n $scope.InstrumentCache[params.colDef.DbColumnName] = instrument.Name + \"(SN:\" + instrument.SerialNumber + \")\";\r\n }\r\n return $scope.InstrumentCache[params.colDef.DbColumnName];\r\n },*/\r\n\r\n };\r\n\r\n\r\n\r\n var viewTemplate = function (params) {\r\n\r\n //push our activityids into rootscope so that we can NEXT/PREV\r\n $rootScope.activities = [];\r\n\r\n $scope.agGridOptions.api.forEachNodeAfterFilterAndSort(function (node) {\r\n $rootScope.activities.push({ Id: node.data.ActivityId });\r\n });\r\n\r\n return '';\r\n };\r\n\r\n var editTemplate = function (params) {\r\n return '';\r\n };\r\n\r\n\r\n $scope.agGridOptions = {\r\n animateRows: true,\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n // showToolPanel: false,\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: [],\r\n rowData: [],\r\n rowSelection: 'multiple',\r\n onSelectionChanged: function (params) {\r\n $scope.agGridOptions.selectedItems = $scope.agGridOptions.api.getSelectedRows();\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n onFilterModified: function () {\r\n $scope.agGridOptions.api.deselectAll();\r\n },\r\n selectedItems: [],\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n //setup the grid\r\n var ag_grid_div = document.querySelector('#activity-list-grid')as HTMLElement; //get the container id...\r\n $scope.ag_grid = new Grid(ag_grid_div, $scope.agGridOptions); //bind the grid to it.\r\n $scope.agGridOptions.api.showLoadingOverlay(); //show loading...\r\n\r\n $scope.openQueryWindow = function (p) {\r\n $location.path(\"/datasetquery/\" + $scope.dataset.Id);\r\n };\r\n\r\n $scope.openDetailsWindow = function (p) {\r\n $location.path(\"/dataset-details/\" + $scope.dataset.Id);\r\n };\r\n\r\n $scope.openImportWindow = function () {\r\n $scope.activities = null; // Dump the activities to free up memory.\r\n $location.path(\"/datasetimport/\" + $scope.dataset.Id);\r\n };\r\n\r\n $scope.deleteActivities = function () {\r\n\r\n $scope.saveResults = {};\r\n\r\n if (!confirm(\"Are you sure you want to delete \" + $scope.agGridOptions.selectedItems.length + \" activities (and all associated files)? There is no undo for this operation.\"))\r\n return;\r\n\r\n $scope.saveResults.saving = true;\r\n\r\n //ok, well lets give them a list of all files that will be deleted along with this activity... just to make sure!\r\n var num_activities = $scope.agGridOptions.selectedItems.length;\r\n var activities_deleted = [];\r\n var check_for_files = true;\r\n\r\n //if deleting more than 100 records, ask if they want to disable file checking\r\n if (num_activities > 100) {\r\n if (!confirm(\"You are deleting more than a hundred records. File checking will be disabled. Are you sure?\"))\r\n return;\r\n else\r\n check_for_files = false;\r\n }\r\n\r\n if (check_for_files) {\r\n\r\n angular.forEach($scope.agGridOptions.selectedItems, function (activity) {\r\n //console.dir(activity);\r\n console.log(\"deleting activity : \" + activity.ActivityId);\r\n\r\n DatasetService.getActivityData(activity.ActivityId).$promise.then(function (in_activity) {\r\n //console.dir(in_activity);\r\n var files_to_delete = getFilenamesForTheseActivities($scope.dataset, Array(in_activity));\r\n\r\n //console.log(\"ok! files we got back: \" + files_to_delete);\r\n //if there are no files to delete, just go ahead, otherwise confirm\r\n if (files_to_delete != null)\r\n if (!confirm(\"Last chance! - Deleting this activity will also permanently delete the following files: \" + files_to_delete))\r\n return;\r\n\r\n var deleted = DatasetService.deleteActivities($rootScope.Profile.Id, $scope.dataset.Id, Array(\"\" + activity.ActivityId));\r\n\r\n deleted.$promise.then(function () {\r\n //great! so remove those from the grid; no sense reloading\r\n //console.log(\"Ok - let's add to the activities array: \" + activity.ActivityId);\r\n\r\n activities_deleted.push(activity.ActivityId);\r\n\r\n if (activities_deleted.length == num_activities) {\r\n //console.log(\"OK all done - now remove them all...\");\r\n //console.dir(activities_deleted);\r\n $scope.allActivities = []; //this will be our activities to keep (skipping the ones to delete)\r\n\r\n //spin through allActivities and remove the selected activities from our activities\r\n // remember: we can't splice items out of arrays we are foreaching or else unexpected results occur.\r\n $scope.activities.forEach(function (activity, index) {\r\n\r\n //console.log(\" -- checking == \" + activity.Id + \" is in deleted list? \");\r\n // @ts-ignore\r\n if (!activities_deleted.containsInt(activity.Id)) {\r\n //console.log(\"nope, not in there, add it to the ones we'll keep.\");\r\n $scope.allActivities.push(activity);\r\n } else {\r\n //console.log(\"Yep! skipping! \"+activity.Id);\r\n }\r\n });\r\n //console.log(\"these are the ones we keep.\");\r\n //console.dir($scope.allActivities);\r\n //all done, so now refresh the view.\r\n //console.log(\"done! refreshing view\");\r\n $scope.agGridOptions.api.deselectAll(); //clear selection\r\n //console.log(\"after selection\");\r\n $scope.activities = $scope.allActivities; //update our activities with the new set of activities\r\n //console.log(\"ready for grid update\");\r\n $scope.agGridOptions.api.setRowData($scope.activities); //update the grid.\r\n //console.log(\"all done.\");\r\n //deleteWatcher();\r\n $scope.saveResults.saving = false;\r\n }\r\n },\r\n function (data) {\r\n console.log(\"Failure!\");\r\n console.dir(data);\r\n //$scope.saveResult.saving = false;\r\n let theErrorText: any;\r\n let strAdminError: any;\r\n if (typeof data.data !== 'undefined') {\r\n //if (typeof data.data.ExceptionMessage !== 'undefined') {\r\n if (typeof data.data.InnerException.ExceptionMessage !== 'undefined') {\r\n \r\n strAdminError = theErrorText = data.data.InnerException.ExceptionMessage + \" >>> \" + data.data.InnerException.ExceptionType;\r\n if (typeof data.data.InnerException.StackTrace != 'undefined')\r\n {\r\n let strError = data.data.InnerException.StackTrace;\r\n let intStartPoint = strError.indexOf(\"services\\\\\");\r\n let intLineNumber = strError.indexOf(\"cs:line\");\r\n let intEndPoint = intLineNumber + 20;\r\n \r\n // If the string has a line number in it, we need to grab some extra characters, to allow for the added line number text.\r\n if (intStartPoint > -1)\r\n {\r\n strError = strError.substring(intStartPoint, intEndPoint);\r\n strAdminError += \" >>> \" + strError + \"...\"; \r\n \r\n // We only send all the info to the screen, if the user is an admin.\r\n if (AdminUserIds.includes($scope.userId))\r\n {\r\n theErrorText = strAdminError;\r\n }\r\n }\r\n \r\n }\r\n // We want to send all the info to the debug console, whether they are admin or not.\r\n console.error(\"Save error: strAdminError = \" + strAdminError);\r\n }\r\n else {\r\n \r\n theErrorText = data.data;\r\n \r\n var titleStartLoc = theErrorText.indexOf(\"\") + 7;\r\n console.log(\"titleStartLoc = \" + titleStartLoc);\r\n \r\n var titleEndLoc = theErrorText.indexOf(\"\");\r\n console.log(\"titleEndLoc = \" + titleEndLoc);\r\n \r\n theErrorText = theErrorText.substr(titleStartLoc, titleEndLoc - titleStartLoc);\r\n }\r\n }\r\n });\r\n });\r\n });\r\n } else {\r\n //delete without checking for files is much faster. :)\r\n var activities_to_delete = [];\r\n $scope.agGridOptions.selectedItems.forEach(function (activity) {\r\n activities_to_delete.push(\"\" + activity.ActivityId);\r\n });\r\n\r\n var deleted = DatasetService.deleteActivities($rootScope.Profile.Id, $scope.dataset.Id, activities_to_delete);\r\n\r\n deleted.$promise.then(function () {\r\n $scope.allActivities = []; //this will be our activities to keep (skipping the ones to delete)\r\n $scope.activities.forEach(function (activity, index) {\r\n // @ts-ignore\r\n if (!activities_to_delete.containsInt(activity.Id)) {\r\n //console.log(\"nope, not in there, add it to the ones we'll keep.\");\r\n $scope.allActivities.push(activity);\r\n } else {\r\n //console.log(\"Yep! skipping! \"+activity.Id);\r\n }\r\n });\r\n $scope.agGridOptions.api.deselectAll(); //clear selection\r\n $scope.activities = $scope.allActivities; //update our activities with the new set of activities\r\n $scope.agGridOptions.api.setRowData($scope.activities); //update the grid.\r\n\r\n $scope.saveResults.saving = false;\r\n });\r\n\r\n }\r\n\r\n };\r\n\r\n $scope.openDataEntry = function (p) {\r\n delete $rootScope.imported_rows;\r\n $location.path(\"/dataentryform/\" + $scope.dataset.Id);\r\n };\r\n\r\n //handle favorite toggle\r\n $scope.isFavorite = $rootScope.Profile.isDatasetFavorite($routeParams.Id);\r\n $scope.toggleFavorite = function () {\r\n //UserService.toggleFavoriteDataset($scope, $rootScope);\r\n\r\n if ($scope.dataset.Id)\r\n UserService.toggleFavoriteDataset($scope, $rootScope);\r\n else\r\n alert(\"Please wait... the dataset has not loaded yet.\");\r\n }\r\n\r\n $scope.ShowMap = {\r\n Display: false,\r\n Message: \"Show Map\",\r\n MessageToOpen: \"Show Map\",\r\n MessageToClose: \"Hide Map\",\r\n };\r\n\r\n $scope.toggleMap = function () {\r\n if ($scope.ShowMap.Display) {\r\n $scope.ShowMap.Display = false;\r\n $scope.ShowMap.Message = $scope.ShowMap.MessageToOpen;\r\n }\r\n else {\r\n $scope.ShowMap.Display = true;\r\n $scope.ShowMap.Message = $scope.ShowMap.MessageToClose;\r\n\r\n }\r\n };\r\n\r\n }\r\n\r\n\r\n];\r\n\r\nexport default dataset_activities_list;\r\n","//modal to choose project config lists\r\nimport {FISHERMEN_DATASETID, SEASONS_DATASETID} from \"../../../../config\";\r\n\r\nvar modal_projectconfig_choose_lists = ['$scope', '$uibModal', '$uibModalInstance', 'AdminService', 'CommonService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, AdminService, CommonService) {\r\n\r\n if ($scope.project.hasOwnProperty('Config')) {\r\n $scope.savedLookups = $scope.project.Config.Lookups;\r\n } else {\r\n $scope.savedLookups = [];\r\n }\r\n\r\n //this HeaderFields thing is a workaround for IE11 because it doesn't render the following. Better would be to just use this in the template:\r\n /*\r\n \r\n */\r\n // if ($scope.project.hasOwnProperty('Config')) {\r\n // $scope.savedLookups = $scope.project.Config.Lookups;\r\n // }\r\n\r\n $scope.entities = CommonService.getMetadataEntities();\r\n\r\n $scope.lists = [];\r\n\r\n $scope.ListsToHide = ['Datasets', 'Lookups', 'Program', 'Project', 'ProjectType: Habitat'];\r\n\r\n $scope.entities.$promise.then(function () {\r\n\r\n $scope.entities.forEach(function (entity) {\r\n if (!$scope.ListsToHide.contains(entity.Name))\r\n $scope.lists.push({'Id': entity.Id, 'Label': entity.Name, 'Type': 'Metafields'});\r\n });\r\n\r\n $scope.lists.push({'Label': 'Fishermen', 'DatasetId': FISHERMEN_DATASETID, 'Id': 1}); //id here is the LookupTable.Id\r\n $scope.lists.push({'Label': 'Seasons', 'DatasetId': SEASONS_DATASETID, 'Id': 2});\r\n $scope.lists.push({'Label': 'Instruments'});\r\n\r\n $scope.origLists = $scope.lists;\r\n if ($scope.savedLookups.length > 0) {\r\n $scope.savedLookups.forEach(lookup => {\r\n $scope.lists = $scope.lists.filter(i => i.Label !== lookup.Label);\r\n });\r\n }\r\n console.dir($scope.lists);\r\n });\r\n\r\n\r\n $scope.resetLookupLists = function () {\r\n $scope.lists = $scope.origLists;\r\n $scope.savedLookups = [];\r\n $scope.project.Config.Lookups = [];\r\n }\r\n /*\r\n $scope.HeaderFields = [];\r\n\r\n $scope.dataset.Fields.forEach(function (field) {\r\n if (field.FieldRoleId == 1) {\r\n field.FullLabel = field.Label + \" (\" + field.Units + \")\";\r\n $scope.HeaderFields.push(field);\r\n }\r\n });\r\n */\r\n\r\n $scope.save = function () {\r\n\r\n $uibModalInstance.close();\r\n\r\n };\r\n\r\n $scope.cancel = function () {\r\n if ($scope.project.hasOwnProperty('Config')) {\r\n $scope.project.Config.Lookups = $scope.savedLookups;\r\n }\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_projectconfig_choose_lists;\r\n","import * as angular from 'angular';\r\n\r\n//Chart Services - charting for different datasets.\r\n// If you want to build a custom chart for your dataset (we like it as a nice simple visual),\r\n// you'll just need to create your own chart service named \"YourDataset_ChartService\" for each one.\r\n// and use the below as example/ideas\r\n\r\n//examples here: http://krispo.github.io/angular-nvd3/#/quickstart\r\n\r\n/*\r\n\t\tEach dataset type that you want to provide a generated graph needs to live here.\r\n\t\tYou can do your graphing however you like for the particular kind of chart.\r\n*/\r\nvar chart_services = ['AdultWeir_ChartService', 'WaterTemp_ChartService',\r\n 'SnorkelFish_ChartService', 'ElectroFishing_ChartService', 'WaterQuality_ChartService',\r\n\t'CreelSurvey_ChartService', 'ArtificialProduction_ChartService', 'BSample_ChartService','$compile',\r\n function (AdultWeir_ChartService, WaterTemp_ChartService,\r\n SnorkelFish_ChartService, ElectroFishing_ChartService, WaterQuality_ChartService,\r\n CreelSurvey_ChartService, ArtificialProduction_ChartService, BSample_ChartService, $compile){\r\n\t\tconsole.log(\"Inside chartservices.js, ChartService...\");\r\n\t\tvar service = {\r\n\t\t\tbuildChart: function(scope, data_in, dataset, config){\r\n\t\t\t\tconsole.log(\"Inside ChartService, buildChart...\");\r\n\t\t\t\tconsole.log(\"dataset = \" + dataset);\r\n\t\t\t\tconsole.log(\"data_in is next...\");\r\n//\t\t\t\t\tconsole.dir(data_in);\r\n\r\n \t\t\tif(dataset == \"AdultWeir\" || dataset == \"ArtificialProduction\" || dataset == \"BSample\" || dataset == \"CreelSurvey\")\r\n\t\t\t\t{\r\n\t\t\t\t\tscope.chartConfig = AdultWeir_ChartService.getChartConfig();\r\n\t\t \t\tscope.chartData = AdultWeir_ChartService.getChartData(data_in);\r\n\t\t\t\t}\r\n\t\t \telse if(dataset == \"WaterTemp\")\r\n\t\t \t{\r\n\t\t \t\tWaterTemp_ChartService.buildChart(data_in, config);\r\n\t\t \t}\r\n\t\t \telse if(dataset == \"SnorkelFish\")\r\n\t\t \t{\r\n\t\t \t\tscope.chartConfig = SnorkelFish_ChartService.getChartConfig();\r\n\t\t \t\tscope.chartData = SnorkelFish_ChartService.getChartData(data_in);\r\n\t\t \t}\r\n\t\t \telse if(dataset == \"Electrofishing\" || dataset == \"ScrewTrap\" || dataset == \"FishScales\" || dataset == \"SpawningGroundSurvey\")\r\n\t\t \t{\r\n\t\t \t\tscope.chartConfig = ElectroFishing_ChartService.getChartConfig();\r\n\t\t \t\tscope.chartData = ElectroFishing_ChartService.getChartData(data_in);\r\n\t\t \t}\r\n\t\t \telse if(dataset == \"WaterQuality\")\r\n\t\t \t{\r\n\t\t \t\tscope.chartConfig = WaterQuality_ChartService.getChartConfig();\r\n\t\t \t\tscope.chartData = WaterQuality_ChartService.getChartData(data_in);\r\n\t\t \t}\r\n\t\t \telse\r\n\t\t \t\tconsole.log(\"No charting configured for \" + dataset);\r\n\r\n //build the chart!\r\n console.log(\"building the chart!\");\r\n if (scope.chartConfig) {\r\n console.log(\"we have a chart config ... building\");\r\n var template = '';\r\n angular.element(\"#chart-inset\").append($compile(template)(scope));\r\n }\r\n\r\n\t\t },\r\n\t\t};\r\n\r\n\t\treturn service;\r\n\t}\r\n];\r\n\r\nexport default chart_services;\r\n","import * as angular from 'angular';\r\nimport user_module from \"./core/user/user-module\";\r\nimport common_module from \"./core/common/common-module\";\r\nimport habitat_module from \"./private/habitat/habitat-module\";\r\nimport {\r\n ANALYTICS_CODE,\r\n CDMS_DOCUMENTATION_URL, CURRENT_VERSION, DataGradeMethods,\r\n DEFAULT_PROJECT_PERMISSION, DISPLAY_NAME,\r\n ENVIRONMENT,\r\n PUBLIC_OR_PRIVATE, REPORTSERVER_URL, serverUrl, SystemTimezones,\r\n AG_GRID_LICENSE,\r\n} from \"./config\";\r\nimport permit_module from \"./private/permits/permit-module\";\r\nimport {getByName} from \"./core/common/common-functions\";\r\nimport olc_module from \"./private/olc/olc-module\";\r\nimport admin_module from \"./core/admin/admin-module\";\r\nimport bot_module from \"./private/bot/bot-module\";\r\nimport projects_module from \"./core/projects/projects-module\";\r\nimport leasing_module from \"./private/leasing/leasing-module\";\r\nimport covid_module from \"./private/covid/covid-module\";\r\nimport crpp_module from \"./private/crpp/crpp-module\";\r\nimport datasets_module from \"./core/datasets/datasets-module\";\r\nimport appraisals_module from \"./private/appraisals/appraisals-module\";\r\n\r\nimport 'angular-ui-select2/src/select2';\r\n// import 'ui-select/dist/select.js';\r\nimport 'angular-route';\r\nimport 'angular-ui-mask';\r\nimport 'angular-input-masks';\r\nimport 'angular-ui-bootstrap';\r\nimport 'angular-resource';\r\nimport 'ng-file-upload';\r\n\r\nimport 'angular-nvd3';\r\nimport 'angular-messages';\r\nimport 'angular-material';\r\nimport {downgradeComponent, downgradeInjectable} from \"@angular/upgrade/static\";\r\nimport {ProfileService} from \"../app/login/profile.service\";\r\nimport {featureLayerDirective} from \"./core/common/directives/feature-layer\";\r\nimport {EsriMapComponent} from \"../app/map/esri-map/esri-map.component\";\r\nimport {ConfirmService} from \"../app/confirm/confirm.service\";\r\nimport { LicenseManager } from 'ag-grid-enterprise';\r\n//analytics configuration\r\n// (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\r\n// (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\r\n// m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\r\n// })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');\r\n// ga('create', ANALYTICS_CODE, 'auto');\r\n// ga('send', 'pageview');\r\n\r\nvar BUILD_VERSION = \"2.0.0\"; //increment the last number as desired to show in the footer\r\n\r\n// specific urls to ignore for the page not found alert\r\nlet urls = [\"https://localhost\", \"http://localhost\", \"https://localhost/\", \"http://localhost/\",\r\n 'https://paluuttest.ctuir.org/', 'https://paluuttest.ctuir.org', 'http://paluuttest.ctuir.org/', 'http://paluuttest.ctuir.org',\r\n 'https://paluut.ctuir.org/', 'https://paluut.ctuir.org', 'http://paluut.ctuir.org/', 'http://paluut.ctuir.org',\r\n 'https://cdmstest.ctuir.org/', 'https://cdmstest.ctuir.org', 'http://cdmstest.ctuir.org/', 'http://cdmstest.ctuir.org',\r\n 'https://cdms.ctuir.org/', 'https://cdms.ctuir.org', 'http://cdms.ctuir.org/', 'http://cdms.ctuir.org',\r\n 'https://cdmsdevgc.ctuir.org/', 'https://cdmsdevgc.ctuir.org', 'http://cdmsdevgc.ctuir.org/', 'http://cdmsdevgc.ctuir.org'\r\n]\r\n// define([\r\n// 'angular'\r\n// ], function(angular){\r\n\r\n\r\n// define our app as an angular module - with our dependencies and our routes\r\nvar app = angular.module(\"app\",\r\n [\r\n 'ngRoute',\t\t\t\t\t\t// assets/js/angular/angular-route.js (referred to in js/controllers/login-controller.js)\r\n 'ui.mask',\r\n 'ui.utils.masks',\r\n\r\n //these are the cdms modules\r\n common_module.name,\r\n // 'ProjectModule',\r\n projects_module.name,\r\n // 'DatasetModule',\r\n datasets_module.name,\r\n // 'AdminModule',\r\n admin_module.name,\r\n user_module.name,\r\n\r\n 'ngFileUpload',\r\n 'nvd3',\r\n\r\n //these are ctuir specific\r\n // 'CrppModule',\r\n crpp_module.name,\r\n // 'AppraisalsModule',\r\n appraisals_module.name,\r\n // 'HabitatModule',\r\n habitat_module.name,\r\n // 'LeasingModule',\r\n leasing_module.name,\r\n // 'PermitModule'\r\n permit_module.name,\r\n // 'OlcModule',\r\n olc_module.name,\r\n // 'CovidModule',\r\n covid_module.name,\r\n // 'BOTModule',\r\n bot_module.name,\r\n\r\n 'ngMessages',\r\n 'ngMaterial',\r\n\r\n ])\r\n .config(['$locationProvider', '$routeProvider', function ($locationProvider, $routeProvider) {\r\n $locationProvider.html5Mode(true);\r\n $routeProvider.when('/dashboard', {\r\n templateUrl: 'appjsLegacy/core/user/components/landing-page/templates/landing-page.html',\r\n controller: 'LandingPage'\r\n });\r\n\r\n $routeProvider.when('/projects', {\r\n templateUrl: 'appjsLegacy/core/projects/components/project-list/templates/projects.html',\r\n controller: 'ProjectListCtrl'\r\n });\r\n $routeProvider.when('/datasets', {\r\n templateUrl: 'appjsLegacy/core/datasets/components/datasets-list/templates/datasets.html',\r\n controller: 'DatasetsListCtrl'\r\n });\r\n $routeProvider.when('/projects/:Id', {\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/project-landing.html',\r\n controller: 'ProjectLandingCtrl'\r\n });\r\n $routeProvider.when('/projectFiles/:Id', {\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/project-files.html',\r\n controller: 'ProjectFilesCtrl'\r\n });\r\n $routeProvider.when('/projectData/:Id', {\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/project-data.html',\r\n controller: 'ProjectDataCtrl'\r\n });\r\n $routeProvider.when('/projectPermissions/:Id', {\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/project-permissions.html',\r\n controller: 'ProjectPermissionsCtrl'\r\n });\r\n $routeProvider.when('/projectLookups/:Id', {\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/project-lookups.html',\r\n controller: 'ProjectLookupsCtrl'\r\n });\r\n $routeProvider.when('/projectLocations/:Id', {\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/project-locations.html',\r\n controller: 'ProjectLocationsCtrl'\r\n });\r\n\r\n $routeProvider.when('/analytics', {\r\n templateUrl: 'appjsLegacy/core/user/components/analytics/templates/user-analytics.html',\r\n controller: 'UserAnalyticsCtrl'\r\n });\r\n\r\n $routeProvider.when('/mydata', {\r\n templateUrl: 'appjsLegacy/core/user/components/dataset-preferences/templates/mydatasets.html',\r\n controller: 'MyDatasetsCtrl'\r\n });\r\n $routeProvider.when('/myprojects', {\r\n templateUrl: 'appjsLegacy/core/user/components/project-preferences/templates/myprojects.html',\r\n controller: 'MyProjectsCtrl'\r\n });\r\n $routeProvider.when('/mypreferences', {\r\n templateUrl: 'appjsLegacy/core/user/components/my-preferences/templates/mypreferences.html',\r\n controller: 'MyPreferencesCtrl'\r\n });\r\n $routeProvider.when('/activities/:Id', {\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-activities-list/templates/dataset-activities.html',\r\n controller: 'DatasetActivitiesCtrl',\r\n permission: 'Edit'\r\n });\r\n $routeProvider.when('/dataentryform/:Id', {\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-editor/templates/dataset-edit-form.html',\r\n controller: 'DataEditCtrl',\r\n permission: 'Edit'\r\n });\r\n\r\n $routeProvider.when('/edit/:Id', {\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-editor/templates/dataset-edit-form.html',\r\n controller: 'DataEditCtrl',\r\n permission: 'Edit'\r\n });\r\n $routeProvider.when('/dataview/:Id', {\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-view/templates/dataset-view.html',\r\n controller: 'DataEditCtrl'\r\n });\r\n $routeProvider.when('/table/:Id', {\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-table/templates/table.html',\r\n controller: 'TableCtrl'\r\n });\r\n\r\n $routeProvider.when('/datasetquery/:Id', {\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-query/templates/dataset-query.html',\r\n controller: 'DataQueryCtrl'\r\n });\r\n $routeProvider.when('/datasetqueryviewallrecords/:Id', {\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-query/templates/dataset-query-view-all-records.html',\r\n controller: 'DataQueryViewAllRecordsCtrl'\r\n });\r\n $routeProvider.when('/dataset-details/:Id', {\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-detail/templates/dataset-details-view.html',\r\n controller: 'DatasetDetailsCtrl'\r\n });\r\n $routeProvider.when('/dataset-edit/:Id', {\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-detail/templates/dataset-details-edit.html',\r\n controller: 'DatasetDetailsCtrl'\r\n });\r\n $routeProvider.when('/datasetimport/:Id', {\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-import/templates/dataset-import.html',\r\n controller: 'DatasetImportCtrl',\r\n permission: 'Edit'\r\n });\r\n\r\n $routeProvider.when('/query/:Id', {\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-query/templates/dataset-query.html',\r\n controller: 'DatastoreQueryCtrl'\r\n });\r\n $routeProvider.when('/admin', {\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/admin.html',\r\n controller: 'AdminCtrl'\r\n });\r\n\r\n $routeProvider.when('/admin-dataset/:Id', {\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/admin-dataset-fields.html',\r\n controller: 'AdminEditDatasetFieldsCtrl'\r\n });\r\n $routeProvider.when('/admin-config/:Id', {\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/admin-dataset-config.html',\r\n controller: 'AdminEditDatasetConfigCtrl'\r\n });\r\n $routeProvider.when('/admin-workflow/:Id', {\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/admin-dataset-workflow.html',\r\n controller: 'AdminEditDatasetWorkflowCtrl'\r\n });\r\n $routeProvider.when('/admin-permissions/:Id', {\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/admin-dataset-permissions.html',\r\n controller: 'AdminEditDatasetPermissionsCtrl'\r\n });\r\n $routeProvider.when('/admin-metafields', {\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/admin-metafields.html',\r\n controller: 'AdminMetafieldsCtrl'\r\n });\r\n\r\n //$routeProvider.when('/admin-users', { templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/admin-users.html', controller: 'AdminUsersCtrl' });\r\n //$routeProvider.when('/admin-groups', { templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/admin-groups.html', controller: 'AdminGroupsCtrl' });\r\n $routeProvider.when('/admin-orgs', {\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/admin-organizations.html',\r\n controller: 'AdminOrgCtrl'\r\n });\r\n\r\n $routeProvider.when('/admin-master/:Id', {\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/admin-master.html',\r\n controller: 'AdminEditMasterCtrl'\r\n });\r\n $routeProvider.when('/admin-new-dataset/:Id', {\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/admin-new-dataset.html',\r\n controller: 'AdminNewDatasetCtrl'\r\n });\r\n\r\n $routeProvider.when('/leasing', {\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/manage-leases.html',\r\n controller: 'LeasingHomeController'\r\n });\r\n $routeProvider.when('/active-leases', {\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/active-leases.html',\r\n controller: 'ActiveLeasesController'\r\n });\r\n $routeProvider.when('/pending-leases', {\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/pending-leases.html',\r\n controller: 'PendingLeasesController'\r\n });\r\n $routeProvider.when('/view-lease/:Id', {\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/view-lease.html',\r\n controller: 'ViewLeaseController'\r\n });\r\n $routeProvider.when('/available-land', {\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/available-land.html',\r\n controller: 'AvailableLandController'\r\n });\r\n $routeProvider.when('/violations', {\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/inspection-violations.html',\r\n controller: 'ViolationsController'\r\n });\r\n $routeProvider.when('/manage-operators', {\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/manage-operators.html',\r\n controller: 'ManageOperatorsController'\r\n });\r\n $routeProvider.when('/manage-lookups', {\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/lookups.html',\r\n controller: 'LookupListsController'\r\n });\r\n\r\n $routeProvider.when('/permits/list', {\r\n templateUrl: 'appjsLegacy/private/permits/components/list/templates/list-permits.html',\r\n controller: 'PermitListController'\r\n });\r\n $routeProvider.when('/permits/list/:DatasetId', {\r\n templateUrl: 'appjsLegacy/private/permits/components/list/templates/list-permits.html',\r\n controller: 'PermitListController'\r\n });\r\n $routeProvider.when('/permits/routes', {\r\n templateUrl: 'appjsLegacy/private/permits/components/taskboard/templates/routes.html',\r\n controller: 'PermitRoutesController'\r\n });\r\n $routeProvider.when('/permits/dashboard', {\r\n templateUrl: 'appjsLegacy/private/permits/components/dashboard/templates/dashboard.html',\r\n controller: 'PermitDashboardController'\r\n });\r\n $routeProvider.when('/permits/inspection', {\r\n templateUrl: 'appjsLegacy/private/permits/components/list/templates/request-inspection.html',\r\n controller: 'RequestInspectionController'\r\n });\r\n $routeProvider.when('/permits/notifications', {\r\n templateUrl: 'appjsLegacy/private/permits/components/notifications/templates/notifications.html',\r\n controller: 'PermitNotificationsController'\r\n });\r\n $routeProvider.when('/permits/map', {\r\n templateUrl: 'appjsLegacy/private/permits/components/map/templates/permit-map.html',\r\n controller: 'PermitMapController'\r\n });\r\n $routeProvider.when('/permits/contacts', {\r\n templateUrl: 'appjsLegacy/private/permits/components/contacts/templates/manage-contacts.html',\r\n controller: 'PermitManageContactsController'\r\n });\r\n $routeProvider.when('/permits/ehsviolations', {\r\n templateUrl: 'appjsLegacy/private/permits/components/ehs-violations/templates/list-violations.html',\r\n controller: 'EhsViolationsController'\r\n });\r\n $routeProvider.when('/permits/requests/:ItemType/:DatasetId', {\r\n templateUrl: 'appjsLegacy/private/permits/components/requests/templates/list.html',\r\n controller: 'PermitRequestsController'\r\n });\r\n $routeProvider.when('/permits/requests/:ItemType', {\r\n templateUrl: 'appjsLegacy/private/permits/components/requests/templates/list.html',\r\n controller: 'PermitRequestsController'\r\n });\r\n\r\n //custom routes for datasets that require custom controller+pages\r\n //$routeProvider.when('/appraisals/:Id', { templateUrl: 'appjsLegacy/private/appraisals/components/appraisal-activities/templates/appraisal-activities.html', controller: 'AppraisalCtrl'});\r\n $routeProvider.when('/crppcorrespondence/:Id', {\r\n templateUrl: 'appjsLegacy/private/crpp/components/correspondence/templates/correspondence.html',\r\n controller: 'CRPPCorrespondenceCtrl'\r\n });\r\n $routeProvider.when('/habitatsites/:Id', {\r\n templateUrl: 'appjsLegacy/private/habitat/components/habitat-sites/templates/sites.html',\r\n controller: 'HabitatSitesCtrl'\r\n });\r\n $routeProvider.when('/olcevents/:Id', {\r\n templateUrl: 'appjsLegacy/private/olc/components/events/templates/events.html',\r\n controller: 'OlcEventsCtrl'\r\n });\r\n $routeProvider.when('/olceventssearch/:Id', {\r\n templateUrl: 'appjsLegacy/private/olc/components/events/templates/events-search.html',\r\n controller: 'OlcEventsSearchCtrl'\r\n });\r\n\r\n $routeProvider.when('/unauthorized', {\r\n templateUrl: 'appjsLegacy/core/common/templates/unauthorized.html',\r\n controller: 'ErrorCtrl'\r\n });\r\n $routeProvider.when('/feedback', {\r\n templateUrl: 'appjsLegacy/core/common/components/feedback/templates/feedback.html',\r\n controller: 'FeedbackController'\r\n });\r\n\r\n $routeProvider.when('/covid', {\r\n templateUrl: 'appjsLegacy/private/covid/components/employees/templates/list.html',\r\n controller: 'CovidListController'\r\n });\r\n\r\n $routeProvider.when('/bot', {\r\n templateUrl: 'appjsLegacy/private/bot/components/dashboard/templates/projects.html',\r\n controller: 'BOTProjectsController'\r\n });\r\n\r\n //when all else fails...\r\n $routeProvider.otherwise({\r\n redirectTo:\r\n function () {\r\n console.log(window.location.toString());\r\n if (!window.location.toString().includes('login')) {\r\n let val = window.location.toString();\r\n let included = urls.find(str => {\r\n return str == val;\r\n });\r\n\r\n //URL is not in list of URL's to ignore for page not found...\r\n if (!included) {\r\n //...but is a URL for a file.\r\n if (!window.location.toString().includes('uploads')) {\r\n alert('That page or file does not exist, please contact your system administrator.');\r\n }\r\n }\r\n }\r\n\r\n if (window.location.toString().includes('uploads')) {\r\n //URL was for a file, so return path to file (minus site root).\r\n return window.location.toString().substring(window.location.toString().indexOf(\"services\"));\r\n } else {\r\n //Otherwise return path to dashboard (minus site root).\r\n return '/dashboard';\r\n } \r\n }\r\n });\r\n }])\r\n\r\napp.directive('esriFeatureLayer', featureLayerDirective);\r\napp.directive('esriMap', downgradeComponent({component: EsriMapComponent}));\r\n\r\napp.service('ProfileService', downgradeInjectable(ProfileService));\r\napp.service('ConfirmService', downgradeInjectable(ConfirmService));\r\n//any functions in here are available to EVERY scope. use sparingly!\r\napp.run(['$rootScope', '$window', '$location', 'ProfileService', function ($rootScope, $window, $location, ProfileService) {\r\n $rootScope.config = {\r\n version: CURRENT_VERSION,\r\n CDMS_DOCUMENTATION_URL: CDMS_DOCUMENTATION_URL,\r\n REPORTSERVER_URL: REPORTSERVER_URL,\r\n build_version: BUILD_VERSION,\r\n DISPLAY_NAME: DISPLAY_NAME,\r\n PUBLIC_OR_PRIVATE: PUBLIC_OR_PRIVATE\r\n };\r\n\r\n $rootScope.serverUrl = serverUrl;\r\n\r\n $rootScope.Cache = {};\r\n // $rootScope.Profile = configureProfile(profile); // profile defined in init.js\r\n $rootScope.Profile = ProfileService;\r\n $rootScope.go = function (path) {\r\n $location.path(path);\r\n };\r\n\r\n $rootScope.$location = $location;\r\n\r\n angular.rootScope = $rootScope; // just so we can get to it later. :)\r\n\r\n $rootScope.SystemTimezones = SystemTimezones; //defined in init.js\r\n $rootScope.DataGradeMethods = DataGradeMethods; //ditto\r\n\r\n if ('serviceWorker' in navigator) {\r\n console.log(\"We are good to go with service workers.\");\r\n $rootScope.ServiceWorkers = true;\r\n } else {\r\n console.log(\"browser does not support service workers\");\r\n $rootScope.ServiceWorkers = false;\r\n }\r\n\r\n //Fire analytics call on location change in URL for SPA.\r\n $rootScope.$on('$locationChangeSuccess', function (params) {\r\n\r\n //console.log(\"CHECK PERMISSION\");\r\n //console.dir($location.path())\r\n\r\n //clear out the $rootScope variables that control the file path filter...\r\n $rootScope.viewSubproject = null;\r\n $rootScope.datasetId = null;\r\n $rootScope.newSubproject = null;\r\n\r\n if (ENVIRONMENT != \"prod\") return;\r\n\r\n console.log(\"Sending \" + $location.url() + \" to: \" + ANALYTICS_CODE);\r\n // $window.ga('send', {\r\n // 'hitType': 'screenview',\r\n // 'appName': 'CDMS',\r\n // 'screenName': $location.url()\r\n // });\r\n });\r\n}]);\r\n\r\nexport default app;\r\n","\r\nvar modal_dataset_duplicates = ['$scope', '$uibModalInstance',\r\n function ($scope, $uibModalInstance) {\r\n\r\n $scope.gridDuplicates = {\r\n data: 'DuplicateRecordsBucket',\r\n columnDefs: [{\r\n field: 'locationId',\r\n displayName: 'Location',\r\n cellFilter: 'locationNameFilter'\r\n },\r\n {\r\n field: 'activityDate',\r\n displayName: 'Activity Date',\r\n cellFilter: 'date: \\'MM/dd/yyyy\\'',\r\n }],\r\n };\r\n\r\n $scope.ok = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_dataset_duplicates;\r\n","export default \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n x\\r\\n

Failed to save confirmation

\\r\\n {{error}}\\r\\n
\\r\\n\\r\\n

Loading inspection information

\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n

TPO Permit Inspection Request - Confirmation Form

\\r\\n

Please submit the following form to confirm your inspection intent.

\\r\\n\\r\\n
\\r\\n
Permit Number:
{{data.Permit.PermitNumber}}
\\r\\n
Site Address:
{{data.Permit.SiteAddress}}
\\r\\n
Project Name:
{{data.Permit.ProjectName}}
\\r\\n
Project Scope:
{{data.Permit.ScopeOfWork}}
\\r\\n
Sent Date:
{{data.PermitEvent.EventDate | date}}
\\r\\n
Sent By:
{{data.ByUser.Fullname}}
\\r\\n
Inspection Requested:
{{data.PermitEvent.ItemType}}
\\r\\n
Type of Inspection:
{{data.PermitEvent.Reference}}
\\r\\n
Date of Inspection Desired:
{{data.PermitEvent.RequestDate | date}}
\\r\\n
Preferred Time:
{{data.PermitEvent.ReferencePreferredTime}} 
\\r\\n
Contact:
{{data.PermitEvent.ReferenceContact}} 
\\r\\n
Comments:
{{data.PermitEvent.Comments}}
\\r\\n
\\r\\n
\\r\\n\\r\\n
* Name:
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
* Email:
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
Comments:
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
* Confirmation:
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Success

\\r\\n {{savedMessage}}\\r\\n Click to download inspection form\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Unauthorized access to this system is prohibited and will be prosecuted to the full extent of the law.
\\r\\n (C) 2014-2021 - Confederated Tribes of the Umatilla Indian Reservation\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\";","import * as moment from 'moment';\r\n\r\nvar modal_add_fall_inspection = ['$scope', '$uibModalInstance', 'LeasingService',\r\n function ($scope, $uibModalInstance, LeasingService) {\r\n\r\n $scope.header_message = \"Edit Fall Inspection\";\r\n\r\n //if we're not editing then we are creating a new one\r\n if (!$scope.inspection_modal) {\r\n $scope.header_message = \"Add Fall Inspection\";\r\n\r\n $scope.inspection_modal = {\r\n InspectionDateTime: $scope.currentDay,\r\n InspectedBy: $scope.currentUser,\r\n LeaseYear: \"\" + moment().year(),\r\n InspectionType: \"Fall\",\r\n ViolationType: \"Crop\",\r\n };\r\n }\r\n\r\n console.dir($scope.inspection_modal);\r\n\r\n\r\n $scope.save = function () {\r\n console.dir($scope.inspection_modal);\r\n $scope.inspection_modal.LeaseId = $scope.lease.Id;\r\n var save_result = LeasingService.saveInspection($scope.inspection_modal);\r\n\r\n save_result.$promise.then(function () {\r\n $scope.saveLeaseCallback(save_result);\r\n $uibModalInstance.dismiss();\r\n });\r\n };\r\n\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_add_fall_inspection;\r\n","import {getByField} from \"../../../common/common-functions\";\r\nimport {METADATA_PROPERTY_MAPIMAGE, METADATA_PROPERTY_MAPIMAGE_HTML} from \"../../../../config\";\r\n\r\nvar modal_choose_map = ['$scope', '$uibModalInstance', 'ProjectService',\r\n function ($scope, $uibModalInstance, ProjectService){\r\n\r\n var galleryLinkTemplate = '' +\r\n '
' +\r\n '' +\r\n '
';\r\n $scope.chooseMapSelection = [];\r\n\r\n $scope.chooseMapGallery = {\r\n data: 'project.Images',\r\n columnDefs:\r\n [\r\n {field:'Name',displayName: 'File', cellTemplate: galleryLinkTemplate},\r\n {field: 'Title'},\r\n {field: 'Description'},\r\n //{field: 'Size'},\r\n ],\r\n multiSelect: false,\r\n selectedItems: $scope.chooseMapSelection\r\n\r\n };\r\n\r\n\r\n $scope.save = function(){\r\n\r\n if($scope.chooseMapSelection.length == 0)\r\n {\r\n alert(\"Please choose an image to save by clicking on it and try again.\");\r\n return;\r\n }\r\n\r\n //is there already a mapselection?\r\n var mapmd = getByField($scope.project.Metadata, METADATA_PROPERTY_MAPIMAGE, \"MetadataPropertyId\");\r\n var mapmd_html = getByField($scope.project.Metadata, METADATA_PROPERTY_MAPIMAGE_HTML, \"MetadataPropertyId\");\r\n\r\n if(!mapmd)\r\n {\r\n mapmd = { MetadataPropertyId: METADATA_PROPERTY_MAPIMAGE, UserId: $scope.Profile.Id };\r\n $scope.project.Metadata.push(mapmd);\r\n }\r\n\r\n if(!mapmd_html)\r\n {\r\n mapmd_html = { MetadataPropertyId: METADATA_PROPERTY_MAPIMAGE_HTML, UserId: $scope.Profile.Id };\r\n $scope.project.Metadata.push(mapmd_html);\r\n }\r\n\r\n mapmd.Values = $scope.chooseMapSelection[0].Id; //fileid of the chosen image file\r\n\r\n //whip up the html .. might be good to have this in a pattern somewhere external!\r\n var the_html = \"
\";\r\n the_html += \"\";\r\n if ($scope.chooseMapSelection[0].Description)\r\n the_html += \"

\" + $scope.chooseMapSelection[0].Description + \"

\";\r\n the_html += \"
\";\r\n\r\n mapmd_html.Values = the_html;\r\n\r\n //console.dir($scope.project.Metadata);\r\n\r\n var promise = ProjectService.saveProject($scope.project);\r\n promise.$promise.then(function(){\r\n $scope.reloadProject();\r\n $uibModalInstance.dismiss();\r\n });\r\n\r\n };\r\n\r\n\r\n $scope.cancel = function(){\r\n $uibModalInstance.dismiss();\r\n };\r\n }\r\n];\r\n\r\n\r\nexport default modal_choose_map;\r\n","//page for searching OLC Events.\r\nimport * as moment from 'moment';\r\nimport {\r\n getByName,\r\n getFilesArrayAsList,\r\n getParsedMetadataValues, getProjectItemsArrayAsTextList,\r\n getSubprojectFilesArrayAsLinks, isArray, valueFormatterDate\r\n} from \"../../../../core/common/common-functions\";\r\nimport {\r\n BulletedItemListCellTemplate,\r\n ItemListCellTemplate\r\n} from \"../../../../core/common/components/grid/cell-control-types\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\nimport {METADATA_ENTITY_OLCEVENTS} from \"../../../../config\";\r\n\r\nvar events_search = ['$scope', '$timeout', 'SubprojectService', 'ProjectService', 'DatasetService', 'CommonService', 'UserService',\r\n '$uibModal', 'ServiceUtilities', 'ConvertStatus', '$rootScope', '$routeParams', '$location',\r\n function ($scope, $timeout, SubprojectService, ProjectService, DatasetService, CommonService, UserService, $uibModal,\r\n ServiceUtilities, ConvertStatus, $rootScope, $routeParams, $location) {\r\n\r\n console.log(\"Inside events-search.ts...\");\r\n\r\n $scope.dataset = DatasetService.getDataset($routeParams.Id);\r\n\r\n\r\n $scope.metafields = CommonService.getMetadataProperties(METADATA_ENTITY_OLCEVENTS);\r\n $scope.metafields.$promise.then(function () {\r\n //console.dir($scope.metafields);\r\n $scope.metafields.forEach(function (field) {\r\n field.PossibleValues = getParsedMetadataValues(field.PossibleValues);\r\n });\r\n\r\n });\r\n\r\n $scope.getMetafield = function (in_name) {\r\n if (!in_name)\r\n return null;\r\n\r\n var field = getByName($scope.metafields, in_name);\r\n if (!field)\r\n return null;\r\n\r\n return field.PossibleValues;\r\n };\r\n\r\n $scope.dataset.$promise.then(function () {\r\n $scope.project = ProjectService.getProject($scope.dataset.ProjectId);\r\n\r\n $scope.project.$promise.then(function () {\r\n\r\n if ($scope.project.Name === \"Office of Legal Counsel\") {\r\n $scope.Users = ProjectService.getOlcStaff();\r\n }\r\n\r\n var ag_grid_div = document.querySelector('#olc-search-grid')as HTMLElement; //get the container id...\r\n //console.dir(ag_grid_div);\r\n $scope.ag_grid = new Grid(ag_grid_div, $scope.olcAgGridOptions); //bind the grid to it.\r\n $scope.olcAgGridOptions.api.showLoadingOverlay(); //show loading...\r\n\r\n //$scope.subprojectList = SubprojectService.getOlcSubprojects();\r\n\r\n /*\r\n //if user can edit, unhide the edit links\r\n if ($rootScope.Profile.canEdit($scope.project)) {\r\n $scope.olcAgGridOptions.columnApi.setColumnVisible(\"EditLinksMaster\", true);\r\n $scope.olcDetailGridOptions.columnDefs.unshift({ colId: 'EditLinksDetail', cellRenderer: EditDetailLinksTemplate, width: 140, menuTabs: [] }); //add this column to the front of the detail grid cols\r\n }\r\n */\r\n //$scope.subprojectList.$promise.then( function () {\r\n // $scope.olcAgGridOptions.api.setRowData($scope.subprojectList);\r\n // $scope.refreshSubprojectLists();\r\n //});\r\n\r\n $scope.subprojectList = null;\r\n $scope.subprojectList = SubprojectService.getOlcSubprojectsForSearch($routeParams.Id);\r\n\r\n $scope.subprojectList.$promise.then(function () {\r\n $scope.olcAgGridOptions.api.setRowData($scope.subprojectList);\r\n $scope.refreshSubprojectLists();\r\n });\r\n });\r\n });\r\n\r\n\r\n\r\n //this is for the olc/subproject events tab below - might can move this all out sometime...\r\n //var otherAgencyTemplate = function (params) {\r\n // if (params.node.data.Agency !== null || params.node.data.OtherAgency !== null) {\r\n // return '' + params.node.data.Agency + ''\r\n // + ((params.node.data.OtherAgency !== null) ? (' (' + params.node.data.OtherAgency + ')') : ''); //ternery: if otheragency then show it\r\n // }\r\n //};\r\n\r\n /*\r\n var EditMasterLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.editOlcSubproject(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var delBtn = document.createElement('a'); delBtn.href = '#'; delBtn.innerHTML = 'Delete';\r\n delBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.removeOlcSubproject(param.data);\r\n });\r\n div.appendChild(delBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n //var addBtn = document.createElement('a'); addBtn.href = '#'; addBtn.innerHTML = 'Add Event';\r\n var addBtn = document.createElement('a'); addBtn.href = '#'; addBtn.innerHTML = 'Add Item';\r\n addBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openOlcEventForm(param.data, {});\r\n });\r\n div.appendChild(addBtn);\r\n\r\n return div;\r\n\r\n };\r\n */\r\n\r\n var FileListCellTemplate = function (params) {\r\n var list = '
    ';\r\n\r\n var file_links = getSubprojectFilesArrayAsLinks($scope.project.Id, params.node.data.SubprojectId, params.node.data.FileAttach);\r\n\r\n file_links.forEach(function (link) {\r\n list += '
  • ' + link + '
  • ';\r\n });\r\n\r\n list += '
';\r\n\r\n return list;\r\n };\r\n\r\n /*\r\n //this template gives the Edit|Delete|Add for the detail.\r\n var EditDetailLinksTemplate = function (detailparam) {\r\n var subproject = getById($scope.subprojectList, detailparam.data.SubprojectId);\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openOlcEventForm(subproject, detailparam.data); //parent subproject, detail line.\r\n });\r\n div.appendChild(editBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var delBtn = document.createElement('a'); delBtn.href = '#'; delBtn.innerHTML = 'Delete';\r\n delBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.removeOlcEvent(subproject, detailparam.data);\r\n });\r\n div.appendChild(delBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n //var addBtn = document.createElement('a'); addBtn.href = '#'; addBtn.innerHTML = 'Add';\r\n var addBtn = document.createElement('a'); addBtn.href = '#'; addBtn.innerHTML = 'Add Item';\r\n addBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openOlcEventForm(subproject, {});\r\n });\r\n div.appendChild(addBtn);\r\n\r\n return div;\r\n\r\n };\r\n */\r\n\r\n //grid columns for OLC events tab (master/subprojects)\r\n $scope.olcAgColumnDefs = [ //in order the columns will display, by the way...\r\n //{ colId: 'EditLinksMaster', width: 180, cellRenderer: EditMasterLinksTemplate, menuTabs: [], hide: true },\r\n //{ colId: 'EditLinksMaster', width: 225, cellRenderer: EditMasterLinksTemplate, menuTabs: [], hide: true },\r\n //***Start copied-in Details here\r\n {\r\n headerName: 'Boundary',\r\n field: 'Boundary',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n valueGetter: function (params) { return params.node.data.Boundary },\r\n valueFormatter: function (params) {\r\n // Note1: Sometimes the value can be null\r\n // Note2: The first time through, the JSON object is a string and must be converted to an array.\r\n // Note3: The second time through, the value is already an array, so doing JSON.parse will cause JavaScript to die.\r\n if (params.node.data.Boundary !== null) {\r\n if (!isArray(params.node.data.Boundary))\r\n params.node.data.Boundary = JSON.parse(params.node.data.Boundary);\r\n\r\n //var the_str = valueFormatterArrayToList(params.node.data.Boundary);\r\n //if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // the_str = the_str.replace(/\"/g, '');\r\n\r\n //var the_str = buildBulletedItemList(params.node.data.Boundary);\r\n //return the_str;\r\n }\r\n },\r\n cellRenderer: BulletedItemListCellTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n {\r\n headerName: 'Significant Area',\r\n field: 'SignificantArea',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n valueGetter: function (params) { return params.node.data.SignificantArea },\r\n valueFormatter: function (params) {\r\n if (params.node.data.SignificantArea !== null) {\r\n if (!isArray(params.node.data.SignificantArea))\r\n params.node.data.SignificantArea = JSON.parse(params.node.data.SignificantArea);\r\n\r\n // var the_str = valueFormatterArrayToList(params.node.data.SignificantArea);\r\n // if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // the_str = the_str.replace(/\"/g, '');\r\n // return the_str;\r\n }\r\n },\r\n cellRenderer: BulletedItemListCellTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n { headerName: 'Survey Contract Number', field: 'SurveyContractNumber', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: 'Surveyor Name', field: 'SurveyorName', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: 'Document Type', field: 'DocumentType', cellClass: 'event-record-cell', width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: 'File Attach', field: 'FileAttach', width: 330, cellRenderer: FileListCellTemplate, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n //{ headerName: 'File Name', field: 'FileName', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: 'Description', field: 'Description', cellRenderer: ItemListCellTemplate, width: 180, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: 'Survey Number', field: 'SurveyNumber', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: 'Survey Authorizing Agency', field: 'SurveyAuthorizingAgency', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n {\r\n headerName: 'Survey Dates',\r\n field: 'SurveyDates',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n valueGetter: function (params) { return params.node.data.SurveyDates },\r\n valueFormatter: function (params) {\r\n //console.log(\"typeof params.node.data.SurveyDates = \" + typeof params.node.data.SurveyDates);\r\n //if ((params.node.data.SurveyDates !== null) && (typeof params.node.data.SurveyDates !== 'string')) {\r\n if ((params.node !== null) && (params.node.data !==null) && (params.node.data.SurveyDates !== null)) {\r\n try {\r\n params.node.data.SurveyDates = JSON.parse(params.node.data.SurveyDates);\r\n }\r\n catch (err) {\r\n // The value is not JSON (possibly already an array, or a non-JSON string)\r\n if (params.node.data.SurveyDates.indexOf(\";\") > -1) {\r\n params.node.data.SurveyDates = params.node.data.SurveyDates.split(\";\");\r\n params.node.data.SurveyDates.splice(-1, 1);\r\n\r\n }\r\n }\r\n\r\n //var the_str = valueFormatterArrayToList(params.node.data.Boundary);\r\n //if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // the_str = the_str.replace(/\"/g, '');\r\n\r\n //var the_str = buildBulletedItemList(params.node.data.Boundary);\r\n //return the_str;\r\n }\r\n\r\n },\r\n cellRenderer: BulletedItemListCellTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n {\r\n headerName: 'TwnRngSec',\r\n field: 'TwnRngSec',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n valueGetter: function (params) { return params.node.data.TwnRngSec },\r\n valueFormatter: function (params) {\r\n //console.log(\"typeof params.node.data.TwnRngSec = \" + typeof params.node.data.TwnRngSec);\r\n //if ((params.node.data.TwnRngSec !== null) && (typeof params.node.data.TwnRngSec !== 'string')) {\r\n if (params.node.data.TwnRngSec !== null) {\r\n try {\r\n params.node.data.TwnRngSec = JSON.parse(params.node.data.TwnRngSec);\r\n }\r\n catch (err) {\r\n // The value is not JSON (possibly already an array, or a non-JSON string)\r\n if (params.node.data.TwnRngSec.indexOf(\";\") > -1) {\r\n params.node.data.TwnRngSec = params.node.data.TwnRngSec.split(\";\");\r\n params.node.data.TwnRngSec.splice(-1, 1);\r\n\r\n }\r\n }\r\n\r\n //var the_str = valueFormatterArrayToList(params.node.data.Boundary);\r\n //if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // the_str = the_str.replace(/\"/g, '');\r\n\r\n //var the_str = buildBulletedItemList(params.node.data.Boundary);\r\n //return the_str;\r\n }\r\n\r\n },\r\n cellRenderer: BulletedItemListCellTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n //{ headerName: 'Author', field: 'Author', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: 'Agency', field: 'Agency', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: 'Agency Division', field: 'AgencyDivision', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: 'Agency Location', field: 'EventAgencyLocation', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: 'Signatory Name', field: 'SignatoryName', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: 'Signatory Title', field: 'SignatoryTitle', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: 'Recipient Name', field: 'RecipientName', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: 'RecipientTitle', field: 'RecipientTitle', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: 'Recipient Name', field: 'RecipientName', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: 'Recipient Title', field: 'RecipientTitle', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: 'Recipient Agency', field: 'RecipientAgency', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: 'Recipient Location', field: 'RecipientLocation', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n // {\r\n // headerName: 'Boundary',\r\n // field: 'Boundary',\r\n // cellClass: 'event-record-cell',\r\n // width: 180,\r\n // valueGetter: function (params) { return params.node.data.Boundary },\r\n // valueFormatter: function (params) {\r\n // // Note1: Sometimes the value can be null\r\n // // Note2: The first time through, the JSON object is a string and must be converted to an array.\r\n // // Note3: The second time through, the value is already an array, so doing JSON.parse will cause JavaScript to die.\r\n // if (params.node.data.Boundary !== null) {\r\n // if (!isArray(params.node.data.Boundary))\r\n // params.node.data.Boundary = JSON.parse(params.node.data.Boundary);\r\n\r\n // //var the_str = valueFormatterArrayToList(params.node.data.Boundary);\r\n // //if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // // the_str = the_str.replace(/\"/g, '');\r\n\r\n // //var the_str = buildBulletedItemList(params.node.data.Boundary);\r\n // //return the_str;\r\n // }\r\n // },\r\n // cellRenderer: BulletedItemListCellTemplate,\r\n // menuTabs: ['filterMenuTab'],\r\n // filter: 'text'\r\n // },\r\n //{ headerName: 'Significant Area', field: 'SignificantArea', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n // {\r\n // headerName: 'Significant Area',\r\n // field: 'SignificantArea',\r\n // cellClass: 'event-record-cell',\r\n // width: 180,\r\n // valueGetter: function (params) { return params.node.data.SignificantArea },\r\n // valueFormatter: function (params) {\r\n // if (params.node.data.SignificantArea !== null) {\r\n // if (!isArray(params.node.data.SignificantArea))\r\n // params.node.data.SignificantArea = JSON.parse(params.node.data.SignificantArea);\r\n\r\n // // var the_str = valueFormatterArrayToList(params.node.data.SignificantArea);\r\n // // if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // // the_str = the_str.replace(/\"/g, '');\r\n // // return the_str;\r\n // }\r\n // },\r\n // cellRenderer: BulletedItemListCellTemplate,\r\n // menuTabs: ['filterMenuTab'],\r\n // filter: 'text'\r\n // },\r\n //{ headerName: 'Miscellaneous Context', field: 'MiscellaneousContext', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n {\r\n headerName: 'Miscellaneous Context',\r\n field: 'MiscellaneousContext',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n valueGetter: function (params) { return params.node.data.MiscellaneousContext },\r\n valueFormatter: function (params) {\r\n if (params.node.data.MiscellaneousContext !== null) {\r\n if (!isArray(params.node.data.MiscellaneousContext))\r\n params.node.data.MiscellaneousContext = JSON.parse(params.node.data.MiscellaneousContext);\r\n\r\n // var the_str = valueFormatterArrayToList(params.node.data.MiscellaneousContext);\r\n // if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // the_str = the_str.replace(/\"/g, '');\r\n // return the_str;\r\n }\r\n },\r\n cellRenderer: BulletedItemListCellTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n //{ headerName: 'Survey Number', field: 'SurveyNumber', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ headerName: 'Survey Contract Number', field: 'SurveyContractNumber', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ headerName: 'Surveyor Name', field: 'SurveyorName', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ headerName: 'Survey Authorizing Agency', field: 'SurveyAuthorizingAgency', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ headerName: 'Survey Dates', field: 'SurveyDates', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n // {\r\n // headerName: 'Survey Dates',\r\n // field: 'SurveyDates',\r\n // cellClass: 'event-record-cell',\r\n // width: 180,\r\n // valueGetter: function (params) { return params.node.data.SurveyDates },\r\n // valueFormatter: function (params) {\r\n // //console.log(\"typeof params.node.data.SurveyDates = \" + typeof params.node.data.SurveyDates);\r\n // //if ((params.node.data.SurveyDates !== null) && (typeof params.node.data.SurveyDates !== 'string')) {\r\n // if ((params.node !== null) && (params.node.data !==null) && (params.node.data.SurveyDates !== null)) {\r\n // try {\r\n // params.node.data.SurveyDates = JSON.parse(params.node.data.SurveyDates);\r\n // }\r\n // catch (err) {\r\n // // The value is not JSON (possibly already an array, or a non-JSON string)\r\n // if (params.node.data.SurveyDates.indexOf(\";\") > -1) {\r\n // params.node.data.SurveyDates = params.node.data.SurveyDates.split(\";\");\r\n // params.node.data.SurveyDates.splice(-1, 1);\r\n\r\n // }\r\n // }\r\n\r\n // //var the_str = valueFormatterArrayToList(params.node.data.Boundary);\r\n // //if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // // the_str = the_str.replace(/\"/g, '');\r\n\r\n // //var the_str = buildBulletedItemList(params.node.data.Boundary);\r\n // //return the_str;\r\n // }\r\n\r\n // },\r\n // cellRenderer: BulletedItemListCellTemplate,\r\n // menuTabs: ['filterMenuTab'],\r\n // filter: 'text'\r\n // },\r\n //{ headerName: 'Description', field: 'Description', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ headerName: 'TwnRngSec', field: 'TwnRngSec', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n // {\r\n // headerName: 'TwnRngSec',\r\n // field: 'TwnRngSec',\r\n // cellClass: 'event-record-cell',\r\n // width: 180,\r\n // valueGetter: function (params) { return params.node.data.TwnRngSec },\r\n // valueFormatter: function (params) {\r\n // //console.log(\"typeof params.node.data.TwnRngSec = \" + typeof params.node.data.TwnRngSec);\r\n // //if ((params.node.data.TwnRngSec !== null) && (typeof params.node.data.TwnRngSec !== 'string')) {\r\n // if (params.node.data.TwnRngSec !== null) {\r\n // try {\r\n // params.node.data.TwnRngSec = JSON.parse(params.node.data.TwnRngSec);\r\n // }\r\n // catch (err) {\r\n // // The value is not JSON (possibly already an array, or a non-JSON string)\r\n // if (params.node.data.TwnRngSec.indexOf(\";\") > -1) {\r\n // params.node.data.TwnRngSec = params.node.data.TwnRngSec.split(\";\");\r\n // params.node.data.TwnRngSec.splice(-1, 1);\r\n\r\n // }\r\n // }\r\n\r\n // //var the_str = valueFormatterArrayToList(params.node.data.Boundary);\r\n // //if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // // the_str = the_str.replace(/\"/g, '');\r\n\r\n // //var the_str = buildBulletedItemList(params.node.data.Boundary);\r\n // //return the_str;\r\n // }\r\n\r\n // },\r\n // cellRenderer: BulletedItemListCellTemplate,\r\n // menuTabs: ['filterMenuTab'],\r\n // filter: 'text'\r\n // },\r\n { headerName: 'Number Items', field: 'NumberItems', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: 'Page Number', field: 'PageNumber', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n {\r\n field: 'DateDiscovered',\r\n headerName: 'Date Discovered',\r\n valueGetter: function (params) { return moment(params.node.data.DateDiscovered) }, //date filter needs js date object\r\n width: 150,\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.DateDiscovered);\r\n },\r\n filter: 'date',\r\n menuTabs: ['filterMenuTab']\r\n },\r\n { headerName: 'Person Discovered', field: 'PersonDiscovered', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ headerName: 'Reference', field: 'Reference', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n {\r\n headerName: 'Reference',\r\n field: 'Reference',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n valueGetter: function (params) { return params.node.data.Reference },\r\n valueFormatter: function (params) {\r\n //console.log(\"typeof params.node.data.Reference = \" + typeof params.node.data.Reference);\r\n if ((params.node !== null) && (params.node.data !== null) && (params.node.data.Reference !== null)) {\r\n try {\r\n params.node.data.Reference = JSON.parse(params.node.data.Reference);\r\n }\r\n catch (err) {\r\n // The value is not JSON (possibly already an array, or a non-JSON string)\r\n if (params.node.data.Reference.indexOf(\";\") > -1) {\r\n params.node.data.Reference = params.node.data.Reference.split(\";\");\r\n params.node.data.Reference.splice(-1, 1);\r\n\r\n }\r\n }\r\n }\r\n\r\n },\r\n cellRenderer: BulletedItemListCellTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n //{\r\n //headerName: 'Comments', field: 'EventComments', cellClass: 'event-record-cell', width: 380, cellStyle: {\r\n // headerName: 'Tasks', field: 'Tasks', cellClass: 'event-record-cell', width: 380, cellStyle: {\r\n // 'white-space': 'normal'\r\n // },\r\n // menuTabs: ['filterMenuTab'],\r\n // filter: 'text'\r\n //},\r\n {\r\n headerName: 'Tasks',\r\n field: 'Tasks',\r\n cellClass: 'event-record-cell',\r\n width: 380,\r\n cellStyle: {\r\n 'white-space': 'normal'\r\n },\r\n valueGetter: function (params) { return params.node.data.Tasks },\r\n valueFormatter: function (params) {\r\n //console.log(\"typeof params.node.data.Tasks = \" + typeof params.node.data.Tasks);\r\n if (params.node.data.Tasks !== null) {\r\n try {\r\n params.node.data.Tasks = JSON.parse(params.node.data.Tasks);\r\n }\r\n catch (err) {\r\n // The value is not JSON (possibly already an array, or a non-JSON string)\r\n if (params.node.data.Tasks.indexOf(\";\") > -1) {\r\n params.node.data.Tasks = params.node.data.Tasks.split(\";\");\r\n params.node.data.Tasks.splice(-1, 1);\r\n\r\n }\r\n }\r\n }\r\n\r\n },\r\n cellRenderer: BulletedItemListCellTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n\r\n //{ headerName: 'EventFiles', field: 'EventFiles', cellClass: 'event-record-cell', cellRenderer: FileListCellTemplate },\r\n //{ headerName: 'File Attach', field: 'FileAttach', width: 330, cellRenderer: FileListCellTemplate, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: 'Document Archive Id', field: 'EventArchiveId', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n {\r\n headerName: 'Source ID',\r\n field: 'SubprojectId',\r\n width: 80,\r\n cellRenderer: 'agGroupCellRenderer',\r\n cellRendererParams: { suppressCount: true },\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'number'\r\n },\r\n { field: 'RecordGroup', headerName: 'Record Group', width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n { field: 'SeriesTitle', headerName: 'Series Title', width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n { field: 'FacilityHoused', headerName: 'Facility Housed', width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n { field: 'OtherFacilityHoused', headerName: 'Other Facility Housed', width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n { field: 'Box', headerName: 'Box', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n { field: 'LitigationCategory', headerName: 'Litigation Category', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n { field: 'FileUnit', headerName: 'File Unit', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n { field: 'SourceArchiveId', headerName: 'Source Archive Id', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n {\r\n headerName: 'By User',\r\n field: 'SpByUserFullName',\r\n cellClass: 'event-record-cell',\r\n valueGetter: function (params) { return params.node.data.SpByUserFullName },\r\n valueFormatter: function (params) {\r\n //params.node.data.SubprojectByUserId = JSON.parse(params.node.data.SubprojectByUserId);\r\n //var the_str = getNameFromUserId(params.node.data.SubprojectByUserId, $scope.Users);\r\n //if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // the_str = the_str.replace(/\"/g, '');\r\n //return the_str;\r\n return params.node.data.SpByUserFullName;\r\n },\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n //{ headerName: 'Documents', field: 'EventFiles', width: 330, cellRenderer: FileListCellTemplate, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n //{ headerName: 'By User', field: 'ByUserId', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n // {\r\n // headerName: 'Item Updated By User',\r\n // field: 'EventByUserFullName',\r\n // cellClass: 'event-record-cell',\r\n // valueGetter: function (params) { return params.node.data.EventByUserFullName },\r\n // valueFormatter: function (params) {\r\n // //params.node.data.EventByUserFullName = JSON.parse(params.node.data.EventByUserFullName);\r\n // //var the_str = getNameFromUserId(params.node.data.EventByUserId, $scope.Users);\r\n // //if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // // the_str = the_str.replace(/\"/g, '');\r\n // //return the_str;\r\n // return params.node.data.EventByUserFullName;\r\n // },\r\n // width: 180,\r\n // menuTabs: ['filterMenuTab'],\r\n // filter: 'text'\r\n // },\r\n //***End copied-in Details here\r\n // {\r\n // headerName: 'Source ID',\r\n // field: 'SubprojectId',\r\n // width: 80,\r\n // cellRenderer: 'agGroupCellRenderer',\r\n // cellRendererParams: { suppressCount: true },\r\n // menuTabs: ['filterMenuTab'],\r\n // filter: 'number'\r\n // },\r\n // {\r\n // headerName: 'Updated',\r\n // field: 'EffDt',\r\n // width: 120,\r\n // valueGetter: function (params) { return moment(params.node.data.EffDt) }, //date filter needs js date object\r\n // valueFormatter: function (params) {\r\n // return valueFormatterDate(params.node.data.EffDt);\r\n // },\r\n // sort: 'desc',\r\n // menuTabs: ['filterMenuTab'],\r\n // filter: 'date',\r\n // },\r\n //{\r\n // headerName: '# Events', width: 110,\r\n // cellRenderer: EventCount,\r\n // valueGetter: function (params) {\r\n // return (params.data.OlcEvents !== undefined && params.data.OlcEvents.length > 0) ? params.data.OlcEvents.length : 0;\r\n // },\r\n // menuTabs: [],\r\n //},\r\n\r\n //{ field: 'CatalogNumber', headerName: 'Catalog Number', width: 150, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n // { field: 'RecordGroup', headerName: 'Record Group', width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n // { field: 'SeriesTitle', headerName: 'Series Title', width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n // { field: 'FacilityHoused', headerName: 'Facility Housed', width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n // { field: 'OtherFacilityHoused', headerName: 'Other Facility Housed', width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n // { field: 'Box', headerName: 'Box', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ field: 'BoxLocation', headerName: 'Box Location', width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ field: 'CategoryTitle', headerName: 'Category Title', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ field: 'LitigationCategory', headerName: 'Litigation Category', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ field: 'CategoryIndex', headerName: 'Category Index', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ field: 'CategorySubtitle', headerName: 'Category Subtitle', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ field: 'FileUnit', headerName: 'File Unit', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ field: 'SourceArchiveId', headerName: 'Source Archive Id', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ field: 'SignatoryTitle', headerName: 'Signatory Title', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ field: 'SignatoryAgency', headerName: 'Signatory Agency', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ field: 'SignatoryName', headerName: 'Signatory Name', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ field: 'ByUserId', headerName: 'By User', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n // {\r\n // headerName: 'By User',\r\n // field: 'SpByUserFullName',\r\n // cellClass: 'event-record-cell',\r\n // valueGetter: function (params) { return params.node.data.SpByUserFullName },\r\n // valueFormatter: function (params) {\r\n // //params.node.data.SubprojectByUserId = JSON.parse(params.node.data.SubprojectByUserId);\r\n // //var the_str = getNameFromUserId(params.node.data.SubprojectByUserId, $scope.Users);\r\n // //if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // // the_str = the_str.replace(/\"/g, '');\r\n // //return the_str;\r\n // return params.node.data.SpByUserFullName;\r\n // },\r\n // width: 180,\r\n // menuTabs: ['filterMenuTab'],\r\n // filter: 'text'\r\n // },\r\n\r\n //{\r\n // //note: white-space here causes word-wrap\r\n // field: 'Comments', headerName: 'Comments', width: 380, cellStyle: { 'white-space': 'normal' }, menuTabs: ['filterMenuTab'], filter: 'text'\r\n //},\r\n ];\r\n\r\n /*\r\n //details for the event\r\n var detailColumnDefs = [\r\n //{ colId: 'EditLinksDetail', headerName: '', width: 100, cellRenderer: EditDetailLinksTemplate, menuTabs: [], },\r\n {\r\n headerName: 'Document Date',\r\n field: 'DocumentDate',\r\n width: 160,\r\n cellClass: 'event-record-cell',\r\n valueGetter: function (params) { return moment(params.node.data.DocumentDate) }, //date filter needs js date object\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.DocumentDate);\r\n },\r\n sort: 'desc',\r\n filter: 'date',\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n { headerName: 'Document Type', field: 'DocumentType', cellClass: 'event-record-cell', width: 150, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'File Name', field: 'FileName', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'Author', field: 'Author', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n //{ headerName: 'Author Agency', field: 'AuthorAgency', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'Agency Division', field: 'AgencyDivision', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'Signatory Name', field: 'SignatoryName', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'Signatory Title', field: 'SignatoryTitle', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'Recipient Name', field: 'RecipientName', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'RecipientTitle', field: 'RecipientTitle', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'Recipient Name', field: 'RecipientName', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'Recipient Title', field: 'RecipientTitle', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'Recipient Agency', field: 'RecipientAgency', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'Recipient Location', field: 'RecipientLocation', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n //{ headerName: 'Boundary', field: 'Boundary', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n {\r\n headerName: 'Boundary',\r\n field: 'Boundary',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n valueGetter: function (params) { return params.node.data.Boundary },\r\n valueFormatter: function (params) {\r\n params.node.data.Boundary = JSON.parse(params.node.data.Boundary);\r\n var the_str = valueFormatterArrayToList(params.node.data.Boundary);\r\n if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n the_str = the_str.replace(/\"/g, '');\r\n return the_str;\r\n },\r\n menuTabs: ['filterMenuTab']\r\n },\r\n //{ headerName: 'Significant Area', field: 'SignificantArea', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n {\r\n headerName: 'Significant Area',\r\n field: 'SignificantArea',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n valueGetter: function (params) { return params.node.data.SignificantArea },\r\n valueFormatter: function (params) {\r\n params.node.data.SignificantArea = JSON.parse(params.node.data.SignificantArea);\r\n var the_str = valueFormatterArrayToList(params.node.data.SignificantArea);\r\n if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n the_str = the_str.replace(/\"/g, '');\r\n return the_str;\r\n },\r\n menuTabs: ['filterMenuTab']\r\n },\r\n //{ headerName: 'Miscellaneous Context', field: 'MiscellaneousContext', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n {\r\n headerName: 'Miscellaneous Context',\r\n field: 'MiscellaneousContext',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n valueGetter: function (params) { return params.node.data.MiscellaneousContext },\r\n valueFormatter: function (params) {\r\n params.node.data.MiscellaneousContext = JSON.parse(params.node.data.MiscellaneousContext);\r\n var the_str = valueFormatterArrayToList(params.node.data.MiscellaneousContext);\r\n if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n the_str = the_str.replace(/\"/g, '');\r\n return the_str;\r\n },\r\n menuTabs: ['filterMenuTab']\r\n },\r\n { headerName: 'Survey Number', field: 'SurveyNumber', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'Survey Contract Number', field: 'SurveyContractNumber', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'Surveyor Name', field: 'SurveyorName', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'Survey Authorizing Agency', field: 'SurveyAuthorizingAgency', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'Survey Dates', field: 'SurveyDates', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'Description', field: 'Description', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'TwnRngSec', field: 'TwnRngSec', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'NumberItems', field: 'NumberItems', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n\r\n {\r\n field: 'DateDiscovered',\r\n headerName: 'Date Discovered',\r\n valueGetter: function (params) { return moment(params.node.data.DateDiscovered) }, //date filter needs js date object\r\n width: 150,\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.DateDiscovered);\r\n },\r\n filter: 'date',\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n { headerName: 'Person Discovered', field: 'PersonDiscovered', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n { headerName: 'Reference', field: 'Reference', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n\r\n {\r\n //headerName: 'Comments', field: 'EventComments', cellClass: 'event-record-cell', width: 380, cellStyle: {\r\n headerName: 'Tasks', field: 'Tasks', cellClass: 'event-record-cell', width: 380, cellStyle: {\r\n 'white-space': 'normal'\r\n },\r\n menuTabs: ['filterMenuTab'], filter: 'text'\r\n },\r\n\r\n //{ headerName: 'EventFiles', field: 'EventFiles', cellClass: 'event-record-cell', cellRenderer: FileListCellTemplate },\r\n { headerName: 'File Attach', field: 'FileAttach', width: 330, cellRenderer: FileListCellTemplate, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n //{ headerName: 'Documents', field: 'EventFiles', width: 330, cellRenderer: FileListCellTemplate, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n //{ headerName: 'By User', field: 'ByUserId', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n {\r\n headerName: 'By User',\r\n field: 'ByUser',\r\n cellClass: 'event-record-cell',\r\n valueGetter: function (params) { return params.node.data.ByUserId },\r\n valueFormatter: function (params) {\r\n params.node.data.ByUserId = JSON.parse(params.node.data.ByUserId);\r\n var the_str = getNameFromUserId(params.node.data.ByUserId, $scope.Users);\r\n if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n the_str = the_str.replace(/\"/g, '');\r\n return the_str;\r\n },\r\n width: 180, menuTabs: ['filterMenuTab'],\r\n },\r\n ];\r\n */\r\n /*\r\n //detail grid options correspondence events\r\n $scope.olcDetailGridOptions = {\r\n columnDefs: detailColumnDefs,\r\n onGridReady: function (params) {\r\n //setTimeout(function () { params.api.sizeColumnsToFit(); }, 0);\r\n },\r\n getRowHeight: function (params) {\r\n //var comment_length = (params.data.EventComments === null) ? 1 : params.data.EventComments.length;\r\n var comment_length = (params.data.Tasks === null) ? 1 : params.data.Tasks.length;\r\n var comment_height = 25 * (Math.floor(comment_length / 45) + 1); //base our detail height on the comments field.\r\n var file_height = 25 * (getFilesArrayAsList(params.data.EventFiles).length); //count up the number of file lines we will have.\r\n return (comment_height > file_height) ? comment_height : file_height;\r\n },\r\n\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n */\r\n\r\n\r\n $scope.olcAgGridOptions = {\r\n suppressPropertyNamesCheck: true,\r\n masterDetail: false, //true,\r\n //detailCellRendererParams: {\r\n // detailGridOptions: $scope.olcDetailGridOptions,\r\n // getDetailRowData: function (params) {\r\n // params.successCallback(params.data.OlcEvents);\r\n // },\r\n //},\r\n\r\n animateRows: true,\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n // showToolPanel: false,\r\n columnDefs: $scope.olcAgColumnDefs,\r\n rowData: null,\r\n //filterParams: { apply: true }, //enable option: doesn't do the filter unless you click apply\r\n //debug: true,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n console.log(\"selection changed fired!\");\r\n },\r\n\r\n selectedItems: [],\r\n\r\n onGridReady: function (params) {\r\n //params.api.sizeColumnsToFit();\r\n },\r\n\r\n /*getRowHeight: function (params) {\r\n var rowIsDetailRow = params.node.level === 1;\r\n // return dynamic height when detail row, otherwise return 25\r\n if (rowIsDetailRow) {\r\n return 300;\r\n } else {\r\n var comment_length = (params.data.Comments === null) ? 1 : params.data.Comments.length;\r\n return 25 * (Math.floor(comment_length / 45) + 1); //base our detail height on the comments field.\r\n }\r\n //return rowIsDetailRow ? 200 : 25;\r\n },\r\n */\r\n getRowHeight: function (params) {\r\n // Original way\r\n //var comment_length = (params.data.EventComments === null) ? 1 : params.data.EventComments.length;\r\n var Tasks_length = (params.data.Tasks === null) ? 1 : params.data.Tasks.length;\r\n var Tasks_height = 25 * (Math.floor(Tasks_length / 45) + 1); //base our detail height on the Tasks (comments) field.\r\n var file_height = 25 * (getFilesArrayAsList(params.data.FileAttach).length); //count up the number of file lines we will have.\r\n var description_height = 25 * (getProjectItemsArrayAsTextList(params.data.Description).length);\r\n var boundary_height = 25 * (getProjectItemsArrayAsTextList(params.data.Boundary).length);\r\n var significantArea_height = 25 * (getProjectItemsArrayAsTextList(params.data.SignificantArea).length);\r\n var miscellaneoudContext_height = 25 * (getProjectItemsArrayAsTextList(params.data.MiscellaneousContext).length);\r\n var twnRngSec_height = 25 * (getProjectItemsArrayAsTextList(params.data.TwnRngSec).length);\r\n var reference_height = 25 * (getProjectItemsArrayAsTextList(params.data.Reference).length);\r\n\r\n var maxHeight = 1;\r\n if (Tasks_height > maxHeight)\r\n maxHeight = Tasks_height;\r\n\r\n if (file_height > maxHeight)\r\n maxHeight = file_height;\r\n\r\n if (description_height > maxHeight)\r\n maxHeight = description_height;\r\n\r\n if (boundary_height > maxHeight)\r\n maxHeight = boundary_height;\r\n\r\n if (significantArea_height > maxHeight)\r\n maxHeight = significantArea_height;\r\n\r\n if (miscellaneoudContext_height > maxHeight)\r\n maxHeight = miscellaneoudContext_height;\r\n\r\n if (twnRngSec_height > maxHeight)\r\n maxHeight = twnRngSec_height;\r\n\r\n if (reference_height > maxHeight)\r\n maxHeight = reference_height;\r\n\r\n //return (Tasks_height > file_height) ? Tasks_height : file_height;\r\n return maxHeight;\r\n },\r\n\r\n onRowDoubleClicked: function (row) {\r\n $scope.olcAgGridOptions.api.collapseAll();\r\n row.node.setSelected(true);\r\n row.node.setExpanded(true);\r\n },\r\n onRowClicked: function (row) {\r\n row.node.setSelected(true);\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n\r\n };\r\n\r\n //returns the (last) node or null if none found.\r\n $scope.expandSubProjectById = function (id_in) {\r\n var the_node = null;\r\n $scope.olcAgGridOptions.api.forEachNode(function (node) {\r\n if (node.data.Id === id_in) {\r\n //console.log(\"Expanding! \" + id_in);\r\n node.setExpanded(true);\r\n the_node = node;\r\n }\r\n });\r\n return the_node;\r\n };\r\n\r\n /****** Working on this area ******/\r\n //refresh all of the project match lists\r\n $scope.refreshSubprojectLists = function () {\r\n console.log(\"Inside events.js, $scope.refreshSubprojectList...\");\r\n\r\n //$scope.subprojectList.forEach(function (subp) {\r\n // console.log(\"subp is next...\");\r\n // console.dir(subp);\r\n // subp.OlcEvents.forEach(function (olcE) {\r\n // });\r\n //});\r\n\r\n\r\n $scope.project.SubprojectFileList = SubprojectService.getOlcSubprojectFiles($scope.project.Id); //TODO: we already have this as $scope.project.SubprojectFiles once the files load in project-detail.js\r\n\r\n };\r\n /**********************************/\r\n\r\n $scope.editOlcSubproject = function (subproject) {\r\n //console.log(\"editOlcSubproject...\");\r\n\r\n $rootScope.viewSubproject = $scope.viewSubproject = subproject;\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/olc/components/events/templates/modal-create-subproject.html',\r\n controller: 'ModalCreateOlcSubprojectCtrl',\r\n $scope: $scope, //very important to pass the $scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n $scope.backToEventsPage = function (p) {\r\n console.log(\"Inside scope.backToEventsPage...\");\r\n $location.path(\"/olcevents/\" + $scope.dataset.Id).replace();\r\n\r\n //var modalInstance = $uibModal.open({\r\n // templateUrl: 'app/private/olc/components/events/templates/events-search.html',\r\n // controller: 'OlcEventsSearchCtrl',\r\n // scope: scope, //very important to pass the scope along...\r\n //});\r\n };\r\n\r\n $scope.redrawRows = function () {\r\n $scope.olcAgGridOptions.api.setRowData([]);\r\n setTimeout(function () { $scope.olcAgGridOptions.api.setRowData($scope.subprojectList); }, 4000);\r\n };\r\n\r\n $scope.refreshCells = function () {\r\n $scope.olcAgGridOptions.api.refreshCells();\r\n };\r\n\r\n $scope.refreshMemory = function () {\r\n $scope.olcAgGridOptions.api.refreshInMemoryRowModel('group');\r\n };\r\n\r\n //handle favorite toggle\r\n $scope.isFavorite = $rootScope.Profile.isDatasetFavorite($routeParams.Id);\r\n $scope.toggleFavorite = function () {\r\n UserService.toggleFavoriteDataset($scope, $rootScope);\r\n }\r\n\r\n }\r\n];\r\n\r\nexport default events_search;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {getAgGridFilterByType, valueFormatterDate} from \"../../../../core/common/common-functions\";\r\nimport {LeaseModalScope} from \"./lease-scope\";\r\n// import leasing_module from \"../../leasing-module\";\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\nimport {LEASE_STATUS_PENDING} from \"../../../../config\";\r\n\r\nvar available_land = ['$scope', '$route', '$filter', '$uibModal', '$location', '$window', '$rootScope', 'LeasingService',\r\n function ($scope, $route, $filter, $uibModal, $location, $window, $rootScope, LeasingService) {\r\n\r\n $rootScope.inModule = \"leasing\";\r\n\r\n if (!$scope.Profile.hasRole(\"Leasing\"))\r\n angular.rootScope.go(\"/unauthorized\");\r\n\r\n $scope.currentPage = \"Available\";\r\n\r\n $scope.fields = LeasingService.getAvailableFields();\r\n\r\n LeaseModalScope.prepareLeaseModalScope($scope, LeasingService);\r\n\r\n $scope.fields.$promise.then(function () {\r\n $scope.leaseGridDiv = document.querySelector('#available-land-grid');\r\n new Grid($scope.leaseGridDiv, $scope.leaseGrid);\r\n });\r\n\r\n $scope.countLandUse = function (landuse) {\r\n return $filter('filter')($scope.fields, { FieldLandUse: landuse }).length;\r\n };\r\n\r\n $scope.showAll = \"No\";\r\n $scope.toggleShowAll = function () {\r\n $scope.showAll = ($scope.showAll == 'Yes') ? 'No' : 'Yes';\r\n if ($scope.showAll == 'Yes') {\r\n $scope.fields = LeasingService.getAvailableAllotments();\r\n $scope.fields.$promise.then(function () {\r\n $scope.leaseGrid.api.setRowData($scope.fields);\r\n });\r\n } else {\r\n $scope.fields = LeasingService.getAvailableFields();\r\n $scope.fields.$promise.then(function () {\r\n $scope.leaseGrid.api.setRowData($scope.fields);\r\n });\r\n }\r\n }\r\n\r\n var EditLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n //Modify editBtn.href from '#' to GIS Tax Parcel Viewer URL\r\n var editBtn = document.createElement('a'); editBtn.href = 'https://gisportal.ctuir.org/portal/apps/webappviewer/index.html?id=54fd175f4e2745ff92b278d04b987ad9'; editBtn.innerHTML = 'Map';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n //Change \"viewOnMap\" functionality to window.open() to open the GIS Tax Parcel\r\n // Viewer rather than the embedded map\r\n\r\n //$scope.viewOnMap(param.data);\r\n window.open(editBtn.href, '_blank');\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n var leaseColumnDefs = [\r\n { colId: 'EditLinks', width: 60, cellRenderer: EditLinksTemplate, menuTabs: [] },\r\n { headerName: \"Allotment\", field: \"AllotmentName\", width: 120, menuTabs: ['filterMenuTab'], filter: \"text\", sort: 'asc' },\r\n { headerName: \"Field Land Use\", field: \"FieldLandUse\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Field #\", field: \"FieldId\", width: 100, menuTabs: ['filterMenuTab'], filter: \"number\" },\r\n { headerName: \"Field Acres\", field: \"FieldAcres\", width: 140, menuTabs: ['filterMenuTab'], filter: \"number\" },\r\n { headerName: \"Expires\", field: \"Expiration\", width: 140, menuTabs: ['filterMenuTab'], filter: true },\r\n {\r\n headerName: \"Date Available\", field: \"DateAvailable\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.DateAvailable) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.DateAvailable);\r\n },\r\n menuTabs: ['filterMenuTab'], filter: \"agDateColumnFilter\"\r\n },\r\n //{ headerName: \"AY Income\", field: \"AvgAnnualIncome\", width: 140, menuTabs: ['filterMenuTab'], filter: \"number\" },\r\n //{ headerName: \"AYI Per Acre\", field: \"AvgAnnualIncomePerAcre\", width: 140, menuTabs: ['filterMenuTab'], filter: \"number\" },\r\n //{ headerName: \"Yield Per Unit\", field: \"NumUnit\", width: 140, menuTabs: ['filterMenuTab'], filter: \"number\" },\r\n { headerName: \"FSA Tract #\", field: \"FSATractNumber\", width: 140, menuTabs: ['filterMenuTab'], filter: \"text\" },\r\n //{ headerName: \"HEL\", field: \"HEL\", width: 100 },\r\n { headerName: \"TAAMS Number\", field: \"TAAMSNumber\", width: 140, menuTabs: ['filterMenuTab'], filter: \"text\" },\r\n ];\r\n\r\n\r\n $scope.leaseGrid = {\r\n columnDefs: leaseColumnDefs,\r\n rowData: $scope.fields,\r\n rowSelection: 'multiple',\r\n selectedItems: [],\r\n onSelectionChanged: function () {\r\n $scope.leaseGrid.selectedItems = $scope.leaseGrid.api.getSelectedRows();\r\n $scope.$apply(); //we're changing something that angular isn't aware of\r\n },\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n }\r\n\r\n $scope.openNewLeaseModal = function (params) {\r\n\r\n var selected_land = $scope.leaseGrid.selectedItems[0];\r\n\r\n $scope.lease = {\r\n FSATractNumber: selected_land.FSATractNumber,\r\n TAAMSNumber: selected_land.TAAMSNumber,\r\n AllotmentName: selected_land.AllotmentName,\r\n LeaseType: selected_land.FieldLandUse,\r\n LeaseAcres: selected_land.FieldAcres,\r\n ProductiveAcres: selected_land.FieldAcres,\r\n LeaseStart: selected_land.DateAvailable,\r\n Level: 1, //Level 1\r\n\r\n Status: LEASE_STATUS_PENDING, //Pending\r\n FieldsToLink: [], //comma separated list of fields we will join this lease to\r\n LeaseFields: [],\r\n StatusDate: $scope.currentDay,\r\n StatusBy: $scope.currentUser,\r\n };\r\n\r\n $scope.leaseGrid.selectedItems.forEach(function (item) {\r\n if (item.FieldId) {\r\n $scope.lease.FieldsToLink.push(item.FieldId);\r\n $scope.lease.LeaseFields.push(item);\r\n }\r\n });\r\n\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/lease-modal.html',\r\n controller: 'LeaseModalController',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n }\r\n\r\n $scope.saveLeaseCallback = function (saved_lease) {\r\n $scope.fields = LeasingService.getAvailableFields();\r\n $scope.fields.$promise.then(function () {\r\n if ($scope.leaseGrid.api)\r\n $scope.leaseGrid.api.setRowData($scope.fields);\r\n });\r\n }\r\n\r\n\r\n $scope.currentUser = $rootScope.Profile.Fullname;\r\n $scope.currentDay = moment().format();\r\n\r\n $scope.viewOnMap = function (params) {\r\n $location.url(\"leasing?allotment=\" + params.AllotmentName);\r\n }\r\n\r\n\r\n\r\n\r\n}];\r\n\r\nexport default available_land;\r\n","//page for OLC Events.\r\nimport * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {serverUrl} from \"../../../../config\";\r\nimport {\r\n getById, getByName,\r\n getFilesArrayAsList, getNameFromUserId, getParsedMetadataValues, getProjectItemsArrayAsTextList,\r\n getSubprojectFilesArrayAsLinks, isArray,\r\n valueFormatterDate\r\n} from \"../../../../core/common/common-functions\";\r\nimport {\r\n BulletedItemListCellTemplate,\r\n ItemListCellTemplate\r\n} from \"../../../../core/common/components/grid/cell-control-types\";\r\n\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\nimport {METADATA_ENTITY_OLCEVENTS} from \"../../../../config\";\r\n\r\nvar page_events = ['$scope', '$timeout', 'SubprojectService', 'ProjectService', 'DatasetService', 'CommonService', 'UserService',\r\n '$uibModal', 'ServiceUtilities', 'ConvertStatus', '$rootScope', '$routeParams', '$location',\r\n function (scope, $timeout, SubprojectService, ProjectService, DatasetService, CommonService, UserService, $uibModal,\r\n ServiceUtilities, ConvertStatus, $rootScope, $routeParams, $location) {\r\n //console.log(\"Inside tab events controller...\");\r\n\r\n scope.dataset = DatasetService.getDataset($routeParams.Id);\r\n\r\n scope.metafields = CommonService.getMetadataProperties(METADATA_ENTITY_OLCEVENTS);\r\n scope.metafields.$promise.then(function () {\r\n //console.dir(scope.metafields);\r\n scope.metafields.forEach(function (field) {\r\n field.PossibleValues = getParsedMetadataValues(field.PossibleValues);\r\n });\r\n\r\n });\r\n\r\n scope.getMetafield = function (in_name) {\r\n if (!in_name)\r\n return null;\r\n\r\n var field = getByName(scope.metafields, in_name);\r\n if (!field)\r\n return null;\r\n\r\n return field.PossibleValues;\r\n };\r\n\r\n scope.dataset.$promise.then(function () {\r\n scope.project = ProjectService.getProject(scope.dataset.ProjectId);\r\n\r\n scope.project.$promise.then(function () {\r\n\r\n if (scope.project.Name === \"Office of Legal Counsel\") {\r\n scope.Users = ProjectService.getOlcStaff();\r\n }\r\n\r\n var ag_grid_div = document.querySelector('#olc-events-grid') as HTMLElement; //get the container id...\r\n //console.dir(ag_grid_div);\r\n scope.ag_grid = new Grid(ag_grid_div, scope.olcAgGridOptions); //bind the grid to it.\r\n scope.olcAgGridOptions.api.showLoadingOverlay(); //show loading...\r\n\r\n scope.subprojectList = SubprojectService.getOlcSubprojects();\r\n\r\n //if user can edit, unhide the edit links\r\n if ($rootScope.Profile.canEdit(scope.project)) {\r\n scope.olcAgGridOptions.columnApi.setColumnVisible(\"EditLinksMaster\", true);\r\n scope.olcDetailGridOptions.columnDefs.unshift({\r\n colId: 'EditLinksDetail',\r\n cellRenderer: EditDetailLinksTemplate,\r\n width: 140,\r\n menuTabs: []\r\n }); //add this column to the front of the detail grid cols\r\n }\r\n\r\n scope.subprojectList.$promise.then(function () {\r\n let the_str: any;\r\n scope.subprojectList.forEach(function (spItem) {\r\n var strSpFullName = getNameFromUserId(spItem.ByUserId, scope.Users);\r\n if (typeof strSpFullName === 'string') //backwards compatible - remove the quotes\r\n\r\n the_str = strSpFullName.replace(/\"/g, '');\r\n spItem.SpByUserFullName = strSpFullName;\r\n\r\n spItem.OlcEvents.forEach(function (eItem) {\r\n var strEvFullName = getNameFromUserId(eItem.ByUserId, scope.Users);\r\n if (typeof strEvFullName === 'string') //backwards compatible - remove the quotes\r\n the_str = strEvFullName.replace(/\"/g, '');\r\n eItem.EventByUserFullName = strEvFullName;\r\n });\r\n });\r\n\r\n scope.olcAgGridOptions.api.setRowData(scope.subprojectList);\r\n scope.refreshSubprojectLists();\r\n });\r\n\r\n });\r\n });\r\n\r\n\r\n //this is for the olc/subproject events tab below - might can move this all out sometime...\r\n //var otherAgencyTemplate = function (params) {\r\n // if (params.node.data.Agency !== null || params.node.data.OtherAgency !== null) {\r\n // return '' + params.node.data.Agency + ''\r\n // + ((params.node.data.OtherAgency !== null) ? (' (' + params.node.data.OtherAgency + ')') : ''); //ternery: if otheragency then show it\r\n // }\r\n //};\r\n\r\n\r\n var EventCount = function (params) {\r\n if (params.node.data.OlcEvents === undefined || params.node.data.OlcEvents === null)\r\n return '0';\r\n\r\n return '' + params.node.data.OlcEvents.length;\r\n };\r\n\r\n var EditMasterLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a');\r\n editBtn.href = '#';\r\n editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.editOlcSubproject(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var delBtn = document.createElement('a');\r\n delBtn.href = '#';\r\n delBtn.innerHTML = 'Delete';\r\n delBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.removeOlcSubproject(param.data);\r\n });\r\n div.appendChild(delBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n //var addBtn = document.createElement('a'); addBtn.href = '#'; addBtn.innerHTML = 'Add Event';\r\n var addBtn = document.createElement('a');\r\n addBtn.href = '#';\r\n addBtn.innerHTML = 'Add Item';\r\n addBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.openOlcEventForm(param.data, {});\r\n });\r\n div.appendChild(addBtn);\r\n\r\n return div;\r\n\r\n };\r\n\r\n\r\n var FileListCellTemplate = function (params) {\r\n var list = '
    ';\r\n\r\n var file_links = getSubprojectFilesArrayAsLinks(scope.project.Id, params.node.data.SubprojectId, params.node.data.FileAttach);\r\n\r\n file_links.forEach(function (link) {\r\n list += '
  • ' + link + '
  • ';\r\n });\r\n\r\n list += '
';\r\n\r\n return list;\r\n };\r\n\r\n\r\n //this template gives the Edit|Delete|Add for the detail.\r\n var EditDetailLinksTemplate = function (detailparam) {\r\n var subproject = getById(scope.subprojectList, detailparam.data.SubprojectId);\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a');\r\n editBtn.href = '#';\r\n editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.openOlcEventForm(subproject, detailparam.data); //parent subproject, detail line.\r\n });\r\n div.appendChild(editBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var delBtn = document.createElement('a');\r\n delBtn.href = '#';\r\n delBtn.innerHTML = 'Delete';\r\n delBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.removeOlcEvent(subproject, detailparam.data);\r\n });\r\n div.appendChild(delBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n //var addBtn = document.createElement('a'); addBtn.href = '#'; addBtn.innerHTML = 'Add';\r\n var addBtn = document.createElement('a');\r\n addBtn.href = '#';\r\n addBtn.innerHTML = 'Add Item';\r\n addBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.openOlcEventForm(subproject, {});\r\n });\r\n div.appendChild(addBtn);\r\n\r\n return div;\r\n\r\n };\r\n\r\n\r\n //grid columns for OLC events tab (master/subprojects)\r\n scope.olcAgColumnDefs = [ //in order the columns will display, by the way...\r\n {colId: 'EditLinksMaster', width: 180, cellRenderer: EditMasterLinksTemplate, menuTabs: [], hide: true},\r\n //{ colId: 'EditLinksMaster', width: 225, cellRenderer: EditMasterLinksTemplate, menuTabs: [], hide: true },\r\n {\r\n headerName: 'ID',\r\n field: 'Id',\r\n width: 80,\r\n cellRenderer: 'agGroupCellRenderer',\r\n cellRendererParams: {suppressCount: true},\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'number'\r\n },\r\n {\r\n field: 'EffDt',\r\n headerName: 'Updated',\r\n width: 120,\r\n valueGetter: function (params) {\r\n return moment(params.node.data.EffDt)\r\n }, //date filter needs js date object\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.EffDt);\r\n },\r\n sort: 'desc',\r\n filter: 'date',\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n {\r\n headerName: '# Events', width: 110,\r\n cellRenderer: EventCount,\r\n valueGetter: function (params) {\r\n return (params.data.OlcEvents !== undefined && params.data.OlcEvents.length > 0) ? params.data.OlcEvents.length : 0;\r\n },\r\n menuTabs: [],\r\n },\r\n\r\n //{ field: 'CatalogNumber', headerName: 'Catalog Number', width: 150, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n {field: 'Agency', headerName: 'Agency', width: 150, menuTabs: ['filterMenuTab'], filter: true},\r\n {field: 'AgencyLocation', headerName: 'AgencyLocation', width: 150, menuTabs: ['filterMenuTab'], filter: true},\r\n {field: 'RecordGroup', headerName: 'Record Group', width: 150, menuTabs: ['filterMenuTab'], filter: true},\r\n {field: 'SeriesTitle', headerName: 'Series Title', width: 150, menuTabs: ['filterMenuTab'], filter: true},\r\n {field: 'FacilityHoused', headerName: 'Facility Housed', width: 150, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n {\r\n field: 'OtherFacilityHoused',\r\n headerName: 'Other Facility Housed',\r\n width: 150,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n {field: 'Box', headerName: 'Box', width: 100, menuTabs: ['filterMenuTab'], filter: true},\r\n //{ field: 'BoxLocation', headerName: 'Box Location', width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ field: 'CategoryTitle', headerName: 'Category Title', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n {\r\n field: 'LitigationCategory',\r\n headerName: 'Litigation Category',\r\n width: 100,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n //{ field: 'CategoryIndex', headerName: 'Category Index', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ field: 'CategorySubtitle', headerName: 'CategorySubtitle', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n {field: 'FileUnit', headerName: 'File Unit', width: 100, menuTabs: ['filterMenuTab'], filter: true},\r\n {field: 'SourceArchiveId', headerName: 'Archive Id', width: 100, menuTabs: ['filterMenuTab'], filter: true},\r\n //{ field: 'SignatoryTitle', headerName: 'Signatory Title', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ field: 'SignatoryAgency', headerName: 'Signatory Agency', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ field: 'SignatoryName', headerName: 'Signatory Name', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ field: 'ByUserId', headerName: 'By User', width: 100, menuTabs: ['filterMenuTab'], filter: true },\r\n {\r\n headerName: 'By User',\r\n field: 'SpByUserFullName',\r\n cellClass: 'event-record-cell',\r\n valueGetter: function (params) {\r\n return params.node.data.SpByUserFullName\r\n },\r\n valueFormatter: function (params) {\r\n //params.node.data.ByUserId = JSON.parse(params.node.data.ByUserId);\r\n //var the_str = getNameFromUserId(params.node.data.ByUserId, scope.Users);\r\n //if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // the_str = the_str.replace(/\"/g, '');\r\n //return the_str;\r\n return params.node.data.SpByUserFullName;\r\n },\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n\r\n //{\r\n // //note: white-space here causes word-wrap\r\n // field: 'Comments', headerName: 'Comments', width: 380, cellStyle: { 'white-space': 'normal' }, menuTabs: ['filterMenuTab'], filter: 'text'\r\n //},\r\n ];\r\n\r\n //details for the event\r\n var detailColumnDefs = [\r\n //{ colId: 'EditLinksDetail', headerName: '', width: 100, cellRenderer: EditDetailLinksTemplate, menuTabs: [], },\r\n\r\n {\r\n headerName: 'Document Date',\r\n field: 'DocumentDate',\r\n width: 160,\r\n cellClass: 'event-record-cell',\r\n valueGetter: function (params) {\r\n return moment(params.node.data.DocumentDate)\r\n }, //date filter needs js date object\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.DocumentDate);\r\n },\r\n sort: 'desc',\r\n filter: 'date',\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n {\r\n headerName: 'Document Type',\r\n field: 'DocumentType',\r\n cellClass: 'event-record-cell',\r\n width: 150,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n {\r\n headerName: 'File Name',\r\n field: 'FileName',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n //{ headerName: 'Description', field: 'Description', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n {\r\n headerName: 'Description',\r\n field: 'Description',\r\n cellRenderer: ItemListCellTemplate,\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n //{ headerName: 'Author', field: 'Author', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n {\r\n headerName: 'Agency',\r\n field: 'EventAgency',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n //{ headerName: 'Author Agency', field: 'AuthorAgency', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n {\r\n headerName: 'Agency Division',\r\n field: 'AgencyDivision',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n {\r\n headerName: 'Agency Location',\r\n field: 'EventAgencyLocation',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n {\r\n headerName: 'Signatory Name',\r\n field: 'SignatoryName',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n {\r\n headerName: 'Signatory Title',\r\n field: 'SignatoryTitle',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n {\r\n headerName: 'Recipient Name',\r\n field: 'RecipientName',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n {\r\n headerName: 'RecipientTitle',\r\n field: 'RecipientTitle',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n {\r\n headerName: 'Recipient Agency',\r\n field: 'RecipientAgency',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n {\r\n headerName: 'Recipient Location',\r\n field: 'RecipientLocation',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n //{ headerName: 'Boundary', field: 'Boundary', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n {\r\n headerName: 'Boundary',\r\n field: 'Boundary',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n valueGetter: function (params) {\r\n return params.node.data.Boundary\r\n },\r\n valueFormatter: function (params) {\r\n // Note1: Sometimes the value can be null\r\n // Note2: The first time through, the JSON object is a string and must be converted to an array.\r\n // Note3: The second time through, the value is already an array, so doing JSON.parse will cause JavaScript to die.\r\n if (params.node.data.Boundary !== null) {\r\n if (!isArray(params.node.data.Boundary))\r\n params.node.data.Boundary = JSON.parse(params.node.data.Boundary);\r\n\r\n //var the_str = valueFormatterArrayToList(params.node.data.Boundary);\r\n //if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // the_str = the_str.replace(/\"/g, '');\r\n\r\n //var the_str = buildBulletedItemList(params.node.data.Boundary);\r\n //return the_str;\r\n }\r\n },\r\n cellRenderer: BulletedItemListCellTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n //{ headerName: 'Significant Area', field: 'SignificantArea', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n {\r\n headerName: 'Significant Area',\r\n field: 'SignificantArea',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n valueGetter: function (params) {\r\n return params.node.data.SignificantArea\r\n },\r\n valueFormatter: function (params) {\r\n if (params.node.data.SignificantArea !== null) {\r\n if (!isArray(params.node.data.SignificantArea))\r\n params.node.data.SignificantArea = JSON.parse(params.node.data.SignificantArea);\r\n\r\n // var the_str = valueFormatterArrayToList(params.node.data.SignificantArea);\r\n // if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // the_str = the_str.replace(/\"/g, '');\r\n // return the_str;\r\n\r\n }\r\n },\r\n cellRenderer: BulletedItemListCellTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n //{ headerName: 'Miscellaneous Context', field: 'MiscellaneousContext', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n {\r\n headerName: 'Miscellaneous Context',\r\n field: 'MiscellaneousContext',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n valueGetter: function (params) {\r\n return params.node.data.MiscellaneousContext\r\n },\r\n valueFormatter: function (params) {\r\n if (params.node.data.MiscellaneousContext !== null) {\r\n if (!isArray(params.node.data.MiscellaneousContext))\r\n params.node.data.MiscellaneousContext = JSON.parse(params.node.data.MiscellaneousContext);\r\n\r\n // var the_str = valueFormatterArrayToList(params.node.data.MiscellaneousContext);\r\n // if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // the_str = the_str.replace(/\"/g, '');\r\n // return the_str;\r\n }\r\n },\r\n cellRenderer: BulletedItemListCellTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n {\r\n headerName: 'Survey Number',\r\n field: 'SurveyNumber',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n {\r\n headerName: 'Survey Contract Number',\r\n field: 'SurveyContractNumber',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n {\r\n headerName: 'Surveyor Name',\r\n field: 'SurveyorName',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n {\r\n headerName: 'Survey Authorizing Agency',\r\n field: 'SurveyAuthorizingAgency',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n //{ headerName: 'Survey Dates', field: 'SurveyDates', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n {\r\n headerName: 'Survey Dates',\r\n field: 'SurveyDates',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n valueGetter: function (params) {\r\n return params.node.data.SurveyDates\r\n },\r\n valueFormatter: function (params) {\r\n //console.log(\"typeof params.node.data.SurveyDates = \" + typeof params.node.data.SurveyDates);\r\n //if ((params.node.data.SurveyDates !== null) && (typeof params.node.data.SurveyDates !== 'string')) {\r\n if (params.node.data.SurveyDates !== null) {\r\n try {\r\n params.node.data.SurveyDates = JSON.parse(params.node.data.SurveyDates);\r\n } catch (err) {\r\n // The value is not JSON (possibly already an array, or a non-JSON string)\r\n if (params.node.data.SurveyDates.indexOf(\";\") > -1) {\r\n params.node.data.SurveyDates = params.node.data.SurveyDates.split(\";\");\r\n params.node.data.SurveyDates.splice(-1, 1);\r\n\r\n }\r\n }\r\n\r\n //var the_str = valueFormatterArrayToList(params.node.data.Boundary);\r\n //if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // the_str = the_str.replace(/\"/g, '');\r\n\r\n //var the_str = buildBulletedItemList(params.node.data.Boundary);\r\n //return the_str;\r\n }\r\n },\r\n cellRenderer: BulletedItemListCellTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n //{ headerName: 'Description', field: 'Description', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n //{ headerName: 'TwnRngSec', field: 'TwnRngSec', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n {\r\n headerName: 'TwnRngSec',\r\n field: 'TwnRngSec',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n valueGetter: function (params) {\r\n return params.node.data.TwnRngSec\r\n },\r\n valueFormatter: function (params) {\r\n //console.log(\"typeof params.node.data.TwnRngSec = \" + typeof params.node.data.TwnRngSec);\r\n //if ((params.node.data.TwnRngSec !== null) && (typeof params.node.data.TwnRngSec !== 'string')) {\r\n if (params.node.data.TwnRngSec !== null) {\r\n try {\r\n params.node.data.TwnRngSec = JSON.parse(params.node.data.TwnRngSec);\r\n } catch (err) {\r\n // The value is not JSON (possibly already an array, or a non-JSON string)\r\n if (params.node.data.TwnRngSec.indexOf(\";\") > -1) {\r\n params.node.data.TwnRngSec = params.node.data.TwnRngSec.split(\";\");\r\n params.node.data.TwnRngSec.splice(-1, 1);\r\n\r\n }\r\n }\r\n\r\n //var the_str = valueFormatterArrayToList(params.node.data.Boundary);\r\n //if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // the_str = the_str.replace(/\"/g, '');\r\n\r\n //var the_str = buildBulletedItemList(params.node.data.Boundary);\r\n //return the_str;\r\n }\r\n\r\n },\r\n cellRenderer: BulletedItemListCellTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n {\r\n headerName: 'Number Items',\r\n field: 'NumberItems',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n {\r\n headerName: 'Page Number',\r\n field: 'PageNumber',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n {\r\n field: 'DateDiscovered',\r\n headerName: 'Date Discovered',\r\n valueGetter: function (params) {\r\n return moment(params.node.data.DateDiscovered)\r\n }, //date filter needs js date object\r\n width: 150,\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.DateDiscovered);\r\n },\r\n filter: 'date',\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n {\r\n headerName: 'Person Discovered',\r\n field: 'PersonDiscovered',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n //{ headerName: 'Reference', field: 'Reference', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n {\r\n headerName: 'Reference',\r\n field: 'Reference',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n valueGetter: function (params) {\r\n return params.node.data.Reference\r\n },\r\n valueFormatter: function (params) {\r\n //console.log(\"typeof params.node.data.Reference = \" + typeof params.node.data.Reference);\r\n if ((params.node !== null) && (params.node.data !== null) && (params.node.data.Reference !== null)) {\r\n try {\r\n params.node.data.Reference = JSON.parse(params.node.data.Reference);\r\n } catch (err) {\r\n // The value is not JSON (possibly already an array, or a non-JSON string)\r\n if (params.node.data.Reference.indexOf(\";\") > -1) {\r\n params.node.data.Reference = params.node.data.Reference.split(\";\");\r\n params.node.data.Reference.splice(-1, 1);\r\n\r\n }\r\n }\r\n }\r\n\r\n },\r\n cellRenderer: BulletedItemListCellTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n {\r\n //headerName: 'Comments', field: 'EventComments', cellClass: 'event-record-cell', width: 380, cellStyle: {\r\n headerName: 'Tasks',\r\n field: 'Tasks',\r\n cellClass: 'event-record-cell',\r\n width: 380,\r\n cellStyle: {\r\n 'white-space': 'normal'\r\n },\r\n valueGetter: function (params) {\r\n return params.node.data.Tasks\r\n },\r\n valueFormatter: function (params) {\r\n //console.log(\"typeof params.node.data.Tasks = \" + typeof params.node.data.Tasks);\r\n if (params.node.data.Tasks !== null) {\r\n try {\r\n params.node.data.Tasks = JSON.parse(params.node.data.Tasks);\r\n } catch (err) {\r\n // The value is not JSON (possibly already an array, or a non-JSON string)\r\n if (params.node.data.Tasks.indexOf(\";\") > -1) {\r\n params.node.data.Tasks = params.node.data.Tasks.split(\";\");\r\n params.node.data.Tasks.splice(-1, 1);\r\n\r\n }\r\n }\r\n }\r\n\r\n },\r\n cellRenderer: BulletedItemListCellTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n\r\n //{ headerName: 'EventFiles', field: 'EventFiles', cellClass: 'event-record-cell', cellRenderer: FileListCellTemplate },\r\n {\r\n headerName: 'File Attach',\r\n field: 'FileAttach',\r\n width: 330,\r\n cellRenderer: FileListCellTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n {\r\n headerName: 'Archive Id',\r\n field: 'EventArchiveId',\r\n cellClass: 'event-record-cell',\r\n width: 180,\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n //{ headerName: 'Documents', field: 'EventFiles', width: 330, cellRenderer: FileListCellTemplate, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n //{ headerName: 'By User', field: 'ByUserId', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], },\r\n {\r\n headerName: 'By User',\r\n field: 'EventByUserFullName',\r\n cellClass: 'event-record-cell',\r\n valueGetter: function (params) {\r\n return params.node.data.EventByUserFullName\r\n },\r\n valueFormatter: function (params) {\r\n //params.node.data.ByUserId = JSON.parse(params.node.data.ByUserId);\r\n //var the_str = getNameFromUserId(params.node.data.ByUserId, scope.Users);\r\n //if (typeof the_str === 'string') //backwards compatible - remove the quotes\r\n // the_str = the_str.replace(/\"/g, '');\r\n //return the_str;\r\n return params.node.data.EventByUserFullName;\r\n },\r\n width: 180, menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n ];\r\n\r\n //detail grid options correspondence events\r\n scope.olcDetailGridOptions = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: detailColumnDefs,\r\n onGridReady: function (params) {\r\n //setTimeout(function () { params.api.sizeColumnsToFit(); }, 0);\r\n },\r\n getRowHeight: function (params) {\r\n // Original way\r\n //var comment_length = (params.data.EventComments === null) ? 1 : params.data.EventComments.length;\r\n // Notes...\r\n // When calculating on a free-text item (like comments), calculate like this: 25 * (Math.floor(Tasks_length / 45) + 1), allowing 45 chars per line.\r\n // When calculating on an array type of thing (a,b,c), or (a;b;c), calculated like this: 25 * (getFilesArrayAsList(params.data.FileAttach).length), putting each item on its own line.\r\n //var Tasks_length = (params.data.Tasks === null) ? 1 : params.data.Tasks.length;\r\n //var Tasks_height = 25 * (Math.floor(Tasks_length / 45) + 1); //base our detail height on the Tasks (comments) field. We allow 45 chars per line.\r\n var Tasks_height = 25 * (getFilesArrayAsList(params.data.Tasks).length); //base our detail height on the Tasks (comments) field.\r\n var file_height = 25 * (getFilesArrayAsList(params.data.FileAttach).length); //count up the number of file lines we will have.\r\n var description_height = 25 * (getProjectItemsArrayAsTextList(params.data.Description).length);\r\n var boundary_height = 25 * (getProjectItemsArrayAsTextList(params.data.Boundary).length);\r\n var significantArea_height = 25 * (getProjectItemsArrayAsTextList(params.data.SignificantArea).length);\r\n var miscellaneoudContext_height = 25 * (getProjectItemsArrayAsTextList(params.data.MiscellaneousContext).length);\r\n var twnRngSec_height = 25 * (getProjectItemsArrayAsTextList(params.data.TwnRngSec).length);\r\n var reference_height = 25 * (getProjectItemsArrayAsTextList(params.data.Reference).length);\r\n var surveyDates_height = 25 * (getProjectItemsArrayAsTextList(params.data.SurveyDates).length);\r\n\r\n // Check the height required for the fields, to find the one that requires the most space.\r\n // Note:\r\n // If the user does not enter any of the items that we use to calculate the row height (below), the result will be zero.\r\n // Therefore, we must default the row height to the height for one row; if we set it to one or zero, the row will be there,\r\n // but the user/developer will not be able to see it.\r\n var maxHeight = 25; // Default the row height to one row to start with.\r\n if (Tasks_height > maxHeight)\r\n maxHeight = Tasks_height;\r\n\r\n if (file_height > maxHeight)\r\n maxHeight = file_height;\r\n\r\n if (description_height > maxHeight)\r\n maxHeight = description_height;\r\n\r\n if (boundary_height > maxHeight)\r\n maxHeight = boundary_height;\r\n\r\n if (significantArea_height > maxHeight)\r\n maxHeight = significantArea_height;\r\n\r\n if (miscellaneoudContext_height > maxHeight)\r\n maxHeight = miscellaneoudContext_height;\r\n\r\n if (twnRngSec_height > maxHeight)\r\n maxHeight = twnRngSec_height;\r\n\r\n if (reference_height > maxHeight)\r\n maxHeight = reference_height;\r\n\r\n if (surveyDates_height > maxHeight)\r\n maxHeight = surveyDates_height;\r\n\r\n //return (Tasks_height > file_height) ? Tasks_height : file_height;\r\n return maxHeight;\r\n },\r\n\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n\r\n scope.olcAgGridOptions = {\r\n\r\n suppressPropertyNamesCheck: true,\r\n masterDetail: true,\r\n detailCellRendererParams: {\r\n detailGridOptions: scope.olcDetailGridOptions,\r\n getDetailRowData: function (params) {\r\n params.successCallback(params.data.OlcEvents);\r\n },\r\n },\r\n\r\n animateRows: true,\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n // showToolPanel: false,\r\n columnDefs: scope.olcAgColumnDefs,\r\n rowData: null,\r\n //filterParams: { apply: true }, //enable option: doesn't do the filter unless you click apply\r\n //debug: true,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n console.log(\"selection changed fired!\");\r\n },\r\n\r\n selectedItems: [],\r\n\r\n onGridReady: function (params) {\r\n //params.api.sizeColumnsToFit();\r\n },\r\n\r\n /*getRowHeight: function (params) {\r\n var rowIsDetailRow = params.node.level === 1;\r\n // return dynamic height when detail row, otherwise return 25\r\n if (rowIsDetailRow) {\r\n return 300;\r\n } else {\r\n var comment_length = (params.data.Comments === null) ? 1 : params.data.Comments.length;\r\n return 25 * (Math.floor(comment_length / 45) + 1); //base our detail height on the comments field.\r\n }\r\n //return rowIsDetailRow ? 200 : 25;\r\n },\r\n */\r\n onRowDoubleClicked: function (row) {\r\n scope.olcAgGridOptions.api.collapseAll();\r\n row.node.setSelected(true);\r\n row.node.setExpanded(true);\r\n },\r\n onRowClicked: function (row) {\r\n row.node.setSelected(true);\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n\r\n };\r\n\r\n\r\n //if you are creating a new one for the project, the ce_row should be empty {}\r\n // if you are editing an existing one, send in the project and the ce_row.\r\n scope.openOlcEventForm = function (subproject, event_row) {\r\n //console.log(\"Inside openOlcEventForm...\")\r\n\r\n $rootScope.viewSubproject = scope.viewSubproject = subproject;\r\n //console.log(\"ok subproject set: \");\r\n //console.dir(scope.viewSubproject);\r\n\r\n scope.event_row = event_row;\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/olc/components/events/templates/modal-new-olcEvent.html',\r\n controller: 'ModalAddOlcEventCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n scope.removeOlcSubproject = function (subproject) {\r\n //console.log(\"Inside removeOlcSubproject, scope is next...\");\r\n\r\n if (!subproject)\r\n return;\r\n\r\n scope.viewSubproject = subproject;\r\n\r\n if (scope.viewSubproject.OlcEvents.length > 0) {\r\n alert(\"This project has associated OLC events. Those must be deleted first.\");\r\n } else {\r\n scope.verifyAction = \"Delete\";\r\n scope.verifyingCaller = \"OlcSubproject\";\r\n //console.log(\"scope.verifyAction = \" + scope.verifyAction + \", scope.verifyingCaller = \" + scope.verifyingCaller + \", scope.viewSubproject.Id = \" + scope.viewSubproject.Id);\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-verifyAction.html',\r\n controller: 'ModalVerifyActionCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n }\r\n };\r\n\r\n scope.postRemoveSubprojectUpdateGrid = function () {\r\n //the scope.subproject is the one we removed.\r\n console.log(\"ok - we removed one so update the grid...\");\r\n\r\n scope.subprojectList.forEach(function (item, index) {\r\n if (item.Id === scope.viewSubproject.Id) {\r\n scope.subprojectList.splice(index, 1);\r\n //console.log(\"ok we removed :\" + index);\r\n //console.dir(scope.subprojectList[index]);\r\n scope.olcAgGridOptions.api.setRowData(scope.subprojectList);\r\n //scope.corrAgGridOptions.api.redrawRows();\r\n //console.log(\"done reloading grid.\");\r\n }\r\n });\r\n };\r\n\r\n //called by the modal once the correspondence event is successfully saved.\r\n scope.postEditOlcEventUpdateGrid = function (edited_event) {\r\n console.log(\"editOlcEvent...\" + edited_event.Id + \" for subproject \" + edited_event.SubprojectId);\r\n\r\n //edit our event item and then reload the grid.\r\n scope.subprojectList.forEach(function (item, index) {\r\n if (item.Id === edited_event.SubprojectId) {\r\n item.EffDt = moment(new Date()).format() + \"\"; //touch the effdt to bump the sort. - this was already updated in the be\r\n item.OlcEvents.forEach(function (event_item, event_item_index) {\r\n if (event_item.Id === edited_event.Id) {\r\n angular.extend(event_item, edited_event); //replace the data for that item\r\n //console.log(\"OK!! we edited that correspondence event\");\r\n }\r\n });\r\n }\r\n });\r\n\r\n scope.olcAgGridOptions.api.setRowData(scope.subprojectList);\r\n\r\n //after we setRowData, the grid collapses our expanded item. we want it to re-expand that item and make sure it is visible.\r\n var the_node = scope.expandSubProjectById(edited_event.SubprojectId);\r\n if (the_node !== null)\r\n scope.olcAgGridOptions.api.ensureNodeVisible(the_node);\r\n\r\n console.log(\"done reloading grid after removing item.\");\r\n\r\n };\r\n\r\n //called by the modal once a olc event (edit) is saved\r\n scope.postAddOlcEventUpdateGrid = function (new_event) {\r\n //console.dir(new_event);\r\n console.log(\"saving OLC event for \" + new_event.SubprojectId);\r\n\r\n // EventByUserFullName is not stored; we set it so that we display the ByUser name, rather than the ByUserId.\r\n // Therefore, we must add it to new_event, before we add new_event to the Subproject list.\r\n new_event.EventByUserFullName = getNameFromUserId(new_event.ByUserId, scope.Users);\r\n\r\n var subproject = getById(scope.subprojectList, new_event.SubprojectId);\r\n\r\n if (subproject === undefined || subproject === null) { //TODO: the case where they create items before the project is saved?\r\n console.log(\"no subproject...\");\r\n } else {\r\n scope.subprojectList.forEach(function (item, index) {\r\n if (item.Id === subproject.Id) {\r\n item.EffDt = moment(new Date()).format() + \"\"; //touch the effdt to bump the sort - this was already updated in the be\r\n item.OlcEvents.push(new_event);\r\n //console.log(\"Added event \" + new_event.Id + \" to \" + subproject.Id);\r\n }\r\n });\r\n scope.olcAgGridOptions.api.setRowData(scope.subprojectList);\r\n\r\n //after we setRowData, the grid collapses our expanded item. we want it to re-expand that item and make sure it is visible.\r\n var the_node = scope.expandSubProjectById(subproject.Id);\r\n if (the_node !== null)\r\n scope.olcAgGridOptions.api.ensureNodeVisible(the_node);\r\n\r\n console.log(\"done reloading grid after adding or removing item.\");\r\n }\r\n };\r\n\r\n //returns the (last) node or null if none found.\r\n scope.expandSubProjectById = function (id_in) {\r\n var the_node = null;\r\n scope.olcAgGridOptions.api.forEachNode(function (node) {\r\n if (node.data.Id === id_in) {\r\n //console.log(\"Expanding! \" + id_in);\r\n node.setExpanded(true);\r\n the_node = node;\r\n }\r\n });\r\n return the_node;\r\n };\r\n\r\n //removes the correspondence event and then updates the grid\r\n scope.removeOlcEvent = function (subproject, event) {\r\n console.log(\"removeOlcEvent...\" + event.Id + \" for subproject \" + subproject.Id);\r\n\r\n if (confirm('Are you sure that you want to delete this OLC Event?')) {\r\n var promise = SubprojectService.removeOlcEvent(scope.project.Id, subproject.Id, event.Id, scope.DatastoreTablePrefix);\r\n\r\n promise.$promise.then(function () {\r\n //remove from our subprojectList and then reload the grid.\r\n scope.subprojectList.forEach(function (item, index) {\r\n if (item.Id === subproject.Id) {\r\n item.OlcEvents.forEach(function (event_item, event_item_index) {\r\n if (event_item.Id === event.Id) {\r\n item.OlcEvents.splice(event_item_index, 1);\r\n //console.log(\"OK!! we removed that OLC event\");\r\n }\r\n });\r\n }\r\n });\r\n scope.olcAgGridOptions.api.setRowData(scope.subprojectList);\r\n\r\n //after we setRowData, the grid collapses our expanded item. we want it to re-expand that item and make sure it is visible.\r\n var the_node = scope.expandSubProjectById(subproject.Id);\r\n if (the_node !== null)\r\n scope.olcAgGridOptions.api.ensureNodeVisible(the_node);\r\n\r\n console.log(\"done reloading grid after removing item.\");\r\n });\r\n }\r\n };\r\n\r\n //fired after a user saves a new or edited project.\r\n // we update the item in the main subproject array and then refresh the grid.\r\n scope.postSaveSubprojectUpdateGrid = function (the_promise) {\r\n //console.log(\"ok - we saved so update the grid...\");\r\n //var total = scope.subprojectList.length;\r\n var total = scope.subprojectList.length;\r\n var count = 0;\r\n var updated = false;\r\n\r\n if (total === 0) {\r\n the_promise.OlcEvents = [];\r\n the_promise.Files = [];\r\n scope.subprojectList.push(the_promise); //add that item\r\n scope.olcAgGridOptions.api.setRowData([]);\r\n scope.olcAgGridOptions.api.setRowData(scope.subprojectList);\r\n } else {\r\n scope.subprojectList.forEach(function (item, index) {\r\n if (item.Id === the_promise.Id) {\r\n updated = true;\r\n //console.log(\"ok we found a match! -- updating! before:\");\r\n //console.dir(scope.subprojectList[index]);\r\n\r\n if (the_promise.OlcEvents !== undefined)\r\n delete the_promise.OlcEvents; //remove this before the copy.\r\n\r\n angular.extend(scope.subprojectList[index], the_promise); //replace the data for that item\r\n //console.log(\"ok we found a match! -- updating! after:\");\r\n //console.dir(scope.subprojectList[index]);\r\n scope.olcAgGridOptions.api.redrawRows();\r\n //console.log(\"done reloading grid.\");\r\n }\r\n count++;\r\n if (count === total && updated === false) //if we get all done and we never found it, lets add it to the end.\r\n {\r\n //console.log(\"ok we found never a match! -- adding!\");\r\n the_promise.OlcEvents = [];\r\n the_promise.Files = [];\r\n scope.subprojectList.push(the_promise); //add that item\r\n scope.olcAgGridOptions.api.setRowData([]);\r\n scope.olcAgGridOptions.api.setRowData(scope.subprojectList);\r\n\r\n //console.log(\"done reloading grid.\");\r\n }\r\n });\r\n }\r\n console.log(\"updated the list and the grid... now refreshing the OLC lists\");\r\n //scope.refreshSubprojectLists(); //counties, etc.\r\n };\r\n\r\n //opens create olc subproject modal\r\n scope.createOlcSubproject = function () {\r\n scope.viewSubproject = null;\r\n scope.createNewSubproject = true;\r\n //scope.subprojectList = null;\r\n scope.subprojectOptions = null;\r\n //console.log(\"scope.createNewSubproject = \" + scope.createNewSubproject);\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/olc/components/events/templates/modal-create-subproject.html',\r\n controller: 'ModalCreateOlcSubprojectCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n /****** Working on this area ******/\r\n //refresh all of the project match lists\r\n scope.refreshSubprojectLists = function () {\r\n console.log(\"Inside events.js, scope.refreshSubprojectList...\");\r\n\r\n //scope.subprojectList.forEach(function (subp) {\r\n // console.log(\"subp is next...\");\r\n // console.dir(subp);\r\n // subp.OlcEvents.forEach(function (olcE) {\r\n // });\r\n //});\r\n\r\n\r\n scope.project.SubprojectFileList = SubprojectService.getOlcSubprojectFiles(scope.project.Id); //TODO: we already have this as scope.project.SubprojectFiles once the files load in project-detail.js\r\n\r\n };\r\n /**********************************/\r\n\r\n scope.editOlcSubproject = function (subproject) {\r\n //console.log(\"editOlcSubproject...\");\r\n\r\n $rootScope.viewSubproject = scope.viewSubproject = subproject;\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/olc/components/events/templates/modal-create-subproject.html',\r\n controller: 'ModalCreateOlcSubprojectCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n scope.search = function (p) {\r\n console.log(\"Inside scope.search...\");\r\n //location.path = \"#!/olceventssearch/\" + scope.project.Id;\r\n //window.location.replace(\"/olceventssearch/\" + scope.dataset.Id);\r\n var searchPageUrl = serverUrl + \"/olceventssearch/\" + scope.dataset.Id;\r\n //$location.path(\"/olceventssearch/\" + scope.dataset.Id).replace(); --This opens the Search page in the same tab\r\n window.open(searchPageUrl, '_blank'); //This opens the Search page in a new tab\r\n\r\n //var modalInstance = $uibModal.open({\r\n // templateUrl: 'app/private/olc/components/events/templates/events-search.html',\r\n // controller: 'OlcEventsSearchCtrl',\r\n // scope: scope, //very important to pass the scope along...\r\n //});\r\n };\r\n\r\n scope.redrawRows = function () {\r\n scope.olcAgGridOptions.api.setRowData([]);\r\n setTimeout(function () {\r\n scope.olcAgGridOptions.api.setRowData(scope.subprojectList);\r\n }, 4000);\r\n };\r\n\r\n scope.refreshCells = function () {\r\n scope.olcAgGridOptions.api.refreshCells();\r\n };\r\n\r\n scope.refreshMemory = function () {\r\n scope.olcAgGridOptions.api.refreshInMemoryRowModel('group');\r\n };\r\n\r\n //handle favorite toggle\r\n scope.isFavorite = $rootScope.Profile.isDatasetFavorite($routeParams.Id);\r\n scope.toggleFavorite = function () {\r\n UserService.toggleFavoriteDataset(scope, $rootScope);\r\n }\r\n\r\n }\r\n];\r\n\r\nexport default page_events;\r\n","import {PERMIT_PROJECTID} from \"../../../../config\";\r\n\r\nvar modal_permit_edit_filetype = ['$scope', '$uibModalInstance', 'ProjectService',\r\n function ($scope, $uibModalInstance, ProjectService){\r\n\r\n\t\t$scope.header_message = \"Edit File Type\";\r\n\r\n\t\t$scope.save = function(){\r\n\t\t\tvar saved_file = ProjectService.updateFile(PERMIT_PROJECTID, $scope.file_modal);\r\n\t\t\tsaved_file.$promise.then(function(){\r\n\t\t\t\t$uibModalInstance.close($scope.file_modal);\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t$scope.cancel = function(){\r\n\t\t\t$uibModalInstance.dismiss();\r\n\t\t};\r\n\t}\r\n];\r\n\r\nexport default modal_permit_edit_filetype;\r\n","//modal to add/edit violation event\r\nimport * as angular from 'angular';\r\nimport {modalFiles_setupControllerForFileChooserModal} from \"../../../../core/common/components/file/modal-files\";\r\nimport {EHS_PROJECTID} from \"../../../../config\";\r\n\r\nvar modal_edit_violationcode = ['$rootScope','$scope', '$uibModal','$uibModalInstance','GridService','Upload','ViolationService',\r\n\r\n function ($rootScope, $scope, $uibModal, $uibModalInstance, GridService, $upload, ViolationService) {\r\n\r\n $scope.violation = $scope.row; // parent violation\r\n $scope.row = $scope.code_modal; //code form -- note: this creates a LOCAL scope variable for the CODE that will go away when this scope goes away...\r\n\r\n $scope.Results = {\r\n SuccessMessage: null,\r\n FailureMessage: null,\r\n DoneSaving: false,\r\n };\r\n\r\n $scope.mode = ($scope.row.Id) ? \"edit\" : \"new\";\r\n\r\n if (!$scope.row.Files)\r\n $scope.row.Files = [];\r\n\r\n //set up for attaching files\r\n modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.ViolationFiles);\r\n\r\n $scope.save = function () {\r\n\r\n $scope.Results.DoneSaving = false;\r\n $scope.Results.IsSaving = true;\r\n\r\n $scope.row.ByUser = $scope.Profile.Id;\r\n\r\n var target = '/api/v1/violation/uploadfile';\r\n\r\n var data = {\r\n ProjectId: EHS_PROJECTID,\r\n SubprojectId: $scope.violation.Id, //parent violation id\r\n ItemId: $scope.row.Id //event id\r\n };\r\n\r\n if (Array.isArray($scope.row.Files)) {\r\n if ($scope.row.Files.length == 0)\r\n delete $scope.row.Files;\r\n else\r\n $scope.row.Files = angular.toJson($scope.row.Files);\r\n }\r\n\r\n var to_save = angular.copy($scope.row);\r\n\r\n /*\r\n if($scope.row.FilesToInclude){\r\n var new_files = [];\r\n $scope.row.FilesToInclude.forEach(function(file){\r\n console.dir(file);\r\n file = angular.fromJson(file);\r\n delete file.User;\r\n new_files.push(file);\r\n })\r\n to_save.FilesToInclude = new_files;\r\n }else{\r\n to_save.FilesToInclude = [];\r\n }\r\n*/\r\n //if this is a new event, save it first to get the ID\r\n if (!$scope.row.Id) {\r\n\r\n var new_event = ViolationService.saveViolationCode(to_save);\r\n\r\n new_event.$promise.then(function () {\r\n console.log(\"done and success saving event!\");\r\n $scope.row.Id = data.ItemId = new_event.Id;\r\n\r\n $scope.handleFilesToUploadRemove($scope.row, data, target, $upload, $rootScope, $scope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n });\r\n\r\n } else {\r\n $scope.handleFilesToUploadRemove($scope.row, data, target, $upload, $rootScope, $scope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n }\r\n\r\n };\r\n\r\n //callback that is called from modalFile to do the actual file removal (varies by module)\r\n $scope.modalFile_doRemoveFile = function (file_to_remove, saveRow) {\r\n //console.dir(file_to_remove);\r\n return ViolationService.deleteViolationFile(EHS_PROJECTID, $scope.violation.Id, saveRow.Id, file_to_remove);\r\n };\r\n\r\n //call back from save above once the files are done processing and we're ready to save the item\r\n $scope.modalFile_saveParentItem = function (saveRow) {\r\n\r\n //save again to update with the files we uploaded\r\n $scope.saved_event = ViolationService.saveViolationCode(saveRow);\r\n\r\n $scope.saved_event.$promise.then(function () {\r\n\r\n $scope.Results.DoneSaving = true;\r\n\r\n console.log(\"done and success updating the files\");\r\n $scope.Results.SuccessMessage = \"Saved.\";\r\n\r\n\r\n }, function (data) {\r\n console.error(\"failure!\");\r\n console.dir(data);\r\n $scope.Results.FailureMessage = \"There was a problem saving or sending notifications.\";\r\n $scope.Results.DoneSaving = false;\r\n });\r\n\r\n };\r\n\r\n $scope.close = function () {\r\n $uibModalInstance.close($scope.saved_event);\r\n };\r\n\r\n\r\n //fire validation for all columns when we load (if we are editing)\r\n if ($scope.mode === 'edit') {\r\n $scope.violationCodesGrid.columnDefs.forEach(function (field) {\r\n $scope.onHeaderEditingStopped(field);\r\n });\r\n }\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n $scope.getFileLabel = function(file){\r\n return file.Name + ((file.Description) ? \" (\"+file.Description+\")\" : \"\");\r\n }\r\n\r\n //setup an event listener that fires every time a header field is changed.\r\n $rootScope.$on('headerEditingStopped', function (event, field) {\r\n // anything?\r\n });\r\n\r\n}];\r\n\r\nexport default modal_edit_violationcode;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar admin_users = ['$scope', '$uibModal', 'CommonService',\r\n function (scope, $uibModal, CommonService) {\r\n\r\n if (!scope.Profile.isAdmin())\r\n angular.rootScope.go(\"/unauthorized\");\r\n\r\n scope.Users = CommonService.getAllUsers();\r\n\r\n scope.Users.$promise.then(function(){\r\n\r\n var agColumnDefs = [\r\n { field: 'Organization.Name', headerName: 'Organization', width: 150, menuTabs: ['filterMenuTab'], filter: true, sort: 'asc'},\r\n { field: 'Fullname', headerName: 'Name', width: 300, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n { field: 'Description', headerName: 'Description', width: 300, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n\r\n { headerName: \"Groups\", width: 120,\r\n cellRenderer: function(params){\r\n return params.data.Groups.length;\r\n }\r\n },\r\n { headerName: 'Status', width: 150, menuTabs: ['filterMenuTab'], filter: true,\r\n cellRenderer: function(params){\r\n return scope.getStatusText(params.data.Inactive);\r\n }\r\n },\r\n { field: 'LastLogin', headerName: 'Last login', width: 200, menuTabs: ['filterMenuTab'], filter: 'text',\r\n cellRenderer: function(params){\r\n return moment(params.data.LastLogin).format(\"MM/DD/YYYY HH:MM\");\r\n }\r\n },\r\n ];\r\n\r\n scope.agGridOptions = {\r\n // showToolPanel: false,\r\n suppressPropertyNamesCheck: true,\r\n rowSelection: 'single',\r\n selectedItem: null,\r\n columnDefs: agColumnDefs,\r\n rowData: scope.Users,\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onRowDoubleClicked: function (params) {\r\n scope.openManageUserModal(scope.agGridOptions.selectedItem);\r\n },\r\n onSelectionChanged: function (params) {\r\n scope.agGridOptions.selectedItem = scope.agGridOptions.api.getSelectedRows()[0];\r\n scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n console.dir(scope.agGridOptions.selectedItem);\r\n },\r\n };\r\n\r\n var ag_grid_div = document.querySelector('#users-grid') as HTMLElement; //get the container id...\r\n scope.ag_grid = new Grid(ag_grid_div, scope.agGridOptions); //bind the grid to it.\r\n\r\n\r\n });\r\n\r\n\r\n\r\n\r\n scope.openManageUserModal = function (user) {\r\n\r\n if (user)\r\n scope.user = user;\r\n else\r\n scope.user = null;\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-manage-user.html',\r\n controller: 'ModalManageUserCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n scope.getStatusText = function(inactive_status){\r\n return (inactive_status) ? \"Inactive\" : \"Active\"; //1=inactive\r\n }\r\n\r\n }\r\n\r\n];\r\n\r\nexport default admin_users;\r\n","import * as angular from 'angular';\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n// declare const agGrid: any;\r\n\r\n\r\nvar landing_page = ['$scope', '$rootScope', '$location', 'DatasetService','UserService','$window',\r\n function ($scope, $rootScope, $location, DatasetService, UserService, $window){\r\n $scope.myprojects = UserService.getMyProjectsList();\r\n\t\t $scope.mydatasets = UserService.getMyDatasetsList();\r\n $scope.searchResults = false;\r\n\r\n //if the user doesn't have any projects or datasets, bounce them to the projects page\r\n $scope.myprojects.$promise.then(function () {\r\n $scope.checkIfEmpty();\r\n })\r\n\r\n $scope.results = [];\r\n\r\n $scope.submitSearch = function(){\r\n $scope.results = [];\r\n $scope.searchResults = true;\r\n $scope.searching_search_term = $scope.search_term;\r\n\r\n $scope.search_projects = UserService.searchProjects($scope.search_term);\r\n $scope.search_projects.$promise.then(function(){\r\n $scope.search_projects.forEach(function(project){\r\n $scope.results.push(\r\n {\r\n \"Name\": project.Name,\r\n \"Description\": project.Description,\r\n \"Type\": \"Project\",\r\n \"Link\": \"/projects/\"+project.Id\r\n })\r\n })\r\n $scope.agGridOptions.api.setRowData($scope.results)\r\n })\r\n\r\n $scope.search_datasets = UserService.searchDatasets($scope.search_term);\r\n $scope.search_datasets.$promise.then(function(){\r\n $scope.search_datasets.forEach(function(dataset){\r\n DatasetService.configureDataset(dataset);\r\n $scope.results.push(\r\n {\r\n \"Name\": dataset.Name,\r\n \"Description\": dataset.Description,\r\n \"Link\": \"/\"+dataset.activitiesRoute +\"/\"+dataset.Id,\r\n \"Type\": \"Dataset\"\r\n })\r\n })\r\n $scope.agGridOptions.api.setRowData($scope.results)\r\n })\r\n\r\n $scope.search_files = UserService.searchFiles($scope.search_term);\r\n $scope.search_files.$promise.then(function(){\r\n $scope.search_files.forEach(function(file){\r\n $scope.results.push(\r\n {\r\n \"Name\": file.Name,\r\n \"Description\": file.Description,\r\n \"Link\": file.Link,\r\n \"Type\": \"File\"\r\n })\r\n })\r\n $scope.agGridOptions.api.setRowData($scope.results)\r\n })\r\n\r\n }\r\n\r\n $scope.clearSearch = function(){\r\n $scope.search_term = \"\";\r\n $scope.searchResults = false;\r\n $scope.results = [];\r\n $scope.searching_search_term = \"\";\r\n }\r\n\r\n var getFileLink = function (params) {\r\n return '';\r\n };\r\n\r\n var agColumnDefs = [\r\n { field: 'Type', headerName: 'Type', width: 200, menuTabs: ['filterMenuTab'], sort: 'asc', filter: true },\r\n { field: 'Name', headerName: 'Match', width: 400, cellRenderer: getFileLink, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n { field: 'Description', headerName: 'Description', width: 500, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n\r\n ];\r\n\r\n $scope.agGridOptions = {\r\n suppressPropertyNamesCheck: true,\r\n animateRows: true,\r\n // showToolPanel: false,\r\n columnDefs: agColumnDefs,\r\n rowData: $scope.results,\r\n //onGridReady: function (params) {\r\n // params.api.sizeColumnsToFit();\r\n //},\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n var ag_grid_div = document.querySelector('#search-grid') as HTMLElement; //get the container id...\r\n $scope.ag_grid = new Grid(ag_grid_div, $scope.agGridOptions); //bind the grid to it.\r\n\r\n\r\n $scope.mydatasets.$promise.then(function () {\r\n\r\n\t\t\tangular.forEach($scope.mydatasets, function(dataset, key){\r\n\t\t //need to bump this to get the route\r\n\t DatasetService.configureDataset(dataset);\r\n\t\t\t});\r\n\r\n $scope.checkIfEmpty();\r\n\r\n });\r\n\r\n $scope.checkIfEmpty = function () {\r\n //console.dir($scope.myprojects);\r\n //console.dir($scope.mydatasets);\r\n if ($scope.myprojects.$resolved && $scope.mydatasets.$resolved) {\r\n if($scope.myprojects.length == 0 && $scope.mydatasets.length == 0)\r\n angular.rootScope.go(\"/projects\");\r\n }\r\n };\r\n\r\n\r\n\r\n}];\r\n\r\nexport default landing_page;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {SDE_FEATURECLASS_TAXLOTQUERY} from \"../../../../config\";\r\nimport {getByField} from \"../../../../core/common/common-functions\";\r\n\r\nvar appraisal_map = ['$scope', '$route', '$routeParams', 'DatasetService', '$uibModal', '$location', '$window', '$rootScope', 'ProjectService',\r\n 'CommonService','UserService',\r\n \tfunction ($scope, $route, $routeParams, DatasetService, $uibModal, $location, $window, $rootScope, ProjectService,CommonService, UserService) {\r\n\t\t\tconsole.log(\"Inside appraisalMapController...\");\r\n\t\t\tconsole.log(\"$routeParams.Id = \" + $routeParams.Id);\r\n\r\n //TODO: a nicer global route authorization scheme...\r\n if (!$scope.Profile.hasRole(\"DECD\"))\r\n angular.rootScope.go(\"/unauthorized\");\r\n\r\n $scope.parcelShowing = false;\r\n $scope.MapSearchResults = { 'Message': \"\" };\r\n\r\n\r\n $scope.setParcel = function (parcel) {\r\n $scope.outAllotment = parcel;\r\n }\r\n\r\n // expose a method for handling clicks ON THE MAP - this is linked to from the Map.js directive\r\n // $scope.click = function(e){\r\n // $scope.map.loading = true;\r\n // $scope.clearAll();\r\n // $scope.map.reposition(); //this is important or else we end up with our map points off somehow.\r\n //\r\n // $scope.map.querySelectParcel(e.mapPoint, null, function(features){\r\n //\r\n // $scope.parcelShowing = false;\r\n // $scope.MapSearchResults.Message = \"\";\r\n //\r\n // if (features.length == 0) {\r\n // alert('No parcel found at that location.');\r\n // $scope.map.loading = false;\r\n // $scope.MapSearchResults.Message = \"Not found.\";\r\n // $scope.$apply(); //bump angular\r\n // return;\r\n // }\r\n //\r\n // $scope.map.addParcelToMap(features[0]);\r\n //\r\n // //show the infowindow\r\n // $scope.map.infoWindow.resize(250, 300);\r\n // $scope.map.infoWindow.setContent($scope.getInfoWindowContent(features[0]));\r\n // $scope.map.infoWindow.show($scope.map.selectedGraphic.geometry.getExtent().getCenter());\r\n //\r\n // var objectid = $scope.map.selectedFeature.attributes.OBJECTID;\r\n // console.log(\"Found objectid: \" + objectid);\r\n //\r\n // $scope.filterGridForParcel(features[0].attributes.PARCELID);\r\n //\r\n // $scope.parcelShowing = features[0].attributes.OBJECTID;\r\n //\r\n // $scope.$apply(); //bump angular\r\n //\r\n //\r\n //\r\n // });\r\n // };\r\n\r\n $scope.clearGrid = function() {\r\n $scope.agGridOptions.api.setFilterModel(null)\r\n $scope.agGridOptions.api.onFilterChanged();\r\n $scope.agGridOptions.api.deselectAll();\r\n $scope.MapSearchResults.Message = \"\";\r\n }\r\n\r\n $scope.clickedMap = function(parcel) {\r\n\r\n console.log(\"searching for : \" + $scope.SearchParcelId);\r\n $scope.SearchParcelId = parcel.PARCELID\r\n if (!$scope.SearchParcelId)\r\n return;\r\n\r\n $scope.SearchParcelId = parcel\r\n\r\n //clear\r\n // $scope.map.clearGraphics();\r\n // $scope.map.infoWindow.hide();\r\n $scope.clearEverything = true;\r\n $scope.clearGrid();\r\n // $scope.agGridOptions.api.setFilterModel(null)\r\n // $scope.agGridOptions.api.onFilterChanged();\r\n // $scope.agGridOptions.api.deselectAll();\r\n // $scope.MapSearchResults.Message = \"\";\r\n $scope.outAllotment = $scope.SearchParcelId;\r\n // $scope.findOnMap($scope.SearchParcelId);\r\n $scope.filterGridForParcel($scope.SearchParcelId);\r\n $scope.clearEverything = false;\r\n }\r\n\r\n $scope.searchParcel = function() {\r\n console.log(\"searching for : \" + $scope.SearchParcelId);\r\n\r\n if (!$scope.SearchParcelId)\r\n return;\r\n\r\n $scope.SearchParcelId = $scope.SearchParcelId.toUpperCase();\r\n\r\n //clear\r\n // $scope.map.clearGraphics();\r\n // $scope.map.infoWindow.hide();\r\n $scope.clearEverything = true;\r\n $scope.clearGrid();\r\n // $scope.agGridOptions.api.setFilterModel(null)\r\n // $scope.agGridOptions.api.onFilterChanged();\r\n // $scope.agGridOptions.api.deselectAll();\r\n // $scope.MapSearchResults.Message = \"\";\r\n $scope.outAllotment = $scope.SearchParcelId;\r\n // $scope.findOnMap($scope.SearchParcelId);\r\n $scope.filterGridForParcel($scope.SearchParcelId);\r\n $scope.clearEverything = false;\r\n }\r\n\r\n // MOVED TO PERMIT MAP DIRECTIVE\r\n // $scope.findOnMap = function (in_allotment) {\r\n // console.log(\"finding on map \" + in_allotment);\r\n // $scope.parcelShowing = false;\r\n // $scope.MapSearchResults.Message = \"\";\r\n //\r\n // $scope.map.queryMatchParcel(in_allotment, function (features) {\r\n // if (features.length == 0) {\r\n // console.log(\"allotment not found: \" + in_allotment);\r\n // $scope.MapSearchResults.Message = \"Not found on map.\";\r\n // }\r\n // else {\r\n // //that doesn't include geometry so we need to get it\r\n // $scope.map.querySelectParcel(null, features[0].attributes.OBJECTID, function (geo_features) {\r\n // $scope.map.addParcelToMap(geo_features[0]);\r\n // $scope.map.centerAndZoomToGraphic($scope.map.selectedGraphic, 2);\r\n //\r\n // //show the infowindow\r\n // $scope.map.infoWindow.resize(250, 300);\r\n // $scope.map.infoWindow.setContent($scope.getInfoWindowContent(features[0]));\r\n // $scope.map.infoWindow.show($scope.map.selectedGraphic.geometry.getExtent().getCenter());\r\n // });\r\n //\r\n // $scope.parcelShowing = features[0].attributes.OBJECTID;\r\n // }\r\n // $scope.$apply(); //bump angular\r\n // });\r\n //\r\n // }\r\n\r\n\r\n $scope.findSelection = function () {\r\n console.dir($scope.agGridOptions.selectedItems[0]);\r\n $scope.outAllotment = $scope.agGridOptions.selectedItems[0].Allotment;\r\n // moved to permit map directive\r\n // $scope.findOnMap($scope.agGridOptions.selectedItems[0].Allotment);\r\n }\r\n\r\n $scope.clearAll = function()\r\n {\r\n $scope.clearEverything = true;\r\n //$scope.activities = $scope.allActivities;\r\n //$scope.filteredActivities = undefined;\r\n // $scope.map.clearGraphics();\r\n // $scope.map.infoWindow.hide();\r\n $scope.agGridOptions.api.setFilterModel(null)\r\n $scope.agGridOptions.api.onFilterChanged();\r\n $scope.agGridOptions.api.deselectAll();\r\n $scope.SearchParcelId = \"\";\r\n $scope.parcelShowing = false;\r\n $scope.MapSearchResults.Message = \"\";\r\n $scope.clearEverything = false;\r\n };\r\n\r\n // MOVED TO PERMIT MAP DIRECTIVE\r\n // $scope.getInfoWindowContent = function(feature)\r\n // {\r\n // var attributes = feature.attributes;\r\n // //var location = getByField($scope.locationsArray,feature.attributes.OBJECTID,\"SdeObjectId\"); //is there already a location for this OBJECTID?\r\n //\r\n // //if(location)\r\n // // var allotment = getByField($scope.activities,location.Id,\"LocationId\"); //is there already an allotment associated with this location?\r\n //\r\n // $scope.map.infoWindow.setTitle(feature.attributes.PARCELID);\r\n //\r\n // var html = \"\";\r\n //\r\n // if(attributes.Address && attributes.Address.trim() != \"\")\r\n // html += \"Address: \" + attributes.Address + \"
\";\r\n // if(attributes.OWNERSHIPS)\r\n // html += \"Ownership: \" + attributes.OWNERSHIPS + \"
\";\r\n // if(attributes.ACRES_GIS)\r\n // html += \"Acres (GIS): \" + attributes.ACRES_GIS;\r\n //\r\n // //if(allotment && allotment.Id)\r\n // // html += \"
\";\r\n //\r\n // return html;\r\n //\r\n // };\r\n\r\n $scope.filterGridForParcel = function (parcel_id) {\r\n console.log(\" filtering for \" + parcel_id);\r\n var filter_component = $scope.agGridOptions.api.getFilterInstance('Allotment');\r\n filter_component.selectNothing();\r\n filter_component.selectValue(parcel_id);\r\n $scope.agGridOptions.api.onFilterChanged();\r\n //scope.dataGridOptions.api.deselectAll();\r\n\r\n };\r\n\r\n //to start an appraisal, we'll create a location for the selected parcel (with the OBJECTID from arcgis)\r\n // then hand off to data entry (edit) just like import.\r\n $scope.startAppraisal = function (parcel) {\r\n console.log(\"Find or create a location for : \" + $scope.parcelShowing);\r\n\r\n // var acres = $scope.map.selectedFeature.attributes.ACRES_GIS;\r\n var acres = $scope.parcel.attributes.ACRES_GIS\r\n //check to see if this location already exists in our project, if not create it.\r\n var project_location = getByField($scope.project.Locations, $scope.parcelShowing, \"SdeObjectId\");\r\n\r\n if (!project_location) {\r\n //create a new location from the map feature selected\r\n console.log(\"create a new location from the map feature selected\");\r\n var new_location = {\r\n //LocationTypeId: LOCATION_TYPE_APPRAISAL,\r\n SdeFeatureClassId: SDE_FEATURECLASS_TAXLOTQUERY,\r\n // SdeObjectId: $scope.map.selectedFeature.attributes.OBJECTID,\r\n // Label: $scope.map.selectedFeature.attributes.PARCELID,\r\n SdeObjectId: $scope.parcel.attributes.OBJECTID,\r\n Label: $scope.parcel.attributes.PARCELID,\r\n };\r\n\r\n var location = CommonService.saveNewProjectLocation($scope.project.Id, new_location);\r\n\r\n location.$promise.then(function () {\r\n\r\n console.log(\"done saving project location and success!\");\r\n console.dir(location);\r\n\r\n\r\n //bounce the user to the data entry form with that location selected.\r\n $rootScope.imported_header = {\r\n 'Activity': { 'ActivityDate': moment().format('YYYY-MM-DD'), 'LocationId': location.Id },\r\n 'Acres': acres,\r\n 'Allotment': location.Label,\r\n };\r\n\r\n $rootScope.imported_rows = {};\r\n\r\n $location.path(\"/dataentryform/\" + $scope.dataset.Id);\r\n });\r\n\r\n } else {\r\n console.log(\"found a location, so handing off to edit\");\r\n\r\n //bounce the user to the data entry form with that location selected.\r\n $rootScope.imported_header = {\r\n 'Activity': { 'ActivityDate': moment().format('YYYY-MM-DD'), 'LocationId': project_location.Id },\r\n 'Acres': acres,\r\n 'Allotment': project_location.Label\r\n };\r\n\r\n $rootScope.imported_rows = [];\r\n\r\n $location.path(\"/dataentryform/\"+$scope.dataset.Id);\r\n }\r\n }\r\n\t\t}\r\n];\r\n\r\nexport default appraisal_map;\r\n","// defines the crpp module\r\n\r\n// require([\r\n //controllers\r\nimport * as angular from 'angular';\r\nimport page_events from \"./components/events/events\";\r\nimport modal_migrate_olc_event from \"./components/events/modal-migrate-olc-event\";\r\nimport modal_add_olc_event from \"./components/events/modal-add-olc-event\";\r\nimport modal_create_olc_subproject from \"./components/events/modal-create-olc-subproject\";\r\n//import events_search from \"./components/events/events-search-bu\";\r\nimport events_search from \"./components/events/events-search\";\r\n\r\n// ], function () {\r\nconst olc_module = angular.module('OlcModule', ['ui.bootstrap', 'ngResource']);\r\n olc_module.controller('ModalAddOlcEventCtrl', modal_add_olc_event);\r\n olc_module.controller('ModalCreateOlcSubprojectCtrl', modal_create_olc_subproject);\r\n olc_module.controller('OlcEventsCtrl', page_events);\r\n olc_module.controller('OlcMigrateEventCtrl', modal_migrate_olc_event);\r\n olc_module.controller('OlcEventsSearchCtrl', events_search);\r\n// });\r\n\r\nexport default olc_module;\r\n\r\n","// defines cross-module functions, components and services that we can use in anywhere\r\nimport * as angular from 'angular';\r\nimport modal_quick_add_accuracycheck from \"./components/modals/modal-quick-add-accuracycheck\";\r\nimport modal_create_instrument from \"./components/modals/modal-create-instrument\";\r\nimport modal_bulk_rowqa_change from \"./components/modals/modal-bulk-rowqa-change\";\r\nimport modal_save_success from \"./components/modals/modal-save-success\";\r\nimport modal_create_fisherman from \"./components/modals/modal-create-fisherman\";\r\nimport modal_exportfile from \"./components/file/modal-exportfile\";\r\nimport modal_link_field from \"./components/modals/modal-link-field\";\r\nimport modal_verify_action from \"./components/modals/modal-verify-action\";\r\nimport modal_invalid_operation from \"./components/modals/modal-invalid-operation\";\r\nimport modal_feedback from \"./components/feedback/feedback\";\r\nimport modal_select_grid from \"./components/modals/modal-select-grid\";\r\nimport modal_files from \"./components/file/modal-files\";\r\nimport modal_waypoint_files from \"./components/file/modal-waypoint-file\";\r\nimport adultweir_chartservice from \"./components/chart/adultweir-chartservice\";\r\nimport artificialproduction_chartservice from \"./components/chart/artificialproduction-chartservice\";\r\nimport bsample_chartservice from \"./components/chart/bsample-chartservice\";\r\nimport creelsurvey_chartservice from \"./components/chart/creelsurvey-chartservice\";\r\nimport electrofishing_chartservice from \"./components/chart/electrofishing-chartservice\";\r\nimport snorkelfish_chartservice from \"./components/chart/snorkelfish-chartservice\";\r\nimport waterquality_chartservice from \"./components/chart/waterquality-chartservice\";\r\nimport watertemp_chartservice from \"./components/chart/watertemp-chartservice\";\r\nimport chart_services from \"./components/chart/chart-services\";\r\nimport {\r\n BING_KEY,\r\n datasetActivitiesBasemapConfig,\r\n defaultLayer,\r\n //MapPointsLayer,\r\n proxyUrl,\r\n PUBLIC_OR_PRIVATE,\r\n ENVIRONMENT,\r\n CDMS_POINTS_PROD_URL,\r\n CDMS_POINTS_TEST_URL,\r\n serviceUrl\r\n} from \"../../config\";\r\nimport common_service from \"./services/common-service\";\r\nimport service_utilities from \"./services/service-utilities\";\r\nimport logger_service from \"./services/logger\";\r\nimport dataset_service from \"../datasets/services/dataset-service\";\r\nimport datasets_module from \"../datasets/datasets-module\";\r\nimport dataset_activities_list from \"../datasets/components/dataset-activities-list/dataset-activities-list\";\r\nimport {getOrderedObjectList, makeObjectsFromValues} from \"./common-functions\";\r\nimport * as moment from \"moment\";\r\n// import {loadModules} from \"esri-loader\";\r\nimport {\r\n convertToNumberDirective,\r\n ctuirAccuracyCheckSelectFieldDirective,\r\n ctuirActivityDateFieldDirective, ctuirActivityTextFieldDirective,\r\n ctuirCheckboxFieldDirective,\r\n ctuirCurrencyFieldDirective,\r\n ctuirDateFieldDirective,\r\n ctuirEastingFieldDirective, ctuirFileFieldDirective,\r\n ctuirFishermanSelectFieldDirective,\r\n ctuirHiddenFieldDirective,\r\n ctuirInstrumentSelectFieldDirective, ctuirLinkFieldDirective, ctuirLocationSelectFieldDirective,ctuirPermitLocationSelectFieldDirective,\r\n ctuirMultiselectCheckboxFieldDirective, ctuirMultiselectFieldDirective, ctuirNorthingFieldDirective,\r\n ctuirNumberFieldDirective,\r\n ctuirPhoneNumberFieldDirective,\r\n ctuirPostAccuracyCheckSelectFieldDirective,\r\n ctuirQaStatusCommentFieldDirective, ctuirQaStatusSelectFieldDirective,\r\n ctuirRadioFieldDirective,\r\n ctuirSelectFancyFieldDirective, ctuirSelectFieldDirective, ctuirSelectGridFieldDirective,\r\n ctuirSelectGroupFieldFunctionDirective,\r\n ctuirSelectNumberFieldDirective,\r\n ctuirSelectWithBetterFilterFieldDirective,\r\n ctuirTempWaypointFileFieldDirective,\r\n ctuirTextareaFieldDirective,\r\n ctuirTextFieldDirective,\r\n ctuirTimeFieldDirective,\r\n ctuirTimezoneSelectFieldDirective,\r\n multiselectDirective,\r\n uiSelectWrapperDirective\r\n} from \"./directives/field-definitions\";\r\nimport checklist_model_directive from \"./directives/checklists\";\r\nimport uiCurrencyDirective from \"./directives/currency\";\r\nimport {projectRoleDirective} from \"./directives/roles\";\r\nimport {\r\n integerDirective,\r\n integerfourDirective,\r\n sevenfloat,\r\n sixfloat,\r\n smartfloat,\r\n textRequired\r\n} from \"./directives/validation\";\r\nimport MapView from \"@arcgis/core/views/MapView\";\r\n\r\n// import {\r\n// convertToNumberDirective,\r\n// ctuirAccuracyCheckSelectFieldDirective,\r\n// ctuirActivityDateFieldDirective,\r\n// ctuirActivityTextFieldDirective,\r\n// ctuirCheckboxFieldDirective,\r\n// ctuirCurrencyFieldDirective,\r\n// ctuirDateFieldDirective,\r\n// ctuirEastingFieldDirective, ctuirFileFieldDirective,\r\n// ctuirFishermanSelectFieldDirective,\r\n// ctuirHiddenFieldDirective,\r\n// ctuirInstrumentSelectFieldDirective, ctuirLinkFieldDirective,\r\n// ctuirLocationSelectFieldDirective, ctuirMultiselectCheckboxFieldDirective,\r\n// ctuirMultiselectFieldDirective,\r\n// ctuirNorthingFieldDirective,\r\n// ctuirNumberFieldDirective,\r\n// ctuirPhoneNumberFieldDirective,\r\n// ctuirPostAccuracyCheckSelectFieldDirective,\r\n// ctuirQaStatusCommentFieldDirective,\r\n// ctuirQaStatusSelectFieldDirective, ctuirRadioFieldDirective,\r\n// ctuirSelectFancyFieldDirective,\r\n// ctuirSelectFieldDirective,\r\n// ctuirSelectGridFieldDirective, ctuirSelectGroupFieldFunctionDirective,\r\n// ctuirSelectNumberFieldDirective, ctuirSelectWithBetterFilterFieldDirective, ctuirTempWaypointFileFieldDirective,\r\n// ctuirTextareaFieldDirective,\r\n// // ctuirTextFieldDirective,\r\n// ctuirTimeFieldDirective,\r\n// ctuirTimezoneSelectFieldDirective, multiselectDirective, testtttt, uiSelectWrapperDirective\r\n// } from \"./directives/field-definitions\";\r\n//I wish you could just specify a directory and it would find the files and load them, but\r\n// requirejs doesn't work that way so we have to reference each one by hand. -kb\r\n/*\r\nrequire([\r\n*/\r\n//\r\n// //loads a variety of common functions\r\n// 'core/common/common-functions',\r\n//\r\n// //loads services used by other modules\r\n// 'core/common/services/common-service',\r\n// 'core/common/services/logger',\r\n// 'core/common/services/service-utilities',\r\n// 'core/common/services/wish',\r\n//\r\n// //loads the common controllers\r\n// 'core/common/components/modals/modal-quick-add-accuracycheck',\r\n// 'core/common/components/modals/modal-quick-add-characteristic',\r\n// 'core/common/components/modals/modal-create-instrument',\r\n// 'core/common/components/modals/modal-bulk-rowqa-change',\r\n// 'core/common/components/modals/modal-save-success',\r\n// 'core/common/components/modals/modal-create-fisherman',\r\n// 'core/common/components/modals/modal-link-field',\r\n// 'core/common/components/modals/modal-verify-action',\r\n// 'core/common/components/modals/modal-invalid-operation',\r\n// 'core/common/components/modals/modal-select-grid',\r\n// 'core/common/components/feedback/feedback',\r\n//\r\n// //'core/common/components/file/modal-file-add',\r\n// //'core/common/components/file/modal-file-delete',\r\n// 'core/common/components/file/modal-files',\r\n// 'core/common/components/file/modal-exportfile',\r\n// 'core/common/components/file/modal-waypoint-file',\r\n// 'core/common/components/grid/cell-editors',\r\n// 'core/common/components/grid/cell-validation',\r\n// 'core/common/components/grid/cell-control-types',\r\n// 'core/common/components/grid/grid-service',\r\n//\r\n// //load other common directives\r\n// 'core/common/directives/checklists',\r\n// 'core/common/directives/feature-layer',\r\n// 'core/common/directives/map',\r\n// 'core/common/directives/field-definitions',\r\n// 'core/common/directives/roles',\r\n// 'core/common/directives/validation',\r\n// 'core/common/directives/currency', // ui-currency attribute for the magic\r\n//\r\n\r\n\r\n// ], function () {\r\n//add the controllers and services to the module once the files are loaded!\r\nconst common_module = angular.module('CommonModule', ['ui.bootstrap', 'ngResource']);\r\n//controllers\r\ncommon_module.controller('ModalQuickAddAccuracyCheckCtrl', modal_quick_add_accuracycheck);\r\n//common_module.controller('ModalQuickAddCharacteristicCtrl', modal_quick_add_characteristic); //kb 11/1 - this is not used anywhere...\r\ncommon_module.controller('ModalCreateInstrumentCtrl', modal_create_instrument);\r\ncommon_module.controller('ModalBulkRowQAChangeCtrl', modal_bulk_rowqa_change);\r\ncommon_module.controller('ModalSaveSuccess', modal_save_success);\r\ncommon_module.controller('ModalCreateFishermanCtrl', modal_create_fisherman);\r\ncommon_module.controller('ModalExportController', modal_exportfile);\r\ncommon_module.controller('LinkModalCtrl', modal_link_field);\r\ncommon_module.controller('ModalVerifyActionCtrl', modal_verify_action);\r\ncommon_module.controller('ModalInvalidOperation', modal_invalid_operation);\r\ncommon_module.controller('FeedbackController', modal_feedback);\r\ncommon_module.controller('ModalSelectGrid', modal_select_grid);\r\n\r\n//common_module.controller('FileAddModalCtrl', modal_file_add);\r\n//common_module.controller('FileDeleteModalCtrl', modal_file_delete);\r\ncommon_module.controller('FileModalCtrl', modal_files);\r\ncommon_module.controller('WaypointFileModalCtrl', modal_waypoint_files);\r\n\r\n// field definition directives\r\ncommon_module.directive('ctuirTextField', ctuirTextFieldDirective);\r\ncommon_module.directive('ctuirCurrencyField', ctuirCurrencyFieldDirective);\r\ncommon_module.directive('ctuirPhoneNumberField', ctuirPhoneNumberFieldDirective);\r\ncommon_module.directive('ctuirHiddenField', ctuirHiddenFieldDirective);\r\ncommon_module.directive('ctuirSelectGridField', ctuirSelectGridFieldDirective);\r\ncommon_module.directive('ctuirTextareaField', ctuirTextareaFieldDirective);\r\ncommon_module.directive('ctuirDateField', ctuirDateFieldDirective);\r\ncommon_module.directive('ctuirActivityTextField', ctuirActivityTextFieldDirective);\r\ncommon_module.directive('ctuirActivityDateField', ctuirActivityDateFieldDirective);\r\ncommon_module.directive('ctuirLocationSelectField', ctuirLocationSelectFieldDirective);\r\ncommon_module.directive('ctuirPermitLocationSelectField', ctuirPermitLocationSelectFieldDirective);\r\ncommon_module.directive('ctuirTimezoneSelectField', ctuirTimezoneSelectFieldDirective);\r\ncommon_module.directive('ctuirInstrumentSelectField', ctuirInstrumentSelectFieldDirective);\r\ncommon_module.directive('ctuirFishermanSelectField', ctuirFishermanSelectFieldDirective);\r\ncommon_module.directive('ctuirAccuracyCheckSelectField', ctuirAccuracyCheckSelectFieldDirective);\r\ncommon_module.directive('ctuirPostAccuracyCheckSelectField', ctuirPostAccuracyCheckSelectFieldDirective);\r\ncommon_module.directive('ctuirQaStatusSelectField', ctuirQaStatusSelectFieldDirective);\r\ncommon_module.directive('ctuirQaStatusCommentField', ctuirQaStatusCommentFieldDirective);\r\ncommon_module.directive('ctuirTimeField', ctuirTimeFieldDirective);\r\ncommon_module.directive('ctuirEastingField', ctuirEastingFieldDirective);\r\ncommon_module.directive('ctuirNorthingField', ctuirNorthingFieldDirective);\r\ncommon_module.directive('ctuirNumberField', ctuirNumberFieldDirective);\r\ncommon_module.directive('ctuirSelectField', ctuirSelectFieldDirective);\r\ncommon_module.directive('ctuirSelectWithBetterFilterField', ctuirSelectWithBetterFilterFieldDirective);\r\ncommon_module.directive('ctuirSelectFancyField', ctuirSelectFancyFieldDirective);\r\ncommon_module.directive('ctuirSelectGroupField', ctuirSelectGroupFieldFunctionDirective);\r\ncommon_module.directive('ctuirSelectNumberField', ctuirSelectNumberFieldDirective);\r\ncommon_module.directive('ctuirMultiselectField', ctuirMultiselectFieldDirective);\r\ncommon_module.directive('ctuirMultiselectCheckboxField', ctuirMultiselectCheckboxFieldDirective);\r\ncommon_module.directive('ctuirFileField', ctuirFileFieldDirective);\r\ncommon_module.directive('ctuirTempWaypointFileField', ctuirTempWaypointFileFieldDirective);\r\ncommon_module.directive('ctuirLinkField', ctuirLinkFieldDirective);\r\ncommon_module.directive('ctuirRadioField', ctuirRadioFieldDirective);\r\ncommon_module.directive('ctuirCheckboxField', ctuirCheckboxFieldDirective);\r\ncommon_module.directive('uiSelectWrapper', uiSelectWrapperDirective);\r\ncommon_module.directive('multiselect', multiselectDirective);\r\ncommon_module.directive('convertToNumber', convertToNumberDirective);\r\n\r\n// checklists directive\r\ncommon_module.directive('checklistModel', checklist_model_directive);\r\n\r\n// currency directive\r\ncommon_module.directive('uiCurrency', uiCurrencyDirective);\r\n\r\n// map and featureLayer directives\r\n// common_module.directive('esriFeatureLayer', featureLayerDirective);\r\n// common_module.directive('esriMap', mapDirective);\r\n//\r\n// roles directives\r\ncommon_module.directive('projectRole', projectRoleDirective);\r\n\r\n//validation directives\r\ncommon_module.directive('integer', integerDirective);\r\ncommon_module.directive('integerfour', integerfourDirective);\r\ncommon_module.directive('smartfloat', smartfloat)\r\ncommon_module.directive('sixfloat', sixfloat);\r\ncommon_module.directive('sevenfloat', sevenfloat)\r\ncommon_module.directive('textrequired', textRequired);\r\n\r\n\r\ncommon_module.service('CommonService', common_service);\r\ncommon_module.service('ServiceUtilities', service_utilities);\r\ncommon_module.service('Logger', logger_service);\r\n// common_module.service('ChartService', chart_services);\r\n\r\n\r\n\r\n// });\r\n\r\n//\r\n// //We load these asych with the others\r\n// require([\r\n// //loads chart services\r\n// 'core/common/components/chart/adultweir-chartservice',\r\n// 'core/common/components/chart/artificialproduction-chartservice',\r\n// 'core/common/components/chart/bsample-chartservice',\r\n// 'core/common/components/chart/creelsurvey-chartservice',\r\n// 'core/common/components/chart/electrofishing-chartservice',\r\n// 'core/common/components/chart/snorkelfish-chartservice',\r\n// 'core/common/components/chart/waterquality-chartservice',\r\n// 'core/common/components/chart/watertemp-chartservice',\r\n//\r\n// ], function () {\r\n\r\n//there is a chartservice for each dataset.\r\n// NOTE: If you are creating a new dataset, you'll want to make a chartservice for it.\r\ncommon_module.service('AdultWeir_ChartService', adultweir_chartservice);\r\ncommon_module.service('ArtificialProduction_ChartService', artificialproduction_chartservice);\r\ncommon_module.service('BSample_ChartService', bsample_chartservice);\r\ncommon_module.service('CreelSurvey_ChartService', creelsurvey_chartservice);\r\ncommon_module.service('ElectroFishing_ChartService', electrofishing_chartservice);\r\ncommon_module.service('SnorkelFish_ChartService', snorkelfish_chartservice);\r\ncommon_module.service('WaterQuality_ChartService', waterquality_chartservice);\r\ncommon_module.service('WaterTemp_ChartService', watertemp_chartservice);\r\n\r\n//and then we only load this one after the others are done...\r\n// require([\r\n// 'core/common/components/chart/chart-services', //the wrapper for them all...\r\n// ], function () {\r\n//the master chartservice that exposes all of the other dataset-specific chart services\r\ncommon_module.service('ChartService', chart_services);\r\n\r\nvar TheFeatureServiceUrl = \"\";\r\nif (ENVIRONMENT === \"prod\")\r\n TheFeatureServiceUrl = CDMS_POINTS_PROD_URL;\r\nelse\r\n TheFeatureServiceUrl = CDMS_POINTS_TEST_URL;\r\n\r\n// });\r\n//\r\n// loadModules([\r\n// // 'app',\r\n// 'esri/map',\r\n// 'esri/views/MapView',\r\n// 'esri/geometry/Point',\r\n// 'esri/dijit/InfoWindow',\r\n// 'esri/InfoTemplate',\r\n// 'esri/dijit/BasemapLayer',\r\n// 'esri/dijit/BasemapGallery',\r\n// 'esri/dijit/Basemap',\r\n// 'esri/virtualearth/VETiledLayer'\r\n// ]).then(([Map, MapView]) => {\r\n\r\n\r\n /*\r\n \r\n \r\n \r\n */\r\n\r\n // common_module.getLocationMapLayer = function () {\r\n // const map = new Map()\r\n // var mapOptions = {\r\n // center: [-118.45, 45.56],\r\n // zoom: (10),\r\n // map: map,\r\n // spatialReference: {\r\n // wkid: 102100 //mercator\r\n // //wkid:26911 //nad_1983\r\n // //\"wkt\":'PROJCS[\"NAD83(NSRS2007) / UTM zone 11N\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"D_\",SPHEROID[\"GRS_1980\",6378137,298.257222101]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]]'\r\n // }\r\n // };\r\n // let mapView = new MapView({\r\n // center: [-118.45, 45.56],\r\n // zoom: (10),\r\n // map: map,\r\n // spatialReference: {\r\n // wkid: 102100 //mercator\r\n // //wkid:26911 //nad_1983\r\n // //\"wkt\":'PROJCS[\"NAD83(NSRS2007) / UTM zone 11N\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"D_\",SPHEROID[\"GRS_1980\",6378137,298.257222101]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]]'\r\n // }\r\n // };);\r\n // // declare our map\r\n //\r\n // if (ENVIRONMENT == \"prod\")\r\n // map.locationLayer = map.layers.add(CDMS_POINTS_PROD_URL);\r\n // else\r\n // map.locationLayer = map.layers.add(CDMS_POINTS_TEST_URL);\r\n //\r\n // return mapView;\r\n // };\r\n\r\n\r\n// });\r\n\r\ncommon_module.factory('GetMetadataPropertiesForEntity', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/metadata/GetMetadataPropertiesForEntity');\r\n}]);\r\n\r\ncommon_module.factory('GetMetadataEntities', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/metadata/GetMetadataEntities');\r\n}]);\r\n\r\ncommon_module.factory('GetMetadataProperty', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/metadata/GetMetadataProperty');\r\n}]);\r\n\r\ncommon_module.factory('GetLookupItems', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lookuptable/getitems', {}, {\r\n query: {method: 'GET', isArray: true}\r\n });\r\n}]);\r\n\r\ncommon_module.factory('GetSelectGridData', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/table/GetSelectGridData', {}, {\r\n query: {method: 'GET', params: {}, isArray: true}\r\n });\r\n}]);\r\n\r\ncommon_module.factory('SaveLookupTableItem', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lookuptable/saveitem');\r\n}]);\r\n\r\ncommon_module.factory('SaveMetadataProperty', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/metadata/SaveMetadataProperty');\r\n}]);\r\n\r\ncommon_module.factory('DeleteMetadataProperty', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/metadata/DeleteMetadataProperty');\r\n}]);\r\n\r\ncommon_module.factory('SaveDatasetMetadata', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/metadata/setdatasetmetadata');\r\n}]);\r\n\r\ncommon_module.factory('GetMetadataFor', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/metadata/getmetadatafor', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\ncommon_module.factory('GetWaterBodies', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/list/getwaterbodies');\r\n}]);\r\n\r\ncommon_module.factory('GetSources', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/list/getsources');\r\n}]);\r\n\r\ncommon_module.factory('GetTimeZones', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/list/gettimezones');\r\n}]);\r\n\r\ncommon_module.factory('GetDepartments', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/department/getdepartments');\r\n}]);\r\n\r\ncommon_module.factory('GetOrgDepartments', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/department/getorgdepartments');\r\n}]);\r\n\r\ncommon_module.factory('GetOrganizations', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/organization/getorganizations');\r\n}]);\r\n\r\ncommon_module.factory('GetGroups', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/group/getgroups');\r\n}]);\r\n\r\ncommon_module.factory('GetOrgGroups', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/group/getorggroups');\r\n}]);\r\n\r\ncommon_module.factory('GetOrgAdministrators', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/organization/getorgadministrators');\r\n}]);\r\n\r\ncommon_module.factory('Users', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/user/getusers', {}, {\r\n query: {method: 'GET', params: {}, isArray: true}\r\n });\r\n}]);\r\n\r\ncommon_module.factory('GetOrgUsers', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/user/getorgusers', {}, {\r\n query: {method: 'GET', params: {}, isArray: true}\r\n });\r\n}]);\r\n\r\ncommon_module.factory('GetAllUsers', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/user/getallusers', {}, {\r\n query: {method: 'GET', params: {}, isArray: true}\r\n });\r\n}]);\r\n\r\ncommon_module.factory('SaveUser', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/user/saveuser');\r\n}]);\r\n\r\ncommon_module.factory('SaveProjectLocation', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/location/saveprojectlocation');\r\n}]);\r\n\r\ncommon_module.factory('UpdateLocationAction', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/location/updatelocation');\r\n}]);\r\n\r\ncommon_module.factory('DeleteLocationAction', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/location/deletelocation');\r\n}]);\r\n\r\ncommon_module.factory('DeleteLocations', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/location/deletelocations', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\ncommon_module.factory('GetAllPossibleDatastoreLocations', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/datastore/getdatastorelocations');\r\n}]);\r\n\r\ncommon_module.factory('SaveFeedback', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/user/SaveFeedback');\r\n}]);\r\n\r\ncommon_module.factory('DeleteLookupItem', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/lookuptable/DeleteLookupItem');\r\n}]);\r\n//\r\n\r\n\r\n// common_module.directive('ctuirTextField',\r\n// function(){\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-text.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirCurrencyField',\r\n// function(){\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-currency.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirPhoneNumberField',\r\n// function(){\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-phone-number.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirHiddenField',\r\n// function(){\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-hidden.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n//\r\n// common_module.directive('ctuirSelectGridField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select-grid.html',\r\n// controller:['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n// $scope.selectOptions = getOrderedObjectList(makeObjectsFromValues($scope.field.DatastoreId+$scope.field.DbColumnName, $scope.field.PossibleValues));\r\n// }],\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirTextareaField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-textarea.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirDateField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-date.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirActivityTextField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-activity-text.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n//\r\n// common_module.directive('ctuirActivityDateField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-activity-date.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirLocationSelectField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-location-select.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirTimezoneSelectField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-timezone-select.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirInstrumentSelectField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-instrument-select.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirFishermanSelectField',\r\n// function () {\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-fisherman-select.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirAccuracyCheckSelectField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-accuracy-check-select.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirPostAccuracyCheckSelectField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-post-accuracy-check-select.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirQaStatusSelectField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-qa-status-select.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n//\r\n// common_module.directive('ctuirQaStatusCommentField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-qa-status-comment.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n//\r\n// common_module.directive('ctuirTimeField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-time.html',\r\n// restrict: 'E',\r\n// controller: function($scope, $element, $attrs) {\r\n// //console.dir(\"have a time!\");\r\n// //console.dir($scope.field);\r\n// //console.dir($scope.row);\r\n// if (typeof $scope.row[$scope.field.DbColumnName] === 'string') {\r\n// try {\r\n// var time_only = moment($scope.row[$scope.field.DbColumnName]).format('HH:mm');\r\n// $scope.row[$scope.field.DbColumnName] = time_only;\r\n// }catch(e){\r\n// console.log(\" Could not convert \"+ $scope.field.DbColumnName + \" values \" + $scope.row[$scope.field.DbColumnName] + \" to a date.\");\r\n// }\r\n// }\r\n// }\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirEastingField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-easting.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n// });\r\n//\r\n// common_module.directive('ctuirNorthingField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-northing.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n// });\r\n//\r\n// common_module.directive('ctuirNumberField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-number.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirSelectField',\r\n// function () {\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select.html',\r\n// restrict: 'E',\r\n// controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n// $scope.selectOptions = getOrderedObjectList(makeObjectsFromValues($scope.field.DatastoreId+$scope.field.DbColumnName, $scope.field.PossibleValues));\r\n// }]\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirSelectWithBetterFilterField',\r\n// function () {\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select-with-better-filter.html',\r\n// restrict: 'E',\r\n// controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n// $scope.selectOptions = getOrderedObjectList(makeObjectsFromValues($scope.field.DatastoreId+$scope.field.DbColumnName, $scope.field.PossibleValues));\r\n// }]\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirSelectFancyField',\r\n// function () {\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select-fancy.html',\r\n// restrict: 'E',\r\n// controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n// $scope.selectOptions = getOrderedObjectList(makeObjectsFromValues($scope.field.DatastoreId+$scope.field.DbColumnName, $scope.field.PossibleValues));\r\n// }]\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirSelectGroupField',\r\n// function () {\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select-group.html',\r\n// restrict: 'E',\r\n// controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n// $scope.selectOptions = makeObjectsFromValues($scope.field.DatastoreId+$scope.field.DbColumnName, $scope.field.PossibleValues);\r\n// }]\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n//\r\n//\r\n// common_module.directive('ctuirSelectNumberField',\r\n// function () {\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-select-number.html',\r\n// restrict: 'E',\r\n// controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n// $scope.selectOptions = getOrderedObjectList(makeObjectsFromValues($scope.field.DatastoreId+$scope.field.DbColumnName, $scope.field.PossibleValues));\r\n// }]\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n//\r\n// common_module.directive('ctuirMultiselectField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-multiselect.html',\r\n// restrict: 'E',\r\n// controller: ['$scope', '$element', '$attrs', function($scope, $element, $attrs) {\r\n// $scope.selectOptions = makeObjectsFromValues($scope.field.DatastoreId+$scope.field.DbColumnName, $scope.field.PossibleValues);\r\n//\r\n// //console.log(\"--- in ctuirMultiselectfield\")\r\n// //console.dir($scope.selectOptions)\r\n// //console.dir($scope.row)\r\n// //console.dir($scope.field)\r\n// //if the values of the multiselect hasn't been converted to an array, try to convert it otherwise any selected values will not highlight as selected\r\n// if (typeof $scope.row[$scope.field.DbColumnName] === 'string') {\r\n// try {\r\n// $scope.row[$scope.field.DbColumnName] = angular.fromJson($scope.row[$scope.field.DbColumnName]);\r\n// }catch(e){\r\n// console.log(\" Could not convert \"+ $scope.field.DbColumnName + \" values \" + $scope.row[$scope.field.DbColumnName] + \" to an array.\");\r\n// }\r\n// }\r\n// }]\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirMultiselectCheckboxField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-multiselect-checkbox.html',\r\n// restrict: 'E',\r\n// controller: ['$scope', '$element', '$attrs', function($scope, $element, $attrs) {\r\n// $scope.selectOptions = makeObjectsFromValues($scope.field.DatastoreId+$scope.field.DbColumnName, $scope.field.PossibleValues);\r\n// /*\r\n// console.dir(\"have a multiselect-checkbox!\");\r\n// console.dir($scope.selectOptions);\r\n// console.dir($scope.field);\r\n// console.dir($scope.row);\r\n// if (typeof $scope.row[$scope.field.DbColumnName] === 'string') {\r\n// try {\r\n// $scope.row[$scope.field.DbColumnName] = angular.fromJson($scope.row[$scope.field.DbColumnName]);\r\n// }catch(e){\r\n// console.log(\" Could not convert \"+ $scope.field.DbColumnName + \" values \" + $scope.row[$scope.field.DbColumnName] + \" to an array.\");\r\n// }\r\n// }*/\r\n// }]\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n//\r\n// common_module.directive('ctuirFileField',\r\n// function(){\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-file.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n// });\r\n//\r\n// common_module.directive('ctuirTempWaypointFileField',\r\n// function(){\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-waypoint-file.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n// });\r\n//\r\n// common_module.directive('ctuirLinkField',\r\n// function(){\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-link.html',\r\n// restrict: 'E',\r\n// controller: ['$scope', '$element', '$attrs', '$uibModal', function($scope, $element, $attrs, $uibModal)\r\n// {\r\n// //add a function that will enable file modal capability for all fields with controlType = link\r\n// $scope.openLinkModal = function(row, field)\r\n// {\r\n// //console.dir(row);\r\n// //console.dir(field);\r\n// $scope.link_row = row;\r\n// $scope.link_field = field;\r\n//\r\n// var modalInstance = $uibModal.open({\r\n// templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-link-field.html',\r\n// controller: 'LinkModalCtrl',\r\n// scope: $scope, //scope to make a child of\r\n// });\r\n// };\r\n// }]\r\n// };\r\n//\r\n// return result;\r\n// });\r\n//\r\n// common_module.directive('ctuirRadioField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-radio.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('ctuirCheckboxField',\r\n// function(){\r\n//\r\n// var result = {\r\n// templateUrl: 'appjsLegacy/core/common/templates/form-fields/field-checkbox.html',\r\n// restrict: 'E',\r\n// };\r\n//\r\n// return result;\r\n//\r\n// });\r\n//\r\n// common_module.directive('uiSelectWrapper',\r\n// function(){\r\n//\r\n// \t\treturn {\r\n// \t\t\tlink: function(scope, element, attrs) {\r\n// \t\t\t\tvar uiSelectController = element.children().controller('uiSelect');\r\n// \t\t\t\tconsole.log(\"uiSelectController is next...\");\r\n// \t\t\t\tconsole.dir(uiSelectController);\r\n// \t\t\t}\r\n// \t\t}\r\n//\r\n// });\r\n//\r\n// common_module.directive('multiselect', function () {\r\n//\r\n// return {\r\n//\r\n// scope: true,\r\n// link: function (scope, element, attrs) {\r\n//\r\n// element.multiselect({\r\n//\r\n// // Replicate the native functionality on the elements so\r\n// // that angular can handle the changes for us.\r\n// onChange: function (optionElement, checked) {\r\n//\r\n// optionElement.removeAttr('selected');\r\n//\r\n// if (checked) {\r\n// optionElement.attr('selected', 'selected');\r\n// }\r\n//\r\n// element.change();\r\n// }\r\n// });\r\n//\r\n// // Watch for any changes to the length of our select element\r\n// scope.$watch(function () {\r\n// return element[0].length;\r\n// }, function () {\r\n// element.multiselect('rebuild');\r\n// });\r\n//\r\n// // Watch for any changes from outside the directive and refresh\r\n// scope.$watch(attrs.ngModel, function () {\r\n// element.multiselect('refresh');\r\n// });\r\n//\r\n// }\r\n//\r\n// };\r\n// });\r\n//\r\n// common_module.directive('convertToNumber', function () {\r\n// return {\r\n// require: 'ngModel',\r\n// link: function (scope, element, attrs, ngModel) {\r\n// ngModel.$parsers.push(function (val) {\r\n// return parseInt(val, 10);\r\n// });\r\n// ngModel.$formatters.push(function (val) {\r\n// return '' + val;\r\n// });\r\n// }\r\n// };\r\n// });\r\n//\r\nexport default common_module;\r\n","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn-bd\": \"loYQ\",\n\t\"./bn-bd.js\": \"loYQ\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-in\": \"7C5Q\",\n\t\"./en-in.js\": \"7C5Q\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./en-sg\": \"t+mt\",\n\t\"./en-sg.js\": \"t+mt\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-mx\": \"tbfe\",\n\t\"./es-mx.js\": \"tbfe\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fil\": \"1ppg\",\n\t\"./fil.js\": \"1ppg\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-deva\": \"qvJo\",\n\t\"./gom-deva.js\": \"qvJo\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./oc-lnc\": \"Fnuy\",\n\t\"./oc-lnc.js\": \"Fnuy\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tk\": \"Wv91\",\n\t\"./tk.js\": \"Wv91\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-mo\": \"OmwH\",\n\t\"./zh-mo.js\": \"OmwH\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {getMatchingByField} from \"../../../common/common-functions\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar dataset_seasons_list = ['$scope', '$routeParams',\r\n 'DatasetService', 'SubprojectService', 'ProjectService', 'CommonService', 'UserService',\r\n '$uibModal', '$location', '$window', '$rootScope',\r\n function ($scope, $routeParams,\r\n DatasetService, SubprojectService, ProjectService, CommonService, UserService,\r\n $uibModal, $location, $window, $rootScope) {\r\n\r\n console.log(\"Inside dataset-seasons-list.js...\");\r\n console.log(\"$routeParams.Id = \" + $routeParams.Id);\r\n console.log(\"$scope is next...\");\r\n console.dir($scope);\r\n\r\n console.log(\"Time Start Loading = \" + moment(Date.now()).format('HH:mm:ss'));\r\n\r\n $scope.dataset = DatasetService.getDataset($routeParams.Id);\r\n\r\n //$scope.seasons = null;\r\n $scope.seasonsList = null;\r\n $scope.speciesList = [];\r\n\r\n $scope.viewSeason = null; //what they've clicked to view season\r\n //$scope.selectedSeason = null; //what they've selected in the dropdown to add to the project\r\n\r\n var EditMasterLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.editSeason(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n div.appendChild(document.createTextNode(\"|\"));\r\n\r\n var delBtn = document.createElement('a'); delBtn.href = '#'; delBtn.innerHTML = 'Delete';\r\n delBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.removeSeason(param.data);\r\n });\r\n div.appendChild(delBtn);\r\n //div.appendChild(document.createTextNode(\"|\"));\r\n\r\n /*var addBtn = document.createElement('a'); addBtn.href = '#'; addBtn.innerHTML = 'Add Season';\r\n addBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openSeasonForm(param.data, {});\r\n //$scope.addSeason(param.data, {});\r\n });\r\n div.appendChild(addBtn);\r\n */\r\n\r\n return div;\r\n };\r\n\r\n $scope.$watch('dataset.Fields', function () {\r\n if (!$scope.dataset.Fields) return;\r\n\r\n console.log(\"Inside watch dataset.Fields...\");\r\n if ($scope.dataset.Datastore.TablePrefix === \"CreelSurvey\") {\r\n $scope.seasonsList = DatasetService.getSeasons($routeParams.Id);\r\n\r\n $scope.speciesList = angular.copy($scope.dataset.Config.SeasonsPage.Species);\r\n }\r\n });\r\n\r\n var seasons_watcher = $scope.$watch('seasonsList.length', function () {\r\n if (($scope.seasonsList) && ($scope.seasonsList !== null)) {\r\n console.log(\"Inside dataset-seasons-list.js, seasons_watcher...\");\r\n console.log(\"$scope is next...\");\r\n console.dir($scope);\r\n\r\n if ($scope.agGridOptions === undefined) {\r\n console.log(\"Inside dataset-seasons-list.js...\");\r\n console.log(\" ----------- ok we are defining our grid...\");\r\n\r\n //define the cell renderer (template) for our \"Project Name\" column.\r\n /*var agCellRendererProjectName = function (params) {\r\n console.log(\"params.node.data is next...\");\r\n console.dir(params.node.data);\r\n return '';\r\n };\r\n */\r\n\r\n var agColumnDefs = [\r\n { colId: 'EditLinksMaster', width: 20, cellRenderer: EditMasterLinksTemplate, menuTabs: ['filterMenuTab'], hide: false },\r\n { field: 'Species', headerName: 'Species', width: 50, menuTabs: ['filterMenuTab'] },\r\n { field: 'Season', headerName: 'Season', width: 50, menuTabs: ['filterMenuTab'] },\r\n {\r\n field: 'OpenDate', headerName: 'Open Date', width: 60,\r\n valueFormatter: function (params) {\r\n if (params.node.data.OpenDate !== undefined && params.node.data.OpenDate !== null)\r\n return moment(params.node.data.OpenDate).format('L');\r\n },\r\n valueGetter: function (params) {\r\n return (params.node.data.OpenDate) ? moment(params.node.data.OpenDate) : null\r\n },\r\n filter: 'date',\r\n menuTabs: ['filterMenuTab'],\r\n\r\n },\r\n {\r\n field: 'CloseDate', headerName: 'Close Date', width: 60,\r\n valueFormatter: function (params) {\r\n if (params.node.data.CloseDate !== undefined && params.node.data.CloseDate !== null)\r\n return moment(params.node.data.CloseDate).format('L');\r\n },\r\n valueGetter: function (params) {\r\n return (params.node.data.CloseDate) ? moment(params.node.data.CloseDate) : null\r\n },\r\n filter: 'date',\r\n menuTabs: ['filterMenuTab'],\r\n\r\n },\r\n { field: 'TotalDays', headerName: 'Total Days', width: 30, menuTabs: ['filterMenuTab'] },\r\n\r\n ];\r\n\r\n $scope.agGridOptions = {\r\n animateRows: true,\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n // showToolPanel: false,\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: agColumnDefs,\r\n rowData: $scope.seasonsList,\r\n debug: false,\r\n onGridReady: function (params) {\r\n params.api.sizeColumnsToFit();\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n console.log(\"Inside dataset-seasons-list.js, number of seasons: \" + $scope.seasonsList.length);\r\n\r\n console.log(\"Inside dataset-seasons-list.js, starting ag-grid\");\r\n var ag_grid_div = document.querySelector('#seasons-list-grid') as HTMLElement; //get the container id...\r\n $scope.ag_grid = new Grid(ag_grid_div, $scope.agGridOptions); //bind the grid to it.\r\n\r\n $scope.agGridOptions.api.showLoadingOverlay(); //show loading...\r\n\r\n\r\n } else {\r\n //we didn't need to redefine but do need to redraw\r\n console.log(\"Inside dataset-seasons-list.js...\")\r\n console.log(\"----- ok we have seasons and are defined -- setting new rowdata ----\");\r\n\r\n console.log(\"setting number of seasons: \" + $scope.seasonsList.length);\r\n $scope.agGridOptions.api.setRowData($scope.seasonsList);\r\n //$scope.agGridOptions.api.autoSizeColumns()\r\n\r\n console.log('done');\r\n\r\n }\r\n\r\n if ($scope.seasonsList.length > 0)\r\n seasons_watcher();\r\n }\r\n }, true);\r\n\r\n\r\n\r\n $scope.addSeason = function () {\r\n console.log(\"Inside addSeason...\");\r\n console.log(\"$scope is next...\");\r\n console.dir($scope);\r\n console.log(\"$scope.selectedSeason is next...\");\r\n console.dir($scope.selectedSeason);\r\n\r\n if (!$scope.selectedSeason || $scope.selectedSeason === null || getMatchingByField($scope.seasonsList, $scope.selectedSeason, 'Id').length > 0)\r\n return;\r\n\r\n var theSeason = getMatchingByField($scope.seasonsList, $scope.selectedSeason, 'Id');\r\n\r\n var promise = DatasetService.saveSeason($scope.dataset.Id, theSeason[0]);\r\n\r\n //promise.$promise.then(function () {\r\n // $scope.reloadProject();\r\n //});\r\n };\r\n\r\n $scope.createSeason = function (season) {\r\n //createSeason\r\n console.log(\"Inside createSeason...\");\r\n\r\n //$rootScope.season = $scope.season = season; //set this var for the modal controller and file filter\r\n //$rootScope.seasonId = 0; //also for file filter. :/\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-seasons-list/templates/modal-create-season.html',\r\n controller: 'ModalCreateSeasonCtrl',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n $scope.editSeason = function (season) {\r\n\r\n console.log(\"Inside editSeason...\");\r\n\r\n $rootScope.viewSeason = $scope.viewSeason = season; //set this var for the modal controller and file filter\r\n $rootScope.seasonId = season.Id; //also for file filter. :/\r\n\r\n console.log(\"$scope.viewSeason is next...\");\r\n console.dir($scope.viewSeason);\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-seasons-list/templates/modal-create-season.html',\r\n controller: 'ModalCreateSeasonCtrl',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n $scope.removeSeason = function (a_season) {\r\n console.log(\"alrighty, remove this season!\");\r\n console.dir(a_season);\r\n if (!a_season)\r\n return;\r\n\r\n if (!confirm(\"Are you sure you want to remove this season?\"))\r\n return;\r\n\r\n var removeSeasonPromise = DatasetService.removeSeason($scope.dataset.ProjectId, $scope.dataset.Id, a_season.Id);\r\n\r\n removeSeasonPromise.$promise.then(function () {\r\n $scope.seasonsList.forEach(function (item, index) {\r\n if (item.Id === a_season.Id) {\r\n $scope.seasonsList.splice(index, 1);\r\n $scope.agGridOptions.api.setRowData($scope.seasonsList);\r\n }\r\n });\r\n });\r\n };\r\n\r\n //fired after a user saves a new or edited project.\r\n // we update the item in the main subproject array and then refresh the grid.\r\n $scope.postSaveSeasonUpdateGrid = function (promise) {\r\n\r\n //console.log(\"ok - we saved so update the grid...\");\r\n var total = $scope.seasonsList.length;\r\n var count = 0;\r\n var updated = false;\r\n $scope.seasonsList.forEach(function (item, index) {\r\n if (item.Id === promise.Id) {\r\n updated = true;\r\n\r\n //console.log(\"ok we found a match! -- updating! before:\");\r\n //console.dir($scope.seasonsList[index]);\r\n\r\n angular.extend($scope.seasonsList[index], promise); //replace the data for that item\r\n //console.log(\"ok we found a match! -- updating! after:\");\r\n //console.dir($scope.seasonsList[index]);\r\n $scope.agGridOptions.api.redrawRows();\r\n //console.log(\"done reloading grid.\");\r\n }\r\n count++;\r\n if (count == total && updated == false) //if we get all done and we never found it, lets add it to the end.\r\n {\r\n //console.log(\"ok we found never a match! -- adding!\");\r\n $scope.seasonsList.push(promise); //add that item\r\n $scope.agGridOptions.api.setRowData([]);\r\n $scope.agGridOptions.api.setRowData($scope.seasonsList);\r\n\r\n console.log(\"done reloading grid, after adding a season.\");\r\n }\r\n });\r\n\r\n };\r\n\r\n // Don't think we need this anymore.\r\n $scope.refreshSeasonsList = function () {\r\n // Call the functions that will build the list of seasons -- as the data comes in.\r\n $scope.seasonsList = DatasetService.getSeasons($scope.dataset.Id);\r\n\r\n };\r\n }\r\n];\r\n\r\nexport default dataset_seasons_list;\r\n","import {AfterViewInit, Component, Inject, OnInit, PLATFORM_ID} from '@angular/core';\r\nimport {NavigationEnd, Router} from \"@angular/router\";\r\nimport {isPlatformBrowser} from \"@angular/common\";\r\n\r\ndeclare const ga: any;\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent implements AfterViewInit{\r\n title = 'cdms-fe';\r\n\r\n constructor(@Inject(PLATFORM_ID) private platformId: Object,\r\n private router: Router) {}\r\n\r\n ngAfterViewInit(): void {\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationEnd && isPlatformBrowser(this.platformId)) {\r\n ga('set', 'page', event.urlAfterRedirects);\r\n ga('send', 'pageview');\r\n }\r\n });\r\n }\r\n\r\n}\r\n","\r\n\r\n// import leasing_module from \"../../leasing-module\";\r\nimport {\r\n METADATA_PROPERTY_LEASING_ANIMALTYPES,\r\n METADATA_PROPERTY_LEASING_COMPLIANCE_INSP_TYPES,\r\n METADATA_PROPERTY_LEASING_CROPOPTIONS,\r\n METADATA_PROPERTY_LEASING_LEASETYPES,\r\n METADATA_PROPERTY_LEASING_OPCITIES,\r\n METADATA_PROPERTY_LEASING_OPSTATES,\r\n METADATA_PROPERTY_LEASING_PRODUCTIONDELIVERY,\r\n METADATA_PROPERTY_LEASING_PRODUCTIONTYPES,\r\n METADATA_PROPERTY_LEASING_RESIDUETYPES,\r\n METADATA_PROPERTY_LEASING_SUBPRACTICES,\r\n METADATA_PROPERTY_LEASING_VIOLATION_TYPES,\r\n METADATA_PROPERTY_LEASING_WEEDS\r\n} from \"../../../../config\";\r\n\r\nexport class LeaseModalScope {\r\n// LeaseStatus = [];\r\n// LeaseStatus[1] = \"Active\";\r\n// LeaseStatus[2] = \"Inactive\";\r\n// LeaseStatus[3] = \"Pending\";\r\n// LeaseStatus[4] = \"Withdrawn\";\r\n// LeaseStatus[5] = \"Expired\";\r\n// LeaseStatus[6] = \"Cancelled\";\r\n//\r\n// let LeaseLevels = [];\r\n// LeaseLevels[1] = \"Level 1\";\r\n// LeaseLevels[2] = \"Level 2\";\r\n// LeaseLevels[3] = \"Level 3\";\r\n// LeaseLevels[4] = \"Level 4\";\r\n static LeaseStatus = [\"\", \"Active\", \"Inactive\", \"Pending\", \"Withdrawn\", \"Expired\", \"Cancelled\"];\r\n static LeaseLevels = [\"\", \"Level 1\", \"Level 2\", \"Level 3\", \"Level 4\"];\r\n static LeaseTypeLeaseNumber = {\r\n \"Farming\": \"1\",\r\n \"Grazing\": \"4\",\r\n \"Residential\": \"2\",\r\n \"Storage\": \"TL-\",\r\n};\r\n\r\n\r\n\r\n static prepareLeaseModalScope($scope, LeasingService) {\r\n //console.log(\"Inside prepareLeaseModalScope\");\r\n\r\n $scope.leaseLevels = this.LeaseLevels;\r\n $scope.leaseStatuses = this.LeaseStatus;\r\n\r\n $scope.operators = LeasingService.getOperators();\r\n\r\n $scope.operators.$promise.then(function () {\r\n $scope.operators.forEach(function (oper) {\r\n oper.SortName = (oper.Organization) ? oper.Organization : oper.FirstName + \" \" + oper.LastName;\r\n });\r\n });\r\n //console.log(\"===Setting leaseTypes from LeasingService===\");\r\n $scope.leaseTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_LEASETYPES);\r\n \r\n // $scope.leaseTypes.$promise.then(function(){\r\n // console.log(\"scope.leaseTypes is next\");\r\n // console.dir($scope.leaseTypes);\r\n // });\r\n\r\n $scope.productionDeliveryUnits = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_PRODUCTIONDELIVERY);\r\n\r\n $scope.cropOptions = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_CROPOPTIONS);\r\n\r\n $scope.weeds = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_WEEDS);\r\n\r\n $scope.residueTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_RESIDUETYPES);\r\n\r\n $scope.animalTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_ANIMALTYPES);\r\n\r\n $scope.subPractices = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_SUBPRACTICES);\r\n\r\n $scope.productionTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_PRODUCTIONTYPES);\r\n\r\n $scope.operatorStates = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_OPSTATES);\r\n\r\n $scope.operatorCities = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_OPCITIES);\r\n\r\n $scope.complianceInspectionTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_COMPLIANCE_INSP_TYPES);\r\n\r\n $scope.violationTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_VIOLATION_TYPES);\r\n\r\n };\r\n\r\n\r\n}\r\n\r\n/*let LeaseStatus = [];\r\nLeaseStatus[1] = \"Active\";\r\nLeaseStatus[2] = \"Inactive\";\r\nLeaseStatus[3] = \"Pending\";\r\nLeaseStatus[4] = \"Withdrawn\";\r\nLeaseStatus[5] = \"Expired\";\r\nLeaseStatus[6] = \"Cancelled\";\r\n\r\nlet LeaseLevels = [];\r\nLeaseLevels[1] = \"Level 1\";\r\nLeaseLevels[2] = \"Level 2\";\r\nLeaseLevels[3] = \"Level 3\";\r\nLeaseLevels[4] = \"Level 4\";\r\n\r\n\r\nexport default function prepareLeaseModalScope($scope, LeasingService) {\r\n\r\n $scope.leaseLevels = LeaseLevels;\r\n $scope.leaseStatuses = LeaseStatus;\r\n\r\n $scope.operators = LeasingService.getOperators();\r\n\r\n $scope.operators.$promise.then(function () {\r\n $scope.operators.forEach(function (oper) {\r\n oper.SortName = (oper.Organization) ? oper.Organization : oper.FirstName + \" \" + oper.LastName;\r\n });\r\n });\r\n\r\n // @ts-ignore\r\n $scope.leaseTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_LEASETYPES);\r\n // @ts-ignore\r\n $scope.productionDeliveryUnits = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_PRODUCTIONDELIVERY);\r\n // @ts-ignore\r\n $scope.cropOptions = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_CROPOPTIONS);\r\n // @ts-ignore\r\n $scope.weeds = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_WEEDS);\r\n // @ts-ignore\r\n $scope.residueTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_RESIDUETYPES);\r\n // @ts-ignore\r\n $scope.animalTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_ANIMALTYPES);\r\n // @ts-ignore\r\n $scope.subPractices = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_SUBPRACTICES);\r\n // @ts-ignore\r\n $scope.productionTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_PRODUCTIONTYPES);\r\n // @ts-ignore\r\n $scope.operatorStates = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_OPSTATES);\r\n // @ts-ignore\r\n $scope.operatorCities = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_OPCITIES);\r\n // @ts-ignore\r\n $scope.complianceInspectionTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_COMPLIANCE_INSP_TYPES);\r\n // @ts-ignore\r\n $scope.violationTypes = LeasingService.getLookupValues(METADATA_PROPERTY_LEASING_VIOLATION_TYPES);\r\n\r\n};*/\r\n","//controller for the main project list page.\r\nimport * as angular from 'angular';\r\nimport {METADATA_ENTITY_HABITAT, METADATA_ENTITY_PROJECT, serverUrl} from \"../../../../config\";\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n// note changing $iobModal to $uibModal works\r\nvar project_list = ['$scope', 'DatasetService', 'ProjectService','CommonService','$uibModal', '$window',\r\n function (scope, DatasetService, ProjectService, CommonService, $uibModal, $window){\r\n\r\n console.log('project list controller called');\r\n\r\n scope.projects = ProjectService.getProjects();\r\n\r\n scope.newProject = function () {\r\n\r\n scope.project = {};\r\n scope.project.MetaFields = CommonService.getMetadataProperties(METADATA_ENTITY_PROJECT);\r\n\r\n //if habitat project then load those fields, too...\r\n scope.project.MetaFields.$promise.then(function () {\r\n\r\n scope.project.MetaFields.forEach(function (field) { field.MetadataPropertyId = field.Id });\r\n\r\n var habfields = CommonService.getMetadataProperties(METADATA_ENTITY_HABITAT);\r\n habfields.$promise.then(function () {\r\n\r\n habfields.forEach(function (habfield) {\r\n habfield.MetadataPropertyId = habfield.Id\r\n habfield.isHabitat = true;\r\n scope.project.MetaFields.push(habfield);\r\n });\r\n\r\n scope.openNewProjectModal();\r\n\r\n });\r\n });\r\n }\r\n\r\n scope.openNewProjectModal = function(){\r\n\t\t\tconsole.log(\"Inside project-list.js, openAddProject...\");\r\n\r\n const templateUrl = 'appjsLegacy/core/projects/components/project-detail/templates/modal-edit-project.html';\r\n\r\n// if (typeof TRIBALCDMS_TEMPLATES !== 'undefined') {\r\n// templateUrl = 'appjsLegacy/core/projects/components/project-detail/' + TRIBALCDMS_TEMPLATES + '/modal-edit-project.html';\r\n// }\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: templateUrl,\r\n controller: 'ModalProjectEditorCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_project) {\r\n scope.projects = ProjectService.getProjects();\r\n scope.projects.$promise.then(function () {\r\n scope.afterProjectsLoaded();\r\n });\r\n });\r\n };\r\n\r\n scope.projects.$promise.then(function () {\r\n scope.afterProjectsLoaded();\r\n });\r\n\r\n scope.afterProjectsLoaded = function () {\r\n //spin through and add a \"Program\" field to our project that we can display easily in the grid.\r\n angular.forEach(scope.projects, function(project, key){\r\n\r\n if(project.SubProgram && project.SubProgram != \"(None)\")\r\n project.Program += \" > \" + project.SubProgram;\r\n });\r\n\r\n if (scope.agGridOptions === undefined) {\r\n\r\n //define the cell renderer (template) for our \"Project Name\" column.\r\n var agCellRendererProjectName = function (params) {\r\n return '';\r\n };\r\n\r\n var agColumnDefs = [\r\n { field: 'Name', headerName: 'Project Name', cellRenderer: agCellRendererProjectName, width: 300, sort: 'asc', menuTabs: ['filterMenuTab'], filter: 'text'},\r\n { field: 'Program', headerName: 'Program', width: 220, menuTabs: ['filterMenuTab'], filter: true },\r\n { field: 'ProjectType', headerName: 'Type', width: 130, menuTabs: ['filterMenuTab'], filter: true},\r\n ];\r\n\r\n scope.agGridOptions = {\r\n suppressPropertyNamesCheck: true,\r\n animateRows: true,\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n // showToolPanel: false,\r\n columnDefs: agColumnDefs,\r\n rowData: scope.projects,\r\n debug: false,\r\n onGridReady: function (params) {\r\n params.api.sizeColumnsToFit();\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n var ag_grid_div = document.querySelector('#project-list-grid') as HTMLElement; //get the container id...\r\n scope.ag_grid = new Grid(ag_grid_div, scope.agGridOptions); //bind the grid to it.\r\n //scope.agGridOptions.api.showLoadingOverlay(); //show loading...\r\n\r\n } else {\r\n scope.agGridOptions.api.setRowData(scope.projects);\r\n }\r\n }\r\n }\r\n];\r\n\r\nexport default project_list;\r\n","\r\nimport * as angular from 'angular';\r\nexport function buildRandomString10()\r\n{\r\n\tvar strNum = \"\";\r\n\r\n\tvar intRandom = -1;\r\n\tfor (var i = 0; i < 10; i++)\r\n\t{\r\n\t\tintRandom = Math.floor(Math.random() * 8) + 1; // We want a number between 1 and 9, inclusively.\r\n\r\n\t\tstrNum += intRandom;\r\n\t}\r\n\treturn strNum;\r\n}\r\n\r\nexport function writeResults(originalTextList)\r\n{\r\n\tfor (let item of originalTextList){\r\n\t\tconsole.log(item.strText + \", \" + item.intNumber);\r\n\t\tconsole.log(\"***********\");\r\n\t\tconsole.log(\"***********\");\r\n\t}\r\n}\r\n\r\nexport function buildFinalResults(originalTextList, strFirstNumber, strSecondNumber)\r\n{\r\n\t//console.log(\"originalTextList is next...\");\r\n\t//console.dir(originalTextList);\r\n\t//console.log(\"strFirstNumber = \" + strFirstNumber);\r\n\t//console.log(\"strSecondNumber = \" + strSecondNumber);\r\n\r\n\tvar strFinalResult = \"\";\r\n\tvar strLastDigit = \"\";\r\n\r\n\tfor(let item of originalTextList)\r\n {\r\n\t\tstrFinalResult += item.intNumber.toString().length + item.intNumber.toString();\r\n\t}\r\n\r\n\t//console.log(\"strFinalResult (before concat)= \" + strFinalResult);\r\n\r\n\t// Note: The string contained in strFinalResult has a good probability of being too long\r\n\t// for either int32 or int64.\r\n\t// Int32 -- (-2,147,483,648 to +2,147,483,647)\r\n\t// Int64 -- (-9,223,372,036,854,775,808 to +9,223,372,036,854,775,807)\r\n\t//\r\n\t// Therefore, we need to handle the number in a string instead.\r\n\r\n\tstrFinalResult += strFirstNumber + strSecondNumber;\r\n\t//console.log(\"strFinalResult (after concat) = \" + strFinalResult);\r\n\r\n\tvar n = -1;\r\n\t//for (int i = (strSecondNumber.length - 1); i > -1; i--)\r\n\tfor (var i = (strFirstNumber.length - 1); i > -1; i--)\r\n\t{\r\n\t\t//n = parseInt(strSecondNumber.Substring(i, 1));\r\n\t\tn = parseInt(strFirstNumber.substr(i, 1));\r\n\t\tif ( n > 2)\r\n\t\t{\r\n\t\t\t//console.log(\"Last hash # = \" + n);\r\n\t\t\tstrFinalResult = multiply(strFinalResult, n.toString());\r\n\t\t\tstrLastDigit = n.toString();\r\n\t\t\ti = -1;\r\n\t\t}\r\n // copy string\r\n\t\tstrFinalResult = angular.copy(strFinalResult) + strLastDigit;\r\n\t}\r\n\tconsole.log(\"strFinalResult (after final hash)= \" + strFinalResult);\r\n\r\n\t//$scope.strFinalResult = intFinalResult.toString();\r\n\r\n\t//console.log(\"strFinalResult (final)= \" + strFinalResult);\r\n\t//console.log(\"strFinalResult.length = \" + strFinalResult.length);\r\n\t//console.log(\"strOriginalText.length = \" + strOriginalText.length);\r\n\t//console.log(\"strFirstNumber = \" + strFirstNumber);\r\n\t//console.log(\"strSecondNumber = \" + strClientNumber);\r\n\treturn strFinalResult;\r\n}\r\n\r\nexport function multiply(strA, strB)\r\n{\r\n\t//console.log(\"Inside multiply...\");\r\n\t//console.log(\"strA = \" + strA + \", strB = \" + strB);\r\n\t// This method expects two numbers, each in a separate string.\r\n\t// This version accepts a multidigit numbr (strA), and a single-digit second numbr (strB)\r\n\tvar intADigit = 0;\r\n\tvar intBDigit = 0;\r\n\r\n\tvar intRemainder = 0;\r\n\tvar intCarryOver = 0;\r\n\r\n\tvar intResult = 0;\r\n\tvar strResult = \"\";\r\n\r\n\tstrA.trim();\r\n\tstrB.trim();\r\n\r\n\tvar intALength = strA.length;\r\n\t//console.log(\"intALength = \" + intALength);\r\n\r\n\tvar intBLength = strB.length;\r\n\t//console.log(\"intBLength = \" + intBLength);\r\n\r\n\t// Example of what we are doing...\r\n\t// 123\r\n\t// * 2\r\n\t// ---\r\n\t// 246\r\n\r\n\tintBDigit = parseInt(strB);\r\n\tfor (var i = intALength - 1; i > -1; i--)\r\n\t{\r\n\t\tintADigit = parseInt(strA.substr(i, 1));\r\n\t\t//intBDigit = parseInt(strB.substr(i, 1));\r\n\t\t//console.log(\"intADigit = \" + intADigit);\r\n\t\t//console.log(\"intBDigit = \" + intBDigit);\r\n\r\n\t\tintResult = intADigit * intBDigit;\r\n\t\t//console.log(\"intResult = \" + intResult);\r\n\r\n\t\t// The first time through, intCarryOver is 0;\r\n\t\tintRemainder = (intResult % 10) + intCarryOver;\r\n\t\t//console.log(\"intRemainder = \" + intRemainder);\r\n\r\n\t\tintCarryOver = Math.floor((intResult / 10)); // Round down to nearest integer; 1.7 -> 1.\r\n\t\t//console.log(\"intCarryOver = \" + intCarryOver);\r\n\r\n\t\twhile (intRemainder > 9)\r\n\t\t{\r\n\t\t\tintCarryOver += Math.floor((intRemainder / 10)); // Round down to nearest integer; 1.7 -> 1.\r\n\t\t\tintRemainder = intRemainder % 10;\r\n\t\t}\r\n\t\t//console.log(\"intCarryOver = \" + intCarryOver + \", intRemainder = \" + intRemainder);\r\n\r\n\t\tstrResult = intRemainder.toString() + strResult;\r\n\t\t//console.log(\"strResult = \" + strResult);\r\n\t}\r\n\tif (intCarryOver > 0)\r\n\t{\r\n\t\t//strResult = intRemainder.toString() + intCarryOver.toString() + strResult;\r\n\t\tstrResult = intCarryOver.toString() + strResult;\r\n\t}\r\n\r\n\treturn strResult;\r\n}\r\n\r\nexport function getNumberFromPlace(aNumber, strSecondNumber)\r\n{\r\n\t//console.log(\"Inside $scope.getNumberFromPlace...\");\r\n\t//console.log(\"aNumber = \" + aNumber);\r\n\tvar intDigitFromSecond = parseInt(strSecondNumber.substr(aNumber - 1, 1));\r\n\r\n\treturn intDigitFromSecond;\r\n}\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar covid_list = ['$scope', '$route', '$routeParams', '$uibModal', '$location', '$window', '$rootScope', 'CovidService', 'GridService', 'DatasetService','CommonService',\r\n function ($scope, $route, $routeParams, $uibModal, $location, $window, $rootScope, CovidService, GridService, DatasetService, CommonService) {\r\n\r\n $scope.employees = CovidService.getMyEmployees();\r\n $scope.work = CovidService.getMyEmployeesWork();\r\n\r\n //note: they asked to show all dates through 4/30 instead of just through today... hence the redefinition of \"today\" :)\r\n var today_text = moment(new Date('05/31/2020')).format('M/D/YY');\r\n var today = moment(new Date('05/31/2020'));\r\n var begin = moment(new Date('03/15/2020'));\r\n $scope.lookup = {};\r\n $scope.save = {};\r\n $scope.loaded = false;\r\n\r\n $scope.noCopyCells = ['Name','Program','Status','Access','IsHighRisk','IsUnique','Notes']\r\n\r\n $scope.employees.$promise.then(function () {\r\n $scope.work.$promise.then(function(){\r\n $scope.activateGrid();\r\n $scope.empGrid.api.setRowData($scope.employees);\r\n $scope.loaded = true;\r\n });\r\n });\r\n\r\n\r\n var empColumnDefs = [\r\n { headerName: \"Staff Name\", field: \"Name\", width: 160, pinned: 'left', editable: false, menuTabs: ['filterMenuTab'], },\r\n { headerName: \"Program/Dept\", field: \"Program\", width: 130, editable: false, menuTabs: ['filterMenuTab'], },\r\n { headerName: \"Status\", field: \"Status\", width: 120,\r\n cellEditor: 'agSelectCellEditor',\r\n cellEditorParams: {\r\n values: ['','Essential','Non-essential']\r\n },\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n { headerName: \"Access\", field: \"Access\", width: 120,\r\n cellEditor: 'agSelectCellEditor',\r\n cellEditorParams: {\r\n values: ['','Home internet','Cell hotspot', 'None']\r\n },\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n { headerName: \"High Risk?\", field: \"IsHighRisk\", width: 100,\r\n cellEditor: 'agSelectCellEditor',\r\n cellEditorParams: {\r\n values: ['','Yes','No']\r\n },\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n { headerName: \"Unique?\", field: \"IsUnique\", width: 100,\r\n cellEditor: 'agSelectCellEditor',\r\n cellEditorParams: {\r\n values: ['','Yes','No']\r\n },\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n { headerName: \"Notes\", field: \"Notes\", width: 200, menuTabs: [], },\r\n\r\n ];\r\n\r\n $scope.isCopyableCell = function(){\r\n return (!$scope.noCopyCells.contains($scope.selectedCell.column.colId));\r\n }\r\n\r\n $scope.copyCellRight = function(){\r\n //console.dir($scope.selectedCell)\r\n var nextDay = moment(new Date($scope.selectedCell.column.colId));\r\n while (!today.isSame(nextDay, 'd')) {\r\n nextDay = nextDay.add(1, 'd')\r\n let nextDayText = nextDay.format('M/D/YY')\r\n $scope.lookup[$scope.selectedCell.data.Id][nextDayText] = $scope.selectedCell.value;\r\n }\r\n $scope.empGrid.api.setRowData($scope.employees);\r\n $scope.lookup[$scope.selectedCell.data.Id].updated = true;\r\n }\r\n\r\n $scope.copyColumnRight = function(){\r\n //console.dir($scope.selectedCell)\r\n\r\n var nextDay = moment(new Date($scope.selectedCell.column.colId));\r\n\r\n if(nextDay.format('M/D/YY') === today_text)\r\n {\r\n alert(\"Can't copy today's values to future column.\")\r\n return;\r\n }\r\n\r\n nextDay = nextDay.add(1,'d');\r\n while (nextDay.day() === 0 || nextDay.day() === 6) { //skip the weekend days\r\n nextDay = nextDay.add(1,'d');\r\n }\r\n\r\n let nextDayField = nextDay.format('M/D/YY')\r\n\r\n $scope.employees.forEach(function(employee){\r\n var valToCopy = employee[$scope.selectedCell.column.colId];\r\n employee[nextDayField] = valToCopy;\r\n employee.updated = true;\r\n });\r\n\r\n $scope.empGrid.api.setRowData($scope.employees);\r\n\r\n /*\r\n var nextDay = moment(new Date($scope.selectedCell.column.colId));\r\n while (!today.isSame(nextDay, 'd')) {\r\n nextDay = nextDay.add(1, 'd')\r\n nextDayText = nextDay.format('M/D/YY')\r\n $scope.lookup[$scope.selectedCell.data.Id][nextDayText] = $scope.selectedCell.value;\r\n }\r\n $scope.empGrid.api.setRowData($scope.employees);\r\n */\r\n }\r\n\r\n $scope.empGrid = {\r\n columnDefs: empColumnDefs,\r\n rowData: [],\r\n enableSorting: true,\r\n enableFilter: true,\r\n rowSelection: 'single',\r\n defaultColDef: {\r\n editable: true,\r\n sortable: true,\r\n resizable: true\r\n },\r\n selectedItem: null,\r\n selectedCell: null,\r\n selectedNode: null,\r\n onCellEditingStopped: function(params){\r\n $scope.lookup[params.data.Id].updated = true;\r\n $scope.selectedCell = params;\r\n },\r\n onSelectionChanged: function (params) {\r\n //console.dir(params)\r\n $scope.empGrid.selectedItem = $scope.row = angular.copy($scope.empGrid.api.getSelectedRows()[0]);\r\n $scope.empGrid.selectedNode = $scope.empGrid.api.getSelectedNodes()[0];\r\n $scope.$apply();\r\n },\r\n onCellClicked: function(event){\r\n //console.dir(event)\r\n $scope.selectedCell = event;\r\n $scope.$apply();\r\n }\r\n }\r\n\r\n //activate the grid once we have the employees back.\r\n $scope.activateGrid = function(){\r\n\r\n //setup the day columns\r\n var nextDay = moment(begin);\r\n while (!today.isSame(nextDay, 'd')) {\r\n nextDay = nextDay.add(1, 'd')\r\n let nextDayText = nextDay.format('M/D/YY')\r\n\r\n if(nextDay.day() === 0 || nextDay.day() === 6)\r\n continue\r\n\r\n //add column to grid\r\n empColumnDefs.push({\r\n headerName: nextDayText,\r\n field: nextDayText,\r\n width: 160,\r\n cellEditor: 'agSelectCellEditor',\r\n cellEditorParams: {\r\n values: ['','Work from home', 'Admin leave','In office','Sick leave','Annual leave',\"Not Scheduled\"]\r\n },\r\n menuTabs: ['filterMenuTab'],\r\n });\r\n\r\n }\r\n\r\n //populate the workdates\r\n $scope.employees.forEach(function(employee){\r\n /*\r\n // this sets our supervisors to an array, though not currently necessary since we neither display nor save\r\n try{\r\n employee.SupervisorUsername = (employee.SupervisorUsername) ? angular.fromJson(employee.SupervisorUsername) : [];\r\n\r\n }catch(e){\r\n var supervisors = [];\r\n supervisors.push(employee.SupervisorUsername);\r\n employee.SupervisorUsername = supervisors;\r\n }\r\n */\r\n $scope.lookup[employee.Id] = employee;\r\n })\r\n\r\n $scope.work.forEach(function(item){\r\n var workdate = moment(item.WorkDate).format('M/D/YY');\r\n if($scope.lookup[item.EmployeeId])\r\n $scope.lookup[item.EmployeeId][workdate] = item.WorkStatus\r\n })\r\n\r\n //activate the grid\r\n if (!$scope.empGridDiv) {\r\n $scope.empGridDiv = document.querySelector('#employee-grid');\r\n new Grid($scope.empGridDiv, $scope.empGrid);\r\n }\r\n\r\n }\r\n\r\n $scope.saveRecords = function(){\r\n $scope.save.isSaving = true;\r\n $scope.save.hasSuccess = false;\r\n $scope.save.hasError = false;\r\n\r\n var updatedEmployees = [];\r\n\r\n //only send changed records\r\n $scope.employees.forEach(function(employee){\r\n if(employee.updated){\r\n delete employee.updated;\r\n delete employee.EnrollmentStatus;\r\n //employee.SupervisorUsername = angular.toJson(employee.SupervisorUsername); //if we ever want to save them from the FE\r\n updatedEmployees.push(employee);\r\n }\r\n })\r\n\r\n let saving = CovidService.saveEmployees(updatedEmployees);\r\n saving.$promise.then(function(){\r\n $scope.save.isSaving = false;\r\n $scope.save.hasSuccess = true;\r\n $scope.save.hasError = false;\r\n $scope.save.message = \"Success.\";\r\n }, function(){\r\n $scope.save.isSaving = false;\r\n $scope.save.hasSuccess = false;\r\n $scope.save.hasError = true;\r\n $scope.save.message = \"There was an error.\";\r\n })\r\n }\r\n\r\n $scope.cancel = function(){\r\n if(!confirm(\"Are you sure you want to reload the records?\")) {\r\n return;\r\n }\r\n\r\n $scope.lookup = {}\r\n $scope.save = {}\r\n $scope.loaded = false;\r\n\r\n $scope.employees = CovidService.getMyEmployees();\r\n $scope.work = CovidService.getMyEmployeesWork();\r\n\r\n $scope.employees.$promise.then(function(){\r\n $scope.work.$promise.then(function(){\r\n\r\n //populate the workdates\r\n $scope.employees.forEach(function(employee){\r\n $scope.lookup[employee.Id] = employee;\r\n })\r\n\r\n $scope.work.forEach(function(item){\r\n var workdate = moment(item.WorkDate).format('M/D/YY');\r\n if($scope.lookup[item.EmployeeId])\r\n $scope.lookup[item.EmployeeId][workdate] = item.WorkStatus\r\n })\r\n\r\n $scope.empGrid.api.setRowData($scope.employees);\r\n $scope.loaded = true;\r\n\r\n });\r\n });\r\n\r\n };\r\n\r\n $scope.addEmployee = function(){\r\n alert(\"To add employees, email a spreadsheet to kenburcham@ctuir.org with: Name, Title, Email, Department, Program, Supervisor(s), Department Supervisor\");\r\n }\r\n\r\n $scope.removeEmployee = function(){\r\n if(!confirm(\"Are you sure you want to remove this employee? NOTE: You should only remove invalid staff, not misassigned staff. If staff is misassigned to you, please contact kenburcham@ctuir.org for reassignment.\")){\r\n return;\r\n }\r\n\r\n var removed = CovidService.removeEmployee($scope.row.Id);\r\n\r\n removed.$promise.then(function(){\r\n $scope.employees.forEach(function (file, index) {\r\n if (file.Id == $scope.row.Id) {\r\n $scope.employees.splice(index, 1);\r\n $scope.empGrid.api.setRowData($scope.employees);\r\n delete $scope.lookup[file.Id]\r\n }\r\n });\r\n }, function(){\r\n alert(\"There was a problem removing that employee.\");\r\n });\r\n\r\n }\r\n\r\n\r\n}];\r\n\r\nexport default covid_list;\r\n","import {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar permit_notifications = ['$scope', 'PermitService','ViolationService',\r\n function ($scope, PermitService, ViolationService) {\r\n\r\n $scope.PermitRoutes = PermitService.getPermitRoutes();\r\n\r\n $scope.PermitRoutes.$promise.then(function () {\r\n $scope.routesGridDiv = document.querySelector('#routes-grid');\r\n new Grid($scope.routesGridDiv, $scope.routesGrid);\r\n $scope.routesGrid.api.setRowData($scope.PermitRoutes);\r\n });\r\n\r\n $scope.routesGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n rowSelection: 'single',\r\n selectedItem: null,\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n\r\n $scope.viewViolationNotifications = function(){\r\n console.log(\"violation notifications\");\r\n $scope.Notifications = ViolationService.getNotifications();\r\n }\r\n\r\n\r\n $scope.viewPermitNotifications = function(){\r\n console.log(\"permit notifications\");\r\n $scope.Notifications = PermitService.getNotifications();\r\n }\r\n\r\n\r\n $scope.routesGrid.columnDefs = [\r\n { headerName: \"Event Type\", field: \"EventType\", width: 250, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Item Type\", field: \"ItemType\", width: 120, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: \"Rank\", field: \"Rank\", width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Email\", field: \"Email\", width: 250, menuTabs: ['filterMenuTab'], filter: true }\r\n ];\r\n\r\n $scope.addRow = function () {\r\n $scope.routesGrid.api.updateRowData({add: [{ItemType:\"\",Rank:null,Email:\"\"}]});\r\n };\r\n\r\n $scope.viewPermitNotifications();\r\n\r\n }\r\n];\r\n\r\nexport default permit_notifications;\r\n","//modal to add/edit permit contact\r\nimport * as angular from 'angular';\r\n\r\n\r\nvar modal_edit_location = ['$scope', '$uibModal','$uibModalInstance','PermitService','ViolationService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, PermitService, ViolationService) {\r\n\r\n $scope.mode = \"edit\";\r\n\r\n if (!$scope.location_modal.LocationId) {\r\n $scope.mode = \"new\";\r\n //$scope.contact_modal.ContactType = \"Applicant\"; //set default\r\n }\r\n\r\n console.log(\"Inside add-location-modal.ts...\");\r\n\r\n $scope.save = function () {\r\n\r\n console.log(\"Inside save..., current url: \" + window.location.href);\r\n\r\n var new_location = \"\";\r\n\r\n //var save_location = angular.copy($scope.location_modal);\r\n //delete save_location.Location;\r\n\r\n if(!$scope.location_modal.LocationId){\r\n alert(\"Please select a location for this permit\");\r\n return;\r\n }\r\n\r\n // if($scope.violations != null)\r\n // {\r\n // new_location = ViolationService.saveViolationContact(save_location);\r\n // }\r\n // else{\r\n // new_location = PermitService.savePermitLocation($scope.location_modal.LocationId);\r\n // }\r\n new_location = PermitService.savePermitLocation($scope.$parent.row.Id, $scope.location_modal.LocationId);\r\n\r\n\r\n // @ts-ignore\r\n new_location.$promise.then(function () {\r\n console.log(\"done and success!\");\r\n $uibModalInstance.close(new_location);\r\n //location.reload();\r\n $scope.$parent.row.LocationId = $scope.location_modal.LocationId;\r\n });\r\n\r\n };\r\n\r\n $scope.locationEntry = \"\";\r\n $scope.locationMatches = [];\r\n\r\n $scope.Selected = {Location : []};\r\n\r\n $scope.locationEntryUpdate = function () {\r\n console.log(\"searching... \" + $scope.datasetLocations.length + \" records for \" + $scope.locationEntry);\r\n $scope.locationMatches = [];\r\n $scope.Selected.Location.length = 0;\r\n $scope.location_modal = {};\r\n var regex = RegExp($scope.locationEntry, \"gi\"); //global + case insensitive\r\n var entryLength = $scope.locationEntry.length;\r\n if(entryLength < 2)\r\n return;\r\n\r\n $scope.datasetLocations.forEach(function (location) {\r\n if (location.Label == null || location.Label == \"\") {\r\n return;\r\n }\r\n\r\n if (regex.test(location.Label)) {\r\n $scope.locationMatches.push(location);\r\n }\r\n });\r\n console.log(\"found \" + $scope.locationMatches.length + \" matches\");\r\n };\r\n\r\n $scope.selectLocation = function(){\r\n if(!$scope.Selected)\r\n return;\r\n var location = angular.fromJson($scope.Selected.Location[0]); //this is the trick\r\n $scope.location_modal.LocationId = location.Id;\r\n $scope.location_modal.Location = location;\r\n }\r\n\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n\r\n $scope.addLocationModal = function(){\r\n //$scope.person_modal = $scope.contact_modal;\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/contacts/templates/add-person-modal.html',\r\n controller: 'AddPersonModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_location) {\r\n\r\n //saved_person.Label = (saved_person.Organization) ? saved_person.Organization : saved_person.FullName;\r\n // if (saved_person.Label == null || saved_person.Label == \"\")\r\n // saved_person.Label = saved_person.FirstName + \" \" + saved_person.LastName;\r\n\r\n $scope.Locations.push(saved_location);\r\n $scope.location_modal.LocationId = saved_location.Id;\r\n //$(function () { $(\"#persons-select\").select2(); });\r\n });\r\n }\r\n\r\n\r\n }\r\n];\r\n\r\nexport default modal_edit_location;\r\n","// defines the dataset module and all dataset controllers.\r\nimport * as angular from 'angular';\r\n//load the components for this module\r\n// require([\r\n\r\n// //loads the dataset functions\r\nimport * as datasets_functions from './datasets-functions';\r\n//\r\n// //loads the dataset filters\r\n// import * as datasets_filters from './datasets-filters';\r\nimport dataset_service from \"./services/dataset-service\";\r\nimport grid_service from \"../common/components/grid/grid-service\";\r\nimport dataset_activities_list from \"./components/dataset-activities-list/dataset-activities-list\";\r\nimport dataset_query from \"./components/dataset-query/dataset-query\";\r\nimport datasets_list from \"./components/datasets-list/datasets-list\";\r\nimport dataset_query_view_all_records from \"./components/dataset-query/dataset-query-view-all-records\";\r\nimport dataset_import from \"./components/dataset-import/dataset-import\";\r\nimport table_editor from \"./components/dataset-table/table\";\r\nimport modal_dataset_duplicates from \"./components/dataset-import/modal-dataset-duplicates\";\r\nimport modal_qa_update from \"./components/dataset-view/modal-qa-update\";\r\nimport modal_create_season from \"./components/dataset-seasons-list/modal-create-season\";\r\nimport modal_map_locations from \"./components/dataset-import/modal-map-locations\";\r\nimport modal_activities_grid from \"./components/dataset-import/modal-activities-grid\";\r\nimport dataset_detail from \"./components/dataset-detail/dataset-detail\";\r\nimport modal_data_entry from \"./components/dataset-view/modal-data-entry\";\r\nimport dataset_edit_form from \"./components/dataset-editor/dataset-edit-form\";\r\nimport modal_save_status from \"./components/dataset-editor/modal-save-status\";\r\nimport table_data_modal from \"./components/dataset-table/table-data-modal\";\r\nimport big_bucket_query from \"./components/dataset-query/big-bucket-query\";\r\nimport dataset_seasons_list from \"./components/dataset-seasons-list/dataset-seasons-list\";\r\nimport {cdmsShareUrl, serviceUrl} from \"../../config\";\r\nimport {array_count, orderByAlpha} from \"../common/common-functions\";\r\nimport activity_parser from \"./services/activity-parser\";\r\nimport convert_status from \"./services/convert-status\";\r\n//\r\n// //load all components for the dataset module\r\n// 'core/datasets/components/dataset-activities-list/dataset-activities-list',\r\n// 'core/datasets/components/dataset-detail/dataset-detail',\r\n// 'core/datasets/components/dataset-editor/dataset-edit-form',\r\n// 'core/datasets/components/datasets-list/datasets-list',\r\n// 'core/datasets/components/dataset-view/modal-qa-update',\r\n// 'core/datasets/components/dataset-view/modal-data-entry',\r\n// 'core/datasets/components/dataset-import/dataset-import',\r\n// 'core/datasets/components/dataset-import/modal-dataset-duplicates',\r\n// 'core/datasets/components/dataset-import/modal-map-locations',\r\n// 'core/datasets/components/dataset-import/modal-activities-grid',\r\n// 'core/datasets/components/dataset-query/dataset-query',\r\n// 'core/datasets/components/dataset-query/dataset-query-view-all-records',\r\n// 'core/datasets/components/dataset-query/big-bucket-query',\r\n// 'core/datasets/components/dataset-seasons-list/dataset-seasons-list',\r\n// 'core/datasets/components/dataset-seasons-list/modal-create-season',\r\n// 'core/datasets/components/dataset-table/table',\r\n// 'core/datasets/components/dataset-table/table-data-modal',\r\n//\r\n// //loads the chart functions\r\n// 'core/datasets/components/dataset-table/charts/zingCharts',\r\n//\r\n// //load the various dataset services\r\n// 'core/datasets/services/dataset-service',\r\n// 'core/datasets/services/activity-parser',\r\n// 'core/datasets/services/convert-status',\r\n//'core/datasets/services/datasheet',\r\n\r\n// ], function () {\r\n//add the controllers and services to the module once the files are loaded!\r\nconst datasets_module = angular.module('DatasetModule', ['ui.bootstrap', 'ngResource', 'ngFileUpload']);\r\n//controllers\r\ndatasets_module.controller('DatasetActivitiesCtrl', dataset_activities_list);\r\ndatasets_module.controller('DatasetDetailsCtrl', dataset_detail);\r\ndatasets_module.controller('DataEditCtrl', dataset_edit_form);\r\ndatasets_module.controller('DatasetsListCtrl', datasets_list);\r\ndatasets_module.controller('ModalQaUpdateCtrl', modal_qa_update);\r\ndatasets_module.controller('ModalDataEntryCtrl', modal_data_entry);\r\ndatasets_module.controller(\"DatasetImportCtrl\", dataset_import);\r\ndatasets_module.controller('ModalDuplicatesViewCtrl', modal_dataset_duplicates);\r\ndatasets_module.controller('DataQueryCtrl', dataset_query);\r\ndatasets_module.controller('DataQueryViewAllRecordsCtrl', dataset_query_view_all_records);\r\ndatasets_module.controller('DatastoreQueryCtrl', big_bucket_query);\r\ndatasets_module.controller('DatasetSeasonsCtrl', dataset_seasons_list);\r\ndatasets_module.controller('ModalCreateSeasonCtrl', modal_create_season);\r\ndatasets_module.controller('ModalMapLocationsCtrl', modal_map_locations);\r\ndatasets_module.controller('ModalActivitiesGridCtrl', modal_activities_grid);\r\ndatasets_module.controller('ModalSaveStatusCtrl', modal_save_status);\r\ndatasets_module.controller('TableCtrl', table_editor);\r\ndatasets_module.controller('TableDataModal', table_data_modal);\r\ndatasets_module.service('DatasetService', dataset_service);\r\ndatasets_module.service('GridService', grid_service);\r\ndatasets_module.service('ActivityParser', activity_parser);\r\ndatasets_module.service('ConvertStatus', convert_status);\r\n\r\ndatasets_module.factory('DatasetFiles', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/file/getdatasetfiles', {}, {\r\n query: {method: 'GET', params: {id: 'datasetId'}, isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('Activities', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/activity/getdatasetactivities', {}, {\r\n query: {method: 'GET', params: {id: 'datasetId'}, isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('GetSeasons', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/season/getseasons', {}, {\r\n query: {method: 'GET', params: {id: 'datasetId'}, isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('SaveSeason', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/season/saveseason');\r\n}]);\r\n\r\ndatasets_module.factory('RemoveSeason', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/season/removeseason');\r\n}]);\r\n\r\ndatasets_module.factory('ActivitiesForView', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/activity/getdatasetactivitiesview', {}, {\r\n query: {method: 'GET', params: {id: 'datasetId'}, isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('CreelSurveyActivitiesForView', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/activity/getcreelsurveydatasetactivitiesview', {}, {\r\n query: {method: 'GET', params: {id: 'datasetId'}, isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('Dataset', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/dataset/getdataset', {}, {\r\n query: {method: 'GET', params: {id: 'datasetId'}, isArray: false}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('Datasets', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/dataset/getdatasets', {}, {\r\n query: {method: 'GET', params: {}, isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('GetDatasetsList', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/dataset/getdatasetslist', {}, {\r\n query: {method: 'GET', params: {}, isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('GetAllDatasetsList', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/dataset/getalldatasetslist', {}, {\r\n query: {method: 'GET', params: {}, isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('GetTableData', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/table/gettabledata', {}, {\r\n query: {method: 'GET', params: {id: 'id'}, isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('SaveTableData', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/table/savetabledata', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('DeleteTableData', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/table/deletetabledata', {}, {\r\n save: {method: 'POST', isArray: false}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('GetChildTableData', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/table/getchildtabledata', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('GetTableFiles', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/table/gettablefiles', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('DeleteTableFile', ['$resource', function ($resource) {\r\n // return $resource(serviceUrl + '/api/v1/table/DeleteFile');\r\n return $resource(serviceUrl + '/api/v1/file/removeselectedmultipanelfile');\r\n}]);\r\n\r\ndatasets_module.factory('TableNotification', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/table/notify');\r\n}]);\r\n\r\n\r\ndatasets_module.factory('Data', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/activity/getdatasetactivitydata', {}, {\r\n query: {method: 'GET', params: {id: 'activityId'}, isArray: false}\r\n });\r\n}]);\r\n\r\n// datasets_module.factory('SaveActivitiesAction', ['$resource', function ($resource) {\r\n// return $resource(serviceUrl + '/api/v1/activity/savedatasetactivities');\r\n// }]);\r\n\r\ndatasets_module.factory('SaveActivitiesAction', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/activity/savedatasetactivities', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\n// datasets_module.factory('UpdateActivitiesAction', ['$resource', function ($resource) {\r\n// return $resource(serviceUrl + '/api/v1/activity/updatedatasetactivities');\r\n// }]);\r\n\r\ndatasets_module.factory('UpdateActivitiesAction', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/activity/updatedatasetactivities', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('QueryActivitiesAction', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/query/querydatasetactivities', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('ExportActivitiesAction', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/export/exportdatasetactivities', {}, {\r\n save: {method: 'POST', isArray: false}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('DeleteActivitiesAction', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/activity/deletedatasetactivities2', {}, {\r\n //save: {method: 'POST', isArray: false}\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('SetQaStatusAction', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/activity/setqastatus');\r\n}]);\r\n\r\n//shouldn't this have an ID parameter? my guess is we don't actually use this anywhere...\r\ndatasets_module.factory('GetDatastore', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/datastore/getdatastore', {}, {\r\n query: {\r\n method: 'GET',\r\n params: {},\r\n isArray: false\r\n }\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('GetAllDatastores', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/datastore/getdatastores');\r\n}]);\r\n\r\ndatasets_module.factory('GetDatastoreDatasets', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/datastore/getdatastoredatasets');\r\n}]);\r\n\r\ndatasets_module.factory('GetHeadersDataForDataset', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/dataset/getheadersdatafordataset');\r\n}]);\r\n\r\ndatasets_module.factory('DeleteDatasetFile', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/file/deletedatasetfile');\r\n}]);\r\n\r\ndatasets_module.factory('DeleteMultiPanelFile', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/file/deletemultipanelfile');\r\n}]);\r\n\r\ndatasets_module.factory('GetRelationData', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/dataset/getrelationdata', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('AddDatasetToProject', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/dataset/adddatasettoproject')\r\n}]);\r\n\r\ndatasets_module.factory('UpdateDataset', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/dataset/updatedataset');\r\n}]);\r\n\r\n\r\ndatasets_module.factory('MigrationYears', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/list/getmigrationyears', {}, {\r\n query: {method: 'GET', params: {id: 'datasetId'}, isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('RunYears', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/list/getrunyears', {}, {\r\n query: {method: 'GET', params: {id: 'datasetId'}, isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('ReportYears', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/list/getreportyears', {}, {\r\n query: {method: 'GET', params: {id: 'datasetId'}, isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('BenthicSampleYears', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/list/getbenthicsampleyears', {}, {\r\n query: {method: 'GET', params: {id: 'datasetId'}, isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('DriftSampleYears', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/list/getdriftsampleyears', {}, {\r\n query: {method: 'GET', params: {id: 'datasetId'}, isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('SpawningYears', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/list/getspawningyears', {}, {\r\n query: {method: 'GET', params: {id: 'datasetId'}, isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('BroodYears', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/list/getbroodyears', {}, {\r\n query: {method: 'GET', params: {id: 'datasetId'}, isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('OutmigrationYears', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/list/getoutmigrationyears', {}, {\r\n query: {method: 'GET', params: {id: 'datasetId'}, isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('SpecificActivities', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/activity/queryspecificactivities', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('SpecificActivitiesWithBounds', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/activity/queryspecificactivitieswithbounds', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('SpecificWaterTempActivities', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/activity/queryspecificwatertempactivities', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('SpecificCreelSurveyActivities', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/activity/queryspecificcreelsurveyactivities', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\ndatasets_module.factory('SpecificScrewTrapActivities', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/activity/queryspecificscrewtrapactivities', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\n\r\ndatasets_module.factory('HasExistingActivity', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/activity/HasExistingActivity', {}, {\r\n save: {method: 'POST', isArray: false}\r\n });\r\n}]);\r\n\r\n\r\ndatasets_module.filter('dataGrade', function () {\r\n return function (check) {\r\n if (!check)\r\n return;\r\n\r\n var grade = \"N/A\";\r\n\r\n if (check.CheckMethod == 1)\r\n grade = check.Bath1Grade + \"-\" + check.Bath2Grade;\r\n else if (check.CheckMethod == 2)\r\n grade = check.Bath1Grade;\r\n\r\n return grade;\r\n }\r\n}).filter('checkmark', function () {\r\n return function (input) {\r\n return (input == null) ? '\\u2713' : '\\u2718';\r\n };\r\n})\r\n .filter('units', function () {\r\n return function (input) {\r\n return (input == null) ? '' : ' (' + input + ')';\r\n };\r\n })\r\n .filter('locationNameFilter', ['$rootScope', function ($rootScope) {\r\n return function (input) {\r\n if ($rootScope.locationOptions[input])\r\n return $rootScope.locationOptions[input];\r\n\r\n return input;\r\n };\r\n }])\r\n .filter('instrumentFilter', ['$rootScope', function ($rootScope) {\r\n return function (input) {\r\n if ($rootScope.instrumentOptions[input]) {\r\n return $rootScope.instrumentOptions[input];\r\n }\r\n return input;\r\n };\r\n }])\r\n .filter('timezoneFilter', ['$rootScope', function ($rootScope) {\r\n return function (input) {\r\n if ($rootScope.timezoneOptions[input]) {\r\n return $rootScope.timezoneOptions[input];\r\n }\r\n return input;\r\n };\r\n }])\r\n .filter('QAStatusFilter', ['$rootScope', function ($rootScope) {\r\n return function (input) {\r\n if ($rootScope.QAStatusOptions[input])\r\n return $rootScope.QAStatusOptions[input];\r\n\r\n return input;\r\n };\r\n }])\r\n .filter('fishermanFilter', ['$rootScope', function ($rootScope) {\r\n return function (input) {\r\n //console.log(\"input = \" + input);\r\n if ((typeof input !== 'undefined') && (input !== null)) {\r\n return $rootScope.fishermenOptions[input];\r\n } else {\r\n return null;\r\n }\r\n\r\n //if($rootScope.FishermanOptions[input])\r\n if ($rootScope.fishermenOptions[input]) {\r\n //return $rootScope.FishermanOptions[input];\r\n return $rootScope.fishermenOptions[input];\r\n }\r\n //return input;\r\n };\r\n }])\r\n .filter('DataGradeMethod', ['$rootScope', function ($rootScope) {\r\n return function (input) {\r\n return $rootScope.DataGradeMethods[input];\r\n };\r\n }])\r\n .filter('arrayValues', function () {\r\n return function (input) {\r\n var result = '';\r\n if (input) {\r\n\r\n try {\r\n result = angular.fromJson(input).toString();\r\n } catch (e) {\r\n result = input;\r\n }\r\n /*\r\n var vals = angular.fromJson(input);\r\n angular.forEach(vals, function(item){\r\n if(result != '')\r\n result += ',';\r\n result += item;\r\n });\r\n */\r\n }\r\n\r\n return result;\r\n };\r\n })\r\n .filter('arrayDisplayValue', function () {\r\n return function (input, field) {\r\n //console.log(\" ----- Field: \" + field.DbColumnName);\r\n //console.dir(input);\r\n //console.dir(field.PossibleValues);\r\n\r\n var result = '';\r\n var the_val = '';\r\n\r\n if (input) {\r\n\r\n try {\r\n the_val = angular.fromJson(input).toString();\r\n //console.dir(the_val);\r\n //console.dir(field.PossibleValues);\r\n\r\n } catch (e) {\r\n //console.dir(e);\r\n the_val = input;\r\n }\r\n }\r\n\r\n //if multiselect and we have more than one value, compose them\r\n if (Array.isArray(the_val)) {\r\n var arr_result = [];\r\n the_val.forEach(function (val) {\r\n arr_result.push(field.PossibleValues[val]);\r\n });\r\n result = arr_result.join(\",\");\r\n } else {\r\n //otherwise single select, return the matched value\r\n result = field.PossibleValues[the_val];\r\n }\r\n\r\n if (!result)\r\n result = the_val;\r\n\r\n return result;\r\n };\r\n })\r\n .filter('RowQAStatusFilter', ['$rootScope', function ($rootScope) {\r\n return function (input) {\r\n if ($rootScope.RowQAStatuses[input]) {\r\n return $rootScope.RowQAStatuses[input];\r\n } else {\r\n return 'unknown';\r\n }\r\n };\r\n }])\r\n .filter('urlsFromString', ['$sce', '$rootScope', function ($sce, $rootScope) {\r\n return function (input) {\r\n //console.log(\"Inside urlsFromString...\");\r\n //console.log(\"input is next...\");\r\n //console.dir(input);\r\n let retval: any = [];\r\n if (input) {\r\n var urls = angular.fromJson(input);\r\n angular.forEach(urls, function (aUrl) {\r\n //console.log(\"aUrl is next...\");\r\n //console.dir(aUrl);\r\n var theTarget = \"_blank\";\r\n retval.push(\"\" + aUrl.Name + \"\");\r\n });\r\n }\r\n if (retval.length == 0) {\r\n retval = \" \";\r\n } else {\r\n retval = retval.join(\",\");\r\n }\r\n\r\n return $sce.trustAsHtml(retval);\r\n };\r\n }])\r\n .filter('fileNamesFromString', ['$sce', function ($sce) { // to use this filter you need to pass in the scope in the filter call: \"| fileNamesFromString:this\"\r\n return function (input, $scope) {\r\n //console.log($scope.project.Id);\r\n //console.log(\"Inside fileNamesFromString...\");\r\n //console.log(\"input is next...\");\r\n //console.dir(input);\r\n let retval: any = [];\r\n var fileIsString = false;\r\n if (input) {\r\n //var files = angular.fromJson(input); // Original line\r\n var files = null;\r\n try {\r\n files = angular.fromJson(input);\r\n } catch (err) {\r\n files = [];\r\n files.push(input);\r\n fileIsString = true;\r\n }\r\n\r\n files.forEach(function (file) {\r\n\r\n var theTarget = \"_blank\";\r\n\r\n if (file.hasOwnProperty(\"Link\")) {\r\n retval.push(\"\" + file.Name + \"\");\r\n return;\r\n }\r\n\r\n // Although datasets-filters handles assembling the file link when viewing,\r\n // During a save operation, this section is used.\r\n if (!$scope.viewSubproject) // We are working with a project, dataset, or new subproject file.\r\n {\r\n if ($scope.newSubproject) // New subproject, with no viewSubproject yet.\r\n {\r\n //console.log(\"This is a subproject file.\");\r\n if (fileIsString) {\r\n retval.push(\"\" + file + \"\");\r\n } else\r\n retval.push(\"\" + file.Name + \"\");\r\n } else if ($scope.dataset && $scope.dataset.Id) // It's a dataset\r\n {\r\n //console.log(\"This is a dataset file.\");\r\n if (fileIsString) {\r\n retval.push(\"\" + file + \"\");\r\n } else\r\n retval.push(\"\" + file.Name + \"\");\r\n\r\n }\r\n // Project files are handled in projects/components/project-detail/project-files.js\r\n else // It's a project\r\n {\r\n console.log(\"This is a project file.\");\r\n if (fileIsString) {\r\n retval.push(\"\" + file + \"\");\r\n } else\r\n retval.push(\"\" + file.Name + \"\");\r\n }\r\n } else // We are working with a subproject file.\r\n {\r\n //console.log(\"This is a subproject file.\");\r\n //console.log(\"$rootScope.projectId = \" + $rootScope.projectId);\r\n if (fileIsString) {\r\n retval.push(\"\" + file + \"\");\r\n } else\r\n retval.push(\"\" + file.Name + \"\");\r\n\r\n }\r\n });\r\n }\r\n\r\n if (retval.length == 0) {\r\n retval = \" \";\r\n }else {\r\n retval = retval.join(\"
\");\r\n }\r\n return $sce.trustAsHtml(retval);\r\n\r\n };\r\n }]).filter('countItems', ['$sce', function ($sce) {\r\n return function (input) {\r\n var retval = '-';\r\n if (input) {\r\n retval = array_count(input) + \"\";\r\n }\r\n return $sce.trustAsHtml(retval);\r\n }\r\n}]).filter('orderByObjectValue', function () {\r\n\r\n return function (obj) {\r\n var array = [];\r\n\r\n Object.keys(obj).forEach(function (key) {\r\n array.push({Id: key, Label: obj[key]});\r\n });\r\n\r\n // apply a custom sorting function\r\n array.sort(orderByAlpha);\r\n\r\n //console.dir(array);\r\n return array;\r\n };\r\n}).filter('orderAlpha', function () {\r\n return function (items) {\r\n var filtered = [];\r\n\r\n Object.keys(items).forEach(function (key) {\r\n filtered.push({key: items[key]});\r\n });\r\n\r\n filtered.sort(function (a, b) {\r\n var aVal = \"\";\r\n var bVal = \"\";\r\n\r\n for (let key in Object.keys(a)) {\r\n aVal = a[key];\r\n }\r\n\r\n for (let key in Object.keys(b)) {\r\n bVal = b[key];\r\n }\r\n\r\n /* not supported in IE\r\n for(let [akey,avalue] of Object.entries(a)){\r\n aVal = avalue;\r\n for( let [bkey,bvalue] of Object.entries(b)){\r\n bVal = bvalue;\r\n }\r\n }\r\n */\r\n\r\n return aVal > bVal ? 1 : -1;\r\n });\r\n //console.dir(filtered);\r\n return filtered;\r\n };\r\n});\r\n\r\n// });\r\n\r\nexport default datasets_module;\r\n","//Permits api\r\n\r\nimport {PERMIT_PROJECTID, serviceUrl} from \"../../config\";\r\n\r\n\r\n\r\nconst permit_services = ['$q',\r\n\r\n 'AllPermits',\r\n 'GetGroupPermits',\r\n 'GetPermitContacts',\r\n 'GetPermitParcels',\r\n 'GetPermitEvents',\r\n 'GetPermitFiles',\r\n 'SavePermit',\r\n 'GetAllPersons',\r\n 'SavePermitContact',\r\n 'SavePerson',\r\n 'RemovePermitContact',\r\n 'RemovePermitLocation',\r\n 'AllParcels',\r\n 'SavePermitParcel',\r\n 'RemovePermitParcel',\r\n 'SavePermitEvent',\r\n 'RoutingPermits',\r\n 'InspectionPermits',\r\n 'DeletePermitFile',\r\n 'GetRelatedParcels',\r\n 'GetExpiringPermits',\r\n 'GetOutstandingRequests',\r\n 'GetPermitStatistics',\r\n 'GetMyPermitStatistics',\r\n 'GetPermitByPermitNumber',\r\n 'GetPublicHearingPermits',\r\n 'GetNotifications',\r\n 'GetPermitRoutes',\r\n 'GetPermitTypes',\r\n 'DeletePerson',\r\n 'GetPermitEventsByItemType',\r\n 'GetPermitEventsForMe',\r\n 'DownloadInspectionTemplate',\r\n 'GetPermitLocations',\r\n 'GetAllPermitLocations',\r\n 'GetPermitDatasetLocations',\r\n 'SavePermitLocation',\r\n 'SearchPermits',\r\n\r\n function ($q,\r\n\r\n AllPermits,\r\n GetGroupPermits,\r\n GetPermitContacts,\r\n GetPermitParcels,\r\n GetPermitEvents,\r\n GetPermitFiles,\r\n SavePermit,\r\n GetAllPersons,\r\n SavePermitContact,\r\n SavePerson,\r\n RemovePermitContact,\r\n RemovePermitLocation,\r\n AllParcels,\r\n SavePermitParcel,\r\n RemovePermitParcel,\r\n SavePermitEvent,\r\n RoutingPermits,\r\n InspectionPermits,\r\n DeletePermitFile,\r\n GetRelatedParcels,\r\n GetExpiringPermits,\r\n GetOutstandingRequests,\r\n GetPermitStatistics,\r\n GetMyPermitStatistics,\r\n GetPermitByPermitNumber,\r\n GetPublicHearingPermits,\r\n GetNotifications,\r\n GetPermitRoutes,\r\n GetPermitTypes,\r\n DeletePerson,\r\n GetPermitEventsByItemType,\r\n GetPermitEventsForMe,\r\n DownloadInspectionTemplate,\r\n GetPermitLocations,\r\n GetAllPermitLocations,\r\n GetPermitDatasetLocations,\r\n SavePermitLocation,\r\n SearchPermits\r\n\r\n ) {\r\n var service = {\r\n\r\n getAllPermits: function (Id) {\r\n //return AllPermits.query();\r\n return AllPermits.query({DatasetId: Id}); \r\n },\r\n\r\n getGroupPermits: function (Id) {\r\n return GetGroupPermits.query({Id: Id});\r\n },\r\n\r\n getInspectionPermits: function () {\r\n return InspectionPermits.query();\r\n },\r\n\r\n getRoutingPermits: function () {\r\n return RoutingPermits.query();\r\n },\r\n\r\n getAllParcels: function () {\r\n return AllParcels.query();\r\n },\r\n\r\n getPermitContacts: function (Id) {\r\n return GetPermitContacts.query({ Id: Id });\r\n },\r\n\r\n getPermitParcels: function (Id) {\r\n return GetPermitParcels.query({ Id: Id });\r\n },\r\n\r\n getPermitTypes: function () {\r\n return GetPermitTypes.query();\r\n },\r\n\r\n getPermitEvents: function (Id) {\r\n return GetPermitEvents.query({ Id: Id });\r\n },\r\n\r\n getPermitEventsForMe: function () {\r\n return GetPermitEventsForMe.query();\r\n },\r\n\r\n getPermitEventsByItemType: function (itemType) {\r\n return GetPermitEventsByItemType.save({ ItemType: itemType });\r\n },\r\n\r\n getPermitFiles: function (ProjectId, PermitId) {\r\n //return GetPermitFiles.query({ ProjectId: PERMIT_PROJECTID, PermitId: PermitId });\r\n return GetPermitFiles.query({ ProjectId: ProjectId, PermitId: PermitId });\r\n },\r\n\r\n getPermitsByRelatedParcels: function (ParcelId) {\r\n return GetRelatedParcels.query({ ParcelId: ParcelId });\r\n },\r\n\r\n savePermit: function (permit) {\r\n return SavePermit.save({ Permit: permit });\r\n },\r\n\r\n savePerson: function (person) {\r\n return SavePerson.save({ Person: person });\r\n },\r\n\r\n savePermitContact: function (permitcontact) {\r\n return SavePermitContact.save({ PermitContact: permitcontact });\r\n },\r\n\r\n savePermitLocation: function (permitId, permitLocationId) {\r\n return SavePermitLocation.save({ PermitId: permitId, PermitLocationId: permitLocationId });\r\n },\r\n\r\n getAllPersons: function (Id) {\r\n return GetAllPersons.query();\r\n },\r\n\r\n removeContact: function (permitcontact) {\r\n return RemovePermitContact.save({ PermitContact: permitcontact });\r\n },\r\n\r\n removePermitLocation: function (permitId) {\r\n return RemovePermitLocation.save({ PermitId: permitId });\r\n },\r\n\r\n savePermitParcel: function (permitparcel) {\r\n return SavePermitParcel.save({ PermitParcel: permitparcel });\r\n },\r\n\r\n removePermitParcel: function (permitparcel) {\r\n return RemovePermitParcel.save({ PermitParcel: permitparcel });\r\n },\r\n\r\n savePermitEvent: function (permitevent) {\r\n return SavePermitEvent.save({ PermitEvent: permitevent });\r\n },\r\n\r\n deletePermitFile: function (projectId, subprojectId, itemId, file) {\r\n return DeletePermitFile.save({ ProjectId: projectId, SubprojectId: subprojectId, ItemId: itemId, File: file });\r\n },\r\n\r\n deletePerson: function(Id){\r\n return DeletePerson.save({Id: Id});\r\n },\r\n\r\n downloadInspectionDocument: function(permitEventId){\r\n return DownloadInspectionTemplate.save({PermitEventId: permitEventId});\r\n },\r\n\r\n getOutstandingRequests: function () {\r\n return GetOutstandingRequests.query();\r\n },\r\n\r\n getExpiringPermits: function () {\r\n return GetExpiringPermits.query();\r\n },\r\n\r\n getPermitStatistics: function () {\r\n return GetPermitStatistics.query();\r\n },\r\n\r\n getMyPermitStatistics: function () {\r\n return GetMyPermitStatistics.query();\r\n },\r\n\r\n getPermitByPermitNumber: function (permitnumber) {\r\n return GetPermitByPermitNumber.query({ PermitNumber: permitnumber });\r\n },\r\n\r\n getPublicHearingPermits: function () {\r\n return GetPublicHearingPermits.query();\r\n },\r\n\r\n getPermitRoutes: function () {\r\n return GetPermitRoutes.query();\r\n },\r\n\r\n getPermitRoutesByItemType: function (eventType, itemType) {\r\n return GetPermitRoutes.query({ EventType: eventType, ItemType: itemType });\r\n },\r\n\r\n getNotifications: function () {\r\n return GetNotifications.query({ Module: 'Permits' });\r\n },\r\n\r\n getPermitLocations: function (Id) {\r\n return GetPermitLocations.query({Id: Id});\r\n },\r\n\r\n getAllPermitLocations: function () {\r\n return GetAllPermitLocations.query();\r\n },\r\n\r\n getPermitDatasetLocations: function (Id) {\r\n return GetPermitDatasetLocations.query({Id: Id});\r\n },\r\n\r\n searchPermits: function(search_term) {\r\n return SearchPermits.save({Search: search_term});\r\n }\r\n\r\n };\r\n\r\n return service;\r\n\r\n }\r\n];\r\n\r\nexport default permit_services;\r\n","//Leasing api\r\n\r\n//import {serviceUrl} from \"../../config\";\r\n// import leasing_module from \"./leasing-module\";\r\n\r\n\r\n\r\n\r\nimport {METADATA_ENTITY_LEASING, METADATA_ENTITY_LEASING_SYSTEM} from \"../../config\";\r\n\r\nconst lease_service = ['$q',\r\n 'ActiveLeases',\r\n 'GetLease',\r\n 'PendingLeases',\r\n 'AvailableFields',\r\n 'GetOperators',\r\n 'SaveLease',\r\n 'SaveCropPlan',\r\n 'SaveInspection',\r\n 'SaveProduction',\r\n 'GetLeaseRevisions',\r\n 'GetInspectionViolations',\r\n 'SaveInspectionViolation',\r\n 'AllLeases',\r\n 'SaveOperator',\r\n 'GetLookups',\r\n 'PutMetadataProperty',\r\n 'GetMetadataProperty',\r\n 'GetCropPlanRevisions',\r\n 'ExpireLeases',\r\n 'AvailableAllotments',\r\n 'GetLeasesByField',\r\n 'DeleteOperator',\r\n 'RemoveProduction',\r\n 'RemoveInspection',\r\n function ($q,\r\n ActiveLeases,\r\n GetLease,\r\n PendingLeases,\r\n AvailableFields,\r\n GetOperators,\r\n SaveLease,\r\n SaveCropPlan,\r\n SaveInspection,\r\n SaveProduction,\r\n GetLeaseRevisions,\r\n GetInspectionViolations,\r\n SaveInspectionViolation,\r\n AllLeases,\r\n SaveOperator,\r\n GetLookups,\r\n PutMetadataProperty,\r\n GetMetadataProperty,\r\n GetCropPlanRevisions,\r\n ExpireLeases,\r\n AvailableAllotments,\r\n GetLeasesByField,\r\n DeleteOperator,\r\n RemoveProduction,\r\n RemoveInspection\r\n ) {\r\n var service = {\r\n\r\n getAllLeases: function () {\r\n return AllLeases.query();\r\n },\r\n\r\n getActiveLeases: function () {\r\n return ActiveLeases.query();\r\n },\r\n\r\n getLease: function (id) {\r\n return GetLease.query({ id: id });\r\n },\r\n\r\n getLeasesByField: function (id) {\r\n return GetLeasesByField.query({ id: id });\r\n },\r\n\r\n getPendingLeases: function () {\r\n return PendingLeases.query();\r\n },\r\n\r\n getAvailableFields: function () {\r\n return AvailableFields.query();\r\n },\r\n\r\n getAvailableAllotments: function () {\r\n return AvailableAllotments.query();\r\n },\r\n\r\n getOperators: function () {\r\n return GetOperators.query();\r\n },\r\n\r\n saveLease: function (lease, cropshareremove) {\r\n var cropshares = lease.LeaseCropShares;\r\n delete lease.LeaseCropShares;\r\n return SaveLease.save({ Lease: lease, LeaseCropShares: cropshares, CropShareRemove: cropshareremove });\r\n },\r\n\r\n saveCropPlan: function (lease, plan) {\r\n return SaveCropPlan.save({ Lease: lease, CropPlan: plan });\r\n },\r\n\r\n saveInspection: function (inspection) {\r\n return SaveInspection.save({ Inspection: inspection });\r\n },\r\n\r\n expireLeases: function () {\r\n return ExpireLeases.query();\r\n },\r\n\r\n saveProduction: function (production) {\r\n return SaveProduction.save({ Production: production});\r\n },\r\n\r\n removeProduction: function(productionId) {\r\n return RemoveProduction.save({ ProductionId: productionId});\r\n },\r\n\r\n removeInspection: function(id){\r\n return RemoveInspection.save({InspectionId: id});\r\n },\r\n\r\n getLeaseRevisions: function (id) {\r\n return GetLeaseRevisions.query({ id: id });\r\n },\r\n\r\n getLeaseCropPlanRevisions: function (id) {\r\n return GetCropPlanRevisions.query({ id: id });\r\n },\r\n\r\n getInspectionViolations: function (params) {\r\n return GetInspectionViolations.query({ QueryParams: params });\r\n },\r\n\r\n saveInspectionViolation: function (inspectionviolation) {\r\n return SaveInspectionViolation.save({ Inspection: inspectionviolation });\r\n },\r\n\r\n saveOperator: function (operator) {\r\n return SaveOperator.save({ LeaseOperator: operator });\r\n },\r\n\r\n deleteOperator: function (operator) {\r\n console.dir(operator);\r\n return DeleteOperator.query({ Id: operator.Id });\r\n },\r\n\r\n getLookupLists: function () {\r\n\r\n var lists = GetLookups.query({ Id: METADATA_ENTITY_LEASING });\r\n lists.$promise.then(function () {\r\n lists.forEach(function (lookup_list) {\r\n lookup_list.ListValues = JSON.parse(lookup_list.PossibleValues);\r\n });\r\n })\r\n return lists;\r\n },\r\n\r\n getLeasingSystemValues: function () {\r\n\r\n return GetLookups.query({ Id: METADATA_ENTITY_LEASING_SYSTEM });\r\n },\r\n\r\n getLookupValues: function(property_id){\r\n var property = GetMetadataProperty.query({ id: property_id });\r\n property.$promise.then(function () {\r\n property.ListValues = JSON.parse(property.PossibleValues);\r\n });\r\n return property;\r\n },\r\n\r\n saveLookupList: function (metadata) {\r\n return PutMetadataProperty.update({ Id: metadata.Id }, metadata);\r\n }\r\n\r\n\r\n };\r\n\r\n return service;\r\n\r\n }\r\n];\r\n\r\nexport default lease_service;\r\n","export default \"\\r\\n\";","var my_preferences = ['$scope', 'UserService', 'ConvertStatus', '$location',\r\n function ($scope, UserService, ConvertStatus, $location) {\r\n\r\n $scope.savePreferences = function () {\r\n\r\n $scope.User = {\r\n Id: $scope.Profile.Id,\r\n Username: $scope.Profile.Username,\r\n Description: $scope.Profile.Description,\r\n DepartmentId: $scope.Profile.DepartmentId,\r\n Fullname: $scope.Profile.Fullname,\r\n Email: $scope.Profile.Email,\r\n Cell: $scope.Profile.Cell\r\n }\r\n// console.log(\"$scope.preferencesUpdate is next...\");\r\n// console.dir($scope.preferencesUpdate);\r\n\r\n $scope.savePreferencesResults = [];\r\n// console.log(\"$scope.savePreferencesResults = \" + $scope.savePreferencesResults);\r\n\r\n var userresult = UserService.saveUserInfo($scope.User, $scope);\r\n\r\n userresult.$promise.then(function () {\r\n var prefresult = UserService.saveUserPreference(\"LandingPage\", $scope.Profile.LandingPage);\r\n prefresult.$promise.then(function () {\r\n $scope.Message = \"Success\";\r\n }, function (data) {\r\n console.dir(data);\r\n $scope.Message = \"Failure\";\r\n });\r\n }, function (data) {\r\n console.dir(data);\r\n $scope.Message = \"Failed to save user.\";\r\n });\r\n\r\n };\r\n\r\n $scope.cancel = function () {\r\n $location.url(\"dashboard\");\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default my_preferences;\r\n","import * as angular from 'angular';\r\n\r\n//modal to edit metadata property (\"metafield\")\r\nvar modal_admin_edit_metadataproperty = ['$scope', '$uibModal','$uibModalInstance','CommonService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, CommonService) {\r\n\r\n console.dir($scope.field_to_edit);\r\n\r\n $scope.save = function () {\r\n\r\n $scope.parseValues();\r\n\r\n $scope.field_to_edit.PossibleValues = JSON.stringify($scope.field_to_edit.ListValues);\r\n\r\n // console.dir($scope.field_to_edit);\r\n var saved_field = CommonService.saveMetadataProperty($scope.field_to_edit);\r\n saved_field.$promise.then(function () {\r\n $uibModalInstance.close(saved_field);\r\n }, function (error) {\r\n console.dir(error);\r\n $scope.SaveMessage = \"Error: \" + error.data.ExceptionMessage;\r\n });\r\n\r\n };\r\n\r\n $scope.makeList = function (array_in) {\r\n var result = '';\r\n array_in.forEach(function (item) {\r\n result += item + \"\\n\";\r\n })\r\n\r\n return result;\r\n }\r\n\r\n $scope.parseValues = function () {\r\n //do some cleanup of the incoming data\r\n $scope.field_to_edit.Values = $scope.field_to_edit.Values.replace(/,|\"/g, \"\");\r\n\r\n $scope.field_to_edit.ListValues = $scope.field_to_edit.Values.trim().split('\\n');\r\n\r\n for (let i = 0; i < $scope.field_to_edit.ListValues.length; i++) {\r\n $scope.field_to_edit.ListValues[i] = $scope.field_to_edit.ListValues[i].trim();\r\n }\r\n\r\n $scope.field_to_edit.Values = $scope.makeList($scope.field_to_edit.ListValues);\r\n\r\n\r\n };\r\n\r\n\r\n\r\n $scope.loadPossibleValuesString = function () {\r\n\r\n if (!$scope.field_to_edit.PossibleValues) {\r\n $scope.field_to_edit.Values = \"\";\r\n return; //early return\r\n }\r\n\r\n\r\n try {\r\n $scope.field_to_edit.Values = $scope.makeList(angular.fromJson($scope.field_to_edit.PossibleValues));\r\n } catch (exception) {\r\n $scope.field_to_edit.Values = \"\";\r\n $scope.SaveMessage = \"Error: \" + exception.message;\r\n }\r\n }\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n $scope.loadPossibleValuesString();\r\n\r\n }\r\n];\r\n\r\nexport default modal_admin_edit_metadataproperty;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {\r\n valueFormatterArrayToList,\r\n valueFormatterBoolean,\r\n valueFormatterDate\r\n} from \"../../../../core/common/common-functions\";\r\nimport {LeaseModalScope} from \"./lease-scope\";\r\n// import leasing_module from \"../../leasing-module\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar pending_leases = ['$scope', '$route', '$filter', '$uibModal', '$location', '$window', '$rootScope', 'LeasingService',\r\n function ($scope, $route, $filter, $uibModal, $location, $window, $rootScope, LeasingService) {\r\n console.log(\"Inside pending leasing controller...\");\r\n\r\n $rootScope.inModule = \"leasing\";\r\n\r\n if (!$scope.Profile.hasRole(\"Leasing\"))\r\n angular.rootScope.go(\"/unauthorized\");\r\n\r\n $scope.currentPage = \"Pending\";\r\n $scope.canViewCropFields = $rootScope.Profile.hasRole(\"LeaseCropAdmin\");\r\n\r\n $scope.leases = LeasingService.getPendingLeases();\r\n\r\n LeaseModalScope.prepareLeaseModalScope($scope, LeasingService);\r\n\r\n $scope.leases.$promise.then(function () {\r\n $scope.leaseGridDiv = document.querySelector('#pending-leases-grid');\r\n new Grid($scope.leaseGridDiv, $scope.leaseGrid);\r\n\r\n $scope.countLevel = function (level) {\r\n return $filter('filter')($scope.leases, { Level: level }).length;\r\n };\r\n\r\n if ($rootScope.Profile.hasRole(\"LeasingEditor\")) {\r\n $scope.leaseGrid.columnApi.setColumnVisible(\"EditLinks\", true);\r\n $scope.leaseGrid.api.refreshHeader();\r\n }\r\n\r\n });\r\n\r\n var EditLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'View';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.viewLease(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openEditLeaseModal(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n //Modify editBtn.href from '#' to GIS Tax Parcel Viewer URL\r\n var editBtn = document.createElement('a'); editBtn.href = 'https://gisportal.ctuir.org/portal/apps/webappviewer/index.html?id=54fd175f4e2745ff92b278d04b987ad9'; editBtn.innerHTML = 'Map';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n //Change \"viewOnMap\" functionality to window.open() to open the GIS Tax Parcel\r\n // Viewer rather than the embedded map\r\n\r\n //$scope.viewOnMap(param.data);\r\n window.open(editBtn.href, '_blank');\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n\r\n var leaseColumnDefs = [\r\n { colId: 'EditLinks', width: 130, cellRenderer: EditLinksTemplate, menuTabs: [], hide: true},\r\n { headerName: \"Allotment\", field: \"AllotmentName\", width: 180, menuTabs: ['filterMenuTab'], filter: \"text\" },\r\n { headerName: \"TAAMS Number\", field: \"TAAMSNumber\", width: 160, menuTabs: ['filterMenuTab'], filter: \"text\" },\r\n { headerName: \"Lease Number\", field: \"LeaseNumber\", width: 160, menuTabs: ['filterMenuTab'], filter: \"text\" },\r\n { headerName: \"Level\", field: \"Level\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n {\r\n headerName: \"Days at Level\", width: 160,\r\n valueGetter: function (params) {\r\n //return moment(params.node.data.StatusDate).diff(moment(new Date()), 'd');\r\n return moment(new Date).diff(moment(params.node.data.StatusDate), 'd');\r\n }, menuTabs: ['filterMenuTab'], filter: \"number\"\r\n },\r\n {\r\n headerName: \"Transaction Date\",\r\n field: \"TransactionDate\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.DueDate) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.TransactionDate);\r\n },menuTabs: ['filterMenuTab'], filter: \"agDateColumnFilter\"\r\n\r\n },\r\n {\r\n headerName: \"Operator\", width: 160, valueGetter: function (params) {\r\n return (params.node.data.LeaseOperator.Organization) ? params.node.data.LeaseOperator.Organization : params.node.data.LeaseOperator.FirstName + \" \" + params.node.data.LeaseOperator.LastName;\r\n }, menuTabs: ['filterMenuTab'], filter: true\r\n },\r\n //{ headerName: \"Farm Number\", field: \"FarmNumber\", width: 160 },\r\n\r\n //{ headerName: \"Status\", field: \"Status\", width: 160 },\r\n\r\n { headerName: \"FSA Tract\", field: \"FSATractNumber\", width: 160, menuTabs: ['filterMenuTab'], filter: \"text\" },\r\n //{ headerName: \"HEL\", field: \"HEL\", width: 160 },\r\n { headerName: \"Lease Type\", field: \"LeaseType\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Lease Acres\", field: \"LeaseAcres\", width: 160, menuTabs: ['filterMenuTab'], filter: \"number\" },\r\n //{ headerName: \"Lease Duration\", field: \"LeaseDuration\", width: 160 },\r\n { headerName: \"Productive Acres\", field: \"ProductiveAcres\", width: 160, menuTabs: ['filterMenuTab'], filter: \"number\" },\r\n {\r\n headerName: \"Negotiate Date\",\r\n field: \"NegotiateDate\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.NegotiateDate) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.NegotiateDate);\r\n }, menuTabs: ['filterMenuTab'], filter: \"agDateColumnFilter\"\r\n },\r\n {\r\n headerName: \"Lease Start\",\r\n field: \"LeaseStart\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.LeaseStart) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.LeaseStart);\r\n }, menuTabs: ['filterMenuTab'], filter: \"agDateColumnFilter\"\r\n },\r\n {\r\n headerName: \"Lease End\",\r\n field: \"LeaseEnd\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.LeaseEnd) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.LeaseEnd);\r\n },menuTabs: ['filterMenuTab'], filter: \"agDateColumnFilter\"\r\n\r\n },\r\n {\r\n headerName: \"Under Internal Review?\", field: \"UnderInternalReview\", width: 160,\r\n valueGetter: function (params) {\r\n return valueFormatterBoolean(params.node.data.UnderInternalReview);\r\n },menuTabs: ['filterMenuTab'], filter: true\r\n },\r\n {\r\n headerName: \"Days Under Review\", width: 160,\r\n valueGetter: function (params) {\r\n\r\n if (!params.node.data.UnderInternalReview)\r\n return \"N/A\";\r\n\r\n return moment(new Date).diff(moment(params.node.data.InternalReviewStartDate), 'd');\r\n },menuTabs: ['filterMenuTab'], filter: \"number\"\r\n },\r\n {\r\n headerName: \"Due Date\",\r\n field: \"DueDate\", width: 160, menuTabs: ['filterMenuTab'], filter: \"text\"\r\n },\r\n {\r\n headerName: \"Approved Date\",\r\n field: \"ApprovedDate\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.ApprovedDate) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.ApprovedDate);\r\n },menuTabs: ['filterMenuTab'], filter: \"agDateColumnFilter\"\r\n\r\n }, {\r\n headerName: \"Withdrawl Date\",\r\n field: \"WithdrawlDate\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.WithdrawlDate) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.WithdrawlDate);\r\n },menuTabs: ['filterMenuTab'], filter: \"agDateColumnFilter\"\r\n\r\n },\r\n {\r\n headerName: \"Graze Start\",\r\n field: \"GrazeStart\", width: 160,menuTabs: ['filterMenuTab'], filter: false\r\n\r\n },\r\n {\r\n headerName: \"Graze End\",\r\n field: \"GrazeEnd\", width: 160,menuTabs: ['filterMenuTab'], filter: false\r\n },\r\n { headerName: \"Note\", field: \"Notes\", width: 160, menuTabs: ['filterMenuTab'], filter: \"text\" },\r\n { headerName: \"Residue Required Pct\", field: \"ResidueRequiredPct\", width: 160, menuTabs: ['filterMenuTab'], filter: \"number\", hide: !$scope.canViewCropFields },\r\n { headerName: \"Green CoverRequired Pct\", field: \"GreenCoverRequiredPct\", width: 160, menuTabs: ['filterMenuTab'], filter: \"number\", hide: !$scope.canViewCropFields },\r\n { headerName: \"Clod Required Pct\", field: \"ClodRequiredPct\", width: 160, menuTabs: ['filterMenuTab'], filter: \"number\", hide: !$scope.canViewCropFields },\r\n {\r\n headerName: \"Optional Alt Crop\", field: \"OptionalAlternativeCrop\", width: 160, hide: !$scope.canViewCropFields,\r\n valueGetter: function (params) {\r\n return valueFormatterBoolean(params.node.data.OptionalAlternativeCrop);\r\n }, menuTabs: ['filterMenuTab'], filter: true\r\n },\r\n { headerName: \"AUMs\", field: \"AUMs\", width: 160, menuTabs: ['filterMenuTab'], hide: !$scope.canViewCropFields, filter: true },\r\n\r\n { headerName: \"Dollar Per Annum\", field: \"DollarPerAnnum\", width: 160, menuTabs: ['filterMenuTab'], filter: \"number\" },\r\n { headerName: \"Dollar Advance\", field: \"DollarAdvance\", width: 160, menuTabs: ['filterMenuTab'], filter: \"number\" },\r\n { headerName: \"Dollar Bond\", field: \"DollarBond\", width: 160, menuTabs: ['filterMenuTab'], filter: \"number\" },\r\n { headerName: \"Lease Fee\", field: \"LeaseFee\", width: 160, menuTabs: ['filterMenuTab'], filter: \"number\" },\r\n { headerName: \"Graze Animal\", field: \"GrazeAnimal\", width: 160, menuTabs: ['filterMenuTab'], filter: true,\r\n valueFormatter: function (params) {\r\n return valueFormatterArrayToList(params.node.data.GrazeAnimal);\r\n }\r\n },\r\n\r\n\r\n { headerName: \"Status By\", field: \"StatusBy\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n {\r\n headerName: \"Status Date\",\r\n field: \"StatusDate\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.StatusDate) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.StatusDate);\r\n }, menuTabs: ['filterMenuTab'], filter: \"agDateColumnFilter\"\r\n },\r\n\r\n ];\r\n\r\n $scope.leaseGrid = {\r\n columnDefs: leaseColumnDefs,\r\n rowData: $scope.leases,\r\n rowSelection: 'multiple',\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n }\r\n\r\n $scope.viewLease = function (params) {\r\n $location.url(\"view-lease/\"+params.Id);\r\n };\r\n\r\n $scope.openEditLeaseModal = function (params) {\r\n\r\n $scope.lease = params;\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/lease-modal.html',\r\n controller: 'LeaseModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n }\r\n\r\n //after we save, this callback will run to reload our grid and upate our levels.\r\n $scope.saveLeaseCallback = function (saved_lease) {\r\n $scope.leases = LeasingService.getPendingLeases();\r\n\r\n $scope.leases.$promise.then(function () {\r\n if ($scope.leaseGrid.api)\r\n $scope.leaseGrid.api.setRowData($scope.leases);\r\n\r\n $scope.countLevel = function (level) {\r\n return $filter('filter')($scope.leases, { Level: level }).length;\r\n };\r\n });\r\n }\r\n\r\n $scope.currentUser = $rootScope.Profile.Fullname;\r\n $scope.currentDay = moment().format();\r\n\r\n $scope.viewOnMap = function (params) {\r\n $location.url(\"leasing?allotment=\" + params.AllotmentName);\r\n }\r\n\r\n}];\r\n\r\nexport default pending_leases;\r\n","//GridService - enables CDMS field validators and editors on ag-grid\r\nimport * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {getControlDefinition} from \"./cell-control-types\";\r\nimport {\r\n getAgGridFilterByType,\r\n getAgGridFilterParamsByType, getJsonObjects,\r\n getPossibleValues,\r\n orderByOrderIndex,\r\n convertFtoC,\r\n convertCtoF\r\n} from \"../../common-functions\";\r\nimport {FIELD_ROLE_DETAIL, FIELD_ROLE_HEADER, SystemDefaultColumnWidth} from \"../../../../config\";\r\nimport * as commonFunctions from \"../../common-functions\"; \r\n\r\nconst grid_service = ['$window', '$route', 'DatasetService', '$timeout',\r\n function ($window, $route, DatasetService, $timeout, $q) {\r\n\r\n var service = {\r\n\r\n //brought over from Datasheet.js (though we might not need it?)\r\n initScope: function (scope) {\r\n //anything we need to setup a scope for use with the grid...\r\n },\r\n\r\n //sets the control for the field(defines renderers, editors, validators, formatters, etc.)\r\n // based on the cdms_field.ControlType\r\n\r\n setupColDefForField: function (cdms_field, col_def) {\r\n //gets the control type definition function\r\n var col_builder = getControlDefinition(cdms_field.ControlType);\r\n\r\n if (col_builder !== null) {\r\n\r\n //build this field's column definition (adds to the col_def)\r\n col_builder(cdms_field, col_def);\r\n\r\n //setup this field's validator (if it has one defined)\r\n //if (col_def.hasOwnProperty('cellValidator')) {\r\n if (col_def.hasOwnProperty('cellValidator') && (col_def.cellValidator !== null)) {\r\n var validatorFunction = col_def.cellValidator;\r\n //console.log(\"col_def is next...\");\r\n //console.dir(col_def);\r\n col_def.validator = new validatorFunction(cdms_field);\r\n }\r\n\r\n //setPossibleValues (PossibleValues are copied in if they exist, this is for calling later/dynamically)\r\n if (col_def.hasOwnProperty('cellEditorParams')) {\r\n\r\n //set them if we have them already at construction time. for system fields, usually\r\n if (col_def.hasOwnProperty('PossibleValues'))\r\n col_def.cellEditorParams.values = col_def.PossibleValues;\r\n\r\n //only call with object version of the possible values\r\n col_def.setPossibleValues = function (in_values) {\r\n this.PossibleValues = in_values;\r\n if (this.hasOwnProperty('cellEditorParams'))\r\n this.cellEditorParams.values = in_values;\r\n };\r\n\r\n }\r\n\r\n //setup tooltip\r\n col_def.tooltipField = \"rowErrorTooltip\"; //rowErrorTooltip is populated only when a validation error exists for any cell in a row.\r\n col_def.cellClassRules = {\r\n 'has-validation-error': function (params) {\r\n var fieldHasErrors = false;\r\n //console.log(\"checking for validatoin errors in css\");\r\n //this css class is added to the cell if there are validation errors matching this field\r\n if ((typeof params.node.data !== 'undefined') && (Array.isArray(params.node.data.validationErrors) && params.node.data.validationErrors.length > 0)) {\r\n //console.log(\" >> we do have errors for this row... \");\r\n params.node.data.validationErrors.forEach(function (error, index) {\r\n //console.log(\" -- checking \" + error.field.DbColumnName + \" and \" + params.colDef.field);\r\n //is there a validation error for this cell?\r\n if (error.field && error.field.DbColumnName === params.colDef.DbColumnName)\r\n fieldHasErrors = true;\r\n });\r\n }\r\n return fieldHasErrors;\r\n },\r\n };\r\n\r\n //set Default if exists\r\n // @ts-ignore\r\n service.fireRule(\"DefaultValue\", { colDef: col_def });\r\n\r\n }\r\n else {\r\n console.warn(\"Notice: There isn't a ControlTypeDefinition for \" + cdms_field.DbColumnName + \" with ControlType = \" + cdms_field.ControlType);\r\n }\r\n },\r\n\r\n };\r\n\r\n //This method builds the column definitions of a dataset for use on any grid view.\r\n // and returns them as an object: {HeaderFields: [], DetailFields: []}\r\n //@param dataset - the dataset we're building for (uses the fields and config)\r\n // @ts-ignore\r\n service.getAgColumnDefs = function (dataset) {\r\n\r\n // what we return in the end\r\n var finalColumnDefs = { HeaderFields: [], DetailFields: [] };\r\n\r\n var FieldsSorted = dataset.Fields.sort(orderByOrderIndex);\r\n\r\n //dataset defined header fields\r\n FieldsSorted.forEach(function (field, index) {\r\n if (field.FieldRoleId === FIELD_ROLE_HEADER) {\r\n\r\n field.Label = (field.Field.Units) ? field.Label + \" (\" + field.Field.Units + \")\" : field.Label;\r\n\r\n //initial values for header column definition\r\n var newColDef = {\r\n headerName: field.Label,\r\n field: field.DbColumnName,\r\n width: SystemDefaultColumnWidth,\r\n maxWidth: 320,\r\n Label: field.Label,\r\n DbColumnName: field.DbColumnName,\r\n ColumnIndex: field.ColumnIndex,\r\n ControlType: field.ControlType,\r\n PossibleValues: getPossibleValues(field),\r\n cdmsField: field, //our own we can use later\r\n filter: getAgGridFilterByType(field.Field.ControlType, field.Field.DbColumnName),\r\n filterParams: getAgGridFilterParamsByType(field.Field.ControlType),\r\n DatastoreId: field.Field.DatastoreId,\r\n DatasetId: dataset.Id,\r\n ProjectId: dataset.ProjectId,\r\n menuTabs: ['filterMenuTab']\r\n };\r\n\r\n if(field.ControlType == \"hidden\")\r\n // @ts-ignore\r\n newColDef.hide = \"true\";\r\n\r\n if(field.ControlType == 'textarea')\r\n // @ts-ignore\r\n newColDef.cellStyle = {'white-space': 'normal'};\r\n\r\n //setup column def for HEADER and add it to our list\r\n service.setupColDefForField(field, newColDef);\r\n\r\n finalColumnDefs.HeaderFields.push(newColDef);\r\n }\r\n });\r\n\r\n //now add in the dataset defined detail fields and set each one up for use in the grid\r\n FieldsSorted.forEach(function (field, index) {\r\n if (field.FieldRoleId === FIELD_ROLE_DETAIL) {\r\n\r\n field.Label = (field.Field.Units) ? field.Label + \" (\" + field.Field.Units + \")\" : field.Label;\r\n\r\n //initial values for detail column definition\r\n var newColDef = {\r\n headerName: field.Label,\r\n field: field.DbColumnName,\r\n width: SystemDefaultColumnWidth,\r\n maxWidth: 320,\r\n menuTabs: ['filterMenuTab'],\r\n Label: field.Label,\r\n DbColumnName: field.DbColumnName,\r\n ControlType: field.ControlType,\r\n PossibleValues: getPossibleValues(field), //getJsonObjects(field.Field.PossibleValues),\r\n cdmsField: field,\r\n DatastoreId: field.Field.DatastoreId,\r\n DatasetId: dataset.Id,\r\n ProjectId: dataset.ProjectId,\r\n filter: getAgGridFilterByType(field.Field.ControlType, field.Field.DbColumnName),\r\n filterParams: getAgGridFilterParamsByType(field.Field.ControlType),\r\n };\r\n\r\n if(field.ControlType == \"hidden\")\r\n // @ts-ignore\r\n newColDef.hide = \"true\";\r\n\r\n //setup column def for DETAIL and add it to our list\r\n service.setupColDefForField(field, newColDef);\r\n\r\n finalColumnDefs.DetailFields.push(newColDef);\r\n\r\n }\r\n });\r\n\r\n return finalColumnDefs;\r\n };\r\n\r\n //pass a grid object and we'll autosize the columns\r\n // note - there are known issues with ag-grid and resizing... let's just disable this\r\n // @ts-ignore\r\n service.autosizeColumns = function (gridObject) {\r\n console.log(\"skipping autosize\");\r\n return;\r\n /*\r\n var allColumnIds = [];\r\n gridObject.columnApi.getAllColumns().forEach(function (columnDef) {\r\n allColumnIds.push(columnDef.colId);\r\n });\r\n gridObject.columnApi.autoSizeColumns(allColumnIds);\r\n console.log(\"tried to autosize these columns: \");\r\n console.dir(allColumnIds);\r\n */\r\n };\r\n\r\n\r\n // Called to validate a cell value (like after editing or first time display).\r\n // once a cell is validated, if there are errors, here is the resulting state:\r\n // (data represents the row)\r\n // data.validationErrors is an array of errors from this cell + previously set errors from other cells in this row\r\n // data.rowHasError = true (or false if no error)\r\n // data.rowErrorTooltip = \"error messages\" from all validation errors for this cell for display as a tooltip (displayed on hover)\r\n // returns boolean: have an error?\r\n // @ts-ignore\r\n service.validateCell = function (event, scope) {\r\n\r\n //console.log(\" --- validate cell for event : \");\r\n //console.dir(event);\r\n\r\n if (!event.colDef.hasOwnProperty('validator')){\r\n return false; //no error since no validator\r\n }\r\n\r\n //var validator = event.colDef.validator;\r\n\r\n //console.log(\" -- running cell validator -- \");\r\n //console.dir(validator);\r\n //remove this field's validation errors from our row's validation errors (returns [] if none)\r\n event.node.data.validationErrors = event.colDef.validator.removeFieldValidationErrors(event.node.data.validationErrors, event.colDef);\r\n\r\n //validate this cell's value - returns array of errors if any\r\n var fieldValidationErrors = event.colDef.validator.validate(event);\r\n //console.log(' ERRORS for this validation?');\r\n //console.dir(fieldValidationErrors);\r\n // @ts-ignore\r\n var fieldRuleValidationErrors = service.fireRule(\"OnValidate\", { colDef: event.colDef, data: event.node.data, scope: scope, value: event.value });\r\n //console.dir(fieldRuleValidationErrors);\r\n fieldRuleValidationErrors.forEach(function (error) { fieldValidationErrors.push({ \"field\": event.colDef, \"message\": error }) });\r\n\r\n //merge in any row errors with this cell's errors.\r\n event.node.data.validationErrors = event.node.data.validationErrors.concat(fieldValidationErrors);\r\n //console.dir(event.node.data.validationErrors);\r\n\r\n //set validation status\r\n event.node.data.rowHasError = ((Array.isArray(event.node.data.validationErrors) && event.node.data.validationErrors.length > 0));\r\n\r\n //collect error messages into a tooltip for the cells with error/s\r\n if (event.node.data.rowHasError) {\r\n event.node.data.validationErrors.forEach(function (error, index) {\r\n event.node.data.rowErrorTooltip = (index === 0) ? \"\" : event.node.data.rowErrorTooltip + \"\\n\"; //either initialize to \"\" or add a newline\r\n\r\n //flatten the error messages for this cell\r\n event.node.data.rowErrorTooltip = event.node.data.rowErrorTooltip +\r\n \"[\" + error.field.DbColumnName + \"] \" + error.message;\r\n\r\n //console.log(\"validation errors for [\" + error.field.DbColumnName + \"] \" + event.node.data.rowErrorTooltip);\r\n //console.dir(event.node.data);\r\n\r\n });\r\n }\r\n else {\r\n event.node.data.rowErrorTooltip = \"\"; //clear the tooltip if there are no errors.\r\n }\r\n\r\n return (fieldValidationErrors.length === 0); //true if we no errors (is valid)\r\n\r\n };\r\n\r\n //adds a single error to a node. Field can be null if it is a \"row\" error\r\n // @ts-ignore\r\n service.addErrorToNode = function (node, message, field) {\r\n //console.log(\"adding an error: \" + message);\r\n node.data.validationErrors.push({ 'field': field, 'message': message });\r\n node.data.rowHasError = true;\r\n\r\n //re-create the tooltip\r\n node.data.validationErrors.forEach(function (error, index) {\r\n //console.dir(error);\r\n node.data.rowErrorTooltip = (index === 0) ? \"\" : node.data.rowErrorTooltip + \"\\n\"; //either initialize to \"\" or add a newline\r\n\r\n //flatten the error messages for this cell\r\n var the_next_message = (error.field) ? \"[\" + error.field.DbColumnName + \"] \" + error.message : error.message;\r\n\r\n if (!error.field && node.data.rowErrorTooltip.indexOf(error.message) > -1)\r\n the_next_message = \"\"; //if a row message like this already exists, don't re-add it.\r\n\r\n node.data.rowErrorTooltip = node.data.rowErrorTooltip + the_next_message;\r\n //console.warn(node.data.rowErrorTooltip);\r\n });\r\n }\r\n\r\n// @ts-ignore\r\n service.refreshRow = function (event) {\r\n //TODO: ok, this isn't working right, but is close enough for the moment.\r\n //we redraw the current row/column in order to immediately update the UI about the validation result\r\n//console.dir(event);\r\n //event.api.redrawRows({ columns: event.column });\r\n //event.api.redrawRows({ rowNodes: [event.node] });\r\n event.api.refreshCells({ rowNodes: [event.node], force: true });\r\n //event.api.refreshCells({ rowNodes: [updatedEvent.node], force: true });\r\n var cell = event.api.getFocusedCell();\r\n\r\n //some various options\r\n//event.api.refreshCells({force: true}); - note commented out and added above kb 1/5/21\r\n //event.api.redrawRows({ rowNodes: [event.node] });\r\n //event.api.refreshCells();\r\n\r\n //don't do any of this\r\n //console.dir(cell);\r\n //if ( cell && cell.column.colDef.ControlType !== \"select\") {\r\n // console.log(\" ---- set focus --- \");\r\n //event.api.setFocusedCell(cell.rowIndex, cell.column);\r\n // event.api.startEditingCell({ rowIndex: cell.rowIndex, colKey: cell.column.colId});\r\n //}\r\n\r\n };\r\n\r\n //redraw the whole grid (expensive)\r\n // @ts-ignore\r\n service.refreshGrid = function (gridOptions) {\r\n gridOptions.api.redrawRows();\r\n };\r\n\r\n //fire any columns with onchange rule (used in import)\r\n // @ts-ignore\r\n service.fireAllOnChange = function(gridOptions) {\r\n //get all of the columns for the grid\r\n var gridColumns = gridOptions.columnApi.getAllColumns();\r\n\r\n //any columns with OnChange rules?\r\n var colsWithOnChange = [];\r\n for (let col of gridColumns){\r\n\r\n //var MasterFieldRule = col.colDef.cdmsField.Field.Rule = (typeof col.colDef.cdmsField.Field.Rule === 'string') ? getJsonObjects(col.colDef.cdmsField.Field.Rule) : col.colDef.cdmsField.Field.Rule;\r\n var DatasetFieldRule = col.colDef.cdmsField.Rule = (typeof col.colDef.cdmsField.Rule === 'string') ? getJsonObjects(col.colDef.cdmsField.Rule) : col.colDef.cdmsField.Rule;\r\n\r\n //if( (MasterFieldRule && MasterFieldRule.hasOwnProperty('OnChange')) || (DatasetFieldRule && DatasetFieldRule.hasOwnProperty('OnChange') ) ){\r\n if(DatasetFieldRule && DatasetFieldRule.hasOwnProperty('OnChange')){\r\n colsWithOnChange.push(col);\r\n }\r\n\r\n }\r\n\r\n //bail out if we don't have any onchange rules to process\r\n if(colsWithOnChange.length == 0)\r\n return;\r\n\r\n //iterate each node, columns and fire the onchange rule\r\n gridOptions.api.forEachNode(function (node, index) {\r\n var datasnapshot = angular.copy(node.data);\r\n colsWithOnChange.forEach(function (column) {\r\n if(datasnapshot[column.colDef.field] && datasnapshot[column.colDef.field] != '')\r\n // @ts-ignore\r\n service.fireRule(\"OnChange\", {\r\n node: node,\r\n colDef: column.colDef,\r\n data: node.data,\r\n value: node.data[column.colDef.field],\r\n api: gridOptions.api,\r\n })\r\n });\r\n });\r\n }\r\n\r\n\r\n // @ts-ignore\r\n service.validateGrid = function (gridOptions) {\r\n //get all of the columns for the grid\r\n var gridColumns = gridOptions.columnApi.getAllColumns();\r\n\r\n //iterate each node, columns and validate the cell\r\n gridOptions.api.forEachNode(function (node, index) {\r\n gridColumns.forEach(function (column) {\r\n // @ts-ignore\r\n service.validateCell({\r\n node: node,\r\n colDef: column.colDef,\r\n value: node.data[column.colDef.field],\r\n api: gridOptions.api,\r\n })\r\n });\r\n });\r\n\r\n };\r\n\r\n\r\n //fires the given rule and returns row_errors\r\n // @ts-ignore\r\n service.fireRule = function (type, event) { //row, field, value, headers, errors, scope) {\r\n //if(typeof event.value == 'undefined')\r\n // return [];\r\n\r\n var row_errors = [];\r\n\r\n if (!event.colDef.hasOwnProperty('cdmsField')) {\r\n console.warn(\"fireRule (\" + type + \")- no cdmsField defined so there are no rules - skipping. The event:\");\r\n console.dir(event);\r\n return;\r\n }\r\n\r\n try {\r\n\r\n //var MasterFieldRule = event.colDef.cdmsField.Field.Rule = (typeof event.colDef.cdmsField.Field.Rule === 'string') ? getJsonObjects(event.colDef.cdmsField.Field.Rule) : event.colDef.cdmsField.Field.Rule;\r\n var DatasetFieldRule = event.colDef.cdmsField.Rule = (typeof event.colDef.cdmsField.Rule === 'string') ? getJsonObjects(event.colDef.cdmsField.Rule) : event.colDef.cdmsField.Rule;\r\n\r\n //these are available to the rule if defined\r\n var field = event.colDef;\r\n var value = (event.value) ? event.value : \"\";\r\n var row = (event.data) ? event.data : {};\r\n var header = (event.node && event.node.data) ? event.node.data : {};\r\n var node = event.node;\r\n\r\n var fieldAndType = field.DbColumnName + \"|\" + type;\r\n\r\n//console.log(\" >> FIRE RULE \" + field.DbColumnName);\r\n\r\n // Really, the master SHOULD NOT fire. It is more like a meta value,\r\n // that gets copied down to the dataset, when the field is added to \r\n // table DatasetFields.\r\n // Therefore, turning this off.\r\n //fire MasterFieldRule rule if it exists\r\n // if (MasterFieldRule && MasterFieldRule.hasOwnProperty(type)) {\r\n\r\n // //console.log(\"Firing a master rule: \" + type + \" on \" + field.DbColumnName);\r\n\r\n // if (type == \"DefaultValue\") {\r\n // if (typeof MasterFieldRule[type] == 'string')\r\n // event.colDef.DefaultValue = MasterFieldRule[type].replace(/\"/g, '');\r\n // else\r\n // console.log(MasterFieldRule[type] + \" was not a string, skipping.\");\r\n // }\r\n // else {\r\n // //console.log(row['WaterTemperatureF']);\r\n // //console.log(\"M F = \" + row['WaterTemperatureF'] + \", C = \" + commonFunctions.convertFtoC(row['WaterTemperatureF']));\r\n // eval(MasterFieldRule[type]);\r\n // //var x = 0;\r\n // }\r\n // }\r\n\r\n //fire DatasetFieldRule rule if it exists. this can override any results of the MasterFieldRule\r\n if (DatasetFieldRule && DatasetFieldRule.hasOwnProperty(type)) {\r\n\r\n //console.log(\"Firing a rule: \" + type + \" on \" + field.DbColumnName);\r\n\r\n if (type == \"DefaultValue\") {\r\n if (typeof DatasetFieldRule[type] == 'string')\r\n event.colDef.DefaultValue = DatasetFieldRule[type].replace(/\"/g, '');\r\n else\r\n console.log(DatasetFieldRule[type] + \" was not a string, skipping.\");\r\n }\r\n else{\r\n //console.log(row['WaterTemperatureF']);\r\n console.log(\"D F = \" + row['WaterTemperatureF'] + \", C = \" + commonFunctions.convertFtoC(row['WaterTemperatureF']));\r\n eval(DatasetFieldRule[type]);\r\n }\r\n }\r\n\r\n } catch (e) {\r\n //so we don't die if the rule fails....\r\n console.warn(\"Looks like a rule failed: \"+type);\r\n console.dir(DatasetFieldRule);\r\n console.dir(event);\r\n console.dir(e);\r\n }\r\n\r\n return row_errors;\r\n\r\n };\r\n\r\n\r\n //creates an row with an empty field (or default value if set) for each columnDef\r\n // @ts-ignore\r\n service.getNewRow = function (coldefs) {\r\n var obj = {};\r\n\r\n //sets to default value of this field if one is specified as a \"DefaultValue\" rule; otherwise null\r\n angular.forEach(coldefs, function (col) {\r\n obj[col.field] = (col.DefaultValue) ? col.DefaultValue : null;\r\n });\r\n\r\n return obj;\r\n };\r\n\r\n //checks for duplicates if enabled for dataset.\r\n //dataset = dataset we are checking for duplicates in\r\n //dataAgGridOptions = grid\r\n //row = row that contains fields to check (header row)\r\n //saveResult = provides status and message results\r\n // @ts-ignore\r\n service.checkForDuplicates = function (dataset, dataAgGridOptions, row, saveResult ) {\r\n console.log(\"Inside grid-services.ts, checkForDuplicates...\");\r\n\r\n if (!dataset.Config.EnableDuplicateChecking) {\r\n return null; //early return, bail out.\r\n }\r\n\r\n // Situation: We open data entry, we change the location, and we end up here correctly.\r\n // However, the question is, why are we setting \"saveResult.saving\" to true here?\r\n // We are not saving yet...\r\n //saveResult.saving = true;\r\n saveResult.saveMessage = \"Checking for duplicates...\";\r\n\r\n //console.log(\"we are dupe checking!\");\r\n\r\n //special case for water temp - update the Activity.Description field with the range... we'll use this to duplicate check\r\n if (dataset.Datastore.TablePrefix == \"WaterTemp\") {\r\n row.Activity.Description = getRangeForDetailField(\"ReadingDateTime\", dataAgGridOptions);\r\n }\r\n\r\n if (dataset.Datastore.TablePrefix == \"WaterQuality\" || dataset.Datastore.TablePrefix == \"MetStation\") {\r\n row.Activity.Description = getRangeForDetailField(\"SampleDate\", dataAgGridOptions);\r\n }\r\n\r\n //build up our duplicate checker query\r\n var query = {\r\n 'DatasetId': dataset.Id,\r\n 'Fields': [],\r\n 'Locations': \"[\"+ row.Activity.LocationId +\"]\",\r\n 'QAStatusId' : 'all',\r\n };\r\n\r\n var AbortNoFullKey = false;\r\n\r\n //add in the duplicate checker key fields configured for this dataset\r\n dataset.Config.DuplicateCheckFields.forEach(function (dc_field) {\r\n\r\n if (row[dc_field] == null && row.Activity[dc_field] == null) { // field isn't set (row or activity)\r\n AbortNoFullKey = true;\r\n console.log(\"will abort for empty field: \" + dc_field);\r\n } else {\r\n if(row[dc_field])\r\n query.Fields.push({ 'DbColumnName': dc_field, 'Value': row[dc_field] });\r\n else(row.Activity[dc_field])\r\n query.Fields.push({ 'DbColumnName': dc_field, 'Value': row.Activity[dc_field] });\r\n }\r\n\r\n\r\n });\r\n\r\n if (AbortNoFullKey) {\r\n console.warn(\"Aborting duplicate check because not all key fields have values\");\r\n saveResult.saving = false;\r\n delete saveResult.saveMessage;\r\n return null; //early return -- we are bailing out because our key isn't full.\r\n }\r\n\r\n //console.log(\"running query: \");\r\n //console.dir(query);\r\n\r\n var dupe_check = DatasetService.checkForDuplicateActivity(query); // will return { DuplicateActivityId: null (if none), ActivityId (if match exists)\r\n\r\n dupe_check.$promise.then(function () {\r\n //console.log(\"Dupecheck back with id: \" + dupe_check.DuplicateActivityId + \" and our activity id is \" + row.Activity.Id);\r\n\r\n //if the dupe_check.DuplicateActivityId is null or equals our own activityid, it is not a duplicate.\r\n if (dupe_check.DuplicateActivityId === null || dupe_check.DuplicateActivityId === row.Activity.Id) {\r\n saveResult.hasError = false;\r\n saveResult.error = null;\r\n //console.log(\"no duplicate.\");\r\n } else { //otherwise it is.\r\n saveResult.hasError = true;\r\n saveResult.error = \"Duplicate record exists for: \" +\r\n dataset.Config.DuplicateCheckFields.toString().replace(\"Description\",\"DateRange\").replace(/,/g,\", \");\r\n //console.log(\"has duplicate.\");\r\n }\r\n\r\n saveResult.saving = false;\r\n saveResult.saveMessage = \"Saving...\"; //back to default\r\n\r\n }, function (data) {\r\n console.warn(\"duplicate check error:\");\r\n console.dir(data);\r\n });\r\n\r\n return dupe_check; //promise - can add other .then()'s\r\n\r\n };\r\n\r\n // @ts-ignore\r\n service.errorComparator = function (one, two, nodeone, nodetwo) {\r\n if (nodeone.data.rowHasError && nodetwo.data.rowHasError)\r\n return 0;\r\n\r\n if (!nodeone.data.rowHasError && !nodetwo.data.rowHasError)\r\n return 0;\r\n\r\n if (nodeone.data.rowHasError && !nodetwo.data.rowHasError)\r\n return 1;\r\n\r\n if (!nodeone.data.rowHasError && nodetwo.data.rowHasError)\r\n return -1;\r\n\r\n };\r\n\r\n // @ts-ignore\r\n service.bubbleErrors = function (dataAgGridOptions) {\r\n var col = dataAgGridOptions.columnApi.getColumn('hasError');\r\n if (col == null) {\r\n var new_col = {\r\n 'headerName': 'Has Error', 'field': 'hasError', 'hide': true,\r\n // @ts-ignore\r\n 'comparator': service.errorComparator,\r\n 'valueFormatter': function (params) {\r\n return (params.node.data.rowHasError) ? \"Yes\" : \"No\"\r\n }\r\n };\r\n dataAgGridOptions.columnDefs.unshift(new_col);\r\n dataAgGridOptions.api.setColumnDefs(dataAgGridOptions.columnDefs);\r\n }\r\n\r\n var sort = [\r\n { colId: 'hasError' , sort: 'desc' }\r\n ];\r\n\r\n dataAgGridOptions.api.setSortModel(sort);\r\n //console.log(\"set comparator\");\r\n };\r\n\r\n //@ts-ignore;\r\n service.convertFtoC = function convertFtoC(f) {\r\n if (!f)\r\n return 0;\r\n\r\n var c = commonFunctions.convertFtoC(f);\r\n //console.log(\"f = \" + f + \", c = \" + c);\r\n \r\n return c;\r\n }\r\n\r\n //@ts-ignore;\r\n service.convertCtoF = function convertCtoF(c) {\r\n if (!c)\r\n return 0;\r\n \r\n var f = commonFunctions.convertCtoF(c);\r\n //console.log(\"f = \" + f + \", c = \" + c);\r\n \r\n return f;\r\n }\r\n\r\n return service;\r\n\r\n }];\r\n\r\n//helper function to get the beginning and end date as a range - used in description field for water temp, water quality\r\nfunction getRangeForDetailField(fieldname, dataAgGridOptions) {\r\n\r\n var range = \"\";\r\n\r\n //sort, then get the first and last dates\r\n\r\n //are there rows? if so then use the readingdatetimes to build our range we use for duplicate checking\r\n if (dataAgGridOptions.api.getDisplayedRowCount() > 0) {\r\n\r\n dataAgGridOptions.api.setSortModel({ colId: fieldname, sort: 'asc' });\r\n var oldest = dataAgGridOptions.api.getDisplayedRowAtIndex(0);\r\n var newest = dataAgGridOptions.api.getDisplayedRowAtIndex(dataAgGridOptions.api.getDisplayedRowCount() - 1);\r\n\r\n var oldest_date = moment(oldest.data[fieldname]).format('YYYY/MM/DD');\r\n var newest_date = moment(newest.data[fieldname]).format('YYYY/MM/DD');\r\n var range = oldest_date + \" - \" + newest_date;\r\n //console.log(fieldname + \" date range is: \" + range);\r\n\r\n }\r\n else {\r\n console.log(\"There are no rows for this water temp, the Description (Date Range) will be empty.\");\r\n }\r\n\r\n return range;\r\n}\r\n\r\nexport default grid_service;\r\n","import {Component, NgModule, OnInit} from \"@angular/core\";\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { UpgradeModule } from '@angular/upgrade/static';\r\n\r\nimport { LoginComponent } from './components/login/login.component';\r\nimport {LoginService} from \"./components/login.service\";\r\nimport { LogoutComponent } from './components/logout/logout.component';\r\nimport {LoginRoutingModule} from \"./components/login-routing/login-routing.module\";\r\nimport {FormsModule} from \"@angular/forms\";\r\n\r\n@NgModule({\r\n imports: [\r\n BrowserModule,\r\n UpgradeModule,\r\n LoginRoutingModule,\r\n FormsModule\r\n ],\r\n declarations: [\r\n LoginComponent,\r\n LogoutComponent\r\n ],\r\n providers: [\r\n LoginService\r\n ]\r\n})\r\n\r\nexport class LoginModule{}\r\n","//habitat sites page\r\nimport * as angular from 'angular';\r\nimport * as moment from 'moment';\r\n\r\nimport {\r\n METADATA_ENTITY_HABSITES, SharingLevel,\r\n SHARINGLEVEL_GROUPREAD,\r\n SHARINGLEVEL_PRIVATE,\r\n SHARINGLEVEL_PUBLICREAD,\r\n SHARINGLEVEL_REFERENCE_LIBRARY,\r\n ENVIRONMENT\r\n //CDMS_POINTS_TEST_URL, \r\n //CDMS_POINTS_PROD_URL\r\n} from \"../../../../config\";\r\nimport {\r\n getById, getByName,\r\n getFilesArrayAsList,\r\n getMatchingByField, getParsedMetadataValues,\r\n getSubprojectFilesArrayAsLinks\r\n} from \"../../../../core/common/common-functions\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar page_sites = ['$scope', '$timeout', '$routeParams', 'SubprojectService', 'ProjectService', 'DatasetService', 'CommonService', 'UserService',\r\n '$rootScope', '$uibModal', '$sce', '$window', '$http',\r\n 'ServiceUtilities', 'ConvertStatus', '$location', '$routeParams', 'Upload',\r\n function (scope, $timeout, routeParams, SubprojectService, ProjectService, DatasetService, CommonService, UserService, $rootScope, $uibModal, $sce, $window, $http,\r\n ServiceUtilities, ConvertStatus, $location, $routeParams, $upload) {\r\n// console.log(\"Inside tab sites controller...\");\r\n\r\n scope.subprojectFileList = null;\r\n scope.funderList = null;\r\n scope.collaboratorList = null;\r\n $rootScope.savedSubproject = null;\r\n\r\n //options from config.js for sharing level field\r\n scope.SHARINGLEVEL_PRIVATE = SHARINGLEVEL_PRIVATE;\r\n scope.SHARINGLEVEL_PUBLICREAD = SHARINGLEVEL_PUBLICREAD;\r\n scope.SHARINGLEVEL_GROUPREAD = SHARINGLEVEL_GROUPREAD;\r\n scope.SHARINGLEVEL_REFERENCE_LIBRARY = SHARINGLEVEL_REFERENCE_LIBRARY;\r\n\r\n scope.SharingLevel = SharingLevel;\r\n\r\n scope.ShowMap = {\r\n Display: false,\r\n Prod: false,\r\n Test: false,\r\n Message: \"Show Map\",\r\n MessageToOpen: \"Show Map\",\r\n MessageToClose: \"Hide Map\",\r\n };\r\n\r\n if (ENVIRONMENT == \"prod\")\r\n {\r\n scope.ShowMap.Test = false;\r\n scope.ShowMap.Prod = true;\r\n //scope.map.locationLayer = new FeatureLayer({url:CDMS_POINTS_PROD_URL});\r\n }\r\n else\r\n {\r\n scope.ShowMap.Test = true;\r\n scope.ShowMap.Prod = false;\r\n //scope.map.locationLayer = new FeatureLayer({url:CDMS_POINTS_TEST_URL});\r\n }\r\n\r\n scope.toggleMap = function () {\r\n if (scope.ShowMap.Display) {\r\n// scope.removeFilter(); //also clears location\r\n scope.ShowMap.Display = false;\r\n scope.ShowMap.Message = scope.ShowMap.MessageToOpen;\r\n } else {\r\n scope.ShowMap.Display = true;\r\n scope.ShowMap.Message = scope.ShowMap.MessageToClose;\r\n\r\n //setTimeout(function () {\r\n // scope.map.reposition();\r\n // console.log(\"repositioned\");\r\n //}, 400);\r\n\r\n }\r\n };\r\n\r\n scope.dataset = DatasetService.getDataset($routeParams.Id);\r\n\r\n scope.metafields = CommonService.getMetadataProperties(METADATA_ENTITY_HABSITES);\r\n scope.metafields.$promise.then(function () {\r\n //console.dir(scope.metafields);\r\n scope.metafields.forEach(function (field) {\r\n field.PossibleValues = getParsedMetadataValues(field.PossibleValues);\r\n });\r\n\r\n });\r\n\r\n scope.$on('editLocation', function (event, data) {\r\n scope.outpayload = data;\r\n });\r\n\r\n scope.getMetafield = function (in_name) {\r\n return getByName(scope.metafields, in_name).PossibleValues;\r\n };\r\n\r\n\r\n scope.displayLocationsOnMap = function () {\r\n var locationIds = [];\r\n\r\n scope.project.Locations.forEach(function (location) {\r\n locationIds.push(location.SdeObjectId);\r\n });\r\n scope.locationIds = locationIds\r\n // if (scope.map && scope.map.locationLayer && scope.map.locationLayer.hasOwnProperty('showLocationsById')) {}\r\n // scope.map.locationLayer.showLocationsById(locationIds);\r\n\r\n console.log(\"showing these locations\");\r\n console.dir(locationIds);\r\n\r\n }\r\n\r\n scope.getProjectFileByName = function (name) {\r\n var retval = null;\r\n scope.project.Files.forEach(function (file) {\r\n if (file.Name == name)\r\n retval = file;\r\n });\r\n return retval;\r\n };\r\n\r\n scope.dataset.$promise.then(function () {\r\n scope.project = ProjectService.getProject(scope.dataset.ProjectId);\r\n\r\n scope.project.$promise.then(function () {\r\n\r\n //get unassigned project + assigned dataset locations\r\n scope.project.Locations = ProjectService.getDatasetLocations(scope.project.Id, scope.dataset.Id);\r\n\r\n scope.project.Locations.$promise.then(function () {\r\n scope.displayLocationsOnMap();\r\n })\r\n\r\n var ag_grid_div = document.querySelector('#hab-sites-grid') as HTMLElement; //get the container id...\r\n //console.dir(ag_grid_div);\r\n scope.ag_grid = new Grid(ag_grid_div, scope.sitesGridOptions); //bind the grid to it.\r\n scope.sitesGridOptions.api.showLoadingOverlay(); //show loading...\r\n\r\n scope.subprojectList = SubprojectService.getProjectSubprojects(scope.project.Id); //the habitat subprojects\r\n //console.log(\"Fetching Habitat subprojects...\");\r\n\r\n //if user can edit, unhide the edit links\r\n if ($rootScope.Profile.canEdit(scope.project)) {\r\n scope.sitesGridOptions.columnApi.setColumnVisible(\"EditLinksMaster\", true);\r\n scope.sitesDetailGridOptions.columnDefs.unshift({\r\n colId: 'EditLinksDetail',\r\n cellRenderer: EditDetailLinksTemplate,\r\n width: 150,\r\n menuTabs: []\r\n }); //add this column to the front of the detail grid cols\r\n }\r\n\r\n scope.subprojectList.$promise.then(function () {\r\n scope.sitesGridOptions.api.setRowData(scope.subprojectList);\r\n scope.refreshSubprojectLists();\r\n });\r\n\r\n scope.isFavorite = $rootScope.Profile.isDatasetFavorite($routeParams.Id);\r\n\r\n try {\r\n if (!scope.project.Config) {\r\n scope.project.Config = {};\r\n } else {\r\n scope.project.Config = angular.fromJson(scope.project.Config);\r\n }\r\n } catch (e) {\r\n scope.project.Config = {};\r\n console.error(\"config could not be parsed for project: \" + scope.project.Config);\r\n console.dir(e);\r\n }\r\n\r\n });\r\n });\r\n\r\n var ItemCount = function (params) {\r\n if (params.node.data.HabitatItems === undefined || params.node.data.HabitatItems === null)\r\n return '0';\r\n\r\n return '' + params.node.data.HabitatItems.length;\r\n };\r\n\r\n var EditMasterLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a');\r\n editBtn.href = '#';\r\n editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.editHabitatSubproject(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var delBtn = document.createElement('a');\r\n delBtn.href = '#';\r\n delBtn.innerHTML = 'Delete';\r\n delBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.removeHabitatSubproject(param.data);\r\n });\r\n div.appendChild(delBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var addBtn = document.createElement('a');\r\n addBtn.href = '#';\r\n addBtn.innerHTML = 'Add Item';\r\n addBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.openHabitatItemForm(param.data, {});\r\n });\r\n div.appendChild(addBtn);\r\n\r\n return div;\r\n };\r\n\r\n\r\n var FileListCellTemplate = function (params) {\r\n var list = '
    ';\r\n\r\n var file_links = getSubprojectFilesArrayAsLinks(scope.project.Id, params.node.data.SubprojectId, params.node.data.ItemFiles);\r\n\r\n file_links.forEach(function (link) {\r\n list += '
  • ' + link + '
  • ';\r\n });\r\n\r\n list += '
';\r\n\r\n return list;\r\n };\r\n\r\n\r\n var LinkListCellTemplate = function (params) {\r\n if (!params.node.data.ExternalLinks)\r\n return;\r\n\r\n var list = '';\r\n\r\n return list;\r\n }\r\n\r\n //this template gives the Edit|Delete|Add for the detail.\r\n var EditDetailLinksTemplate = function (detailparam) {\r\n var subproject = getById(scope.subprojectList, detailparam.data.SubprojectId);\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a');\r\n editBtn.href = '#';\r\n editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n //console.log(\"detail param: \");\r\n //console.dir(detailparam);\r\n scope.openHabitatItemForm(subproject, detailparam.data); //parent subproject, detail line.\r\n });\r\n div.appendChild(editBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var delBtn = document.createElement('a');\r\n delBtn.href = '#';\r\n delBtn.innerHTML = 'Delete';\r\n delBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.removeHabitatFileItem(subproject, detailparam.data);\r\n });\r\n div.appendChild(delBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var addBtn = document.createElement('a');\r\n addBtn.href = '#';\r\n addBtn.innerHTML = 'Add';\r\n addBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.openHabitatItemForm(subproject, {});\r\n });\r\n\r\n div.appendChild(addBtn);\r\n\r\n return div;\r\n\r\n };\r\n\r\n\r\n //grid columns for sites tab (master/subprojects)\r\n scope.sitesColumnDefs = [ //in order the columns will display, by the way...\r\n {colId: 'EditLinksMaster', width: 160, cellRenderer: EditMasterLinksTemplate, menuTabs: [], hide: true},\r\n {\r\n field: 'ProjectName', headerName: 'Project Name', width: 325, cellRenderer: 'agGroupCellRenderer',\r\n cellRendererParams: {suppressCount: true},\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n {\r\n field: 'EffDt',\r\n headerName: 'Updated',\r\n width: 130,\r\n valueFormatter: function (params) {\r\n if (params.node.data.EffDt !== undefined && params.node.data.EffDt !== null)\r\n return moment(params.node.data.EffDt).format('L');\r\n },\r\n valueGetter: function (params) {\r\n return moment(params.node.data.EffDt)\r\n }, //date filter needs js date object\r\n sort: 'desc',\r\n menuTabs: [],\r\n },\r\n {\r\n headerName: 'Items', width: 70,\r\n cellRenderer: ItemCount,\r\n valueGetter: function (params) {\r\n return (params.data.HabitatItems !== undefined && params.data.HabitatItems.length > 0) ? params.data.HabitatItems.length : 0;\r\n },\r\n menuTabs: [],\r\n },\r\n {\r\n field: 'ProjectStartDate', headerName: 'Start Date', width: 150,\r\n valueFormatter: function (params) {\r\n if (params.node.data.ProjectStartDate !== undefined && params.node.data.ProjectStartDate !== null)\r\n return moment(params.node.data.ProjectStartDate).format('L');\r\n },\r\n valueGetter: function (params) {\r\n return (params.node.data.ProjectStartDate) ? moment(params.node.data.ProjectStartDate) : null\r\n },\r\n filter: 'date',\r\n menuTabs: ['filterMenuTab'],\r\n\r\n },\r\n {\r\n field: 'ProjectEndDate', headerName: 'End Date', width: 150,\r\n valueFormatter: function (params) {\r\n if (params.node.data.ProjectEndDate !== undefined && params.node.data.ProjectEndDate !== null)\r\n return moment(params.node.data.ProjectEndDate).format('L');\r\n },\r\n valueGetter: function (params) {\r\n return (params.node.data.ProjectEndDate) ? moment(params.node.data.ProjectEndDate) : null\r\n }, //date filter needs js date object\r\n filter: 'date',\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n ];\r\n\r\n //details\r\n var detailColumnDefs = [\r\n //{ headerName: '', width: 100, cellRenderer: EditDetailLinksTemplate, menuTabs: [], },\r\n\r\n {\r\n headerName: 'Title',\r\n field: 'ItemName',\r\n cellClass: 'item-record-cell',\r\n width: 170,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n {headerName: 'File', field: 'ItemFiles', width: 300, cellRenderer: FileListCellTemplate, menuTabs: [],},\r\n {\r\n headerName: 'Sharing Level', field: 'SharingLevel', width: 150,\r\n cellRenderer: function (params) {\r\n if (params.node.data.SharingLevel == SHARINGLEVEL_PRIVATE)\r\n return SharingLevel['SHARINGLEVEL_PRIVATE'];\r\n else if (params.node.data.SharingLevel == SHARINGLEVEL_PUBLICREAD)\r\n return SharingLevel['SHARINGLEVEL_PUBLICREAD'];\r\n else if (params.node.data.SharingLevel == SHARINGLEVEL_GROUPREAD)\r\n return SharingLevel['SHARINGLEVEL_GROUPREAD'];\r\n else if (params.node.data.SharingLevel == SHARINGLEVEL_REFERENCE_LIBRARY)\r\n return SharingLevel['SHARINGLEVEL_REFERENCE_LIBRARY'];\r\n else return 'Unknown';\r\n }, menuTabs: [],\r\n },\r\n {\r\n headerName: 'External Links',\r\n field: 'ExternalLinks',\r\n cellRenderer: LinkListCellTemplate,\r\n cellClass: 'item-record-cell',\r\n width: 250,\r\n menuTabs: [],\r\n },\r\n {\r\n headerName: 'Item Type',\r\n field: 'ItemType',\r\n cellClass: 'item-record-cell',\r\n width: 100,\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n {\r\n field: 'EffDt',\r\n headerName: 'Updated',\r\n width: 150,\r\n valueFormatter: function (params) {\r\n //console.dir(params.node.data.EffDt);\r\n if (params.node.data.EffDt !== undefined && params.node.data.EffDt !== null)\r\n return moment(params.node.data.EffDt).format('L');\r\n },\r\n menuTabs: [],\r\n },\r\n ];\r\n\r\n //detail grid options\r\n scope.sitesDetailGridOptions = {\r\n suppressPropertyNamesCheck: true,\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n //rowSelection: 'single',\r\n //onSelectionChanged: function (params) {\r\n // console.log(\"selection changed!\");\r\n //scope.sitesGridOptions.selectedItems = scope.sitesGridOptions.api.getSelectedRows();\r\n //scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n //},\r\n //onFilterModified: function () {\r\n // scope.sitesGridOptions.api.deselectAll();\r\n //},\r\n //selectedItems: [],\r\n //rowData: eventRecords,\r\n columnDefs: detailColumnDefs,\r\n //onGridReady: function (params) {\r\n //setTimeout(function () { params.api.sizeColumnsToFit(); }, 0);\r\n //},\r\n\r\n getRowHeight: function (params) {\r\n var file_height = 25 * (getFilesArrayAsList(params.node.data.ItemFiles).length); //count up the number of file lines we will have.\r\n let link_height = 25 * (getFilesArrayAsList(params.node.data['ExternalLinks']).length);\r\n if (link_height) {\r\n if (link_height > file_height) {\r\n file_height = link_height\r\n }\r\n }\r\n\r\n return (file_height > 25) ? file_height : 25;\r\n },\r\n\r\n //onRowClicked: function (row) {\r\n //console.dir(row);\r\n\r\n // row.node.setSelected(true);\r\n // console.log(\"detail selected!\");\r\n //},\r\n //defaultColDef: {\r\n // editable: true\r\n //},\r\n //enableRangeSelection: true\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n\r\n scope.sitesGridOptions = {\r\n suppressPropertyNamesCheck: true,\r\n masterDetail: true,\r\n detailCellRendererParams: {\r\n detailGridOptions: scope.sitesDetailGridOptions,\r\n getDetailRowData: function (params) {\r\n params.successCallback(params.data.HabitatItems);\r\n },\r\n },\r\n\r\n animateRows: true,\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n // showToolPanel: false,\r\n columnDefs: scope.sitesColumnDefs,\r\n rowData: null,\r\n //filterParams: { apply: true }, //enable option: doesn't do the filter unless you click apply\r\n //debug: true,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n console.log(\"selection changed fired!\");\r\n\r\n var rows = scope.sitesGridOptions.api.getSelectedRows();\r\n\r\n scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n\r\n if (Array.isArray(rows) && rows[0] != null) {\r\n console.log(\"rows:\");\r\n console.dir(rows);\r\n }\r\n },\r\n //onFilterModified: function () {\r\n // scope.sitesGridOptions.api.deselectAll();\r\n //},\r\n selectedItems: [],\r\n //isFullWidthCell: function (rowNode) {\r\n // return rowNode.level === 1;\r\n //},\r\n onGridReady: function (params) {\r\n //params.api.sizeColumnsToFit();\r\n },\r\n //fullWidthCellRenderer: CorrespondenceDetailCellRenderer,\r\n /*\r\n getRowHeight: function (params) {\r\n var rowIsDetailRow = params.node.level === 1;\r\n // return dynamic height when detail row, otherwise return 25\r\n if (rowIsDetailRow) {\r\n return 300;\r\n } else {\r\n var comment_length = (params.data.Comments === null) ? 1 : params.data.Comments.length;\r\n return 25 * (Math.floor(comment_length / 45) + 1); //base our detail height on the comments field.\r\n }\r\n //return rowIsDetailRow ? 200 : 25;\r\n },\r\n */\r\n /*\r\n getNodeChildDetails: function (record) {\r\n //console.dir(record);\r\n if (record.HabitatItems) {\r\n //console.log(\"yep we have events!\");\r\n return {\r\n group: true,\r\n // the key is used by the default group cellRenderer\r\n key: record.CorrespondenceDate,\r\n // provide ag-Grid with the children of this group\r\n parentData: record,\r\n children: [record.HabitatItems],\r\n };\r\n } else {\r\n //console.log(\"didn't find any correspondence events for that record.\");\r\n return null;\r\n }\r\n },*/\r\n onRowDoubleClicked: function (row) {\r\n scope.sitesGridOptions.api.collapseAll();\r\n row.node.setSelected(true);\r\n row.node.setExpanded(true);\r\n },\r\n onRowClicked: function (row) {\r\n row.node.setSelected(true);\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n }\r\n };\r\n\r\n scope.matchLocationsToSubprojects = function () {\r\n\r\n scope.thisProjectsLocationObjects = []; // Dump this list, before refilling it.\r\n angular.forEach(scope.subprojectList, function (subproject) {\r\n\r\n angular.forEach(scope.project.Locations, function (location, key) {\r\n //console.log(\"location key = \" + key);\r\n //console.log(\"location is next...\");\r\n //console.dir(location);\r\n\r\n // We will show the Primary Project Location, and the locations of the subprojects.\r\n //if ((location.LocationTypeId === 3) || (subproject.Id === location.SubprojectId))\r\n //console.log(\"location.LocationTypeId = \" + location.LocationTypeId + \", subproject.LocationId = \" + subproject.LocationId + \", location.Id = \" + location.Id);\r\n if (subproject.LocationId === location.Id) {\r\n //console.log(\"Found a subproject location\")\r\n //console.dir(location);\r\n scope.thisProjectsLocationObjects.push(location.SdeObjectId);\r\n subproject.GPSEasting = location.GPSEasting;\r\n subproject.GPSNorthing = location.GPSNorthing;\r\n subproject.UTMZone = location.UTMZone;\r\n subproject.Projection = location.Projection;\r\n subproject.WaterBodyId = location.WaterBodyId;\r\n }\r\n });\r\n });\r\n if (scope.map !== undefined) {\r\n // scope.map.locationLayer.showLocationsById(scope.thisProjectsLocationObjects); //bump and reload the locations.\r\n scope.locationIds = scope.thisProjectsLocationObjects\r\n }\r\n\r\n\r\n };\r\n\r\n //looks like we will need a version of this over on the crpp correspondence tab? TODO:kb 11/21/17\r\n //spin through all of the subprojects and add a ItemFiles object that contains its files.\r\n scope.matchFilesToSubproject = function () {\r\n\r\n //iterate all subprojects and find all the mathing files\r\n angular.forEach(scope.subprojectList, function (subproject) {\r\n\r\n if (!subproject.Files)\r\n subproject.Files = [];\r\n\r\n angular.forEach(scope.project.SubprojectFileList, function (spFile) {\r\n\r\n //is the file in this subproject?\r\n if ((subproject.Id === spFile.Subproject_CrppId)) {\r\n subproject.Files.push(spFile);\r\n\r\n //if it is the feature image\r\n if (spFile.FeatureImage === 1) {\r\n subproject.FeatureImage = spFile.Name; //connects with modal\r\n }\r\n }\r\n /* delete me\r\n if ((subproject.Id === spFile.Subproject_CrppId) && (spFile.FeatureImage === 1)) {\r\n //angular.forEach(scope.project.Files, function(pFile){\r\n //\tif (pFile.Id === spFile.FileId)\r\n //\t\tsubproject.ItemFiles = angular.copy(pFile);\r\n //});\r\n if (!subproject.Files) {\r\n subproject.Files = [];\r\n subproject.Files.push(spFile);\r\n }\r\n else\r\n subproject.Files = angular.copy(spFile);\r\n\r\n //scope.viewSubproject.Files = subproject.Files;\r\n //console.log(\"Matched subproject file...\");\r\n }\r\n */\r\n });\r\n });\r\n\r\n $rootScope.SubprojectFileList = scope.project.SubprojectFileList; //??\r\n };\r\n\r\n scope.matchFundersToSubproject = function () {\r\n //console.log(\"Inside controllers.js, scope.matchFundersToSubproject...\");\r\n //console.dir(scope.project.FunderList);\r\n\r\n var strFunders = \"\";\r\n angular.forEach(scope.subprojectList, function (subproject) {\r\n strFunders = \"\";\r\n angular.forEach(scope.project.FunderList, function (funder) {\r\n if (funder.SubprojectId === subproject.Id) {\r\n strFunders += funder.Name + \", \" + funder.Amount + \";\\n\";\r\n }\r\n });\r\n subproject.strFunders = strFunders;\r\n });\r\n };\r\n\r\n scope.matchCollaboratorToSubproject = function () {\r\n //console.log(\"Inside controllers.js, scope.matchCollaboratorToSubproject...\");\r\n //console.dir(scope.project.CollaboratorList);\r\n\r\n var strCollaborators = \"\";\r\n angular.forEach(scope.subprojectList, function (subproject) {\r\n strCollaborators = \"\";\r\n angular.forEach(scope.project.CollaboratorList, function (collaborator) {\r\n if (collaborator.SubprojectId === subproject.Id) {\r\n strCollaborators += collaborator.Name + \";\\n\";\r\n }\r\n });\r\n subproject.strCollaborators = strCollaborators;\r\n });\r\n };\r\n\r\n\r\n //open the habitat item form for creating (if hi_row is {}) or editing (if hi_row is the habitat item)\r\n scope.openHabitatItemForm = function (subproject, hi_row) {\r\n //console.log(\"Inside openHabitatItemForm...\")\r\n //console.dir(scope);\r\n\r\n $rootScope.viewSubproject = scope.viewSubproject = subproject;\r\n scope.hi_row = hi_row;\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/habitat/components/habitat-sites/templates/modal-new-habitatItem.html',\r\n controller: 'ModalAddHabitatItemCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n scope.openGeospatialDataPage = function () {\r\n //console.log(\"Inside openGeospatialDataPage...\");\r\n\r\n var strUrl = \"http://ctuirgis.maps.arcgis.com/apps/webappviewer/index.html?id=1669df9b26874c9eb49cc41ec4d57ec5\";\r\n //var strWindowFeatures = \"location=yes,height=570,width=520,scrollbars=yes,status=yes\";\r\n var strWindowFeatures = \"location=yes,scrollbars=yes,status=yes\";\r\n $window.open(strUrl, \"_blank\", strWindowFeatures);\r\n };\r\n\r\n\r\n //after we remove one in the modal, call here to update the grid.\r\n scope.postRemoveHabitatSubprojectUpdateGrid = function () {\r\n //the scope.viewSubproject is the one we removed.\r\n //console.log(\"ok - we removed one so update the grid...\");\r\n\r\n scope.subprojectList.forEach(function (item, index) {\r\n if (item.Id === scope.viewSubproject.Id) {\r\n scope.subprojectList.splice(index, 1);\r\n //console.log(\"ok we removed :\" + index);\r\n //console.dir(scope.subprojectList[index]);\r\n scope.sitesGridOptions.api.setRowData(scope.subprojectList);\r\n //scope.sitesGridOptions.api.redrawRows();\r\n //console.log(\"done reloading grid.\");\r\n }\r\n });\r\n };\r\n\r\n //called by the modal once the habitat item is successfully saved.\r\n scope.postEditHabitatItemUpdateGrid = function (edited_item) {\r\n //console.log(\"postEditHabitatItemUpdateGrid...\" + edited_item.Id + \" for subproject \" + edited_item.SubprojectId);\r\n\r\n //edit our habitat item and then reload the grid.\r\n scope.subprojectList.forEach(function (item, index) {\r\n if (item.Id === edited_item.SubprojectId) {\r\n item.EffDt = moment(new Date()).format() + \"\"; //touch the effdt to bump the sort. - this was already updated in the be\r\n item.HabitatItems.forEach(function (hab_item, hab_item_index) {\r\n if (hab_item.Id === edited_item.Id) {\r\n angular.extend(hab_item, edited_item); //replace the data for that item\r\n //console.log(\"OK!! we edited that habitat item\");\r\n }\r\n });\r\n }\r\n });\r\n\r\n scope.sitesGridOptions.api.setRowData(scope.subprojectList);\r\n\r\n //after we setRowData, the grid collapses our expanded item. we want it to re-expand that item and make sure it is visible.\r\n var the_node = scope.expandSubProjectById(edited_item.SubprojectId);\r\n if (the_node != null)\r\n scope.sitesGridOptions.api.ensureNodeVisible(the_node);\r\n\r\n console.log(\"done reloading grid after removing item.\");\r\n\r\n };\r\n\r\n //called by the modal once a habitat item is saved -= the new_item IS the habitat item (promise)\r\n scope.postAddHabitatItemUpdateGrid = function (new_item) {\r\n\r\n //console.log(\"post add habitat item update grid for \" + new_item.SubprojectId);\r\n //console.dir(new_item);\r\n\r\n var subproject = getById(scope.subprojectList, new_item.SubprojectId);\r\n //console.dir(subproject);\r\n\r\n if (subproject === undefined || subproject == null) { //TODO: the case where they create items before the proejct is saved?\r\n console.log(\"no subproject...\");\r\n } else {\r\n subproject.HabitatItems.push(new_item);\r\n // console.log(\"Added item \" + new_item.Id + \" to \" + subproject.Id);\r\n scope.sitesGridOptions.api.setRowData(scope.subprojectList);\r\n\r\n //after we setRowData, the grid collapses our expanded item. we want it to re-expand that item and make sure it is visible.\r\n var the_node = scope.expandSubProjectById(subproject.Id);\r\n if (the_node != null)\r\n scope.sitesGridOptions.api.ensureNodeVisible(the_node);\r\n\r\n console.log(\"done reloading grid after adding item.\");\r\n }\r\n };\r\n\r\n //returns the (last) node or null if none found.\r\n scope.expandSubProjectById = function (id_in) {\r\n var the_node = null;\r\n scope.sitesGridOptions.api.forEachNode(function (node) {\r\n if (node.data.Id === id_in) {\r\n //console.log(\"Expanding! \" + id_in);\r\n node.setExpanded(true);\r\n the_node = node;\r\n }\r\n });\r\n return the_node;\r\n };\r\n\r\n //removes the habitat item and then updates the grid\r\n scope.removeHabitatFileItem = function (subproject, in_item) {\r\n //console.log(\"removeHabitatFileItem...\" + in_item.Id + \" for subproject \" + subproject.Id);\r\n\r\n console.log(\"- --- - - removing subproject habitat item -- we need to also get the files! \");\r\n console.dir(subproject);\r\n\r\n if (confirm('Are you sure that you want to delete this Habitat Item?')) {\r\n var promise = SubprojectService.removeHabitatItem(scope.project.Id, subproject.Id, in_item.Id, scope.DatastoreTablePrefix);\r\n\r\n promise.$promise.then(function () {\r\n //remove any files related to this subproject item otherwise our duplicate checking will have false positives.\r\n var item_files = angular.fromJson(in_item.ItemFiles);\r\n if (item_files && item_files.length > 0) {\r\n var new_files = [];\r\n subproject.Files.forEach(function (subproject_file) {\r\n var keep_it = true;\r\n item_files.forEach(function (item_file) {\r\n if (subproject_file.Name === item_file.Name)\r\n keep_it = false;\r\n });\r\n if (keep_it) {\r\n new_files.push(subproject_file);\r\n console.log(\"keeping \" + subproject_file);\r\n } else\r\n console.log(\" -- removing \" + subproject_file);\r\n });\r\n subproject.Files = new_files;\r\n console.log(\"after we removed files\");\r\n console.dir(subproject.Files);\r\n }\r\n\r\n //remove from our subprojectList and then reload the grid.\r\n scope.subprojectList.forEach(function (item, index) {\r\n if (item.Id === subproject.Id) {\r\n item.HabitatItems.forEach(function (hab_item, hab_item_index) {\r\n if (hab_item.Id === in_item.Id) {\r\n item.HabitatItems.splice(hab_item_index, 1);\r\n //console.log(\"OK!! we removed that habitat item\");\r\n }\r\n });\r\n }\r\n });\r\n scope.sitesGridOptions.api.setRowData(scope.subprojectList);\r\n\r\n //after we setRowData, the grid collapses our expanded item. we want it to re-expand that item and make sure it is visible.\r\n var the_node = scope.expandSubProjectById(subproject.Id);\r\n if (the_node != null)\r\n scope.sitesGridOptions.api.ensureNodeVisible(the_node);\r\n\r\n console.log(\"done reloading grid after removing item.\");\r\n });\r\n }\r\n };\r\n\r\n\r\n scope.removeHabitatSubproject = function (subproject) {\r\n //console.log(\"Inside removeHabitatSubproject...\");\r\n\r\n if (!subproject)\r\n return;\r\n\r\n scope.viewSubproject = subproject;\r\n\r\n //console.log(\"removing scope.projectId = \" + scope.projectId);\r\n if (scope.viewSubproject.HabitatItems.length > 0) {\r\n alert(\"This project has associated Habitat items. Those must be deleted first.\");\r\n } else {\r\n scope.verifyAction = \"Delete\";\r\n scope.verifyingCaller = \"HabSubproject\";\r\n //console.log(\"scope.verifyAction = \" + scope.verifyAction + \", scope.verifyingCaller = \" + scope.verifyingCaller + \", scope.viewSubproject.Id = \" + scope.viewSubproject.Id);\r\n scope.theLocation = null;\r\n\r\n // On this page, when the user chooses to delete a Habitat Subproject,\r\n // there is only one, not a list.\r\n angular.forEach(scope.project.Locations, function (loc) {\r\n if (loc.Id === scope.viewSubproject.LocationId) {\r\n //$rootScope.SdeObjectId = loc.SdeObjectId;\r\n $rootScope.theLocation = angular.copy(loc);\r\n }\r\n });\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-verifyAction.html',\r\n controller: 'ModalVerifyActionCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n });\r\n }\r\n\r\n };\r\n\r\n scope.createHabSubproject = function () {\r\n scope.viewSubproject = null;\r\n scope.createNewSubproject = true;\r\n //scope.subprojectList = null;\r\n scope.subprojectOptions = null;\r\n //console.log(\"scope.createNewSubproject = \" + scope.createNewSubproject);\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/habitat/components/habitat-sites/templates/modal-create-habSubproject.html',\r\n controller: 'ModalCreateHabSubprojectCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: 'static',\r\n windowClass: 'modal-medium',\r\n keyboard: false\r\n }).result.then((saved_location) => {\r\n scope.postSaveHabitatSubprojectUpdateGrid(saved_location);\r\n scope.redrawRows();\r\n });\r\n };\r\n\r\n\r\n //refresh all of the project match lists\r\n scope.refreshSubprojectLists = function () {\r\n // Call the functions that will build the list of funders, and list of files related to the project.\r\n // We add the items from these lists to the subproject -- as the data comes in.\r\n\r\n //Note: We already have this as scope.project.SubprojectFiles, in project-files.ts, \r\n // once the files load. See scope.project.Files.$promise.then(\r\n // The problem is, scope.project.Files is not loaded, until users click on the Files tab.\r\n // If they do not click on the Files tab, the files ARE NOT loaded.\r\n //------------------------------------------\r\n scope.project.SubprojectFileList = SubprojectService.getSubprojectFiles(scope.project.Id);\r\n scope.project.FunderList = ProjectService.getProjectFunders(scope.project.Id);\r\n scope.project.CollaboratorList = ProjectService.getProjectCollaborators(scope.project.Id);\r\n\r\n //this one we can start right away since project locations are loaded with the project.\r\n scope.reloadSubprojectLocations();\r\n scope.matchLocationsToSubprojects();\r\n //------------------------------------------\r\n \r\n //do each match as the list finishes loading...\r\n scope.project.SubprojectFileList.$promise.then(function () {\r\n //console.log(\" -- ok done loading now matching SubprojectFileList for \" + scope.project.SubprojectFileList.length);\r\n scope.matchFilesToSubproject();\r\n });\r\n\r\n scope.project.FunderList.$promise.then(function () {\r\n //console.log(\" -- ok done loading now matching FunderList for \" + scope.project.FunderList.length);\r\n scope.matchFundersToSubproject();\r\n });\r\n\r\n scope.project.CollaboratorList.$promise.then(function () {\r\n //console.log(\" -- ok done loading now matching CollaboratorList for \" + scope.project.CollaboratorList.length);\r\n scope.matchCollaboratorToSubproject();\r\n });\r\n\r\n };\r\n\r\n //fired after a user saves a new or edited project.\r\n // we update the item in the main subproject array and then refresh the grid.\r\n scope.postSaveHabitatSubprojectUpdateGrid = function (the_promise) {\r\n //console.log(\"ok - we saved so update the grid...\");\r\n var total = scope.subprojectList.length;\r\n var count = 0;\r\n var updated = false;\r\n scope.subprojectList.forEach(function (item, index) {\r\n if (item.Id === the_promise.Id) {\r\n updated = true;\r\n\r\n //console.log(\"ok we found a match! -- updating! before:\");\r\n //console.dir(scope.subprojectList[index]);\r\n\r\n if (the_promise.HabitatItems !== undefined)\r\n delete the_promise.HabitatItems; //remove this before the copy.\r\n\r\n angular.extend(scope.subprojectList[index], the_promise); //replace the data for that item\r\n //console.log(\"ok we found a match! -- updating! after:\");\r\n //console.dir(scope.subprojectList[index]);\r\n scope.sitesGridOptions.api.setRowData([]);\r\n scope.sitesGridOptions.api.setRowData(scope.subprojectList);\r\n // scope.sitesGridOptions.api.redrawRows();\r\n //console.log(\"done reloading grid.\");\r\n }\r\n count++;\r\n if (count == total && updated == false) //if we get all done and we never found it, lets add it to the end.\r\n {\r\n //console.log(\"ok we found never a match! -- adding!\");\r\n the_promise.HabitatItems = [];\r\n the_promise.Files = [];\r\n scope.subprojectList.push(the_promise); //add that item\r\n scope.sitesGridOptions.api.setRowData([]);\r\n scope.sitesGridOptions.api.setRowData(scope.subprojectList);\r\n\r\n //console.log(\"done reloading grid.\");\r\n }\r\n });\r\n\r\n console.log(\"updated the list and the grid... now refreshing the habitat lists\");\r\n scope.refreshSubprojectLists(); //funders, collaborators, etc.\r\n\r\n };\r\n\r\n scope.addSubproject = function () {\r\n console.log(\"Inside controllers.addSubproject.\");\r\n //console.log(\"scope is next...\");\r\n //console.dir(scope);\r\n //console.log(\"scope.selectedSubproject is next...\");\r\n //console.dir(scope.selectedSubproject);\r\n\r\n if (!scope.selectedSubproject || scope.selectedSubproject === null || getMatchingByField(scope.project.CrppSubProjects, scope.selectedSubproject, 'Id').length > 0)\r\n return;\r\n\r\n var theSubproject = getMatchingByField(scope.correspondenceProjectList, scope.selectedSubproject, 'Id');\r\n\r\n var promise = SubprojectService.saveSubproject(scope.project.Id, theSubproject[0]);\r\n\r\n promise.$promise.then(function () {\r\n scope.reloadProject();\r\n });\r\n };\r\n\r\n\r\n scope.editHabitatSubproject = function (subproject) {\r\n\r\n //console.log(\"Inside editHabitatSubproject...\");\r\n\r\n $rootScope.viewSubproject = scope.viewSubproject = subproject; //set this var for the modal controller and file filter\r\n $rootScope.subprojectId = subproject.Id; //also for file filter. :/\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/habitat/components/habitat-sites/templates/modal-create-habSubproject.html',\r\n controller: 'ModalCreateHabSubprojectCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: 'static',\r\n windowClass: 'modal-medium',\r\n keyboard: false\r\n }).result.then((saved_location) => {\r\n scope.postSaveHabitatSubprojectUpdateGrid(saved_location);\r\n });\r\n };\r\n\r\n //spin through subprojects and make a list of the locations that belong to one\r\n // then refresh the map.\r\n scope.reloadSubprojectLocations = function () {\r\n // This function is used by page-sites.ts (this page), and modal-create-habitat-subproject.ts.\r\n console.log(\"Inside controllers.js, projectDatasetsController, scope.reloadSubprojectLocations...\");\r\n\r\n\r\n scope.thisProjectsLocationObjects = []; // Dump this list, before refilling it.\r\n angular.forEach(scope.subprojectList, function (subproject) {\r\n angular.forEach(scope.project.Locations, function (location, key) {\r\n //console.log(\"location key = \" + key);\r\n //console.log(\"location is next...\");\r\n //console.dir(location);\r\n\r\n if (subproject.LocationId === location.Id)\r\n scope.thisProjectsLocationObjects.push(location.SdeObjectId);\r\n\r\n });\r\n });\r\n //console.log(\"scope.thisProjectsLocationObjects is next...\");\r\n //console.dir(scope.thisProjectsLocationObjects);\r\n\r\n if (scope.thisProjectsLocationObjects.length > 0) {\r\n // if (scope.map && scope.map.locationLayer && scope.map.locationLayer.hasOwnProperty('showLocationsById'))\r\n // scope.map.locationLayer.showLocationsById(scope.thisProjectsLocationObjects); //bump and reload the locations.\r\n scope.locationIds = scope.thisProjectsLocationObjects;\r\n }\r\n //else\r\n //{\r\n //\tscope.map.locationLayer.showLocationsById(0);\r\n //}\r\n };\r\n\r\n scope.redrawRows = function () {\r\n scope.sitesGridOptions.api.setRowData([]);\r\n setTimeout(function () {\r\n scope.sitesGridOptions.api.setRowData(scope.subprojectList);\r\n }, 4000);\r\n };\r\n\r\n scope.refreshCells = function () {\r\n scope.sitesGridOptions.api.refreshCells();\r\n //console.log(\"refreshcells!\");\r\n };\r\n\r\n scope.refreshMemory = function () {\r\n scope.sitesGridOptions.api.refreshInMemoryRowModel('group');\r\n //console.log(\"redrawgroupmodel!\");\r\n };\r\n\r\n //handle favorite toggle\r\n scope.toggleFavorite = function () {\r\n UserService.toggleFavoriteDataset(scope, $rootScope);\r\n }\r\n\r\n scope.setSdeObjectId = function (sdeObjectId) {\r\n //scope.project = ProjectService.getProject(scope.dataset.ProjectId);\r\n //scope.project.$promise.then(function () {\r\n // scope.displayLocationsOnMap();\r\n //});\r\n };\r\n\r\n scope.click = function () {\r\n } //don't do anything for clicking for now...\r\n\r\n scope.updateLocations = function (feature) {\r\n $rootScope.$broadcast('newLocationData', feature)\r\n }\r\n }\r\n];\r\n\r\nexport default page_sites;\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJhcHBqcy5jb21wb25lbnQuY3NzIn0= */\";","/*\r\n* This page loads the project files (gallery and documents)\r\n*/\r\nimport * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport * as $ from 'jquery';\r\nimport {convertDateFromUnknownStringToUTC} from \"../../../../../appjsLegacy/core/common/common-functions\";\r\nimport {\r\n cdmsShareUrl,\r\n SharingLevel, SHARINGLEVEL_GROUPREAD,\r\n SHARINGLEVEL_PRIVATE,\r\n SHARINGLEVEL_PUBLICREAD,\r\n SHARINGLEVEL_REFERENCE_LIBRARY\r\n} from \"../../../../config\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\ndeclare const hab_item: any;\r\n\r\nvar project_files = ['$scope', '$routeParams', 'SubprojectService', \r\n 'ProjectService', 'DatasetService', 'CommonService', 'UserService',\r\n '$rootScope', '$uibModal', '$sce', '$window', '$http', '$timeout',\r\n 'ServiceUtilities', '$location', '$anchorScroll', '$rootScope',\r\n function (scope, routeParams, SubprojectService, \r\n ProjectService, DatasetService, CommonService, UserService, \r\n $rootScope, $uibModal, $sce, $window, $http, $timeout,\r\n ServiceUtilities, $location, $anchorScroll, rootScope) {\r\n\r\n scope.OnTab = \"Files\";\r\n scope.project = ProjectService.getProject(routeParams.Id);\r\n\r\n scope.metadataList = {};\r\n scope.uploadFileType = \"\";\r\n scope.filesToUpload = {};\r\n\r\n scope.project.$promise.then(function () {\r\n\r\n //load all of the project's files\r\n scope.project.Files = ProjectService.getProjectFiles(scope.project.Id);\r\n\r\n //since we want a tab of images and a tab of other files,\r\n // sort them out into three arrays we will use to populate the tabs.\r\n scope.project.Images = [];\r\n scope.project.Docs = [];\r\n scope.project.SubprojectFiles = [];\r\n\r\n //once they load... (the docs and gallery tabs listen for this and then handle their grids.)\r\n\r\n scope.project.Files.$promise.then(res => {\r\n console.log('-------------- project FILES are loaded >>>>>>>>>>>>>>>> ');\r\n //console.dir(scope.project.Files);\r\n // console.log(scope.project.Files);\r\n res.forEach(function (file, key) {\r\n // If the user created a document and left the Title or Description blank, those fields were saved as \"undefined\" in the database.\r\n // When we read the list of files back in, the \"undefined\" shows on the page, and the user would rather have a blank show instead.\r\n file.Title = (!file.Title || file.Title === 'undefined' || typeof file.Title === 'undefined') ? \"\" : file.Title;\r\n file.Description = (!file.Description || file.Description === 'undefined' || typeof file.Description === 'undefined') ? \"\" : file.Description;\r\n\r\n //here we'll sort the files into some arrays...\r\n // scope.project.Docs = document tab\r\n // scope.project.Images = images tab\r\n // scope.project.SubprojectFiles = subproject files <-- TODO: someday refactor this away so that projects are just nested...\r\n\r\n //note: Subproject_CrppId indicates the file belongs to a subproject (not just crpp)\r\n if (file.DatasetId === null && file.Subproject_CrppId === null) { // Neither DatasetId nor Subproject*Id = project\r\n if (file.FileType.Name === \"Image\") { //images go to 'Gallery' tab\r\n scope.project.Images.push(file);\r\n } else { //everything else goes to 'Documents' tab\r\n scope.project.Docs.push(file);\r\n }\r\n }\r\n else if (file.DatasetId !== null && file.Subproject_CrppId === null) // DatasetId and no Subproject*Id = Dataset\r\n {\r\n // No nothing, because this is handled in dataset-edit-form.ts, $scope.dataset.Files.\r\n }\r\n else if (file.DatasetId === null && file.Subproject_CrppId !== null) // No DatasetId and Subproject*Id = Subproject\r\n {\r\n scope.project.SubprojectFiles.push(file);\r\n }\r\n else \r\n {\r\n console.log(\"This file is not a project, dataset, or subproject file. What is it then?\");\r\n }\r\n });\r\n console.log(\"OK! Done loading files for project\");\r\n\r\n angular.element(function () {\r\n scope.activateGalleryGrid();\r\n scope.activateDocumentsGrid();\r\n });\r\n });\r\n });\r\n\r\n\r\n //return an array from the eventfiles.\r\n scope.getFilesArrayAsList = function (theFiles) {\r\n if (theFiles === undefined || theFiles === null)\r\n return [];\r\n\r\n var files = angular.fromJson(theFiles);\r\n return (files === null || !Array.isArray(files)) ? [] : files; //if it isn't an array, make an empty array\r\n\r\n }\r\n\r\n //return an array of file links to cdmsShareUrl (defined in config) for subproject\r\n scope.getSubprojectFilesArrayAsLinks = function (a_projectId, a_subprojectId, a_files) {\r\n var files = scope.getFilesArrayAsList(a_files);\r\n var retval = [];\r\n\r\n angular.forEach(files, function (file, value) {\r\n retval.push(\"\" + file.Name + \"\");\r\n });\r\n\r\n return retval;\r\n }\r\n\r\n\r\n //selection to edit, callback to fire on success.\r\n scope.openEditFileModal = function (a_selection, a_callback) {\r\n scope.row = a_selection;\r\n scope.callback = a_callback;\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/modal-edit-file.html',\r\n controller: 'ModalEditFileCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n scope.openNewFileModal = function (a_callback) {\r\n scope.callback = a_callback;\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/modal-upload-files.html',\r\n controller: 'ModalNewFileCtrl',\r\n windowClass: 'modal-large',\r\n backdrop: 'static',\r\n keyboard: false,\r\n scope: scope, //very important to pass the scope along...\r\n // backdrop: \"static\",\r\n // keyboard: false\r\n });\r\n };\r\n\r\n //removes the given file from project.Files (usually after deleting an item from docs/gallery already)\r\n scope.removeFromFiles = function (removed_item) {\r\n scope.project.Files.forEach(function (item, index) {\r\n //console.log(\"item id is \" + item.Id + \" looking for \" + removed_item.File.Id);\r\n if (item.Id === removed_item.Id) {\r\n //console.log(\"FOund an ID that matches for delete\");\r\n scope.project.Files.splice(index, 1);\r\n }\r\n });\r\n };\r\n\r\n\r\n // ************ from gallerytab **************\r\n\r\n var UploadedTemplate = function (param) {\r\n //return moment(param.node.data.UploadDate).format('L') + \" by \" + param.node.data.User.Fullname;\r\n return moment(param.node.data.UploadDate).format('L'); // Produces a format like 12/31/2021.\r\n //return moment(param.node.data.UploadDate).format(\"YYYY/MM/DD\");\r\n };\r\n\r\n var UploadedByTemplate = function (param) {\r\n //console.dir(param);\r\n //console.log(\"uploaded by template!\");\r\n //return moment(param.node.data.UploadDate).format('L') + \" by \" + param.node.data.User.Fullname;\r\n return param.node.data.User.Fullname;\r\n };\r\n\r\n var EditLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a');\r\n editBtn.href = '#';\r\n editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.openEditFileModal(param.data, scope.afterEditGalleryFile);\r\n });\r\n div.appendChild(editBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var delBtn = document.createElement('a');\r\n delBtn.href = '#';\r\n delBtn.innerHTML = 'Delete';\r\n delBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.deleteGalleryFile(param.data);\r\n });\r\n div.appendChild(delBtn);\r\n\r\n return div;\r\n };\r\n\r\n\r\n var ImageTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var linkBtn = document.createElement('a');\r\n linkBtn.href = param.data.Link;\r\n linkBtn.target = \"_blank\";\r\n\r\n var img = document.createElement('img');\r\n img.src = param.data.Link;\r\n img.width = 150;\r\n\r\n linkBtn.appendChild(img);\r\n div.appendChild(linkBtn);\r\n\r\n return div;\r\n };\r\n\r\n scope.dateComparator = function (date1, date2) {\r\n var date1Number = scope.monthToNum(date1);\r\n var date2Number = scope.monthToNum(date2);\r\n \r\n if (date1Number === null && date2Number === null) {\r\n return 0;\r\n }\r\n if (date1Number === null) {\r\n return -1;\r\n }\r\n if (date2Number === null) {\r\n return 1;\r\n }\r\n \r\n return date1Number - date2Number;\r\n };\r\n\r\n scope.monthToNum = function (date) {\r\n if (date === undefined || date === null || date.length !== 10) {\r\n return null;\r\n }\r\n\r\n var yearNumber = date.substring(6, 10);\r\n //if (yearNumber === 2018)\r\n // console.log(\"Found yearNumber...\");\r\n var monthNumber = date.substring(0, 2);\r\n var dayNumber = date.substring(3, 5);\r\n \r\n var result = yearNumber * 10000 + monthNumber * 100 + dayNumber;\r\n // 29/08/2004 => 20040829\r\n return result;\r\n };\r\n\r\n //scope.fileSelection = [];\r\n //scope.FileFilterOptions = {};\r\n //scope.GalleryFilterOptions = {};\r\n\r\n // -------------- gallery grid -------------\r\n scope.galleryGridOptions = {\r\n suppressPropertyNamesCheck: true,\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n rowHeight: 42,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n //console.log(\"selection changed!\");\r\n //scope.galleryGridOptions.selectedItems = scope.galleryGridOptions.api.getSelectedRows();\r\n //console.dir(scope.galleryGridOptions.selectedItems);\r\n //scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n getRowHeight: function () {\r\n return 120;\r\n },\r\n onFilterModified: function () {\r\n scope.galleryGridOptions.api.deselectAll();\r\n },\r\n //selectedItems: [],\r\n columnDefs:\r\n [\r\n {colId: 'EditLinks', cellRenderer: EditLinksTemplate, width: 120, menuTabs: [], hide: true},\r\n {field: 'Title', headerName: 'Title', width: 250, sort: 'asc', menuTabs: ['filterMenuTab'], filter: 'text'},\r\n {headerName: 'File', cellRenderer: ImageTemplate, width: 190, menuTabs: []},\r\n {\r\n field: 'Description',\r\n headerName: 'Description',\r\n cellStyle: {'white-space': 'normal'},\r\n width: 300,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text',\r\n },\r\n {field: 'Keyword', headerName: 'Keyword', menuTabs: ['filterMenuTab'], filter: 'text'},\r\n {\r\n headerName: 'Sharing Level', field: 'SharingLevel', width: 150,\r\n cellRenderer: function (params) {\r\n if (params.node.data.SharingLevel == SHARINGLEVEL_PRIVATE)\r\n return SharingLevel['SHARINGLEVEL_PRIVATE'];\r\n else if (params.node.data.SharingLevel == SHARINGLEVEL_PUBLICREAD)\r\n return SharingLevel['SHARINGLEVEL_PUBLICREAD'];\r\n else if (params.node.data.SharingLevel == SHARINGLEVEL_GROUPREAD)\r\n return SharingLevel['SHARINGLEVEL_GROUPREAD'];\r\n else if (params.node.data.SharingLevel == SHARINGLEVEL_REFERENCE_LIBRARY)\r\n return SharingLevel['SHARINGLEVEL_REFERENCE_LIBRARY'];\r\n else return 'Unknown';\r\n }, menuTabs: [],\r\n },\r\n {\r\n field: 'Uploaded',\r\n headerName: \"Uploaded\",\r\n width: 120,\r\n valueGetter: UploadedTemplate,\r\n comparator: scope.dateComparator,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'agDateColumnFilter',\r\n filterParams: {\r\n // provide comparator function\r\n comparator: (filterLocalDateAtMidnight, cellValue) => {\r\n const dateAsString = cellValue;\r\n\r\n if (dateAsString == null) {\r\n return 0;\r\n }\r\n\r\n // In the our application, dates are stored as mm/dd/yyyy\r\n // We create a Date object for comparison against the filter date\r\n const dateParts = dateAsString.split('/');\r\n const day = Number(dateParts[1]);\r\n const month = Number(dateParts[0]) - 1;\r\n const year = Number(dateParts[2]);\r\n const cellDate = new Date(year, month, day);\r\n\r\n // Now that both parameters are Date objects, we can compare\r\n if (cellDate < filterLocalDateAtMidnight) {\r\n return -1;\r\n } else if (cellDate > filterLocalDateAtMidnight) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n }\r\n },\r\n {\r\n field: 'UploadedBy',\r\n headerName: \"Uploaded By\",\r\n width: 200,\r\n valueGetter: UploadedByTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n ],\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n scope.activateGalleryGrid = function () {\r\n\r\n // ----------- Load the gallery grid -------------\r\n\r\n var ag_grid_div = document.querySelector('#gallery-tab-grid') as HTMLElement; //get the container id...\r\n\r\n if (typeof scope.gallerytab_ag_grid === 'undefined')\r\n scope.gallerytab_ag_grid = new Grid(ag_grid_div, scope.galleryGridOptions); //bind the grid to it.\r\n\r\n scope.galleryGridOptions.api.showLoadingOverlay(); //show loading...\r\n scope.galleryGridOptions.api.setRowData(scope.project.Images);\r\n scope.galleryGridOptions.api.sizeColumnsToFit();\r\n\r\n //if user can edit, unhide the edit links\r\n if (scope.Profile.canEditProject(scope.project))\r\n scope.galleryGridOptions.columnApi.setColumnVisible(\"EditLinks\", true);\r\n\r\n };\r\n\r\n //edit our project images list and then reload the grid.\r\n scope.afterEditGalleryFile = function (edited_item) {\r\n scope.project.Images.forEach(function (item, index) {\r\n if (item.Id === edited_item.Id) {\r\n angular.extend(hab_item, edited_item); //replace the data for that item\r\n }\r\n });\r\n\r\n scope.galleryGridOptions.api.setRowData(scope.project.Images);\r\n console.log(\"done reloading grid after editing gallery item.\");\r\n };\r\n\r\n //remove an image from our project docs list and then reload the grid.\r\n scope.deleteGalleryFile = function (removed_item) {\r\n\r\n if (confirm(\"Are you sure you want to delete this file? (there is no undo)\")) {\r\n var promise = ProjectService.deleteFile(scope.project.Id, removed_item);\r\n\r\n promise.$promise.then(function () {\r\n scope.project.Images.forEach(function (item, index) {\r\n if (item.Id === removed_item.Id) {\r\n scope.project.Images.splice(index, 1);\r\n }\r\n });\r\n\r\n scope.removeFromFiles(removed_item);\r\n\r\n scope.galleryGridOptions.api.setRowData(scope.project.Images);\r\n console.log(\"done reloading grid after removing image item.\");\r\n });\r\n }\r\n\r\n };\r\n\r\n\r\n // ************ from the files tab *****************\r\n\r\n var UploadedTemplate = function (param) {\r\n //return moment(param.node.data.UploadDate).format('L') + \" by \" + param.node.data.User.Fullname;\r\n var tmpDateTime = null;\r\n //console.log(\"typeof param.node.data.UploadDate = \" + typeof param.node.data.UploadDate);\r\n if (typeof param.node.data.UploadDate === \"string\")\r\n {\r\n tmpDateTime = convertDateFromUnknownStringToUTC(param.node.data.UploadDate);\r\n param.node.data.UploadDate = moment(tmpDateTime);\r\n }\r\n return moment(param.node.data.UploadDate).format('L');\r\n //return moment(param.node.data.UploadDate).format(\"YYYY/MM/DD\");\r\n };\r\n\r\n var UploadedByTemplate = function (param) {\r\n //return moment(param.node.data.UploadDate).format('L') + \" by \" + param.node.data.User.Fullname;\r\n return param.node.data.User.Fullname;\r\n };\r\n\r\n var EditLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a');\r\n editBtn.href = '#';\r\n editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.openEditFileModal(param.data, scope.afterEditDocsFile);\r\n });\r\n div.appendChild(editBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var delBtn = document.createElement('a');\r\n delBtn.href = '#';\r\n delBtn.innerHTML = 'Delete';\r\n delBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.deleteDocFile(param.data);\r\n });\r\n div.appendChild(delBtn);\r\n\r\n return div;\r\n };\r\n\r\n var LinkTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var linkBtn = document.createElement('a');\r\n linkBtn.href = param.data.Link;\r\n linkBtn.innerHTML = param.data.Title;\r\n linkBtn.target = \"_blank\";\r\n div.appendChild(linkBtn);\r\n return div;\r\n };\r\n\r\n var HyperlinkTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var linkBtn = document.createElement('a');\r\n linkBtn.href = param.data.Link;\r\n linkBtn.innerHTML = param.data.Name;\r\n linkBtn.target = \"_blank\";\r\n div.appendChild(linkBtn);\r\n return div;\r\n };\r\n\r\n scope.dateComparator = function (date1, date2) {\r\n var date1Number = scope.monthToNum(date1);\r\n var date2Number = scope.monthToNum(date2);\r\n \r\n if (date1Number === null && date2Number === null) {\r\n return 0;\r\n }\r\n if (date1Number === null) {\r\n return -1;\r\n }\r\n if (date2Number === null) {\r\n return 1;\r\n }\r\n \r\n return date1Number - date2Number;\r\n };\r\n\r\n scope.monthToNum = function (date) {\r\n if (date === undefined || date === null || date.length !== 10) {\r\n return null;\r\n }\r\n\r\n var yearNumber = date.substring(6, 10);\r\n //if (yearNumber === 2018)\r\n // console.log(\"Found yearNumber...\");\r\n var monthNumber = date.substring(0, 2);\r\n var dayNumber = date.substring(3, 5);\r\n \r\n var result = yearNumber * 10000 + monthNumber * 100 + dayNumber;\r\n // 29/08/2004 => 20040829\r\n return result;\r\n };\r\n\r\n\r\n // ------------- documents grid -----------------\r\n scope.docsGridOptions = {\r\n suppressPropertyNamesCheck: true,\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n //console.log(\"selection changed!\");\r\n scope.docsGridOptions.selectedItems = scope.docsGridOptions.api.getSelectedRows();\r\n //scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n onFilterModified: function () {\r\n scope.docsGridOptions.api.deselectAll();\r\n },\r\n //selectedItems: [],\r\n columnDefs:\r\n [\r\n {colId: 'EditLinks', cellRenderer: EditLinksTemplate, width: 120, menuTabs: [], hide: true},\r\n //{ field: 'Name', headerName: 'File', width: 250, sort: 'asc', cellRenderer: LinkTemplate },\r\n //{ field: 'Title', headerName: 'Title', sort: 'asc', cellRenderer: LinkTemplate, width: 230, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n {field: 'Title', headerName: 'Title', sort: 'asc', width: 230, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n {\r\n field: 'Name',\r\n headerName: 'File/Link',\r\n cellRenderer: HyperlinkTemplate,\r\n width: 230,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n {field: 'Description', headerName: 'Description', menuTabs: ['filterMenuTab'], filter: 'text'},\r\n {field: 'Keyword', headerName: 'Keyword', menuTabs: ['filterMenuTab'], filter: 'text'},\r\n {\r\n headerName: 'Sharing Level', field: 'SharingLevel', width: 150,\r\n cellRenderer: function (params) {\r\n if (params.node.data.SharingLevel == SHARINGLEVEL_PRIVATE)\r\n return SharingLevel['SHARINGLEVEL_PRIVATE'];\r\n else if (params.node.data.SharingLevel == SHARINGLEVEL_PUBLICREAD)\r\n return SharingLevel['SHARINGLEVEL_PUBLICREAD'];\r\n else if (params.node.data.SharingLevel == SHARINGLEVEL_GROUPREAD)\r\n return SharingLevel['SHARINGLEVEL_GROUPREAD'];\r\n else if (params.node.data.SharingLevel == SHARINGLEVEL_REFERENCE_LIBRARY)\r\n return SharingLevel['SHARINGLEVEL_REFERENCE_LIBRARY'];\r\n else return 'Unknown';\r\n }, menuTabs: [],\r\n },\r\n //{ field: 'Uploaded', headerName: \"Uploaded\", width: 200, valueGetter: UploadedByTemplate, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n {\r\n field: 'Uploaded',\r\n headerName: \"Uploaded\",\r\n comparator: scope.dateComparator,\r\n width: 120,\r\n valueGetter: UploadedTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'agDateColumnFilter',\r\n filterParams: {\r\n // provide comparator function\r\n comparator: (filterLocalDateAtMidnight, cellValue) => {\r\n const dateAsString = cellValue;\r\n\r\n if (dateAsString == null) {\r\n return 0;\r\n }\r\n\r\n // In the our application, dates are stored as mm/dd/yyyy\r\n // We create a Date object for comparison against the filter date\r\n const dateParts = dateAsString.split('/');\r\n const day = Number(dateParts[1]);\r\n const month = Number(dateParts[0]) - 1;\r\n const year = Number(dateParts[2]);\r\n const cellDate = new Date(year, month, day);\r\n\r\n // Now that both parameters are Date objects, we can compare\r\n if (cellDate < filterLocalDateAtMidnight) {\r\n return -1;\r\n } else if (cellDate > filterLocalDateAtMidnight) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n }\r\n },\r\n {\r\n field: 'UploadedBy',\r\n headerName: \"Uploaded By\",\r\n width: 200,\r\n valueGetter: UploadedByTemplate,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text'\r\n },\r\n ],\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n\r\n scope.activateDocumentsGrid = function () {\r\n var ag_grid_div = document.querySelector('#docs-tab-grid') as HTMLElement; //get the container id...\r\n\r\n if (typeof scope.docstab_ag_grid === 'undefined')\r\n scope.docstab_ag_grid = new Grid(ag_grid_div, scope.docsGridOptions); //bind the grid to it.\r\n\r\n scope.docsGridOptions.api.showLoadingOverlay(); //show loading...\r\n scope.docsGridOptions.api.setRowData(scope.project.Docs);\r\n scope.docsGridOptions.api.sizeColumnsToFit();\r\n\r\n //if user can edit, unhide the edit links\r\n if (scope.Profile.canEditProject(scope.project))\r\n scope.docsGridOptions.columnApi.setColumnVisible(\"EditLinks\", true);\r\n\r\n };\r\n\r\n\r\n ///////// file handling for Documents tab\r\n\r\n //open the new file modal\r\n scope.newFile = function () {\r\n scope.openNewFileModal(scope.afterNewFile);\r\n };\r\n\r\n scope.newLink = function () {\r\n\r\n scope.row = {SharingLevel: SHARINGLEVEL_PRIVATE};\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/modal-edit-link.html',\r\n controller: 'ModalLinkCtrl',\r\n windowClass: 'modal-small',\r\n backdrop: 'static',\r\n keyboard: false,\r\n scope: scope, //very important to pass the scope along...\r\n // backdrop: \"static\",\r\n // keyboard: false\r\n }).result.then(function (new_link) {\r\n scope.project.Files.push(new_link);\r\n scope.project.Docs.push(new_link);\r\n scope.docsGridOptions.api.setRowData(scope.project.Docs);\r\n });\r\n }\r\n\r\n //after create a new file\r\n scope.afterNewFile = function (new_item) {\r\n console.log(\"After saved a doc\");\r\n //console.dir(new_item[0]);\r\n if (new_item[0].FileTypeId === 1) {\r\n var ag_grid_div = undefined;\r\n scope.project.Images.push(new_item[0]);\r\n scope.project.Files.push(new_item[0]);\r\n scope.galleryGridOptions.api.setRowData(scope.project.Images);\r\n } else {\r\n scope.project.Docs.push(new_item[0]);\r\n scope.project.Files.push(new_item[0]);\r\n scope.docsGridOptions.api.setRowData(scope.project.Docs); // This line refreshes the grid on the documents tab.\r\n }\r\n console.log(\"done reloading grid after adding docs item.\");\r\n };\r\n\r\n\r\n //remove an item from our project docs list and then reload the grid.\r\n scope.deleteDocFile = function (removed_item) {\r\n if (confirm(\"Are you sure you want to delete this file? (there is no undo)\")) {\r\n var promise = ProjectService.deleteFile(scope.project.Id, removed_item);\r\n\r\n promise.$promise.then(function () {\r\n scope.project.Docs.forEach(function (item, index) {\r\n if (item.Id === removed_item.Id) {\r\n scope.project.Docs.splice(index, 1);\r\n }\r\n });\r\n\r\n scope.removeFromFiles(removed_item);\r\n\r\n scope.docsGridOptions.api.setRowData(scope.project.Docs);\r\n console.log(\"done reloading grid after removing doc item.\");\r\n });\r\n }\r\n };\r\n\r\n //edit our project docs list and then reload the grid.\r\n scope.afterEditDocsFile = function (edited_item) {\r\n scope.project.Docs.forEach(function (item, index) {\r\n if (item.Id === edited_item.Id) {\r\n angular.extend(hab_item, edited_item); //replace the data for that item\r\n }\r\n });\r\n\r\n scope.docsGridOptions.api.setRowData(scope.project.Docs);\r\n console.log(\"done reloading grid after editing doc item.\");\r\n };\r\n\r\n\r\n //handle favorite toggle\r\n scope.isFavorite = $rootScope.Profile.isProjectFavorite(routeParams.Id);\r\n scope.toggleFavorite = function () {\r\n UserService.toggleFavoriteProject(scope, $rootScope);\r\n }\r\n\r\n }];\r\n\r\n\r\nexport default project_files;\r\n\r\n\r\n\r\n","/*\r\n* Dataset Details is the page you get when you click the \"Metadata\" button on the dataset activities view page.\r\n* It displays all of the fields for the dataset. You can also edit those details in this view.\r\n* e.g.: http://localhost/cdms/index.html#/dataset-details/1004\r\n*/\r\nimport * as angular from 'angular';\r\nimport {populateMetadataDropdowns} from \"../../../common/common-functions\";\r\nimport {METADATA_ENTITY_DATASETTYPEID} from \"../../../../config\";\r\n\r\n\r\nvar dataset_detail = ['$scope', '$routeParams', 'DatasetService', 'ProjectService', 'CommonService', '$location', '$filter',\r\n function (scope, routeParams, DatasetService, ProjectService, CommonService, $location, $filter){\r\n scope.dataset = DatasetService.getDataset(routeParams.Id);\r\n\r\n //common fields we show for all datasets\r\n scope.metadataList = {};\r\n\r\n //select lists\r\n scope.CellOptions = {};\r\n\r\n scope.dataset.$promise.then(function(){\r\n\r\n scope.project = ProjectService.getProject(scope.dataset.ProjectId);\r\n scope.project.$promise.then(function(){\r\n scope.metadataList.Owner = {\r\n field: 'Owner',\r\n value: scope.project.Owner.Organization.Name + \" / \"+ scope.project.Owner.Department.Name + \" / \" + scope.project.Owner.Fullname ,\r\n locked: true\r\n };\r\n\r\n })\r\n\r\n //prepopulate the dataset fields that are included in the dataset's details (not strictly \"metadata\" -- but interfaced the same way)\r\n scope.metadataList = angular.extend(scope.metadataList, {\r\n Name: {\r\n field: 'Name',\r\n value: scope.dataset.Name,\r\n controlType: 'text',\r\n locked: true\r\n },\r\n Description: {\r\n field: 'Description',\r\n value: scope.dataset.Description,\r\n controlType: 'text',\r\n locked: true\r\n },\r\n Dataset: {\r\n field: 'Dataset',\r\n value: scope.dataset.Datastore.Name,\r\n locked: true\r\n },\r\n Created: {\r\n field: 'Created',\r\n value: $filter('date')(scope.dataset.CreateDateTime, \"MM/dd/yyyy\") ,\r\n locked: true\r\n }\r\n });\r\n\r\n //add in the metadata that came with this dataset\r\n scope.dataset.Metadata.forEach(function(value, key){\r\n try{\r\n var property = CommonService.getMetadataProperty(value.MetadataPropertyId);\r\n property.$promise.then(function(){\r\n populateMetadataDropdowns(scope,property); //setup any dropdown\r\n\r\n scope.metadataList[property.Name] =\r\n {\r\n field: property.Name,\r\n propertyId: property.Id,\r\n controlType: property.ControlType,\r\n value: value.Values,\r\n options: scope.CellOptions[property.Id+\"_Options\"]\r\n };\r\n })\r\n\r\n }catch(e)\r\n {\r\n console.dir(e);\r\n }\r\n });\r\n\r\n //now load the properties\r\n scope.metadataProperties = CommonService.getMetadataProperties(METADATA_ENTITY_DATASETTYPEID);\r\n\r\n //these are all the metadata properties configured for all datasets\r\n // -- add in the ones that aren't already being used in this particular dataset.\r\n scope.metadataProperties.$promise.then(function(){\r\n\r\n scope.metadataProperties.forEach(function(property, key){\r\n //if it isn't already there, add it as an available option\r\n if(!(property.Name in scope.metadataList))\r\n {\r\n populateMetadataDropdowns(scope,property); //setup the dropdown\r\n\r\n scope.metadataList[property.Name] =\r\n {\r\n field: property.Name,\r\n propertyId: property.Id,\r\n controlType: property.ControlType,\r\n value: \"\",\r\n options: scope.CellOptions[property.Id+\"_Options\"]\r\n };\r\n\r\n }\r\n });\r\n\r\n });\r\n\r\n });\r\n console.log(scope.metadataList);\r\n scope.saveResults = {};\r\n\r\n scope.save = function(){\r\n var metadata = [];\r\n angular.forEach(scope.metadataList, function(item, key){\r\n metadata.push({ MetadataPropertyId: item.propertyId, Values: item.value});\r\n });\r\n\r\n // console.log(\"metadatalist - \");\r\n // console.dir(scope.metadataList);\r\n // console.log(\"what we're sending - \");\r\n // console.dir(metadata);\r\n\r\n var promise = CommonService.saveDatasetMetadata(scope.dataset.Id, metadata, scope.saveResults);\r\n\r\n promise.$promise.then(function(){\r\n DatasetService.clearDataset();\r\n setTimeout(function(){\r\n console.log(\"boom ready to move on.\");\r\n scope.dataset = DatasetService.getDataset(routeParams.Id);\r\n $location.path(\"/dataset-details/\"+routeParams.Id);\r\n console.log(\"moving on.\");\r\n },250);\r\n //$location.path(\"/dataset-details/\"+routeParams.Id);\r\n });\r\n\r\n };\r\n\r\n scope.cancel = function(){\r\n $location.path(\"/dataset-details/\"+scope.dataset.Id);\r\n };\r\n\r\n scope.close = function(){\r\n $location.path(\"/activities/\"+scope.dataset.Id);\r\n };\r\n\r\n scope.edit = function(){\r\n \t\t\t $location.path(\"/dataset-edit/\"+scope.dataset.Id);\r\n };\r\n\r\n\r\n\t}\r\n];\r\n\r\nexport default dataset_detail;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {\r\n METADATA_PROPERTY_PERMIT_FILETYPES,\r\n PARCEL_LAYER,\r\n PERMIT_DATASETID, PERMIT_PROJECTID, PERMITCONTACTS_DATASETID, PERMITEVENTS_DATASETID, PERMIT_WRP_DATASETID,\r\n proxyUrl,\r\n ZONING_LAYER,\r\n SYSTEM_LOCATION_DATASET\r\n} from \"../../../../config\";\r\nimport {\r\n arrayToPossibleValues, BooleanCellRenderer, BooleanEditor, formatUsPhone, getById, getByName,\r\n getFilesArrayAsList,\r\n getJsonObjects,\r\n orderByAlpha, valueFormatterArrayToList\r\n} from \"../../../../core/common/common-functions\";\r\n// import {loadModules} from \"esri-loader\";\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\n// import '';\r\n// import '~jquery-ui'\r\ndeclare const $: any\r\n\r\nvar list_permits = ['$scope', '$route', '$routeParams', '$uibModal', '$location', '$window', '$rootScope', 'PermitService', 'GridService', 'DatasetService','CommonService','UserService','ProjectService',\r\n function ($scope, $route, $routeParams, $uibModal, $location, $window, $rootScope, PermitService, GridService, DatasetService, CommonService, UserService, ProjectService) {\r\n\r\n $rootScope.inModule = \"permits\";\r\n $rootScope.parcelMapFromList = undefined;\r\n $scope.currentPage = \"All\";\r\n $scope.row = null;\r\n $scope.clearingFilters = false;\r\n\r\n $scope.PermitContacts = [];\r\n $scope.PermitLocations = [];\r\n $scope.PermitParcels = [];\r\n $scope.PermitEvents = [];\r\n $scope.PermitFiles = [];\r\n $scope.ParcelHistory = [];\r\n $scope.PermitStatus = [];\r\n $scope.PermitFileTypes = [];\r\n $scope.aryUnmatchedItems = [];\r\n $scope.ShowPermitListGrid = true;\r\n $scope.PERMIT_DATASETID = PERMIT_DATASETID;\r\n //$scope.PERMIT_BURN_DATASETID = PERMITCONTACTS_DATASETID;\r\n //$scope.BURN_PERMIT_TYPES = BURN_PERMIT_TYPES;\r\n $scope.KeyCode = 0;\r\n $scope.blnFoundRowItem = false;\r\n // $scope.theKey = \"\";\r\n // $scope.theValue = \"\";\r\n\r\n $scope.locationDataset = DatasetService.getDataset(SYSTEM_LOCATION_DATASET); //load the dataset with the fields for location grid\r\n $scope.datasetLocations = null;\r\n\r\n console.log(\"Inside list-permits.ts...\");\r\n\r\n $scope.IsDefaultDataset = function(){\r\n //true at first, then once defined, true if our TPO permit dataset\r\n return (!$scope.dataset || ($scope.dataset.Id == PERMIT_DATASETID));\r\n };\r\n\r\n $scope.IsWrpPermitDataset = function(){\r\n //true at first, then once defined, true if WRP permit dataset.\r\n return ($scope.dataset.Id == PERMIT_WRP_DATASETID);\r\n };\r\n\r\n // Function for detecting window navigation types. Initial thought was to\r\n // use it to detect a page refresh, but it turned out to not be necessary.\r\n // Using some of the behavior to detect any sort of navigation (initial\r\n // vist, refresh, back/forward, etc.). Leaving in commented for reference.\r\n\r\n // $scope.navigationType = function () {\r\n\r\n // var result;\r\n // var p;\r\n // let navEntries = (window.performance.getEntriesByType(\"navigation\")[0] as any);\r\n \r\n // if (window.performance.getEntriesByType(\"navigation\")){\r\n // p=navEntries.type;\r\n \r\n // if (p=='navigate'){result=0}\r\n // if (p=='reload'){result=1}\r\n // if (p=='back_forward'){result=2}\r\n // if (p=='prerender'){result=3} //3 is my invention!\r\n // }\r\n // return result;\r\n // };\r\n\r\n if (window.performance.getEntriesByType(\"navigation\")){\r\n if ((typeof $rootScope.clickselect == 'undefined')) {\r\n if (window.location.href.includes(\"My\")) {\r\n $rootScope.clickselect = 'mine';\r\n } else {\r\n $rootScope.clickselect = 'allstaff';\r\n }\r\n }\r\n }\r\n\r\n $scope.PermitTypes = $scope.PermitTypes = PermitService.getPermitTypes();\r\n\r\n $scope.refreshingZones = false;\r\n $scope.showFeeTab = false;\r\n $scope.showRoutingSection = false;\r\n\r\n var permitDatasetId = PERMIT_DATASETID; //default to TPO\r\n var permitEventsDatasetId = PERMITEVENTS_DATASETID; //default to TPO events\r\n\r\n //if we have a particular dataset coming in then use it.\r\n //alert(\"$routeParams.DatasetId = \" + $routeParams.DatasetId);\r\n if($routeParams.DatasetId){\r\n permitDatasetId = $routeParams.DatasetId;\r\n }\r\n\r\n //load the permits dataset\r\n $scope.dataset = DatasetService.getDataset(permitDatasetId);\r\n //console.log('permitDatasetId = ' + permitDatasetId);\r\n\r\n $scope.PermitFileTypes = CommonService.getMetadataProperty(METADATA_PROPERTY_PERMIT_FILETYPES);\r\n $scope.contactsdataset = DatasetService.getDataset(PERMITCONTACTS_DATASETID);\r\n\r\n $scope.contactsdataset.$promise.then(function () {\r\n $scope.ContactsDatasetColumnDefs = GridService.getAgColumnDefs($scope.contactsdataset);\r\n });\r\n\r\n $scope.PermitFileTypes.$promise.then(function () {\r\n $scope.PermitFileTypes = angular.fromJson($scope.PermitFileTypes.PossibleValues);\r\n });\r\n\r\n $scope.locationDataset.$promise.then(function () {\r\n $scope.permitLocationsGrid.columnDefs = GridService.getAgColumnDefs($scope.locationDataset).HeaderFields;\r\n\r\n console.log(\"project locations resolved\");\r\n });\r\n\r\n $scope.dataset.$promise.then(function () {\r\n\r\n $scope.dataset.Config = angular.fromJson($scope.dataset.Config);\r\n\r\n //set the permitevents datasetid from childdatasetid, if configured\r\n if($scope.dataset.ChildDatasetId){\r\n permitEventsDatasetId = $scope.dataset.ChildDatasetId;\r\n }\r\n\r\n //load the permitevents dataset\r\n $scope.eventsdataset = DatasetService.getDataset(permitEventsDatasetId);\r\n\r\n $scope.eventsdataset.$promise.then(function () {\r\n var EventColumnDefs = GridService.getAgColumnDefs($scope.eventsdataset);\r\n $scope.permitEventsGrid.columnDefs = angular.merge(\r\n //[{ colId: 'EditLinks', cellRenderer: EditEventLinksTemplate, width: 60, menuTabs: [], hide: true }],\r\n EventColumnDefs.HeaderFields\r\n );\r\n\r\n //activate the permit events grid\r\n if (!$scope.permitEventsGridDiv) {\r\n $scope.permitEventsGridDiv = document.querySelector('#permit-events-grid');\r\n new Grid($scope.permitEventsGridDiv, $scope.permitEventsGrid);\r\n }\r\n\r\n $scope.permitEventsGrid.api.setRowData($scope.PermitEvents);\r\n\r\n // Get the project, so we can pass it on to the location modal, if necessary.\r\n $scope.project = ProjectService.getProject($scope.dataset.ProjectId);\r\n $scope.project.$promise.then(function (){\r\n $scope.project.Locations = ProjectService.getLocations($scope.project.Id);\r\n $scope.project.Locations.$promise.then(function () {\r\n // $scope.project.Locations.forEach( function (aLocation) {\r\n // console.log(\"aLocation = \" + aLocation.Id + \", \" + aLocation.Label);\r\n // });\r\n });\r\n });\r\n\r\n });\r\n\r\n //first, check permissions - we expect a Permission group to be set on dataset.Config.Permissions\r\n if(!$scope.dataset.Config.Permissions || !$scope.dataset.Config.Permissions.View || !$scope.dataset.Config.Permissions.Edit){\r\n alert(\"Configuration error - the administrator needs to configure the permissions for this dataset on Admin->Dataset->Config->Permissions\");\r\n console.error(\"Configuration error - the administrator needs to configure the permissions for this dataset on Admin->Dataset->Config->Permissions\");\r\n $scope.permits = [];\r\n throw (\"Failed to load\");\r\n }\r\n\r\n //console.log($scope.Profile.hasRole($scope.dataset.Config.Permissions.View) + \", \" + $scope.Profile.hasRole($scope.dataset.Config.Permissions.Edit));\r\n if (!$scope.Profile.hasRole($scope.dataset.Config.Permissions.View) && !$scope.Profile.hasRole($scope.dataset.Config.Permissions.Edit)){\r\n angular.rootScope.go(\"/unauthorized\");\r\n }\r\n\r\n $scope.isFavorite = $rootScope.Profile.isDatasetFavorite($scope.dataset.Id);\r\n\r\n $scope.permitsCanEdit = $scope.Profile.hasRole($scope.dataset.Config.Permissions.Edit);\r\n\r\n $scope.AllColumnDefs = GridService.getAgColumnDefs($scope.dataset);\r\n $scope.permitsGrid.columnDefs = $scope.AllColumnDefs.HeaderFields;\r\n\r\n $scope.permitsGrid.columnDefs.unshift(\r\n {\r\n field: 'PrimaryContact',\r\n headerName: 'Primary Contact',\r\n alwaysShowField: true,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text',\r\n ColumnIndex: 0\r\n });\r\n\r\n $scope.PermitTypes.$promise.then(function(){\r\n\r\n //setup some custom \"tweaks\" to the column definition defaults TODO: might be a better way\r\n $scope.permitsGrid.columnDefs.forEach(function (coldef) {\r\n if (coldef.DbColumnName == 'PermitNumber'){\r\n coldef.Disabled = true;\r\n coldef.filter='agTextColumnFilter'; //change from the default (checkboxes) to a \"contains\" filter\r\n }\r\n if(coldef.DbColumnName == 'ProjectName' || coldef.DbColumnName == 'SiteAddress')\r\n coldef.filter='agTextColumnFilter';\r\n\r\n if(coldef.DbColumnName == 'ReviewsRequired'){\r\n coldef.valueFormatter = function (params) {\r\n return valueFormatterArrayToList(params.node.data.ReviewsRequired);\r\n }\r\n }\r\n\r\n if(coldef.DbColumnName == 'PermitType'){\r\n coldef.PossibleValues = arrayToPossibleValues($scope.PermitTypes);\r\n }\r\n\r\n if(coldef.DbColumnName == 'Fee'){\r\n $scope.showFeeTab = true;\r\n }\r\n\r\n if(coldef.DbColumnName == 'ReviewsRequired') {\r\n $scope.showRoutingSection = true;\r\n }\r\n\r\n });\r\n\r\n });\r\n\r\n //activate the grid with the permits data\r\n $scope.permitsGridDiv = document.querySelector('#active-permits-grid');\r\n new Grid($scope.permitsGridDiv, $scope.permitsGrid);\r\n\r\n //$scope.permits = PermitService.getAllPermits(); // Original line.\r\n\r\n // We need to check the dataset.Config to get the group (permissions) name.\r\n // We will use the group name, to get the group Id.\r\n var permissionsName = \"\";\r\n var groupId = \"\";\r\n if (($scope.dataset.Config.Permissions) && ($scope.dataset.Config.Permissions.View))\r\n {\r\n permissionsName = $scope.dataset.Config.Permissions.View;\r\n $scope.Profile.Groups.forEach(function(group) {\r\n if (group.Name === permissionsName)\r\n {\r\n groupId = group.Id;\r\n //console.log(\"Want permits of \" + permissionsName + \", groupId = \" + groupId);\r\n }\r\n });\r\n\r\n }\r\n \r\n // PERMIT_WRP_DATASETID is set in the config.ts Permits key on the groupId, not the dataset.\r\n // We use PERMIT_WRP_DATASETID, to determine whether to pull all permits, or just the ones for a certain groupId.\r\n //alert(\"$scope.dataset.Id = \" + $scope.dataset.Id + \", PERMIT_WRP_DATASETID = \" + PERMIT_WRP_DATASETID);\r\n if ($scope.dataset.Id === PERMIT_WRP_DATASETID)\r\n $scope.permits = PermitService.getGroupPermits(groupId);\r\n else\r\n {\r\n //$scope.permits = PermitService.getAllPermits();\r\n $scope.permits = PermitService.getAllPermits($scope.dataset.Id);\r\n }\r\n\r\n $scope.permits.$promise.then(function () {\r\n // console.log(\" -- permits back -- \");\r\n $scope.permitsGrid.api.setRowData($scope.permits);\r\n\r\n //if there is an incoming Id, select it.\r\n if ($routeParams.Id) {\r\n $scope.permitsGrid.api.forEachNode(function (node) {\r\n if (node.data.Id == $routeParams.Id) {\r\n node.setSelected(true);\r\n $scope.permitsGrid.api.ensureIndexVisible(node.rowIndex, 'top');\r\n }\r\n });\r\n }\r\n\r\n //if there is an incoming filter, select it\r\n //console.log(\"$routeParams.filter = \" + $routeParams.filter);\r\n if($routeParams.filter) {\r\n $scope['show'+$routeParams.filter]();\r\n }\r\n\r\n GridService.autosizeColumns($scope.permitsGrid);\r\n\r\n });\r\n\r\n //now do some caching...\r\n $scope.Persons = PermitService.getAllPersons();\r\n $scope.CadasterParcels = PermitService.getAllParcels();\r\n\r\n $scope.Persons.$promise.then(function () {\r\n $scope.Persons.forEach(function (person) {\r\n person.Label = $scope.getPersonLabel(person);\r\n });\r\n\r\n $scope.Persons = $scope.Persons.sort(orderByAlpha);\r\n });\r\n\r\n $scope.datasetLocations = PermitService.getPermitDatasetLocations($scope.dataset.Id);\r\n\r\n $scope.datasetLocations.$promise.then(function () {\r\n $scope.datasetLocations = $scope.datasetLocations.sort(orderByAlpha);\r\n });\r\n\r\n });\r\n\r\n //returns a composed label for a person\r\n $scope.getPersonLabel = function(person){\r\n var label = (person.Organization) ? person.Organization : person.FullName;\r\n if (label == null || label == \"\")\r\n label = person.FirstName + \" \" + person.LastName;\r\n\r\n return label;\r\n }\r\n // $scope.getLocationLabel = function(location){\r\n // var label = (location.Organization) ? location.Organization : location.FullName;\r\n // if (label == null || label == \"\")\r\n // label = location.FirstName + \" \" + location.LastName;\r\n\r\n // return label;\r\n // }\r\n\r\n // NOTE =============== NOTE =============== NOTE =============== NOTE\r\n // The below functions have outdated or incompatible formats. Possibly\r\n // deprecated syntax or functionality. They have been re-written with\r\n // a working syntax. The specific function call in question is:\r\n // -- filterInstance.setModel()\r\n\r\n // $scope.showIssued = function () {\r\n // $scope.clearFilters();\r\n\r\n // //first select all but archived\r\n // var archive_filter_component = $scope.permitsGrid.api.setFilterModel({\r\n // 'FileStatus': {\r\n // values: ['Active'],\r\n // },\r\n // 'PermitStatus': {\r\n // values: ['Approved', 'Conditionally Approved']\r\n // }\r\n // })\r\n // $scope.currentPage = \"Issued\";\r\n // $scope.ShowPermitListGrid = true;\r\n // };\r\n\r\n // $scope.showApplications = function () {\r\n // $scope.clearFilters();\r\n\r\n // var archive_filter_component = $scope.permitsGrid.api.setFilterModel({\r\n // 'FileStatus': {\r\n // values: ['Active'],\r\n // },\r\n // 'PermitStatus': {\r\n // values: ['New Application', 'Under Review']\r\n // }\r\n // })\r\n // $scope.currentPage = \"Applications\";\r\n // $scope.ShowPermitListGrid = true;\r\n // };\r\n\r\n // $scope.showArchived = function () {\r\n // $scope.clearFilters();\r\n // var archive_filter_component = $scope.permitsGrid.api.setFilterModel({\r\n // 'FileStatus': {\r\n // values: ['Archived'],\r\n // },\r\n // })\r\n // $scope.currentPage = \"Archived\";\r\n // $scope.ShowPermitListGrid = true;\r\n // };\r\n // ==== =============== ==== =============== ==== =============== ====\r\n\r\n $scope.showIssued = function () {\r\n $scope.clearFilters();\r\n \r\n // Permit Status = \"Approved\" or \"Conditionally Approved\"\r\n // File Status != \"Archived\"\r\n var filterInstance = $scope.permitsGrid.api.getFilterInstance('PermitStatus');\r\n filterInstance.setModel({filterType: 'text', type: 'contains', filter: 'Approved'});\r\n $scope.permitsGrid.api.onFilterChanged();\r\n\r\n filterInstance = $scope.permitsGrid.api.getFilterInstance('FileStatus');\r\n filterInstance.setModel({filterType: 'text', type: 'notEqual', filter: 'Archived'});\r\n $scope.permitsGrid.api.onFilterChanged();\r\n \r\n $scope.currentPage = \"Issued\";\r\n $scope.ShowPermitListGrid = true;\r\n };\r\n\r\n // Permit Status == \"Approved\" or \"Conditionally Approved\"\r\n // File Status != \"Archived\"\r\n // ReviewedBy == {current User}\r\n $scope.showMyIssued = function () {\r\n $scope.showIssued();\r\n\r\n var filterInstance = $scope.permitsGrid.api.getFilterInstance('ReviewedBy');\r\n filterInstance.setModel({filterType: 'text', type: 'contains', filter: [$scope.Profile.Fullname]});\r\n $scope.permitsGrid.api.onFilterChanged();\r\n\r\n $scope.currentPage = \"MyIssued\";\r\n window.history.replaceState(null, \"\", '/permits/list?filter=MyIssued');\r\n $scope.ShowPermitListGrid = true;\r\n };\r\n\r\n // Permit Status == \"New Application\"\r\n // File Status != \"Archived\"\r\n $scope.showApplications = function () {\r\n $scope.clearFilters();\r\n \r\n var filterInstance = $scope.permitsGrid.api.getFilterInstance('PermitStatus');\r\n filterInstance.setModel({filterType: 'text', type: 'equals', filter: 'New Application'});\r\n\r\n // Reworked to separate these in the list header just like they are\r\n // on the Dashboard for consistency (see $scope.showUnderReview() below).\r\n\r\n // filterInstance.setModel({\r\n // condition1:{\r\n // type: 'equals',\r\n // filter: 'New Application'\r\n // },\r\n // condition2:{\r\n // type: 'equals',\r\n // filter: 'Under Review'\r\n // },\r\n // operator: 'OR'\r\n // });\r\n\r\n $scope.permitsGrid.api.onFilterChanged();\r\n\r\n filterInstance = $scope.permitsGrid.api.getFilterInstance('FileStatus');\r\n filterInstance.setModel({filterType: 'text', type: 'notEqual', filter: ['Archived']});\r\n $scope.permitsGrid.api.onFilterChanged();\r\n\r\n $scope.currentPage = \"Applications\";\r\n $scope.ShowPermitListGrid = true;\r\n };\r\n\r\n // Permit Status == \"New Application\"\r\n // File Status != \"Archived\"\r\n // ReviewedBy == {current User}\r\n $scope.showMyApplications = function () {\r\n $scope.showApplications();\r\n \r\n var filterInstance = $scope.permitsGrid.api.getFilterInstance('ReviewedBy');\r\n filterInstance.setModel({filterType: 'text', type: 'contains', filter: [$scope.Profile.Fullname]});\r\n $scope.permitsGrid.api.onFilterChanged();\r\n\r\n $scope.currentPage = \"MyApplications\";\r\n window.history.replaceState(null, \"\", '/permits/list?filter=MyApplications');\r\n $scope.ShowPermitListGrid = true;\r\n };\r\n\r\n // File Status == \"Archived\"\r\n $scope.showArchived = function () {\r\n $scope.clearFilters();\r\n\r\n var filterInstance = $scope.permitsGrid.api.getFilterInstance('FileStatus');\r\n filterInstance.setModel({filterType: 'text', type: 'equals', filter: ['Archived']});\r\n\r\n $scope.permitsGrid.api.onFilterChanged();\r\n $scope.currentPage = \"Archived\";\r\n $scope.ShowPermitListGrid = true;\r\n };\r\n\r\n // File Status == \"Archived\"\r\n // ReviewedBy == {current User}\r\n $scope.showMyArchived = function () {\r\n $scope.showArchived();\r\n \r\n var filterInstance = $scope.permitsGrid.api.getFilterInstance('ReviewedBy');\r\n filterInstance.setModel({filterType: 'text', type: 'contains', filter: [$scope.Profile.Fullname]});\r\n $scope.permitsGrid.api.onFilterChanged();\r\n\r\n $scope.currentPage = \"MyArchived\";\r\n window.history.replaceState(null, \"\", '/permits/list?filter=MyArchived');\r\n $scope.ShowPermitListGrid = true;\r\n };\r\n\r\n // Permit Status == \"Incomplete\"\r\n // File Status != \"Archived\"\r\n $scope.showIncomplete = function () {\r\n $scope.clearFilters();\r\n\r\n var filterInstance = $scope.permitsGrid.api.getFilterInstance('PermitStatus');\r\n filterInstance.setModel({filterType: 'text', type: 'equals', filter: ['Incomplete']});\r\n $scope.permitsGrid.api.onFilterChanged();\r\n\r\n filterInstance = $scope.permitsGrid.api.getFilterInstance('FileStatus');\r\n filterInstance.setModel({filterType: 'text', type: 'notEqual', filter: ['Archived']});\r\n $scope.permitsGrid.api.onFilterChanged();\r\n\r\n $scope.currentPage = \"Incomplete\";\r\n $scope.ShowPermitListGrid = true;\r\n };\r\n\r\n // Permit Status == \"Incomplete\"\r\n // File Status != \"Archived\"\r\n // ReviewedBy == {current User}\r\n $scope.showMyIncomplete = function () {\r\n $scope.showIncomplete();\r\n \r\n var filterInstance = $scope.permitsGrid.api.getFilterInstance('ReviewedBy');\r\n filterInstance.setModel({filterType: 'text', type: 'contains', filter: [$scope.Profile.Fullname]});\r\n $scope.permitsGrid.api.onFilterChanged();\r\n\r\n $scope.currentPage = \"MyIncomplete\";\r\n window.history.replaceState(null, \"\", '/permits/list?filter=MyIncomplete');\r\n $scope.ShowPermitListGrid = true;\r\n };\r\n\r\n // Permit Status == \"Under Review\"\r\n // File Status != \"Archived\"\r\n $scope.showUnderReview = function () {\r\n $scope.clearFilters();\r\n\r\n var filterInstance = $scope.permitsGrid.api.getFilterInstance('PermitStatus');\r\n filterInstance.setModel({filterType: 'text', type: 'equals', filter: ['Under Review']});\r\n $scope.permitsGrid.api.onFilterChanged();\r\n\r\n filterInstance = $scope.permitsGrid.api.getFilterInstance('FileStatus');\r\n filterInstance.setModel({filterType: 'text', type: 'notEqual', filter: ['Archived']});\r\n $scope.permitsGrid.api.onFilterChanged();\r\n\r\n $scope.currentPage = \"UnderReview\";\r\n $scope.ShowPermitListGrid = true;\r\n };\r\n\r\n // Permit Status == \"Under Review\"\r\n // File Status != \"Archived\"\r\n // ReviewedBy == {current User}\r\n $scope.showMyUnderReview = function () {\r\n $scope.showUnderReview();\r\n\r\n var filterInstance = $scope.permitsGrid.api.getFilterInstance('ReviewedBy');\r\n filterInstance.setModel({filterType: 'text', type: 'contains', filter: [$scope.Profile.Fullname]});\r\n $scope.permitsGrid.api.onFilterChanged();\r\n\r\n $scope.currentPage = \"MyUnderReview\";\r\n window.history.replaceState(null, \"\", '/permits/list?filter=MyUnderReview');\r\n $scope.ShowPermitListGrid = true;\r\n };\r\n\r\n $scope.showAll = function () {\r\n //$scope.clearingFilters = true;\r\n $scope.clearFilters();\r\n $scope.permitsGrid.api.getFilterModel(null);\r\n $scope.currentPage = \"All\";\r\n $scope.ShowPermitListGrid = true;\r\n };\r\n\r\n // ReviewedBy == {current User}\r\n $scope.showAssignedToMe = function () {\r\n $scope.clearFilters();\r\n \r\n var filterInstance = $scope.permitsGrid.api.getFilterInstance('ReviewedBy');\r\n filterInstance.setModel({filterType: 'text', type: 'contains', filter: [$scope.Profile.Fullname]})\r\n\r\n $scope.permitsGrid.api.onFilterChanged();\r\n $scope.currentPage = \"MyPermits\";\r\n $scope.ShowPermitListGrid = true;\r\n };\r\n\r\n $scope.clearReviewedBy = function () {\r\n var filterInstance = $scope.permitsGrid.api.getFilterInstance('ReviewedBy');\r\n filterInstance.setModel({filterType: 'text', type: 'contains', filter: []})\r\n\r\n $scope.permitsGrid.api.onFilterChanged();\r\n $scope.currentPage = \"MyPermits\";\r\n $scope.ShowPermitListGrid = true;\r\n };\r\n\r\n $scope.clearFilters = function(){\r\n $scope.clearingFilters = true;\r\n $scope.permitsGrid.api.setFilterModel(null);\r\n $scope.currentPage = \"All\";\r\n }\r\n\r\n //requirement: can navigate permits by up and down arrow keys\r\n $scope.keyboardNavigation = function (params) {\r\n //console.log(\"my navigation\");\r\n var previousCell = params.previousCellDef;\r\n var suggestedNextCell = params.nextCellDef;\r\n\r\n var KEY_UP = 38;\r\n var KEY_DOWN = 40;\r\n var KEY_LEFT = 37;\r\n var KEY_RIGHT = 39;\r\n\r\n switch (params.key) {\r\n case KEY_DOWN:\r\n //console.log(\"down\");\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell + 1\r\n $scope.permitsGrid.api.forEachNode(function (node) {\r\n if (previousCell.rowIndex + 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_UP:\r\n previousCell = params.previousCellDef;\r\n // set selected cell on current cell - 1\r\n $scope.permitsGrid.api.forEachNode(function (node) {\r\n if (previousCell.rowIndex - 1 === node.rowIndex) {\r\n node.setSelected(true);\r\n }\r\n });\r\n return suggestedNextCell;\r\n case KEY_LEFT:\r\n case KEY_RIGHT:\r\n return suggestedNextCell;\r\n default:\r\n throw \"this will never happen, navigation is always one of the 4 keys above\";\r\n }\r\n };\r\n\r\n\r\n $scope.permitsGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n rowSelection: 'single',\r\n hasFilters: false,\r\n onSelectionChanged: function (params) {\r\n\r\n if ($scope.row && $scope.row.dataChanged) {\r\n //warn if they're trying to change the selection when data is changed\r\n if ($scope.row.Id != $scope.permitsGrid.api.getSelectedRows()[0].Id) {\r\n alert(\"It looks like you've changed this permit. Please click 'Save' or 'Cancel' before navigating to another permit.\");\r\n $scope.permitsGrid.selectedNode.setSelected(true);\r\n }\r\n\r\n //in any case, don't change.\r\n return false;\r\n }\r\n\r\n $scope.permitsGrid.selectedItem = $scope.row = angular.copy($scope.permitsGrid.api.getSelectedRows()[0]);\r\n $scope.permitsGrid.selectedNode = $scope.permitsGrid.api.getSelectedNodes()[0];\r\n\r\n // if($scope.row.LocationId) {\r\n // $scope.row.Activity = { LocationId : $scope.row.LocationId };\r\n // }\r\n\r\n if($scope.IsDefaultDataset()){\r\n $('#tab-status').tab('show'); //default to the \"Permit Status\" tab when select a different permit\r\n } else {\r\n $('#tab-basicinfo').tab('show'); //default to the \"Detail\" tab when not the default dataset (TPO)\r\n }\r\n\r\n if ($scope.row)\r\n {\r\n $scope.selectPermit($scope.row.Id);\r\n // $scope.project.Locations.forEach(function(aLoc) {\r\n // if (aLoc.Id === $scope.row.LocationId)\r\n // $scope.row.LocationId = aLoc.Label;\r\n // });\r\n }\r\n\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n //console.dir($scope.row);\r\n\r\n //console.dir($scope.permitsGrid.selectedItem)\r\n },\r\n selectedItem: null,\r\n selectedNode: null,\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onFilterChanged: function(params){\r\n if($scope.clearingFilters == true)\r\n $scope.permitsGrid.hasFilters = $scope.clearingFilters = false;\r\n else\r\n $scope.permitsGrid.hasFilters = true;\r\n\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n onFirstDataRendered: function(){\r\n var allColumnIds = [];\r\n $scope.permitsGrid.columnApi.getAllColumns().forEach(function (columnDef) {\r\n allColumnIds.push(columnDef.colId);\r\n });\r\n $scope.permitsGrid.columnApi.autoSizeColumns(allColumnIds);\r\n },\r\n navigateToNextCell: $scope.keyboardNavigation\r\n }\r\n\r\n\r\n $scope.openPersonModal = function (person_id) {\r\n\r\n $scope.person_modal = getById($scope.Persons, person_id);\r\n console.dir($scope.person_modal.Id);\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/contacts/templates/add-person-modal.html',\r\n controller: 'AddPersonModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_person) {\r\n $scope.Persons = PermitService.getAllPersons();\r\n });\r\n }\r\n\r\n $scope.permitContactsGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n rowSelection: 'single',\r\n selectedItem: null,\r\n components: {\r\n booleanEditor: BooleanEditor,\r\n booleanCellRenderer: BooleanCellRenderer,\r\n },\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onRowDoubleClicked: function (params) {\r\n if ($scope.permitsCanEdit) {\r\n $scope.openPersonModal($scope.permitContactsGrid.selectedItem.PersonId);\r\n }\r\n },\r\n onSelectionChanged: function (params) {\r\n $scope.permitContactsGrid.selectedItem = $scope.permitContactsGrid.api.getSelectedRows()[0];\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n }\r\n\r\n $scope.permitLocationsGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n rowSelection: 'single',\r\n selectedItem: null,\r\n components: {\r\n booleanEditor: BooleanEditor,\r\n booleanCellRenderer: BooleanCellRenderer,\r\n },\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n // onRowDoubleClicked: function (params) {\r\n // if ($scope.permitsCanEdit) {\r\n // //$scope.editLocation_modal = { LocationId: params.data.Id };\r\n // $scope.editLocation_modal = params.data;\r\n // $scope.editLocation_modal.PermitId = $scope.row.Id;\r\n // //$scope.openProjectLocationModal($scope.permitLocationsGrid.selectedItem.Id);\r\n // $scope.openProjectLocationModal(params.data);\r\n // }\r\n // },\r\n onSelectionChanged: function (params) {\r\n $scope.permitLocationsGrid.selectedItem = $scope.permitLocationsGrid.api.getSelectedRows()[0];\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n }\r\n\r\n $scope.permitParcelsGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n rowSelection: 'single',\r\n selectedItem: null,\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onSelectionChanged: function (params) {\r\n $scope.permitParcelsGrid.selectedItem = $scope.permitParcelsGrid.api.getSelectedRows()[0];\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n onRowDoubleClicked: function (params) {\r\n window.open(\"permits/map?ParcelId=\" + params.data.ParcelId, \"_blank\");\r\n },\r\n }\r\n\r\n $scope.parcelHistoryGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n rowSelection: 'single',\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onRowDoubleClicked: function (params) {\r\n // The backend (c#) adds IsViolation (it is not in the database) to the data, in the SQL command it uses to pull the records.\r\n // Check IsViolation, to determine which form should be opened, violations or permits.\r\n if (params.data.IsViolation === \"y\")\r\n {\r\n window.open(\"permits/ehsviolations?Id=\" + params.data.Id, \"_blank\");\r\n }\r\n else\r\n {\r\n window.open(\"permits/list?Id=\" + params.data.Id, \"_blank\");\r\n }\r\n },\r\n }\r\n\r\n $scope.permitEventsGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n selectedItem: null,\r\n rowSelection: 'single',\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onRowDoubleClicked: function (params) {\r\n $scope.openActivityModal($scope.permitEventsGrid.selectedItem);\r\n },\r\n onSelectionChanged: function (params) {\r\n $scope.permitEventsGrid.selectedItem = $scope.permitEventsGrid.api.getSelectedRows()[0];\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n getRowHeight: function (params) {\r\n var file_height = 25 * (getFilesArrayAsList(params.data.Files).length); //count up the number of file lines we will have.\r\n var shared_height = 25 * (getFilesArrayAsList(params.data.SharedFiles).length);\r\n var final = (shared_height > file_height) ? shared_height : file_height;\r\n return (final > 25) ? final : 25;\r\n },\r\n }\r\n\r\n $scope.permitFilesGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n rowSelection: 'single',\r\n selectedItem: null,\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onSelectionChanged: function (params) {\r\n $scope.permitFilesGrid.selectedItem = $scope.permitFilesGrid.api.getSelectedRows()[0];\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n onRowDoubleClicked: function (params) {\r\n $scope.openEditFileTypeModal($scope.permitFilesGrid.selectedItem);\r\n },\r\n onFilterChanged: function(params){\r\n // console.log(\"Inside $scope.permitFilesGrid.onFilterChanged...\");\r\n // console.log(\"params is next...\");\r\n // console.dir(params);\r\n\r\n },\r\n }\r\n\r\n\r\n var UploadedByTemplate = function (param) {\r\n return moment(param.node.data.UploadDate).format('L') + \" by \" + param.node.data.User.Fullname;\r\n };\r\n\r\n var EditFileLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openFileModal(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n // var EditFileLinksTemplate2 = function (param) {\r\n // console.log(\"Inside EditFileLinksTemplate2...\");\r\n\r\n // var div = document.createElement('div');\r\n // };\r\n\r\n var EditContactLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a');\r\n editBtn.href = '#';\r\n editBtn.innerHTML = 'Modify';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openContactModal(param.data);\r\n });\r\n\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n var EditLocationLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a');\r\n editBtn.href = '#';\r\n editBtn.innerHTML = 'Modify';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openLocationModal(param.data);\r\n });\r\n\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n $scope.EditEventLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openActivityModal(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n\r\n var LinkTemplate = function (param) {\r\n // console.log(\"Inside LinkTemplate...\");\r\n // console.log(\"param is next...\");\r\n // console.dir(param);\r\n // console.log(\"param.data.Name = \" + param.data.Name);\r\n\r\n var div = document.createElement('div');\r\n\r\n var linkBtn = document.createElement('a');\r\n linkBtn.href = param.data.Link;\r\n linkBtn.innerHTML = param.data.Name;\r\n linkBtn.target = \"_blank\";\r\n div.appendChild(linkBtn);\r\n return div;\r\n };\r\n\r\n\r\n $scope.permitContactsGrid.columnDefs = [\r\n { colId: 'EditLinks',\r\n // cellRenderer: function(params) {\r\n // return $scope.EditContactLinksTemplate(params.node)\r\n // },\r\n cellRenderer: EditContactLinksTemplate,\r\n width: 60, menuTabs: []},\r\n {\r\n headerName: \"Primary\", field: \"IsPrimary\", width: 110,\r\n cellRenderer: 'booleanCellRenderer',\r\n sort: 'desc'\r\n },\r\n {\r\n headerName: \"Contact\", width: 200,\r\n cellRenderer: function (params) {\r\n return $scope.getPersonLabel(params.node.data.Person);\r\n },\r\n filter: 'text',\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n { headerName: \"Type\", field: \"ContactType\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n {\r\n headerName: \"Info\", width: 120,\r\n cellRenderer: function (params) {\r\n if (params.node.data.Person.CellPhone)\r\n return formatUsPhone(params.node.data.Person.CellPhone);\r\n\r\n if (params.node.data.Person.WorkPhone)\r\n return formatUsPhone(params.node.data.Person.WorkPhone);\r\n\r\n if (params.node.data.Person.HomePhone)\r\n return formatUsPhone(params.node.data.Person.HomePhone);\r\n\r\n return (params.node.data.Person.Email) ? params.node.data.Person.Email : \"None provided\";\r\n\r\n },\r\n filter: 'text',\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n\r\n ];\r\n\r\n $scope.permitLocationsGrid.columnDefs = [\r\n //{ colId: 'EditLinks',\r\n // cellRenderer: EditLocationLinksTemplate,\r\n // width: 60, menuTabs: []},\r\n { headerName: \"Id\", field: \"Id\", width: 200, menuTabs: ['filterMenuTab'], filter: true, hide: true }, // We need the Id, but we don't need to see it.\r\n { headerName: \"Label\", field: \"Label\", width: 200, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: \"Easting\", field: \"GPSEasting\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Northing\", field: \"GPSNorthing\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n ];\r\n\r\n $scope.permitParcelsGrid.columnDefs = [\r\n { headerName: \"Parcel Id\", field: \"ParcelId\", width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"PLSS\", field: \"PLSS\", width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n //{ headerName: \"Acres\", field: \"Object.Acres_Cty\", width: 150, menuTabs: ['filterMenuTab'] },\r\n { headerName: \"GIS\", width: 150, menuTabs: ['filterMenuTab'],\r\n valueGetter: function(param){\r\n if(param.data.Object) { //then we have joined cadaster on objectid for this parcel\r\n return (param.data.Object.ParcelId == param.data.ParcelId) ? \"Cadaster\" : \"Updated\";\r\n } else {\r\n return \"Historical\"; // if no cadaster object\r\n }\r\n }\r\n },\r\n ];\r\n\r\n $scope.parcelHistoryGrid.columnDefs = [\r\n { headerName: \"Permit Number\", field: \"PermitNumber\", width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Project Name\", field: \"ProjectName\", width: 220, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Parcel Id\", field: \"MatchingParcelId\", width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Permit Status\", field: \"PermitStatus\", width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n ];\r\n\r\n $scope.permitFilesGrid.columnDefs = [\r\n //{ headerName: 'File', cellRenderer: LinkTemplate, width: 220, menuTabs: ['filterMenuTab'], filter: true },\r\n { field: 'Name', headerName: 'File Name', width: 220, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: 'Link', cellRenderer: LinkTemplate, width: 220, filter: false},\r\n { field: 'Description', headerName: 'File Type', width: 200, menuTabs: ['filterMenuTab'], filter: true },\r\n { field: 'Uploaded', headerName: \"Uploaded\", width: 240, valueGetter: UploadedByTemplate, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n ];\r\n\r\n $scope.openActivityModal = function (params, intent) {\r\n\r\n delete $scope.activity_modal;\r\n $scope.intent = intent;\r\n\r\n //if editing, we'll have incoming params\r\n if (params) {\r\n $scope.activity_modal = params;\r\n } else {\r\n $scope.activity_modal = { PermitId: $scope.row.Id };\r\n if (intent == 'new_route')\r\n $scope.activity_modal.EventType = 'Review';\r\n if (intent == 'new_inspection')\r\n $scope.activity_modal.EventType = 'Inspection';\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/list/templates/add-permit-activity-modal.html',\r\n controller: 'PermitActivityModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_activity) {\r\n $scope.selectPermit($scope.row.Id);\r\n $scope.PermitEvents = PermitService.getPermitEvents($scope.row.Id);\r\n $scope.PermitEvents.$promise.then(function () {\r\n $scope.permitEventsGrid.api.setRowData($scope.PermitEvents);\r\n });\r\n });\r\n }\r\n\r\n // This function currently called by add-contact-modal.ts -> $scope.save, new_contact.$promise\r\n // After adding a new contact, this function refreshes the contents of permitContactsGrid.\r\n $scope.refreshContacts = function (PermitId) {\r\n $scope.PermitContacts = PermitService.getPermitContacts(PermitId);\r\n $scope.PermitContacts.$promise.then(function () {\r\n $scope.permitContactsGrid.api.setRowData($scope.PermitContacts);\r\n });\r\n }\r\n\r\n $scope.whatKeyPressed = function (event) {\r\n //console.log(\"Inside whatKeyPress...\");\r\n // Do nothing.\r\n // We are in a text box and the user pressed the Enter key on the keyboard.\r\n // $scope.KeyCode is either 0 or 13 (code for Enter key).\r\n $scope.KeyCode = event.keyCode;\r\n }\r\n\r\n $scope.openContactModal = function (params) {\r\n console.log(\"Inside $scope.openContactModal...\");\r\n\r\n // $scope.KeyCode is set in $scope.whatKeyPressed and it is the event.keyCode;\r\n // The Enter key on the keyboard has a keycode of 13.\r\n // If the cursor is in a text box (not textarea), and the user presses the Enter key on the keyboard,\r\n // the flow first goes to $scope.whatKeyPressed, and then to the first item with an ng-click. \r\n // In this case, this one is the first.\r\n // Therefore, it got here because the Enter key was pressed in a text box, we want to ignore it.\r\n // ~ GC 8/13/2024\r\n if ($scope.KeyCode !== 13)\r\n {\r\n\r\n //if editing, we'll have incoming params\r\n if (params) {\r\n $scope.contact_modal = params;\r\n $scope.contact_modal.Person.Label = $scope.getPersonLabel($scope.contact_modal.Person);\r\n } else {\r\n $scope.contact_modal = { PermitId: $scope.row.Id };\r\n }\r\n\r\n $scope.person_modal = null;\r\n console.dir($scope.contact_modal);\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/list/templates/add-contact-modal.html',\r\n controller: 'ContactModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_contact) {\r\n // $scope.PermitContacts = PermitService.getPermitContacts(saved_contact.PermitId);\r\n // $scope.PermitContacts.$promise.then(function () {\r\n // $scope.permitContactsGrid.api.setRowData($scope.PermitContacts);\r\n\r\n // //try to set the PrimaryContact field if we have one\r\n // $scope.PermitContacts.forEach(function(item){\r\n // if(item.IsPrimary){\r\n // $scope.permits.forEach(function(permit){\r\n // if(permit.Id == $scope.row.Id){\r\n // permit.PrimaryContact = (item.Person.Organization) ? item.Person.Organization : item.Person.FullName;\r\n // }\r\n // })\r\n // $scope.permitsGrid.api.setRowData($scope.permits);\r\n // $scope.permitsGrid.api.redrawRows({rowNodes: [$scope.permitsGrid.selectedNode], force: true});\r\n\r\n // $scope.permitsGrid.api.forEachNode(function(node){\r\n // if(node.data.Id == $scope.row.Id){\r\n // node.setSelected(true,true);\r\n // setTimeout(() => {\r\n // //@ts-ignore\r\n // $('#tab-basicinfo').tab('show');\r\n // }, 200);\r\n // //$scope.permitsGrid.api.ensureIndexVisible($scope.permitsGrid.selectedNode.childIndex, 'top'); //scroll to the selected row\r\n // }\r\n // });\r\n // }\r\n // })\r\n\r\n // });\r\n\r\n // //ask if they want to copy in the contact info if it is currently blank.\r\n // if(saved_contact.IsPrimary && !$scope.row.SiteAddress && confirm(\"Do you want to copy the contact's address into this permit record?\")){\r\n // $scope.row.SiteAddress = saved_contact.Person.PhysicalAddress1;\r\n // $scope.row.SiteCity = saved_contact.Person.PhysicalCity;\r\n // $scope.row.SiteState = saved_contact.Person.PhysicalState;\r\n // $scope.row.SiteZip = saved_contact.Person.PhysicalZip;\r\n // $scope.row.dataChanged = true;\r\n // }\r\n\r\n });\r\n }\r\n // Reset the KeyCode\r\n $scope.KeyCode = 0;\r\n }\r\n\r\n $scope.prepLocationModal = function (params) {\r\n\r\n //if editing, we'll have incoming params\r\n if (params) {\r\n console.log(\"Permits...with params; we're editing...\");\r\n $scope.location_modal = params;\r\n //$scope.location_modal.Location.Label = $scope.getLocationLabel($scope.location_modal.Location);\r\n $scope.location_modal.PermitId = $scope.row.Id;\r\n\r\n $scope.openLocationModal($scope.location_modal);\r\n } \r\n //else if ($scope.dataset.Datastore.Name === \"Permits\") { // No params; we are adding a location.\r\n else if (!params) {\r\n console.log(\"Permits...no params; we're adding...\");\r\n\r\n $scope.location_modal = { PermitId: $scope.row.Id };\r\n\r\n $scope.openLocationModal($scope.location_modal);\r\n\r\n }\r\n else if (!$scope.row.Id) {\r\n console.log(\"No $scope.row.Id...\");\r\n }\r\n else {\r\n $scope.location_modal = { PermitId: $scope.row.Id };\r\n }\r\n\r\n //$scope.location_modal = null;\r\n console.dir($scope.location_modal);\r\n\r\n\r\n }\r\n\r\n // $scope.openProjectLocationModal = function(params) {\r\n\r\n // // if editing, we'll have incoming params\r\n // if (params) {\r\n // $scope.ProjectLocation_modal = params;\r\n // } else {\r\n // // No incomfing params.\r\n // $scope.ProjectLocation_modal = { };\r\n // }\r\n\r\n // //$scope.row = angular.copy(params);\r\n\r\n // //$scope.project = ProjectService.getProject($scope.dataset.ProjectId);\r\n // //$scope.project.$promise.then(function () {\r\n // $scope.CalledBy = \"permits\";\r\n // var modalInstance = $uibModal.open({\r\n // //templateUrl: 'appjsLegacy/private/permits/components/list/templates/edit-location-modal.html',\r\n // templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/modal-edit-location.html',\r\n // //controller: 'EditLocationModalController',\r\n // controller: 'ModalEditLocationCtrl',\r\n // scope: $scope,\r\n // backdrop: \"static\",\r\n // keyboard: false\r\n // });\r\n // //});\r\n // }\r\n\r\n $scope.openLocationModal = function(params) {\r\n console.log(\"Inside openLocationModal\");\r\n console.log(\"params is next...\");\r\n console.dir(params);\r\n\r\n // We don't need these items, for the Project, when we only work with the permit.\r\n //$scope.project = ProjectService.getProject($scope.dataset.ProjectId);\r\n //$scope.project.$promise.then(function () {\r\n var modalInstance = $uibModal.open({\r\n //templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/modal-edit-location.html',\r\n templateUrl: 'appjsLegacy/private/permits/components/list/templates/add-location-modal.html',\r\n controller: 'LocationModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_location) {\r\n $scope.PermitLocations = ProjectService.getDatasetLocations($scope.dataset.ProjectId, $scope.dataset.Id);//saved_location.LocationId);\r\n $scope.PermitLocations2 = PermitService.getPermitLocations($scope.dataset.Id);//saved_location.LocationId);\r\n $scope.PermitLocations2.$promise.then(function () {\r\n console.log(\"$scope.PermitLocations2 is next...\");\r\n console.dir($scope.PermitLocations2);\r\n });\r\n $scope.PermitLocations.$promise.then(function () {\r\n console.log(\"$scope.PermitLocations is next...\");\r\n console.dir($scope.PermitLocations);\r\n $scope.permitLocationsGrid.api.setRowData($scope.PermitLocations);\r\n \r\n //try to set the PermitLocation field if we have one\r\n $scope.PermitLocations.forEach(function(item){\r\n //if(item.IsPrimary){\r\n $scope.permitsGrid.api.setRowData($scope.permits);\r\n $scope.permitsGrid.api.redrawRows({rowNodes: [$scope.permitsGrid.selectedNode], force: true});\r\n \r\n $scope.permitsGrid.api.forEachNode(function(node){\r\n if(node.data.Id == $scope.row.Id){\r\n node.setSelected(true,true);\r\n setTimeout(() => {\r\n //@ts-ignore\r\n $('#tab-basicinfo').tab('show');\r\n }, 200);\r\n //$scope.permitsGrid.api.ensureIndexVisible($scope.permitsGrid.selectedNode.childIndex, 'top'); //scroll to the selected row\r\n }\r\n });\r\n //}\r\n })\r\n \r\n });\r\n });\r\n //});\r\n }\r\n\r\n //open a modal for editing only the filetype\r\n $scope.openEditFileTypeModal = function(params){\r\n $scope.file_modal = params;\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/list/templates/modal-edit-file.html',\r\n controller: 'EditPermitFileTypeModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_file) {\r\n $scope.PermitFiles.forEach(function (file, index) {\r\n if (file.Id == saved_file.Id) {\r\n file.Description = saved_file.Description;\r\n $scope.permitFilesGrid.api.setRowData($scope.PermitFiles);\r\n }\r\n });\r\n });\r\n }\r\n\r\n $scope.openParcelModal = function (params) {\r\n\r\n if ($scope.row.dataChanged){\r\n alert(\"Please save or cancel your changes before adding a new parcel.\");\r\n return;\r\n }\r\n\r\n //if editing, we'll have incoming params\r\n if (params) {\r\n $scope.parcel_modal = params;\r\n } else {\r\n $scope.parcel_modal = {};\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/list/templates/add-parcel-modal.html',\r\n controller: 'ParcelModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_parcel) {\r\n $scope.PermitParcels = PermitService.getPermitParcels(saved_parcel.PermitId);\r\n $scope.PermitParcels.$promise.then(function () {\r\n $scope.permitParcelsGrid.api.setRowData($scope.PermitParcels);\r\n $scope.refreshZones();\r\n $scope.refreshParcelHistory();\r\n });\r\n });\r\n }\r\n\r\n $scope.openFileModal = function (params) {\r\n console.log(\"Inside openFileModal...\");\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/list/templates/modal-new-file.html',\r\n controller: 'PermitFileModalController',\r\n backdrop: 'static',\r\n keyboard: false,\r\n scope: $scope,\r\n }).result.then(function (saved_files) {\r\n if (Array.isArray(saved_files)) {\r\n\r\n saved_files.forEach(function (new_file) {\r\n $scope.PermitFiles.push(new_file);\r\n });\r\n\r\n $scope.permitFilesGrid.api.setRowData($scope.PermitFiles);\r\n }\r\n else\r\n console.warn(\"looks like no files were saved?\");\r\n });\r\n }\r\n\r\n $scope.removeSelectedFile = function () {\r\n\r\n if (!confirm(\"Are you sure you want to delete this file?\")) {\r\n return;\r\n }\r\n\r\n var file_to_remove = $scope.permitFilesGrid.selectedItem;\r\n //var deleted = PermitService.deletePermitFile(PERMIT_PROJECTID, $scope.row.Id, 0, file_to_remove);\r\n var deleted = PermitService.deletePermitFile($scope.project.Id, $scope.row.Id, 0, file_to_remove);\r\n\r\n deleted.$promise.then(function () {\r\n $scope.PermitFiles.forEach(function (file, index) {\r\n if (file.Id == file_to_remove.Id) {\r\n $scope.PermitFiles.splice(index, 1);\r\n $scope.permitFilesGrid.api.setRowData($scope.PermitFiles);\r\n }\r\n });\r\n $scope.permitFilesGrid.selectedItem = null; // To hide the Remove button.\r\n $scope.resetGrids($scope.row.Id);\r\n //$scope.$apply(); // To make the changes reflect on the page.\r\n });\r\n\r\n }\r\n\r\n $scope.createNewPermit = function () {\r\n\r\n if ($scope.row && $scope.row.dataChanged && !confirm(\"It looks like you've made edits on this page. Are you sure you want to clear everything and start a new permit?\")) {\r\n return;\r\n }\r\n\r\n $scope.PermitTypes = PermitService.getPermitTypes(); //load the permit types fresh -- these have our permitnumber to increment...\r\n\r\n $scope.row = $scope.permitsGrid.selectedItem = GridService.getNewRow($scope.permitsGrid.columnDefs);\r\n\r\n $scope.PermitContacts = [];\r\n $scope.PermitParcels = [];\r\n $scope.PermitEvents = [];\r\n $scope.PermitFiles = [];\r\n $scope.ParcelHistory = [];\r\n\r\n $scope.resetGrids();\r\n $scope.togglePermitTypeField();\r\n //@ts-ignore\r\n $('#tab-basicinfo').tab('show'); //default to the \"Permit Details\" tab when select a different permit\r\n\r\n };\r\n\r\n $scope.removeSelectedContact = function () {\r\n if ($scope.permitContactsGrid.selectedItem && confirm(\"Are you sure you want to remove this Contact?\")) {\r\n var removed = PermitService.removeContact($scope.permitContactsGrid.selectedItem);\r\n removed.$promise.then(function () {\r\n $scope.PermitContacts.forEach(function (contact, index) {\r\n if (contact.PersonId == $scope.permitContactsGrid.selectedItem.PersonId) {\r\n $scope.PermitContacts.splice(index,1);\r\n $scope.permitContactsGrid.api.setRowData($scope.PermitContacts);\r\n }\r\n });\r\n\r\n if($scope.permitContactsGrid.selectedItem.IsPrimary){\r\n $scope.permits.forEach(function(permit){\r\n if(permit.Id == $scope.row.Id){\r\n permit.PrimaryContact = \"\";\r\n }\r\n })\r\n $scope.permitsGrid.api.setRowData($scope.permits);\r\n $scope.permitsGrid.api.redrawRows({rowNodes: [$scope.permitsGrid.selectedNode], force: true});\r\n\r\n $scope.permitsGrid.api.forEachNode(function(node){\r\n if(node.data.Id == $scope.row.Id){\r\n node.setSelected(true,true);\r\n setTimeout(() => {\r\n //@ts-ignore\r\n $('#tab-basicinfo').tab('show');\r\n }, 200);\r\n //$scope.permitsGrid.api.ensureIndexVisible($scope.permitsGrid.selectedNode.childIndex, 'top'); //scroll to the selected row\r\n }\r\n });\r\n\r\n }\r\n\r\n });\r\n }\r\n };\r\n\r\n $scope.removeSelectedLocation = function () {\r\n console.log(\"Inside removeSelectedLocation...\");\r\n\r\n if ($scope.permitLocationsGrid.selectedItem && confirm(\"Are you sure you want to remove this Location?\")) {\r\n var removed = PermitService.removePermitLocation($scope.permitsGrid.selectedItem.Id);\r\n removed.$promise.then(function () {\r\n $scope.PermitLocations.forEach(function (location, index) {\r\n if (location.Id == $scope.permitLocationsGrid.selectedItem.Id) {\r\n $scope.PermitLocations.splice(index,1);\r\n $scope.permitLocationsGrid.api.setRowData($scope.PermitLocations);\r\n }\r\n });\r\n $scope.permitLocationsGrid.selectedItem = null; // To hide the Remove button.\r\n $scope.$apply(); // To make the changes reflect on the page.\r\n });\r\n\r\n }\r\n };\r\n\r\n $scope.removeSelectedParcel = function () {\r\n if ($scope.permitParcelsGrid.selectedItem && confirm(\"Are you sure you want to remove this Parcel?\")) {\r\n var removed = PermitService.removePermitParcel($scope.permitParcelsGrid.selectedItem);\r\n removed.$promise.then(function () {\r\n $scope.PermitParcels = PermitService.getPermitParcels($scope.row.Id);\r\n $scope.PermitParcels.$promise.then(function () {\r\n $scope.permitParcelsGrid.api.setRowData($scope.PermitParcels);\r\n $scope.refreshZones();\r\n $scope.refreshParcelHistory();\r\n });\r\n\r\n });\r\n }\r\n };\r\n\r\n $scope.hasPrimaryContact = function() {\r\n var hasPrimaryContact = false;\r\n\r\n $scope.PermitContacts.forEach(function (contact, index) {\r\n if(contact.IsPrimary)\r\n hasPrimaryContact = true;\r\n });\r\n\r\n return hasPrimaryContact;\r\n }\r\n\r\n $scope.openPermitReport = function(){\r\n if(!$scope.hasPrimaryContact() && $scope.row.IssueDate == null){\r\n alert(\"You must specify a primary contact and IssueDate before you can generate a Permit report.\")\r\n return;\r\n }\r\n if(!$scope.hasPrimaryContact()){\r\n alert(\"You must specify a primary contact before you can generate a Permit report.\")\r\n return;\r\n }\r\n if($scope.row.IssueDate == null){\r\n alert(\"You must specify an IssueDate before you can generate a Permit report.\")\r\n return;\r\n }\r\n\r\n console.log(\"About to open permit report...\");\r\n window.open(\"https://paluutreports.ctuir.org/Reports/report/TPO/DevelopmentPermit?PermitNumber=\" + $scope.row.PermitNumber, \"_blank\");\r\n }\r\n\r\n $scope.openParcelInMap = function(){\r\n $rootScope.parcelMapFromList = $scope.permitParcelsGrid.selectedItem.ParcelId;\r\n $location.url(\"permits/map\");\r\n\r\n // window.open(\"permits/map\",\"_blank\");\r\n }\r\n\r\n $scope.openCOReport = function(){\r\n if(!$scope.hasPrimaryContact()){\r\n alert(\"You must specify a primary contact before you can generate a Certificate of Occupancy report.\")\r\n return;\r\n }\r\n window.open(\"https://paluutreports.ctuir.org/Reports/report/TPO/CertificateOfOccupancy?PermitNumber=\" + $scope.row.PermitNumber, \"_blank\");\r\n }\r\n\r\n $scope.resetGrids = function () {\r\n //activate the permit contacts grid\r\n if (!$scope.permitContactsGridDiv) {\r\n $scope.permitContactsGridDiv = document.querySelector('#permit-contacts-grid');\r\n new Grid($scope.permitContactsGridDiv, $scope.permitContactsGrid);\r\n }\r\n\r\n // Removed 8/8/2024 per CUC. ~GC\r\n // //activate the permit locations grid\r\n // if (!$scope.permitLocationsGridDiv) {\r\n // $scope.permitLocationsGridDiv = document.querySelector('#permit-locations-grid');\r\n // new Grid($scope.permitLocationsGridDiv, $scope.permitLocationsGrid);\r\n // }\r\n\r\n //activate the permit parcels grid\r\n if (!$scope.permitParcelsGridDiv) {\r\n $scope.permitParcelsGridDiv = document.querySelector('#permit-parcels-grid');\r\n new Grid($scope.permitParcelsGridDiv, $scope.permitParcelsGrid);\r\n }\r\n\r\n //activate the parcel history grid\r\n if (!$scope.parcelHistoryGridDiv) {\r\n $scope.parcelHistoryGridDiv = document.querySelector('#parcel-history-grid');\r\n new Grid($scope.parcelHistoryGridDiv, $scope.parcelHistoryGrid);\r\n }\r\n\r\n //activate the permit files grid\r\n if (!$scope.permitFilesGridDiv) {\r\n $scope.permitFilesGridDiv = document.querySelector('#permit-files-grid');\r\n new Grid($scope.permitFilesGridDiv, $scope.permitFilesGrid);\r\n }\r\n\r\n $scope.permitContactsGrid.api.setRowData($scope.PermitContacts);\r\n $scope.permitParcelsGrid.api.setRowData($scope.PermitParcels);\r\n $scope.permitFilesGrid.api.setRowData($scope.PermitFiles);\r\n $scope.parcelHistoryGrid.api.setRowData($scope.ParcelHistory);\r\n //$scope.permitLocationsGrid.api.setRowData($scope.PermitLocations);\r\n\r\n if ($scope.permitEventsGrid && $scope.permitEventsGrid.api)\r\n $scope.permitEventsGrid.api.setRowData($scope.PermitEvents);\r\n\r\n if ($scope.permitsCanEdit) {\r\n $scope.permitContactsGrid.columnApi.setColumnVisible(\"EditLinks\", true);\r\n $scope.permitParcelsGrid.columnApi.setColumnVisible(\"EditLinks\", true);\r\n $scope.permitFilesGrid.columnApi.setColumnVisible(\"EditLinks\", true);\r\n }\r\n\r\n };\r\n\r\n $scope.selectPermit = function (Id) {\r\n\r\n console.log(\"Inside selectPermit, Permit Id = \" + Id);\r\n $scope.PermitContacts = PermitService.getPermitContacts(Id);\r\n //$scope.PermitLocations = PermitService.getPermitLocations(Id);\r\n $scope.PermitParcels = PermitService.getPermitParcels(Id);\r\n $scope.PermitEvents = PermitService.getPermitEvents(Id);\r\n $scope.PermitFiles = PermitService.getPermitFiles($scope.project.Id, Id);\r\n\r\n // GC 11/7/2024 -- Rather adding a line for each multi-select, I revised things to that the code will just \r\n // check for muti-select properties and convert them. -- GC\r\n // $scope.row.ReviewsRequired = ($scope.row.ReviewsRequired) ? angular.fromJson($scope.row.ReviewsRequired) : [];\r\n // $scope.row.InspectRequired = ($scope.row.InspectRequired) ? angular.fromJson($scope.row.InspectRequired) : [];\r\n // $scope.row.OccupancyGroup = ($scope.row.OccupancyGroup) ? angular.fromJson($scope.row.OccupancyGroup) : [];\r\n $scope.row.ItemType = ($scope.row.ItemType) ? angular.fromJson($scope.row.ItemType) : \"\";\r\n $scope.permitsGrid.columnDefs.forEach(function (coldef) {\r\n\r\n //$scope.row.forEach(function (rowItem)\r\n for (let [key, value] of Object.entries($scope.row))\r\n {\r\n if (coldef.cdmsField)\r\n {\r\n if (key === coldef.cdmsField.DbColumnName)\r\n {\r\n //console.log(\"Checking col \" + key);\r\n //var strControlType = coldef.cdmsField.ControlType.\r\n if (coldef.cdmsField.ControlType.indexOf(\"multiselect\") > -1)\r\n {\r\n //console.log(\"Found a multiselect: \" + key);\r\n if (typeof $scope.row[coldef.cdmsField.DbColumnName] !== 'undefined')\r\n $scope.row[coldef.cdmsField.DbColumnName] = angular.fromJson($scope.row[coldef.cdmsField.DbColumnName]);\r\n else\r\n $scope.row[coldef.cdmsField.DbColumnName] = [];\r\n }\r\n }\r\n }\r\n };\r\n });\r\n\r\n\r\n // What if $scope.row.ReviewsRequired has a value? The following will overwrite it. -GC\r\n // if (!Array.isArray($scope.row.ReviewsRequired))\r\n // $scope.row.ReviewsRequired = [];\r\n\r\n // This version will keep the existing value and convert it to an array. -GC\r\n if ((typeof $scope.row.ReviewsRequired === 'undefined') || ($scope.row.ReviewsRequired === null))\r\n {\r\n $scope.row.ReviewsRequired = [];\r\n }\r\n else if (($scope.row.ReviewsRequired.constructor == String) && ($scope.row.ReviewsRequired.length > 0))\r\n {\r\n $scope.row.ReviewsRequired = $scope.row.ReviewsRequired.split(',');\r\n }\r\n else if (($scope.row.ReviewsRequired.constructor == String) && ($scope.row.ReviewsRequired.length === 0))\r\n {\r\n $scope.row.ReviewsRequired = [];\r\n }\r\n\r\n // If $scope.row.InspectRequired is null, the following check catches it and sets it appropriately.\r\n if (!Array.isArray($scope.row.InspectRequired))\r\n $scope.row.InspectRequired = [];\r\n\r\n $scope.PermitContacts.$promise.then(function () {\r\n $scope.permitContactsGrid.api.setRowData($scope.PermitContacts);\r\n $scope.permitContactsGrid.selectedItem = null;\r\n });\r\n\r\n // Removed 8/8/2024 per CUC. ~GC\r\n // $scope.PermitLocations.$promise.then(function () {\r\n // //console.log(\"$scope.PermitLocations in selectPermit is next...\");\r\n // //console.dir($scope.PermitLocations);\r\n // $scope.permitLocationsGrid.api.setRowData($scope.PermitLocations);\r\n // $scope.permitLocationsGrid.selectedItem = null;\r\n // });\r\n\r\n // if($scope.row.LocationId) {\r\n // console.log(\"Inside selectPermit, LocationId = \" + $scope.row.LocationId);\r\n // $scope.row.Activity = { LocationId : $scope.row.LocationId };\r\n // }\r\n\r\n $scope.PermitParcels.$promise.then(function () {\r\n $scope.permitParcelsGrid.api.setRowData($scope.PermitParcels);\r\n $scope.permitParcelsGrid.selectedItem = null;\r\n $scope.refreshParcelHistory();\r\n $scope.refreshZones();\r\n });\r\n\r\n $scope.PermitEvents.$promise.then(function () {\r\n $scope.permitEventsGrid.api.setRowData($scope.PermitEvents);\r\n $scope.permitEventsGrid.selectedItem = null;\r\n\r\n $scope.PermitStatus = [];\r\n\r\n //setup our handy array for the Status tab\r\n $scope.row.ReviewsRequired.forEach(function (review) {\r\n\r\n var route = {\r\n ItemType: review,\r\n EventType: 'Review',\r\n };\r\n\r\n $scope.PermitEvents.forEach(function (event) {\r\n if (event.ItemType == review) //should only be one, really...\r\n {\r\n // @ts-ignore\r\n route.RequestDate = event.RequestDate;\r\n // @ts-ignore\r\n route.ResponseDate = event.ResponseDate;\r\n // @ts-ignore\r\n route.Comments = event.Comments;\r\n }\r\n });\r\n\r\n $scope.PermitStatus.push(route);\r\n\r\n });\r\n\r\n $scope.row.InspectRequired.forEach(function (inspect) {\r\n\r\n var route = {\r\n ItemType: inspect,\r\n EventType: 'Inspection',\r\n };\r\n\r\n $scope.PermitEvents.forEach(function (event) {\r\n if (event.ItemType == inspect) //should only be one, really...\r\n {\r\n // @ts-ignore\r\n route.RequestDate = event.RequestDate;\r\n // @ts-ignore\r\n route.ResponseDate = event.ResponseDate;\r\n // @ts-ignore\r\n route.Comments = event.Comments;\r\n }\r\n });\r\n\r\n $scope.PermitStatus.push(route);\r\n\r\n });\r\n\r\n //and now once for inspections\r\n $scope.PermitEvents.forEach(function (event) {\r\n var route = {};\r\n if (event.EventType == \"Inspection\")\r\n {\r\n // @ts-ignore\r\n route.RequestDate = event.RequestDate;\r\n // @ts-ignore\r\n route.ResponseDate = event.ResponseDate;\r\n // @ts-ignore\r\n route.Comments = event.Comments;\r\n // @ts-ignore\r\n route.EventType = event.EventType;\r\n // @ts-ignore\r\n route.ItemType = event.ItemType;\r\n\r\n $scope.PermitStatus.push(route);\r\n }\r\n });\r\n\r\n $scope.togglePermitTypeField();\r\n\r\n //stretch the textareas to the height of the content\r\n\r\n $('textarea').each(function () {\r\n\r\n this.setAttribute('style', 'min-height: 130px, height:auto; height:' + (this.scrollHeight) + 'px;overflow-y:hidden;');\r\n }).on('input', function () {\r\n this.style.height = 'auto';\r\n this.style.minHeight = '130px';\r\n this.style.height = (this.scrollHeight) + 'px';\r\n // @ts-ignore value is present on HTMLInputElement (which this is in actuality) but typescript is typesafe and returns the HTMLElement which does not have a value property\r\n this.value = this.value.replace(/\\n/g, \"\"); //do not allow hard-returns\r\n });\r\n\r\n });\r\n\r\n $scope.PermitFiles.$promise.then(function () {\r\n $scope.permitFilesGrid.api.setRowData($scope.PermitFiles);\r\n $scope.permitFilesGrid.selectedItem = null;\r\n });\r\n\r\n // if ($scope.row.Zoning) {\r\n // $scope.row.Zoning = getJsonObjects($scope.row.Zoning);\r\n // //console.warn(\" -- Zoning -- \");\r\n // //console.dir($scope.row.Zoning);\r\n\r\n // } else {\r\n // // GC 11/07/2024 -- In the backend C#, Zoning has string datatype. Sending Zoning over as an array causes an error.\r\n // // Some time back, Zoning was removed from dbo.DatasetFields for this dataset.\r\n // // Therefore currently, Zoning is always sent back empty, and in this case an empy array.\r\n // // Since the backend expects a string, I changed the value to a string.\r\n // // Second thought. I am just turning this part off for now, but retaining it just in case. -- GC\r\n // //$scope.row.Zoning = [];\r\n // $scope.row.Zoning = \"\";\r\n // }\r\n\r\n //$scope.$apply();\r\n };\r\n\r\n console.log(\"setting up grids\")\r\n $scope.resetGrids();\r\n\r\n //if the permit is already saved, PermitType should be disabled\r\n $scope.togglePermitTypeField = function(){\r\n if($scope.row.Id){\r\n $(\"#field-PermitType select.form-control\").attr(\"disabled\",\"disabled\");\r\n }\r\n else{\r\n $(\"#field-PermitType select.form-control\").removeAttr(\"disabled\");\r\n }\r\n }\r\n\r\n $scope.refreshParcelHistory = function () {\r\n $scope.ParcelHistory = [];\r\n $scope.parcelHistoryGrid.api.setRowData($scope.ParcelHistory);\r\n\r\n //iterate parcels to find any related permits\r\n $scope.PermitParcels.forEach(function (parcel) {\r\n console.log(\"Getting related permits for this parcel: \" + parcel.ParcelId);\r\n var related_permits = PermitService.getPermitsByRelatedParcels(parcel.ParcelId);\r\n related_permits.$promise.then(function () {\r\n related_permits.forEach(function (permit) {\r\n if (permit.Id !== $scope.row.Id) {\r\n permit.MatchingParcelId = parcel.ParcelId;\r\n $scope.ParcelHistory.push(permit);\r\n }\r\n });\r\n $scope.parcelHistoryGrid.api.setRowData($scope.ParcelHistory);\r\n });\r\n });\r\n };\r\n\r\n //if we are configured with a zoning field, true/false\r\n $scope.hasZoningField = function(){\r\n //if(!$scope.permitsGrid.columnDefs)\r\n if ((typeof $scope.permitsGrid.columnDefs == 'undefined') || ($scope.permitsGrid.columnDefs == null))\r\n return false;\r\n\r\n var zoningFieldPresent = false;\r\n var theProperty = getByName($scope.permitsGrid.columnDefs, 'Zoning');\r\n if (theProperty != null)\r\n zoningFieldPresent = true;\r\n\r\n //return (getByName($scope.permitsGrid.columnDefs, 'Zoning') != null);\r\n return zoningFieldPresent;\r\n }\r\n\r\n //are there any fields in col_index ?\r\n $scope.hasColumnIndexFields = function(col_index){\r\n if(!$scope.permitsGrid.columnDefs)\r\n return false;\r\n\r\n var has_col_index = false;\r\n $scope.permitsGrid.columnDefs.forEach(function(item){\r\n if (item.cdmsField && item.cdmsField.ColumnIndex == col_index)\r\n has_col_index = true;\r\n })\r\n\r\n return has_col_index;\r\n }\r\n\r\n\r\n $scope.refreshZones = function () {\r\n if(!$scope.hasZoningField){\r\n return;\r\n }\r\n\r\n console.log(\"$scope.row is next...\");\r\n console.dir($scope.row);\r\n if ((typeof $scope.row.Zones !== 'undefined') && ($scope.row.Zones !== null))\r\n {\r\n $scope.row.Zones.length = 0;\r\n $scope.PermitParcels.forEach(function (parcel) {\r\n if(parcel.Object){\r\n var the_zones = parcel.Object.ZoneCode.split(\":\");\r\n\r\n if (Array.isArray(the_zones)) {\r\n the_zones.forEach(function (zone) {\r\n if (!$scope.row.Zones.contains(zone))\r\n $scope.row.Zones.push(zone);\r\n });\r\n };\r\n }\r\n });\r\n }\r\n };\r\n\r\n\r\n //this function populates the zones using the live ArcGIS server layers but it is too slow,\r\n // so we'll use the above strategy instead and keep this around in case we change our mind.\r\n // apparently not used so commenting out - KS\r\n // $scope.refreshZonesLive = function () {\r\n // $scope.refreshingZones = true;\r\n // $scope.row.Zones.length = 0;\r\n // loadModules([\r\n // 'esri/config',\r\n // 'esri/tasks/query',\r\n // 'esri/tasks/QueryTask'], {version: '3.37'}).then(([esriConfig, Query, QueryTask]) => {\r\n // esriConfig.defaults.io.proxyUrl = proxyUrl; // From the config.js file.\r\n // esriConfig.defaults.io.alwaysUseProxy = true;\r\n //\r\n // //get the geometries of our related parcels\r\n // var parcelids = [];\r\n // $scope.PermitParcels.forEach(function (parcel) {\r\n // parcelids.push(parcel.ParcelId);\r\n // });\r\n // //2N30900000105\r\n //\r\n // if (parcelids.length == 0) {\r\n // console.warn(\"no parcelids to search for\");\r\n // $scope.refreshingZones = false;\r\n // return;\r\n // }\r\n //\r\n // // @ts-ignore\r\n // parcelids = parcelids.join(\"','\");\r\n //\r\n // var queryTask = new QueryTask(PARCEL_LAYER);\r\n // var query = new Query();\r\n //\r\n // query.where = \"PARCELID in ('\" + parcelids + \"')\";\r\n //\r\n // console.log(\"looking for parcels: \" + query.where);\r\n //\r\n // query.outSpatialReference = { wkid: 102100 };\r\n // query.returnGeometry = true;\r\n // query.outFields = [\"*\"];\r\n //\r\n // queryTask.execute(query, function (result) {\r\n // console.dir(result);\r\n //\r\n // result.features.forEach(function (feature) {\r\n // console.log(\"Ok - trying to find the zones for: \");\r\n // console.dir(feature);\r\n //\r\n // var zoneQueryTask = new QueryTask(ZONING_LAYER);\r\n // var zoneQuery = new Query();\r\n //\r\n // zoneQuery.outSpatialReference = { wkid: 102100 };\r\n // zoneQuery.returnGeometry = true;\r\n // zoneQuery.outFields = [\"*\"];\r\n // zoneQuery.geometry = feature.geometry;\r\n // zoneQuery.spatialRelationship = Query.SPATIAL_REL_INTERSECTS; //Query.SPATIAL_REL_INTERSECTS; //SPATIAL_REL_OVERLAPS?\r\n // zoneQuery.where = \"1=1\";\r\n // zoneQuery.maxAllowableOffset = 0;\r\n // zoneQuery.distance = 0;\r\n //\r\n // zoneQueryTask.execute(zoneQuery, function (zqresult) {\r\n // console.log(\"back from zone query with a result: \");\r\n // console.dir(zqresult);\r\n // zqresult.features.forEach(function (zfeature) {\r\n // if (!$scope.row.Zones.contains(zfeature.attributes.ZONECODE))\r\n // $scope.row.Zones.push(zfeature.attributes.ZONECODE);\r\n // console.dir($scope.row.Zones);\r\n // });\r\n //\r\n // //refresh our view\r\n // setTimeout(function () {\r\n // $scope.$apply(function () {\r\n // //$scope.row.Zoning = zones; //zones.join(\",\");\r\n // $scope.refreshingZones = false;\r\n // });\r\n // }, 500);\r\n //\r\n // }, function (err) {\r\n // console.log(\"Failure executing query!\");\r\n // console.dir(err);\r\n // console.dir(zoneQuery);\r\n // $scope.refreshingZones = false;\r\n // });\r\n //\r\n // });\r\n //\r\n // if (result.features.length == 0)\r\n // $scope.refreshingZones = false;\r\n //\r\n // }, function (err) {\r\n // console.log(\"Failure executing query!\");\r\n // console.dir(err);\r\n // // @ts-ignore\r\n // console.dir(zoneQuery);\r\n // $scope.refreshingZones = false;\r\n // });\r\n //\r\n // });\r\n //\r\n //\r\n // };\r\n\r\n $scope.onHeaderEditingStopped = function (field) { //fired onChange for header fields (common/templates/form-fields)\r\n\r\n console.log(\"onHeaderEditingStopped: \" + field.DbColumnName);\r\n //console.dir(this);\r\n\r\n if ($scope.row)\r\n {\r\n if (field.DbColumnName == \"LocationId\")\r\n {\r\n // if (this.row[field.DbColumnName])\r\n // $scope.row[field.DbColumnName] = this.row[field.DbColumnName];\r\n // else if (this.row.Activity[field.DbColumnName])\r\n // {\r\n // $scope.row[field.DbColumnName] = this.row.Activity[field.DbColumnName];\r\n // $scope.row[field.DbColumnName].innerHTML = $scope.row[field.DbColumnName];\r\n // }\r\n //$scope.row[field.DbColumnName] = this.row.Activity[field.DbColumnName];\r\n $scope.row[field.DbColumnName] = undefined;\r\n }\r\n\r\n if (field.DbColumnName == \"IssuedBy\")\r\n {\r\n var dtToday = moment().format('MM/DD/YYYY');\r\n $scope.row.IssueDate = dtToday;\r\n\r\n var dtExpireDate = moment().add(12, 'M').format('MM/DD/YYYY');\r\n $scope.row.ExpireDate = dtExpireDate;\r\n }\r\n\r\n\r\n //build event to send for validation\r\n var event = {\r\n colDef: field,\r\n node: { data: $scope.row },\r\n value: $scope.row[field.DbColumnName],\r\n type: 'onHeaderEditingStopped',\r\n scope: $scope\r\n };\r\n\r\n if (GridService.validateCell(event)) {\r\n GridService.fireRule(\"OnChange\", event); //only fires when valid change is made\r\n }\r\n\r\n //update our collection of header errors if any were returned\r\n $scope.headerFieldErrors = [];\r\n if ($scope.row.rowHasError) {\r\n $scope.row.validationErrors.forEach(function (error) {\r\n if (Array.isArray($scope.headerFieldErrors[error.field.DbColumnName])) {\r\n $scope.headerFieldErrors[error.field.DbColumnName].push(error.message);\r\n } else {\r\n $scope.headerFieldErrors[error.field.DbColumnName] = [error.message];\r\n }\r\n });\r\n }\r\n\r\n if ($scope.row.hasOwnProperty(field.DbColumnName)) { //make sure it is a header field from the permit\r\n\r\n //did the data actually change?\r\n //the selected original permit\r\n var selected = $scope.permitsGrid.api.getSelectedRows()[0];\r\n\r\n //if we've lost our original selection, find it in the permits\r\n if (!selected || selected.Id != $scope.row.Id) {\r\n $scope.permits.forEach(function (itr_permit) {\r\n if (itr_permit.Id == $scope.row.Id)\r\n selected = itr_permit;\r\n });\r\n }\r\n\r\n if (selected && selected[field.DbColumnName] != $scope.row[field.DbColumnName]) {\r\n $scope.row.dataChanged = true;\r\n }\r\n\r\n if(!selected && !$scope.row.Id) //then it is a new record\r\n $scope.row.dataChanged = true;\r\n\r\n }\r\n\r\n $rootScope.$emit('headerEditingStopped', field); //offer child scopes a chance to do something, i.e. add activity modal...\r\n\r\n //if this is a new permit and they changed the Permit Type, then update the permit number\r\n //console.log(field.DbColumnName);\r\n //console.log($scope.row.Id);\r\n if (field.DbColumnName == 'PermitType' && !$scope.row.Id) {\r\n $scope.generatePermitNumber();\r\n }\r\n }\r\n\r\n };\r\n\r\n $scope.generatePermitNumber = function () {\r\n var permitnumber = \"XXX\";\r\n $scope.PermitTypes.forEach(function (type) {\r\n if (type.Id === $scope.row.PermitType) {\r\n if (moment().year() > type.CurrentPermitYear)\r\n type.CurrentPermitNumber = 1;\r\n\r\n //permitnumber = (type.CurrentPermitNumber + 1+\"\").padStart(3, '0');\r\n permitnumber = type.PermitNumberPrefix + \"-\" + moment().format('YY') + \"-\" + permitnumber;\r\n\r\n $scope.row.PermitNumber = permitnumber;\r\n }\r\n });\r\n };\r\n\r\n $scope.submitSearch = function() {\r\n console.log(\"Inside $scope.submitSearch...\");\r\n console.log(\"search_term = \" + $scope.search_term);\r\n\r\n //var objSearchTerm = \"{\" + $scope.search_term + \"}\";\r\n\r\n //var searchForItems = JSON.parse(objSearchTerm);\r\n\r\n // for (var item in searchForItems)\r\n // {\r\n // console.log(\"item = \" + item + \", value = \" + searchForItems[item]);\r\n // }\r\n\r\n //for (var permit in $scope.permits)\r\n // for (var i = 0; i < $scope.permits.length; i++)\r\n // {\r\n // for (var prop in $scope.permits[i])\r\n // {\r\n // for (var item in searchForItems)\r\n // {\r\n // console.log(\"item = \" + item + \", value = \" + searchForItems[item]);\r\n // //if (prop == item)\r\n // if ($scope.permits[i][prop] == searchForItems[item])\r\n // {\r\n // console.log(\"Found one...\");\r\n // }\r\n // }\r\n // }\r\n // }\r\n\r\n $scope.search_permits = PermitService.searchPermits($scope.search_term);\r\n $scope.search_permits.$promise.then(function(){\r\n // $scope.search_permits.forEach(function(permit){\r\n // $scope.results.push(\r\n // {\r\n // // \"Name\": project.Name,\r\n // // \"Description\": project.Description,\r\n // // \"Type\": \"Project\",\r\n // // \"Link\": \"/projects/\"+project.Id\r\n\r\n // permit\r\n // })\r\n // })\r\n //$scope.results = angular.copy($scope.search_permits);\r\n //$scope.permitsGrid.api.setRowData($scope.results)\r\n $scope.permitsGrid.api.setRowData($scope.search_permits)\r\n })\r\n\r\n\r\n };\r\n\r\n $scope.cancel = function () {\r\n\r\n $scope.permitsGrid.selectedItem = $scope.row = null;\r\n $scope.permitsGrid.api.deselectAll();\r\n\r\n };\r\n\r\n $scope.getGroupIdFromPermitType = function(permitTypeId){\r\n var groupId = 0;\r\n var searchResult = \"\";\r\n var foundIt = 1;\r\n $scope.PermitTypes.forEach(function(type){\r\n if(type.Id == permitTypeId)\r\n {\r\n groupId = type.GroupId;\r\n foundIt = 0;\r\n }\r\n })\r\n if (foundIt === 0)\r\n searchResult = \"Found match for permitTypeId in PermitTypes...; permitTypeId = \" + permitTypeId;\r\n else\r\n searchResult = \"Could not find permitTypeId in PermitTypes...; permitTypeId = \" + permitTypeId;\r\n\r\n console.log(searchResult);\r\n\r\n return groupId;\r\n }\r\n\r\n $scope.save = function () {\r\n console.log(\"Inside list-permits.ts, $scope.save...\");\r\n\r\n if(!$scope.row.PermitType)\r\n {\r\n alert(\"You must select a Permit Type\");\r\n return;\r\n }\r\n\r\n var to_save = angular.copy($scope.row);\r\n $scope.row.isSaving = true;\r\n\r\n // *****This should be more robust, so that we don't need to update the code, if we add a new multiselect item.\r\n // For now, leaving this as it is, to get things working.\r\n // Convert the following items from a json object to a json string.\r\n // to_save.ReviewsRequired = angular.toJson(to_save.ReviewsRequired);\r\n if ((typeof to_save.ReviewsRequired !== 'undefined') && (to_save.ReviewsRequired !== null))\r\n {\r\n if (to_save.ReviewsRequired.constructor == Array)\r\n {\r\n to_save.ReviewsRequired = angular.toJson(to_save.ReviewsRequired);\r\n }\r\n else if (to_save.ReviewsRequired.constructor == Object)\r\n {\r\n JSON.stringify(to_save.ReviewsRequired);\r\n }\r\n else\r\n {\r\n to_save.ReviewsRequired = null;\r\n }\r\n }\r\n\r\n // GC 11/7/2024 -- In the backend code, Zoning is a string datatype, and sending it an array causes the save action to fail.\r\n // In the database, Zoning was removed from DatasetFields for this dataset.\r\n // Therefore, rather than saving an empty array, we convert the array to a string.\r\n // Second thought, just commenting the code out. Keeping the code around, just in case we need it later. -- GC\r\n // if ((typeof to_save.Zoning !== 'undefined') && (to_save.Zoning !== null))\r\n // {\r\n // if (to_save.Zoning.constructor == Array)\r\n // {\r\n // to_save.Zoning = to_save.Zoning.toString();\r\n // }\r\n // else if (to_save.Zoning.constructor == Object)\r\n // {\r\n // to_save.Zoning = JSON.stringify(to_save.Zoning);\r\n // }\r\n // //console.log(\"to_save.Zoning is next...\");\r\n // //console.dir(to_save.Zoning);\r\n // }\r\n\r\n // to_save.OccupancyGroup = angular.toJson(to_save.OccupancyGroup);\r\n if ((typeof to_save.OccupancyGroup !== 'undefined') && (to_save.OccupancyGroup !== null))\r\n {\r\n if (to_save.OccupancyGroup.constructor == Array)\r\n {\r\n to_save.OccupancyGroup = angular.toJson(to_save.OccupancyGroup);\r\n }\r\n else if (to_save.OccupancyGroup.constructor == Object)\r\n {\r\n JSON.stringify(to_save.OccupancyGroup);\r\n }\r\n else\r\n {\r\n to_save.OccupancyGroup = null;\r\n }\r\n }\r\n\r\n if ((typeof to_save.InspectRequired !== 'undefined') && (to_save.InspectRequired !== null))\r\n {\r\n if (to_save.InspectRequired.constructor == Array)\r\n {\r\n to_save.InspectRequired = angular.toJson(to_save.InspectRequired);\r\n }\r\n else if (to_save.InspectRequired.constructor == Object)\r\n {\r\n JSON.stringify(to_save.OccupancyInspectRequiredGroup);\r\n }\r\n else\r\n {\r\n to_save.InspectRequired = null;\r\n }\r\n }\r\n // *****\r\n\r\n\r\n\r\n // $scope.permitsGrid.columnDefs.forEach(function (coldef) {\r\n\r\n // //$scope.row.forEach(function (rowItem)\r\n // for (let [key, value] of Object.entries($scope.row))\r\n // {\r\n // if (coldef.cdmsField)\r\n // {\r\n // if (key === coldef.cdmsField.DbColumnName)\r\n // {\r\n // foundRowItem = true;\r\n // //console.log(\"Checking col \" + key);\r\n // //var strControlType = coldef.cdmsField.ControlType.\r\n // if (coldef.cdmsField.ControlType.indexOf(\"multiselect\") > -1)\r\n // {\r\n // console.log(\"Found a multiselect: \" + key);\r\n // if (to_save[coldef.cdmsField.DbColumnName].length > 0)\r\n // {\r\n // to_save[coldef.cdmsField.DbColumnName] = angular.toJson(to_save[coldef.cdmsField.DbColumnName]);\r\n // }\r\n // else\r\n // {\r\n // to_save[coldef.cdmsField.DbColumnName] = null;\r\n // }\r\n // }\r\n // }\r\n // }\r\n // };\r\n // });\r\n\r\n // // Compare the items in the row to the items in the grid (there will likely be more in the row than in the grid).\r\n // // For any items in the row but NOT in the grid, we must check the datatype of the value.\r\n // // For multiselect items (arrays), we need to convert the value from an array to a string, or the backend has an error,\r\n // // stating that it cannot store an array as a string.\r\n // let theItem = \"\";\r\n // let theValue = null;\r\n // for (let [key, value] of Object.entries($scope.row))\r\n // {\r\n // $scope.permitsGrid.columnDefs.forEach(function (coldef) {\r\n // if (coldef.cdmsField)\r\n // {\r\n // theItem = key;\r\n // theValue = value;\r\n // if (key === coldef.cdmsField.DbColumnName)\r\n // {\r\n // $scope.blnFoundRowItem = true;\r\n // //console.log(\"Checking col \" + key);\r\n // //var strControlType = coldef.cdmsField.ControlType.\r\n // if (coldef.cdmsField.ControlType.indexOf(\"multiselect\") > -1)\r\n // {\r\n // console.log(\"Found a multiselect: \" + key);\r\n // if (to_save[coldef.cdmsField.DbColumnName].length > 0)\r\n // {\r\n // to_save[coldef.cdmsField.DbColumnName] = angular.toJson(to_save[coldef.cdmsField.DbColumnName]);\r\n // }\r\n // else\r\n // {\r\n // to_save[coldef.cdmsField.DbColumnName] = null;\r\n // }\r\n // }\r\n // }\r\n // }\r\n // });\r\n\r\n // if ($scope.blnFoundRowItem)\r\n // {\r\n // $scope.blnFoundRowItem = false;\r\n // }\r\n // else\r\n // {\r\n // $scope.aryUnmatchedItems.push({theItem : theValue})\r\n // }\r\n\r\n // console.log(\"$scope.aryUnmatchedItems is next...\");\r\n // console.dir($scope.aryUnmatchedItems);\r\n // }\r\n\r\n to_save.GroupId = $scope.getGroupIdFromPermitType(to_save.PermitType);\r\n\r\n if ($scope.row.LocationId)\r\n {\r\n $scope.PermitLocations.forEach(function(aLoc) {\r\n if (aLoc.Label === to_save.LocationId)\r\n to_save.LocationId = aLoc.Id;\r\n });\r\n }\r\n\r\n var saved_permit = PermitService.savePermit(to_save);\r\n\r\n saved_permit.$promise.then(function () {\r\n $scope.row.isSaving = false;\r\n // console.log(\"permit saved: \");\r\n // console.dir(saved_permit);\r\n\r\n //requirement: if we saved a new status, add a record to the permitsevents\r\n if ($scope.row.Id && $scope.row.PermitStatus !== $scope.permitsGrid.api.getSelectedRows()[0].PermitStatus) {\r\n var new_event = {\r\n PermitId: $scope.row.Id,\r\n ByUser: $scope.Profile.Id,\r\n EventDate: moment().format('L'),\r\n RequestDate: moment().format('L'),\r\n ResponseDate: moment().format('L'),\r\n EventType: \"Record\",\r\n ItemType: \"TPO\",\r\n Reviewer: $scope.Profile.Fullname,\r\n Comments: \"Update Status from \" + $scope.permitsGrid.api.getSelectedRows()[0].PermitStatus + \" to \" + $scope.row.PermitStatus\r\n };\r\n console.log(\"saving a permitevent since we updated the status\"); console.dir(new_event);\r\n var save_event = PermitService.savePermitEvent(new_event);\r\n save_event.$promise.then(function () {\r\n //refresh the activities now that we've saved a new one.\r\n $scope.PermitEvents = PermitService.getPermitEvents($scope.row.Id);\r\n $scope.PermitEvents.$promise.then(function () {\r\n $scope.permitEventsGrid.api.setRowData($scope.PermitEvents);\r\n });\r\n });\r\n }\r\n\r\n if (!$scope.row.Id) {\r\n $scope.permits.push(saved_permit);\r\n $scope.permitsGrid.api.setRowData($scope.permits);\r\n $scope.row = saved_permit;\r\n $scope.row.dataChanged = false;\r\n $scope.showAll();\r\n }\r\n else {\r\n $scope.permits.forEach(function (existing_permit) {\r\n if (existing_permit.Id == $scope.row.Id) {\r\n angular.extend(existing_permit, saved_permit);\r\n }\r\n });\r\n\r\n $scope.selectPermit($scope.row.Id);\r\n $scope.ShowPermitListGrid = true;\r\n\r\n $scope.permitsGrid.api.redrawRows();\r\n //$scope.permitsGrid.api.setRowData($scope.permits);\r\n\r\n $scope.row.dataChanged = false;\r\n\r\n }\r\n\r\n //select the permit we just saved/updated\r\n $scope.permitsGrid.api.forEachNode(function(node){\r\n if(node.data.PermitNumber == $scope.row.PermitNumber){\r\n node.setSelected(true);\r\n $scope.permitsGrid.api.ensureIndexVisible(node.childIndex, 'bottom'); //scroll to the selected row\r\n }\r\n })\r\n\r\n },function(data){\r\n $scope.row.isSaving = false;\r\n $scope.row.hasError = true;\r\n $scope.row.errorMessage = \"There was a problem saving.\"\r\n });\r\n };\r\n\r\n //handle favorite toggle\r\n $scope.toggleFavorite = function () {\r\n UserService.toggleFavoriteDataset($scope, $rootScope);\r\n }\r\n}];\r\n\r\nexport default list_permits;\r\n","var inspection_violation_modal = ['$scope', '$uibModalInstance', 'LeasingService',\r\n function ($scope, $uibModalInstance, LeasingService) {\r\n\r\n $scope.header_message = \"Update Violation Action\";\r\n\r\n $scope.save = function () {\r\n\r\n console.dir($scope.violation_modal);\r\n var save_result = LeasingService.saveInspectionViolation($scope.violation_modal);\r\n\r\n save_result.$promise.then(function () {\r\n $scope.saveInspectionCallback(save_result);\r\n $uibModalInstance.dismiss();\r\n });\r\n };\r\n\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default inspection_violation_modal;\r\n","// defines the appraisals module\r\nimport * as angular from 'angular';\r\n\r\n// require([\r\n//controllers\r\nimport appraisal_map from \"./components/appraisal-activities/appraisal-map\";\r\nimport {downgradeComponent} from \"@angular/upgrade/static\";\r\nimport {AppraisalMapComponent} from \"../../../app/map/appraisal-map/appraisal-map.component\";\r\n\r\n\r\n// ], function () {\r\nconst appraisals_module = angular.module('AppraisalsModule', ['ui.bootstrap', 'ngResource']);\r\nappraisals_module.controller('AppraisalMapCtrl', appraisal_map);\r\nappraisals_module.directive('appraisalMap', downgradeComponent({component: AppraisalMapComponent}));\r\n\r\nexport default appraisals_module;\r\n\r\n// });\r\n\r\n\r\n\r\n","// defines the bot module\r\nimport * as angular from 'angular';\r\n// require([\r\n//controllers\r\nimport bot_projects from \"./components/dashboard/projects\";\r\n\r\n\r\n//modals\r\n\r\n//service\r\nimport * as bot_service from './bot-service';\r\nimport {serviceUrl} from \"../../config\";\r\nimport bot_services from \"./bot-service\";\r\n\r\n\r\n// ], function () {\r\nconst bot_module = angular.module('BOTModule', ['ui.bootstrap', 'ngResource'])\r\nbot_module.controller('BOTProjectsController', bot_projects);\r\nbot_module.service('BOTService', bot_services);\r\n\r\nbot_module.factory('AllBOTProjects', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/bot/allprojects', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\nbot_module.factory('BOTProjects', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/bot/projectsbytype', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\nbot_module.factory('ProjectObjectiveReports', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/bot/ProjectObjectiveReportsByObjective', {}, {\r\n query: { method: 'GET', params: {}, isArray: true }\r\n });\r\n}]);\r\n\r\nbot_module.factory('SaveBOTProject', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/bot/saveBotProject');\r\n}]);\r\n\r\nbot_module.factory('SaveBOTProjectObjective', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/bot/saveBotProjectObjective');\r\n}]);\r\n\r\nbot_module.factory('SaveBOTProjectObjectiveReport', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/bot/saveBotProjectObjectiveReport');\r\n}]);\r\n\r\n// });\r\n\r\nexport default bot_module;\r\n\r\n","//CDMSNumberCellValidator - extends CellValidator\r\n\r\n// validates numeric type fields according to the constraints specified in the cdms_field \"Validation\" field.\r\n\r\n/* this is the format of the cdms field validation array after parsing the \"Validation\" column.\r\n\r\n[ 'required',\r\n { number:\r\n { num_type: 'int',\r\n num_length: '4',\r\n num_decimal: undefined,\r\n original: 'int(4)' } },\r\n { number:\r\n { num_type: 'int',\r\n num_length: undefined,\r\n num_decimal: undefined,\r\n original: 'int' } },\r\n { number:\r\n { num_type: 'float',\r\n num_length: undefined,\r\n num_decimal: undefined,\r\n original: 'float' } },\r\n { number:\r\n { num_type: 'float',\r\n num_length: undefined,\r\n num_decimal: '3',\r\n original: 'float(3)' } },\r\n { number:\r\n { num_type: 'float',\r\n num_length: '5',\r\n num_decimal: '2',\r\n original: 'float(5,2)' } },\r\n 'year',\r\n { number: { num_type: 'range', num_range: '[200,500]' } } ]\r\n\r\n*/\r\n\r\nimport * as angular from 'angular';\r\nimport {CellValidator, ValidationError} from \"../cell-validation\";\r\nimport {isInteger, isNumber} from \"../../../common-functions\";\r\n\r\nexport function CDMSNumberCellValidator(cdms_field) {\r\n this.base = CellValidator;\r\n this.base(cdms_field);\r\n};\r\n\r\nCDMSNumberCellValidator.prototype = new CellValidator;\r\n\r\nCDMSNumberCellValidator.prototype.validateFieldControlTypeValidation = function (data) {\r\n //we are a number, so spin through and test any of our validations that are \"number\" types\r\n\r\n //console.log(\"Number Validation ------------------------------------------------ \");\r\n //console.dir(data);\r\n //console.dir(this.validation);\r\n\r\n //if it is empty, don't bother (required is a different constraint that can be applied and is run earlier)\r\n if (typeof data.value === 'undefined' || data.value === null || data.value === \"\")\r\n return this.errors;\r\n\r\n //validation: is the field numeric?\r\n if (!isNumber(data.value)) {\r\n this.errors.push(new ValidationError(this.cdms_field, \"Value must be a number.\"));\r\n return this.errors; //early return -- if the value isn't numeric, our other validation will fail, so bail out.\r\n }\r\n\r\n var _this = this;\r\n\r\n //iterate each validation in \"Validation\" field (we can have more than one separated by semicolons)\r\n // validate any of the constraints that are \"number\" (float, int, # of digits, etc.)\r\n this.validation.forEach(function (val) {\r\n //console.dir(val);\r\n try {\r\n\r\n //if this validation is a \"number\" constraint\r\n if (typeof val === 'object' && val.hasOwnProperty('number')) {\r\n\r\n //is it supposed to be an int? how many digits?\r\n if (val.number.num_type === \"int\") {\r\n if (!isInteger(+data.value)) { //+ coerces to a number\r\n _this.errors.push(new ValidationError(_this.cdms_field, \"Value must be an integer.\"));\r\n } else {\r\n\r\n //console.log(\"is an integer we're checking... \");\r\n //console.dir(val);\r\n\r\n //the number of digits specified for validation\r\n if (typeof val.number.num_length === 'number' && !Number.isNaN(val.number.num_length)) {\r\n let re_num_length = new RegExp(\"^\\\\d{\" + val.number.num_length + \",\" + val.number.num_length + \"}$\"); // ^\\d{2,2}$ ==> 2 digit int\r\n if (!re_num_length.test(data.value))\r\n _this.errors.push(new ValidationError(_this.cdms_field, \"Value must be an integer with \" + val.number.num_length + \" digits.\"));\r\n }\r\n }\r\n }\r\n\r\n //is it supposed to be a float? how many digits? how many decimals?\r\n // this is specified with: \"float(3,2)\" where 3 = num_length and 2 = num_decimal; e.g. 351.33 would match\r\n // they can also specify: \"float(3)\" where 3 = num_decimal and num_length is undefined so it can be as long as they want; e.g. 4482.223 would match\r\n if (val.number.num_type === \"float\") {\r\n //NOTE: since an integer is also a float, and we've already tested that it is a number, there isn't a test purely for float: if (!isFloat(data.value+0)) {\r\n\r\n //this case is when both num_length and num_decimal are specified: float(2,3).\r\n if (!Number.isNaN(val.number.num_length)) {\r\n\r\n // if the num_length is specified then there MUST be a decimal specified.\r\n if (Number.isNaN(val.number.num_decimal)) {\r\n console.error(\"Validation constraint is invalid for \" + _this.cdms_field.DbColumnName + \": decimal must be specified if length is specified\");\r\n return; //skip the rest, there is nothing we can do.\r\n }\r\n\r\n let re_num_length = new RegExp(\r\n \"^\\\\d{\" + val.number.num_length + \",\" + val.number.num_length + \"}\\\\.\\\\d{\" + val.number.num_decimal + \",\" + val.number.num_decimal + \"}$\"\r\n ); // ^\\d{2,2}\\.\\d{3,3}$ ==> 2 digit float with 3 decimal places e.g. 52.432\r\n\r\n if (!re_num_length.test(data.value))\r\n _this.errors.push(new ValidationError(_this.cdms_field, \"Value must be decimal (float) with \" + val.number.num_length + \" digits and \" + val.number.num_decimal + \" decimal places.\"));\r\n\r\n } else {\r\n //this case is when only num_decimal is specified: float(3)\r\n if (!Number.isNaN(val.number.num_decimal)) {\r\n\r\n var re_num_dec = new RegExp(\r\n \"^\\\\d*\\\\.{\" + val.number.num_decimal + \",\" + val.number.num_decimal + \"}$\"\r\n ); // ^\\d*\\.{3,3}$ ==> any digit float with 3 decimal places e.g. 52.432\r\n\r\n if (!re_num_dec.test(data.value))\r\n _this.errors.push(new ValidationError(_this.cdms_field, \"Value must be decimal (float) with \" + val.number.num_decimal + \" decimal places.\"));\r\n }\r\n }\r\n }\r\n\r\n //is it within the constrained range?\r\n if (val.number.num_type === \"range\") {\r\n try {\r\n var range_array = angular.fromJson(val.number.num_range);\r\n if (Array.isArray(range_array)) {\r\n var num_from = range_array[0];\r\n var num_to = range_array[1];\r\n\r\n if (!Number.isNaN(num_from) && !Number.isNaN(num_to)) {\r\n\r\n if (data.value < num_from || data.value > num_to)\r\n _this.errors.push(new ValidationError(_this.cdms_field, \"Value is out of range: \" + num_from + \":\" + num_to));\r\n }\r\n }\r\n\r\n }\r\n catch (e) {\r\n console.error(\"Validation for range could not be converted to array (or something similar)\");\r\n console.dir(e);\r\n }\r\n }\r\n\r\n //any other numeric types? they'd go here\r\n\r\n } else {\r\n console.warn(\"Validation could not be parsed for this column: \" + _this.cdms_field.DbColumnName);\r\n //console.dir(val);\r\n }\r\n\r\n } catch (e) {\r\n console.error(\"Problem with Validation constraint on field : \" + _this.cdms_field.DbColumnName);\r\n console.log(e);\r\n }\r\n\r\n\r\n }); //end for each validation\r\n\r\n return this.errors;\r\n};\r\n","import common_module from \"../common-module\";\r\n\r\nvar logger_service = [\r\n function () {\r\n\r\n var service = {\r\n log: function () {\r\n for (var i = 0; i < arguments.length; i++) {\r\n\r\n //output the argument\r\n //console.log(\"arguments is next...\");\r\n //console.dir(arguments[i]);\r\n\r\n //traverse recursively if it is an array\r\n if (arguments[i] instanceof Array) {\r\n var arrayArg = arguments[i];\r\n this.log.apply(this, arrayArg);\r\n }\r\n\r\n }\r\n },\r\n\r\n debug: function () {\r\n this.log.apply(this, arguments);\r\n },\r\n\r\n error: function () {\r\n this.log.apply(this, arguments);\r\n var message = {Message: arguments[0], Type: \"ERROR\"};\r\n },\r\n\r\n audit: function () {\r\n var message = {Message: arguments[0], Type: \"AUDIT\"};\r\n //@ts-ignore\r\n log.debug(\"AUDIT Message POSTED to server: \" + arguments[0]);\r\n },\r\n };\r\n\r\n return service;\r\n\r\n }];\r\n\r\n\r\nexport default logger_service;\r\n","\r\nvar modal_data_entry = ['$scope', '$uibModalInstance',\r\n\tfunction($scope, $uibModalInstance){\r\n\t\t//DRY alert -- this was copy and pasted... how can we fixy?\r\n\t\t$scope.alerts = [];\r\n\r\n\t\t$scope.ok = function(){\r\n\t\t\ttry{\r\n\t\t\t\t$scope.addGridRow($scope.row);\r\n\t\t\t\t$scope.row = {};\r\n\t\t\t\t$scope.alerts.push({type: 'success',msg: 'Added.'});\r\n\t\t\t}catch(e){\r\n\t\t\t\tconsole.dir(e);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t$scope.cancel = function() {\r\n\t\t\t$uibModalInstance.dismiss('cancel');\r\n\t\t};\r\n\r\n\t\t$scope.closeAlert = function(index) {\r\n\t\t $scope.alerts.splice(index, 1);\r\n\t\t};\r\n\r\n\t\t$scope.row = {}; //modal fields are bound here\r\n\r\n\t\t$scope.dateOptions = {\r\n\t\t 'year-format': \"'yy'\",\r\n\t\t 'starting-day': 1\r\n\t\t};\r\n\r\n\r\n\t}\r\n];\r\n\r\nexport default modal_data_entry;\r\n","import {NgModule} from '@angular/core';\r\nimport {BrowserModule} from '@angular/platform-browser';\r\nimport {AppRoutingModule} from './app-routing.module';\r\nimport {AppComponent} from './app.component';\r\nimport {UpgradeModule} from '@angular/upgrade/static';\r\nimport {HttpClientModule} from '@angular/common/http';\r\nimport {AppjsModule} from './appjs/appjs.module';\r\nimport {LoginModule} from \"./login/login.module\";\r\nimport {EsriMapComponent} from './map/esri-map/esri-map.component';\r\nimport {PermitMapComponent} from './map/permit-map/permit-map.component';\r\nimport {AppraisalMapComponent} from './map/appraisal-map/appraisal-map.component';\r\nimport {LeasingMapComponent} from './map/leasing-map/leasing-map.component';\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {ConfirmModule} from \"./confirm/confirm.module\";\r\nimport { HabitatMapComponent } from './map/habitat-map/habitat-map.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n EsriMapComponent,\r\n PermitMapComponent,\r\n AppraisalMapComponent,\r\n LeasingMapComponent,\r\n HabitatMapComponent,\r\n ],\r\n imports: [\r\n HttpClientModule,\r\n BrowserModule,\r\n AppRoutingModule,\r\n UpgradeModule,\r\n FormsModule,\r\n LoginModule, // login must come before all other custom modules\r\n ConfirmModule,\r\n AppjsModule,// must come last because it contains catch-all routing\r\n ],\r\n providers: [],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {\r\n// constructor(public upgrade: UpgradeModule, private http: HttpClient) {\r\n// }\r\n//\r\n// ngDoBootstrap() {\r\n// var root = location.pathname.replace(new RegExp(/\\/[^\\/]+$/), '');\r\n// root = (root == '/' ? \"\" : root); //when visiting website with just the domain, the root has a hanging /\r\n//\r\n// // require({\r\n// // async: true,\r\n// // packages: [\r\n// // {name: 'app', location: root + '/app'},\r\n// // {name: 'core', location: root + '/app/core'},\r\n// // {name: 'private', location: root + '/app/private'},\r\n// // ]\r\n// // });\r\n//\r\n// // require loads each of the javascript files referenced below, which can in turn load other files.\r\n// // require([\r\n// // 'angular',\r\n// // 'dojo/parser',\r\n// // 'dijit/Menu',\r\n// // 'dijit/MenuItem',\r\n// // 'dijit/form/DropDownButton',\r\n// // // 'app/app', //main.js\r\n// // 'core/all-modules',\r\n// // 'core/common/common-module',\r\n// // 'core/projects/projects-module',\r\n// // 'core/datasets/datasets-module',\r\n// // 'core/admin/admin-module',\r\n// // 'core/user/user-module',\r\n// // 'private/all-modules',\r\n// // 'private/crpp/crpp-module',\r\n// // 'private/habitat/habitat-module',\r\n// // 'private/appraisals/appraisals-module',\r\n// // 'private/leasing/leasing-module',\r\n// // 'private/permits/permit-module',\r\n// // 'private/olc/olc-module',\r\n// // 'private/covid/covid-module',\r\n// // 'private/bot/bot-module'\r\n// //\r\n// // ], (angular, parser) => {\r\n// //\r\n// // angular.element(document).ready(function () { //punch it, Chewy!\r\n//\r\n// //check our authentication and setup our user profile first of all!\r\n// //http://nadeemkhedr.wordpress.com/2013/11/25/how-to-do-authorization-and-role-based-permissions-in-angularjs/\r\n//\r\n// this.http.get(WHOAMI_URL).pipe(\r\n// tap(data => profile = data),\r\n// catchError(e => window.location = LOGIN_URL),\r\n// finalize(() => {\r\n// console.log(\"Booting dojo...\");\r\n// //parser.parse();\r\n//\r\n// // require(['dojo/domReady!'], function () {\r\n// console.log(\"Booting angular...\");\r\n// // setTimeout(() => {\r\n// this.upgrade.bootstrap(document.body, ['app'], {strictDi: true});\r\n// console.log(\"Inside init.js, all systems GO!\")\r\n// })).subscribe();\r\n// }\r\n}\r\n","// AdminService\r\n// factories and service to manage dataset master and dataset fields...\r\n//\r\n\r\n\r\nconst admin_services = ['$q',\r\n 'SaveDatasetField',\r\n 'SaveMasterField',\r\n 'DeleteDatasetField',\r\n 'GetAllFields',\r\n 'AddMasterFieldToDataset',\r\n 'GetAllDatastoreFields',\r\n 'SaveDataset',\r\n 'SaveNewDatastore',\r\n 'RemoveMasterField',\r\n 'SaveGroup',\r\n 'SaveGroupMember',\r\n 'RemoveGroupMember',\r\n 'SaveDepartment',\r\n 'SaveOrganization',\r\n 'SaveOrgAdmin',\r\n 'RemoveOrgAdmin',\r\n 'RemoveGroup',\r\n 'RemoveOrganization',\r\n 'RemoveUser',\r\n 'RemoveDepartment',\r\n 'RemoveDatastore',\r\n 'RegenerateViews',\r\n function ($q,\r\n SaveDatasetField,\r\n SaveMasterField,\r\n DeleteDatasetField,\r\n GetAllFields,\r\n AddMasterFieldToDataset,\r\n GetAllDatastoreFields,\r\n SaveDataset,\r\n SaveNewDatastore,\r\n RemoveMasterField,\r\n SaveGroup,\r\n SaveGroupMember,\r\n RemoveGroupMember,\r\n SaveDepartment,\r\n SaveOrganization,\r\n SaveOrgAdmin,\r\n RemoveOrgAdmin,\r\n RemoveGroup,\r\n RemoveOrganization,\r\n RemoveUser,\r\n RemoveDepartment,\r\n RemoveDatastore,\r\n RegenerateViews\r\n ) {\r\n\r\n var service = {\r\n\r\n addMasterFieldToDataset: function(datasetId, fieldId)\r\n {\r\n return AddMasterFieldToDataset.save({ DatasetId: datasetId, FieldId: fieldId });\r\n },\r\n\r\n saveNewDatastore: function(datastore){\r\n return SaveNewDatastore.save({ Datastore: datastore });\r\n },\r\n\r\n saveGroup: function(group){\r\n return SaveGroup.save({ Group: group });\r\n },\r\n\r\n saveDepartment: function(department){\r\n return SaveDepartment.save({ Department: department });\r\n },\r\n\r\n saveOrganization: function(organization){\r\n return SaveOrganization.save({ Organization: organization });\r\n },\r\n\r\n saveGroupMember: function(groupId, userId){\r\n return SaveGroupMember.save({ GroupId: groupId, UserId: userId });\r\n },\r\n\r\n removeGroupMember: function(groupId, userId){\r\n return RemoveGroupMember.save({ GroupId: groupId, UserId: userId });\r\n },\r\n\r\n removeGroup: function(groupId){\r\n return RemoveGroup.save({ GroupId: groupId });\r\n },\r\n\r\n removeOrganization: function(orgId){\r\n return RemoveOrganization.save({ OrganizationId: orgId });\r\n },\r\n\r\n removeUser: function(userId){\r\n return RemoveUser.save({ UserId: userId });\r\n },\r\n\r\n removeDepartment: function(deptId){\r\n return RemoveDepartment.save({ DepartmentId: deptId });\r\n },\r\n\r\n removeDatastore: function(datastoreId){\r\n return RemoveDatastore.save({ DatastoreId: datastoreId });\r\n },\r\n\r\n saveOrgAdmin: function(orgId, userId){\r\n return SaveOrgAdmin.save({ OrganizationId: orgId, UserId: userId });\r\n },\r\n\r\n removeOrgAdmin: function(orgId, userId){\r\n return RemoveOrgAdmin.save({ OrganizationId: orgId, UserId: userId });\r\n },\r\n\r\n removeField: function(datasetId, fieldId)\r\n {\r\n\t\t\t\tconsole.log(\"Trying to remove a field... datasetId = \" + datasetId + \", fieldId = \" + fieldId);\r\n return DeleteDatasetField.save({ DatasetId: datasetId, FieldId: fieldId });\r\n },\r\n\r\n removeMasterField: function(datastoreid, fieldId) {\r\n return RemoveMasterField.save({ DatastoreId: datastoreid, FieldId: fieldId });\r\n },\r\n\r\n regenerateViews: function(){\r\n return RegenerateViews.save();\r\n },\r\n\r\n getFields: function (id) {\r\n return GetAllDatastoreFields.query({ id: id });\r\n },\r\n\r\n getMasterFields: function (datastoreId) {\r\n return GetAllFields.query({ id: datastoreId });\r\n },\r\n\r\n saveDataset: function (dataset, saveResults) {\r\n saveResults.saving = true;\r\n\r\n SaveDataset.save({id: dataset.id, dataset: dataset}, function (data) {\r\n saveResults.saving = false;\r\n saveResults.success = true;\r\n }, function (data) {\r\n saveResults.saving = false;\r\n saveResults.failure = true;\r\n });\r\n },\r\n\r\n saveDatasetField: function (field) {\r\n\r\n return SaveDatasetField.save(field);\r\n\r\n },\r\n saveMasterField: function (field) {\r\n return SaveMasterField.save(field);\r\n },\r\n\r\n };\r\n\r\n return service;\r\n }\r\n];\r\n\r\nexport default admin_services;\r\n","import * as angular from 'angular';\r\nimport {getFilesArrayAsList, \r\n isDuplicateUploadFile, \r\n isFileInList, \r\n removeFileFromList,\r\n isValidFileName\r\n} from \"../../common-functions\";\r\nimport {\r\n PUBLIC_OR_PRIVATE,\r\n HOST_SERVER,\r\n serviceUrl,\r\n MAX_FILE_NAME_LENGTH\r\n} from \"../../../../config\";\r\n\r\n\r\n\r\n//this modal provides a common UI for file uploading\r\n\r\n/*\r\n* below the modal's controller function below, there are mixin properties and functions\r\n* that will need to be present on your controller in order for the uploading to work.\r\n* see dataset-edit-form.js or modal-add-correspondence-event.js (etc) for example use.\r\n*/\r\n\r\n//handles managing file controltypes\r\nvar modal_files = ['$scope', '$uibModalInstance', \r\n 'DatasetService','SubprojectService','$rootScope',\r\n '$uibModal','PermitService','ViolationService','ProjectService',\r\n function ($scope, $uibModalInstance, \r\n DatasetService, SubprojectService, $rootScope,\r\n $uibModal, PermitService, ViolationService, ProjectService){\r\n\r\n console.log(\"Inside modal-files.ts...\");\r\n\r\n console.log(\"$rootScope.KeyCode = \" + $rootScope.KeyCode);\r\n if ($rootScope.KeyCode == 13)\r\n {\r\n console.log(\"We got here, because the Enter key was pressed...\");\r\n $rootScope.KeyCode = 0;\r\n\r\n // We got here because the Enter key was pressed in a text or currency box.\r\n // We want to abort.\r\n // These techniques DID NOT work...\r\n // $uibModalInstance.dismiss(); - no errors; it just gets ignored.\r\n // $scope.cancel(); - undefined\r\n // this.close(); - this is undefined\r\n // This is not elegant, but it does what we need it to do.\r\n throw \"Enter key pressed in a text or currency box; abort.\";\r\n }\r\n \r\n\t\tif (typeof $scope.onRow !== 'undefined')\r\n\t\t\t$scope.onRow.errors = [];\r\n\r\n $scope.FormIsReadyToShow = false;\r\n $scope.foundDuplicate = false;\r\n //$scope.blnUpdatedFiles = false;\r\n $scope.MAX_FILE_NAME_LENGTH = MAX_FILE_NAME_LENGTH; // Create a scope variable, so the page can access it.\r\n var theServer = HOST_SERVER;\r\n\r\n // Note: I had this (function $scope.PrepFiles) down below, before function $scope.removeFile,\r\n // but Javascript kept saying at run time that the function was undefined. When I moved the \r\n // function up here, it could then see the function.\r\n $scope.PrepFiles = function(theFilesToCheck){\r\n if (typeof $scope.onRow !== 'undefined')\r\n {\r\n\t\t\t $scope.onRow.errors = [];\r\n }\r\n\r\n //note: we are extending here or clearing with length=0 in order to avoid creating a local copy of this property in our child scope.\r\n if ($scope.file_row[$scope.file_field]) {\r\n $scope.currentFiles.length = 0;\r\n\r\n //only show the files that we aren't uploading\r\n var existing_files = [];\r\n var from_current_files = getFilesArrayAsList($scope.file_row[$scope.file_field]);\r\n if (from_current_files && Array.isArray(from_current_files)) {\r\n from_current_files.forEach(function (file) {\r\n if (!isFileInList(file, $scope.filesToUpload[$scope.file_field]))\r\n existing_files.push(file);\r\n });\r\n }\r\n\r\n $scope.currentFiles = angular.extend($scope.currentFiles, existing_files);\r\n } else {\r\n $scope.currentFiles.length = 0;\r\n }\r\n\r\n //console.log(\"$scope.currentFiles is : \", $scope.currentFiles, \"for field\", $scope.file_field);\r\n //console.log(\"And originalExistingFiles: \", $scope.originalExistingFiles);\r\n };\r\n\r\n if ($scope.typeOfFilesToCheck === \"dataset\")\r\n {\r\n //Load the files related to this dataset\r\n $scope.dataset.Files = DatasetService.getDatasetFiles($scope.dataset.Id);\r\n\r\n //Once the dataset files load, setup our file handler\r\n $scope.dataset.Files.$promise.then(function () {\r\n $scope.setFilesToCheckForDuplicates($scope.dataset.Files);\r\n\r\n $scope.PrepFiles($scope.dataset.Files);\r\n $scope.FormIsReadyToShow = true;\r\n });\r\n }\r\n else if ($scope.typeOfFilesToCheck === \"project\")\r\n {\r\n //Load the files related to this project\r\n $scope.project.Files = ProjectService.getProjectFiles($scope.project.Id);\r\n\r\n //Once the project files load, setup our file handler\r\n $scope.project.Files.$promise.then(function () {\r\n $scope.setFilesToCheckForDuplicates($scope.project.Files);\r\n\r\n $scope.PrepFiles($scope.project.Files);\r\n $scope.FormIsReadyToShow = true;\r\n });\r\n }\r\n else if ($scope.typeOfFilesToCheck === \"SubprojectFiles\")\r\n {\r\n // Note: $scope.viewSubproject.Files exists on the parent -- $scope.$parent.SubprojectFileList;\r\n // So we don't need to reload them below.\r\n\r\n //Load the files related to this subproject.\r\n //$scope.viewSubproject.Files = SubprojectService.getSubprojectFiles($scope.$parent.projectId);\r\n\r\n //Once the subproject files load, setup our file handler\r\n //$scope.viewSubproject.Files.$promise.then(function () {\r\n\r\n $scope.setFilesToCheckForDuplicates($scope.viewSubproject.Files);\r\n\r\n $scope.PrepFiles($scope.viewSubproject.Files);\r\n $scope.FormIsReadyToShow = true;\r\n //});\r\n }\r\n else if ($scope.typeOfFilesToCheck === \"PermitFiles\")\r\n {\r\n //Load the files related to this permit\r\n $scope.PermitFiles = PermitService.getPermitFiles($scope.project.Id, $scope.permit.Id);\r\n\r\n //Once the files load, setup our file handler\r\n $scope.PermitFiles.$promise.then(function () {\r\n $scope.setFilesToCheckForDuplicates($scope.PermitFiles);\r\n\r\n $scope.PrepFiles($scope.PermitFiles);\r\n $scope.FormIsReadyToShow = true;\r\n });\r\n }\r\n else if ($scope.typeOfFilesToCheck === \"ViolationFiles\")\r\n {\r\n //Load the files related to this violation\r\n $scope.ViolationFiles = ViolationService.getViolationFiles($scope.$parent.row.EHSViolationId);\r\n\r\n //Once the files load, setup our file handler\r\n $scope.ViolationFiles.$promise.then(function () {\r\n $scope.setFilesToCheckForDuplicates($scope.ViolationFiles);\r\n\r\n $scope.PrepFiles($scope.ViolationFiles);\r\n $scope.FormIsReadyToShow = true;\r\n });\r\n }\r\n else\r\n {\r\n $scope[$scope.typeOfFilesToCheck] = DatasetService.getTableFiles($scope.context_dataset.ProjectId, $scope.data_parentId, $scope.context_dataset.Id);\r\n $scope[$scope.typeOfFilesToCheck].$promise.then(() => {\r\n\r\n $scope.setFilesToCheckForDuplicates($scope[$scope.typeOfFilesToCheck]);\r\n\r\n if (typeof $scope[$scope.typeOfFilesToCheck] !== 'undefined')\r\n {\r\n $scope.PrepFiles($scope[$scope.typeOfFilesToCheck]);\r\n }\r\n $scope.FormIsReadyToShow = true;\r\n });\r\n }\r\n\r\n //removes the file from currentFiles and adds to removedFiles (does NOT actually delete the file)\r\n // - fires when user click remove button on current files\r\n \t$scope.removeFile = function(file)\r\n \t{\r\n\t\t\t////console.log(\"Inside FileModalCtrl, removeFile...\");\r\n\t\t\t////console.dir(file);\r\n\t\t\t////console.dir($scope.currentFiles);\r\n\r\n //find the file in our current files (match by name)\r\n\t\t\tangular.forEach($scope.currentFiles, function(existing_file, key){\r\n\t\t\t\t////console.log(\"existing_file.Name = \" + existing_file.Name + \", file.Name = \" + file.Name);\r\n\r\n if (existing_file.Name === file.Name)\r\n {\r\n //remove from current files list\r\n $scope.currentFiles.splice(key, 1);\r\n\r\n //add to files to remove list\r\n $scope.removedFiles.push(existing_file);\r\n $scope.file_row.fieldRemovedFiles[$scope.file_field].push(existing_file);\r\n }\r\n\r\n });\r\n\r\n //console.log(\"now removedFiles = \");\r\n\t\t\t//console.dir($scope.removedFiles);\r\n \t}\r\n\r\n //remove this file from the $scope.filesToUpload - fires when user clicks \"remove\" button on file to upload\r\n $scope.removeFileFromUpload = function (file_to_remove) {\r\n\r\n //remove from filesToUpload\r\n var remainingFiles = [];\r\n $scope.filesToUpload[$scope.file_field].forEach(function (file) {\r\n if (file.Name !== file_to_remove.Name) {\r\n remainingFiles.push(file);\r\n }\r\n });\r\n\r\n $scope.filesToUpload[$scope.file_field] = remainingFiles;\r\n\r\n //now do the same for the row remaining files.\r\n var rowRemainingFiles = [];\r\n $scope.file_row.fieldFilesToUpload[$scope.file_field].forEach(function (file) {\r\n if (file.Name !== file_to_remove.Name) {\r\n rowRemainingFiles.push(file);\r\n }\r\n });\r\n\r\n $scope.file_row.fieldFilesToUpload[$scope.file_field] = rowRemainingFiles;\r\n };\r\n\r\n //fires when user clicks \"done\" button --> doesn't execute upload/removes, just gets everything ready for the host modal\r\n $scope.save = function(){\r\n //console.log(\" -- DONE -- clicked --- prepping and closing file modal\");\r\n\r\n var hasFilesToUpload = true;\r\n\r\n if (!Array.isArray($scope.filesToUpload[$scope.file_field]) || $scope.filesToUpload[$scope.file_field].length == 0)\r\n {\r\n hasFilesToUpload = false;\r\n $scope.filesToUpload[$scope.file_field] = [];\r\n }\r\n\r\n if ($scope.viewSubproject)\r\n $rootScope.viewSubproject = $scope.viewSubproject; // Add this to the $rootScope, so that the filters can see it.\r\n\r\n\t\t\tvar errors = [];\r\n\r\n\r\n\t\t\t//console.log(\"$scope.filesToUpload is next...\");\r\n //console.dir($scope.filesToUpload);\r\n //console.dir($scope.currentFiles);\r\n //console.dir($scope.removedFiles);\r\n\r\n //console.log(\"-- file row -- \");\r\n //console.dir($scope.file_row);\r\n\r\n\r\n if (hasFilesToUpload && Array.isArray($scope.filesToUpload[$scope.file_field])) {\r\n //console.log(\" --> we have files to upload <--\");\r\n var filesReadyToUpload = [];\r\n\r\n //remove any duplicates\r\n $scope.filesToUpload[$scope.file_field].forEach(function (incoming_file, key) {\r\n if (isDuplicateUploadFile(incoming_file, $scope.modalFiles_filesToCheckForDuplicates)) {\r\n $scope.foundDuplicate = true;\r\n errors.push(\"Ignoring: \" + incoming_file.Name + \" - file already exists.\" + \"\\n\");\r\n } else {\r\n\r\n delete incoming_file.UploadMessage;\r\n filesReadyToUpload.push(incoming_file);\r\n\r\n //add to the currentfiles ONLY if the file is one coming from this field in the row...\r\n if (isFileInList(incoming_file, $scope.file_row.fieldFilesToUpload[$scope.file_field])){\r\n //add to our current files for display once they close this modal\r\n $scope.currentFiles.push(incoming_file);\r\n }\r\n }\r\n });\r\n\r\n //set our uploads to only files that are ready.\r\n $scope.filesToUpload[$scope.file_field] = filesReadyToUpload;\r\n\r\n // Inform the user we've removed their duplicate files.\r\n if ($scope.foundDuplicate) {\r\n //console.warn(errors);\r\n alert(errors);\r\n }\r\n }\r\n\r\n\r\n\t\t\t\t//copy back to the actual row field, whatever the state of currentFiles (maybe removed ones)\r\n $scope.file_row[$scope.file_field] = angular.toJson($scope.currentFiles);\r\n\r\n //console.log(\"$scope.file_field = \" + $scope.file_field);\r\n\t\t\t\t//console.log(\"$scope.file_row = \");\r\n\t\t\t\t//console.dir($scope.file_row);\r\n //console.dir($scope.currentFiles);\r\n\r\n $uibModalInstance.close();\r\n\r\n };\r\n\r\n //cancel clicked\r\n $scope.cancel = function () {\r\n //remove the files that are in my row removed files,\r\n //$scope.removedFiles.length = 0;\r\n\r\n var removed_to_keep = [];\r\n $scope.removedFiles.forEach(function (file) {\r\n if (!isFileInList(file, $scope.file_row.fieldRemovedFiles[$scope.file_field]))\r\n removed_to_keep.push(file);\r\n });\r\n $scope.removedFiles.length = 0;\r\n $scope.removedFiles = angular.extend($scope.removedFiles, removed_to_keep); //keep all the ones we aren't canceling (being removed from other fields)\r\n $scope.file_row.fieldRemovedFiles[$scope.file_field].length=0; //clear row's removed files\r\n\r\n //reset to my original existing\r\n $scope.file_row[$scope.file_field] = $scope.originalExistingFiles[$scope.file_field];\r\n\r\n //remove my row files to upload\r\n //$scope.filesToUpload[$scope.file_field] = [];\r\n\r\n var upload_files_to_keep = [];\r\n\r\n $scope.filesToUpload[$scope.file_field].forEach(function (file) {\r\n if (!isFileInList(file, $scope.file_row.fieldFilesToUpload[$scope.file_field]))\r\n upload_files_to_keep.push(file);\r\n });\r\n\r\n $scope.filesToUpload[$scope.file_field] = upload_files_to_keep;\r\n $scope.file_row.fieldFilesToUpload[$scope.file_field] = [];\r\n\r\n //console.log(\" -- cancelled -- \");\r\n //console.dir($scope.file_row);\r\n //console.dir($scope.filesToUpload);\r\n //console.dir($scope.removedFiles);\r\n\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * setupControllerForFileChooserModal - Call this from your host modal you want to use file chooser modal (above)\r\n * Sets up the given scope for your host modal with properties and methods it needs to handle uploading\r\n * @param {scope} $scope scope of your host modal to populate\r\n* @param {$uibModal} $uibModal modal controller\r\n* @param {array} in_files_to_check_for_duplicates Array of files to check for duplicates\r\n */\r\n//export function modalFiles_setupControllerForFileChooserModal($scope, $uibModal, in_files_to_check_for_duplicates) {\r\nexport function modalFiles_setupControllerForFileChooserModal($scope, $uibModal, typeOfFilesToCheck) {\r\n //console.log('Setting up controller for file chooser modal...');\r\n\r\n $scope.filesToUpload = {}; //populated by file chooser (filesToUpload[$scope.file_field])\r\n $scope.currentFiles = []; //shown on the file modal\r\n $scope.removedFiles = []; //gets files if the user removes them from currentFiles using the file modal\r\n $scope.UploadUserMessage = \"saving, please wait...\";\r\n $scope.ReadyToClose = \"\";\r\n $scope.showCloseButton = false;\r\n $scope.showCancelButton = true;\r\n $scope.showFormItems = true;\r\n $scope.fileCount = 0;\r\n $scope.fileProgress = 0;\r\n $scope.originalExistingFiles = {};\r\n $scope.SubprojectFileList = {};\r\n\r\n //console.log(\"$scope is next...\");\r\n //console.dir($scope);\r\n\r\n if (typeof $scope.project === 'undefined')\r\n {\r\n $scope.project = {};\r\n $scope.project.Id = $scope.$parent.dataset.ProjectId;\r\n }\r\n\r\n //$scope.modalFiles_filesToCheckForDuplicates = in_files_to_check_for_duplicates;\r\n $scope.modalFiles_filesToCheckForDuplicates = {};\r\n $scope.$uibModal = $uibModal;\r\n\r\n if (typeOfFilesToCheck === \"dataset\")\r\n {\r\n $scope.dataset.Files = {};\r\n }\r\n else if (typeOfFilesToCheck === \"project\")\r\n {\r\n $scope.project.Files = {};\r\n }\r\n else if (typeOfFilesToCheck === \"SubprojectFiles\")\r\n {\r\n // $scope.viewSubproject = {};\r\n\r\n // $scope.viewSubproject.Files = $scope.$parent.project.SubprojectFileList;\r\n\r\n if ((typeof $scope.viewSubproject != 'undefined') && ($scope.viewSubproject !== null))\r\n {\r\n $scope.viewSubproject.Files = $scope.$parent.project.SubprojectFileList;\r\n }\r\n }\r\n else if (typeOfFilesToCheck === \"PermitFiles\")\r\n {\r\n $scope.PermitFiles = $scope.$parent.PermitFiles;\r\n }\r\n else if (typeOfFilesToCheck === \"ViolationFiles\")\r\n {\r\n $scope.ViolationFiles = $scope.$parent.ViolationFiles;\r\n }\r\n else // Multipanel table form\r\n {\r\n $scope[typeOfFilesToCheck] = {};\r\n }\r\n\r\n $scope.setFilesToCheckForDuplicates = function (inFiles) {\r\n $scope.modalFiles_filesToCheckForDuplicates = inFiles;\r\n }\r\n\r\n\r\n //opens the file modal. pass in the datarow and the field that we're managing files for\r\n //we set $scope.file_row and $scope.file_field so they are available later while we work with this field.\r\n\r\n $scope.openFileModal = function (row, field, callback) {\r\n console.log(\"Inside modal-files.ts, openFileModal...\");\r\n\r\n //setup our files buckets on the row if it isn't already...\r\n if (!row.originalExistingFiles) {\r\n row.originalExistingFiles = {};\r\n row.fieldFilesToUpload = {};\r\n row.fieldRemovedFiles = {};\r\n }\r\n\r\n //console.log(\"row origin starting: \");\r\n\t\t//console.dir(row.originalExistingFiles);\r\n\r\n //set our original existing files in our row if not already. (if it is already set then THOSE are the original files and we want to remember them)\r\n if (!row.originalExistingFiles[field]) {\r\n if (row[field]) {\r\n //console.log(\"no existing files in row + row field exists... setting original to \");\r\n\t\t\t\t//console.dir(row[field]);\r\n $scope.originalExistingFiles[field] = row[field];\r\n } else {\r\n //console.log(\"no existing fields in row + row field does not exist ... setting to blank\");\r\n $scope.originalExistingFiles[field] = []; //meaning that this field has NO existing files.\r\n }\r\n //console.log(\"setting row originalExistingFiles\");\r\n row.originalExistingFiles[field] = $scope.originalExistingFiles[field]; //we will store this both in the row and in the scope... necessary since we sometimes are storing files in detail cells\r\n } else {\r\n //console.log(\"already have original files set in the row, so use them in the scope.\");\r\n $scope.originalExistingFiles[field] = row.originalExistingFiles[field];\r\n }\r\n\r\n //console.log(\"------------------------ original files are set to: \");\r\n\t\t//console.dir($scope.originalExistingFiles);\r\n $uibModal = $scope.$uibModal; //since we're in a different scope\r\n\r\n //set up our local buckets for files to upload and removed files\r\n // we will use these to remember our state in case the user cancels.\r\n if (!row.fieldFilesToUpload[field]) {\r\n row.fieldFilesToUpload[field] = [];\r\n }\r\n\r\n if (!row.fieldRemovedFiles[field])\r\n row.fieldRemovedFiles[field] = [];\r\n\r\n // $scope.filesToUpload gets set to undefined, during CreelSurvey addSection cleanup/prep action.\r\n // Therefore, we must recreate it here, before continuing.\r\n if ((typeof $scope.filesToUpload === 'undefined') || ($scope.filesToUpload === null))\r\n $scope.filesToUpload = {};\r\n\r\n if (!$scope.filesToUpload[field])\r\n $scope.filesToUpload[field] = [];\r\n\r\n //console.log(\"row is next...\");\r\n\r\n\t\t//console.dir(row);\r\n //console.log(\"field is next...:\");\r\n\t\t//console.log(\"here we are\");\r\n\t\t//console.log(field);\r\n\t\t//console.log(\"here we are2\");\r\n\r\n $scope.file_row = row;\r\n $scope.file_field = field;\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/file/templates/modal-file.html',\r\n controller: 'FileModalCtrl',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_field) {\r\n //console.log(\" (*(((*(9************ we are back! \");\r\n if(callback)\r\n callback();\r\n });\r\n };\r\n\r\n $scope.setFilesToCheckForDuplicates = function (inFiles) {\r\n $scope.modalFiles_filesToCheckForDuplicates = inFiles;\r\n }\r\n\r\n //field = DbColumnName\r\n //after user selects files to upload from the file chooser\r\n $scope.onFileSelect = function (field, files) {\r\n //console.log(\"Inside onFileSelect for field: \");\r\n\t\t//console.log(field);\r\n\r\n if (files) {\r\n files.forEach(function (file) {\r\n if (isDuplicateUploadFile(file, $scope.modalFiles_filesToCheckForDuplicates))\r\n file.UploadMessage = \"DUPLICATE: will not upload.\";\r\n else if (isValidFileName(file.Name))\r\n {\r\n file.UploadMessage = \"No special characters besides hyphen and underscore are allowed.\";\r\n alert (file.UploadMessage);\r\n return;\r\n }\r\n else if (file.Name.length > MAX_FILE_NAME_LENGTH)\r\n {\r\n file.UploadMessage = \"File name must be 50 characters or less\";\r\n alert (file.UploadMessage);\r\n return;\r\n }\r\n else\r\n file.UploadMessage = \"Ready to upload.\";\r\n\r\n //add to the scope and to our own list\r\n if (!isFileInList(file, $scope.filesToUpload[field])) {\r\n $scope.filesToUpload[field].push(file);\r\n $scope.file_row.fieldFilesToUpload[field].push(file);\r\n } else {\r\n //console.log(\">> that file is already in our upload list... ignoring...\");\r\n }\r\n\r\n });\r\n } else\r\n console.log(\"there were no files on FileSelect\")\r\n\r\n //console.log(\"filesToUpload\");\r\n\t\t//console.dir($scope.filesToUpload);\r\n };\r\n\r\n $scope.handlewaypoints = function (in_data, in_target, $upload) {\r\n\r\n };\r\n\r\n\r\n /**\r\n * does the actual upload/remove of files, interacting with the api.\r\n *\r\n */\r\n $scope.handleFilesToUploadRemove = function (saveRow, in_data, in_target, $upload, $rootScope, $scope) {\r\n\r\n // If we arrive here from the Dataentry page, $scope.loading exists.\r\n // If we arrive here from table-data-modal, $scope.loading DOES NOT exist.\r\n if (typeof $scope !== 'undefined') {\r\n $scope.loading = true; // start the fish spinner.\r\n }\r\n\r\n //$scope.showCloseButton = true;\r\n $scope.showCancelButton = false;\r\n $scope.showFormItems = false;\r\n\r\n $scope.file_row = saveRow; //important! otherwise our filerow is set to the last thing (which is only a problem when we have files in the grid)\r\n\r\n $scope.filesWithErrors = 0;\r\n var save_item_promise = null; //will get setup later\r\n\r\n //first let's remove any files that need removing...\r\n if ($scope.removedFiles.length > 0) {\r\n $scope.fileCount += $scope.removedFiles.length;\r\n $scope.removedFiles.forEach(function (file_to_remove) {\r\n // Subproject or Habitat Item-related?\r\n\r\n var remove_file_promise = null;\r\n\r\n //console.log(\"We want to delete a file... - fire the callback\");\r\n remove_file_promise = $scope.modalFile_doRemoveFile(file_to_remove, saveRow);\r\n\r\n //setup the callback if we got a promise back - set our status and remove from our file list\r\n if (remove_file_promise) {\r\n file_to_remove.success = \"removing...\";\r\n remove_file_promise.$promise.then(function () {\r\n //condition to check?\r\n file_to_remove.success = \"Success.\"\r\n //console.log(\" -- before file removed: \");\r\n //console.dir($scope.modalFiles_filesToCheckForDuplicates);\r\n removeFileFromList(file_to_remove, $scope.modalFiles_filesToCheckForDuplicates);\r\n //console.log(\" -- after file removed: \");\r\n //console.dir($scope.modalFiles_filesToCheckForDuplicates);\r\n $scope.fileProgress++\r\n });\r\n //if this fails, we should add it back?\r\n }\r\n });\r\n }\r\n\r\n // Now let's handle incoming files if we have them.\r\n\r\n //in filesToUpload there might be several fields with files to handle.\r\n if ((typeof $scope.filesToUpload !== 'undefined') && ($scope.filesToUpload !== null)) {\r\n\r\n var file_fields = Object.keys($scope.filesToUpload);\r\n //console.log(\"Fields that have files in them to upload: \");\r\n //console.dir(file_fields);\r\n\r\n // Do we have any waypoint files?\r\n // If so, we want to skip them, because these should not be uploaded; they are temporary files\r\n // that we use to get the waypoint number from.\r\n\r\n if (($scope.dataset) && ($scope.dataset.Config && $scope.dataset.Config.hasOwnProperty(\"HasWaypointFile\") ) )\r\n {\r\n var intWaypointsLoc = file_fields.indexOf($scope.dataset.Config.WaypointFileProperty);\r\n if (intWaypointsLoc > -1)\r\n file_fields.splice(intWaypointsLoc, 1);\r\n\r\n }\r\n\r\n //if there are no files being uploaded for any field then carry on.\r\n if (file_fields.length === 0) {\r\n $scope.modalFile_saveParentItem(saveRow);\r\n return;\r\n }\r\n\r\n//console.log(\" ----- \");\r\n//console.dir($scope.filesToUpload);\r\n//console.dir(file_fields);\r\n\r\n //how many files do we have to upload?\r\n file_fields.forEach(function (key) {\r\n $scope.filesToUpload[key].forEach(function (file) {\r\n //console.log(key + \" : \" + file.Name);\r\n $scope.fileCount++;\r\n });\r\n });\r\n }\r\n\r\n console.log(\" >> total of \" + $scope.fileCount + \" files to upload <<\");\r\n\r\n //this watcher will only run once after all files are uploaded.\r\n var fileProgressWatcher = $scope.$watch('fileProgress', function () {\r\n if ($scope.fileProgress < $scope.fileCount)\r\n return;\r\n\r\n //from here on, we run only if our files have all finished uploading.\r\n //console.log(\" -- files have all finished saving -- \")\r\n $scope.loading = false; // Stop the fish spinner.\r\n $scope.showCloseButton = true;\r\n $scope.showCancelButton = false;\r\n $scope.showFormItems = false;\r\n\r\n fileProgressWatcher(); //stop the watcher once we're done uploading...\r\n\r\n //set a scope variable we can use to show our files\r\n $scope.filesToUpload_keys = getPopulatedUploadKeys($scope.filesToUpload);\r\n //console.log(\"filesToUpload keys: \");\r\n\t\t\t//console.dir( $scope.filesToUpload_keys);\r\n\r\n //for each of the uploaded file fields, see if there are any we need to remove from the list we'll save for that field because they failed\r\n $scope.filesToUpload_keys.forEach(function (in_file_field) {\r\n\r\n //console.log(\">>>>>>>>>>>>>>>>>> all done saving for field: \" + in_file_field);\r\n\r\n //console.log(\"before we remove the failed files::: working on field -------------------->>> \");\r\n\t\t\t\t//console.dir(in_file_field);\r\n //console.log(saveRow[in_file_field]);\r\n\r\n\r\n //TODO: save a reference to the row somehow so that we can remove file links if they fail...\r\n //when we save a file in the grid, we don't have a reference to the grid row,\r\n // this means we can't remove files that fail from the list of files (just for grid row file fields).\r\n if (saveRow.hasOwnProperty(in_file_field)) {\r\n\r\n //remove any failed files from the saveRow.ItemFiles/EventFiles/etc column\r\n var remaining_files = [];\r\n var current_files = angular.fromJson(saveRow[in_file_field]);\r\n if (current_files && Array.isArray(current_files) && $scope.filesToUpload && $scope.filesToUpload[in_file_field]) {\r\n\r\n current_files.forEach(function (file_to_check) {\r\n //then find the file in the uploads... did it fail?\r\n var uploading_this_one = false;\r\n\r\n $scope.filesToUpload[in_file_field].forEach(function (upload_file) {\r\n if (upload_file.Name === file_to_check.Name) {\r\n uploading_this_one = true;\r\n ////console.log(\"upload_file.Name = \" + upload_file.Name + \", upload_file.success = \" + upload_file.success);\r\n //if (upload_file.success === \"Success\")\r\n\r\n // With IE, sometimes the files would be uploaded, but would not have .success set to \"success\".\r\n // Instead, it would be set to \"working: 100%\".\r\n // Updated the if statement, to handle this issue.\r\n if ((upload_file.success === \"Success\") || (upload_file.success === \"working: 100%\")) {\r\n file_to_check.Link = upload_file.Link;\r\n delete file_to_check.UploadMessage;\r\n remaining_files.push(file_to_check);\r\n }\r\n }\r\n });\r\n if (!uploading_this_one) //means this was an existing file so leave it.\r\n remaining_files.push(file_to_check);\r\n\r\n });\r\n $rootScope.remainingFiles = angular.copy(remaining_files);\r\n }\r\n\r\n // At this point, saveRow looks something like this...\r\n // [{\"Name\":\"CrppTestFile1.txt\",\"UploadMessage\":\"Ready to upload.\"}]\r\n // It is about to become something like this...\r\n // [{\"Name\":\"CrppTestFile1.txt\",\"Link\":\"\\\\\\\\theServer\\\\services\\\\uploads\\\\P\\\\2247\\\\S\\\\10945\\\\CrppTestFile1.txt\"}]\r\n // UploadMessage was replaced with Link.\r\n saveRow[in_file_field] = angular.toJson(remaining_files);\r\n\r\n } else {\r\n //console.log(\" -- ignoring this step because the field was undefined -- assuming this is a grid file and we don't have the right saverow...\");\r\n }\r\n\r\n //console.log(\"after we remove the failed files...\");\r\n //console.log(saveRow[in_file_field]);\r\n\r\n });\r\n\r\n // if ((typeof $scope.$parent.project.SubprojectFileList !== 'undefined') && ($scope.blnUpdatedFiles === true))\r\n // {\r\n // $scope.$parent.blnUpdatedFiles = $scope.blnUpdatedFiles = true;\r\n // }\r\n\r\n //and finally, save the item\r\n $scope.modalFile_saveParentItem(saveRow);\r\n\r\n }, true);\r\n\r\n // --------------------------------------------- end of watcher.\r\n\r\n\r\n if ((typeof file_fields !== 'undefined') && (file_fields !== null)) {\r\n //now go ahead and process the files for each field\r\n file_fields.forEach(function (in_file_field, index) {\r\n\r\n //iterate our incoming files...\r\n $scope.filesToUpload[in_file_field].forEach(function (file) {\r\n //console.log(\"incoming file:\");\r\n //console.dir(file);\r\n //console.log(\"for field: \");\r\n\t\t\t\t\t//console.dir(in_file_field);\r\n\r\n if (file.success != \"Success\") {\r\n //console.log(\"Let's save the file...\");\r\n\r\n //update our incoming data with some file info\r\n in_data.Description = \"Uploaded file \" + file.Name;\r\n in_data.Title = file.Name;\r\n\r\n // Make a copy of in_data, to send to the backend, in the upload (next section).\r\n // If we use use the reference to in_data, JavaScript will run this section so fast\r\n // that the last value ends up getting sent.\r\n // For one file, this is not a problem. However, when the user uploads multiple files,\r\n // the Title and Description all get set to the same value (the last value in the list).\r\n var tmpData = angular.copy(in_data);\r\n\r\n console.log(\"Upload url: \" + serviceUrl + in_target);\r\n\r\n $scope.upload = $upload.upload({\r\n url: serviceUrl + in_target,\r\n method: \"POST\",\r\n //data: in_data,\r\n data: tmpData,\r\n file: file,\r\n\r\n }).progress(function (evt) {\r\n //console.log('percent: ' + parseInt(100.0 * evt.loaded / evt.total));\r\n\r\n file.success = \"working: \" + parseInt(String(100.0 * evt.loaded / evt.total)) + \"%\";\r\n }).success(function (data, status, headers, config) {\r\n\r\n //console.log(\"done saving and success!\");\r\n\r\n if (data.length == 0) //means the backend actually failed to create our object. We need an error message!\r\n {\r\n $scope.filesWithErrors++;\r\n file.success = \"Failed (unknown error)\"\r\n } else {\r\n file.success = \"Success\";\r\n\r\n if ((typeof $scope.modalFiles_filesToCheckForDuplicates === 'undefined') || ($scope.modalFiles_filesToCheckForDuplicates === null))\r\n $scope.modalFiles_filesToCheckForDuplicates = [];\r\n\r\n //console.warn(\"setting file link to \" + data[0].Link);\r\n file.Link = data[0].Link;\r\n delete file.UploadMessage;\r\n //console.dir(file);\r\n\r\n if(Array.isArray($scope.modalFiles_filesToCheckForDuplicates))\r\n $scope.modalFiles_filesToCheckForDuplicates.push(data[0]); //add this file to the duplicate file list\r\n }\r\n\r\n $scope.fileProgress++;\r\n\r\n }).error(function (data, status, headers, config) {\r\n $scope.filesWithErrors++;\r\n //console.error(file.name + \" failed to upload.\");\r\n //console.dir(data);\r\n file.success = \"Failed (\" + data.ExceptionMessage + \")\";\r\n $scope.fileProgress++; //even if there is an error, we are done processing it...\r\n });\r\n\r\n }\r\n });\r\n }); //foreach filefield\r\n }\r\n };\r\n};\r\n\r\n\r\n\r\n//return just the keys that have files in them\r\nexport function getPopulatedUploadKeys(files) {\r\n var keys = [];\r\n\r\n if (!files)\r\n return keys;\r\n\r\n var all_keys = Object.keys(files);\r\n all_keys.forEach(function (key) {\r\n if (files[key] && Array.isArray(files[key]) && files[key].length > 0 && key != \"Waypoints\") //ignore waypoints file\r\n keys.push(key);\r\n });\r\n\r\n return keys;\r\n}\r\n\r\nexport default modal_files;\r\n","//CDMSMultiselectCellValidator - extends CellValidator\r\n\r\n// validates dropdown list selections against the possible values.\r\n\r\nimport {CellValidator, ValidationError} from \"../cell-validation\";\r\n\r\nexport function CDMSMultiselectCellValidator(cdms_field) {\r\n this.base = CellValidator;\r\n this.base(cdms_field);\r\n};\r\nCDMSMultiselectCellValidator.prototype = new CellValidator;\r\n\r\nCDMSMultiselectCellValidator.prototype.validateFieldControlTypeValidation = function (data) {\r\n\r\n if (!data.value)\r\n return this.errors; //early return -- don't bother if we don't have a value\r\n\r\n //validate: do the values exist in the PossibleValues?\r\n\r\n //first, make sure our PossibleValues is properly defined for this field...\r\n if (typeof data.colDef.cellEditorParams === 'undefined' ||\r\n typeof data.colDef.cellEditorParams.values === 'undefined') {\r\n\r\n console.error(\"Configuration error: [\" + data.colDef.cdmsField.DbColumnName + \"] is a MULTISELECT but PossibleValues is undefined.\");\r\n console.dir(data);\r\n this.errors.push(new ValidationError(this.cdms_field, \"System error: no PossibleValues defined for this field.\"));\r\n }\r\n else //Possible Values exist and we can use them\r\n {\r\n //iterate the values selected in the multiselect and make sure they are in the PossibleValues list (if an array)\r\n if (Array.isArray(data.value)) {\r\n\r\n let _this = this;\r\n data.value.forEach(function (value) {\r\n //if (!data.colDef.cellEditorParams.values.contains(value))\r\n // _this.errors.push(new ValidationError(_this.cdms_field, \"Invalid selection (\" + value + \" not in PossibleValues).\"));\r\n\r\n if ((data.colDef.cellEditorParams.values !== null) &&\r\n (!data.colDef.validator.validation.containsExactly(\"omit\")) &&\r\n //@ts-ignore\r\n ((!Object.keys(data.colDef.cellEditorParams.values).contains(value)) &&\r\n //@ts-ignore\r\n (!Object.values(data.colDef.cellEditorParams.values).containsExactly(value)))\r\n ){\r\n\r\n _this.errors.push(new ValidationError(_this.cdms_field, \"Invalid selection (\" + value + \" not in PossibleValues).\"));\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n return this.errors;\r\n};\r\n","export default \"\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n

Welcome to the CTUIR\\r\\n CDMS

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n x\\r\\n

Failed to login

\\r\\n {{error}}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n If you are an authorized user, please login:\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n

{{loginMessage}}

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n Unauthorized access to this system is prohibited and will be prosecuted to the full extent of the law.
\\r\\n (C) 2014-2021 - Confederated Tribes of the Umatilla Indian Reservation\\r\\n
\\r\\n
\\r\\n\";","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJsZWFzaW5nLW1hcC5jb21wb25lbnQuc2NzcyJ9 */\";","// defines the crpp module\r\nimport * as angular from 'angular';\r\nimport modal_add_correspondence_event from './components/correspondence/modal-add-correspondence-event';\r\nimport modal_create_crpp_subproject from './components/correspondence/modal-create-crpp-subproject';\r\nimport page_correspondence from './components/correspondence/correspondence';\r\n\r\n// ], function () {\r\nconst crpp_module = angular.module('CrppModule', ['ui.bootstrap', 'ngResource']);\r\n//crpp_module.controller('CrppContractsCtrl', crpp_contracts);\r\ncrpp_module.controller('ModalAddCorrespondenceEventCtrl', modal_add_correspondence_event);\r\ncrpp_module.controller('ModalCreateSubprojectCtrl', modal_create_crpp_subproject);\r\ncrpp_module.controller('CRPPCorrespondenceCtrl', page_correspondence);\r\n// });\r\n\r\nexport default crpp_module;\r\n","//modal to edit group members\r\nvar modal_admin_group_members = ['$scope', '$uibModal','$uibModalInstance','AdminService','CommonService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, AdminService, CommonService) {\r\n\r\n\r\n $scope.users = CommonService.getOrgUsers($scope.group.OrganizationId);\r\n\r\n $scope.add = function () {\r\n\r\n if($scope.alreadyMember($scope.group, $scope.userId))\r\n return;\r\n\r\n\t\t\tvar saved_member = AdminService.saveGroupMember($scope.group.Id, $scope.userId);\r\n saved_member.$promise.then(function () {\r\n $scope.group.Members.push(saved_member);\r\n }, function (error) {\r\n $scope.SaveMessage = \"Error: \" + error.data.ExceptionMessage;\r\n });\r\n\r\n };\r\n\r\n $scope.close = function () {\r\n $uibModalInstance.close();\r\n };\r\n\r\n $scope.removeMember = function(userId) {\r\n var removed_member = AdminService.removeGroupMember($scope.group.Id, userId);\r\n\r\n removed_member.$promise.then(function(){\r\n $scope.group.Members.forEach(function(item, index){\r\n if(item.Id == userId){\r\n $scope.group.Members.splice(index, 1);\r\n }\r\n })\r\n }, function(error){\r\n $scope.SaveMessage = \"Error\";\r\n console.dir(error);\r\n })\r\n }\r\n\r\n $scope.alreadyMember = function(group, userId){\r\n var isMember = false;\r\n group.Members.forEach(function(user){\r\n if(user.Id == userId)\r\n isMember = true;\r\n });\r\n return isMember;\r\n }\r\n\r\n }\r\n];\r\n\r\nexport default modal_admin_group_members;\r\n","import {\r\n PERMIT_PROJECTID,\r\n serviceUrl,\r\n SharingLevel,\r\n SHARINGLEVEL_PRIVATE,\r\n SHARINGLEVEL_PUBLICREAD,\r\n MAX_FILE_NAME_LENGTH\r\n} from \"../../../../config\";\r\nimport {\r\n isDuplicateUploadFile,\r\n isValidFileName\r\n} from \"../../../../core/common/common-functions\";\r\nimport {config} from \"rxjs\";\r\n\r\nvar modal_permit_new_file = ['$scope','$uibModalInstance', 'Upload',\r\n\tfunction($scope, $uibModalInstance, $upload){\r\n\t\t// note: file selected for upload in this controller are managed by onFileSelect in this controller (see below).\r\n\r\n $scope.header_message = \"Add file(s) to: \" + $scope.row.ProjectName;\r\n $scope.doneUploading = false;\r\n $scope.isUploading = false;\r\n $scope.readyToUpload = false;\r\n\r\n //options from config.js\r\n $scope.SHARINGLEVEL_PRIVATE = SHARINGLEVEL_PRIVATE;\r\n $scope.SHARINGLEVEL_PUBLICREAD = SHARINGLEVEL_PUBLICREAD;\r\n $scope.SharingLevel = SharingLevel;\r\n $scope.MAX_FILE_NAME_LENGTH = MAX_FILE_NAME_LENGTH; // Create a scope variable, so the page can access it.\r\n\r\n $scope.all_saved_files = [];\r\n\r\n\t\t$scope.onFileSelect = function(files)\r\n\t\t{\r\n console.log(\"Inside modal_new_file, onFileSelect! Files is next...\");\r\n //console.dir(files);\r\n\r\n //check for duplicates\r\n if (files) {\r\n files.forEach(function (file) {\r\n if (isDuplicateUploadFile(file, $scope.PermitFiles))\r\n {\r\n file.success = \"DUPLICATE\";\r\n\r\n }\r\n else if (isValidFileName(file.Name))\r\n {\r\n file.success = \"INVALID\";\r\n\r\n var intPosition = files.indexOf(file.name);\r\n }\r\n else if (file.Name.length > MAX_FILE_NAME_LENGTH)\r\n {\r\n file.success = \"TOO LONG\";\r\n\r\n var intPosition = files.indexOf(file.name);\r\n }\r\n });\r\n }\r\n else\r\n console.log(\"there were no files on FileSelect\")\r\n\r\n $scope.uploadFiles = files;\r\n\r\n console.dir($scope.uploadFiles);\r\n\r\n if ($scope.uploadFiles.length > 0)\r\n $scope.readyToUpload = true;\r\n else\r\n $scope.readyToUpload = false;\r\n\r\n\t\t};\r\n\r\n\t\t$scope.save = function(){\r\n console.log(\"Inside modal_new_file.js, save...\");\r\n\t\t\t//console.log(\"$scope is next...\");\r\n //console.dir($scope);\r\n\r\n\t\t\t// Just in case they clicked the Upload button, without selecting a file first.\r\n\t\t\tif (!$scope.uploadFiles)\r\n\t\t\t{\r\n\t\t\t\tconsole.log(\"No file selected; do nothing...\");\r\n\t\t\t\treturn;\r\n }\r\n else if ($scope.uploadFiles.length === 0)\r\n {\r\n\t\t\t\tconsole.log(\"No valid file selected; do nothing...\");\r\n\t\t\t\treturn; \r\n }\r\n\r\n $scope.readyToUpload = false;\r\n $scope.doneUploading = false;\r\n $scope.isUploading = true;\r\n\r\n\t\t\t$scope.foundDuplicate = false;\r\n\t\t\t$scope.uploadErrorMessage = undefined;\r\n\t\t\tvar errors = [];\r\n\r\n\t\t\tfor(var i = 0; i < $scope.uploadFiles.length; i++)\r\n\t\t\t{\r\n\t\t\t\tvar file = $scope.uploadFiles[i];\r\n file.status = \"\";\r\n\t\t\t\t//console.log(\"file is next...\");\r\n\t\t\t\t//console.dir(file);\r\n\r\n\t\t\t\tvar newFileNameLength = file.name.length;\r\n\t\t\t\tconsole.log(\"file name length = \" + newFileNameLength);\r\n\r\n if (file.success == \"DUPLICATE\") {\r\n console.log(\"Duplicate -- ignoring: \", file.Name);\r\n continue;\r\n }\r\n else if (file.success == \"INVALID\")\r\n {\r\n console.log(\"File name has special characters -- ignoring: \", file.Name);\r\n continue;\r\n }\r\n else if (file.success == \"TOO LONG\")\r\n {\r\n console.log(\"File name is longer then 50 characters -- ignoring: \", file.Name);\r\n continue;\r\n }\r\n\r\n\t\t\t\tif(!file.success)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log(\"file.success does not exist yet...\");\r\n\t\t\t\t\t$scope.upload = $upload.upload({\r\n\t\t\t\t\t\turl: serviceUrl + '/api/v1/permit/UploadFile',\r\n\t\t\t\t\t\tmethod: \"POST\",\r\n\t\t\t\t\t\t// headers: {'headerKey': 'headerValue'},\r\n\t\t\t\t\t\t// withCredential: true,\r\n\t\t\t\t\t\t//data: {ProjectId: PERMIT_PROJECTID, Description: file.Description, SubprojectId: $scope.row.Id},\r\n data: {ProjectId: $scope.project.Id, Description: file.Description, SubprojectId: $scope.row.Id},\r\n\t\t\t\t\t\tfile: file\r\n\r\n\t\t\t\t\t}).progress(function (evt) {\r\n\t\t\t\t\t console.dir(evt);\r\n if (typeof config !== 'undefined')\r\n // @ts-ignore\r\n // The problem with the following line is that it goes to Working: 100% and sits there for a while.\r\n // The user would still be wondering, \"What is going on?\"\r\n // With \"Working...\" on the screen, users are more likelly to understand that the upload process is not done yet,\r\n // and will patiently wait for the Success to show.\r\n //config.file.success = \"Working: \" + parseInt(100.0 * evt.loaded / evt.total) + \"%\";\r\n file.success = \"Working...\";\r\n\t\t\t\t\t}).success(function (data, status, headers, config) {\r\n if (typeof config !== 'undefined')\r\n {\r\n //config.file.success = \"Success\";\r\n file.success = \"Success\";\r\n //console.dir(data);\r\n $scope.all_saved_files.push(data[0]);\r\n $scope.doneUploading = true;\r\n $scope.isUploading = false;\r\n console.log(\"--- done and success\");\r\n \r\n }\r\n\t\t\t\t\t\t}).error(function(data, status, headers, config) {\r\n\t\t\t\t\t\t\t$scope.uploadErrorMessage = \"There was a problem uploading your file. Please try again or contact the Helpdesk if this issue continues.\";\r\n\t\t\t\t\t\t\t//console.log(file.name + \" was error.\");\r\n if (typeof config !== 'undefined')\r\n {\r\n //config.file.success = \"Failed\";\r\n file.success = \"Failed\";\r\n }\r\n $scope.readyToUpload = true;\r\n $scope.doneUploading = true;\r\n $scope.isUploading = false;\r\n console.log(\"done and error...\");\r\n\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n }//loop\r\n // Show the Close button, so that they can close the form, if the file was invalid, and they decide to do something else.\r\n $scope.isUploading = false;\r\n\r\n $scope.readyToUpload = false;\r\n $scope.doneUploading = false;\r\n\r\n\t\t};\r\n\r\n\t\t$scope.cancel = function(){\r\n\r\n\t\t\t$scope.foundDuplicate = undefined;\r\n\r\n if ($scope.all_saved_files.length > 0) {\r\n console.warn(\"---- returning the files ----\");\r\n console.dir($scope.all_saved_files);\r\n $uibModalInstance.close($scope.all_saved_files);\r\n }\r\n\r\n\t\t\t$uibModalInstance.dismiss();\r\n\t\t};\r\n\t}\r\n];\r\n\r\nexport default modal_permit_new_file;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {PERMITEVENTS_DATASETID} from \"../../../../config\";\r\n\r\nvar request_inspection = ['$scope', '$rootScope','$uibModal','PermitService', 'DatasetService', 'GridService',\r\n function ($scope, $rootScope, $uibModal, PermitService, DatasetService, GridService) {\r\n\r\n $rootScope.inModule = \"permits\";\r\n if (!$scope.Profile.hasRole(\"Permits\"))\r\n angular.rootScope.go(\"/unauthorized\");\r\n\r\n $scope.mode = 'new_inspection';\r\n $scope.permit = {};\r\n $scope.showHeader = false;\r\n\r\n $scope.eventsdataset = DatasetService.getDataset(PERMITEVENTS_DATASETID);\r\n\r\n $scope.permitEventsGrid = {};\r\n\r\n $scope.Results = {\r\n SuccessMessage: null,\r\n FailureMessage: null,\r\n DoneSaving: false,\r\n };\r\n\r\n $scope.eventsdataset.$promise.then(function () {\r\n console.log(\" -- events dataset back -- \");\r\n var EventColumnDefs = GridService.getAgColumnDefs($scope.eventsdataset);\r\n $scope.permitEventsGrid.columnDefs = angular.merge(\r\n EventColumnDefs.HeaderFields\r\n );\r\n\r\n $scope.permitEventsGrid.columnDefs.forEach(function (coldef) {\r\n if (coldef.DbColumnName == 'Reference')\r\n coldef.Label = \"Inspection Type\";\r\n\r\n if (coldef.DbColumnName == 'RequestDate')\r\n coldef.Label = \"Date Inspection Desired\";\r\n });\r\n\r\n });\r\n\r\n\r\n $scope.permitLookup = function () {\r\n $scope.ResultMessage = \"Searching...\";\r\n $scope.permit = null;\r\n\r\n $scope.Results = {\r\n SuccessMessage: null,\r\n FailureMessage: null,\r\n DoneSaving: false,\r\n };\r\n\r\n var search_permit = PermitService.getPermitByPermitNumber($scope.SearchPermitNumber);\r\n search_permit.$promise.then(function () {\r\n console.dir(search_permit);\r\n if (search_permit.hasOwnProperty('Id')) {\r\n\r\n $scope.permit = search_permit;\r\n $scope.row = {\r\n PermitId: $scope.permit.Id,\r\n EventType: 'Inspection',\r\n EventDate: moment().format('L'),\r\n RequestDate: moment().format('L'),\r\n ByUser: $scope.Profile.Id,\r\n PreferredTime: {'Any': true }\r\n };\r\n\r\n $scope.PermitRoutes = [];\r\n\r\n $scope.ResultMessage = \"Permit found.\";\r\n }\r\n else {\r\n $scope.ResultMessage = $scope.SearchPermitNumber + \" not found.\";\r\n $scope.permit = null;\r\n }\r\n });\r\n };\r\n\r\n\r\n var NEW_INSPECTION_FIELDS = [\"Reference\",\"ItemType\",\"RequestDate\",\"Comments\"];\r\n\r\n //a filter to determine which fields to show\r\n $scope.doShowField = function (field) {\r\n\r\n // @ts-ignore\r\n if ($scope.mode == \"new_inspection\" && NEW_INSPECTION_FIELDS.contains(field.DbColumnName))\r\n return true;\r\n\r\n if ($scope.mode == \"new_inspection\")\r\n return false;\r\n\r\n return field.hasOwnProperty('DbColumnName');\r\n };\r\n\r\n $scope.save = function () {\r\n\r\n //drop any recipients that are 'false' since they were unchecked\r\n if($scope.row.ReviewersContact)\r\n Object.keys($scope.row.ReviewersContact).forEach(function (key) {\r\n if ($scope.row.ReviewersContact[key] === false)\r\n delete $scope.row.ReviewersContact[key];\r\n });\r\n\r\n var new_event = PermitService.savePermitEvent($scope.row);\r\n\r\n new_event.$promise.then(function () {\r\n $scope.Results.DoneSaving = true;\r\n console.log(\"done and success updating the files\");\r\n $scope.Results.SuccessMessage = \"Saved and notifications sent.\";\r\n $scope.Results.FailureMessage = \"\";\r\n }, function (data) {\r\n console.error(\"failure!\");\r\n console.dir(data);\r\n $scope.Results.FailureMessage = \"There was a problem saving or sending notifications.\";\r\n $scope.Results.DoneSaving = false;\r\n });\r\n\r\n };\r\n\r\n $scope.cancel = function () {\r\n $scope.SearchPermitNumber = \"\";\r\n $scope.permit = null;\r\n $scope.ResultMessage = \"\";\r\n };\r\n\r\n $scope.close = function () {\r\n $scope.cancel();\r\n };\r\n\r\n $scope.loadRecipientsFromRoute = function () {\r\n $scope.row.ReviewersContact = {};\r\n\r\n console.log(\"getting routes for: \" + $scope.row.ItemType);\r\n\r\n $scope.PermitRoutes = PermitService.getPermitRoutesByItemType($scope.row.ItemType);\r\n $scope.PermitRoutes.$promise.then(function () {\r\n\r\n //select the first one\r\n $scope.PermitRoutes.forEach(function (route) {\r\n if (route.Rank == 0)\r\n $scope.row.ReviewersContact[route.Email] = true;\r\n });\r\n });\r\n }\r\n\r\n $scope.getFileLabel = function(file){\r\n return file.Name + ((file.Description) ? \" (\"+file.Description+\")\" : \"\");\r\n }\r\n\r\n //setup an event listener that fires from list-permits.js every time a header field is changed. we listen for ItemType changing.\r\n $scope.onHeaderEditingStopped = function(field) {\r\n console.log(\"on header editing stopped \" + field.DbColumnName);\r\n if (field.DbColumnName == 'ItemType') {\r\n $scope.loadRecipientsFromRoute();\r\n }\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default request_inspection;\r\n","// defines the admin module and loads the components, controllers and services\r\nimport * as angular from 'angular';\r\n//load the components for this module\r\n/*require([*/\r\nimport admin_view from \"./components/admin-page/admin-view\";\r\nimport add_project_dataset from \"./components/admin-page/admin-add-project-dataset\";\r\nimport admin_edit_dataset_fields from \"./components/admin-page/admin-edit-dataset-fields\";\r\nimport admin_edit_dataset_config from \"./components/admin-page/admin-edit-dataset-config\";\r\nimport admin_edit_dataset_workflow from \"./components/admin-page/admin-edit-dataset-workflow\";\r\nimport admin_edit_dataset_permissions from \"./components/admin-page/admin-edit-dataset-permissions\";\r\nimport admin_edit_master from \"./components/admin-page/admin-edit-master\";\r\nimport admin_new_dataset from \"./components/admin-page/admin-new-dataset\";\r\nimport admin_metafields from \"./components/admin-page/admin-metafields\";\r\nimport modal_admin_edit_dataset_field from \"./components/admin-page/modal-edit-dataset-field\";\r\nimport modal_admin_edit_master_field from \"./components/admin-page/modal-edit-master-field\";\r\nimport modal_admin_choose_duplicate_fields from \"./components/admin-page/modal-choose-duplicate-fields\";\r\nimport modal_admin_choose_activitylist_fields from \"./components/admin-page/modal-choose-activitylist-fields\";\r\nimport modal_admin_edit_metadataproperty from \"./components/admin-page/modal-edit-metadataproperty\";\r\nimport admin_users from \"./components/admin-page/admin-users\";\r\nimport admin_groups from \"./components/admin-page/admin-groups\";\r\nimport modal_manage_user from \"./components/admin-page/admin-manage-users-modal\";\r\nimport modal_admin_new_datastore from \"./components/admin-page/modal-datastore\";\r\nimport modal_admin_item from \"./components/admin-page/modal-admin-item\";\r\nimport modal_admin_group_members from \"./components/admin-page/modal-admin-group-members\";\r\nimport admin_org from \"./components/admin-page/admin-organizations\";\r\n\r\n //service\r\nimport * as admin_service from './admin-service';\r\nimport {serviceUrl} from \"../../config\";\r\nimport admin_services from \"./admin-service\";\r\n\r\n/*], function () {*/\r\n //add the controllers and services to the module once the files are loaded!\r\nconst admin_module = angular.module('AdminModule', ['ui.bootstrap', 'ngResource']);\r\n //controllers\r\nadmin_module.controller('AdminCtrl', admin_view);\r\nadmin_module.controller('ModalAddProjectDatasetCtrl', add_project_dataset);\r\nadmin_module.controller('AdminEditDatasetFieldsCtrl', admin_edit_dataset_fields);\r\nadmin_module.controller('AdminEditDatasetConfigCtrl', admin_edit_dataset_config);\r\nadmin_module.controller('AdminEditDatasetWorkflowCtrl', admin_edit_dataset_workflow);\r\nadmin_module.controller('AdminEditDatasetPermissionsCtrl', admin_edit_dataset_permissions);\r\nadmin_module.controller('AdminEditMasterCtrl', admin_edit_master);\r\nadmin_module.controller('AdminNewDatasetCtrl', admin_new_dataset);\r\nadmin_module.controller('AdminMetafieldsCtrl', admin_metafields);\r\nadmin_module.controller('ModalEditDatasetFieldCtrl', modal_admin_edit_dataset_field);\r\nadmin_module.controller('ModalEditMasterFieldCtrl', modal_admin_edit_master_field);\r\nadmin_module.controller('ModalChooseDuplicateFieldsCtrl', modal_admin_choose_duplicate_fields);\r\nadmin_module.controller('ModalChooseActivityListFieldsCtrl', modal_admin_choose_activitylist_fields);\r\nadmin_module.controller('ModalEditMetadataPropertyCtrl', modal_admin_edit_metadataproperty);\r\nadmin_module.controller('AdminUsersCtrl', admin_users);\r\nadmin_module.controller('AdminGroupsCtrl', admin_groups);\r\nadmin_module.controller('ModalManageUserCtrl', modal_manage_user);\r\nadmin_module.controller('ModalDatastore',modal_admin_new_datastore);\r\nadmin_module.controller('ModalAdminItemCtrl', modal_admin_item);\r\nadmin_module.controller('ModalAdminGroupMembersCtrl',modal_admin_group_members);\r\nadmin_module.controller('AdminOrgCtrl',admin_org);\r\nadmin_module.service('AdminService', admin_services);\r\n //load services\r\n\r\n //define routes\r\n// });\r\n\r\nadmin_module.factory('SaveDatasetField', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/dataset/savedatasetfield');\r\n}]);\r\n\r\nadmin_module.factory('SaveDataset', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/dataset/dataset', {}, {\r\n save: { method: 'PUT' }\r\n });\r\n}]);\r\n\r\nadmin_module.factory('SaveMasterField', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/datastore/savemasterfield');\r\n}]);\r\n\r\nadmin_module.factory('RemoveMasterField', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/datastore/removemasterfield');\r\n}]);\r\n\r\nadmin_module.factory('DeleteDatasetField', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/dataset/deletedatasetfield');\r\n}]);\r\n\r\nadmin_module.factory('GetAllFields', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/datastore/GetDatastoreFields');\r\n}]);\r\n\r\nadmin_module.factory('AddMasterFieldToDataset', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/datastore/addmasterfieldtodataset');\r\n}]);\r\n\r\nadmin_module.factory('GetAllDatastoreFields', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/datastore/getdatastorefields');\r\n}]);\r\n\r\nadmin_module.factory('SaveNewDatastore', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/datastore/saveNewDatastore');\r\n}]);\r\n\r\nadmin_module.factory('SaveGroup', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/group/saveGroup');\r\n}]);\r\n\r\nadmin_module.factory('SaveDepartment', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/department/saveDepartment');\r\n}]);\r\n\r\nadmin_module.factory('SaveOrganization', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/organization/saveOrganization');\r\n}]);\r\n\r\nadmin_module.factory('SaveOrgAdmin', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/organization/saveOrgAdmin');\r\n}]);\r\n\r\nadmin_module.factory('RemoveOrgAdmin', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/organization/removeOrgAdmin');\r\n}]);\r\n\r\nadmin_module.factory('SaveGroupMember', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/group/saveGroupMember');\r\n}]);\r\n\r\nadmin_module.factory('RemoveGroupMember', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/group/removeGroupMember');\r\n}]);\r\n\r\nadmin_module.factory('RemoveGroup', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/group/removeGroup');\r\n}]);\r\n\r\nadmin_module.factory('RemoveOrganization', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/organization/removeOrganization');\r\n}]);\r\n\r\nadmin_module.factory('RemoveUser', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/user/removeUser');\r\n}]);\r\n\r\nadmin_module.factory('RemoveDepartment', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/department/removeDepartment');\r\n}]);\r\n\r\nadmin_module.factory('RemoveDatastore', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/datastore/removeDatastore');\r\n}]);\r\n\r\nadmin_module.factory('RegenerateViews', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/datastore/regenerateViews', {}, {\r\n save: { method: 'POST', isArray: true }\r\n });\r\n}]);\r\n\r\n\r\nexport default admin_module;\r\n\r\n\r\n\r\n\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {\r\n BooleanCellRenderer, valueFormatterArrayToList,\r\n valueFormatterBoolean, valueFormatterCurrency, valueFormatterDate,\r\n valueFormatterNumericCommas\r\n} from \"../../../../core/common/common-functions\";\r\nimport {LeaseModalScope} from \"./lease-scope\";\r\n// import leasing_module from \"../../leasing-module\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar view_lease = ['$scope', '$route', '$routeParams', '$uibModal', '$location', '$window', '$rootScope', 'LeasingService',\r\n function ($scope, $route, $routeParams, $uibModal, $location, $window, $rootScope, LeasingService) {\r\n\r\n $rootScope.inModule = \"leasing\"; //signal to show the leasing menu, etc.\r\n\r\n if (!$scope.Profile.hasRole(\"Leasing\"))\r\n angular.rootScope.go(\"/unauthorized\");\r\n\r\n $scope.canViewCropFields = $rootScope.Profile.hasRole(\"LeaseCropAdmin\");\r\n\r\n $scope.lease = LeasingService.getLease($routeParams.Id);\r\n $scope.revisions = LeasingService.getLeaseRevisions($routeParams.Id);\r\n $scope.cropplanrevisions_all = LeasingService.getLeaseCropPlanRevisions($routeParams.Id);\r\n $scope.cropplanrevisions = [];\r\n\r\n $scope.cropplanrevisions_all.$promise.then(function () {\r\n $scope.refreshCropRevisionsDropdown();\r\n });\r\n\r\n // leasing_module.prepareLeaseModalScope($scope, LeasingService);\r\n LeaseModalScope.prepareLeaseModalScope($scope,LeasingService);\r\n //tab handling\r\n $scope.isLeaseSelected = true;\r\n\r\n $scope.clearTabSelection = function () {\r\n $scope.isLeaseSelected = false;\r\n $scope.isCropsSelected = false;\r\n $scope.isInspectionsSelected = false;\r\n $scope.isIncomeSelected = false;\r\n $scope.isDocumentsSelected = false;\r\n $scope.isHistorySelected = false;\r\n $scope.isComplianceSelected = false;\r\n };\r\n\r\n $scope.selectLease = function () { $scope.clearTabSelection(); $scope.isLeaseSelected = true; };\r\n\r\n $scope.selectCrops = function () {\r\n $scope.clearTabSelection();\r\n $scope.isCropsSelected = true;\r\n if (!$scope.cropsGridDiv) {\r\n $scope.cropsGridDiv = document.querySelector('#crops-grid');\r\n new Grid($scope.cropsGridDiv, $scope.cropsGrid);\r\n }\r\n $scope.cropsGrid.api.setRowData($scope.lease.LeaseCropPlans);\r\n $scope.cropsGrid.selectedItem = null;\r\n\r\n };\r\n\r\n $scope.selectCompliance = function () {\r\n $scope.clearTabSelection();\r\n $scope.isComplianceSelected = true;\r\n if (!$scope.complianceGridDiv) {\r\n $scope.complianceGridDiv = document.querySelector('#compliance-grid');\r\n new Grid($scope.complianceGridDiv, $scope.complianceGrid);\r\n }\r\n $scope.complianceGrid.api.setRowData($scope.getComplianceInspections());\r\n $scope.complianceGrid.selectedItem = null;\r\n\r\n if ($rootScope.Profile.hasRole(\"LeasingEditor\")) {\r\n $scope.complianceGrid.columnApi.setColumnVisible(\"InspectionEditLinks\", true);\r\n $scope.complianceGrid.api.refreshHeader();\r\n }\r\n\r\n };\r\n\r\n $scope.selectInspections = function () {\r\n $scope.clearTabSelection();\r\n $scope.isInspectionsSelected = true;\r\n if (!$scope.inspectionGridDiv) {\r\n $scope.inspectionGridDiv = document.querySelector('#inspections-grid');\r\n new Grid($scope.inspectionGridDiv, $scope.inspectionsGrid);\r\n }\r\n $scope.inspectionsGrid.api.setRowData($scope.getCropInspections());\r\n $scope.inspectionsGrid.selectedItem = null;\r\n\r\n if ($rootScope.Profile.hasRole(\"LeasingEditor\")) {\r\n $scope.inspectionsGrid.columnApi.setColumnVisible(\"InspectionEditLinks\", true);\r\n $scope.inspectionsGrid.api.refreshHeader();\r\n }\r\n };\r\n\r\n $scope.selectIncome = function () {\r\n $scope.clearTabSelection(); $scope.isIncomeSelected = true;\r\n if (!$scope.incomeGridDiv) {\r\n $scope.incomeGridDiv = document.querySelector('#income-grid');\r\n new Grid($scope.incomeGridDiv, $scope.incomeGrid);\r\n }\r\n $scope.incomeGrid.api.setRowData($scope.lease.LeaseProductions);\r\n $scope.incomeGrid.selectedItem = null;\r\n\r\n if ($rootScope.Profile.hasRole(\"LeasingEditor\")) {\r\n $scope.incomeGrid.columnApi.setColumnVisible(\"ProductionEditLink\", true);\r\n $scope.incomeGrid.api.refreshHeader();\r\n }\r\n\r\n };\r\n\r\n //$scope.selectDocuments = function () { $scope.clearTabSelection(); $scope.isDocumentsSelected = true; };\r\n\r\n $scope.selectHistory = function () {\r\n $scope.clearTabSelection();\r\n $scope.isHistorySelected = true;\r\n if (!$scope.historyGridDiv) {\r\n $scope.historyGridDiv = document.querySelector('#history-grid');\r\n new Grid($scope.historyGridDiv, $scope.historyGrid);\r\n }\r\n $scope.historyGrid.api.setRowData($scope.revisions);\r\n\r\n };\r\n\r\n var CropEditLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Delete';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.viewLease(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n var InspectionEditLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n\r\n if(param.data.InspectionType == \"Spring\")\r\n $scope.openSpringInspectionModal(param.data);\r\n\r\n else if (param.data.InspectionType == \"Fall\")\r\n $scope.openFallInspectionModal(param.data);\r\n\r\n else if (param.data.InspectionType == \"Grazing\")\r\n $scope.openGrazingInspectionModal(param.data);\r\n\r\n else\r\n alert(\"Inspection Type is not supported.\");\r\n\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n var ComplianceEditLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openComplianceInspectionModal(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n\r\n\r\n var ProductionEditLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openProductionModal(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n\r\n var HistoryViewLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'View';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n alert(\"open lease doc in new window\")\r\n //$scope.viewLease(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n\r\n //crops\r\n var cropsColumnDefs = [\r\n //{ colId: 'CropEditLinks', width: 80, cellRenderer: CropEditLinksTemplate, menuTabs: [] },\r\n { headerName: \"Year\", field: \"LeaseYear\", width: 120, sort: 'asc' },\r\n { headerName: \"Crop Requirement\", field: \"CropRequirement\", width: 180 },\r\n {\r\n headerName: \"Alt Crop Option?\", field: \"OptionAlternateCrop\", width: 160,\r\n valueFormatter: function (params) {\r\n return valueFormatterBoolean(params.node.data.OptionAlternateCrop);\r\n },\r\n\r\n }\r\n ];\r\n\r\n $scope.cropsGrid = {\r\n columnDefs: cropsColumnDefs,\r\n rowData: [],\r\n enableSorting: true,\r\n enableFilter: true,\r\n components: {\r\n booleanCellRenderer: BooleanCellRenderer,\r\n },\r\n rowSelection: 'single',\r\n\r\n }\r\n\r\n //inspections\r\n var inspectionsColumnDefs = [\r\n { colId: 'InspectionEditLinks', width: 80, cellRenderer: InspectionEditLinksTemplate, menuTabs: [], hide: true },\r\n { headerName: \"Inspection\", field: \"InspectionType\", width: 160 },\r\n\r\n {\r\n headerName: \"Inspected\", field: \"InspectionDateTime\", width: 140, sort: 'asc',\r\n valueGetter: function (params) { return moment(params.node.data.InspectionDateTime) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.InspectionDateTime);\r\n },\r\n },\r\n { headerName: \"Lease Year\", field: \"LeaseYear\", width: 140 },\r\n {\r\n headerName: \"Failed?\", field: \"OutOfCompliance\", width: 160,\r\n valueFormatter: function (params) {\r\n return valueFormatterBoolean(params.node.data.OutOfCompliance);\r\n },\r\n },\r\n { headerName: \"Crop Present\", field: \"CropPresent\", width: 180 },\r\n { headerName: \"Weeds1\", field: \"Weeds1\", width: 160 },\r\n { headerName: \"Weeds2\", field: \"Weeds2\", width: 160 },\r\n { headerName: \"Weeds3\", field: \"Weeds3\", width: 160 },\r\n { headerName: \"Crop Residue\", field: \"CropResiduePct\", width: 160 },\r\n { headerName: \"Green Cover\", field: \"GreenCoverPct\", width: 160 },\r\n { headerName: \"Clod Percent\", field: \"ClodPct\", width: 160 },\r\n { headerName: \"Residue Type\", field: \"ResidueType\", width: 160 },\r\n { headerName: \"Sub Practices\", field: \"SubstitutePractices\", width: 160 },\r\n {\r\n headerName: \"Animals\", field: \"Animals\", width: 160,\r\n valueFormatter: function (params) {\r\n return valueFormatterArrayToList(params.node.data.Animals);\r\n }\r\n },\r\n {\r\n headerName: \"Field Records Recvd\", field: \"FieldRecordsReceived\", width: 160,\r\n valueFormatter: function (params) {\r\n return valueFormatterBoolean(params.node.data.FieldRecordsReceived);\r\n },\r\n },\r\n { headerName: \"Improvement Tresspass\", field: \"ImprovementTresspass\", width: 200 },\r\n { headerName: \"Notes\", field: \"Notes\", width: 200 },\r\n { headerName: \"Inspector\", field: \"InspectedBy\", width: 180 },\r\n ];\r\n\r\n\r\n\r\n $scope.inspectionsGrid = {\r\n columnDefs: inspectionsColumnDefs,\r\n rowData: [],\r\n enableSorting: true,\r\n enableFilter: true,\r\n enableColResize: true,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n $scope.inspectionsGrid.selectedItem = $scope.inspectionsGrid.api.getSelectedRows()[0];\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n selectedItem: null,\r\n }\r\n\r\n //history ---\r\n var historyColumnDefs = [\r\n\r\n {\r\n headerName: \"Date Changed\", field: \"ChangedDate\", width: 140,\r\n valueGetter: function (params) { return moment(params.node.data.ChangedDate) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.ChangedDate, \"L HH:mm\");\r\n },\r\n },\r\n { headerName: \"Changed By\", field: \"ChangedBy\", width: 180 },\r\n { headerName: \"Reason for Modification\", field: \"ChangedReason\", width: 450 },\r\n { headerName: \"Allotment Name\", field: \"AllotmentName\", width: 180 },\r\n { headerName: \"Lease Number\", field: \"LeaseNumber\", width: 160 },\r\n { headerName: \"TAAMSNumber\", field: \"TAAMSNumber\", width: 160 },\r\n\r\n {\r\n headerName: \"Operator\", width: 160,\r\n cellRenderer: function (params) {\r\n return (params.node.data.LeaseOperator.Organization) ? params.node.data.LeaseOperator.Organization : params.node.data.LeaseOperator.FirstName + \" \" + params.node.data.LeaseOperator.LastName;\r\n }\r\n },\r\n //{ headerName: \"Farm Number\", field: \"FarmNumber\", width: 160 },\r\n { headerName: \"Level\", field: \"Level\", width: 160 },\r\n {\r\n headerName: \"Status\", field: \"Status\", width: 160,\r\n valueFormatter: function (params) {\r\n // return leasing_module.LeaseStatus[params.node.data.Status];\r\n return LeaseModalScope.LeaseStatus[params.node.data.Status];\r\n }\r\n },\r\n { headerName: \"Status By\", field: \"StatusBy\", width: 160 },\r\n {\r\n headerName: \"Status Date\",\r\n field: \"StatusDate\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.StatusDate) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.StatusDate, 'L HH:mm');\r\n },\r\n },\r\n { headerName: \"FSA Tract\", field: \"FSATractNumber\", width: 160 },\r\n { headerName: \"HEL\", field: \"HEL\", width: 160 },\r\n { headerName: \"Lease Type\", field: \"LeaseType\", width: 160 },\r\n { headerName: \"Lease Acres\", field: \"LeaseAcres\", width: 160 },\r\n //{ headerName: \"Lease Duration\", field: \"LeaseDuration\", width: 160 },\r\n { headerName: \"Productive Acres\", field: \"ProductiveAcres\", width: 160 },\r\n {\r\n headerName: \"Transaction Date\",\r\n field: \"TransactionDate\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.TransactionDate) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.TransactionDate);\r\n },\r\n\r\n },\r\n\r\n {\r\n headerName: \"Negotiate Date\",\r\n field: \"NegotiateDate\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.NegotiateDate) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.NegotiateDate);\r\n },\r\n },\r\n {\r\n headerName: \"Lease Start\",\r\n field: \"LeaseStart\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.LeaseStart) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.LeaseStart);\r\n },\r\n },\r\n {\r\n headerName: \"Lease End\",\r\n field: \"LeaseEnd\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.LeaseEnd) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.LeaseEnd);\r\n },\r\n\r\n },\r\n\r\n {\r\n headerName: \"Due Date\",\r\n field: \"DueDate\", width: 160,\r\n },\r\n {\r\n headerName: \"Approved Date\",\r\n field: \"ApprovedDate\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.ApprovedDate) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.ApprovedDate);\r\n },\r\n\r\n }, {\r\n headerName: \"Withdrawl Date\",\r\n field: \"WithdrawlDate\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.WithdrawlDate) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.WithdrawlDate);\r\n },\r\n\r\n },\r\n {\r\n headerName: \"Graze Start\",\r\n field: \"GrazeStart\", width: 160\r\n },\r\n {\r\n headerName: \"Graze End\",\r\n field: \"GrazeEnd\", width: 160\r\n },\r\n { headerName: \"Residue Required Pct\", field: \"ResidueRequiredPct\", width: 160, hide: !$scope.canViewCropFields },\r\n { headerName: \"Green Cover Required Pct\", field: \"GreenCoverRequiredPct\", width: 160, hide: !$scope.canViewCropFields },\r\n { headerName: \"Clod Required Pct\", field: \"ClodRequiredPct\", width: 160, hide: !$scope.canViewCropFields },\r\n {\r\n headerName: \"Optional Alt Crop\", field: \"OptionalAlternativeCrop\", width: 160, valueFormatter: function (params) {\r\n return valueFormatterBoolean(params.node.data.OutOfCompliance);\r\n },\r\n },\r\n { headerName: \"AUMs\", field: \"AUMs\", width: 160, hide: !$scope.canViewCropFields },\r\n { headerName: \"Grazing Rental Rate\", field: \"GrazingRentalRate\", width: 150,\r\n valueFormatter: function (params) {\r\n return valueFormatterCurrency(params.node.data.GrazingRentalRate);\r\n },\r\n },\r\n { headerName: \"Dollar Per Annum\", field: \"DollarPerAnnum\", width: 160 },\r\n { headerName: \"Dollar Advance\", field: \"DollarAdvance\", width: 160 },\r\n { headerName: \"Dollar Bond\", field: \"DollarBond\", width: 160 },\r\n { headerName: \"Lease Fee\", field: \"LeaseFee\", width: 160 },\r\n { headerName: \"Graze Animal\", field: \"GrazeAnimal\", width: 160,\r\n valueFormatter: function (params) {\r\n return valueFormatterArrayToList(params.node.data.GrazeAnimal);\r\n }\r\n },\r\n\r\n { headerName: \"Notes\", field: \"Notes\", width: 160 },\r\n\r\n\r\n ]\r\n\r\n $scope.historyGrid = {\r\n columnDefs: historyColumnDefs,\r\n rowData: [],\r\n enableSorting: true,\r\n enableFilter: true,\r\n enableColResize: true,\r\n rowSelection: 'single'\r\n }\r\n\r\n\r\n //income/production ---\r\n var incomeColumnDefs = [\r\n { colId: 'ProductionEditLink', width: 80, cellRenderer: ProductionEditLinksTemplate , menuTabs: [], hide: true },\r\n { headerName: \"Lease Year\", field: \"LeaseYear\", width: 150 },\r\n {\r\n headerName: \"Posted Date\", field: \"IncomeDate\", width: 150,\r\n valueGetter: function (params) { return moment(params.node.data.IncomeDate) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.IncomeDate);\r\n },\r\n },\r\n { headerName: \"Posted By\", field: \"IncomePostedBy\", width: 180 },\r\n\r\n { headerName: \"Crop Acres\", field: \"CropAcres\", width: 150 },\r\n { headerName: \"Harvested Crop\", field: \"HarvestedCrop\", width: 150 },\r\n { headerName: \"Crop Type\", field: \"CropType\", width: 150 },\r\n { headerName: \"Crop Variety\", field: \"CropVariety\", width: 150 },\r\n { headerName: \"Crop Grade\", field: \"CropGrade\", width: 150 },\r\n {\r\n headerName: \"Harvest Date\", field: \"HarvestDate\", width: 150,\r\n valueGetter: function (params) { return moment(params.node.data.HarvestDate) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.HarvestDate);\r\n },\r\n },\r\n { headerName: \"Delivery Point\", field: \"DeliveryPoint\", width: 150 },\r\n { headerName: \"Delivery Location\", field: \"DeliveryLocation\", width: 150 },\r\n { headerName: \"Delivery Unit\", field: \"DeliveryUnit\", width: 150 },\r\n { headerName: \"Gross\", field: \"Gross\", width: 150,\r\n valueFormatter: function (params) {\r\n return valueFormatterNumericCommas(params.node.data.Gross);\r\n },\r\n },\r\n { headerName: \"Net\", field: \"Net\", width: 150,\r\n valueFormatter: function (params) {\r\n return valueFormatterNumericCommas(params.node.data.Net);\r\n },\r\n },\r\n { headerName: \"Yield Acre\", field: \"YieldAcre\", width: 150 },\r\n { headerName: \"Owner Share %\", field: \"OwnerSharePercent\", width: 150 },\r\n { headerName: \"Owner Share $\", field: \"OwnerShareDollar\", width: 150, \r\n valueFormatter: function (params) {\r\n return valueFormatterCurrency(params.node.data.OwnerShareDollar);\r\n },\r\n },\r\n { headerName: \"Market Price\", field: \"MarketPrice\", width: 150,\r\n valueFormatter: function (params) {\r\n return valueFormatterCurrency(params.node.data.MarketPrice);\r\n },\r\n },\r\n { headerName: \"Market Unit\", field: \"MarketUnit\", width: 150, },\r\n { headerName: \"Crop Share $\", field: \"CropShareDollar\", width: 150,\r\n valueFormatter: function (params) {\r\n return valueFormatterCurrency(params.node.data.CropShareDollar);\r\n },\r\n },\r\n { headerName: \"Deduct\", field: \"Deduction\", width: 150 },\r\n { headerName: \"Deduct Type\", field: \"DeductionType\", width: 150 },\r\n { headerName: \"Payment\", field: \"PaymentAmount\", width: 150,\r\n valueFormatter: function (params) {\r\n return valueFormatterCurrency(params.node.data.PaymentAmount);\r\n },\r\n },\r\n { headerName: \"Payment Type\", field: \"PaymentType\", width: 150 },\r\n { headerName: \"Total Payment\", field: \"TotalPaymentAmount\", width: 150,\r\n valueFormatter: function (params) {\r\n return valueFormatterCurrency(params.node.data.TotalPaymentAmount);\r\n },\r\n },\r\n\r\n\r\n { headerName: \"Comments\", field: \"Comments\", width: 450 },\r\n\r\n ]\r\n\r\n $scope.incomeGrid = {\r\n columnDefs: incomeColumnDefs,\r\n rowData: [],\r\n enableSorting: true,\r\n onSelectionChanged: function (params) {\r\n $scope.incomeGrid.selectedItem = $scope.incomeGrid.api.getSelectedRows()[0];\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n selectedItem: null,\r\n enableFilter: true,\r\n rowSelection: 'single'\r\n }\r\n\r\n\r\n $scope.closeSidebar = function () {\r\n $scope.hasResults = false;\r\n };\r\n\r\n\r\n $scope.openFallInspectionModal = function (params) {\r\n\r\n if($scope.lease.LeaseCropPlans.length == 0)\r\n {\r\n alert(\"You must add a Crop Plan before you can add an inspection.\")\r\n return;\r\n }\r\n\r\n delete $scope.inspection_modal;\r\n\r\n //if editing, we'll have incoming params\r\n if (params) {\r\n $scope.inspection_modal = params;\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/add-fall-inspection-modal.html',\r\n controller: 'FallInspectionModalController',\r\n scope: $scope,\r\n backdrop : 'static',\r\n windowClass: 'modal-medium',\r\n keyboard : false\r\n });\r\n }\r\n\r\n\r\n $scope.openSpringInspectionModal = function (params) {\r\n\r\n if ($scope.lease.LeaseCropPlans.length == 0) {\r\n alert(\"You must add a Crop Plan before you can add an inspection.\")\r\n return;\r\n }\r\n\r\n delete $scope.inspection_modal;\r\n\r\n //if editing, we'll have incoming params\r\n if (params) {\r\n $scope.inspection_modal = params;\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/add-spring-inspection-modal.html',\r\n controller: 'SpringInspectionModalController',\r\n scope: $scope,\r\n backdrop : 'static',\r\n windowClass: 'modal-medium',\r\n keyboard : false\r\n });\r\n }\r\n\r\n $scope.openGrazingInspectionModal = function (params) {\r\n\r\n if($scope.lease.LeaseCropPlans.length == 0)\r\n {\r\n alert(\"You must add a Crop Plan before you can add an inspection.\")\r\n return;\r\n }\r\n\r\n delete $scope.inspection_modal;\r\n\r\n //if editing, we'll have incoming params\r\n if (params) {\r\n $scope.inspection_modal = params;\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/add-grazing-inspection-modal.html',\r\n controller: 'GrazingInspectionModalController',\r\n scope: $scope,\r\n backdrop : 'static',\r\n windowClass: 'modal-medium',\r\n keyboard : false\r\n });\r\n }\r\n\r\n\r\n $scope.openEditLeaseModal = function (params) {\r\n\r\n $scope.pagemode = \"edit\";\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/lease-modal.html',\r\n controller: 'LeaseModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n }\r\n\r\n $scope.openNewLeaseModal = function (params) {\r\n\r\n $scope.pagemode = \"new_lease_on_this_parcel\";\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/lease-modal.html',\r\n controller: 'LeaseModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n }\r\n\r\n $scope.openChangeCropPlanModal = function (params) {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/modify-crop-plan-modal.html',\r\n controller: 'ModifyCropPlanController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n }\r\n\r\n $scope.openProductionModal = function (params) {\r\n\r\n delete $scope.production_modal;\r\n\r\n //if editing, we'll have incoming params\r\n if (params) {\r\n $scope.production_modal = params;\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/add-production-modal.html',\r\n controller: 'ProductionModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n }\r\n\r\n $scope.removeProduction = function(){\r\n if(confirm(\"Are you sure you want to delete the selected production?\")){\r\n var deleted = LeasingService.removeProduction($scope.incomeGrid.selectedItem.Id);\r\n deleted.$promise.then(function(){\r\n $scope.lease.LeaseProductions.forEach(function(item, index){\r\n if(item.Id == $scope.incomeGrid.selectedItem.Id)\r\n {\r\n $scope.lease.LeaseProductions.splice(index,1);\r\n }\r\n })\r\n\r\n $scope.incomeGrid.api.setRowData($scope.lease.LeaseProductions);\r\n $scope.incomeGrid.selectedItem = null;\r\n\r\n })\r\n }\r\n }\r\n\r\n $scope.removeInspection = function(){\r\n if(!confirm(\"Are you sure you want to remove this inspection? There is no undo.\")){\r\n return;\r\n }\r\n\r\n var remove = LeasingService.removeInspection($scope.inspectionsGrid.selectedItem.Id);\r\n remove.$promise.then(function(){\r\n\r\n $scope.lease.LeaseInspections.forEach(function(inspection, index){\r\n if(inspection.Id == $scope.inspectionsGrid.selectedItem.Id){\r\n $scope.lease.LeaseInspections.splice(index, 1);\r\n }\r\n })\r\n\r\n $scope.inspectionsGrid.api.setRowData($scope.getCropInspections());\r\n $scope.inspectionsGrid.selectedItem = null;\r\n }, function(data){\r\n alert(\"There was a problem removing that inspection.\");\r\n console.dir(data);\r\n })\r\n }\r\n\r\n $scope.removeCompliance = function(){\r\n if(!confirm(\"Are you sure you want to remove this compliance inspection? There is no undo.\")){\r\n return;\r\n }\r\n\r\n var remove = LeasingService.removeInspection($scope.complianceGrid.selectedItem.Id);\r\n remove.$promise.then(function(){\r\n\r\n $scope.lease.LeaseInspections.forEach(function(inspection, index){\r\n if(inspection.Id == $scope.complianceGrid.selectedItem.Id){\r\n $scope.lease.LeaseInspections.splice(index, 1);\r\n }\r\n })\r\n\r\n $scope.complianceGrid.api.setRowData($scope.getComplianceInspections());\r\n $scope.complianceGrid.selectedItem = null;\r\n }, function(data){\r\n alert(\"There was a problem removing that compliance inspection.\");\r\n console.dir(data);\r\n })\r\n }\r\n\r\n $scope.openComplianceInspectionModal = function (params) {\r\n\r\n delete $scope.inspection_modal;\r\n\r\n //if editing, we'll have incoming params\r\n if (params) {\r\n $scope.inspection_modal = params;\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/add-compliance-inspection-modal.html',\r\n controller: 'ComplianceInspectionModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n //compliance\r\n var complianceColumnDefs = [\r\n { colId: 'InspectionEditLinks', width: 80, cellRenderer: ComplianceEditLinksTemplate, menuTabs: [], hide: true },\r\n { headerName: \"Inspection\", field: \"InspectionType\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n\r\n {\r\n headerName: \"Inspected\", field: \"InspectionDateTime\", width: 140, sort: 'asc',\r\n valueGetter: function (params) { return moment(params.node.data.InspectionDateTime) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.InspectionDateTime);\r\n },\r\n menuTabs: ['filterMenuTab'], filter: true\r\n },\r\n { headerName: \"Lease Year\", field: \"LeaseYear\", width: 140, filter: true, menuTabs: ['filterMenuTab'], },\r\n { headerName: \"Inspection Type\", field: \"InspectionType\", width: 160, menuTabs: ['filterMenuTab'], filter: true},\r\n {\r\n headerName: \"Failed?\", field: \"OutOfCompliance\", width: 160,\r\n valueFormatter: function (params) {\r\n return valueFormatterBoolean(params.node.data.OutOfCompliance);\r\n },\r\n menuTabs: ['filterMenuTab'],\r\n filter: true\r\n },\r\n { headerName: \"Violation Type\", field: \"ViolationType\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Notes\", field: \"Notes\", width: 300, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: \"Inspector\", field: \"InspectedBy\", width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n ];\r\n\r\n\r\n\r\n $scope.complianceGrid = {\r\n columnDefs: complianceColumnDefs,\r\n rowData: [],\r\n enableSorting: true,\r\n enableFilter: true,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n $scope.complianceGrid.selectedItem = $scope.complianceGrid.api.getSelectedRows()[0];\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n selectedItem: null,\r\n\r\n }\r\n\r\n///\r\n\r\n\r\n $scope.saveLeaseCallback = function(saved_lease){\r\n $scope.lease = LeasingService.getLease(saved_lease.Id);\r\n $scope.revisions = LeasingService.getLeaseRevisions($routeParams.Id);\r\n $scope.operators = LeasingService.getOperators();\r\n $scope.cropplanrevisions_all = LeasingService.getLeaseCropPlanRevisions($routeParams.Id);\r\n $scope.cropplanrevisions = [];\r\n\r\n $scope.lease.$promise.then(function () {\r\n if ($scope.cropsGrid.api)\r\n $scope.cropsGrid.api.setRowData($scope.lease.LeaseCropPlans);\r\n\r\n if ($scope.inspectionsGrid.api)\r\n $scope.inspectionsGrid.api.setRowData($scope.getCropInspections());\r\n\r\n if ($scope.incomeGrid.api)\r\n $scope.incomeGrid.api.setRowData($scope.lease.LeaseProductions);\r\n\r\n if ($scope.historyGrid.api)\r\n $scope.historyGrid.api.setRowData($scope.revisions);\r\n\r\n if ($scope.complianceGrid.api)\r\n $scope.complianceGrid.api.setRowData($scope.getComplianceInspections());\r\n\r\n\r\n $scope.cropplanrevisions_all.$promise.then(function () {\r\n $scope.refreshCropRevisionsDropdown();\r\n });\r\n });\r\n\r\n }\r\n\r\n $scope.getComplianceInspections = function () {\r\n var results = [];\r\n $scope.lease.LeaseInspections.forEach(function (inspection) {\r\n if (inspection.InspectionType != \"Spring\" && inspection.InspectionType != \"Fall\" && inspection.InspectionType != \"Grazing\") {\r\n results.push(inspection);\r\n }\r\n });\r\n return results;\r\n };\r\n\r\n $scope.getCropInspections = function () {\r\n var results = [];\r\n $scope.lease.LeaseInspections.forEach(function (inspection) {\r\n if (inspection.InspectionType == \"Spring\" || inspection.InspectionType == \"Fall\" || inspection.InspectionType == \"Grazing\") {\r\n results.push(inspection);\r\n }\r\n });\r\n return results;\r\n };\r\n\r\n $scope.operators.$promise.then(function () {\r\n $scope.operators.forEach(function (oper) {\r\n oper.SortName = (oper.Organization) ? oper.Organization : oper.FirstName + \" \" + oper.LastName;\r\n });\r\n });\r\n\r\n $scope.selectCropRevision = function () {\r\n var viewCropRevision = [];\r\n\r\n for (var i = 0; i < $scope.cropplanrevisions_all.length; i++) {\r\n if ($scope.cropplanrevisions_all[i].SequenceId == $scope.selectedCropRevision)\r\n viewCropRevision.push($scope.cropplanrevisions_all[i]);\r\n }\r\n\r\n if($scope.cropsGrid.api)\r\n $scope.cropsGrid.api.setRowData(viewCropRevision); //$scope.lease.LeaseCropPlans);\r\n\r\n }\r\n\r\n $scope.refreshCropRevisionsDropdown = function () {\r\n $scope.maxseq = 0;\r\n for (var i = 0; i < $scope.cropplanrevisions_all.length; i++) {\r\n\r\n var rev = $scope.cropplanrevisions_all[i];\r\n if (rev.SequenceId != $scope.maxseq) {\r\n $scope.cropplanrevisions.push(rev);\r\n $scope.maxseq = rev.SequenceId;\r\n }\r\n\r\n}\r\n $scope.selectedCropRevision = $scope.maxseq;\r\n\r\n };\r\n\r\n $scope.currentUser = $rootScope.Profile.Fullname;\r\n $scope.currentDay = moment().format();\r\n\r\n\r\n}];\r\n\r\nexport default view_lease;\r\n","import * as angular from 'angular';\r\nimport {initEdit} from \"../../../../core/common/common-functions\";\r\n\r\nvar modal_create_crpp_subproject = ['$scope', '$rootScope', '$uibModalInstance', 'DatasetService', 'SubprojectService', 'ServiceUtilities',\r\n '$timeout', '$location', '$anchorScroll', '$document',\r\n function ($scope, $rootScope, $uibModalInstance, DatasetService, SubprojectService, ServiceUtilities,\r\n $timeout, $location, $anchorScroll, $document) {\r\n console.log(\"Inside ModalCreateSubprojectCtrl...\");\r\n\r\n initEdit();\r\n\r\n $scope.header_message = \"Create new CRPP project\";\r\n $rootScope.crppProjectName = $scope.crppProjectName = \"\";\r\n $rootScope.projectId = $scope.project.Id;\r\n\r\n $scope.subproject_row = {\r\n StatusId: 0,\r\n //OwningDepartmentId: 1,\r\n };\r\n\r\n\r\n $scope.showOtherAgency = false;\r\n $scope.showOtherProjectProponent = false;\r\n $scope.showOtherCounty = false;\r\n $scope.showCountyOptions = false;\r\n $scope.showAddDocument = true;\r\n\t\t$scope.countyPresent = false;\r\n\r\n\t\tconsole.log(\"$scope is next...\");\r\n\t\tconsole.dir($scope);\r\n\r\n if ($scope.viewSubproject) {\r\n $scope.header_message = \"Edit CRPP project: \" + $scope.viewSubproject.ProjectName;\r\n\r\n\t\t\tconsole.log(\"$scope.viewSubproject is next...\");\r\n\t\t\tconsole.dir($scope.viewSubproject);\r\n\r\n $scope.subproject_row = angular.copy($scope.viewSubproject);\r\n console.log(\"$scope.subproject_row is next...\");\r\n console.dir($scope.subproject_row);\r\n\r\n $scope.showAddDocument = false;\r\n\r\n console.log(\"$scope.subproject_row.Agency = \" + $scope.subproject_row.Agency);\r\n var keepGoing = true;\r\n var foundIt = false;\r\n //var responseTypeIndex = 0;\r\n\r\n /*\r\n *\tNeed to redo the Agency, Project Proponent, and County\r\n *\r\n */\r\n // Check the Agency\r\n /*angular.forEach($scope.agencyList, function(option){\r\n //console.log(\"option.Label = x\" + option.Label + \"x, $scope.subproject_row.Agency = x\" + $scope.subproject_row.Agency + \"x.\");\r\n if ((keepGoing) && (option.Label === $scope.subproject_row.Agency))\r\n {\r\n //console.log(\"option.Label = \" + option.Label);\r\n //console.log(\"Found the Agency...\");\r\n foundIt = true;\r\n keepGoing = false;\r\n }\r\n //responseTypeIndex++;\r\n });\r\n\r\n if (!foundIt)\r\n {\r\n console.log(\"Value of Agency is not in the list...\");\r\n $scope.subproject_row.OtherAgency = $scope.subproject_row.Agency;\r\n $scope.subproject_row.Agency = \"Other\";\r\n $scope.showOtherAgency = true;\r\n }\r\n */\r\n if ((typeof $scope.subproject_row.OtherAgency !== 'undefined') && ($scope.subproject_row.OtherAgency !== null))\r\n $scope.showOtherAgency = true;\r\n\r\n /*\r\n keepGoing = true;\r\n foundIt = false;\r\n // Check the Project Proponent Note: We use the same list as for the Agency.\r\n console.log(\"$scope.subproject_row.ProjectProponent = \" + $scope.subproject_row.ProjectProponent);\r\n angular.forEach($scope.agencyList, function(option){\r\n //console.log(\"option.Label = x\" + option.Label + \"x, $scope.subproject_row.ProjectProponent = x\" + $scope.subproject_row.ProjectProponent + \"x.\");\r\n if ((keepGoing) && (option.Label === $scope.subproject_row.ProjectProponent))\r\n {\r\n //console.log(\"option.Label = \" + option.Label);\r\n //console.log(\"Found the ProjectProponent...\");\r\n foundIt = true;\r\n keepGoing = false;\r\n }\r\n //responseTypeIndex++;\r\n });\r\n\r\n if (!foundIt)\r\n {\r\n console.log(\"Value of ProjectProponent is not in the list...\");\r\n $scope.subproject_row.OtherProjectProponent = $scope.subproject_row.ProjectProponent;\r\n $scope.subproject_row.ProjectProponent = \"Other\";\r\n $scope.showOtherProjectProponent = true;\r\n }\r\n */\r\n if ((typeof $scope.subproject_row.OtherProjectProponent !== 'undefined') && ($scope.subproject_row.OtherProjectProponent !== null))\r\n $scope.showOtherProjectProponent = true;\r\n\r\n /*\r\n keepGoing = true;\r\n foundIt = false;\r\n // Check the County\r\n console.log(\"$scope.subproject_row.County = \" + $scope.subproject_row.County);\r\n\r\n // Copy the array into a string.\r\n var strCounty = \"\";\r\n angular.forEach($scope.subproject_row.County, function(item){\r\n strCounty += item + \",\";\r\n });\r\n console.log(\"strCounty = \" + strCounty);\r\n\r\n // Remove the trailing comma.\r\n strCounty = strCounty.substring(0, strCounty.length - 1);\r\n console.log(\"strCounty = \" + strCounty);\r\n */\r\n\r\n\t\t\tconsole.log(\"$scope.subproject_row.strCounties = \" + $scope.subproject_row.strCounties);\r\n\t\t\tconsole.log(\"$scope.subproject_row.County is next...\");\r\n\t\t\tconsole.dir($scope.subproject_row.County);\r\n\r\n // Now, strip off the \"[]\".\r\n if ((typeof $scope.subproject_row.County !== 'undefined') && ($scope.subproject_row.County !== null)) {\r\n var strCounty = $scope.subproject_row.County;\r\n strCounty = strCounty.replace(/[\"\\[\\]]+/g, '');\r\n console.log(\"strCounty = \" + strCounty);\r\n $scope.subproject_row.County = strCounty;\r\n console.log(\"$scope.subproject_row.County = \" + $scope.subproject_row.County);\r\n\r\n $scope.subproject_row.strCounties = strCounty;\r\n }\r\n\r\n if ((typeof $scope.subproject_row.OtherCounty !== 'undefined') && ($scope.subproject_row.OtherCounty !== null))\r\n $scope.showOtherCounty = true;\r\n\r\n\r\n // Now convert our string to an array, to compare with the countyList.\r\n /*var aryCounties = $scope.subproject_row.County.split(\",\");\r\n console.log(\"aryCounties is next...\");\r\n console.dir(aryCounties);\r\n\r\n angular.forEach(aryCounties, function(county){\r\n //console.log(\"option.Label = x\" + option.Label + \"x, $scope.subproject_row.County = x\" + $scope.subproject_row.County + \"x.\");\r\n angular.forEach($scope.countyList, function(option){\r\n if ((keepGoing) && (option.Label === county))\r\n {\r\n //console.log(\"option.Label = \" + option.Label);\r\n console.log(\"Found county: \" + county);\r\n foundIt = true;\r\n keepGoing = false;\r\n }\r\n });\r\n if (!foundIt)\r\n {\r\n\r\n }\r\n });\r\n */\r\n\r\n /*angular.forEach($scope.countyList, function(option){\r\n //console.log(\"option.Label = x\" + option.Label + \"x, $scope.subproject_row.County = x\" + $scope.subproject_row.County + \"x.\");\r\n if ((keepGoing) && (option.Label === $scope.subproject_row.County))\r\n {\r\n //console.log(\"option.Label = \" + option.Label);\r\n //console.log(\"Found the County...\");\r\n foundIt = true;\r\n keepGoing = false;\r\n }\r\n });\r\n\r\n\r\n if (!foundIt)\r\n {\r\n console.log(\"Value of County is not in the list...\");\r\n $scope.subproject_row.OtherCounty = $scope.subproject_row.County;\r\n $scope.subproject_row.County = \"Other\";\r\n $scope.showOtherCounty = true;\r\n }\r\n */\r\n\r\n\r\n\r\n // First convert our county string into an array.\r\n /*var strCounty = $scope.subproject_row.County;\r\n console.log(\"strCounty = \" + strCounty);\r\n\r\n strCounty = strCounty.substring(1, strCounty.length -1);\r\n console.log(\"strCounty = \" + strCounty);\r\n\r\n strCounty = strCounty.replace(/[\"]+/g, '');\r\n console.log(\"strCounty = \" + strCounty);\r\n\r\n var aryCounty = strCounty.split(\",\");\r\n console.log(\"aryCounty is next...\");\r\n console.dir(aryCounty);\r\n\r\n //var result = document.getElementsByTagName(\"select\");\r\n //var result = document.getElementById(\"County\");\r\n //console.dir(result);\r\n var c = 0;\r\n angular.forEach(result, function(item){\r\n console.log(item[c].innerHTML);\r\n c++;\r\n });\r\n\r\n var wrappedResult = angular.element(result);\r\n console.dir(wrappedResult);\r\n angular.forEach(element.find('select'), function(node)\r\n {\r\n if (node.Id === 'County')\r\n console.log(\"Found County select...\");\r\n\r\n });\r\n\r\n var counties = angular.element(\"County\").options;\r\n console.log(\"counties is next...\");\r\n console.dir(counties);\r\n angular.forEach(aryCounty, function (county){\r\n for (var i = 0, max = counties.length; i < max; i++)\r\n {\r\n if (counties[i].innerHTML === county)\r\n counties[i].selected = true;\r\n }\r\n\r\n });\r\n $scope.subproject_row.County = aryCounty;\r\n */\r\n /*scope.subproject_row.County = 'undefined';\r\n $scope.subproject_row.County = [];\r\n angular.forEach(aryCounty, function(county){\r\n $scope.subproject_row.County.push(county);\r\n });\r\n */\r\n console.log(\"$scope.subproject_row.County is next...\");\r\n console.dir($scope.subproject_row.County);\r\n\r\n /*angular.forEach($scope.countyList, function (option) {\r\n //console.log(\"option.Label = x\" + option.Label + \"x, $scope.subproject_row.County = x\" + $scope.subproject_row.County + \"x.\");\r\n if ((keepGoing) && (option.Label === $scope.subproject_row.County)) {\r\n //console.log(\"option.Label = \" + option.Label);\r\n //console.log(\"Found the County...\");\r\n foundIt = true;\r\n keepGoing = false;\r\n }\r\n });\r\n angular.forEach($scope.subproject_row.County, function (county) {\r\n if (county === \"Other\")\r\n foundIt = true;\r\n\r\n });\r\n\r\n if (!foundIt) {\r\n console.log(\"Value of County is not in the list...\");\r\n $scope.subproject_row.OtherCounty = $scope.subproject_row.County;\r\n $scope.subproject_row.County = \"Other\";\r\n $scope.showOtherCounty = true;\r\n }\r\n\t\t\t*/\r\n\r\n\t\t\tif ((typeof $scope.subproject_row.strCounties !== 'undefined') && ($scope.subproject_row.strCounties !== null))\r\n\t\t\t{\r\n\t\t\t\t//console.log(\"$scope.subproject_row.Collaborators is next...\");\r\n\t\t\t\t//console.dir($scope.subproject_row.Collaborators);\r\n\r\n\t\t\t\tvar strCounties = $scope.subproject_row.strCounties;\r\n\t\t\t\t//strCounties = strCounties.replace(/(\\r\\n|\\r|\\n)/gm, \"\"); // Remove any newlines\r\n\t\t\t\tstrCounties = strCounties.replace(/[\"\\[\\]]+/g, ''); // Remove any brackets []\r\n\t\t\t\tstrCounties = strCounties.trim();\r\n\t\t\t\tstrCounties += \"\\n\";\r\n\t\t\t\tconsole.log(\"strCounties = \" + strCounties);\r\n\r\n\t\t\t\t//$scope.subproject_row.strCounties = null; // dump the previous contents.\r\n\t\t\t\t$scope.subproject_row.strCounties = strCounties; // reset its value\r\n\t\t\t\t//console.log(\"$scope.subproject_row.strCounties = \" + $scope.subproject_row.strCounties);\r\n\t\t\t\tif ($scope.subproject_row.strCounties.indexOf(\"Other\") > -1)\r\n\t\t\t\t\t$scope.showOtherCollaborators = true;\r\n\r\n\t\t\t\t$scope.subproject_row.strCounties = strCounties;\r\n\r\n\t\t\t}\r\n }\r\n\r\n console.log(\"$scope inside ModalCreateSubprojectCtrl, after initializing, is next...\");\r\n //console.dir($scope);\r\n\r\n $scope.selectAgency = function () {\r\n console.log(\"Inside selectAgency...\");\r\n //console.dir($scope);\r\n console.log(\"$scope.subproject_row is next...\");\r\n console.dir($scope.subproject_row);\r\n\r\n $scope.showCountyOptions = false;\r\n\r\n if ($scope.subproject_row.Agency === \"Other\") {\r\n $scope.showOtherAgency = true;\r\n $scope.subproject_row.OtherAgency = \"\";\r\n }\r\n else {\r\n $scope.showOtherAgency = false;\r\n $scope.subproject_row.OtherAgency = 'undefined';\r\n }\r\n\r\n console.log(\"$scope.showOtherAgency = \" + $scope.showOtherAgency);\r\n };\r\n\r\n /*$scope.agencyChanged = function () {\r\n console.log(\"Inside agencyChanged...\");\r\n console.log(\"$scope.subproject_row is next...\");\r\n console.dir($scope.subproject_row);\r\n if ($scope.subproject_row.Agency === \"Other\")\r\n {\r\n $scope.showOtherAgency = true;\r\n $scope.subproject_row.OtherAgency = \"\";\r\n }\r\n else\r\n $scope.showOtherAgency = false;\r\n $scope.subproject_row.OtherAgency = 'undefined';\r\n\r\n console.log(\"$scope.showOtherAgency = \" + $scope.showOtherAgency);\r\n };\r\n */\r\n\r\n $scope.selectProjectProponent = function () {\r\n console.log(\"Inside selectProjectProponent...\");\r\n console.log(\"$scope.subproject_row is next...\");\r\n console.dir($scope.subproject_row);\r\n\r\n $scope.showCountyOptions = false;\r\n\r\n if ($scope.subproject_row.ProjectProponent === \"Other\") {\r\n $scope.showOtherProjectProponent = true;\r\n $scope.subproject_row.OtherProjectProponent = \"\";\r\n }\r\n else {\r\n $scope.showOtherProjectProponent = false;\r\n $scope.subproject_row.OtherProjectProponent = 'undefined';\r\n }\r\n\r\n console.log(\"$scope.showOtherProjectProponent = \" + $scope.showOtherProjectProponent);\r\n };\r\n\r\n /*$scope.selectCounty = function () {\r\n console.log(\"Inside selectCounty...\");\r\n console.log(\"$scope.subproject_row is next...\");\r\n console.dir($scope.subproject_row);\r\n\r\n var strCounty = $scope.subproject_row.County.toString();\r\n if (strCounty.indexOf(\"Other\") > -1)\r\n {\r\n $scope.showOtherCounty = true;\r\n }\r\n else\r\n {\r\n $scope.showOtherCounty = false;\r\n }\r\n */\r\n\t\t/*if ($scope.subproject_row.County === \"Other\")\r\n\t\t{\r\n\t\t\t$scope.showOtherCounty = true;\r\n\t\t\t$scope.subproject_row.OtherCounty = \"\";\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t$scope.showOtherCounty = false;\r\n\t\t\t$scope.subproject_row.OtherCounty = 'undefined';\r\n\t\t}\r\n\t\t*/\r\n\t\t/*\r\n\t\tconsole.log(\"$scope.showOtherCounty = \" + $scope.showOtherCounty);\r\n\t};\r\n\t*/\r\n\r\n /*$scope.projectProponentChanged = function () {\r\n console.log(\"Inside projectProponentChanged...\");\r\n console.log(\"$scope.viewSubproject is next...\");\r\n console.dir($scope.subproject_row);\r\n if ($scope.subproject_row.ProjectProponent === \"Other\")\r\n $scope.showOtherProjectProponent = true;\r\n else\r\n $scope.showOtherProjectProponent = false;\r\n\r\n console.log(\"$scope.showOtherProjectProponent = \" + $scope.showOtherProjectProponent);\r\n };\r\n */\r\n\r\n\t\t$scope.selectCounty = function () {\r\n\t\t\tconsole.log(\"Inside selectCounty...\");\r\n\t\t\t//console.dir($scope);\r\n\t\t\tconsole.log(\"$scope.subproject_row is next...\");\r\n\t\t\tconsole.dir($scope.subproject_row);\r\n\r\n\t\t\tif ($scope.subproject_row.County === \"Other\")\r\n\t\t\t{\r\n\t\t\t\t$scope.showOtherCounty = true;\r\n\t\t\t\t$scope.subproject_row.OtherCounty = \"\";\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t$scope.showOtherCounty = false;\r\n\t\t\t\t$scope.subproject_row.OtherCounty = 'undefined';\r\n\t\t\t}\r\n\r\n\t\t\tconsole.log(\"$scope.subproject_row.OtherCounty = \" + $scope.subproject_row.OtherCounty);\r\n\t\t};\r\n\r\n $scope.enteredSelectedCounties = function () {\r\n $scope.showCountyOptions = true;\r\n };\r\n\r\n $scope.enteredSomethingElse = function () {\r\n $scope.showCountyOptions = false;\r\n };\r\n\r\n $scope.countyChanged = function () {\r\n console.log(\"Inside countyChanged...\");\r\n console.log(\"$scope.subproject_row is next...\");\r\n console.dir($scope.subproject_row);\r\n\r\n $scope.subproject_row.strCounties = $scope.subproject_row.County.toString();\r\n if ($scope.subproject_row.strCounties.indexOf(\"Other\") > -1) {\r\n $scope.showOtherCounty = true;\r\n }\r\n else {\r\n $scope.showOtherCounty = false;\r\n $scope.subproject_row.OtherCounty = null;\r\n }\r\n\r\n /*if ($scope.subproject_row.County === \"Other\")\r\n $scope.showOtherCounty = true;\r\n else\r\n $scope.showOtherCounty = false;\r\n */\r\n\r\n //$scope.showOtherCounty = false;\r\n //var foundOther = false;\r\n //angular.forEach($scope.subproject_row.County, function(county){\r\n // There is only one entry for \"Other\"\r\n\t\t\t/*if(county === \"Other\")\r\n\t\t\t{\r\n\t\t\t\tfoundOther = true;\r\n\t\t\t\t$scope.showOtherCounty = true\r\n\t\t\t\t$scope.subproject_row.OtherCounty = [];\r\n\t\t\t}\r\n\t\t\t*/\r\n //});\r\n\r\n //if (!foundOther)\r\n //\t$scope.subproject_row.OtherCounty = 'undefined';\r\n\r\n\r\n console.log(\"$scope.showOtherCounty = \" + $scope.showOtherCounty);\r\n };\r\n\r\n /*$scope.checkKeyPress = function(event){\r\n if (event.keyCode === 8) {\r\n console.log(\"Backspace pressed...\");\r\n }\r\n };\r\n */\r\n\r\n\t$scope.addCounty = function() {\r\n\t\tconsole.log(\"+C clicked...\");\r\n\t\tconsole.log(\"$scope.subproject_row.strCounties = \" + $scope.subproject_row.strCounties);\r\n\r\n\t\tif (typeof $scope.subproject_row.strCounties === 'undefined')\r\n\t\t\t$scope.subproject_row.strCounties = \"\";\r\n\r\n\t\t// We will add a new line at the end, so that the string presents well on the page.\r\n\t\tif ($scope.subproject_row.County === \"Other\")\r\n\t\t{\r\n\t\t\t//scope.subproject_row.strCounties += $scope.subproject_row.OtherCounty + \";\\n\";\r\n\t\t\t$scope.subproject_row.strCounties += \"Other;\\n\";\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t$scope.subproject_row.strCounties += $scope.subproject_row.County + \";\\n\";\r\n\t\t}\r\n\r\n\t\tconsole.log(\"$scope.subproject_row.strCounties = \" + $scope.subproject_row.strCounties);\r\n\t};\r\n\r\n\t$scope.removeCounty = function() {\r\n\t\tconsole.log(\"-C clicked...\");\r\n\t\tconsole.log(\"$scope.subproject_row.strCounties before stripping = \" + $scope.subproject_row.strCounties);\r\n\r\n\t\t// First, strip out the new line characters.\r\n\t\t$scope.subproject_row.strCounties = $scope.subproject_row.strCounties.replace(/(\\r\\n|\\r|\\n)/gm, \"\");\r\n\t\tconsole.log(\"$scope.subproject_row.strCounties after stripping = \" + $scope.subproject_row.strCounties);\r\n\r\n\t\t// Note, we still have the trailing semicolon.\r\n\t\t// Convert the string to an array, so that we can easily remove the applicable funding agency from the string.\r\n\t\tvar aryCounties = $scope.subproject_row.strCounties.split(\";\");\r\n\r\n\t\t// Next, get rid of that trailing semicolon.\r\n\t\taryCounties.splice(-1, 1);\r\n\t\tconsole.dir(aryCounties);\r\n\r\n\t\t// Now we can continue with the delete action.\r\n\t\tvar aryCountiesLength = aryCounties.length;\r\n\r\n\t\t// First check if the user entered an \"other\" funder.\r\n\t\tif (($scope.subproject_row.County === \"Other\") && ($scope.subproject_row.OtherCounty))\r\n\t\t{\r\n\t\t\tfor (var i = 0; i < aryCountiesLength; i++)\r\n\t\t\t{\r\n\t\t\t\tconsole.log(\"aryCounties[i] = \" + aryCounties[i]);\r\n\t\t\t\tif (aryCounties[i].indexOf($scope.subproject_row.OtherCounty) > -1)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log(\"Found the item...\");\r\n\t\t\t\t\taryCounties.splice(i,1);\r\n\t\t\t\t\tconsole.log(\"Removed the item.\");\r\n\r\n\t\t\t\t\t$scope.subproject_row.strCounties = \"\";\r\n\t\t\t\t\tconsole.log(\"Wiped $scope.subproject_row.strCounties...\");\r\n\r\n\t\t\t\t\t// Rebuild the string now, adding the semicolon and newline after every line.\r\n\t\t\t\t\tangular.forEach(aryCounties, function(item){\r\n\t\t\t\t\t\t$scope.subproject_row.strCounties += item + \";\\n\";\r\n\t\t\t\t\t\tconsole.log(\"Added item...\");\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// Since we found the item, skip to then end to exit.\r\n\t\t\t\t\ti = aryCountiesLength;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tfor (var i = 0; i < aryCountiesLength; i++)\r\n\t\t\t{\r\n\t\t\t\tconsole.log(\"aryCounties[i] = \" + aryCounties[i]);\r\n\t\t\t\tif (aryCounties[i].indexOf($scope.subproject_row.County) > -1)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log(\"Found the item...\");\r\n\t\t\t\t\taryCounties.splice(i,1);\r\n\t\t\t\t\tconsole.log(\"Removed the item.\");\r\n\r\n\t\t\t\t\t$scope.subproject_row.strCounties = \"\";\r\n\t\t\t\t\tconsole.log(\"Wiped $scope.subproject_row.strCounties...\");\r\n\r\n\t\t\t\t\t// Rebuild the string now, adding the semicolon and newline after every line.\r\n\t\t\t\t\tangular.forEach(aryCounties, function(item){\r\n\t\t\t\t\t\t$scope.subproject_row.strCounties += item + \";\\n\";\r\n\t\t\t\t\t\tconsole.log(\"Added item...\");\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// Since we found the item, skip to then end to exit.\r\n\t\t\t\t\ti = aryCountiesLength;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tconsole.log(\"Finished.\");\r\n\t};\r\n\r\n $scope.save = function () {\r\n console.log(\"Inside ModalCreateSubprojectCtrl, save...\");\r\n\t\t\t//console.log(\"$scope.subproject_row is next...\");\r\n\t\t\t//console.dir($scope.subproject_row);\r\n\r\n $scope.subprojectSave = undefined;\r\n $scope.subprojectSave = [];\r\n $scope.createNewSubproject = false;\r\n\t\t\t$scope.errorMessage = \"\";\r\n\r\n if ((typeof $scope.subproject_row.ProjectName === 'undefined') ||\r\n\t\t\t\t($scope.subproject_row.ProjectName === null) ||\r\n\t\t\t\t($scope.subproject_row.ProjectName.length < 1)\r\n\t\t\t\t)\r\n\t\t\t{\r\n\t\t\t\tconsole.log(\"Project name is empty...\");\r\n\t\t\t\t$scope.errorMessage += \"Project Name cannot be blank! \";\r\n\t\t\t\t$scope.subprojectSave.error = true;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif ((typeof $scope.subproject_row.ProjectLead === 'undefined') || ($scope.subproject_row.ProjectLead === null))\r\n\t\t\t{\r\n\t\t\t\tconsole.log(\"Project Lead is empty...\");\r\n\t\t\t\t$scope.errorMessage += \"Project Lead cannot be blank! \";\r\n\t\t\t\t$scope.subprojectSave.error = true;\r\n\t\t\t}\r\n\r\n //console.dir($scope);\r\n\r\n if (!$scope.subprojectSave.error) {\r\n // Capture the AddDocument flag, before discarding it.\r\n console.log(\"$scope.subproject_row, full is next...\");\r\n console.dir($scope.subproject_row);\r\n\r\n var addDocument = $scope.subproject_row.AddDocument;\r\n $scope.subproject_row.AddDocument = null;\r\n console.log(\"addDocument = \" + addDocument);\r\n console.log(\"$scope.subproject_row, after del is next...\");\r\n console.dir($scope.subproject_row);\r\n\r\n var saveRow = angular.copy($scope.subproject_row);\r\n console.log(\"saveRow is next..\");\r\n console.dir(saveRow);\r\n /* On the form, $scope.subproject_row.Agency is an object, like this: (Id: theId Name: theName)\r\n * The technique used to grab the Agency works on the first click (an improvement).\r\n * Therefore, I (gc) kept the technique, and chose to extract/reset $scope.subproject_row.Agency here in the controller, as just the name.\r\n */\r\n //console.log(\"typeof saveRow.Agency = \" + saveRow.Agency);\r\n //saveRow.Agency = 'undefined';\r\n //saveRow.Agency = $scope.subproject_row.Agency.Name;\r\n //console.log(\"saveRow.Agency = \" + saveRow.Agency);\r\n\r\n // Agency Name: If the user selected Other, we must use the name they supplied in OtherAgency.\r\n // 20160721: Colette said that we need the OtherAgency, OtherProjectProponent, and OtherCounty to have their own columns in the database,\r\n // so that she can easily filter out and determine what \"other\" agencies, Project Proponents, or Counties that CRPP has interacted with.\r\n /*if ((typeof saveRow.OtherAgency !== 'undefined') && (saveRow.OtherAgency !== null) && (saveRow.OtherAgency !== 'undefined'))\r\n {\r\n saveRow.Agency = saveRow.OtherAgency;\r\n saveRow.OtherAgency = null; // Throw this away, because we do not want to save it; no database field or it.\r\n }\r\n */\r\n\r\n // Project Proponent Name: If the user selected Other, we must use the name they supplied in OtherProjectProponent.\r\n /*if ((typeof saveRow.OtherProjectProponent !== 'undefined') && (saveRow.OtherProjectProponent !== null) && (saveRow.OtherProjectProponent !== 'undefined'))\r\n {\r\n saveRow.ProjectProponent = saveRow.OtherProjectProponent;\r\n saveRow.OtherProjectProponent = null; // Throw this away, because we do not want to save it; no database field or it.\r\n }\r\n */\r\n\r\n // County Name: If the user selected Other, we must use the name they supplied in OtherCounty.\r\n //if (saveRow.OtherCounty)\r\n /*if ((typeof saveRow.OtherCounty !== 'undefined') && (saveRow.OtherCounty !== null) && (saveRow.OtherCounty !== 'undefined'))\r\n {\r\n console.log(\"OtherCounty has a value...\");\r\n saveRow.County = saveRow.OtherCounty; // For single select\r\n //saveRow.County.push(saveRow.OtherCounty); // For multiSelect\r\n\r\n saveRow.OtherCounty = null; // Throw this away, because we do not want to save it; no database field or it.\r\n }*/\r\n\r\n // Convert the multiselect (array) values into a json array string.\r\n //saveRow.County = angular.toJson(saveRow.County).toString();\r\n //var strCounty = \"[\";\r\n //saveRow.County = saveRow.strCounties;\r\n //angular.forEach(saveRow.County, function(county){\r\n //\tstrCounty += '\"' + county + '\",'; // Use single-quotes and double-quotes, so that JavaScript does not get confused.\r\n //});\r\n\r\n //console.log(\"strCounty = \" + strCounty);\r\n // Trim the trailing \",\"\r\n //if (strCounty.length > 1)\r\n //\tstrCounty = strCounty.substring(0, strCounty.length -1);\r\n\r\n //strCounty += \"]\";\r\n //saveRow.County = strCounty;\r\n\r\n\r\n saveRow.YearDate = ServiceUtilities.dateTimeNowToStrYYYYMMDD_HHmmSS();\r\n console.log(\"saveRow.TrackingNumber = \" + saveRow.TrackingNumber);\r\n if (saveRow.TrackingNumber) {\r\n // The tracking number exists, but let's verify that is it not just spaces.\r\n var tmpTrackingNumber = saveRow.TrackingNumber;\r\n if ((tmpTrackingNumber !== null) && (tmpTrackingNumber.length > 0)) {\r\n // The tracking number contains something. Replace all the spaces and see what is left.\r\n tmpTrackingNumber = tmpTrackingNumber.replace(\" \", \"\");\r\n }\r\n\r\n if (tmpTrackingNumber.length === 0) {\r\n saveRow.TrackingNumber = saveRow.YearDate\r\n }\r\n }\r\n else {\r\n // The user does not want the TrackingNumber to be set, if they leave it blank.\r\n //saveRow.TrackingNumber = saveRow.YearDate\r\n }\r\n console.log(\"saveRow.TrackingNumber = \" + saveRow.TrackingNumber);\r\n\r\n\t\t\t\t// Counties\r\n\t\t\t\tconsole.log(\"saveRow.strCounties = \" + saveRow.strCounties);\r\n\t\t\t\tconsole.log(\"type of saveRow.strCounties = \" + typeof saveRow.strCounties);\r\n\r\n\t\t\t\tif ((typeof saveRow.strCounties !== 'undefined') &&\r\n\t\t\t\t\t(saveRow.strCounties !== null) &&\r\n\t\t\t\t\t(saveRow.strCounties.length > 0)\r\n\t\t\t\t\t)\r\n\t\t\t\t{\r\n\t\t\t\t\t$rootScope.countyPresent = $scope.countyPresent = true;\r\n\t\t\t\t\tvar strCounties = saveRow.strCounties.replace(/(\\r\\n|\\r|\\n)/gm, \"\"); // Remove all newlines (used for presentation).\r\n\t\t\t\t\tconsole.log(\"strCounties = \" + strCounties);\r\n\t\t\t\t\tvar aryCounties = strCounties.split(\";\"); //\r\n\t\t\t\t\t//strCounties.splice(-1, 1);\r\n\r\n\t\t\t\t\t// $scope.saveRow.County is probably a string right now, so re-define it as an array for the save.\r\n\t\t\t\t\tsaveRow.CountyAry = [];\r\n\r\n\t\t\t\t\tangular.forEach(aryCounties, function(item) {\r\n\t\t\t\t\t\t//After the split on \";\", one of the lines is a newline. We need to watch for and omit that line.\r\n\t\t\t\t\t\tconsole.log(\"item = X\" + item + \"X\");\r\n\t\t\t\t\t\t//item = item.replace(/(\\r\\n|\\r|\\n)/gm, \"\");\r\n\t\t\t\t\t\titem = item.replace(/\\n/g, \"\");\r\n\t\t\t\t\t\tconsole.log(\"item = X\" + item + \"X\");\r\n\r\n\t\t\t\t\t\tif (item.length > 0)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvar countyOption = new Object();\r\n\t\t\t\t\t\t\t// @ts-ignore\r\n\t\t\t\t\t\t\tcountyOption.Id = 0;\r\n\t\t\t\t\t\t\t// @ts-ignore\r\n\t\t\t\t\t\t\tcountyOption.Name = \"\";\r\n\t\t\t\t\t\t\t// @ts-ignore\r\n\t\t\t\t\t\t\tcountyOption.Name = item.trim();\r\n\t\t\t\t\t\t\t// @ts-ignore\r\n\t\t\t\t\t\t\tconsole.log(\"countyOption.Name = \" + countyOption.Name);\r\n\r\n\t\t\t\t\t\t\t//countyOption.ProjectId = $scope.project.Id;\r\n\r\n\t\t\t\t\t\t\tsaveRow.CountyAry.push(countyOption);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t// Convert the array of County objects, to string.\r\n\t\t\t\t\t//saveRow.County = angular.toJson(saveRow.County);\r\n\r\n\t\t\t\t\tsaveRow.strCounties = undefined;\r\n\t\t\t\t\tsaveRow.County = undefined;\r\n\t\t\t\t\tconsole.log(\"saveRow.CountyAry is next...\");\r\n\t\t\t\t\tconsole.dir(saveRow.CountyAry);\r\n\t\t\t\t}\r\n\r\n //if(!saveRow.CompleteDate)\r\n //\tsaveRow.CompleteDate = null;\r\n saveRow.CorrespondenceEvents = undefined;\r\n console.log(\"saveRow is next...\");\r\n console.dir(saveRow);\r\n\t\t\t\t//throw \"Stopping right here...\";\r\n\r\n $scope.saveResults = {};\r\n //console.log(\"$scope is next...\");\r\n //console.dir($scope);\r\n //var promise = SubprojectService.saveSubproject($scope.project.Id, saveRow, $scope.saveResults);\r\n var promise = SubprojectService.saveCrppSubproject($scope.project.Id, saveRow, $scope.saveResults);\r\n\t\t\t\t//$scope.finishAndClose(promise, saveRow);\r\n\t\t\t//}\r\n\t\t//};\r\n\r\n\t\t//$scope.finishAndClose = function (promise, saveRow) {\r\n\r\n\t\t\t\tif (typeof promise !== 'undefined') {\r\n\t\t\t\t\tpromise.$promise.then(function () {\r\n\t\t\t\t\t\t//window.location.reload();\r\n\t\t\t\t\t\tconsole.log(\"promise is next...\");\r\n\t\t\t\t\t\tconsole.dir(promise);\r\n\t\t\t\t\t\t$scope.subprojectId = $rootScope.subprojectId = promise.Id;\r\n\t\t\t\t\t\tconsole.log(\"$scope.subprojectId = \" + $scope.subprojectId);\r\n\r\n\t\t\t\t\t\t//promise.County = saveRow.County;\r\n\t\t\t\t\t\t/*\r\n\t\t\t\t\t\tconsole.log(\"and here is our final new edited subproject_edited:\");\r\n\t\t\t\t\t\t$scope.subproject_edited = promise;\r\n\t\t\t\t\t\tconsole.dir($scope.subproject_edited);\r\n\r\n\t\t\t\t\t\tconsole.log(\"and if we do the extends thing:\")\r\n\t\t\t\t\t\tvar extended = angular.extend({}, saveRow, promise); //empty + saveRow + promise -- in that order\r\n\t\t\t\t\t\tconsole.dir(extended);\r\n\r\n\t\t\t\t\t\t$scope.postSaveSubprojectUpdateGrid($scope.subproject_edited);\r\n\t\t\t\t\t\t*/\r\n\r\n\t\t\t\t\t\t$scope.subproject_row = 'undefined';\r\n\t\t\t\t\t\t$scope.crppProjectName = saveRow.ProjectName;\r\n\r\n\t\t\t\t\t\t//$scope.reloadSubprojects();\r\n\t\t\t\t\t\t$scope.postSaveSubprojectUpdateGrid(promise);\r\n\r\n\t\t\t\t\t\tif (addDocument === \"Yes\") {\r\n\t\t\t\t\t\t\tconsole.log(\"addDocument = Yes...\");\r\n\r\n\t\t\t\t\t\t\t// If the user wishes to add a Correspondence Event right away, we must wait to get the ID of the new subproject, before we can continue.\r\n\t\t\t\t\t\t\t//$scope.reloadSubproject(promise.Id);\r\n\t\t\t\t\t\t\t//var promise2 = $scope.reloadSubproject(promise.Id);\r\n\t\t\t\t\t\t\t//console.log(\"Inside reloadSubproject...\");\r\n\t\t\t\t\t\t\t//SubprojectService.clearSubproject();\r\n\t\t\t\t\t\t\t//$scope.reloadSubproject($scope.subprojectId);\r\n\t\t\t\t\t\t\t$uibModalInstance.dismiss();\r\n\t\t\t\t\t\t\t$scope.openCorrespondenceEventForm(promise, {});\r\n\t\t\t\t\t\t\t//$scope.subproject = SubprojectService.getSubproject(id);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tconsole.log(\"addDocument != Yes\");\r\n\r\n\t\t\t\t\t\t\t// If the user just wants to create the Subproject, we can continue without waiting.\r\n\t\t\t\t\t\t\t//$scope.reloadSubproject($scope.subprojectId);\r\n\t\t\t\t\t\t\t$uibModalInstance.dismiss();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n };\r\n\r\n $scope.cancel = function () {\r\n // If the user clicks on Cancel, we need to grab the contents of the Other... boxes and put it back into the main box.\r\n\r\n // Agency Name: If the user selected Other, we must use the name they supplied in OtherAgency.\r\n if ($scope.subproject_row.OtherAgency) {\r\n $scope.subproject_row.Agency = $scope.subproject_row.OtherAgency;\r\n $scope.subproject_row.OtherAgency = null; // Throw this away, because we do not want to save it; no database field or it.\r\n }\r\n\r\n // Project Proponent Name: If the user selected Other, we must use the name they supplied in OtherProjectProponent.\r\n if ($scope.subproject_row.OtherProjectProponent) {\r\n $scope.subproject_row.ProjectProponent = $scope.subproject_row.OtherProjectProponent;\r\n $scope.subproject_row.OtherProjectProponent = null; // Throw this away, because we do not want to save it; no database field or it.\r\n }\r\n\r\n // County Name: If the user selected Other, we must use the name they supplied in OtherCounty.\r\n if ($scope.subproject_row.OtherCounty) {\r\n $scope.subproject_row.County = $scope.subproject_row.OtherCounty;\r\n $scope.subproject_row.OtherCounty = null; // Throw this away, because we do not want to save it; no database field or it.\r\n }\r\n $scope.subproject_row = 'undefined';\r\n //$scope.reloadSubprojects();\r\n $uibModalInstance.dismiss();\r\n };\r\n /*\r\n $scope.gotoBottom = function (){\r\n // set the location.hash to the id of\r\n // the element you wish to scroll to.\r\n $location.hash('bottom');\r\n\r\n // call $anchorScroll()\r\n $anchorScroll();\r\n };\r\n\r\n $scope.gotoSubprojectsTop = function (){\r\n // set the location.hash to the id of\r\n // the element you wish to scroll to.\r\n console.log(\"Inside gotoSubprojectsTop...\");\r\n //$location.hash('top');\r\n $location.hash('spTop');\r\n\r\n // call $anchorScroll()\r\n $anchorScroll();\r\n };\r\n\r\n $scope.gotoCategory = function (category) {\r\n $location.hash(category);\r\n $anchorScroll();\r\n };\r\n */\r\n }\r\n];\r\n\r\nexport default modal_create_crpp_subproject;\r\n","import * as angular from 'angular';\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar admin_edit_master = ['$scope', '$timeout', '$uibModal', 'DatasetService', 'AdminService', '$routeParams',\r\n\tfunction($scope, $timeout, $uibModal, DatasetService, AdminService, $routeParams){\r\n\r\n\t\t$scope.datastore = DatasetService.getDatastore($routeParams.Id);\r\n\r\n\r\n $scope.datastore.$promise.then(function () {\r\n\t\t\t$scope.datastore.Fields = AdminService.getMasterFields($scope.datastore.Id);\r\n $scope.datastore.Fields.$promise.then(function () {\r\n $scope.activateGrid();\r\n });\r\n });\r\n\r\n\r\n\r\n var EditLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openEditModal(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n $scope.fieldGridOptions = {\r\n rowSelection: 'single',\r\n suppressPropertyNamesCheck: true,\r\n columnDefs:\r\n [\r\n { colId: 'EditLinks', cellRenderer: EditLinksTemplate, width: 120, menuTabs: [] },\r\n { field: 'Name', headerName: 'Name', width: 180, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'Description', headerName: 'Description', cellStyle: { 'white-space': 'normal' }, width: 300, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'Units', headerName: 'Units', width: 200, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'DbColumnName', headerName: 'DbColumnName', width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'DataType', headerName: 'DataType', width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'ControlType', headerName: 'Control Type', width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'PossibleValues', headerName: 'Possible Values', width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'DataSource', headerName: 'Data Source', width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'FieldRoleId', headerName: 'Field Role', width: 100, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'Validation', headerName: 'Master Validation', width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'Rule', headerName: 'Master Rule', width: 250, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n ],\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n\r\n selectedItem: null,\r\n\r\n onSelectionChanged: function (params) {\r\n $scope.fieldGridOptions.selectedItem = angular.copy($scope.fieldGridOptions.api.getSelectedRows()[0]);\r\n $scope.$apply();\r\n }\r\n\r\n };\r\n\r\n $scope.removeMasterField = function(){\r\n if(!confirm(\"Remove field: are you sure? Any data in the table for this column will be deleted and the field removed from all datasets. This cannot be undone.\")){\r\n return;\r\n }\r\n\r\n var removed = AdminService.removeMasterField($scope.datastore.Id, $scope.fieldGridOptions.selectedItem.Id);\r\n removed.$promise.then(function(data){\r\n $scope.datastore.Fields = AdminService.getMasterFields($scope.datastore.Id);\r\n $scope.fieldGridOptions.api.showLoadingOverlay(); //show loading...\r\n $scope.datastore.Fields.$promise.then(function () {\r\n $scope.fieldGridOptions.api.setRowData($scope.datastore.Fields);\r\n });\r\n $scope.fieldGridOptions.selectedItem = null;\r\n }, function(error){\r\n console.dir(error);\r\n });\r\n }\r\n\r\n $scope.activateGrid = function () {\r\n\r\n var ag_grid_div = document.querySelector('#fields-grid')as HTMLElement; //get the container id...\r\n\r\n if (typeof $scope.ag_grid_div === 'undefined')\r\n $scope.ag_grid_div = new Grid(ag_grid_div, $scope.fieldGridOptions); //bind the grid to it.\r\n\r\n $scope.fieldGridOptions.api.showLoadingOverlay(); //show loading...\r\n $scope.fieldGridOptions.api.setRowData($scope.datastore.Fields);\r\n\r\n\r\n };\r\n\r\n $scope.openEditModal = function (a_selection) {\r\n $scope.SaveMessage = null;\r\n $scope.field_to_edit = a_selection;\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/modal-edit-master-field.html',\r\n controller: 'ModalEditMasterFieldCtrl',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_field) {\r\n //replace that field in the grid with the one we got back\r\n $scope.datastore.Fields.forEach(function (existing_field,index) {\r\n if (existing_field.Id == saved_field.Id) {\r\n console.dir(\"found field to replace : \" + existing_field.FieldId);\r\n $scope.datastore.Fields[index] = saved_field;\r\n }\r\n });\r\n\r\n $scope.fieldGridOptions.api.setRowData($scope.datastore.Fields);\r\n $scope.SaveMessage = \"Success.\";\r\n });\r\n };\r\n\r\n $scope.createMasterField = function(){\r\n $scope.SaveMessage = null;\r\n $scope.field_to_edit = { ControlType: 'text', FieldRoleId: 1, DataType: 'string'};\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/modal-edit-master-field.html',\r\n controller: 'ModalEditMasterFieldCtrl',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_field) {\r\n $scope.datastore.Fields.push(saved_field);\r\n $scope.fieldGridOptions.api.setRowData($scope.datastore.Fields);\r\n $scope.SaveMessage = \"Success.\";\r\n });\r\n }\r\n\r\n\t}\r\n];\r\n\r\nexport default admin_edit_master;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {PROJECT_TYPE_BOTACTIONS, PROJECT_TYPE_BOTPROJECTS, PROJECT_TYPE_OEDPROJECTS} from \"../../../../config\";\r\nimport {valueFormatterCurrency, valueFormatterDate} from \"../../../../core/common/common-functions\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar bot_projects = ['$scope', '$route', '$routeParams', '$uibModal', '$location', '$window', '$rootScope', 'BOTService', 'GridService', 'DatasetService','CommonService',\r\n function ($scope, $route, $routeParams, $uibModal, $location, $window, $rootScope, BOTService, GridService, DatasetService, CommonService) {\r\n\r\n $scope.filter_projects = \"All\";\r\n\r\n\t\t$scope.PROJECT_TYPE_BOTACTIONS = PROJECT_TYPE_BOTACTIONS;\r\n\t\t$scope.PROJECT_TYPE_BOTPROJECTS = PROJECT_TYPE_BOTPROJECTS;\r\n\t\t$scope.PROJECT_TYPE_OEDPROJECTS = PROJECT_TYPE_OEDPROJECTS;\r\n\r\n $scope.filterProjects = function(project_type){\r\n\r\n $scope.filter_projects = project_type;\r\n\r\n if($scope.projectsGrid){\r\n $scope.projectsGrid.api.setRowData([]);\r\n $scope.projectsGrid.api.showLoadingOverlay();\r\n $scope.projectsGrid.selectedItem = null;\r\n $scope.objectivesGrid.selectedItem = null;\r\n }\r\n\r\n $scope.projects = BOTService.getBOTProjects(project_type);\r\n\r\n $scope.projects.$promise.then(function(){\r\n //console.dir($scope.projects);\r\n $scope.activateGrid();\r\n $scope.projectsGrid.api.setRowData($scope.projects);\r\n\r\n //GridService.autosizeColumns($scope.projectsGrid);\r\n //console.log(\"done!\")\r\n })\r\n\r\n }\r\n\r\n $scope.showAllProjects = function(){\r\n if($scope.projectsGrid && $scope.projectsGrid.api){\r\n $scope.projectsGrid.api.setRowData([]);\r\n $scope.projectsGrid.api.showLoadingOverlay();\r\n $scope.projectsGrid.selectedItem = null;\r\n $scope.objectivesGrid.selectedItem = null;\r\n }\r\n\r\n $scope.projects = BOTService.getAllBOTProjects();\r\n\r\n $scope.projects.$promise.then(function(){\r\n $scope.activateGrid();\r\n $scope.projectsGrid.api.setRowData($scope.projects);\r\n })\r\n\r\n $scope.filter_projects = \"All\";\r\n\r\n }\r\n\r\n //cool note: the brackets mean it uses the variable in config.js as the value so: 17: \"BOT Actions\"\r\n $scope.projectTypes = {\r\n [PROJECT_TYPE_BOTACTIONS]: \"BOT Actions\",\r\n [PROJECT_TYPE_BOTPROJECTS]: \"BOT Projects\",\r\n [PROJECT_TYPE_OEDPROJECTS]: \"OED Projects\"\r\n }\r\n\r\nconsole.dir($scope.projectTypes);\r\n\r\n var projectsColumnDefs = [\r\n { headerName: \"Type\", field: \"ProjectTypeId\", width: 200, menuTabs: ['filterMenuTab'], filter: true,\r\n\r\n valueFormatter: function(params) {\r\n return $scope.projectTypes[params.value]\r\n },\r\n valueSetter: function(params){\r\n\r\n Object.keys($scope.projectTypes).forEach(function(key){\r\n if($scope.projectTypes[key] == params.newValue){\r\n params.data.ProjectTypeId = key\r\n return true;\r\n }\r\n })\r\n return false;\r\n },\r\n\r\n cellEditor: 'agSelectCellEditor',\r\n cellEditorParams: {\r\n values: Object.values($scope.projectTypes)\r\n }\r\n },\r\n { headerName: \"Priority\", field: \"Priority\", width: 200, menuTabs: ['filterMenuTab'], filter: true,\r\n cellEditor: 'agSelectCellEditor',\r\n cellEditorParams: {\r\n values: [\r\n 'Organizational Excellence',\r\n 'Land Restoration',\r\n 'Comm & Econ Dev',\r\n 'Treaty Rights',\r\n 'Housing',\r\n 'Education',\r\n 'Health & Human',\r\n 'Infrastructure',\r\n 'Transportation',\r\n 'Public Safety'\r\n ]\r\n }\r\n },\r\n { headerName: \"Resolution/Motion\", field: \"Name\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Title\", field: \"Description\", width: 430, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Due Date\", field: \"DueDate\", width: 120, menuTabs: ['filterMenuTab'], filter: true,\r\n valueGetter: function (params) { return moment(params.node.data.DueDate).format('MM/DD/YYYY') },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.DueDate);\r\n },\r\n //cellEditor: 'datePicker',\r\n },\r\n { headerName: \"Budget\", field: \"Budget\", width: 120, menuTabs: ['filterMenuTab'], filter: true,\r\n valueFormatter: function (params) {\r\n return valueFormatterCurrency(params.node.data.Budget);\r\n },\r\n },\r\n { headerName: \"Spending\", field: \"Spending\", width: 120, menuTabs: ['filterMenuTab'], filter: true,\r\n valueFormatter: function (params) {\r\n return valueFormatterCurrency(params.node.data.Spending);\r\n },\r\n },\r\n { headerName: \"Status\", field: \"Status\", width: 120, menuTabs: ['filterMenuTab'], filter: true,\r\n cellEditor: 'agSelectCellEditor',\r\n cellEditorParams: {\r\n values: [\r\n 'Not Started',\r\n 'On Hold',\r\n 'Complete',\r\n 'In Progress'\r\n ]\r\n }\r\n },\r\n { headerName: \"Status Updated\", field: \"LastStatusUpdate\", width: 120, menuTabs: ['filterMenuTab'], filter: true, editable: false,\r\n valueGetter: function (params) { return moment(params.node.data.LastStatusUpdate).format('MM/DD/YYYY') },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.LastStatusUpdate);\r\n },\r\n },\r\n { headerName: \"# Tasks\", width: 100, menuTabs: ['filterMenuTab'], filter: true, editable: false,\r\n valueFormatter: function (params) {\r\n return params.node.data.ProjectObjectives.length;\r\n },\r\n },\r\n\r\n ];\r\n\r\n\r\n $scope.projectsGrid = {\r\n columnDefs: projectsColumnDefs,\r\n rowData: [],\r\n enableSorting: true,\r\n enableFilter: true,\r\n rowSelection: 'single',\r\n editType: 'fullRow',\r\n defaultColDef: {\r\n editable: true,\r\n sortable: true,\r\n resizable: true\r\n },\r\n selectedItem: null,\r\n selectedCell: null,\r\n selectedNode: null,\r\n onSelectionChanged: function (params) {\r\n $scope.projectsGrid.selectedItem = angular.copy($scope.projectsGrid.api.getSelectedRows()[0]);\r\n $scope.projectsGrid.selectedNode = $scope.projectsGrid.api.getSelectedNodes()[0];\r\n\r\n $scope.objectivesGrid.api.setRowData($scope.projectsGrid.selectedItem.ProjectObjectives);\r\n $scope.objectivesGrid.selectedItem = $scope.objectivesGrid.selectedNode = null;\r\n\r\n //set ontrack\r\n $scope.projectsGrid.selectedItem.OnTrack = (moment($scope.projectsGrid.selectedItem.DueDate).isBefore(moment()) && $scope.projectsGrid.selectedItem.Status != \"Complete\") ? \"No\" : \"Yes\";\r\n\r\n //setTimeout(function(){\r\n //GridService.autosizeColumns($scope.objectivesGrid);\r\n //},200);\r\n //console.dir($scope.projectsGrid.selectedItem)\r\n $scope.$apply();\r\n },\r\n //components: {\r\n // datePicker: getDatePicker(),\r\n //},\r\n onRowEditingStopped: function(params){\r\n console.log(\"row editing stopped. save\");\r\n console.dir(params);\r\n $scope.saveProject(params.data);\r\n }\r\n }\r\n\r\n $scope.addProject = function(){\r\n $scope.projects.push({\r\n ProjectObjectives: [],\r\n LastStatusUpdate: moment().format('MM/DD/YYYY')\r\n });\r\n $scope.projectsGrid.api.setRowData($scope.projects);\r\n }\r\n\r\n $scope.saveProject = function(data){\r\n //data.ProjectTypeId = $scope.filter_projects;\r\n data.OrganizationId = 1; //default to CTUIR\r\n var saved = BOTService.saveBOTProject(data);\r\n saved.$promise.then(function(){\r\n $scope.projects.forEach(function(project, index){\r\n if(!project.Id) {\r\n $scope.projects.splice(index, 1, saved);\r\n $scope.projectsGrid.api.setRowData($scope.projects);\r\n }\r\n });\r\n })\r\n }\r\n\r\n //activate the grid once we have the employees back.\r\n $scope.activateGrid = function(){\r\n\r\n //activate the grid\r\n if (!$scope.GridDiv) {\r\n $scope.GridDiv = document.querySelector('#projects-grid');\r\n new Grid($scope.GridDiv, $scope.projectsGrid);\r\n\r\n $scope.ObjectivesGridDiv = document.querySelector('#objectives-grid');\r\n new Grid($scope.ObjectivesGridDiv, $scope.objectivesGrid);\r\n\r\n $scope.ReportsGridDiv = document.querySelector('#reports-grid');\r\n new Grid($scope.ReportsGridDiv, $scope.reportsGrid);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n var objectivesColumnDefs = [\r\n { headerName: \"Objective\", field: \"Name\", width: 300, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Description\", field: \"Description\", width: 350, menuTabs: ['filterMenuTab'], filter: true, cellStyle: {'white-space': 'normal'} },\r\n { headerName: \"Department\", field: \"Department\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Responsible Staff\", field: \"Owner\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Due Date\", field: \"DueDate\", width: 120, menuTabs: ['filterMenuTab'], filter: true, sort: 'asc',\r\n valueGetter: function (params) { return moment(params.node.data.DueDate).format('MM/DD/YYYY') },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.DueDate);\r\n },\r\n //cellEditor: 'datePicker',\r\n },\r\n { headerName: \"Budget\", field: \"Budget\", width: 120, menuTabs: ['filterMenuTab'], filter: true,\r\n valueFormatter: function (params) {\r\n return valueFormatterCurrency(params.node.data.Budget);\r\n },\r\n },\r\n { headerName: \"Spending\", field: \"Spending\", width: 120, menuTabs: ['filterMenuTab'], filter: true,\r\n valueFormatter: function (params) {\r\n return valueFormatterCurrency(params.node.data.Spending);\r\n },\r\n },\r\n { headerName: \"Status\", field: \"Status\", width: 120, menuTabs: ['filterMenuTab'], filter: true,\r\n cellEditor: 'agSelectCellEditor',\r\n cellEditorParams: {\r\n values: [\r\n 'Not Started',\r\n 'On Hold',\r\n 'Complete',\r\n 'In Progress'\r\n ]\r\n }\r\n },\r\n { headerName: \"Status Updated\", field: \"LastUpdated\", width: 120, menuTabs: ['filterMenuTab'], filter: true, editable: false,\r\n valueGetter: function (params) { return moment(params.node.data.LastUpdated).format('MM/DD/YYYY') },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.LastUpdated);\r\n },\r\n },\r\n { headerName: \"Percent Complete\", field: \"PercentComplete\", width: 120, menuTabs: ['filterMenuTab'], filter: true,\r\n cellEditor: 'agSelectCellEditor',\r\n cellEditorParams: {\r\n values: [\r\n 100,\r\n 75,\r\n 50,\r\n 25,\r\n 0\r\n ]\r\n }\r\n },\r\n\r\n\r\n ];\r\n\r\n\r\n $scope.objectivesGrid = {\r\n columnDefs: objectivesColumnDefs,\r\n rowData: [],\r\n enableSorting: true,\r\n enableFilter: true,\r\n rowSelection: 'single',\r\n defaultColDef: {\r\n editable: true,\r\n sortable: true,\r\n resizable: true\r\n },\r\n selectedItem: null,\r\n selectedCell: null,\r\n selectedNode: null,\r\n editType: 'fullRow',\r\n onSelectionChanged: function (params) {\r\n //console.dir(params)\r\n $scope.objectivesGrid.selectedItem = angular.copy($scope.objectivesGrid.api.getSelectedRows()[0]);\r\n $scope.objectivesGrid.selectedNode = $scope.objectivesGrid.api.getSelectedNodes()[0];\r\n\r\n //set ontrack\r\n $scope.objectivesGrid.selectedItem.OnTrack = (moment($scope.objectivesGrid.selectedItem.DueDate).isBefore(moment()) && $scope.objectivesGrid.selectedItem.Status != \"Complete\") ? \"No\" : \"Yes\";\r\n\r\n $scope.reportsGrid.api.setRowData([]);\r\n $scope.reportsGrid.api.showLoadingOverlay();\r\n\r\n if($scope.objectivesGrid.selectedItem.Id)\r\n {\r\n $scope.objectiveReports = BOTService.getProjectObjectiveReports($scope.objectivesGrid.selectedItem.Id);\r\n $scope.objectiveReports.$promise.then(function(){\r\n $scope.reportsGrid.api.setRowData($scope.objectiveReports);\r\n });\r\n }\r\n\r\n $scope.$apply();\r\n },\r\n onRowEditingStopped: function(params){\r\n $scope.saveObjective(params.data);\r\n },\r\n getRowHeight: function (params) {\r\n var comment_length = (!params.data.Description) ? 1 : params.data.Description.length;\r\n var comment_height = 25 * (Math.floor(comment_length / 45) + 1); //base our detail height on the comments field.\r\n return comment_height;\r\n },\r\n //components: {\r\n // datePicker: getDatePicker(),\r\n //},\r\n }\r\n\r\n $scope.addObjective = function(){\r\n $scope.projectsGrid.selectedItem.ProjectObjectives.push({\r\n LastUpdated: moment().format('MM/DD/YYYY'),\r\n ProjectId: $scope.projectsGrid.selectedItem.Id\r\n });\r\n $scope.objectivesGrid.api.setRowData($scope.projectsGrid.selectedItem.ProjectObjectives);\r\n }\r\n\r\n $scope.saveObjective = function(data){\r\n\r\n var saved = BOTService.saveBOTProjectObjective(data);\r\n\r\n saved.$promise.then(function(){\r\n //add to the project objectives\r\n $scope.projects.forEach(function(project, index){\r\n if(project.Id == data.ProjectId){\r\n if(data.Id) { //if there is an Id then go find and replace\r\n project.ProjectObjectives.forEach(function(objective, oindex){\r\n if(objective.Id == data.Id){\r\n project.ProjectObjectives.splice(oindex,1,saved);\r\n $scope.objectivesGrid.api.setRowData(project.ProjectObjectives)\r\n }\r\n });\r\n } else {\r\n project.ProjectObjectives.push(saved);\r\n $scope.objectivesGrid.api.setRowData(project.ProjectObjectives)\r\n }\r\n\r\n }\r\n });\r\n\r\n })\r\n }\r\n\r\n var reportsColumnDefs = [\r\n { headerName: \"Title\", field: \"Title\", width: 300, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Description\", field: \"Description\", width: 350, maxwidth: 400, menuTabs: ['filterMenuTab'], filter: true, cellStyle: {'white-space': 'normal'} },\r\n { headerName: \"Reporter\", field: \"Reporter\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Report Date\", field: \"ReportDateTime\", width: 160, menuTabs: ['filterMenuTab'], filter: true, sort: 'asc',\r\n valueGetter: function (params) { return moment(params.node.data.ReportDateTime).format('MM/DD/YYYY') },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.ReportDateTime);\r\n },\r\n //cellEditor: 'datePicker',\r\n },\r\n ];\r\n\r\n $scope.reportsGrid = {\r\n columnDefs: reportsColumnDefs,\r\n rowData: [],\r\n enableSorting: true,\r\n enableFilter: true,\r\n rowSelection: 'single',\r\n defaultColDef: {\r\n editable: true,\r\n sortable: true,\r\n resizable: true\r\n },\r\n selectedItem: null,\r\n selectedCell: null,\r\n selectedNode: null,\r\n editType: 'fullRow',\r\n onRowEditingStopped: function(params){\r\n $scope.saveReport(params.data);\r\n },\r\n getRowHeight: function (params) {\r\n var comment_length = (!params.data.Description) ? 1 : params.data.Description.length;\r\n var comment_height = 25 * (Math.floor(comment_length / 45) + 1); //base our detail height on the comments field.\r\n return comment_height;\r\n },\r\n }\r\n\r\n $scope.addReport = function(){\r\n $scope.objectiveReports.push({\r\n ReportDateTime: moment().format('MM/DD/YYYY'),\r\n ProjectId: $scope.projectsGrid.selectedItem.Id,\r\n ProjectObjectiveId: $scope.objectivesGrid.selectedItem.Id\r\n });\r\n\r\n $scope.reportsGrid.api.setRowData($scope.objectiveReports);\r\n }\r\n\r\n $scope.saveReport = function(data){\r\n var saved = BOTService.saveProjectObjectiveReport(data);\r\n saved.$promise.then(function(){\r\n $scope.objectiveReports.forEach(function(report, index){\r\n if(!report.Id){\r\n $scope.objectiveReports.splice(index,1,saved);\r\n $scope.reportsGrid.api.setRowData($scope.objectiveReports);\r\n }\r\n })\r\n });\r\n }\r\n\r\n $scope.showAllProjects();\r\n\r\n}];\r\n\r\nexport default bot_projects;\r\n","import * as angular from 'angular';\r\n\r\n//modal to edit master field\r\nvar modal_admin_edit_master_field = ['$scope', '$uibModal','$uibModalInstance','AdminService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, AdminService) {\r\n\r\n $scope.field_to_edit.DatastoreId = $scope.datastore.Id;\r\n\r\n\t\t$scope.save = function () {\r\n\r\n\t\t\tif ($scope.field_to_edit.DbColumnName == undefined || $scope.field_to_edit.Name == undefined) {\r\n\t\t\t\talert(\"Error: Name and DbColumnName are required fields.\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar saved_field = AdminService.saveMasterField($scope.field_to_edit);\r\n\r\n\t\t\t//Tribal CDMS Edit - check DbColumnName for SQL keywords\r\n\t\t\tvar dbcolumnname = $scope.field_to_edit.DbColumnName.toUpperCase();\r\n\r\n\t\t\tif (sql_keywords.includes(dbcolumnname)) {\r\n\r\n\t\t\t\talert(\"Db Column Name \" + dbcolumnname + \" is an SQL keyword. \"\r\n\t\t\t\t\t+ \"Please alter this value slightly (e.g., Prefix_\" + dbcolumnname + \") or use a different column name.\");\r\n\t\t\t}\r\n\t\t\telse {\r\n\r\n\t\t\t\tsaved_field.$promise.then(function () {\r\n\t\t\t\t\t$uibModalInstance.close(saved_field);\r\n\t\t\t\t}, function (error) {\r\n\t\t\t\t\t$scope.SaveMessage = \"Error: \" + error.data.ExceptionMessage;\r\n\t\t\t\t});\r\n\t\t\t};\r\n\r\n\r\n\t\t};\r\n\r\n\t\t$scope.cleanDbColumnName = function () {\r\n\t\t\t$scope.field_to_edit.DbColumnName = $scope.field_to_edit.DbColumnName.replace(/\\s/g, '');\r\n\t\t}\r\n\r\n\t\t$scope.parsePossibleValuesString = function () {\r\n\t\t\ttry {\r\n\t\t\t\t$scope.field_to_edit.Values = angular.fromJson($scope.field_to_edit.PossibleValues);\r\n\t\t\t} catch (exception) {\r\n\t\t\t\t$scope.field_to_edit.Values = exception.message;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t$scope.parsePossibleValuesString();\r\n\r\n\t\t$scope.cancel = function () {\r\n\t\t\t$uibModalInstance.dismiss();\r\n\t\t};\r\n\r\n\t\tvar sql_keywords = [\"ADD\", \"ALL\", \"ALTER\", \"AND\", \"ANY\", \"AS\", \"ASC\", \"AUTHORIZATION\", \"BACKUP\", \"BEGIN\"\r\n\t\t\t, \"BETWEEN\", \"BREAK\", \"BROWSE\", \"BULK\", \"BY\", \"CASCADE\", \"CASE\", \"CHECKPOINT\", \"CLOSE\", \"CLUSTERED\", \"COALESCE\"\r\n\t\t\t,\"COLLATE\", \"COLUMN\", \"COMMIT\", \"COMPUTE\", \"CONTAINS\", \"CONTAINSTABLE\", \"CONTINUE\", \"CONVERT\", \"CREATE\", \"CROSS\"\r\n\t\t\t,\"CURRENT\", \"CURRENT_DATE\", \"CURRENT_TIME\", \"CURRENT_TIMESTAMP\", \"CURRENT_USER\", \"CURSOR\", \"DATABASE\", \"DBCC\", \"DEALLOCATE\"\r\n\t\t\t,\"DECLARE\", \"DELETE\", \"DENY\", \"DESC\", \"DISTINCT\", \"DISTRIBUTED\", \"DOUBLE\", \"DROP\", \"ELSE\", \"END\", \"END-EXEC\", \"ERRLVL\"\r\n\t\t\t,\"ESCAPE\", \"EXCEPT\", \"EXEC\", \"EXECUTE\", \"EXISTS\", \"EXIT\", \"EXTERNAL\", \"FETCH\", \"FILE\", \"FILLFACTOR\", \"FOR\", \"FOREIGN\"\r\n\t\t\t,\"FREETEXT\", \"FREETEXTTABLE\", \"FROM\", \"FULL\", \"FUNCTION\", \"GO\", \"GOTO\", \"GRANT\", \"GROUP\", \"HAVING\", \"HOLDLOCK\", \"IDENTITY\"\r\n\t\t\t,\"IDENTITY_INSERT\", \"IDENTITYCOL\", \"IF\", \"IN\", \"INNER\", \"INSERT\", \"INTERSECT\", \"INTO\", \"IS\", \"JOIN\", \"KEY\", \"KILL\", \"LEFT\"\r\n\t\t\t,\"LIKE\", \"LINENO\", \"NATIONAL\", \"NOCHECK\", \"NONCLUSTERED\", \"NOT\", \"NULL\", \"NULLIF\", \"OF\", \"OFF\", \"OFFSETS\", \"ON\", \"OPEN\"\r\n\t\t\t,\"OPENDATASOURCE\", \"OPENQUERY\", \"OPENROWSET\", \"OPENXML\", \"OPTION\", \"ORDER\", \"OUTER\", \"OVER\", \"PERCENT\", \"PLAN\"\r\n\t\t\t,\"PRINT\", \"PROC\", \"PROCEDURE\", \"PUBLIC\", \"RAISERROR\", \"READ\", \"READTEXT\", \"RECONFIGURE\", \"REPLICATION\", \"RESTORE\"\r\n\t\t\t, \"RESTRICT\", \"RETURN\", \"REVOKE\", \"RIGHT\", \"ROLLBACK\", \"ROWCOUNT\", \"ROWGUIDCOL\", \"RULE\", \"SAVE\", \"SCHEMA\", \"SELECT\"\r\n\t\t\t, \"SESSION_USER\", \"SET\", \"SETUSER\", \"SHUTDOWN\", \"SOME\", \"STATISTICS\", \"SYSTEM_USER\", \"TABLE\", \"TEXTSIZE\", \"THEN\", \"TO\"\r\n\t\t\t, \"TOP\", \"TRAN\", \"TRANSACTION\", \"TRIGGER\", \"TRUNCATE\", \"TSEQUAL\", \"UNION\", \"UPDATE\", \"UPDATETEXT\", \"USE\", \"USER\", \"VALUES\"\r\n\t\t\t, \"VARYING\", \"VIEW\", \"WAITFOR\", \"WHEN\"];\r\n\r\n }\r\n\r\n];\r\n\r\nexport default modal_admin_edit_master_field;\r\n","import {\r\n SharingLevel, SHARINGLEVEL_GROUPREAD,\r\n SHARINGLEVEL_PRIVATE,\r\n SHARINGLEVEL_PUBLICREAD,\r\n SHARINGLEVEL_REFERENCE_LIBRARY\r\n} from \"../../../../config\";\r\nimport {isValidURL} from \"../../../common/common-functions\";\r\n\r\nvar modal_new_link = ['$scope','$uibModalInstance', 'ProjectService', 'Upload',\r\n\tfunction($scope, $uibModalInstance, ProjectService, $upload){\r\n\r\n $scope.header_message = \"Add a new link \" ;\r\n\r\n //options from config.js\r\n $scope.SHARINGLEVEL_PRIVATE = SHARINGLEVEL_PRIVATE;\r\n $scope.SHARINGLEVEL_PUBLICREAD = SHARINGLEVEL_PUBLICREAD;\r\n\t\t$scope.SHARINGLEVEL_GROUPREAD = SHARINGLEVEL_GROUPREAD;\r\n\t\t$scope.SHARINGLEVEL_REFERENCE_LIBRARY = SHARINGLEVEL_REFERENCE_LIBRARY;\r\n\r\n $scope.SharingLevel = SharingLevel;\r\n\r\n $scope.LinkError = false;\r\n\r\n\t\t$scope.save = function(){\r\n console.dir($scope.row);\r\n $scope.ErrorMessage = \"\";\r\n\r\n $scope.validateLink();\r\n if ($scope.LinkError)\r\n return;\r\n\r\n $scope.saving = ProjectService.saveLink($scope.project.Id, $scope.row);\r\n\r\n $scope.saving.$promise.then(function(){\r\n $scope.SaveMessage = \"Success\"\r\n $uibModalInstance.close($scope.saving);\r\n }, function(data){\r\n $scope.ErrorMessage = \"There was a problem saving the link.\";\r\n })\r\n\r\n\t\t};\r\n\r\n\t\t$scope.cancel = function(){\r\n\t\t\t$uibModalInstance.dismiss();\r\n\t\t};\r\n\r\n //validate link URL\r\n $scope.validateLink = function(){\r\n\r\n $scope.LinkError = false;\r\n\r\n if(!isValidURL($scope.row.Link))\r\n $scope.LinkError = \"Please enter a full valid URL (http:// or https:// required)\";\r\n\r\n }\r\n\t}\r\n];\r\n\r\nexport default modal_new_link;\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJlc3JpLW1hcC5jb21wb25lbnQuc2NzcyJ9 */\";","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {orderUserByAlpha} from \"../../../common/common-functions\";\r\n\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar admin_org = ['$scope', '$uibModal', 'CommonService', 'AdminService',\r\n function (scope, $uibModal, CommonService, AdminService) {\r\n\r\n if (!scope.Profile.isAdmin())\r\n angular.rootScope.go(\"/unauthorized\");\r\n\r\n scope.organizations = CommonService.getOrganizations();\r\n\r\n scope.organizations.$promise.then(function(){\r\n\r\n //filter to only those I can admin\r\n if(!scope.Profile.IsSuperAdmin){\r\n var orgsAdministered = [];\r\n scope.organizations.forEach(function(org){\r\n if(scope.Profile.OrganizationId == org.Id){\r\n orgsAdministered.push(org);\r\n }\r\n });\r\n scope.organizations.length = 0;\r\n scope.organizations = scope.organizations.concat(orgsAdministered);\r\n console.dir(orgsAdministered);\r\n console.dir(scope.organizations);\r\n }\r\n\r\n var agColumnDefs = [\r\n { field: 'Name', headerName: 'Name', width: 280, menuTabs: ['filterMenuTab'], filter: true, sort: 'asc'},\r\n { field: 'Description', headerName: 'Description', width: 400, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n ];\r\n\r\n scope.orgGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: agColumnDefs,\r\n rowData: scope.organizations,\r\n selectedItem: null,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n scope.orgGrid.selectedItem = scope.orgGrid.api.getSelectedRows()[0];\r\n scope.selectOrganization();\r\n scope.$apply();\r\n },\r\n onRowDoubleClicked: function(params) {\r\n scope.openOrgModal(scope.orgGrid.selectedItem);\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n var ag_grid_div = document.querySelector('#org-grid') as HTMLElement; //get the container id...\r\n scope.ag_grid = new Grid(ag_grid_div, scope.orgGrid); //bind the grid to it.\r\n\r\n scope.activateGrids();\r\n\r\n });\r\n\r\n scope.activateGrids = function(){\r\n\r\n //groups\r\n var groupColumnDefs = [\r\n { field: 'Name', headerName: 'Name', width: 280, menuTabs: ['filterMenuTab'], filter: true, sort: 'asc'},\r\n { field: 'Description', headerName: 'Description', width: 400, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n { headerName: \"Members\", width: 120, cellRenderer: function(params){\r\n return params.data.Members.length;\r\n }}\r\n ];\r\n\r\n scope.groupGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: groupColumnDefs,\r\n rowData: null,\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n selectedItem: null,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n scope.groupGrid.selectedItem = scope.groupGrid.api.getSelectedRows()[0];\r\n scope.memberGrid.api.setRowData(scope.groupGrid.selectedItem.Members);\r\n scope.$apply();\r\n },\r\n onRowDoubleClicked: function(params) {\r\n scope.openGroupModal(scope.groupGrid.selectedItem);\r\n },\r\n };\r\n\r\n var group_grid_div = document.querySelector('#group-grid') as HTMLElement; //get the container id...\r\n scope.group_grid = new Grid(group_grid_div, scope.groupGrid); //bind the grid to it.\r\n\r\n //departments\r\n var departmentColumnDefs = [\r\n { field: 'Name', headerName: 'Name', width: 280, menuTabs: ['filterMenuTab'], filter: true, sort: 'asc'},\r\n { field: 'Description', headerName: 'Description', width: 400, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n ];\r\n\r\n scope.departmentGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: departmentColumnDefs,\r\n rowData: null,\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n selectedItem: null,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n scope.departmentGrid.selectedItem = scope.departmentGrid.api.getSelectedRows()[0];\r\n scope.$apply();\r\n },\r\n onRowDoubleClicked: function(params) {\r\n scope.openDepartmentModal(scope.departmentGrid.selectedItem);\r\n },\r\n };\r\n\r\n var department_grid_div = document.querySelector('#department-grid') as HTMLElement; //get the container id...\r\n scope.department_grid = new Grid(department_grid_div, scope.departmentGrid); //bind the grid to it.\r\n\r\n //users\r\n var userColumnDefs = [\r\n { field: 'Fullname', headerName: 'Name', width: 280, menuTabs: ['filterMenuTab'], filter: true, sort: 'asc'},\r\n { field: 'Description', headerName: 'Description', width: 400, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n { field: 'Department.Name', headerName: 'Department', width: 150, menuTabs: ['filterMenuTab'], filter: true},\r\n { headerName: \"Groups\", width: 200, filter: true, menuTabs: ['filterMenuTab'],\r\n valueGetter: function(params){\r\n var list = [];\r\n if(!params.data.Groups)\r\n return \"\";\r\n params.data.Groups.forEach(function(item){\r\n list.push(item.Name);\r\n })\r\n return list.join(',');\r\n }\r\n },\r\n { field: 'Email', headerName: 'Notification Email', width: 200, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n { field: 'Cell', headerName: 'Notification Cell', width: 200, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n { headerName: 'Status', width: 150, menuTabs: ['filterMenuTab'], filter: true,\r\n valueGetter: function(params){\r\n return (params.data.Inactive) ? \"Inactive\" : \"Active\"; //1=inactive\r\n }\r\n },\r\n { field: 'LastLogin', headerName: 'Last login', width: 200, menuTabs: ['filterMenuTab'], filter: 'text',\r\n valueGetter: function(params){\r\n return moment(params.data.LastLogin).format(\"MM/DD/YYYY HH:MM\");\r\n }\r\n },\r\n { field: 'Id', headerName: 'Id', width: 80, menuTabs: ['filterMenuTab'], }\r\n ];\r\n\r\n scope.userGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: userColumnDefs,\r\n rowData: null,\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n selectedItem: null,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n scope.userGrid.selectedItem = scope.userGrid.api.getSelectedRows()[0];\r\n scope.$apply();\r\n },\r\n onRowDoubleClicked: function(params) {\r\n scope.openUserModal(scope.userGrid.selectedItem);\r\n },\r\n };\r\n\r\n var user_grid_div = document.querySelector('#user-grid') as HTMLElement; //get the container id...\r\n scope.user_grid = new Grid(user_grid_div, scope.userGrid); //bind the grid to it.\r\n\r\n //admins\r\n var adminColumnDefs = [\r\n { field: 'Fullname', headerName: 'Name', width: 280, menuTabs: ['filterMenuTab'], filter: true, sort: 'asc'},\r\n { field: 'Description', headerName: 'Description', width: 400, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n { headerName: 'Status', width: 150, menuTabs: ['filterMenuTab'], filter: true,\r\n valueGetter: function(params){\r\n return (params.data.Inactive) ? \"Inactive\" : \"Active\"; //1=inactive\r\n }\r\n },\r\n { field: 'LastLogin', headerName: 'Last login', width: 200, menuTabs: ['filterMenuTab'], filter: 'text',\r\n valueGetter: function(params){\r\n return moment(params.data.LastLogin).format(\"MM/DD/YYYY HH:MM\");\r\n }\r\n },\r\n ];\r\n\r\n scope.adminGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: adminColumnDefs,\r\n rowData: null,\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n selectedItem: null,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n scope.adminGrid.selectedItem = scope.adminGrid.api.getSelectedRows()[0];\r\n scope.$apply();\r\n },\r\n onRowDoubleClicked: function(params) {\r\n // Turned the next line off for now. Users should not be able to edit a user\r\n // from the Administrators grid. A user should only be able to add or remove\r\n // a user as an Administrator.\r\n // scope.openAdminModal(scope.adminGrid.selectedItem);\r\n },\r\n };\r\n\r\n var admin_grid_div = document.querySelector('#admin-grid') as HTMLElement; //get the container id...\r\n scope.admin_grid = new Grid(admin_grid_div, scope.adminGrid); //bind the grid to it.\r\n\r\n\r\n //members\r\n\r\n scope.memberGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: userColumnDefs,\r\n rowData: null,\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n selectedItem: null,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n scope.memberGrid.selectedItem = scope.memberGrid.api.getSelectedRows()[0];\r\n scope.$apply();\r\n },\r\n onRowDoubleClicked: function(params) {\r\n scope.openMemberModal(scope.memberGrid.selectedItem);\r\n },\r\n };\r\n\r\n var member_grid_div = document.querySelector('#member-grid') as HTMLElement; //get the container id...\r\n scope.member_grid = new Grid(member_grid_div, scope.memberGrid); //bind the grid to it.\r\n\r\n }\r\n\r\n\r\n scope.selectOrganization = function(){\r\n\r\n scope.departmentGrid.selectedItem = scope.groupGrid.selectedItem = scope.userGrid.selectedItem = scope.adminGrid.selectedItem = scope.memberGrid.selectedItem = null;\r\n scope.departmentGrid.api.showLoadingOverlay(); //setRowData(null);\r\n scope.groupGrid.api.showLoadingOverlay(); //setRowData(null);\r\n scope.userGrid.api.showLoadingOverlay(); //setRowData(null);\r\n scope.adminGrid.api.showLoadingOverlay(); //setRowData(null);\r\n\r\n scope.departments = CommonService.getOrgDepartments(scope.orgGrid.selectedItem.Id);\r\n scope.departments.$promise.then(function(){\r\n scope.departmentGrid.api.setRowData(scope.departments);\r\n })\r\n\r\n scope.groups = CommonService.getOrgGroups(scope.orgGrid.selectedItem.Id);\r\n scope.groups.$promise.then(function(){\r\n scope.groupGrid.api.setRowData(scope.groups);\r\n })\r\n\r\n scope.users = CommonService.getOrgUsers(scope.orgGrid.selectedItem.Id);\r\n scope.users.$promise.then(function(){\r\n scope.userGrid.api.setRowData(scope.users);\r\n })\r\n\r\n scope.admins = CommonService.getOrgAdministrators(scope.orgGrid.selectedItem.Id);\r\n scope.admins.$promise.then(function(){\r\n scope.adminGrid.api.setRowData(scope.admins);\r\n })\r\n\r\n }\r\n\r\n scope.openOrgModal = function(in_item){\r\n scope.SaveMessage = null;\r\n\r\n scope.item = (in_item) ? in_item : {};\r\n scope.itemType = \"Organization\"\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/modal-admin-item.html',\r\n controller: 'ModalAdminItemCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_item) {\r\n if(scope.item.hasOwnProperty('Id')) //edited\r\n {\r\n scope.organizations.forEach(function(item, index){\r\n if(item.Id == saved_item.Id){\r\n angular.extend(item, saved_item);\r\n scope.orgGrid.api.setRowData(scope.organizations);\r\n }\r\n });\r\n } else { //created\r\n scope.organizations.push(saved_item);\r\n scope.orgGrid.api.setRowData(scope.organizations);\r\n }\r\n\r\n scope.SaveMessage = \"Success.\";\r\n }, function(error){\r\n console.dir(error);\r\n scope.ErrorMessage = \"Failed.\";\r\n });\r\n }\r\n\r\n scope.deleteOrganization = function(){\r\n if(!scope.Profile.IsSuperAdmin){\r\n console.log(\"Permission denied.\")\r\n return;\r\n }\r\n\r\n if(scope.departments.length > 0 || scope.groups.length > 0 || scope.users.length > 0 || scope.admins.length > 0){\r\n alert(\"You can only delete empty organizations (first remove all departments, groups, users, and admins)\");\r\n }else {\r\n if(confirm(\"Are you sure you want to delete this organization? It cannot be undone.\")){\r\n var deleted = AdminService.removeOrganization(scope.orgGrid.selectedItem.Id);\r\n deleted.$promise.then(function(){\r\n scope.organizations.forEach(function(dept, index){\r\n if(dept.Id == scope.orgGrid.selectedItem.Id){\r\n scope.organizations.splice(index, 1);\r\n }\r\n })\r\n scope.orgGrid.api.setRowData(scope.organizations);\r\n scope.orgGrid.selectedItem = null;\r\n }, function(error){\r\n console.dir(error);\r\n alert(error.data.InnerException.ExceptionMessage);\r\n })\r\n }\r\n }\r\n }\r\n\r\n scope.deleteDepartment = function(){\r\n if(!scope.Profile.IsSuperAdmin && (!scope.Profile.IsOrganizationAdmin || scope.Profile.OrganizationId != scope.orgGrid.selectedItem.Id)){\r\n console.log(\"Permission denied.\")\r\n return;\r\n }\r\n\r\n\r\n if(confirm(\"You can only delete departments with no users assigned. Are you sure you want to delete this department? It cannot be undone.\")){\r\n var deleted = AdminService.removeDepartment(scope.departmentGrid.selectedItem.Id);\r\n deleted.$promise.then(function(){\r\n scope.departments.forEach(function(dept, index){\r\n if(dept.Id == scope.departmentGrid.selectedItem.Id){\r\n scope.departments.splice(index, 1);\r\n }\r\n })\r\n scope.departmentGrid.api.setRowData(scope.departments);\r\n scope.departmentGrid.selectedItem = null;\r\n }, function(error){\r\n console.dir(error);\r\n alert(error.data.InnerException.ExceptionMessage);\r\n })\r\n }\r\n }\r\n\r\n scope.deleteGroup = function(){\r\n if(!scope.Profile.IsSuperAdmin && (!scope.Profile.IsOrganizationAdmin || scope.Profile.OrganizationId != scope.orgGrid.selectedItem.Id)){\r\n console.log(\"Permission denied.\")\r\n return;\r\n }\r\n\r\n if(scope.groupGrid.selectedItem.Members.length > 0){\r\n alert(\"You can only delete empty groups (first remove all members).\");\r\n }else {\r\n if(confirm(\"Are you sure you want to delete this group? It cannot be undone.\")){\r\n var deleted = AdminService.removeGroup(scope.groupGrid.selectedItem.Id);\r\n deleted.$promise.then(function(){\r\n scope.groups.forEach(function(group, index){\r\n if(group.Id == scope.groupGrid.selectedItem.Id){\r\n scope.groups.splice(index, 1);\r\n }\r\n })\r\n scope.groupGrid.api.setRowData(scope.groups);\r\n scope.groupGrid.selectedItem = null;\r\n }, function(error){\r\n console.dir(error);\r\n alert(error.data.InnerException.ExceptionMessage);\r\n })\r\n }\r\n }\r\n }\r\n\r\n scope.deleteUser = function(){\r\n if(!scope.Profile.IsSuperAdmin && (!scope.Profile.IsOrganizationAdmin || scope.Profile.OrganizationId != scope.orgGrid.selectedItem.Id)){\r\n console.log(\"Permission denied.\")\r\n return;\r\n }\r\n\r\n if(confirm(\"You can only delete users with no activities. Are you sure you want to delete this user? It cannot be undone.\")){\r\n console.log(\"delete user\");\r\n var deleted = AdminService.removeUser(scope.userGrid.selectedItem.Id);\r\n deleted.$promise.then(function(){\r\n scope.users.forEach(function(user, index){\r\n if(user.Id == scope.userGrid.selectedItem.Id){\r\n scope.users.splice(index, 1);\r\n }\r\n })\r\n scope.userGrid.api.setRowData(scope.users);\r\n scope.userGrid.selectedItem = null;\r\n }, function(error){\r\n console.dir(error);\r\n alert(error.data.InnerException.ExceptionMessage);\r\n })\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n scope.openDepartmentModal = function(in_item){\r\n scope.SaveMessage = null;\r\n\r\n scope.item = (in_item) ? in_item : {};\r\n scope.itemType = \"Department\"\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/modal-admin-item.html',\r\n controller: 'ModalAdminItemCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_item) {\r\n if(scope.item.hasOwnProperty('Id')) //edited\r\n {\r\n scope.departments.forEach(function(item, index){\r\n if(item.Id == saved_item.Id){\r\n angular.extend(item, saved_item);\r\n scope.departmentGrid.api.setRowData(scope.departments);\r\n }\r\n });\r\n } else { //created\r\n scope.departments.push(saved_item);\r\n scope.departmentGrid.api.setRowData(scope.departments);\r\n }\r\n\r\n scope.SaveMessage = \"Success.\";\r\n }, function(error){\r\n console.dir(error);\r\n scope.ErrorMessage = \"Failed.\";\r\n });\r\n }\r\n\r\n scope.openGroupModal = function(in_item){\r\n scope.SaveMessage = null;\r\n\r\n scope.item = (in_item) ? in_item : {};\r\n scope.itemType = \"Group\"\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/modal-admin-item.html',\r\n controller: 'ModalAdminItemCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_item) {\r\n if(scope.item.hasOwnProperty('Id')) //edited\r\n {\r\n scope.groups.forEach(function(item, index){\r\n if(item.Id == saved_item.Id){\r\n angular.extend(item, saved_item);\r\n scope.groupGrid.api.setRowData(scope.groups);\r\n }\r\n });\r\n } else { //created\r\n scope.groups.push(saved_item);\r\n scope.groupGrid.api.setRowData(scope.groups);\r\n }\r\n\r\n scope.SaveMessage = \"Success.\";\r\n }, function(error){\r\n console.dir(error);\r\n scope.ErrorMessage = \"Failed.\";\r\n });\r\n }\r\n\r\n scope.openUserModal = function (user) {\r\n\r\n if (user)\r\n scope.user = user;\r\n else\r\n scope.user = {Inactive: 0, OrganizationId: scope.orgGrid.selectedItem.Id};\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/modal-manage-user.html',\r\n controller: 'ModalManageUserCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function(saved_item){\r\n if(scope.user.hasOwnProperty('Id')) //edited\r\n {\r\n scope.users.forEach(function(item, index){\r\n if(item.Id == saved_item.Id){\r\n angular.extend(item, saved_item);\r\n scope.userGrid.api.setRowData(scope.users);\r\n }\r\n });\r\n } else { //created\r\n scope.users.push(saved_item);\r\n\r\n if(saved_item.DepartmentId){ //need to set the dept object\r\n scope.departments.forEach(function(dept){\r\n if(dept.Id == saved_item.DepartmentId){\r\n saved_item.Department = dept;\r\n }\r\n })\r\n }\r\n\r\n scope.users = scope.users.sort(orderUserByAlpha)\r\n scope.userGrid.api.setRowData(scope.users);\r\n }\r\n\r\n });\r\n };\r\n\r\n scope.addMember = function () {\r\n\r\n if(scope.alreadyMember(scope.groupGrid.selectedItem, scope.selectedUserId))\r\n return;\r\n\r\n\t\t\tvar saved_member = AdminService.saveGroupMember(scope.groupGrid.selectedItem.Id, scope.selectedUserId);\r\n saved_member.$promise.then(function () {\r\n scope.groupGrid.selectedItem.Members.push(saved_member);\r\n scope.groupGrid.api.setRowData(scope.groups);\r\n scope.memberGrid.api.setRowData(scope.groupGrid.selectedItem.Members);\r\n scope.setSuccessMessage(\"Success: Added Member\")\r\n }, function (error) {\r\n scope.setErrorMessage(\"Error: \" + error.data.ExceptionMessage);\r\n });\r\n\r\n };\r\n\r\n scope.addAdministrator = function () {\r\n if(scope.alreadyAdmin(scope.selectedUserId))\r\n return;\r\n\r\n var saved_admin = AdminService.saveOrgAdmin(scope.orgGrid.selectedItem.Id, scope.selectedUserId);\r\n saved_admin.$promise.then(function () {\r\n scope.admins.push(saved_admin);\r\n scope.adminGrid.api.setRowData(scope.admins);\r\n scope.setSuccessMessage(\"Success: Added Admin\")\r\n }, function (error) {\r\n scope.setErrorMessage(\"Error: \" + error.data.ExceptionMessage);\r\n });\r\n };\r\n\r\n scope.removeAdministrator = function(){\r\n var removed_admin = AdminService.removeOrgAdmin(scope.orgGrid.selectedItem.Id, scope.adminGrid.selectedItem.Id);\r\n removed_admin.$promise.then(function () {\r\n scope.admins.forEach(function(admin,index){\r\n if(admin.Id == scope.adminGrid.selectedItem.Id){\r\n scope.admins.splice(index,1);\r\n }\r\n });\r\n scope.adminGrid.api.setRowData(scope.admins);\r\n scope.setSuccessMessage(\"Success: Removed Admin\")\r\n }, function (error) {\r\n scope.setErrorMessage(\"Error: \" + error.data.ExceptionMessage);\r\n });\r\n }\r\n\r\n scope.removeMember = function(){\r\n var removed_user = AdminService.removeGroupMember(scope.groupGrid.selectedItem.Id, scope.memberGrid.selectedItem.Id);\r\n removed_user.$promise.then(function () {\r\n scope.groupGrid.selectedItem.Members.forEach(function(member,index){\r\n if(member.Id == scope.memberGrid.selectedItem.Id){\r\n scope.groupGrid.selectedItem.Members.splice(index,1);\r\n }\r\n });\r\n scope.memberGrid.api.setRowData(scope.groupGrid.selectedItem.Members);\r\n scope.setSuccessMessage(\"Success: Removed Member\")\r\n scope.memberGrid.selectedItem = null;\r\n }, function (error) {\r\n scope.setErrorMessage(\"Error: \" + error.data.ExceptionMessage);\r\n });\r\n }\r\n\r\n\r\n scope.setErrorMessage = function(message){\r\n scope.SuccessMessage = null;\r\n scope.ErrorMessage = message;\r\n };\r\n\r\n scope.setSuccessMessage = function(message){\r\n scope.SuccessMessage = message;\r\n scope.ErrorMessage = null;\r\n }\r\n\r\n scope.alreadyMember = function(group, userId){\r\n var isMember = false;\r\n group.Members.forEach(function(user){\r\n if(user.Id == userId){\r\n isMember = true;\r\n };\r\n });\r\n return isMember;\r\n }\r\n\r\n scope.alreadyAdmin = function(userId){\r\n var isMember = false;\r\n scope.admins.forEach(function(user){\r\n if(user.Id == userId){\r\n isMember = true;\r\n };\r\n });\r\n return isMember;\r\n }\r\n\r\n scope.activeUser = function(item){\r\n return item.Inactive != 1;\r\n }\r\n\r\n }\r\n\r\n];\r\n\r\nexport default admin_org;\r\n","declare const d3: any;\r\n\r\nvar snorkelfish_chartservice = [\r\n function(){\r\n\t\t//console.log(\"Inside SnorkelFish_ChartService...\");\r\n var service = {\r\n\r\n \tdataset: \"SnorkelFish\",\r\n\r\n\t\t\tgetChartConfig: function () {\r\n\r\n var options = {\r\n chart: {\r\n type: 'multiBarChart',\r\n height: 230,\r\n width: 500,\r\n x: function (d) { return d.label; },\r\n y: function (d) { return d.value; },\r\n showLabels: true,\r\n showControls: false,\r\n //duration: 500,\r\n labelThreshold: 0.01,\r\n //labelSunbeamLayout: true,\r\n showLegend: false,\r\n yAxis: {\r\n tickFormat: function (d) {\r\n return d3.format(\"~.0\")(d);\r\n },\r\n }\r\n },\r\n title: {\r\n enable: true,\r\n text: 'Fish Count'\r\n },\r\n\r\n };\r\n\r\n return options;\r\n\r\n },\r\n\r\n getChartData: function () {\r\n\r\n var dataCalc = {\r\n 'Total': {}\r\n };\r\n let data = [];\r\n\r\n //count up the total by species\r\n data.forEach(function (row, key) {\r\n\r\n if (row.Species) {\r\n\r\n var num = row.FishCount || 1;\r\n var species = row.Species;\r\n\r\n if (!dataCalc['Total'][species])\r\n dataCalc['Total'][species] = num;\r\n else\r\n dataCalc['Total'][species] += num;\r\n\r\n }\r\n });\r\n\r\n data = [];\r\n\r\n Object.keys(dataCalc).forEach(function (key) {\r\n var the_count = [];\r\n Object.keys(dataCalc[key]).forEach(function (species) {\r\n var val = dataCalc[key][species];\r\n the_count.push({ 'label': species, 'value': val });\r\n });\r\n\r\n data.push({\r\n \"key\": key,\r\n //\"color\": color[sex],\r\n \"values\": the_count\r\n });\r\n });\r\n\r\n return data;\r\n },\r\n\r\n };\r\n\r\n return service;\r\n }\r\n];\r\n\r\nexport default snorkelfish_chartservice;\r\n","var modal_add_operator = ['$scope', '$uibModalInstance', 'LeasingService',\r\n function ($scope, $uibModalInstance, LeasingService) {\r\n\r\n $scope.header_message = \"Edit Operator\";\r\n\r\n //if we're not editing then we are creating a new one\r\n if (!$scope.operator_modal) {\r\n $scope.header_message = \"Add Operator\";\r\n $scope.operator_modal = { };\r\n }\r\n\r\n $scope.operator_modal.LastUpdated = $scope.currentDay;\r\n $scope.operator_modal.UpdatedBy = $scope.currentUser;\r\n\r\n $scope.save = function () {\r\n\r\n var save_result = LeasingService.saveOperator($scope.operator_modal);\r\n\r\n save_result.$promise.then(function () {\r\n $scope.saveOperatorCallback(save_result);\r\n $uibModalInstance.dismiss();\r\n });\r\n };\r\n\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_add_operator;\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport {AppjsComponent} from './appjs.component';\r\nimport {ProfileService} from \"../login/profile.service\";\r\nimport {ConfirmService} from \"../confirm/confirm.service\";\r\n\r\nconst routes: Routes = [\r\n {path: '**', component: AppjsComponent, canActivate: [ProfileService]},\r\n {path: '**', component: AppjsComponent, canActivate: [ConfirmService]},\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppjsRoutingModule { }\r\n","import * as angular from 'angular';\r\nimport {BooleanCellRenderer, BooleanEditor} from \"../../../../core/common/common-functions\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar modal_modify_crop_plan = ['$scope', '$uibModalInstance','LeasingService',\r\n function ($scope, $uibModalInstance, LeasingService) {\r\n\r\n $scope.header_message = \"Modify lease contract: \" + $scope.lease.LeaseNumber;\r\n\r\n $scope.lease_modal = {}; //for changedby\r\n\r\n var cropsColumnDefs = [\r\n { headerName: \"Year\", field: \"LeaseYear\", width: 120, sort: 'asc' },\r\n {\r\n headerName: \"Crop Requirement\", field: \"CropRequirement\", width: 180,\r\n cellEditor: \"select\",\r\n cellEditorParams: { values: $scope.cropOptions.ListValues }\r\n },\r\n {\r\n headerName: \"Alt Crop Option?\", field: \"OptionAlternateCrop\", width: 160,\r\n cellEditor: 'booleanEditor',\r\n cellRenderer: 'booleanCellRenderer',\r\n }\r\n ];\r\n\r\n var cropsRowData = $scope.lease.LeaseCropPlans;\r\n\r\n $scope.cropsGrid = {\r\n columnDefs: cropsColumnDefs,\r\n rowData: cropsRowData,\r\n rowSelection: 'multiple',\r\n components: {\r\n booleanEditor: BooleanEditor,\r\n booleanCellRenderer: BooleanCellRenderer,\r\n },\r\n defaultColDef: {\r\n editable: true,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n }\r\n\r\n $uibModalInstance.opened.then(function () {\r\n setTimeout(function () {\r\n $scope.cropsGridDiv = document.querySelector('#crops-grid-modal');\r\n new Grid($scope.cropsGridDiv, $scope.cropsGrid);\r\n }, 1000)\r\n });\r\n\r\n $scope.save = function () {\r\n console.dir($scope.cropsGrid);\r\n\r\n var lease_save = angular.copy($scope.lease);\r\n\r\n delete lease_save.LeaseComplianceActions;\r\n delete lease_save.LeaseCropPlans;\r\n delete lease_save.LeaseFields;\r\n delete lease_save.LeaseInspections;\r\n delete lease_save.LeaseOperator;\r\n delete lease_save.LeaseProductions;\r\n\r\n lease_save.ChangedReason = $scope.lease_modal.ChangedReason;\r\n\r\n var rowdata = [];\r\n $scope.cropsGrid.api.forEachNode(function (node) {\r\n rowdata.push(node.data);\r\n });\r\n\r\n var saved_lease = LeasingService.saveCropPlan(lease_save, rowdata);\r\n saved_lease.$promise.then(function(){\r\n $scope.saveLeaseCallback(saved_lease);\r\n $uibModalInstance.dismiss();\r\n });\r\n };\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n $scope.addRow = function () {\r\n $scope.cropsGrid.api.updateRowData({ add: [{}] });\r\n };\r\n\r\n $scope.removeRow = function () {\r\n var selected = $scope.cropsGrid.api.getSelectedRows();\r\n $scope.cropsGrid.api.updateRowData({ remove: selected });\r\n };\r\n\r\n\r\n }\r\n];\r\n\r\nexport default modal_modify_crop_plan;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {\r\n DEFAULT_IMPORT_QACOMMENT, FIELD_ROLE_DETAIL,\r\n FIELD_ROLE_HEADER, MAP_ACTIVITY_DATE,\r\n MAP_DO_NOT_MAP_VALUE,\r\n MAP_LOCATION,\r\n serviceUrl\r\n} from \"../../../../config\";\r\nimport {getJsonObjects, orderByAlpha} from \"../../../common/common-functions\";\r\n\r\n\r\nvar dataset_import = ['$scope', '$routeParams', 'ProjectService', 'CommonService', 'SubprojectService', 'DatasetService',\r\n '$location', '$rootScope',\r\n 'Logger', '$route', '$uibModal', 'ChartService', 'ServiceUtilities','Upload',\r\n function ($scope, $routeParams, ProjectService, CommonService, SubprojectService, DatasetService, $location,\r\n $rootScope, Logger, $route, $uibModal, ChartService, ServiceUtilities, Upload) {\r\n\r\n //our upload tool is: https://github.com/danialfarid/ng-file-upload\r\n\r\n $scope.ActivityFields = {\r\n QAComments: DEFAULT_IMPORT_QACOMMENT,\r\n ActivityDate: new Date()\r\n };\r\n\r\n $scope.UploadResults = {};\r\n $scope.UploadResults.errors = [];\r\n $scope.file = $scope.files = null;\r\n $scope.mapping = [];\r\n $scope.ActivityDate = null;\r\n $scope.Time = null;\r\n delete $rootScope.imported_rows;\r\n\r\n $scope.pagemode = \"DatasetImport\";\r\n\r\n $scope.dataset = DatasetService.getDataset($routeParams.Id);\r\n $scope.dataset.$promise.then(function () {\r\n\r\n $scope.mappableFields = $scope.getMappableFields();\r\n\r\n $scope.project = ProjectService.getProject($scope.dataset.ProjectId);\r\n $scope.project.$promise.then(function () {\r\n\r\n //load the config so that we can check if we are supposed to include the habitat sites in this project's locations\r\n try {\r\n $scope.project.Config = ($scope.project.Config) ? angular.fromJson($scope.project.Config) : {};\r\n } catch (e) {\r\n console.error(\"config could not be parsed for project\" + $scope.project.Config);\r\n console.dir(e);\r\n }\r\n\r\n //get unassigned project + assigned dataset locations\r\n $scope.project.Locations = ProjectService.getDatasetLocations($scope.project.Id, $scope.dataset.Id);\r\n\r\n });\r\n });\r\n\r\n //TODO: might not need this at all...\r\n $scope.onUploadFileSelect = function (selected_file) {\r\n //$files: an array of files selected, each file has name, size, and type.\r\n console.dir(selected_file);\r\n\r\n if (!selected_file)\r\n return\r\n\r\n if (selected_file.type !== \"application/vnd.ms-excel\" && selected_file.type !== \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\")\r\n console.warn(\"Not an excel file?\");\r\n\r\n };\r\n\r\n $scope.cancel = function () {\r\n $location.path(\"/activities/\" + $scope.dataset.Id);\r\n };\r\n\r\n $scope.uploadFile = function () {\r\n $scope.loading = true;\r\n console.log(\"serviceUrl = \" + serviceUrl);\r\n if (typeof $scope.project.Id !== 'undefined')\r\n console.log(\"project.Id = \" + $scope.project.Id);\r\n else\r\n console.log(\"project.Id is not set. User should go to dataset activities page first.\");\r\n\r\n console.log(\"startOnLine = \" + $scope.startOnLine);\r\n console.log(\"file...\");\r\n console.dir($scope.file);\r\n $scope.upload = Upload.upload({\r\n url: serviceUrl + '/api/v1/import/uploadimportfile',\r\n method: \"POST\",\r\n data: {\r\n ProjectId: $scope.project.Id,\r\n DatasetId: $scope.dataset.Id,\r\n Title: $scope.file.name,\r\n Description: \"Uploaded file \" + $scope.file.name,\r\n StartOnLine: $scope.startOnLine\r\n },\r\n file: $scope.file,\r\n }).progress(function (evt) {\r\n\r\n console.log('percent: ' + parseInt(String(100.0 * evt.loaded / evt.total)));\r\n }).success(function (data) {\r\n // file is uploaded successfully\r\n\r\n console.log(\"success!\");\r\n //console.dir(data);\r\n\r\n var objdata = angular.fromJson(data);\r\n $scope.UploadResults.Fields = objdata.columns;\r\n $scope.UploadResults.Data = objdata.rows;\r\n //$scope.UploadResults.DataCleaned = [];\r\n //objdata.rows.forEach( function (row){\r\n // console.dir(row);\r\n // $scope.UploadResults.DataCleaned.push(row.ItemArray);\r\n //});\r\n\r\n $scope.loading = false;\r\n $scope.enablePreview = true;\r\n\r\n console.log(\"$scope.UploadResults is next...\");\r\n //console.dir($scope.UploadResults);\r\n\r\n $scope.afterFileUploaded();\r\n\r\n }).error(function (data) {\r\n //$scope.uploadErrorMessage = \"There was a problem uploading your file. Please try again or contact the Helpdesk if this issue continues.\";\r\n var errorStem = \"There was a problem uploading your file.\\n\";\r\n\r\n var errorSpecificPart1 = \"\";\r\n if ($scope.file.name.indexOf(\".xls\") < 0)\r\n errorSpecificPart1 = \"The form says the column headers start on line \" + $scope.startOnLine + \". Is this correct? \";\r\n\r\n //var errorSpecificPart2 = \"Also verify that the date/time entries are in 24-hour format. \";\r\n var errorSpecificPart2 = data.InnerException.ExceptionMessage;\r\n //var errorSpecificPart3 = \"Specific error from backend: \" + $scope.upload.$$state.value.data.InnerException.ExceptionMessage;\r\n //var intCutoffLocation = errorSpecificPart3.indexOf(\" at\"); // Note the space in front (\" at\")\r\n // We want to strip off \" at this file/method\", but we want to keep \"date\".\r\n\r\n //errorSpecificPart3 = errorSpecificPart3.substr(0, intCutoffLocation);\r\n //$scope.uploadErrorMessage = errorStem + errorSpecificPart1 + errorSpecificPart2;\r\n //$scope.uploadErrorMessage = errorStem + errorSpecificPart1 + errorSpecificPart2 + errorSpecificPart3;\r\n $scope.uploadErrorMessage = errorStem + errorSpecificPart1 + errorSpecificPart2;\r\n console.log(\"$scope.upload next...\");\r\n console.dir($scope.upload);\r\n $scope.loading = false;\r\n });\r\n //.then(success, error, progress);\r\n };\r\n\r\n $scope.afterFileUploaded = function(){\r\n\r\n if (Array.isArray($scope.UploadResults.Fields)) {\r\n if ($scope.UploadResults.Fields.length == 0) {\r\n $scope.uploadErrorMessage = \"No columns headers were found in the file. Please make sure the column headers are in the first row of your file and try again.\";\r\n }\r\n\r\n $scope.UploadResults.Fields.forEach(function (field_in) {\r\n var field_in_compare = field_in.trim().toUpperCase();\r\n for (var i = $scope.mappableFields.length - 1; i >= 0; i--) {\r\n\r\n //console.log(\"Comparing: \" + $scope.mappableFields[i].Label.toUpperCase() + \" and \" + field_in_compare);\r\n\r\n if ($scope.mappableFields[i].Label.toUpperCase() === field_in_compare) {\r\n $scope.mapping[field_in] = $scope.mappableFields[i];\r\n return;\r\n }\r\n };\r\n\r\n //only reaches here if we didn't find a label match\r\n $scope.mapping[field_in] = $scope.mappableFields[0];\r\n\r\n });\r\n }\r\n }\r\n\r\n //return the mappable fields (header + details)\r\n $scope.getMappableFields = function()\r\n\t\t{\r\n\t\t\tvar mappableFields = [];\r\n\t\t\tmappableFields.push({ Label: MAP_DO_NOT_MAP_VALUE });\r\n mappableFields.push({ Label: MAP_ACTIVITY_DATE });\r\n mappableFields.push({ Label: MAP_LOCATION });\r\n\r\n $scope.dataset.Fields.sort(orderByAlpha).forEach(function (field, index) {\r\n\r\n //skip Location and ActivityDate because these are special mapped fields above..\r\n if (field.DbColumnName != 'ActivityDate' && field.DbColumnName != 'LocationId') {\r\n field.Label = (field.Field.Units) ? field.Label + \" (\" + field.Field.Units + \")\" : field.Label;\r\n if (field.Field.PossibleValues) {\r\n field.PossibleValues = getJsonObjects(field.Field.PossibleValues);\r\n }\r\n mappableFields.push(field);\r\n }\r\n\r\n });\r\n\r\n\t\t\treturn mappableFields;\r\n\t\t};\r\n\r\n $scope.selectMapColumn = function(column_name) {\r\n console.log(\"selected: \" + column_name);\r\n console.dir($scope.mapping[column_name]);\r\n console.dir($scope.UploadResults);\r\n console.dir($scope.mapping);\r\n };\r\n\r\n\r\n //convert the incoming data rows to a format we can pass on to dataentry\r\n $scope.previewUpload = function () {\r\n $scope.enablePreview = false;\r\n $scope.importing = true;\r\n\r\n //console.dir($scope.mapping);\r\n\r\n //gets all rows with mapped data, ready for the grid\r\n $scope.imported_rows = $scope.getRowsToImport();\r\n\r\n //if we are importing a single activity, we hand off to the edit page,\r\n // otherwise, map the locations and show the multiple-activity grid\r\n\r\n //are we mapping an activitydate+location? If so, then are handling multiple activities\r\n if ($scope.hasFieldMapped(MAP_LOCATION) || $scope.hasFieldMapped(MAP_ACTIVITY_DATE)) {\r\n\r\n $scope.importing = false; //turn off the fishies, they are distracting\r\n\r\n //if ($scope.hasFieldMapped(MAP_LOCATION)) {\r\n $scope.openLocationMappingModal();\r\n //} else {\r\n // $scope.openActivityGridModal();\r\n //}\r\n\r\n } else {\r\n //set rootscope and hand-off to dataset entry form\r\n $rootScope.imported_rows = $scope.imported_rows;\r\n $rootScope.imported_header = $scope.imported_header;\r\n angular.rootScope.go(\"/dataentryform/\" + $scope.dataset.Id);\r\n }\r\n }\r\n\r\n $scope.hasFieldMapped = function (field_mapped) {\r\n var hasFieldMapped = false;\r\n Object.keys($scope.mapping).forEach(function (col) {\r\n var field = $scope.mapping[col];\r\n if (field.Label === field_mapped)\r\n hasFieldMapped = true;\r\n });\r\n return hasFieldMapped;\r\n }\r\n\r\n //returns imported_rows\r\n // with each row as an object, mapped to cdms fields, ready to use as a grid datasource.\r\n $scope.getRowsToImport = function () {\r\n\r\n var imported_rows = [];\r\n $scope.imported_header = {};\r\n var default_activitydate = null; //moment().format('YYYY-MM-DDTHH:mm:ss');\r\n\r\n $scope.UploadResults.Data.forEach( function(data_row){\r\n //console.log(\"data_row is next...\");\r\n\t\t\t\t//console.dir(data_row);\r\n\r\n\t\t\t\t//set default Row QA StatusId\r\n\t\t\t\tvar new_row = {\r\n Activity: { 'ActivityDate' : default_activitydate },\r\n data_row_hasdata: false,\r\n QAStatusId: ($scope.dataset.DefaultRowQAStatusId) ? $scope.dataset.DefaultRowQAStatusId : 1 //default to OK\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// On each row of imported data (data_row), we only want to pull in the fields we have mapped.\r\n\t\t\t\t// Therefore, we loop through $scope.mapping, which contains those fields.\r\n Object.keys($scope.mapping).forEach(function (col) {\r\n var field = $scope.mapping[col];\r\n\r\n //console.dir(field);\r\n //console.dir(col);\r\n if (field.Label !== MAP_DO_NOT_MAP_VALUE) {\r\n\r\n //just ditch if it is an empty value\r\n if (data_row[col] === null || data_row[col] === \"\") {\r\n return;\r\n } else if (field.FieldRoleId == FIELD_ROLE_DETAIL) { //if we have data and we are a detail field then note that we have data. later, if there are no detail data we won't include a detail row.\r\n new_row.data_row_hasdata = true;\r\n }\r\n\r\n // Handle control types*******************************************************\r\n if (field.ControlType == \"number\") {\r\n //if (!isNumber(data_row[col])) {\r\n // console.warn(\"ignoring: \" + field.DbColumnName + \" is a number field but value is not a number: \" + data_row[col]);\r\n // return; //don't set this as a value\r\n //}\r\n new_row[field.DbColumnName] = data_row[col];\r\n }\r\n else if (field.ControlType == \"multiselect\") {\r\n new_row[field.DbColumnName] = [];\r\n\r\n //split on commas -- if any\r\n //console.log(\"typeof data_row[col] = \" + typeof data_row[col]);\r\n if (typeof data_row[col] === 'string') {\r\n var row_items = data_row[col].trim().split(\",\");\r\n\r\n for (var a = 0; a < row_items.length; a++) {\r\n var row_item = row_items[a].trim();\r\n new_row[field.DbColumnName].push(row_item);\r\n }\r\n } else {\r\n console.warn(\"multiselect field with a value that isn't a string: \" + field.DbColumnName);\r\n }\r\n\r\n }\r\n //else if (field.ControlType === \"select\" && data_row[col] && typeof data_row[col] === \"string\") {\r\n else if ((field.ControlType === \"select\" || field.ControlType === \"select-number\" || field.ControlType === \"fisherman-select\")\r\n && data_row[col] && typeof data_row[col] === \"string\") {\r\n //map select value -\r\n\r\n //IF the value actually matches VALUE in PV then map the ID of the PV...\r\n if (field.PossibleValues && !Array.isArray(field.PossibleValues) && typeof field.PossibleValues === 'object') {\r\n if (!field.PossibleValues[data_row[col]]) { //if this fails, the value isn't a key in the PV, so try the value\r\n Object.keys(field.PossibleValues).forEach(function (key) {\r\n if (field.PossibleValues[key] == data_row[col]) {\r\n //console.log(\" found that \" + key + \" is the key for \" + data_row[col]);\r\n data_row[col] = key; //actually CHANGE the incoming value to the KEY value. (fisherman id in place of fisherman name, etc.)\r\n }\r\n });\r\n }\r\n }\r\n\r\n new_row[field.DbColumnName] = data_row[col];\r\n }\r\n else if (field.ControlType == \"datetime\" || field.ControlType == \"time\") {\r\n try {\r\n if (data_row[col]) {\r\n var d = moment(data_row[col]);\r\n\r\n //new_row[field.DbColumnName] = d.format('YYYY-MM-DDTHH:mm:ss'); Old line\r\n // Usually, when the user only enters a time in the Excel file,\r\n // when the time reaches here, the year is 1899 or something weird like that.\r\n // Therefore, if the year is weird, we will grab the YYYY-MM-DD from the\r\n // ActivityDate, and reset the time, using a concatenation of the YYYY-MM-DD\r\n // from ActivityDate, with the HH:mm:ss from the Time value that the user supplied.\r\n if (moment(d).year() <= 1901 )\r\n {\r\n var activityDate = moment(data_row['ActivityDate']);\r\n $scope.ActivityDate = activityDate.format('YYYY-MM-DD');\r\n $scope.Time = null;\r\n $scope.Time = d.format('HH:mm:ss');\r\n $scope.Time = moment($scope.ActivityDate + 'T' + $scope.Time);\r\n new_row[field.DbColumnName] = $scope.Time.format('YYYY-MM-DDTHH:mm:ss');\r\n }\r\n else\r\n new_row[field.DbColumnName] = d.format('YYYY-MM-DDTHH:mm:ss');\r\n\r\n //console.log(\" --- here we are comparing our datetimes... ---\");\r\n //console.log(field.ControlType + \" - \" + field.DbColumnName + \" = \" + data_row[col]);\r\n //console.dir(d.format('YYYY-MM-DDTHH:MM'));\r\n }\r\n }\r\n catch (e) {\r\n console.log(\"problem converting datetime: \" + data_row[col]);\r\n console.dir(e);\r\n }\r\n\r\n }\r\n else //just add the value to the cell\r\n {\r\n if (field.Label == MAP_LOCATION) {\r\n new_row['Activity']['Location'] = data_row[col];\r\n new_row['Activity']['QAStatusId'] = $scope.dataset.DefaultActivityQAStatusId;\r\n } else if (field.Label == MAP_ACTIVITY_DATE) {\r\n new_row['Activity']['ActivityDate'] = data_row[col];\r\n new_row['Activity']['QAStatusId'] = $scope.dataset.DefaultActivityQAStatusId;\r\n } else {\r\n new_row[field.DbColumnName] = data_row[col]; //default mapping\r\n }\r\n\r\n }\r\n\r\n //map to header if its the first one\r\n if (field.FieldRoleId == FIELD_ROLE_HEADER && !$scope.imported_header.hasOwnProperty(field.DbColumnName)) {\r\n $scope.imported_header[field.DbColumnName] = new_row[field.DbColumnName];\r\n //console.log(\"Adding a field to import header: \" + field.DbColumnName);\r\n }\r\n\r\n // If ActivityDate is missing, we must add it.\r\n if (!new_row.Activity.ActivityDate)\r\n {\r\n new_row.Activity.ActivityDate = moment();\r\n }\r\n\r\n //console.dir(new_row);\r\n\r\n }//if is mapped\r\n\r\n }); //iterate mappings\r\n\r\n imported_rows.push(new_row);\r\n\r\n\t\t\t}); //foreach data row\r\n //console.dir(imported_rows);\r\n return imported_rows;\r\n\r\n };\r\n\r\n\r\n $scope.openLocationMappingModal = function () {\r\n console.log(\"Inside dataset-import.ts, $scope.openLocationMappingModal...\");\r\n\r\n $scope.locationsToMap = $scope.getLocationsToMap();\r\n //console.dir($scope.locationsToMap);\r\n $scope.mappedLocations = {}; //the locations will be mapped into here { \"datalocation\" : project.Location object }\r\n\r\n //pre-populate our matches if we can find them...\r\n $scope.locationsToMap.forEach(function (data_location) {\r\n $scope.project.Locations.forEach(function (location) {\r\n if (location.Label == data_location) {\r\n //console.log(\"found one!: \" + location.Label + \" - \" + data_location.Id);\r\n $scope.mappedLocations[data_location] = location.Id;\r\n }\r\n });\r\n });\r\n\r\n //console.dir($scope.mappedLocations);\r\n\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-import/templates/modal-map-locations.html',\r\n controller: 'ModalMapLocationsCtrl',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved) {\r\n\r\n $scope.importing = true;\r\n\r\n //console.dir($scope.mappedLocations);\r\n $scope.imported_rows.forEach(function (data_row) {\r\n\r\n var the_loc = $scope.mappedLocations[data_row['Activity']['Location']];\r\n\r\n if ($scope.mappedLocations.hasOwnProperty(\"Map all rows to:\")) { //this is the case when a location column is not specified but activity date is.\r\n the_loc = $scope.mappedLocations[\"Map all rows to:\"];\r\n }\r\n\r\n data_row['Activity']['LocationId'] = the_loc; //map the location of the incoming data to the one they've mapped\r\n //console.log(\" Mapped location - \" + the_loc);\r\n //console.dir(data_row);\r\n });\r\n\r\n $scope.importing = false;\r\n console.log(\"\")\r\n $scope.openActivityGridModal();\r\n\r\n },\r\n function (dismissed) {\r\n $scope.enablePreview = true;\r\n $scope.importing = false;\r\n });\r\n\r\n };\r\n\r\n\r\n $scope.openActivityGridModal = function () {\r\n console.log(\"Inside dataset-import.ts, $scope.openActivityGridModal...\");\r\n\r\n console.log(\"$scope.dataset.Id (at the top of the function)= \" + $scope.dataset.Id);\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-import/templates/modal-activities-grid.html',\r\n controller: 'ModalActivitiesGridCtrl',\r\n scope: $scope, //very important to pass the scope along...\r\n windowClass: 'modal-large',\r\n backdrop : 'static',\r\n keyboard : false\r\n }).result.then(function (saved) {\r\n $location.path(\"/activities/\" + $scope.dataset.Id);\r\n },\r\n function (dismissed) {\r\n $scope.enablePreview = true;\r\n $scope.importing = false;\r\n });\r\n\r\n };\r\n\r\n\r\n\r\n //iterate all incoming data and make a list of the unique locations\r\n $scope.getLocationsToMap = function () {\r\n\r\n var locations = [];\r\n\r\n //get the mapped field column name\r\n Object.keys($scope.mapping).forEach(function (col) {\r\n var field = $scope.mapping[col];\r\n if (field.Label === MAP_LOCATION) {\r\n //got the field that was mapped to location. now look for unique values in that column:\r\n $scope.UploadResults.Data.forEach(function (data_row) {\r\n var in_location = \"\"+data_row[col];\r\n // @ts-ignore\r\n if (in_location != \"\" && !locations.contains(in_location))\r\n locations.push(in_location);\r\n });\r\n }\r\n });\r\n\r\n //if we have no locations, add a blank one we'll use to map all the activities to\r\n if (locations.length == 0) {\r\n locations.push(\"Map all rows to:\");\r\n }\r\n\r\n //console.dir(locations);\r\n return locations;\r\n\r\n };\r\n\r\n\t}\r\n];\r\n\r\nexport default dataset_import;\r\n","//modal to add/edit permit contact\r\nimport * as angular from 'angular';\r\n\r\n\r\nvar modal_edit_permitcontact = ['$scope', '$uibModal','$uibModalInstance','PermitService','ViolationService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, PermitService, ViolationService) {\r\n\r\n $scope.mode = \"edit\";\r\n\r\n if (!$scope.contact_modal.PersonId) {\r\n $scope.mode = \"new\";\r\n $scope.contact_modal.ContactType = \"Applicant\"; //set default\r\n }\r\n\r\n $scope.save = function () {\r\n\r\n var new_contact = \"\";\r\n\r\n var save_contact = angular.copy($scope.contact_modal);\r\n delete save_contact.Person;\r\n\r\n if(!$scope.contact_modal.PersonId){\r\n alert(\"Please select a contact for this permit\");\r\n return;\r\n }\r\n\r\n if($scope.violations != null)\r\n {\r\n new_contact = ViolationService.saveViolationContact(save_contact);\r\n }\r\n else{\r\n new_contact = PermitService.savePermitContact(save_contact);\r\n }\r\n\r\n\r\n // @ts-ignore\r\n new_contact.$promise.then(function (theContact) {\r\n console.log(\"done and success!\");\r\n\r\n $scope.$parent.refreshContacts(theContact.PermitId);\r\n \r\n $uibModalInstance.close(new_contact);\r\n });\r\n\r\n };\r\n\r\n $scope.personEntry = \"\";\r\n $scope.personMatches = [];\r\n\r\n $scope.Selected = {Person : []};\r\n\r\n $scope.personEntryUpdate = function () {\r\n console.log(\"searching... \" + $scope.Persons.length + \" records for \" + $scope.personEntry);\r\n $scope.personMatches = [];\r\n $scope.Selected.Person.length = 0;\r\n $scope.person_modal = {};\r\n //var regex = RegExp($scope.personEntry, \"gi\"); //global + case insensitive\r\n var strSearchPerson = $scope.personEntry.toLowerCase();\r\n var entryLength = $scope.personEntry.length;\r\n if(entryLength < 2)\r\n return;\r\n\r\n var tmpPerson = \"\";\r\n $scope.Persons.forEach(function (person) {\r\n //if (person.Label == null || person.Label == \"\") {\r\n if (person.FullName == null || person.FullName == \"\") {\r\n return;\r\n }\r\n\r\n // regex.test results were not what we expected for some reason.\r\n // if (regex.test(person.Label)) {\r\n // $scope.personMatches.push(person);\r\n // }\r\n tmpPerson = person.FullName.toLowerCase();\r\n //console.log(\"tmpPerson = \" + tmpPerson);\r\n\r\n if (tmpPerson.indexOf(strSearchPerson) > -1)\r\n {\r\n //console.log(\"Got a match...\");\r\n $scope.personMatches.push(person);\r\n }\r\n });\r\n console.log(\"found \" + $scope.personMatches.length + \" matches\");\r\n };\r\n\r\n $scope.selectPerson = function(){\r\n if(!$scope.Selected)\r\n return;\r\n var person = angular.fromJson($scope.Selected.Person[0]); //this is the trick\r\n $scope.contact_modal.PersonId = person.Id;\r\n $scope.contact_modal.Person = person;\r\n }\r\n\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n\r\n $scope.addPersonModal = function(){\r\n //$scope.person_modal = $scope.contact_modal;\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/contacts/templates/add-person-modal.html',\r\n controller: 'AddPersonModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_person) {\r\n\r\n //saved_person.Label = (saved_person.Organization) ? saved_person.Organization : saved_person.FullName;\r\n //saved_person.Label = saved_person.FullName + \" \" + saved_person.Organization;\r\n saved_person.Label = saved_person.FullName;\r\n\r\n $scope.Persons.push(saved_person);\r\n $scope.contact_modal.PersonId = saved_person.Id;\r\n //$(function () { $(\"#persons-select\").select2(); });\r\n });\r\n }\r\n\r\n\r\n }\r\n];\r\n\r\nexport default modal_edit_permitcontact;\r\n","import * as angular from 'angular';\r\nimport {initEdit} from \"../../../../core/common/common-functions\";\r\n\r\n\r\nvar modal_migrate_olc_event = ['$scope', '$rootScope', '$uibModalInstance', 'DatasetService', 'SubprojectService', 'ServiceUtilities',\r\n '$timeout', '$location', '$anchorScroll', '$document',\r\n function ($scope, $rootScope, $uibModalInstance, DatasetService, SubprojectService, ServiceUtilities,\r\n $timeout, $location, $anchorScroll, $document) {\r\n console.log(\"Inside modal_migrate_olc_event...\");\r\n\r\n\r\n // $showCloseButton = false;\r\n\r\n initEdit();\r\n\r\n $scope.header_message = \"Migrate Event\";\r\n //$rootScope.olcCatalogNumber = $scope.olcCatalogNumber = \"\";\r\n $rootScope.projectId = $scope.project.Id;\r\n\r\n $scope.subproject_row = {\r\n StatusId: 0,\r\n //OwningDepartmentId: 1,\r\n };\r\n\r\n\r\n //$scope.showAddDocument = true;\r\n //$scope.showOtherFacilityHoused = false;\r\n\r\n\t\tconsole.log(\"$scope is next...\");\r\n\t\tconsole.dir($scope);\r\n\r\n if ($scope.viewSubproject) {\r\n $scope.header_message = \"Migrate Source Item\";\r\n\r\n\t\t\tconsole.log(\"$scope.viewSubproject is next...\");\r\n\t\t\tconsole.dir($scope.viewSubproject);\r\n\r\n $scope.subproject_row = angular.copy($scope.viewSubproject);\r\n\r\n console.log(\"$scope.subproject_row is next...\");\r\n console.dir($scope.subproject_row);\r\n\r\n var keepGoing = true;\r\n var foundIt = false;\r\n\r\n }\r\n\r\n console.log(\"$scope inside modal_migrate_olc_event, after initializing, is next...\");\r\n //console.dir($scope);\r\n\r\n $scope.save = function () {\r\n console.log(\"Inside modal_migrate_olc_event, save...\");\r\n\t\t\t//console.log(\"$scope.subproject_row is next...\");\r\n\t\t\t//console.dir($scope.subproject_row);\r\n\r\n $scope.subprojectSave = undefined;\r\n $scope.subprojectSave = [];\r\n $scope.createNewSubproject = false;\r\n\t\t\t$scope.errorMessage = \"\";\r\n\r\n //console.dir($scope);\r\n\r\n if (!$scope.subprojectSave.error) {\r\n console.log(\"$scope.subproject_row, full is next...\");\r\n console.dir($scope.subproject_row);\r\n //console.dir($scope.event_row);\r\n\r\n\t\t\t\t//throw \"Stopping right here...\";\r\n\r\n $scope.saveResults = {};\r\n //console.log(\"$scope is next...\");\r\n //console.dir($scope);\r\n\r\n //console.dir(JSON.parse($scope.event_row.FileAttach));\r\n var strFileLinks = \"\";\r\n if ((typeof $scope.event_row.FileAttach !== 'undefined') && ($scope.event_row.FileAttach !== null)) {\r\n var jParsedFiles = JSON.parse($scope.event_row.FileAttach);\r\n\r\n strFileLinks = \"\";\r\n var intCount = 0;\r\n jParsedFiles.forEach(function (aFile) {\r\n\r\n if (intCount === 0)\r\n strFileLinks += aFile.Name;\r\n else\r\n strFileLinks += \",\" + aFile.Name;\r\n\r\n intCount++;\r\n });\r\n console.log(\"aFile.Name string: \" + strFileLinks);\r\n }\r\n //throw \"Stopping right here...\";\r\n\r\n var promise = SubprojectService.migrateOlcEvent($scope.project.Id, $scope.subproject_row.Id, $scope.event_row, strFileLinks ,$scope.saveResults);\r\n\r\n\t\t\t\tif (typeof promise !== 'undefined') {\r\n\t\t\t\t\tpromise.$promise.then(function () {\r\n\t\t\t\t\t\t//window.location.reload();\r\n\t\t\t\t\t\tconsole.log(\"promise is next...\");\r\n\t\t\t\t\t\tconsole.dir(promise);\r\n\t\t\t\t\t\t//$scope.subprojectId = $rootScope.subprojectId = promise.Id;\r\n\t\t\t\t\t\t//console.log(\"$scope.subprojectId = \" + $scope.subprojectId);\r\n\r\n //if ($scope.event_row.Id === 0) //we saved a new one!\r\n // $scope.postAddOlcEventUpdateGrid(promise.OlcEvent);\r\n //else //we edited one!\r\n // $scope.postEditOlcEventUpdateGrid(promise.OlcEvent);\r\n\r\n $scope.subprojectList = SubprojectService.getOlcSubprojects();\r\n $scope.subprojectList.$promise.then(function () {\r\n $scope.olcAgGridOptions.api.setRowData($scope.subprojectList);\r\n $scope.refreshSubprojectLists();\r\n });\r\n\r\n $scope.postEditOlcEventUpdateGrid(promise.OlcEvent);\r\n\r\n $scope.showCloseButton = true;\r\n\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n };\r\n\r\n $scope.cancel = function () {\r\n\r\n $scope.subproject_row = 'undefined';\r\n\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n $scope.close = function () {\r\n console.log(\"Inside $scope.close...\");\r\n $uibModalInstance.dismiss();\r\n\r\n $scope.modalFile_closeParentItem();\r\n };\r\n\r\n }\r\n];\r\n\r\n\r\nexport default modal_migrate_olc_event;\r\n","import * as angular from 'angular'\r\nimport {PERMIT_DATASETID, PERMITEVENTS_DATASETID} from \"../../../../config\";\r\nimport {BooleanCellRenderer, BooleanEditor} from \"../../../../core/common/common-functions\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar permit_routes = ['$scope', '$route', '$routeParams', '$uibModal', '$location', '$window', '$rootScope', 'PermitService', 'GridService', 'DatasetService',\r\n function ($scope, $route, $routeParams, $uibModal, $location, $window, $rootScope, PermitService, GridService, DatasetService) {\r\n\r\n $rootScope.inModule = \"permits\";\r\n\r\n $scope.clickselect = \"allstaff\";\r\n\r\n if (!$scope.Profile.hasRole(\"Permits\"))\r\n angular.rootScope.go(\"/unauthorized\");\r\n\r\n $scope.refresh = function () {\r\n $scope.permits = PermitService.getRoutingPermits();\r\n\r\n $scope.permits.$promise.then(function () {\r\n $scope.refreshPermits();\r\n if($scope.permitRoutesGrid && $scope.permitRoutesGrid.api)\r\n $scope.permitRoutesGrid.api.setRowData($scope.permits);\r\n });\r\n\r\n };\r\n\r\n $scope.refresh();\r\n\r\n $scope.eventsdataset = DatasetService.getDataset(PERMITEVENTS_DATASETID);\r\n\r\n $scope.dataset = DatasetService.getDataset(PERMIT_DATASETID); //needed for the fee modal fields\r\n $scope.dataset.$promise.then(function () {\r\n var AllColumnDefs = GridService.getAgColumnDefs($scope.dataset);\r\n $scope.permitColumnDefs = AllColumnDefs.HeaderFields;\r\n });\r\n\r\n\r\n //setup our columns for the events modal\r\n $scope.eventsdataset.$promise.then(function () {\r\n var EventColumnDefs = GridService.getAgColumnDefs($scope.eventsdataset);\r\n $scope.permitEventsGrid = {};\r\n $scope.permitEventsGrid.columnDefs = EventColumnDefs.HeaderFields;\r\n });\r\n\r\n\r\n //our cell renderer for the route cells\r\n function RouteCellRenderer() { }\r\n RouteCellRenderer.prototype.init = function (params) {\r\n this.eGui = document.createElement('span');\r\n var code = $scope.getRouteDisplay(params);\r\n this.eGui.innerHTML = code;\r\n };\r\n\r\n RouteCellRenderer.prototype.getGui = function () {\r\n return this.eGui;\r\n };\r\n\r\n //our cell value getter used by the cell renderer\r\n $scope.getRouteDisplay = function (params) {\r\n\r\n var col = params.colDef.field.substring(6); //\"Route_BldgCode\" --> \"BldgCode\"\r\n\r\n var retval = \"\";\r\n\r\n //does the selected \"required routes\" include this column? if not return \"N/A\"\r\n if (!params.node.data.ReviewsRequired.contains(col))\r\n retval = \"N/A\";\r\n\r\n var value = params.node.data[params.colDef.field];\r\n\r\n if (value == \"*\")\r\n retval = \"⚫\";\r\n\r\n if (value == \"+\")\r\n retval = \"⚪\";\r\n\r\n return retval;\r\n };\r\n\r\n function FeeCellRenderer() { }\r\n FeeCellRenderer.prototype.init = function (params) {\r\n this.eGui = document.createElement('span');\r\n var code = (params.node.data.FeePaymentAmount != null) ? \"⚫\" : \"⚪\";\r\n this.eGui.innerHTML = code;\r\n };\r\n\r\n FeeCellRenderer.prototype.getGui = function () {\r\n return this.eGui;\r\n };\r\n\r\n $scope.permitRoutesColDefs = [\r\n { headerName: \"Main Reviewer\", field: \"ReviewedBy\", width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Permit #\", field: \"PermitNumber\", menuTabs: ['filterMenuTab'], width: 150, filter: 'text' },\r\n { headerName: \"Status\", field: \"PermitStatus\", menuTabs: ['filterMenuTab'], width: 150, filter: 'text' },\r\n //{ headerName: \"Routes\", field: \"ReviewsRequired\", menuTabs: ['filterMenuTab'], width: 150 , filter: 'text'},\r\n { headerName: \"Project Name\", field: \"ProjectName\", menuTabs: ['filterMenuTab'], width: 280, filter: 'text' },\r\n { headerName: \"TPO\", field: \"Route_TPO\", menuTabs: ['filterMenuTab'], width: 100, cellRenderer: 'routeCellRenderer' },\r\n { headerName: \"BldgCode\", field: \"Route_BldgCode\", menuTabs: ['filterMenuTab'], width: 100, cellRenderer: 'routeCellRenderer' },\r\n { headerName: \"WRP\", field: \"Route_WRP\", menuTabs: ['filterMenuTab'], width: 100, cellRenderer: 'routeCellRenderer' },\r\n { headerName: \"Env\", field: \"Route_Env\", menuTabs: ['filterMenuTab'], width: 100, cellRenderer: 'routeCellRenderer' },\r\n { headerName: \"PubWrks\", field: \"Route_PubWrks\", menuTabs: ['filterMenuTab'], width: 100, cellRenderer: 'routeCellRenderer' },\r\n { headerName: \"TERO\", field: \"Route_TERO\", menuTabs: ['filterMenuTab'], width: 100, cellRenderer: 'routeCellRenderer' },\r\n { headerName: \"CRPP\", field: \"Route_CRPP\", menuTabs: ['filterMenuTab'], width: 100, cellRenderer: 'routeCellRenderer' },\r\n { headerName: \"Roads\", field: \"Route_Roads\", menuTabs: ['filterMenuTab'], width: 100, cellRenderer: 'routeCellRenderer' },\r\n { headerName: \"Fire\", field: \"Route_Fire\", menuTabs: ['filterMenuTab'], width: 100, cellRenderer: 'routeCellRenderer' },\r\n { headerName: \"Fee Paid\", field: \"FeePaymentAmount\", menuTabs: ['filterMenuTab'], width: 100, cellRenderer: 'feeCellRenderer' },\r\n //{ headerName: \"Issued By\", field: \"IssuedBy\", menuTabs: ['filterMenuTab'], width: 160, filter: true },\r\n { headerName: \"Comments\", field: \"Comments\", menuTabs: ['filterMenuTab'], width: 460 }\r\n ];\r\n\r\n\r\n $scope.permitRoutesGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: $scope.permitRoutesColDefs,\r\n rowData: null,\r\n rowSelection: 'single',\r\n selectedItem: null,\r\n components: {\r\n booleanEditor: BooleanEditor,\r\n booleanCellRenderer: BooleanCellRenderer,\r\n },\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n onCellDoubleClicked: function (params) {\r\n $scope.handleDoubleClick(params);\r\n },\r\n onRowDoubleClicked: function (params) {\r\n //$scope.openPersonModal($scope.permitRoutesGrid.selectedItem.PersonId);\r\n },\r\n onSelectionChanged: function (params) {\r\n $scope.permitRoutesGrid.selectedItem = $scope.row = $scope.permitRoutesGrid.api.getSelectedRows()[0];\r\n //$scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n // @ts-ignore\r\n components: {\r\n 'routeCellRenderer': RouteCellRenderer,\r\n 'feeCellRenderer': FeeCellRenderer\r\n }\r\n }\r\n\r\n $scope.permits.$promise.then(function () {\r\n\r\n //activate the grid with the permits data\r\n $scope.permitRoutesGridDiv = document.querySelector('#permit-routes-grid');\r\n new Grid($scope.permitRoutesGridDiv, $scope.permitRoutesGrid);\r\n $scope.permitRoutesGrid.api.setRowData($scope.permits);\r\n\r\n });\r\n\r\n $scope.handleDoubleClick = function (params) {\r\n var col = params.colDef.field.substring(6); //\"Route_BldgCode\" --> \"BldgCode\"\r\n\r\n if (params.colDef.field == 'PermitNumber' || params.colDef.field == 'ProjectName' || params.colDef.field == 'PermitStatus') {\r\n window.open(\"permits/list?Id=\" + params.data.Id, \"_blank\");\r\n return;\r\n }\r\n\r\n if (col == 'TPO')\r\n return;\r\n\r\n //if they doubleclicked on a cell for required routes\r\n if (params.node.data.ReviewsRequired.contains(col)) {\r\n $scope.handleRouteOpen(params, col);\r\n }\r\n //if they clicked on the fee cell\r\n else if (params.colDef.field == 'FeePaymentAmount') {\r\n $scope.handleFeeOpen(params);\r\n }\r\n\r\n //otherwise just ignore it...\r\n\r\n };\r\n\r\n $scope.handleRouteOpen = function (params, col) {\r\n var value = params.node.data[params.colDef.field];\r\n\r\n console.log(\" Route = \" + col + \" for \" + value);\r\n\r\n //fetch the permit events for this permit\r\n $scope.PermitEvents = PermitService.getPermitEvents($scope.permitRoutesGrid.selectedItem.Id);\r\n\r\n $scope.PermitEvents.$promise.then(function () {\r\n\r\n var new_activity = {\r\n PermitId: $scope.permitRoutesGrid.selectedItem.Id,\r\n EventType: 'Review',\r\n ItemType: col, //BldgCode, WRP, Env, PubWrks, TERO, CRPP, etc.\r\n };\r\n\r\n $scope.row.AdditionalConditions = \"\";\r\n\r\n // required but not yet routed, open a new event of this type\r\n if (!value) {\r\n $scope.openActivityModal(new_activity, \"new_route\");\r\n }\r\n\r\n // routed but not finished OR finished - open the route for edit\r\n if (value == \"+\" || value == \"*\") {\r\n //first find our activity\r\n var existing_activity = null;\r\n $scope.PermitEvents.forEach(function (activity) {\r\n if (activity.EventType == 'Review' && activity.ItemType == col)\r\n existing_activity = activity;\r\n });\r\n\r\n if (existing_activity)\r\n $scope.openActivityModal(existing_activity, \"edit_route\");\r\n else\r\n $scope.openActivityModal(new_activity, \"new_route\"); //this is for convenience in populating the new db... there should always be an existing_activity once the legacy data is populated...\r\n\r\n }\r\n\r\n });\r\n };\r\n\r\n $scope.handleFeeOpen = function (params) {\r\n $scope.openFeeModal(params);\r\n };\r\n\r\n $scope.openFeeModal = function (params) {\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/taskboard/templates/add-fee-modal.html',\r\n controller: 'AddFeeModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_permit) {\r\n $scope.permitRoutesGrid.api.setRowData($scope.permits);\r\n });\r\n };\r\n\r\n\r\n $scope.openActivityModal = function (params, intent) {\r\n\r\n $scope.activity_modal = params;\r\n $scope.intent = intent;\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/list/templates/add-permit-activity-modal.html',\r\n controller: 'PermitActivityModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_activity) {\r\n\r\n //save the permit with the route updated\r\n var save_permit = angular.copy($scope.row);\r\n //console.log(\"updating permit route for: \" + saved_activity.ItemType);\r\n save_permit[\"Route_\" + saved_activity.ItemType] = ($scope.intent == 'new_route') ? \"+\" : \"*\";\r\n save_permit.ReviewsRequired.remove(\"TPO\");\r\n\r\n if (save_permit.AdditionalConditions) {\r\n save_permit.AdditionalConditions = saved_activity.ItemType + \": \" + save_permit.AdditionalConditions;\r\n save_permit.PermitConditions = (save_permit.PermitConditions) ? save_permit.PermitConditions + \"; \" + save_permit.AdditionalConditions : save_permit.AdditionalConditions;\r\n delete save_permit.AdditionalConditions;\r\n }\r\n\r\n save_permit.ReviewsRequired = angular.toJson(save_permit.ReviewsRequired);\r\n save_permit.Zoning = angular.toJson(save_permit.Zoning);\r\n\r\n var permit_promise = PermitService.savePermit(save_permit);\r\n\r\n permit_promise.$promise.then(function () {\r\n\r\n $scope.setupPermit(save_permit);\r\n\r\n $scope.permits.forEach(function (permit) {\r\n if (permit.Id == save_permit.Id) {\r\n angular.extend(permit, save_permit);\r\n //console.log(\" found permit after save -- updated \");\r\n }\r\n });\r\n\r\n $scope.permitRoutesGrid.api.setRowData($scope.permits);\r\n\r\n });\r\n\r\n });\r\n\r\n };\r\n\r\n $scope.refreshPermits = function () {\r\n $scope.permits.forEach(function (permit) {\r\n $scope.setupPermit(permit);\r\n });\r\n };\r\n\r\n $scope.setupPermit = function (permit) {\r\n if (permit.ReviewsRequired)\r\n permit.ReviewsRequired = angular.fromJson(permit.ReviewsRequired);\r\n\r\n if(!Array.isArray(permit.ReviewsRequired))\r\n permit.ReviewsRequired = [];\r\n\r\n permit.ReviewsRequired.push(\"TPO\"); //this route is always required. :)\r\n\r\n permit.Route_TPO = (permit.PermitStatus == 'New Application') ? '+' : '*'; // our internal \"TPO\" status isn't stored in the db, just a grid field.\r\n };\r\n\r\n $scope.changeClickSelect = function () {\r\n if ($scope.clickselect == 'allstaff') {\r\n $scope.permitRoutesGrid.api.setFilterModel(null);\r\n $scope.permitRoutesGrid.api.onFilterChanged();\r\n }\r\n else {\r\n var fc = $scope.permitRoutesGrid.api.getFilterInstance('ReviewedBy');\r\n fc.selectNothing();\r\n fc.selectValue($scope.Profile.Fullname);\r\n $scope.permitRoutesGrid.api.onFilterChanged();\r\n\r\n }\r\n };\r\n\r\n\r\n}];\r\n\r\nexport default permit_routes;\r\n","//page for CRPP Correspondence.\r\nimport * as angular from 'angular';\r\nimport * as moment from 'angular';\r\nimport {\r\n getById, getByName,\r\n getFilesArrayAsList,\r\n getParsedMetadataValues,\r\n getSubprojectFilesArrayAsLinks, valueFormatterDate\r\n} from \"../../../../core/common/common-functions\";\r\nimport {METADATA_ENTITY_CORRESPONDENCE} from \"../../../../config\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar page_correspondence = ['$scope', '$timeout', 'SubprojectService', 'ProjectService', 'DatasetService', 'CommonService', 'UserService',\r\n '$uibModal', 'ServiceUtilities', 'ConvertStatus', '$rootScope', '$routeParams',\r\n function (scope, $timeout, SubprojectService, ProjectService, DatasetService, CommonService, UserService, $uibModal,\r\n ServiceUtilities, ConvertStatus, $rootScope, $routeParams) {\r\n //console.log(\"Inside tab correspondence controller...\");\r\n\r\n scope.dataset = DatasetService.getDataset($routeParams.Id);\r\n\r\n scope.metafields = CommonService.getMetadataProperties(METADATA_ENTITY_CORRESPONDENCE);\r\n scope.metafields.$promise.then(function () {\r\n //console.dir(scope.metafields);\r\n scope.metafields.forEach(function (field) {\r\n field.PossibleValues = getParsedMetadataValues(field.PossibleValues);\r\n });\r\n\r\n });\r\n\r\n scope.getMetafield = function (in_name) {\r\n if (!in_name)\r\n return null;\r\n\r\n var field = getByName(scope.metafields, in_name);\r\n if (!field)\r\n return null;\r\n\r\n return field.PossibleValues;\r\n };\r\n\r\n scope.dataset.$promise.then(function () {\r\n scope.project = ProjectService.getProject(scope.dataset.ProjectId);\r\n\r\n scope.project.$promise.then(function () {\r\n\r\n var ag_grid_div = document.querySelector('#crpp-correspondence-grid') as HTMLElement; //get the container id...\r\n //console.dir(ag_grid_div);\r\n scope.ag_grid = new Grid(ag_grid_div, scope.corrAgGridOptions); //bind the grid to it.\r\n scope.corrAgGridOptions.api.showLoadingOverlay(); //show loading...\r\n\r\n scope.subprojectList = SubprojectService.getSubprojects();\r\n\r\n //if user can edit, unhide the edit links\r\n if ($rootScope.Profile.canEdit(scope.project)) {\r\n scope.corrAgGridOptions.columnApi.setColumnVisible(\"EditLinksMaster\", true);\r\n scope.corrDetailGridOptions.columnDefs.unshift({ colId: 'EditLinksDetail', cellRenderer: EditDetailLinksTemplate, width: 140, menuTabs: [] }); //add this column to the front of the detail grid cols\r\n }\r\n\r\n scope.subprojectList.$promise.then( function () {\r\n scope.corrAgGridOptions.api.setRowData(scope.subprojectList);\r\n scope.refreshSubprojectLists();\r\n });\r\n });\r\n });\r\n\r\n\r\n //this is for the crpp/subproject correspondence tab below - might can move this all out sometime...\r\n var otherAgencyTemplate = function (params) {\r\n if (params.node.data.Agency !== null || params.node.data.OtherAgency !== null) {\r\n return '' + params.node.data.Agency + ''\r\n + ((params.node.data.OtherAgency !== null) ? (' (' + params.node.data.OtherAgency + ')') : ''); //ternery: if otheragency then show it\r\n }\r\n };\r\n\r\n var EventCount = function (params) {\r\n if (params.node.data.CorrespondenceEvents === undefined || params.node.data.CorrespondenceEvents === null)\r\n return '0';\r\n\r\n return '' + params.node.data.CorrespondenceEvents.length;\r\n };\r\n\r\n var EditMasterLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.editCrppSubproject(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var delBtn = document.createElement('a'); delBtn.href = '#'; delBtn.innerHTML = 'Delete';\r\n delBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.removeCrppSubproject(param.data);\r\n });\r\n div.appendChild(delBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var addBtn = document.createElement('a'); addBtn.href = '#'; addBtn.innerHTML = 'Add Event';\r\n addBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.openCorrespondenceEventForm(param.data, {});\r\n });\r\n div.appendChild(addBtn);\r\n\r\n return div;\r\n\r\n };\r\n\r\n\r\n var FileListCellTemplate = function (params) {\r\n var list = '
    ';\r\n\r\n var file_links = getSubprojectFilesArrayAsLinks(scope.project.Id, params.node.data.SubprojectId, params.node.data.EventFiles);\r\n\r\n file_links.forEach(function (link) {\r\n list += '
  • ' + link + '
  • ';\r\n });\r\n\r\n list += '
';\r\n\r\n return list;\r\n };\r\n\r\n\r\n //this template gives the Edit|Delete|Add for the detail.\r\n var EditDetailLinksTemplate = function (detailparam) {\r\n var subproject = getById(scope.subprojectList, detailparam.data.SubprojectId);\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.openCorrespondenceEventForm(subproject, detailparam.data); //parent subproject, detail line.\r\n });\r\n div.appendChild(editBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var delBtn = document.createElement('a'); delBtn.href = '#'; delBtn.innerHTML = 'Delete';\r\n delBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.removeCrppCorrespondenceEvent(subproject, detailparam.data);\r\n });\r\n div.appendChild(delBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var addBtn = document.createElement('a'); addBtn.href = '#'; addBtn.innerHTML = 'Add';\r\n addBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.openCorrespondenceEventForm(subproject, {});\r\n });\r\n div.appendChild(addBtn);\r\n\r\n return div;\r\n\r\n };\r\n\r\n\r\n //grid columns for crpp correspondence tab (master/subprojects)\r\n scope.corrAgColumnDefs = [ //in order the columns will display, by the way...\r\n { colId: 'EditLinksMaster', width: 180, cellRenderer: EditMasterLinksTemplate, menuTabs: [], hide: true },\r\n {\r\n headerName: 'ID',\r\n field: 'Id',\r\n width: 80,\r\n cellRenderer: 'agGroupCellRenderer',\r\n cellRendererParams: { suppressCount: true },\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'number'\r\n },\r\n {\r\n field: 'EffDt',\r\n headerName: 'Updated',\r\n width: 120,\r\n valueGetter: function (params) { return moment(params.node.data.EffDt) }, //date filter needs js date object\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.EffDt);\r\n },\r\n sort: 'desc',\r\n filter: 'date',\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n {\r\n headerName: '# Events', width: 110,\r\n cellRenderer: EventCount,\r\n valueGetter: function (params) {\r\n return (params.data.CorrespondenceEvents !== undefined && params.data.CorrespondenceEvents.length > 0) ? params.data.CorrespondenceEvents.length : 0;\r\n },\r\n menuTabs: [],\r\n },\r\n { field: 'ProjectName', headerName: 'Name', width: 275, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { field: 'ProjectLead', headerName: 'Project Lead', width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n { field: 'Closed', headerName: 'Additional Action?', width: 160, menuTabs: ['filterMenuTab'], filter: true},\r\n {\r\n //note: white-space here causes word-wrap\r\n field: 'Comments', headerName: 'Comments', width: 380, cellStyle: { 'white-space': 'normal' }, menuTabs: ['filterMenuTab'], filter: 'text'\r\n },\r\n { field: 'TrackingNumber', headerName: 'Tracking #', width: 120, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n { field: 'Agency', headerName: 'Agency', cellRenderer: otherAgencyTemplate, width: 150, menuTabs: ['filterMenuTab'], filter: true},\r\n //{ field: 'County', headerName: 'County', width: 150, menuTabs: ['filterMenuTab'], },\r\n { field: 'strCounties', headerName: 'County', width: 150, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n { field: 'ProjectProponent', headerName: 'Project Proponent', width: 170, menuTabs: ['filterMenuTab'], filter: true},\r\n\r\n ];\r\n\r\n //details for the correspondence\r\n var detailColumnDefs = [\r\n //{ colId: 'EditLinksDetail', headerName: '', width: 100, cellRenderer: EditDetailLinksTemplate, menuTabs: [], },\r\n {\r\n headerName: 'Notice Date',\r\n field: 'CorrespondenceDate',\r\n width: 150,\r\n cellClass: 'event-record-cell',\r\n valueGetter: function (params) { return moment(params.node.data.CorrespondenceDate) }, //date filter needs js date object\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.CorrespondenceDate);\r\n },\r\n sort: 'desc',\r\n filter: 'date',\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n { headerName: 'Notice Type', field: 'CorrespondenceType', cellClass: 'event-record-cell', width: 160, menuTabs: ['filterMenuTab'], filter: true},\r\n { headerName: 'Type of Response', field: 'ResponseType', cellClass: 'event-record-cell', width: 180, menuTabs: ['filterMenuTab'], filter: true},\r\n { headerName: 'Days to Respond', field: 'NumberOfDays', cellClass: 'event-record-cell', width: 150, menuTabs: [], filter: true},\r\n\r\n {\r\n field: 'ResponseDate',\r\n headerName: 'Date of Response',\r\n valueGetter: function (params) { return moment(params.node.data.ResponseDate) }, //date filter needs js date object\r\n width: 150,\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.ResponseDate);\r\n },\r\n filter: 'date',\r\n menuTabs: ['filterMenuTab'],\r\n },\r\n { headerName: 'Technician', field: 'StaffMember', cellClass: 'event-record-cell', width: 150, menuTabs: ['filterMenuTab'], filter: true },\r\n {\r\n headerName: 'Comments', field: 'EventComments', cellClass: 'event-record-cell', width: 380, cellStyle: {\r\n 'white-space': 'normal'\r\n },\r\n menuTabs: ['filterMenuTab'], filter: 'text'\r\n },\r\n { headerName: 'Documents', field: 'EventFiles', width: 330, cellRenderer: FileListCellTemplate, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n\r\n //{ headerName: 'EventFiles', field: 'EventFiles', cellClass: 'event-record-cell', cellRenderer: FileListCellTemplate },\r\n ];\r\n\r\n //detail grid options correspondence events\r\n scope.corrDetailGridOptions = {\r\n suppressPropertyNamesCheck: true,\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n //rowSelection: 'single',\r\n //onSelectionChanged: function (params) {\r\n // console.log(\"selection changed!\");\r\n //scope.corrAgGridOptions.selectedItems = scope.corrAgGridOptions.api.getSelectedRows();\r\n //scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n //},\r\n //onFilterModified: function () {\r\n // scope.corrAgGridOptions.api.deselectAll();\r\n //},\r\n //selectedItems: [],\r\n //rowData: eventRecords,\r\n columnDefs: detailColumnDefs,\r\n onGridReady: function (params) {\r\n //setTimeout(function () { params.api.sizeColumnsToFit(); }, 0);\r\n },\r\n getRowHeight: function (params) {\r\n var comment_length = (params.data.EventComments === null) ? 1 : params.data.EventComments.length;\r\n var comment_height = 25 * (Math.floor(comment_length / 45) + 1); //base our detail height on the comments field.\r\n var file_height = 25 * (getFilesArrayAsList(params.data.EventFiles).length); //count up the number of file lines we will have.\r\n return (comment_height > file_height) ? comment_height : file_height;\r\n },\r\n //onRowClicked: function (row) {\r\n //console.dir(row);\r\n\r\n // row.node.setSelected(true);\r\n // console.log(\"detail selected!\");\r\n //},\r\n //defaultColDef: {\r\n // editable: true\r\n //},\r\n //enableRangeSelection: true\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n\r\n\r\n scope.corrAgGridOptions = {\r\n suppressPropertyNamesCheck: true,\r\n masterDetail: true,\r\n detailCellRendererParams: {\r\n detailGridOptions: scope.corrDetailGridOptions,\r\n getDetailRowData: function (params) {\r\n params.successCallback(params.data.CorrespondenceEvents);\r\n },\r\n },\r\n\r\n animateRows: true,\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n // showToolPanel: false,\r\n columnDefs: scope.corrAgColumnDefs,\r\n rowData: null,\r\n //filterParams: { apply: true }, //enable option: doesn't do the filter unless you click apply\r\n //debug: true,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n console.log(\"selection changed fired!\");\r\n /*\r\n var rows = scope.corrAgGridOptions.api.getSelectedRows();\r\n if (Array.isArray(rows) && rows[0] != null)\r\n {\r\n console.log(\"rows:\");\r\n console.dir(rows);\r\n if (!Array.isArray(rows[0]) && !rows[0].hasOwnProperty('SubprojectId')) //only change the selection if they clicked a header row.\r\n {\r\n scope.corrAgGridOptions.selectedItems = scope.corrAgGridOptions.api.getSelectedRows();\r\n //scope.corrAgGridOptions.api.redrawRows();\r\n //scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n console.log(\"selected a header row so selection actually changed\");\r\n scope.viewSubproject = rows[0];\r\n console.dir(scope.viewSubproject);\r\n }\r\n }\r\n */\r\n },\r\n //onFilterModified: function () {\r\n // scope.corrAgGridOptions.api.deselectAll();\r\n //},\r\n selectedItems: [],\r\n //isFullWidthCell: function (rowNode) {\r\n // return rowNode.level === 1;\r\n //},\r\n onGridReady: function (params) {\r\n //params.api.sizeColumnsToFit();\r\n },\r\n //fullWidthCellRenderer: CorrespondenceDetailCellRenderer,\r\n getRowHeight: function (params) {\r\n var rowIsDetailRow = params.node.level === 1;\r\n // return dynamic height when detail row, otherwise return 25\r\n if (rowIsDetailRow) {\r\n return 300;\r\n } else {\r\n var comment_length = (params.data.Comments === null) ? 1 : params.data.Comments.length;\r\n return 25 * (Math.floor(comment_length / 45) + 1); //base our detail height on the comments field.\r\n }\r\n //return rowIsDetailRow ? 200 : 25;\r\n },\r\n /*\r\n getNodeChildDetails: function (record) {\r\n //console.dir(record);\r\n if (record.CorrespondenceEvents) {\r\n //console.log(\"yep we have events!\");\r\n return {\r\n group: true,\r\n // the key is used by the default group cellRenderer\r\n key: record.CorrespondenceDate,\r\n // provide ag-Grid with the children of this group\r\n parentData: record,\r\n children: [record.CorrespondenceEvents],\r\n };\r\n } else {\r\n //console.log(\"didn't find any correspondence events for that record.\");\r\n return null;\r\n }\r\n },*/\r\n onRowDoubleClicked: function (row) {\r\n scope.corrAgGridOptions.api.collapseAll();\r\n row.node.setSelected(true);\r\n row.node.setExpanded(true);\r\n },\r\n onRowClicked: function (row) {\r\n row.node.setSelected(true);\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n\r\n\r\n //if you are creating a new one for the project, the ce_row should be empty {}\r\n // if you are editing an existing one, send in the project and the ce_row.\r\n scope.openCorrespondenceEventForm = function (subproject, ce_row) {\r\n //console.log(\"Inside openCorrespondenceEventForm...\")\r\n\r\n $rootScope.viewSubproject = scope.viewSubproject = subproject;\r\n //console.log(\"ok subproject set: \");\r\n //console.dir(scope.viewSubproject);\r\n\r\n scope.ce_row = ce_row;\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/crpp/components/correspondence/templates/modal-new-correspondenceEvent.html',\r\n controller: 'ModalAddCorrespondenceEventCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n scope.removeCrppSubproject = function (subproject) {\r\n //console.log(\"Inside removeViewSubproject, scope is next...\");\r\n\r\n if (!subproject)\r\n return;\r\n\r\n scope.viewSubproject = subproject;\r\n\r\n if (scope.viewSubproject.CorrespondenceEvents.length > 0) {\r\n alert(\"This project has associated correspondence events. Those must be deleted first.\");\r\n } else {\r\n scope.verifyAction = \"Delete\";\r\n scope.verifyingCaller = \"CrppSubproject\";\r\n //console.log(\"scope.verifyAction = \" + scope.verifyAction + \", scope.verifyingCaller = \" + scope.verifyingCaller + \", scope.viewSubproject.Id = \" + scope.viewSubproject.Id);\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-verifyAction.html',\r\n controller: 'ModalVerifyActionCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n }\r\n };\r\n\r\n scope.postRemoveSubprojectUpdateGrid = function () {\r\n //the scope.subproject is the one we removed.\r\n console.log(\"ok - we removed one so update the grid...\");\r\n\r\n scope.subprojectList.forEach(function (item, index) {\r\n if (item.Id === scope.viewSubproject.Id) {\r\n scope.subprojectList.splice(index, 1);\r\n //console.log(\"ok we removed :\" + index);\r\n //console.dir(scope.subprojectList[index]);\r\n scope.corrAgGridOptions.api.setRowData(scope.subprojectList);\r\n //scope.corrAgGridOptions.api.redrawRows();\r\n //console.log(\"done reloading grid.\");\r\n }\r\n });\r\n };\r\n\r\n //called by the modal once the correspondence event is successfully saved.\r\n scope.postEditCorrespondenceEventUpdateGrid = function (edited_event) {\r\n console.log(\"editCrppCorrespondenceEvent...\" + edited_event.Id + \" for subproject \" + edited_event.SubprojectId);\r\n\r\n //edit our correspondence item and then reload the grid.\r\n scope.subprojectList.forEach(function (item, index) {\r\n if (item.Id === edited_event.SubprojectId) {\r\n item.EffDt = moment(new Date()).format() + \"\"; //touch the effdt to bump the sort. - this was already updated in the be\r\n item.CorrespondenceEvents.forEach(function (event_item, event_item_index) {\r\n if (event_item.Id === edited_event.Id) {\r\n angular.extend(event_item, edited_event); //replace the data for that item\r\n //console.log(\"OK!! we edited that correspondence event\");\r\n }\r\n });\r\n }\r\n });\r\n\r\n scope.corrAgGridOptions.api.setRowData(scope.subprojectList);\r\n\r\n //after we setRowData, the grid collapses our expanded item. we want it to re-expand that item and make sure it is visible.\r\n var the_node = scope.expandSubProjectById(edited_event.SubprojectId);\r\n if (the_node != null)\r\n scope.corrAgGridOptions.api.ensureNodeVisible(the_node);\r\n\r\n console.log(\"done reloading grid after removing item.\");\r\n\r\n };\r\n\r\n //called by the modal once a correspondence event (edit) is saved\r\n scope.postAddCorrespondenceEventUpdateGrid = function (new_event) {\r\n //console.dir(new_event);\r\n console.log(\"saving correspondence event for \" + new_event.SubprojectId);\r\n\r\n var subproject = getById(scope.subprojectList, new_event.SubprojectId);\r\n\r\n if (subproject === undefined || subproject == null) { //TODO: the case where they create items before the proejct is saved?\r\n console.log(\"no subproject...\");\r\n } else {\r\n scope.subprojectList.forEach(function (item, index) {\r\n if (item.Id === subproject.Id) {\r\n item.EffDt = moment(new Date()).format() + \"\"; //touch the effdt to bump the sort - this was already updated in the be\r\n item.CorrespondenceEvents.push(new_event);\r\n //console.log(\"Added event \" + new_event.Id + \" to \" + subproject.Id);\r\n }\r\n });\r\n scope.corrAgGridOptions.api.setRowData(scope.subprojectList);\r\n\r\n //after we setRowData, the grid collapses our expanded item. we want it to re-expand that item and make sure it is visible.\r\n var the_node = scope.expandSubProjectById(subproject.Id);\r\n if (the_node != null)\r\n scope.corrAgGridOptions.api.ensureNodeVisible(the_node);\r\n\r\n console.log(\"done reloading grid after removing item.\");\r\n }\r\n };\r\n\r\n //returns the (last) node or null if none found.\r\n scope.expandSubProjectById = function (id_in) {\r\n var the_node = null;\r\n scope.corrAgGridOptions.api.forEachNode(function (node) {\r\n if (node.data.Id === id_in) {\r\n //console.log(\"Expanding! \" + id_in);\r\n node.setExpanded(true);\r\n the_node = node;\r\n }\r\n });\r\n return the_node;\r\n };\r\n\r\n //removes the correspondence event and then updates the grid\r\n scope.removeCrppCorrespondenceEvent = function (subproject, event) {\r\n console.log(\"removeCrppCorrespondenceEvent...\" + event.Id + \" for subproject \" + subproject.Id);\r\n\r\n if (confirm('Are you sure that you want to delete this Correspondence Event?')) {\r\n var promise = SubprojectService.removeCorrespondenceEvent(scope.project.Id, subproject.Id, event.Id, scope.DatastoreTablePrefix);\r\n\r\n promise.$promise.then(function () {\r\n //remove from our subprojectList and then reload the grid.\r\n scope.subprojectList.forEach(function (item, index) {\r\n if (item.Id === subproject.Id) {\r\n item.CorrespondenceEvents.forEach(function (event_item, event_item_index) {\r\n if (event_item.Id === event.Id) {\r\n item.CorrespondenceEvents.splice(event_item_index, 1);\r\n //console.log(\"OK!! we removed that correspondence event\");\r\n }\r\n });\r\n }\r\n });\r\n scope.corrAgGridOptions.api.setRowData(scope.subprojectList);\r\n\r\n //after we setRowData, the grid collapses our expanded item. we want it to re-expand that item and make sure it is visible.\r\n var the_node = scope.expandSubProjectById(subproject.Id);\r\n if (the_node != null)\r\n scope.corrAgGridOptions.api.ensureNodeVisible(the_node);\r\n\r\n console.log(\"done reloading grid after removing item.\");\r\n });\r\n }\r\n };\r\n\r\n //fired after a user saves a new or edited project.\r\n // we update the item in the main subproject array and then refresh the grid.\r\n scope.postSaveSubprojectUpdateGrid = function (the_promise) {\r\n //console.log(\"ok - we saved so update the grid...\");\r\n var total = scope.subprojectList.length;\r\n var count = 0;\r\n var updated = false;\r\n scope.subprojectList.forEach(function (item, index) {\r\n if (item.Id === the_promise.Id) {\r\n updated = true;\r\n //console.log(\"ok we found a match! -- updating! before:\");\r\n //console.dir(scope.subprojectList[index]);\r\n\r\n if (the_promise.CorrespondenceEvents !== undefined)\r\n delete the_promise.CorrespondenceEvents; //remove this before the copy.\r\n\r\n angular.extend(scope.subprojectList[index], the_promise); //replace the data for that item\r\n //console.log(\"ok we found a match! -- updating! after:\");\r\n //console.dir(scope.subprojectList[index]);\r\n scope.corrAgGridOptions.api.redrawRows();\r\n //console.log(\"done reloading grid.\");\r\n }\r\n count++;\r\n if (count == total && updated == false) //if we get all done and we never found it, lets add it to the end.\r\n {\r\n //console.log(\"ok we found never a match! -- adding!\");\r\n the_promise.CorrespondenceEvents = [];\r\n the_promise.Files = [];\r\n scope.subprojectList.push(the_promise); //add that item\r\n scope.corrAgGridOptions.api.setRowData([]);\r\n scope.corrAgGridOptions.api.setRowData(scope.subprojectList);\r\n\r\n //console.log(\"done reloading grid.\");\r\n }\r\n });\r\n\r\n console.log(\"updated the list and the grid... now refreshing the CRPP lists\");\r\n scope.refreshSubprojectLists(); //counties, etc.\r\n };\r\n\r\n //opens create crpp subproject modal\r\n scope.createCrppSubproject = function () {\r\n scope.viewSubproject = null;\r\n scope.createNewSubproject = true;\r\n //scope.subprojectList = null;\r\n scope.subprojectOptions = null;\r\n //console.log(\"scope.createNewSubproject = \" + scope.createNewSubproject);\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/crpp/components/correspondence/templates/modal-create-subproject.html',\r\n controller: 'ModalCreateSubprojectCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n //refresh all of the project match lists\r\n scope.refreshSubprojectLists = function () {\r\n\t\t\tconsole.log(\"Inside tab-correspondence.js, scope.refreshSubprojectList...\");\r\n\r\n // Call the functions that will build the list of funders, and list of files related to the project.\r\n // We add the items from these lists to the subproject -- as the data comes in.\r\n //scope.project.SubprojectFileList = SubprojectService.getSubprojectFiles(scope.projectId); //TODO: we already have this as scope.project.SubprojectFiles once the files load in project-detail.js\r\n scope.project.CountyList = ProjectService.getProjectCounties(scope.project.Id);\r\n\r\n //this one we can start right away since project locations are loaded with the project.\r\n //scope.matchLocationsToSubprojects();\r\n\r\n //do each match as the list finishes loading...\r\n //scope.project.SubprojectFileList.$promise.then(function () {\r\n //console.log(\" -- ok done loading now matching SubprojectFileList for \" + scope.project.SubprojectFileList.length);\r\n //scope.matchFilesToSubproject();\r\n //});\r\n\r\n scope.project.CountyList.$promise.then(function () {\r\n //console.log(\" -- ok done loading now matching CollaboratorList for \" + scope.project.CollaboratorList.length);\r\n scope.matchCountyToSubproject();\r\n });\r\n };\r\n\r\n scope.editCrppSubproject = function (subproject) {\r\n //console.log(\"editCrppSubproject...\");\r\n\r\n $rootScope.viewSubproject = scope.viewSubproject = subproject;\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/crpp/components/correspondence/templates/modal-create-subproject.html',\r\n controller: 'ModalCreateSubprojectCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n scope.matchCountyToSubproject = function () {\r\n //console.log(\"Inside controllers.js, scope.matchCountyToSubproject...\");\r\n //console.dir(scope.project.CountyList);\r\n\r\n var strCounties = \"\";\r\n angular.forEach(scope.subprojectList, function (subproject) {\r\n strCounties = \"\";\r\n angular.forEach(scope.project.CountyList, function (county) {\r\n if (county.SubprojectId === subproject.Id) {\r\n strCounties += county.Name + \";\\n\";\r\n }\r\n });\r\n subproject.strCounties = strCounties;\r\n });\r\n\t\t\t//console.log(\"scope.subprojectList is next...\");\r\n\t\t\t//console.dir(scope.subprojectList);\r\n };\r\n\r\n scope.redrawRows = function () {\r\n scope.corrAgGridOptions.api.setRowData([]);\r\n setTimeout(function () { scope.corrAgGridOptions.api.setRowData(scope.subprojectList); }, 4000);\r\n };\r\n\r\n scope.refreshCells = function () {\r\n scope.corrAgGridOptions.api.refreshCells();\r\n };\r\n\r\n scope.refreshMemory = function () {\r\n scope.corrAgGridOptions.api.refreshInMemoryRowModel('group');\r\n };\r\n\r\n //handle favorite toggle\r\n scope.isFavorite = $rootScope.Profile.isDatasetFavorite($routeParams.Id);\r\n scope.toggleFavorite = function () {\r\n UserService.toggleFavoriteDataset(scope, $rootScope);\r\n }\r\n\r\n }\r\n];\r\n\r\nexport default page_correspondence;\r\n","import {\r\n\t//SYSTEM_LOCATION_DATASET, \r\n\tGEOMETRY_SERVICE_URL, \r\n\tNAD83_SPATIAL_REFERENCE, \r\n\tENVIRONMENT,\r\n\tCDMS_POINTS_TEST_URL, \r\n\tCDMS_POINTS_PROD_URL\r\n} from \"../../../../config\";\r\nimport Map from \"@arcgis/core/Map\";\r\nimport SpatialReference from \"@arcgis/core/geometry/SpatialReference\";\r\nimport SimpleMarkerSymbol from \"@arcgis/core/symbols/SimpleMarkerSymbol\";\r\n//import ProjectParameters from \"@arcgis/core/tasks/support/ProjectParameters\";\r\nimport ProjectParameters from \"@arcgis/core/rest/support/ProjectParameters\";\r\nimport Graphic from \"@arcgis/core/Graphic\";\r\n//import GeometryService from \"@arcgis/core/tasks/GeometryService\";\r\nimport * as GeometryService from \"@arcgis/core/rest/geometryService\";\r\nimport Point from \"@arcgis/core/geometry/Point\";\r\nimport FeatureLayer from \"@arcgis/core/layers/FeatureLayer\";\r\n\r\nvar modal_verify_action = ['$scope', '$rootScope', '$uibModalInstance', 'SubprojectService','CommonService',\r\n function ($scope, $rootScope, $uibModalInstance, SubprojectService, CommonService){\r\n\tconsole.log(\"Inside ModalVerifyActionCtrl...\");\r\n\t//console.log(\"$scope is next...\");\r\n\t//console.dir($scope);\r\n\tconsole.log(\"$scope.verifyAction = \" + $scope.verifyAction);\r\n\tconsole.log(\"$scope.verifyingCaller = \" + $scope.verifyingCaller);\r\n\r\n $scope.map = new Map();\r\n\r\n if (ENVIRONMENT == \"prod\")\r\n {\r\n $scope.ShowMap.Test = false;\r\n $scope.ShowMap.Prod = true;\r\n $scope.map.locationLayer = new FeatureLayer({url:CDMS_POINTS_PROD_URL});\r\n }\r\n else\r\n {\r\n $scope.ShowMap.Test = true;\r\n $scope.ShowMap.Prod = false;\r\n $scope.map.locationLayer = new FeatureLayer({url:CDMS_POINTS_TEST_URL});\r\n }\r\n\r\n\tconsole.log(\"Calling program = \" + $scope.verifyingCaller);\r\n\tif ($scope.verifyingCaller === \"CrppSubproject\")\r\n\t{\r\n\t\tconsole.log(\"CrppSubproject is calling...\");\r\n\t\t$scope.header_title = $scope.verifyAction + \" this CRPP project: \" + $scope.viewSubproject.ProjectName;\r\n\t\t$scope.header_message = $scope.verifyAction.toLowerCase() + \" this CRPP project: \" + $scope.viewSubproject.ProjectName;\r\n\t}\r\n\telse if ($scope.verifyingCaller === \"CorrespondenceEvent\")\r\n\t{\r\n\t\tconsole.log(\"CorrespondenceEvent is calling...\");\r\n\t\tvar intTLocation = $scope.ce_row.CorrespondenceDate.indexOf(\"T\");\r\n\t\tvar strCeDate = $scope.ce_row.CorrespondenceDate.substring(0, intTLocation);\r\n\t\t$scope.header_title = $scope.verifyAction + \" this Correspondence Event: \" + strCeDate;\r\n\t\t//$scope.header_message = $scope.verifyAction + \" this Correspondence Event: \" + $scope.ce_row.CorrespondenceDate + \", by this Staff member: \" + $scope.ce_row.StaffMember;\r\n\t\t$scope.header_message = $scope.verifyAction + \" this Correspondence Event: \" + strCeDate + \", by this Staff member: \" + $scope.ce_row.StaffMember;\r\n\t}\r\n\telse if ($scope.verifyingCaller === \"HabSubproject\")\r\n\t{\r\n\t\tconsole.log(\"HabSubproject is calling...\");\r\n\t\t$scope.header_title = $scope.verifyAction + \" this Habitat project: \" + $scope.viewSubproject.ProjectName;\r\n\t\t$scope.header_message = $scope.verifyAction.toLowerCase() + \" this Habitat project: \" + $scope.viewSubproject.ProjectName;\r\n }\r\n else if ($scope.verifyingCaller === \"OlcSubproject\") {\r\n console.log(\"OlcSubproject is calling...\");\r\n $scope.header_title = $scope.verifyAction + \" this OLC project: \" + $scope.viewSubproject.CatalogNumber;\r\n $scope.header_message = $scope.verifyAction.toLowerCase() + \" this OLC project: \" + $scope.viewSubproject.CatalogNumber;\r\n }\r\n\r\n //$scope.header_message = $scope.verifyAction.toLowerCase() + \" this CRPP project\";\r\n\r\n\r\n /* kb - commenting out to see if we can do without now\r\n\tvar subprojectListwatcher = $scope.$watch('subprojectList.length', function(){\r\n\t\tconsole.log(\"Inside ModalVerifyActionCtrl watch, subprojectList\");\r\n\r\n\t\tif ($scope.subprojectList.length === 0)\r\n\t\t{\r\n\t\t\tconsole.log(\"No subprojects found yet...\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconsole.log(\"$scope.subprojectList is next..\");\r\n\t\tconsole.dir($scope.subprojectList);\r\n\r\n\t\t$scope.subprojectOptions = $rootScope.subprojectOptions = makeObjects($scope.subprojectList, 'Id','ProjectName');\r\n\r\n\t\t// Debug output ... wanted to verify the contents of scope.subprojectOptions\r\n\t\tangular.forEach($scope.subprojectOptions, function(subproject){\r\n\t\t\tconsole.dir(subproject);\r\n\t\t});\r\n\r\n\t\tconsole.log(\"$scope.subprojectOptions is next...\");\r\n\t\tconsole.dir($scope.subprojectOptions);\r\n\t\t////console.dir(scope);\r\n\t\t//subprojectListwatcher(); // Turn off this watcher.\r\n\t\t//$uibModalInstance.dismiss();\r\n\t});\r\n\t*/\r\n\r\n\r\n $scope.cancel = function(){\r\n $uibModalInstance.dismiss();\r\n\t\t$scope.verifyAction = 'undefined';\r\n };\r\n\r\n\t$scope.continueAction = function(){\r\n\t\tconsole.log(\"Inside continueAction...\");\r\n\t\t//console.log(\"$scope is next...\");\r\n\t\t//console.dir($scope);\r\n\t\t//$scope.continueAction = true;\r\n\t\t//$scope.verifyAction = 'undefined';\r\n\r\n\t\tconsole.log(\"$scope.verifyAction = \" + $scope.verifyAction);\r\n\r\n\t\tvar promise = null;\r\n\t\tif (($scope.verifyAction === \"Delete\") && ($scope.verifyingCaller === \"CrppSubproject\"))\r\n\t\t{\r\n\t\t\tconsole.log(\"$scope.project.Id = \" + $scope.project.Id + \", $scope.viewSubproject.Id = \" + $scope.viewSubproject.Id);\r\n promise = SubprojectService.removeSubproject($scope.project.Id, $scope.viewSubproject.Id);\r\n promise.$promise.then(function () {\r\n $scope.postRemoveSubprojectUpdateGrid();\r\n $uibModalInstance.dismiss();\r\n });\r\n\t\t}\r\n\t\telse if (($scope.verifyAction === \"Delete\") && ($scope.verifyingCaller === \"CorrespondenceEvent\"))\r\n {\r\n //maybe there is no case of this...\r\n\r\n\t\t\tconsole.log(\"$scope.project.Id = \" + $scope.project.Id + \", $scope.viewSubproject.Id = \" + $scope.viewSubproject.Id + \", $scope.ce_RowId = \" + $scope.ce_rowId);\r\n\t\t\t//var promise = SubprojectService.removeCorrespondenceEvent($scope.project.Id, $scope.viewSubproject.Id, $scope.ce_rowId);\r\n promise = SubprojectService.removeCorrespondenceEvent($scope.project.Id, $scope.viewSubproject.Id, $scope.ce_rowId);\r\n promise.$promise.then(function () {\r\n //$scope.postRemoveSubprojectUpdateGrid();\r\n $uibModalInstance.dismiss();\r\n });\r\n\t\t}\r\n\t\telse if (($scope.verifyAction === \"Delete\") && ($scope.verifyingCaller === \"HabSubproject\"))\r\n\t\t{\r\n\t\t\tconsole.log(\"$scope.projectId = \" + $scope.project.Id + \", $scope.viewSubproject.Id = \" + $scope.viewSubproject.Id + \", $scope.viewSubproject.locationId = \" + $scope.viewSubproject.locationId);\r\n\t\t\tvar theSdeObjectId = 0;\r\n\t\t\tvar keepGoing = true;\r\n\r\n\t\t\t// We will handle deleting the point from SDE at a later time. For now, just delete the location from CDMS.\r\n\t\t\t// First, get the SdeObjectId from the location associated to this subproject.\r\n\t\t\t/*angular.forEach($scope.project.Locations, function(aLocation){\r\n\t\t\t\tif ((keepGoing) && (aLocation.Id === $scope.viewSubproject.LocationId))\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log(\"Found the location...\");\r\n\t\t\t\t\ttheSdeObjectId = aLocation.SdeObjectId;\r\n\t\t\t\t\tkeepGoing = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Next, call the service and delete the point from the SDE.\r\n\t\t\tvar applyEditsParams = {\r\n\t\t\t\t\"id\": 0,\r\n\t\t\t\t\"adds\":[{}],\r\n\t\t\t\t\"updates\":[{}],\r\n\t\t\t\t\"deletes\":[{theSdeObjectId}],\r\n\t\t\t};\r\n\t\t\t/*var applyEditsParams = {\r\n\t\t\t\t\"id\": 0,\r\n\t\t\t\t\"adds\": null,\r\n\t\t\t\t\"updates\": null,\r\n\t\t\t\t\"deletes\": theSdeObjectId\r\n\t\t\t};\r\n\t\t\tvar applyEditsParams = theSdeObjectId;\r\n\r\n\r\n\t\t\t$scope.map.locationLayer.applyEdits(null,null,applyEditsParams).then(function(results){\r\n\t\t\t\tconsole.log(\"Inside $scope.map.locationLayer.applyEdits\");\r\n\t\t\t\tconsole.log(\"results is next...\");\r\n\t\t\t\tconsole.dir(results);\r\n\t\t\t\tif(results[0].success)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log(\"Deleted point! \"+ theSdeObjectId);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t*/\r\n\r\n\t\t\t// First, delete the point in SDE. To do that, we must build a graphic for the point, \r\n\t\t\t// because ArcGIS has us delete a graphic, not a point.\r\n\t\t\tvar inSR = new SpatialReference({ wkt: NAD83_SPATIAL_REFERENCE }); //esri/SpatialReference\r\n\t\t\tvar outSR = new SpatialReference({ wkid: 102100 });\r\n\r\n\t\t\t$scope.deletePoint = new Point({x: $rootScope.theLocation.GPSEasting, y: $rootScope.theLocation.GPSNorthing, spatialReference: inSR});\r\n\r\n\t\t\t//convert spatial reference\r\n\t\t\tvar PrjParams = new ProjectParameters();\r\n\t\t\tPrjParams.outSpatialReference = outSR;\r\n\t\t\tPrjParams.geometries = [$scope.deletePoint];\r\n\r\n\t\t\t// Do the projection (conversion)\r\n\t\t\tGeometryService.project(GEOMETRY_SERVICE_URL, PrjParams).then((delOutputpoint) => {\r\n\t\t\t\tlet symbol = new SimpleMarkerSymbol({\r\n\t\t\t\t\tstyle: \"circle\",\r\n\t\t\t\t\tcolor: \"#00ff00\",\r\n\t\t\t\t\tsize: \"8px\",\r\n\t\t\t\t\t});\r\n\r\n\t\t\t \t$scope.PointToDelete = new Point(delOutputpoint[0]);\r\n\r\n\t\t\t \t//throw \"Stopping right here...\";\r\n\r\n\t\t\t \tvar attributes = {OBJECTID: $rootScope.theLocation.SdeObjectId};\r\n\r\n\t\t\t\tvar deleteGraphic = new Graphic({geometry: $scope.PointToDelete, symbol: symbol, attributes: attributes});\r\n\r\n\r\n\r\n\r\n\t\t\t\t// Note: You cannot just pass the point to delete; it must be in a graphic object,\r\n\t\t\t\t// or the code dies in dojo-land, which is different than what is shown in \r\n\t\t\t\t// ArcGIS documenation on the service interface.\r\n\t\t\t\t$scope.map.locationLayer.applyEdits({deleteFeatures: [deleteGraphic]}).then (function (deleteResults) { // This works\r\n\r\n\t\t\t\t\t// If the point WAS NOT in SDE, we still need to delete the CDMS location and Habitat Subproject anyway.\r\n\t\t\t\t\tif (deleteResults && deleteResults.deleteFeatureResults.length === 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t$scope.SaveMessage = \"The location did not exist in SDE.\";\r\n\t\t\t\t\t\tconsole.log($scope.SaveMessage);\r\n\t\t\t\t\t\tconsole.dir(deleteResults);\r\n\r\n\t\t\t\t\t\t//throw \"Inside project-locations.ts, stopping right here, to leave the point in CDMS.\";\r\n\t\t\t\t\t\t// Delete the location, before deleting the Habitat Subproject.\r\n\t\t\t\t\t\tvar delete_loc = CommonService.deleteLocation($scope.viewSubproject.LocationId); // This just removes the location from CDMS, not SDE.\r\n\t\t\t\t\r\n\t\t\t\t\t\tdelete_loc.$promise.then(function (data) {\r\n\t\t\t\t\t\t\tconsole.log(\"deleted location\");\r\n\t\t\t\t\t\t\t//$scope.dataGridOptions.api.deselectAll()\r\n\t\t\t\t\t\t\t//$scope.loadProjectLocations();\r\n\r\n\t\t\t\t\t\t\t// Now (finally) we can delete the Habitat Subproject.\r\n\t\t\t\t\t\t\tpromise = SubprojectService.removeHabSubproject(parseInt($scope.project.Id), $scope.viewSubproject.Id, $scope.viewSubproject.LocationId);\r\n\t\t\t\t\t\t\tpromise.$promise.then(function () {\r\n\t\t\t\t\t\t\t\t$scope.postRemoveHabitatSubprojectUpdateGrid();\r\n\t\t\t\t\t\t\t\t$uibModalInstance.dismiss();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t}, function (error) {\r\n\t\t\t\t\t\t\tconsole.dir(error);\r\n\t\t\t\t\t\t\t$scope.SaveMessage = \"Could not delete that location.\";\r\n\t\t\t\t\t\t\talert($scope.SaveMessage);\r\n\r\n\t\t\t\t\t\t\tconsole.log($scope.SaveMessage);\r\n\t\t\t\t\t\t\tconsole.dir(deleteResults);\r\n\t\t\t\t\t\t\t//$scope.loadProjectLocations();\r\n\t\t\t\t\r\n\t\t\t\t\t\t\t// $uibModalInstance.close(\r\n\t\t\t\t\t\t\t// // on close this information is sent to the esri-map component, and enters as the inPayload object.\r\n\t\t\t\t\t\t\t// {\r\n\t\t\t\t\t\t\t// 'ProjectId': $scope.project.Id,\r\n\t\t\t\t\t\t\t// 'Location': $scope.row,\r\n\t\t\t\t\t\t\t// 'IsFirstRun': true\r\n\t\t\t\t\t\t\t// });\r\n\t\t\t\t\t\t});\r\n\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (deleteResults && deleteResults.deleteFeatureResults[0] && deleteResults.deleteFeatureResults[0].objectId) \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconsole.log(\"Deleted old habitat point! \" + deleteResults.deleteFeatureResults[0].objectId);\r\n\r\n\t\t\t\t\t\t//throw \"Inside project-locations.ts, stopping right here, to leave the point in CDMS.\";\r\n\t\t\t\t\t\t// We deleted the point in SDE. Now to delete the location.\r\n\t\t\t\t\t\tvar delete_loc = CommonService.deleteLocation($scope.viewSubproject.LocationId); // This just removes the location from CDMS, not SDE.\r\n\t\t\t\t\t\tdelete_loc.$promise.then(function(){\r\n\t\t\t\t\t\t\tvar removeHabSubPromise = SubprojectService.removeHabSubproject(parseInt($scope.project.Id), $scope.viewSubproject.Id, $scope.viewSubproject.LocationId);\r\n\t\t\t\t\t\t\tremoveHabSubPromise.$promise.then(function () {\r\n\t\t\t\t\t\t\t\t$scope.postRemoveHabitatSubprojectUpdateGrid();\r\n\t\t\t\t\t\t\t\t$uibModalInstance.dismiss();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t$scope.SaveMessage = \"There was a problem deleting that location.\";\r\n\t\t\t\t\t\tconsole.log($scope.SaveMessage);\r\n\t\t\t\t\t\tconsole.dir(deleteResults);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}, function (deleteErr: any) {\r\n\t\t\t\t\tconsole.log(\"Apply Edits - Delete Habitat site location - failed: \" + deleteErr.message + \" > \" + deleteErr.innerHTML);\r\n\t\t\t\t}); // Delete applyEdits\r\n\r\n\t\t\t\t$rootScope.ProjectId = $scope.project.Id;\r\n\r\n\t\t\t}); // GeometryService\r\n\r\n\t\t\t////promise = SubprojectService.removeHabSubproject(parseInt($scope.projectId), $scope.viewSubproject.Id);\r\n\t\t\t////promise = SubprojectService.removeHabSubproject(parseInt($scope.projectId), $scope.viewSubproject.Id, theSdeObjectId);\r\n // promise = SubprojectService.removeHabSubproject(parseInt($scope.project.Id), $scope.viewSubproject.Id, $scope.viewSubproject.LocationId);\r\n // promise.$promise.then(function () {\r\n // $scope.postRemoveHabitatSubprojectUpdateGrid();\r\n // $uibModalInstance.dismiss();\r\n // });\r\n }\r\n else if (($scope.verifyAction === \"Delete\") && ($scope.verifyingCaller === \"OlcSubproject\")) {\r\n console.log(\"$scope.project.Id = \" + $scope.project.Id + \", $scope.viewSubproject.Id = \" + $scope.viewSubproject.Id);\r\n promise = SubprojectService.removeOlcSubproject($scope.project.Id, $scope.viewSubproject.Id);\r\n promise.$promise.then(function () {\r\n $scope.postRemoveSubprojectUpdateGrid();\r\n $uibModalInstance.dismiss();\r\n });\r\n }\r\n\r\n\t}\r\n }];\r\n\r\nexport default modal_verify_action;\r\n","//modal to add/edit permit event\r\nimport * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {\r\n PERMIT_PROJECTID,\r\n PERMIT_WRP_DATASETID\r\n} from \"../../../../config\";\r\nimport {getNextBusinessDay} from \"../../../../core/common/common-functions\";\r\nimport {modalFiles_setupControllerForFileChooserModal} from \"../../../../core/common/components/file/modal-files\";\r\n\r\nvar modal_edit_permitevent = ['$rootScope','$scope', '$uibModal','$uibModalInstance','GridService','Upload','PermitService',\r\n\r\n function ($rootScope, $scope, $uibModal, $uibModalInstance, GridService, $upload, PermitService) {\r\n\r\n\r\n console.log(\"Inside add-permit-activity-modal.ts\");\r\n $scope.permit = $scope.row;\r\n // Create a LOCAL scope variable of ROW that will go away when this scope goes away...\r\n $scope.row = $scope.activity_modal;\r\n // modes we send notifications for\r\n $scope.modes_notifications = ['new_inspection','new_route','edit_route'];\r\n // Review Item Types that do not have any Contacts\r\n $scope.reviewTypes_noNotifications = ['WRP','County','TSRC','LPPC Hearing','BOT Resolution'];\r\n\r\n $scope.permitEventsGrid.isReadyRefresh = true;\r\n\r\n $rootScope.KeyCode = $scope.KeyCode = 0;\r\n\r\n $scope.Results = {\r\n SuccessMessage: null,\r\n FailureMessage: null,\r\n DoneSaving: false,\r\n };\r\n\r\n //intent can be set from the caller... otherwise the mode is based on the incoming activity_modal id\r\n if ($scope.intent) {\r\n $scope.mode = $scope.intent;\r\n } else {\r\n $scope.mode = ($scope.row.Id) ? \"edit\" : \"new\";\r\n }\r\n\r\n if (!$scope.row.Id) {\r\n //today\r\n $scope.row.EventDate = moment().format('L');\r\n //next business day - note: we always do this now\r\n $scope.row.RequestDate = getNextBusinessDay('L');\r\n }\r\n else {\r\n if(!$scope.row.ResponseDate)\r\n $scope.row.ResponseDate = moment().format('L');\r\n\r\n if(!$scope.row.Reviewer)\r\n $scope.row.Reviewer = $scope.Profile.Fullname;\r\n }\r\n\r\n //this is ugly but required - change labels for the forms\r\n if ($scope.mode == 'new_inspection') {\r\n $scope.permitEventsGrid.columnDefs.forEach(function (coldef) {\r\n if (coldef.DbColumnName == 'Reference')\r\n coldef.Label = \"Inspection Description\";\r\n\r\n if (coldef.DbColumnName == 'RequestDate')\r\n coldef.Label = \"Date Inspection Desired\";\r\n });\r\n } else {\r\n $scope.permitEventsGrid.columnDefs.forEach(function (coldef) {\r\n if (coldef.DbColumnName == 'Reference')\r\n coldef.Label = \"Reference\";\r\n\r\n if (coldef.DbColumnName == 'RequestDate')\r\n coldef.Label = \"Date Requested\";\r\n\r\n if (coldef.DbColumnName == 'EventDate')\r\n coldef.Label = \"Date Sent\"\r\n });\r\n\r\n }\r\n\r\n if (!$scope.row.Id) {\r\n //today\r\n $scope.row.EventDate = moment().format('L');\r\n //next business day - note: we always do this now\r\n $scope.row.RequestDate = getNextBusinessDay('L');\r\n }\r\n else {\r\n if(!$scope.row.ResponseDate)\r\n $scope.row.ResponseDate = moment().format('L');\r\n\r\n if(!$scope.row.Reviewer)\r\n $scope.row.Reviewer = $scope.Profile.Fullname;\r\n }\r\n\r\n if (!$scope.row.Files)\r\n $scope.row.Files = [];\r\n\r\n $scope.whatKeyPressed = function (event) {\r\n //console.log(\"Inside whatKeyPress...\");\r\n // Do nothing.\r\n // We are in a text box and the user pressed the Enter key on the keyboard.\r\n // $scope.KeyCode is either 0 or 13 (code for Enter key).\r\n $rootScope.KeyCode = $scope.KeyCode = event.keyCode;\r\n }\r\n\r\n //reload the item type dropdown based on the EventType value (\"Inspection\", \"Review\", etc.)\r\n $scope.refreshItemTypeLookup = function(){\r\n $scope.permitEventsGrid.isReadyRefresh = false;\r\n\r\n // Leaving this in, so that we can see what the cols are, if necessary.\r\n //var cols = $scope.permitEventsGrid.columnApi.getAllColumns();\r\n var col = $scope.permitEventsGrid.columnApi.getColumn('ItemType');\r\n\r\n col.colDef.PossibleValues.length = 0;\r\n var masterPV = angular.fromJson(col.colDef.cdmsField.Field.PossibleValues);\r\n\r\n //spin through the select-group (master) possible values and select only the ones from the group that matches EventType choice\r\n masterPV.forEach(function(item){\r\n //if($scope.activity_modal.EventType == item.Group){\r\n if (($scope.activity_modal.EventType) && ($scope.activity_modal.EventType == item.Group)){\r\n col.colDef.PossibleValues.push(item);\r\n }\r\n })\r\n\r\n //have to use settimeout here in order for the ng-if to be triggered on the directive\r\n setTimeout(function(){\r\n $scope.permitEventsGrid.isReadyRefresh = true;\r\n $scope.$apply();\r\n //},50)\r\n },100)\r\n\r\n }\r\n\r\n //initially set our ItemType based on our EventType\r\n $scope.refreshItemTypeLookup();\r\n\r\n //set up for attaching files\r\n //modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.PermitFiles);\r\n $scope.typeOfFilesToCheck = \"PermitFiles\";\r\n\r\n modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.typeOfFilesToCheck);\r\n\r\n\r\n $scope.save = function () {\r\n console.log(\"Inside $scope.save...\");\r\n\r\n //$scope.row.ReviewerContact is getting set somehow, but I want to use ReviewersContact, even if\r\n // there is only one Reviewer (or none), therefore set this to undefined.\r\n if($scope.row.ReviewerContact) {\r\n $scope.row.ReviewerContact = undefined;\r\n }\r\n\r\n if($scope.row.Result == \"Cancelled\"){\r\n if (!confirm(\"Are you sure you want to cancel this request? \\nA notification will be sent to the recipient.\")){\r\n return;\r\n }\r\n }\r\n\r\n // if($scope.mode == 'new_inspection' && !$scope.row.PreferredTime){\r\n // alert(\"Error: Preferred Time is required; please select a Preferred Time\");\r\n // return;\r\n //\r\n // }\r\n\r\n $scope.Results.DoneSaving = false;\r\n $scope.Results.IsSaving = true;\r\n\r\n $scope.row.ByUser = $scope.Profile.Id;\r\n\r\n var target = '/api/v1/permit/uploadfile';\r\n\r\n var data = {\r\n //ProjectId: PERMIT_PROJECTID,\r\n ProjectId: $scope.project.Id,\r\n SubprojectId: $scope.permit.Id,\r\n ItemId: $scope.row.Id\r\n };\r\n\r\n if (Array.isArray($scope.row.Files)) {\r\n if ($scope.row.Files.length == 0)\r\n delete $scope.row.Files;\r\n else\r\n $scope.row.Files = angular.toJson($scope.row.Files);\r\n }\r\n\r\n if($scope.PermitRoutes){\r\n // We are going to use the same structure for selecting Contacts for both\r\n // Reviews and Inspections, therefore we don't need to check which is which\r\n // for the Contacts anymore.\r\n\r\n //if($scope.activity_modal.EventType == \"Review\"){\r\n //checkboxes to select reviewers\r\n //drop any recipients that are 'false' since they were unchecked\r\n if($scope.row.ReviewersContact) {\r\n Object.keys($scope.row.ReviewersContact).forEach(function (key) {\r\n if ($scope.row.ReviewersContact[key] === false)\r\n delete $scope.row.ReviewersContact[key];\r\n });\r\n }\r\n //} //else {\r\n //select dropdown for inspectors/others - set the assignee userid\r\n //$scope.PermitRoutes.forEach(function(route){\r\n //if(route.Email == $scope.row.ReviewerContact){\r\n //$scope.row.AssigneeUserId = route.AssigneeUserId;\r\n //}\r\n //})\r\n //}\r\n }\r\n\r\n if($scope.modes_notifications.contains($scope.mode) \r\n && !$scope.needsNotification()\r\n && !$scope.reviewTypes_noNotifications.contains($scope.row.ItemType)) {\r\n if(!confirm(\"You did not select any Contacts to notify.\\n\\n\"\r\n + \"To continue without sending a notification, click 'OK'.\\n\"\r\n + \"To go back and select a Contact to notify, click 'Cancel'.\"))\r\n {\r\n\r\n $scope.Results.FailureMessage = \"Select one or more Contacts, and then click 'Save'\";\r\n $scope.Results.DoneSaving = false;\r\n $scope.Results.IsSaving = false;\r\n return;\r\n } else {\r\n $scope.Results.FailureMessage = null;\r\n $scope.Results.DoneSaving = false;\r\n $scope.Results.IsSaving = true;\r\n }\r\n } else {\r\n $scope.Results.FailureMessage = null;\r\n $scope.Results.DoneSaving = false;\r\n $scope.Results.IsSaving = true;\r\n }\r\n\r\n var to_save = angular.copy($scope.row);\r\n\r\n if($scope.row.FilesToInclude){\r\n var new_files = [];\r\n to_save.SharedFiles = [];\r\n $scope.row.FilesToInclude.forEach(function(file){\r\n //console.dir(file);\r\n file = angular.fromJson(file);\r\n delete file.User;\r\n new_files.push(file);\r\n to_save.SharedFiles.push({\"Name\":file.Name, \"Link\":file.Link});\r\n })\r\n to_save.FilesToInclude = new_files;\r\n to_save.SharedFiles = $scope.row.SharedFiles = angular.toJson(to_save.SharedFiles);\r\n }else{\r\n to_save.FilesToInclude = [];\r\n }\r\n\r\n //if this is a new event, save it first to get the ID\r\n if (!$scope.row.Id) {\r\n\r\n var new_event = PermitService.savePermitEvent(to_save);\r\n\r\n new_event.$promise.then(function () {\r\n console.log(\"done and success saving event!\");\r\n $scope.row.Id = data.ItemId = new_event.Id;\r\n\r\n //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n $scope.handleFilesToUploadRemove($scope.row, data, target, $upload, $rootScope, $scope);\r\n });\r\n\r\n } else {\r\n //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n $scope.handleFilesToUploadRemove($scope.row, data, target, $upload, $rootScope, $scope);\r\n }\r\n };\r\n\r\n //callback that is called from modalFile to do the actual file removal (varies by module)\r\n $scope.modalFile_doRemoveFile = function (file_to_remove, saveRow) {\r\n //console.dir(file_to_remove);\r\n return PermitService.deletePermitFile(PERMIT_PROJECTID, $scope.permit.Id, saveRow.Id, file_to_remove);\r\n };\r\n\r\n //call back from save above once the files are done processing and we're ready to save the item\r\n $scope.modalFile_saveParentItem = function (saveRow) {\r\n\r\n //save again to update with the files we uploaded\r\n $scope.saved_event = PermitService.savePermitEvent(saveRow);\r\n\r\n $scope.saved_event.$promise.then(function () {\r\n\r\n $scope.Results.DoneSaving = true;\r\n\r\n console.log(\"done and success updating the files\");\r\n\r\n if($scope.modes_notifications.contains($scope.mode) && !$scope.saved_event.ResponseDate && $scope.needsNotification())//$scope.row.ReviewersContact)\r\n $scope.Results.SuccessMessage = \"Saved and notifications sent.\";\r\n else\r\n $scope.Results.SuccessMessage = \"Saved.\";\r\n\r\n if($scope.saved_event.EventType=='Review'){\r\n console.log(\" -- updating route indicator: \" + [\"Route_\" + $scope.saved_event.ItemType]);\r\n //now update the permit routing indicator\r\n var save_permit = angular.copy($scope.permit);\r\n save_permit.Zoning = angular.toJson(save_permit.Zoning);\r\n console.dir($scope.saved_event);\r\n var route_indicator = ($scope.saved_event.ResponseDate) ? \"*\" : \"+\";\r\n console.log(\" indicator: \"+route_indicator);\r\n save_permit[\"Route_\" + $scope.saved_event.ItemType] = route_indicator;\r\n save_permit.ReviewsRequired = angular.toJson(save_permit.ReviewsRequired);\r\n\r\n var permit_promise = PermitService.savePermit(save_permit);\r\n }\r\n\r\n // $scope.close();\r\n\r\n // if($scope.Results.SuccessMessage.includes(\"notifications sent\")) {\r\n // window.open(\"permits/notifications\", \"_blank\");\r\n // }\r\n\r\n }, function (data) {\r\n console.error(\"failure!\");\r\n console.dir(data);\r\n $scope.Results.FailureMessage = \"There was a problem saving or sending notifications.\";\r\n $scope.Results.DoneSaving = false;\r\n });\r\n\r\n };\r\n\r\n $scope.close = function () {\r\n $uibModalInstance.close($scope.saved_event);\r\n };\r\n\r\n\r\n // Remove \"EventType\" field from Reviews, since the Event Type for\r\n // Reviews will always be \"Review\". -CD 03/28/2024\r\n\r\n // ***************************************************************************\r\n //var NEW_REVIEW_FIELDS = [\"EventDate\", \"EventType\", \"ItemType\", \"Comments\"];\r\n //var EDIT_REVIEW_FIELDS = [\"EventDate\", \"EventType\", \"ItemType\", \"ResponseDate\",\"Result\",\"Reference\",\"Files\",\"Comments\"];\r\n var NEW_REVIEW_FIELDS = [\"EventDate\", \"ItemType\", \"Comments\"];\r\n var EDIT_REVIEW_FIELDS = [\"EventDate\", \"ItemType\", \"ResponseDate\",\"Result\",\"Reference\",\"Files\",\"Comments\"];\r\n var NEW_INSPECTION_FIELDS = [\"Reference\",\"ItemType\",\"RequestDate\",\"Comments\"];\r\n\r\n //a filter to determine which fields to show\r\n // ***************************************************************************\r\n // ***** This actually controls what fields/properties show on the form. *****\r\n // Add the values for the variables are listed right above here\r\n // ***************************************************************************\r\n $scope.doShowField = function (field) {\r\n\r\n // @ts-ignore\r\n if ($scope.mode == \"new_route\" && NEW_REVIEW_FIELDS.contains(field.DbColumnName))\r\n return true;\r\n\r\n // @ts-ignore\r\n if ($scope.mode == \"edit_route\" && EDIT_REVIEW_FIELDS.contains(field.DbColumnName))\r\n return true\r\n\r\n if ($scope.mode == \"edit_route\" || $scope.mode == \"new_route\")\r\n return false;\r\n\r\n // @ts-ignore\r\n if ($scope.mode == \"new_inspection\" && NEW_INSPECTION_FIELDS.contains(field.DbColumnName))\r\n return true;\r\n\r\n // @ts-ignore\r\n if ($scope.mode == \"new_inspection\")\r\n return false;\r\n\r\n return field.hasOwnProperty('DbColumnName');\r\n }\r\n\r\n //fire validation for all columns when we load (if we are editing)\r\n if ($scope.mode === 'edit') {\r\n $scope.permitEventsGrid.columnDefs.forEach(function (field) {\r\n $scope.onHeaderEditingStopped(field);\r\n });\r\n }\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n $scope.loadRecipientsFromRoute = function () {\r\n if ( ($scope.activity_modal.EventType == 'Inspection' || $scope.activity_modal.EventType == 'Review')\r\n && ($scope.mode == 'new' || $scope.mode == 'new_route' || $scope.mode == 'new_inspection') ) {\r\n\r\n //note: we use ReviewerContact for single, ReviewersContact for multiple\r\n // 03/25/2024 - Updated to use ReviewersContact for zero, one, or multiple recipients\r\n\r\n //if($scope.activity_modal.EventType == 'Review'){\r\n $scope.row.ReviewersContact = {};\r\n //} // else {\r\n // $scope.row.ReviewerContact;\r\n // }\r\n\r\n //console.log(\"getting routes for: \" + $scope.activity_modal.ItemType);\r\n\r\n $scope.PermitRoutes = PermitService.getPermitRoutesByItemType($scope.activity_modal.EventType, $scope.activity_modal.ItemType);\r\n $scope.PermitRoutes.$promise.then(function () {\r\n\r\n //select the first one\r\n // 03/25/2024 - Updated to use Checkboxes for all types (Review and Inspection)\r\n\r\n $scope.PermitRoutes.forEach(function (route) {\r\n\r\n //if($scope.activity_modal.EventType == 'Review'){\r\n //select the first one (checkbox version)\r\n if (route.Rank == 0)\r\n $scope.row.ReviewersContact[route.Email] = true;\r\n //} //else {\r\n // //select the first one (select version)\r\n // if (route.Rank == 0)\r\n // $scope.row.ReviewerContact = route.Email;\r\n // }\r\n });\r\n });\r\n }\r\n }\r\n\r\n if (typeof $scope.row.ItemType === 'string') {\r\n $scope.loadRecipientsFromRoute();\r\n }\r\n\r\n $scope.getFileLabel = function(file){\r\n if(file)\r\n return file.Name + ((file.Description) ? \" (\"+file.Description+\")\" : \"\");\r\n else return \"\";\r\n }\r\n\r\n\r\n //Setup an event listener that fires from list-permits.js every time a header field is changed.\r\n //We listen for ItemType changing.\r\n $rootScope.$on('headerEditingStopped', function (event, field) {\r\n \r\n if (field.DbColumnName == 'ItemType') {\r\n $scope.loadRecipientsFromRoute();\r\n }\r\n\r\n //update ItemType possible values/controlType based on EventType\r\n if (field.DbColumnName == 'EventType'){\r\n $scope.refreshItemTypeLookup();\r\n\r\n if(($scope.mode == \"new\" || $scope.mode == \"edit\") && ($scope.row.EventType == \"Review\" || $scope.row.EventType == \"Inspection\")) { \r\n $scope.mode = $scope.mode + \"_\" + $scope.row.EventType.toLowerCase().replace(\"review\", \"route\");\r\n }\r\n }\r\n });\r\n\r\n // Check if Activity needs a Notification sent. Activities requiring notifications are:\r\n // --Inspection Requests\r\n // **All Item Types\r\n // --Review Requests\r\n // **CRPP\r\n // **Bldg Code\r\n // **Env. Health\r\n // **Pub. Works\r\n // **TERO\r\n // **Fire Dept.\r\n // **Testing\r\n // **Multiple-Personnel\r\n $scope.needsNotification = function() {\r\n let returnValue = false;\r\n\r\n // Check for key/value pairs where key = \"email@address\" and\r\n // value = true. If at least one is found, the request will need\r\n // a notification sent.\r\n $scope.PermitRoutes.forEach(function(route){\r\n if($scope.row.hasOwnProperty(\"ReviewersContact\")) {\r\n if($scope.row[\"ReviewersContact\"][route.Email]){\r\n returnValue = true;\r\n }\r\n }\r\n })\r\n\r\n return returnValue;\r\n };\r\n}];\r\n\r\nexport default modal_edit_permitevent;\r\n","//controller for modal-create-habSubproject.html\r\n// create/edit habitat subproject\r\nimport * as angular from 'angular';\r\nimport {initEdit, setDateTo0000} from \"../../../../core/common/common-functions\";\r\nimport {\r\n DEFAULT_LOCATION_PROJECTION_ZONE,\r\n GEOMETRY_SERVICE_URL,\r\n METADATA_ENTITY_HABITAT,\r\n METADATA_ENTITY_PROJECT, \r\n NAD83_SPATIAL_REFERENCE,\r\n ENVIRONMENT,\r\n CDMS_POINTS_TEST_URL, \r\n CDMS_POINTS_PROD_URL\r\n} from \"../../../../config\";\r\nimport {modalFiles_setupControllerForFileChooserModal} from \"../../../../core/common/components/file/modal-files\";\r\nimport {loadModules} from \"esri-loader\";\r\nimport SpatialReference from \"@arcgis/core/geometry/SpatialReference\";\r\nimport SimpleMarkerSymbol from \"@arcgis/core/symbols/SimpleMarkerSymbol\";\r\n//import ProjectParameters from \"@arcgis/core/tasks/support/ProjectParameters\";\r\nimport ProjectParameters from \"@arcgis/core/rest/support/ProjectParameters\";\r\nimport Graphic from \"@arcgis/core/Graphic\";\r\n//import GeometryService from \"@arcgis/core/tasks/GeometryService\";\r\nimport * as GeometryService from \"@arcgis/core/rest/geometryService\";\r\nimport Point from \"@arcgis/core/geometry/Point\";\r\nimport FeatureLayer from \"@arcgis/core/layers/FeatureLayer\";\r\n\r\nvar modal_create_habitat_subproject = ['$scope', '$rootScope', '$uibModalInstance', '$uibModal', 'DatasetService', 'CommonService', 'SubprojectService', 'ServiceUtilities',\r\n '$timeout', '$location', '$anchorScroll', '$document', 'Upload', 'ProjectService',\r\n function ($scope, $rootScope, $uibModalInstance, $uibModal, DatasetService, CommonService, SubprojectService, ServiceUtilities,\r\n $timeout, $location, $anchorScroll, $document, $upload, ProjectService) {\r\n console.log(\"Inside ModalCreateHabSubprojectCtrl...\");\r\n\r\n initEdit(); //prevent backspace\r\n\r\n $scope.header_message = \"Create new Habitat project\";\r\n $rootScope.newSubproject = $scope.newSubproject = true;\r\n $scope.waterbodies = CommonService.getWaterBodies();\r\n $rootScope.habProjectName = $scope.habProjectName = \"\";\r\n $scope.showAddDocument = true;\r\n $scope.savingHabSubproject = false;\r\n $scope.showFundingBox = false;\r\n $scope.projectId = $scope.project.Id;\r\n $scope.IsNewPoint = false;\r\n $scope.fundersPresent = false;\r\n $scope.collaboratorPresent = false;\r\n $scope.featureImagePresent = false;\r\n $scope.row = {\r\n StatusId: 0,\r\n //OwningDepartmentId: 1,\r\n };\r\n $scope.subprojectId = 0;\r\n $scope.GPSEasting = -1;\r\n $scope.GPSNorthing = -1;\r\n $rootScope.SdeObjectId = $scope.SdeObjectId = -1;\r\n $scope.OldSdeObjectId = -1;\r\n $scope.EastingOrNorthingChanged = false;\r\n var symbol = null;\r\n $scope.map = new Map();\r\n\r\n // This line pulls in the Projection and the UTMZone\r\n $scope.row = angular.copy(DEFAULT_LOCATION_PROJECTION_ZONE);\r\n\r\n $scope.row.strFunders = \"\";\r\n $scope.row.Funding = [];\r\n\r\n //var fundtionOptionCount = 0;\r\n /*angular.forEach($scope.metadataList['Funding'].options, function(value){\r\n console.log(\"value = \" + value);\r\n\r\n var fundingOption = new Object();\r\n //fundingOption.Checked = false;\r\n fundingOption.Name = \"\";\r\n fundingOption.Amount = 0;\r\n\r\n fundingOption.Name = value;\r\n $scope.row.Funding.push(fundingOption);\r\n });\r\n console.dir($scope.row.Funding);\r\n */\r\n\r\n\r\n $scope.showCollaboratorOptions = false;\r\n $scope.showOtherCollaborators = false;\r\n $scope.showOtherFundingAgency = false;\r\n $scope.showFunders = false;\r\n $scope.showFundingOptions = false;\r\n $scope.row.strCollaborators = \"\";\r\n $scope.row.Collaborators = [];\r\n $scope.uploadComplete = false;\r\n var values = null;\r\n\r\n $scope.$parent.project.Locations.forEach(function (item) {\r\n if (($scope.viewSubproject) && (item.Id === $scope.viewSubproject.LocationId))\r\n $scope.OldSdeObjectId = item.SdeObjectId;\r\n });\r\n\r\n $scope.$on('newLocationData', function (event, data) {\r\n $scope.savePoint(data);\r\n });\r\n\r\n //fetch all of the habitat metafields and two of the project metafields that are used for habitat sites (\"subprojects\")\r\n $scope.setupHabitatMetaFields = function () {\r\n\r\n // row.column (from database) and metadata name\r\n $scope.HabitatMetaFieldColumns = {\r\n \"FirstFoods\": \"First Foods\",\r\n \"RiverVisionTouchstone\": \"River Vision Touchstone\",\r\n \"HabitatObjectives\": \"Habitat Objectives\",\r\n \"NoaaEcologicalConcerns\": \"NOAA Ecological Concerns\",\r\n \"NoaaEcologicalConcernsSubcategories\": \"NOAA Ecological Concerns: Sub-categories\",\r\n \"LimitingFactors\": \"Limiting Factors\"\r\n };\r\n\r\n if ($scope.project.MetaFields)\r\n return;\r\n\r\n\r\n var habfields = CommonService.getMetadataFor($scope.project.Id, METADATA_ENTITY_HABITAT);\r\n habfields.$promise.then(function () {\r\n\r\n $scope.project.MetaFields = [];\r\n\r\n var projFields = CommonService.getMetadataFor($scope.project.Id, METADATA_ENTITY_PROJECT);\r\n\r\n projFields.$promise.then(function () {\r\n\r\n projFields.forEach(function (projfield) {\r\n if (projfield.Name == \"First Foods\" || projfield.Name == \"River Vision Touchstone\") { //include only these from proj\r\n projfield.isHabitat = true;\r\n $scope.project.MetaFields.push(projfield);\r\n }\r\n });\r\n\r\n habfields.forEach(function (habfield) {\r\n if (habfield.Name !== \"Collaborators\") { //exclude\r\n habfield.isHabitat = true;\r\n $scope.project.MetaFields.push(habfield);\r\n }\r\n });\r\n\r\n $scope.project.MetaFields.forEach(function (field) {\r\n field.DbColumnName = field.Label = field.Name;\r\n });\r\n\r\n console.dir($scope.project.MetaFields);\r\n console.dir($scope.row);\r\n\r\n });\r\n\r\n });\r\n }\r\n\r\n\r\n //console.log(\"$scope.row (after initialization) is next...\");\r\n //console.dir($scope.row);\r\n\r\n //if we are editing, viewSubproject will be set. -- prepare scope for editing...\r\n if (!$scope.viewSubproject) {\r\n //mixin the properties and functions to enable the modal file chooser for this controller...\r\n //modalFiles_setupControllerForFileChooserModal($scope, $uibModal, []); //last param is files to check for duplicates... we are new, so we don't have any.\r\n $scope.typeOfFilesToCheck = \"SubprojectFiles\";\r\n modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.typeOfFilesToCheck); //SubprojectFiles\r\n\r\n $scope.setupHabitatMetaFields();\r\n\r\n } else {\r\n $scope.header_message = \"Edit Habitat project: \" + $scope.viewSubproject.ProjectName;\r\n $rootScope.newSubproject = $scope.newSubproject = false;\r\n\r\n // Original line.\r\n $scope.row = angular.copy($scope.viewSubproject);\r\n\r\n // New code.\r\n // If we saved the Subproject and are now reviewing it, viewSubproject DOES NOT have the\r\n // changes we saved. Therefore, before we saved, we copied the row into $rootScope.savedSubproject.\r\n // If we saved, $rootScope.savedSubproject will not be null, so we must copy the values in from\r\n // the saved Subproject.\r\n //if (($rootScope.savedSubproject !== null) && ($rootScope.savedSubproject.Id === $scope.viewSubproject.Id)) {\r\n //\t$scope.row = angular.copy($rootScope.savedSubproject);\r\n //\t$rootScope.savedSubproject = null;\r\n //}\r\n //else\r\n //\t$scope.row = angular.copy($scope.viewSubproject);\r\n\r\n // Capture the Easting and Northing, so we can tell, during a Save, if they have changed.\r\n $scope.GPSEasting = $scope.row.GPSEasting;\r\n $scope.GPSNorthing = $scope.row.GPSNorthing;\r\n\r\n // Fetch the SdeObjectId for the location associated to this subproject.\r\n angular.forEach($scope.project.Locations, function (loc) {\r\n if (loc.Id === $scope.row.LocationId) {\r\n $scope.SdeObjectId = loc.SdeObjectId;\r\n }\r\n });\r\n\r\n // $rootScope.subprojectFileList gets set in page-sites.ts, scope.matchFilesToSubproject = function () {\r\n $scope.subprojectFileList = $rootScope.subprojectFileList;\r\n\r\n $scope.setupHabitatMetaFields();\r\n\r\n\r\n $scope.subprojectId = $scope.row.Id;\r\n\r\n $scope.showAddDocument = false;\r\n\r\n /* kb commented out 11/21 - not used?\r\n if ((typeof $scope.row.Collaborators !== 'undefined') && ($scope.row.Collaborators !== null))\r\n {\r\n //console.log(\"$scope.row.Collaborators is next...\");\r\n //console.dir($scope.row.Collaborators);\r\n\r\n var strCollaborators = $scope.row.Collaborators;\r\n strCollaborators = strCollaborators.replace(/(\\r\\n|\\r|\\n)/gm, \"\"); // Remove any newlines\r\n strCollaborators = strCollaborators.replace(/[\"\\[\\]]+/g, ''); // Remove any brackets []\r\n strCollaborators = strCollaborators.trim();\r\n console.log(\"strCollaborators = \" + strCollaborators);\r\n\r\n //$scope.row.strCollaborators = null; // dump the previous contents.\r\n $scope.row.strCollaborators = strCollaborators; // reset its value\r\n //console.log(\"$scope.row.strCollaborators = \" + $scope.row.strCollaborators);\r\n if ($scope.row.strCollaborators.indexOf(\"Other\") > -1)\r\n $scope.showOtherCollaborators = true;\r\n\r\n $scope.row.strCollaborators = strCollaborators;\r\n\r\n }\r\n */\r\n\r\n if ($scope.row.FeatureImage !== null) {\r\n $scope.row.ItemFiles = '[{\"Name\":\"' + $scope.row.FeatureImage + '\"}]';\r\n }\r\n\r\n //our metadata fields bind to: row[\"River Vision Touchstone\"] so we need to copy in and out from the columns coming from the db.\r\n Object.keys($scope.HabitatMetaFieldColumns).forEach(function (field) {\r\n values = null;\r\n try {\r\n values = angular.fromJson($scope.row[field]); //copy from the incoming column (multiselect/multiselect-checkbox)\r\n } catch (e) {\r\n values = $scope.row[field].split(\",\"); //copy from the incoming column (select)\r\n }\r\n $scope.row[$scope.HabitatMetaFieldColumns[field]] = values; //map to the metadata name\r\n });\r\n\r\n //ok, all initialized... now:\r\n //mixin the properties and functions to enable the modal file chooser for this controller...\r\n //modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.viewSubproject.Files);\r\n $scope.typeOfFilesToCheck = \"SubprojectFiles\";\r\n modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.typeOfFilesToCheck);\r\n }\r\n\r\n console.log(\"inside ModalCreateHabSubprojectCtrl, after initializing\");\r\n\r\n\r\n //this is called to after the location is saved (if necessary) by the save() function.\r\n $scope.saveFilesAndParent = function () {\r\n\r\n var saveRow = angular.copy($scope.row);\r\n\r\n //copy the bound vars into the column fields to save\r\n if ($scope.HabitatMetaFieldColumns) {\r\n Object.keys($scope.HabitatMetaFieldColumns).forEach(function (col) {\r\n try {\r\n saveRow[col] = angular.toJson($scope.row[$scope.HabitatMetaFieldColumns[col]]);\r\n delete saveRow[$scope.HabitatMetaFieldColumns[col]];\r\n } catch (e) {\r\n console.warn(\"had a problem but carrying on...\");\r\n console.dir(e);\r\n }\r\n });\r\n }\r\n\r\n console.log(\"saveRow (before wiping HabitatItems) is next..\");\r\n console.dir(saveRow);\r\n\r\n saveRow.HabitatItems = undefined;\r\n console.log(\"saveRow (after wiping HabitatItems) is next...\");\r\n console.dir(saveRow);\r\n\r\n //if we are saving a new project...\r\n if ($scope.subprojectId === 0) {\r\n console.log(\"saveFilesAndParent -- we are creating a new one before we save so that we have the subprojectId...\");\r\n\r\n var save_subproject_promise = SubprojectService.saveHabSubproject(parseInt($scope.projectId), saveRow, $scope.saveResults);\r\n save_subproject_promise.$promise.then(function () {\r\n console.log(\"Back from save_subproject_promise!\");\r\n console.log(save_subproject_promise);\r\n\r\n $scope.subprojectId = save_subproject_promise.Id;\r\n $scope.row.Id = save_subproject_promise.Id;\r\n $scope.saveFilesAndParent(); //call ourselves again now that our ID is set.\r\n }, function (error) {\r\n console.error(\"something went wrong: \", error);\r\n });\r\n return;\r\n }\r\n\r\n // Grab a copy of $scope.row, so that if we review the saved records right afterward, it will have the current items,\r\n // rather than the old items.\r\n //$rootScope.savedSubproject = null;\r\n //$rootScope.savedSubproject = angular.copy($scope.row);\r\n\r\n //if we are editing a project, we carry on from here...\r\n var data = {\r\n ProjectId: $scope.project.Id,\r\n SubprojectId: $scope.subprojectId,\r\n SubprojectType: \"Hab\",\r\n FeatureImage: 1\r\n };\r\n\r\n var target = '/api/v1/habsubproject/uploadhabitatfile';\r\n if ($scope.SdeObjectId > 0)\r\n $rootScope.SdeObjectId = $scope.SdeObjectId;\r\n else \r\n $rootScope.SdeObjectId = $scope.OldSdeObjectId;\r\n\r\n $scope.handleFilesToUploadRemove(saveRow, data, target, $upload, $rootScope, $scope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n\r\n }\r\n\r\n //callback that is called from modalFile to do the actual file removal (varies by module)\r\n $scope.modalFile_doRemoveFile = function (file_to_remove, saveRow) {\r\n return SubprojectService.deleteHabitatItemFile($scope.projectId, $scope.subprojectId, saveRow.Id, file_to_remove);\r\n }\r\n\r\n //call back from save above once the files are done processing and we're ready to save the item\r\n $scope.modalFile_saveParentItem = function (saveRow) {\r\n\r\n var promise;\r\n\r\n //we are always here with a subproject id, so first handle saving the location (if new) so that saveHabSubproject doesn't fail (it requires a valid location)\r\n\r\n var loc_promise = null;\r\n\r\n // Are we working with a new point, or an existing one?\r\n if ($scope.IsNewPoint) {\r\n console.log(\" -------------- creating a new point 000000000000000000 \");\r\n // Normally, scope.SdeObjectId is set to 0; if it is > 0, then we just saved a new location and need to handle it.\r\n //console.log(\"promise in $scope.$watch('row.LocationId' is next...\");\r\n //console.dir(promise);\r\n //console.dir($scope);\r\n //$scope.subprojectId = $rootScope.subprojectId = promise.Id;\r\n console.log(\"$scope.subprojectId = \" + $scope.subprojectId);\r\n //$scope.locationId = promise.LocationId;\r\n $scope.locationId = $scope.row.LocationId;\r\n\r\n console.log(\"$scope.locationId = \" + $scope.locationId);\r\n\r\n // Note: In the Save function, we created a location object, but we had no SubprojectId.\r\n // Now we have subprojects, so let's go back right away and update that Location object, providing the new SubprojectId.\r\n var newLocation = angular.copy(DEFAULT_LOCATION_PROJECTION_ZONE);\r\n newLocation.Id = $scope.locationId;\r\n newLocation.Label = saveRow.ProjectName;\r\n newLocation.Description = saveRow.ProjectDescription;\r\n newLocation.GPSEasting = saveRow.GPSEasting;\r\n newLocation.GPSNorthing = saveRow.GPSNorthing;\r\n newLocation.ProjectId = parseInt($scope.projectId);\r\n newLocation.SubprojectId = $scope.subprojectId;\r\n newLocation.SdeObjectId = $scope.SdeObjectId; // We set this in the $scope.save function.\r\n //newLocation.LocationTypeId = LOCATION_TYPE_Hab;\r\n newLocation.WaterBodyId = saveRow.WaterBodyId;\r\n\r\n console.log(\"newLocation is next...\");\r\n console.dir(newLocation);\r\n\r\n loc_promise = CommonService.saveNewProjectLocation($scope.project.Id, newLocation);\r\n\r\n loc_promise.$promise.then(function () {\r\n console.log(\"Adding this to the project locations: \");\r\n console.dir(loc_promise);\r\n console.log(\" -- locations after\");\r\n console.dir($scope.project.Locations);\r\n $scope.project.Locations.push(loc_promise); //add to our list of locations.\r\n\r\n $scope.reloadSubprojectLocations();\r\n\r\n //ok once this is done we can save our hab sub project\r\n promise = SubprojectService.saveHabSubproject(parseInt($scope.projectId), saveRow, $scope.saveResults);\r\n $scope.finishAndClose(promise, saveRow);\r\n });\r\n } else {\r\n console.log(\"We are working with an existing location...\");\r\n\r\n // Get the SdeObjectId for the location.\r\n //$rootScope.SdeObjectId = -1;\r\n angular.forEach($scope.project.Locations, function (loc) {\r\n if (loc.Id === $scope.row.LocationId) {\r\n $rootScope.SdeObjectId = loc.SdeObjectId;\r\n }\r\n });\r\n\r\n var existingLocation = angular.copy(DEFAULT_LOCATION_PROJECTION_ZONE);\r\n existingLocation.Id = $scope.row.LocationId;\r\n existingLocation.Label = saveRow.ProjectName;\r\n existingLocation.Description = saveRow.ProjectDescription;\r\n existingLocation.GPSEasting = saveRow.GPSEasting;\r\n existingLocation.GPSNorthing = saveRow.GPSNorthing;\r\n existingLocation.ProjectId = parseInt($scope.projectId);\r\n existingLocation.SubprojectId = $scope.subprojectId;\r\n //existingLocation.SdeObjectId = $rootScope.SdeObjectId; //$scope.SdeObjectId; // We set this in the $scope.save function.\r\n existingLocation.SdeObjectId = $scope.SdeObjectId; // We set this in the $scope.save function.\r\n //existingLocation.LocationTypeId = LOCATION_TYPE_Hab;\r\n existingLocation.WaterBodyId = saveRow.WaterBodyId;\r\n\r\n console.log(\"$scope.existingLocation is next...\");\r\n console.dir($scope.existingLocation);\r\n\r\n //throw (\"Stopping right here...\");\r\n\r\n // Note this saves new, and updates existing locations.\r\n loc_promise = CommonService.saveNewProjectLocation($scope.project.Id, existingLocation);\r\n\r\n loc_promise.$promise.then(function () {\r\n console.dir(loc_promise);\r\n\r\n $scope.reloadSubprojectLocations();\r\n\r\n //ok once this is done we can save our hab sub project\r\n promise = SubprojectService.saveHabSubproject(parseInt($scope.projectId), saveRow, $scope.saveResults);\r\n\r\n promise.$promise.then(function(){\r\n $scope.finishAndClose(promise, saveRow);\r\n });\r\n });\r\n }\r\n };\r\n\r\n $scope.finishAndClose = function (promise, saveRow) {\r\n if (typeof promise !== 'undefined') {\r\n promise.$promise.then(function () {\r\n\r\n //i guess we overwrite the json we get back with the objects from our saveRow...\r\n promise.Collaborators = saveRow.Collaborators;\r\n promise.Funding = saveRow.Funding;\r\n\r\n console.log(\"and here is our final new edited subproject_edited:\");\r\n $scope.subproject_edited = promise;\r\n console.dir($scope.subproject_edited);\r\n\r\n\r\n console.log(\"and if we do the extends thing:\")\r\n var extended = angular.extend({}, saveRow, promise); //empty + saveRow + promise -- in that order\r\n console.dir(extended);\r\n\r\n $scope.postSaveHabitatSubprojectUpdateGrid($scope.subproject_edited);\r\n\r\n console.log(\"1 typeof $scope.errors = \" + typeof $scope.errors + \", $scope.fileCount = \" + $scope.fileCount + \", $scope.fileProgress = \" + $scope.fileProgress);\r\n if ($scope.fileCount === 0) {\r\n $scope.loading = false; // Stop the fish spinner.\r\n $scope.showCloseButton = true;\r\n $scope.showCancelButton = false;\r\n $scope.showFormItems = false;\r\n }\r\n\r\n if ($scope.filesWithErrors == 0)\r\n $scope.UploadUserMessage = \"All actions successful.\";\r\n else\r\n $scope.UploadUserMessage = \"There was a problem uploading a file. Please try again or contact the Helpdesk if this issue continues.\";\r\n\r\n }, function (error) {\r\n console.error(\"something went wrong: \", error);\r\n }); //promise/then - after saving habitat subproject\r\n } else {\r\n console.log(\"finish and close called without a promise. :( -----------------\");\r\n }\r\n };\r\n\r\n\r\n $scope.selectFunder = function () {\r\n console.log(\"Inside selectFunder...\");\r\n //console.dir($scope);\r\n console.log(\"$scope.row is next...\");\r\n console.dir($scope.row);\r\n\r\n if ($scope.row.fundingName === \"Other\") {\r\n $scope.showOtherFunder = true;\r\n $scope.row.OtherFundingAgency = \"\";\r\n } else {\r\n $scope.showOtherFunder = false;\r\n $scope.row.OtherFundingAgency = 'undefined';\r\n }\r\n\r\n console.log(\"$scope.showOtherAgency = \" + $scope.showOtherAgency);\r\n };\r\n\r\n $scope.selectCollaborator = function () {\r\n console.log(\"Inside selectCollaborator...\");\r\n //console.dir($scope);\r\n console.log(\"$scope.row is next...\");\r\n console.dir($scope.row);\r\n\r\n if ($scope.row.Collaborators === \"Other\") {\r\n $scope.showOtherCollaborators = true;\r\n $scope.row.OtherCollaborators = \"\";\r\n } else {\r\n $scope.showOtherCollaborators = false;\r\n $scope.row.OtherCollaborators = 'undefined';\r\n }\r\n\r\n console.log(\"$scope.OtherCollaborators = \" + $scope.OtherCollaborators);\r\n };\r\n\r\n $scope.enteredSelectedCollaborators = function () {\r\n $scope.showCollaboratorOptions = true;\r\n };\r\n\r\n $scope.enteredSomethingElse = function () {\r\n $scope.showCollaboratorOptions = false;\r\n };\r\n\r\n $scope.collaboratorChanged = function () {\r\n console.log(\"Inside collaboratorChanged...\");\r\n console.log(\"$scope.row is next...\");\r\n console.dir($scope.row);\r\n\r\n $scope.row.strCollaborators = $scope.row.Collaborators.toString();\r\n if ($scope.row.strCollaborators.indexOf(\"Other\") > -1) {\r\n $scope.showOtherCollaborators = true;\r\n } else {\r\n $scope.showOtherCollaborators = false;\r\n $scope.row.OtherCollaborators = null;\r\n }\r\n\r\n console.log(\"$scope.showOtherCollaborators = \" + $scope.showOtherCollaborators);\r\n };\r\n\r\n $scope.addCollaborator = function () {\r\n console.log(\"+C clicked...\");\r\n console.log(\"$scope.row.strCollaborators = \" + $scope.row.strCollaborators);\r\n\r\n if (typeof $scope.row.strCollaborators === 'undefined')\r\n $scope.row.strCollaborators = \"\";\r\n\r\n // We will add a new line at the end, so that the string presents well on the page.\r\n if ($scope.row.Collaborators === \"Other\") {\r\n $scope.row.strCollaborators += $scope.row.OtherCollaborators + \";\\n\";\r\n } else {\r\n $scope.row.strCollaborators += $scope.row.Collaborators + \";\\n\";\r\n }\r\n\r\n console.log(\"$scope.row.strCollaborators = \" + $scope.row.strCollaborators);\r\n };\r\n\r\n $scope.removeCollaborator = function () {\r\n console.log(\"-C clicked...\");\r\n console.log(\"$scope.row.strCollaborators before stripping = \" + $scope.row.strCollaborators);\r\n\r\n // First, strip out the new line characters.\r\n $scope.row.strCollaborators = $scope.row.strCollaborators.replace(/(\\r\\n|\\r|\\n)/gm, \"\");\r\n console.log(\"$scope.row.strCollaborators after stripping = \" + $scope.row.strCollaborators);\r\n\r\n // Note, we still have the trailing semicolon.\r\n // Convert the string to an array, so that we can easily remove the applicable funding agency from the string.\r\n var aryCollaborators = $scope.row.strCollaborators.split(\";\");\r\n\r\n // Next, get rid of that trailing semicolon.\r\n aryCollaborators.splice(-1, 1);\r\n console.dir(aryCollaborators);\r\n\r\n // Now we can continue with the delete action.\r\n var aryCollaboratorsLength = aryCollaborators.length;\r\n\r\n // First check if the user entered an \"other\" funder.\r\n if (($scope.row.Collaborators === \"Other\") && ($scope.row.OtherCollaborators)) {\r\n for (var i = 0; i < aryCollaboratorsLength; i++) {\r\n console.log(\"aryCollaborators[i] = \" + aryCollaborators[i]);\r\n if (aryCollaborators[i].indexOf($scope.row.OtherCollaborators) > -1) {\r\n console.log(\"Found the item...\");\r\n aryCollaborators.splice(i, 1);\r\n console.log(\"Removed the item.\");\r\n\r\n $scope.row.strCollaborators = \"\";\r\n console.log(\"Wiped $scope.row.strCollaborators...\");\r\n\r\n // Rebuild the string now, adding the semicolon and newline after every line.\r\n angular.forEach(aryCollaborators, function (item) {\r\n $scope.row.strCollaborators += item + \";\\n\";\r\n console.log(\"Added item...\");\r\n });\r\n\r\n // Since we found the item, skip to then end to exit.\r\n i = aryCollaboratorsLength;\r\n }\r\n }\r\n } else {\r\n for (var i = 0; i < aryCollaboratorsLength; i++) {\r\n console.log(\"aryCollaborators[i] = \" + aryCollaborators[i]);\r\n if (aryCollaborators[i].indexOf($scope.row.Collaborators) > -1) {\r\n console.log(\"Found the item...\");\r\n aryCollaborators.splice(i, 1);\r\n console.log(\"Removed the item.\");\r\n\r\n $scope.row.strCollaborators = \"\";\r\n console.log(\"Wiped $scope.row.strCollaborators...\");\r\n\r\n // Rebuild the string now, adding the semicolon and newline after every line.\r\n angular.forEach(aryCollaborators, function (item) {\r\n $scope.row.strCollaborators += item + \";\\n\";\r\n console.log(\"Added item...\");\r\n });\r\n\r\n // Since we found the item, skip to then end to exit.\r\n i = aryCollaboratorsLength;\r\n }\r\n }\r\n }\r\n console.log(\"Finished.\");\r\n };\r\n\r\n /*$scope.fundingItemClicked = function(itemChecked) {\r\n console.log(\"itemChecked = \" + itemChecked);\r\n console.log(\"$scope.row.Funding is next...\");\r\n console.dir($scope.row.Funding);\r\n if ($scope.row.Funding.Checked)\r\n $scope.showFundingBox = false;\r\n else\r\n $scope.showFundingBox = true;\r\n\r\n console.log(\"$scope.showFundingBox = \" + $scope.showFundingBox);\r\n };*/\r\n\r\n $scope.addFundingAgency = function () {\r\n console.log(\"+FA clicked...\");\r\n console.log(\"$scope.row.strFunders = \" + $scope.row.strFunders);\r\n //console.log(\"$scope.row.Funding.Amount = \" + $scope.row.Funding.Amount + \", typeof $scope.row.Funding.Amount = \" + typeof $scope.row.Funding.Amount);\r\n console.log(\"$scope.row.fundingAmount = \" + $scope.row.fundingAmount + \", typeof $scope.row.fundingAmount = \" + typeof $scope.row.fundingAmount);\r\n\r\n //if (!$scope.row.Funding.Amount) //|| (!$scope.row.Funding.Amount.trim()))\r\n if (!$scope.row.fundingAmount) //|| (!$scope.row.Funding.Amount.trim()))\r\n {\r\n alert(\"If you add a Funding Agency, you MUST enter a funding amount.\");\r\n return;\r\n }\r\n\r\n // First, capture what we really need for a number ($ and commas are OK, but we strip them out).\r\n //var amt1 = $scope.row.Funding.Amount.replace(/(,|\\$)/gm, \"\"); // Remove the $ and commas.\r\n\r\n // Next, locate the decimal; there should only be one.\r\n //var decimalLoc1 = $scope.row.Funding.Amount.indexOf(\".\"); // Find the decimal.\r\n //var decimalLoc2 = $scope.row.Funding.Amount.lastIndexOf(\".\"); // Find the last decimal; the number can have only one decimal.\r\n\r\n // Remove the decimals.\r\n //var noDecimal = amt1.replace(/./gm, \"\"); // Remove the decimals now.\r\n\r\n // Remove the digits.\r\n //var noDigits = noDecimal.replace(/\\d/gm, \"\"); // Now remove the digits.\r\n\r\n // If anything remains now, the value is not a number.\r\n //console.log(\"decimalLoc1 = \" + decimalLoc1 + \", decimalLoc2 = \" + decimalLoc2);\r\n //if (decimalLoc1 !== decimalLoc2)\r\n //{\r\n //\talert(\"Only one decimal (.) is allowed.\");\r\n //\treturn;\r\n //}\r\n //$scope.row.Funding.Amount = $scope.row.Funding.Amount.replace(/(,|\\$)/gm, \"\");\r\n\r\n //console.log(\"$scope.row.Funding.Name = \" + $scope.row.Funding.Name);\r\n console.log(\"$scope.row.fundingName = \" + $scope.row.fundingName);\r\n //console.log(\"$scope.row.Funding.Amount = \" + $scope.row.Funding.Amount);\r\n console.log(\"$scope.row.fundingAmount = \" + $scope.row.fundingAmount);\r\n\r\n if (typeof $scope.row.strFunders === 'undefined')\r\n $scope.row.strFunders = \"\";\r\n\r\n // We will add a new line at the end, so that the string presents well on the page.\r\n if ($scope.row.fundingName === \"Other\") {\r\n $scope.row.strFunders += $scope.row.OtherFundingAgency + \", \" + $scope.row.fundingAmount + \";\\n\";\r\n } else {\r\n //$scope.row.strFunders += $scope.row.Funding.Name + \", \" + $scope.row.Funding.Amount + \";\\n\";\r\n $scope.row.strFunders += $scope.row.fundingName + \", \" + $scope.row.fundingAmount + \";\\n\";\r\n }\r\n\r\n console.log(\"$scope.row.strFunders = \" + $scope.row.strFunders);\r\n };\r\n\r\n $scope.removeFundingAgency = function () {\r\n console.log(\"- clicked...\");\r\n console.log(\"$scope.row.strFunders before stripping = \" + $scope.row.strFunders);\r\n\r\n // First, strip out the new line characters.\r\n //$scope.row.strFunders = $scope.row.strFunders.replace(/[^\\x00-\\x1F]/gmi, \"\");\r\n $scope.row.strFunders = $scope.row.strFunders.replace(/(\\r\\n|\\r|\\n)/gm, \"\");\r\n console.log(\"$scope.row.strFunders after stripping = \" + $scope.row.strFunders);\r\n\r\n // Note, we still have the trailing semicolon.\r\n // Convert the string to an array, so that we can easily remove the applicable funding agency from the string.\r\n var aryFunders = $scope.row.strFunders.split(\";\");\r\n\r\n // Next, get rid of that trailing semicolon.\r\n aryFunders.splice(-1, 1);\r\n console.dir(aryFunders);\r\n\r\n // Now we can continue with the delete action.\r\n var aryFundersLength = aryFunders.length;\r\n\r\n // First check if the user entered an \"other\" funder.\r\n if (($scope.row.fundingName === \"Other\") && ($scope.row.OtherFundingAgency)) {\r\n for (var i = 0; i < aryFundersLength; i++) {\r\n console.log(\"aryFunders[i] = \" + aryFunders[i]);\r\n if (aryFunders[i].indexOf($scope.row.OtherFundingAgency) > -1) {\r\n console.log(\"Found the item...\");\r\n aryFunders.splice(i, 1);\r\n console.log(\"Removed the item.\");\r\n\r\n $scope.row.strFunders = \"\";\r\n console.log(\"Wiped $scope.row.strFunders...\");\r\n\r\n // Rebuild the string now, adding the semicolon and newline after every line.\r\n angular.forEach(aryFunders, function (item) {\r\n $scope.row.strFunders += item + \";\\n\";\r\n console.log(\"Added item...\");\r\n });\r\n\r\n // Since we found the item, skip to then end to exit.\r\n i = aryFundersLength;\r\n }\r\n }\r\n } else {\r\n for (var i = 0; i < aryFundersLength; i++) {\r\n console.log(\"aryFunders[i] = \" + aryFunders[i]);\r\n if (aryFunders[i].indexOf($scope.row.fundingName) > -1) {\r\n console.log(\"Found the item...\");\r\n aryFunders.splice(i, 1);\r\n console.log(\"Removed the item.\");\r\n\r\n $scope.row.strFunders = \"\";\r\n console.log(\"Wiped $scope.row.strFunders...\");\r\n\r\n // Rebuild the string now, adding the semicolon and newline after every line.\r\n angular.forEach(aryFunders, function (item) {\r\n $scope.row.strFunders += item + \";\\n\";\r\n console.log(\"Added item...\");\r\n });\r\n\r\n // Since we found the item, skip to then end to exit.\r\n i = aryFundersLength;\r\n }\r\n }\r\n }\r\n console.log(\"Finished.\");\r\n };\r\n\r\n\r\n //kick off saving the project.\r\n // if there is a location, saves it\r\n // then hands off to saveFilesAndParent\r\n $scope.save = function () {\r\n console.log(\"Inside ModalCreateHabSubprojectCtrl, save...\");\r\n $scope.subprojectSave = undefined;\r\n $scope.subprojectSave = [];\r\n $scope.subprojectSave.error = false;\r\n $scope.subprojectSave.errorMessage = \"\";\r\n $scope.savingHabSubproject = false;\r\n $scope.row.Funding = []; // Declare this again.\r\n $scope.row.Collaborators = []; // Declare this again.\r\n $scope.createNewSubproject = false;\r\n //$scope.featureImage = null;\r\n $scope.locationId = 0;\r\n $scope.IsNewPoint = false;\r\n\r\n // loadModules([\r\n // \t'esri/symbols/SimpleMarkerSymbol',\r\n // \t'esri/graphic',\r\n // \t'esri/SpatialReference',\r\n // \t'esri/tasks/GeometryService',\r\n // \t'esri/geometry/Point',\r\n // \t'esri/tasks/ProjectParameters',\r\n //\r\n // ]).then(([SimpleMarkerSymbol, Graphic, SpatialReference, GeometryService, Point, ProjectParameters]) => {\r\n\r\n if ((typeof $scope.row.ProjectName === 'undefined') || ($scope.row.ProjectName === null)) {\r\n console.log(\"Project name is empty...\");\r\n $scope.subprojectSave.error = true;\r\n $scope.subprojectSave.errorMessage = \"Project Name cannot be blank! \";\r\n }\r\n\r\n if ((typeof $scope.row.GPSEasting === 'undefined') || (typeof $scope.row.GPSNorthing === 'undefined')) {\r\n console.log(\"Easting or Northing is blank...\");\r\n $scope.subprojectSave.error = true;\r\n $scope.subprojectSave.errorMessage += \"Easting and Northing cannot be blank! \";\r\n }\r\n\r\n if ((typeof $scope.row.ProjectLead === 'undefined') || ($scope.row.ProjectLead === null)) {\r\n console.log(\"Project Lead is empty...\");\r\n $scope.subprojectSave.errorMessage += \"Project Lead cannot be blank! \";\r\n $scope.subprojectSave.error = true;\r\n }\r\n\r\n if ($scope.subprojectSave.error)\r\n return;\r\n\r\n\r\n console.log(\"$scope.row, full is next...\");\r\n console.dir($scope.row);\r\n\r\n // Capture the AddDocument flag, before discarding it.\r\n $scope.addDocument = $scope.row.AddDocument;\r\n $scope.row.AddDocument = null;\r\n\r\n if (!$scope.row.LocationId)\r\n $scope.row.LocationId = 0;\r\n\r\n /********* A note about time start ***********/\r\n /* \tWhen we save the subproject, when the backend converts the ProjectStartDate and ProjectEndDate to UTC (adds 8 hours).\r\n So, with an initial saved time of 0000, the backend converts it to 0800.\r\n Each time we save then, the time will have 8 hours added to it. On the 4th save, it will go into the next day.\r\n To avoid this, we take the saved date (now 0800), and set it back to 0000.\r\n This will keep the time in the same spot (keep it from changing).\r\n There may be a better way to handle this issue, but this technique works too...\r\n */\r\n\r\n if ($scope.row.ProjectStartDate) {\r\n var psDate = new Date(Date.parse($scope.row.ProjectStartDate));\r\n $scope.row.ProjectStartDate = setDateTo0000(psDate);\r\n }\r\n\r\n if ($scope.row.ProjectEndDate) {\r\n var peDate = new Date(Date.parse($scope.row.ProjectEndDate));\r\n $scope.row.ProjectEndDate = setDateTo0000(peDate);\r\n }\r\n /********* A note about time end ***********/\r\n\r\n console.log(\"$scope.addDocument = \" + $scope.addDocument);\r\n console.log(\"$scope.row, after del is next...\");\r\n console.dir($scope.row);\r\n\r\n $scope.saveResults = {};\r\n //console.log(\"$scope is next...\");\r\n //console.dir($scope);\r\n\r\n // First, a little cleanup.\r\n $scope.subprojectSave.error = false;\r\n $scope.subprojectSave.errorMessage = \"\";\r\n\r\n // First Foods\r\n console.log(\"First Foods = \" + $scope.row.FirstFoods);\r\n\r\n // Funding\r\n console.log(\"$scope.row.Funding is next...\");\r\n console.dir($scope.row.Funding);\r\n console.log(\"type of $scope.row.Funding = \" + typeof $scope.row.Funding);\r\n\r\n //if ($scope.row.Funding.length > 0)\r\n if ((typeof $scope.row.strFunders !== 'undefined') && ($scope.row.strFunders !== null) && ($scope.row.strFunders.length > 0)) {\r\n if ($scope.row.strFunders.length > 0) {\r\n $rootScope.fundersPresent = $scope.fundersPresent = true;\r\n var strFunders = $scope.row.strFunders.replace(/(\\r\\n|\\r|\\n)/gm, \"\"); // Remove all newlines (used for presentation).\r\n var aryFunders = $scope.row.strFunders.split(\";\"); //\r\n aryFunders.splice(-1, 1);\r\n\r\n angular.forEach(aryFunders, function (item) {\r\n console.log(\"item = \" + item);\r\n var funderRecord = item.split(\",\");\r\n\r\n var fundingOption = new Object();\r\n //fundingOption.Checked = false;\r\n // @ts-ignore\r\n fundingOption.Id = 0;\r\n // @ts-ignore\r\n fundingOption.Name = \"\";\r\n // @ts-ignore\r\n fundingOption.Amount = 0;\r\n\r\n // @ts-ignore\r\n fundingOption.Name = funderRecord[0].trim();\r\n // @ts-ignore\r\n console.log(\"fundingOption.Name = \" + fundingOption.Name);\r\n\r\n // Get the Id for the funder from funderList.\r\n //angular.forEach($scope.funderList, function(funder) {\r\n //\tif (funder.Name = fundingOption.Name)\r\n //\t\tfundingOption.Id = funder.Id;\r\n //});\r\n // @ts-ignore\r\n fundingOption.Amount = parseFloat(funderRecord[1]);\r\n // @ts-ignore\r\n console.log(\"fundingOption.Amount = \" + fundingOption.Amount);\r\n\r\n $scope.row.Funding.push(fundingOption);\r\n });\r\n $scope.row.strFunders = undefined;\r\n }\r\n }\r\n\r\n // Collaborators\r\n console.log(\"$scope.row.strCollaborators = \" + $scope.row.strCollaborators);\r\n console.log(\"type of $scope.row.strCollaborators = \" + typeof $scope.row.strCollaborators);\r\n\r\n if ((typeof $scope.row.strCollaborators !== 'undefined') && ($scope.row.strCollaborators !== null) && ($scope.row.strCollaborators.length > 0)) {\r\n $rootScope.collaboratorPresent = $scope.collaboratorPresent = true;\r\n var strCollaborators = $scope.row.strCollaborators.replace(/(\\r\\n|\\r|\\n)/gm, \"\"); // Remove all newlines (used for presentation).\r\n console.log(\"strCollaborators = \" + strCollaborators);\r\n var aryCollaborators = $scope.row.strCollaborators.split(\";\"); //\r\n //aryCollaborators.splice(-1, 1);\r\n\r\n angular.forEach(aryCollaborators, function (item) {\r\n //After the split on \";\", one of the lines is a newline. We need to watch for and omit that line.\r\n //console.log(\"item = X\" + item + \"X\");\r\n //item = item.replace(/(\\r\\n|\\r|\\n)/gm, \"\");\r\n item = item.replace(/\\n/g, \"\");\r\n //console.log(\"item = X\" + item + \"X\");\r\n\r\n if (item.length > 0) {\r\n var collaboratorOption = new Object();\r\n // @ts-ignore\r\n collaboratorOption.Id = 0;\r\n // @ts-ignore\r\n collaboratorOption.Name = \"\";\r\n // @ts-ignore\r\n collaboratorOption.Name = item.trim();\r\n //console.log(\"collaboratorOption.Name = \" + collaboratorOption.Name);\r\n\r\n $scope.row.Collaborators.push(collaboratorOption);\r\n }\r\n });\r\n $scope.row.strCollaborators = undefined;\r\n }\r\n\r\n var subprojectId = 0;\r\n // Are we creating a new Subproject, or editing an existing one?\r\n if ($scope.viewSubproject) {\r\n console.log(\"We are editing an existing subproject; no new location needed...\");\r\n $scope.editing = true;\r\n subprojectId = $scope.viewSubproject.Id;\r\n\r\n //$scope.OldSdeObjectId = $rootScope.SdeObjectId;\r\n\r\n //$rootScope.savedSubproject = null;\r\n // $rootScope.savedSubproject = angular.copy($scope.row);\r\n\r\n // The location SdeObjectId update involves creating a new point, and deleting the old one.\r\n // Therefore, we only want to update the location, if the Easting or Northing has changed.\r\n // Later in the process, the Easting and Northing get converted into x, y values that get stored in sdevector.\r\n // Therefore, if the Easting and Northing was changed, we must convert them to x, y values first.\r\n if (($scope.GPSEasting !== $scope.row.GPSEasting) || ($scope.GPSNorthing !== $scope.row.GPSNorthing)) {\r\n\r\n console.log(\"Easting or Northing changed; updating the location...\");\r\n $scope.isNewPoint = false;\r\n\r\n $scope.EastingOrNorthingChanged = true;\r\n $scope.row.OldSdeObjectId = $scope.OldSdeObjectId;\r\n\r\n // Now setup things for the new point.\r\n //nad83 zone 11... might have to have this as a list somehwere...\r\n var inSR = new SpatialReference({ wkt: NAD83_SPATIAL_REFERENCE }); //esri/SpatialReference\r\n var outSR = new SpatialReference({ wkid: 102100 });\r\n\r\n //$scope.newPoint = new Point(outputpoint[0], outSR);\r\n $scope.newPoint = new Point({x: $scope.row.GPSEasting, y: $scope.row.GPSEasting, spatialReference: inSR}); // esri/geometry/Point\r\n \r\n //convert spatial reference\r\n //var PrjParams = new tasks.ProjectParameters();\r\n var PrjParams = new ProjectParameters(); //esri/tasks/ProjectParameters\r\n\r\n PrjParams.geometries = [$scope.newPoint];\r\n // PrjParams.outSR is not set yet, so we must set it also.\r\n //PrjParams.outSR = outSR; // Does not exist in supportProjectParameters\r\n PrjParams.outSpatialReference = outSR;\r\n\r\n //do the projection (conversion)\r\n // PrjParams has Easting and Northing; outputpoint has x, y values.\r\n // The x, y values are what get sent/stored in the points table in sdevector.\r\n\r\n // The following are nested, because otherwise the async process will call\r\n // a service and then continue on.\r\n GeometryService.project(GEOMETRY_SERVICE_URL, PrjParams).then((outputpoint) => { //esri/tasks/GeometryService\r\n\r\n $scope.newAddPoint = new Point(outputpoint[0]);\r\n\r\n symbol = new SimpleMarkerSymbol({\r\n style: \"circle\",\r\n color: \"#00ff00\",\r\n size: \"8px\",\r\n });\r\n\r\n var newGraphic = new Graphic({geometry: $scope.newAddPoint, symbol: symbol});\r\n //$scope.map.graphics.add(newGraphic);\r\n\r\n if (ENVIRONMENT == \"prod\")\r\n {\r\n $scope.map.locationLayer = new FeatureLayer({url:CDMS_POINTS_PROD_URL});\r\n }\r\n else\r\n {\r\n $scope.map.locationLayer = new FeatureLayer({url:CDMS_POINTS_TEST_URL});\r\n }\r\n console.log(\"$scope.map.locationLayer is next...\");\r\n console.dir($scope.map.locationLayer);\r\n\r\n //$scope.map.locationLayer.applyEdits([$scope.newGraphic], null, null).then(function (addResults) {\r\n $scope.map.locationLayer.applyEdits({addFeatures: [newGraphic]}).then (function (addResults) {\r\n \r\n if ((addResults.addFeatureResults) && (addResults.addFeatureResults[0].objectId))\r\n { \r\n $scope.row.SdeObjectId = $scope.SdeObjectId = addResults.addFeatureResults[0].objectId;\r\n console.log(\"Added new point! \" + $scope.row.SdeObjectId);\r\n $scope.setSdeObjectId($scope.SdeObjectId);\r\n }\r\n else \r\n {\r\n $scope.SaveMessage = \"There was a problem adding the new location.\";\r\n console.dir(addResults);\r\n }\r\n\r\n //throw \"Stopping right here...\";\r\n \r\n // Now that we added the new point, we must delete the old point.\r\n // Reuse the inSR\r\n // Reuse the outSR\r\n\r\n $scope.deletePoint = new Point({x: $scope.GPSEasting, y: $scope.GPSNorthing, spatialReference: inSR});\r\n\r\n //convert spatial reference\r\n var PrjParams = new ProjectParameters();\r\n PrjParams.outSpatialReference = outSR;\r\n PrjParams.geometries = [$scope.deletePoint];\r\n\r\n // Do the projection (conversion)\r\n GeometryService.project(GEOMETRY_SERVICE_URL, PrjParams).then((delOutputpoint) => {\r\n // Reuse symbol, see up above (about line 956)\r\n\r\n $scope.PointToDelete = new Point(delOutputpoint[0]);\r\n\r\n //throw \"Stopping right here...\";\r\n\r\n var attributes = {OBJECTID: $scope.OldSdeObjectId};\r\n\r\n var deleteGraphic = new Graphic({geometry: $scope.PointToDelete, symbol: symbol, attributes: attributes});\r\n\r\n // Note: You cannot just pass the point to delete; it must be in a graphic object,\r\n // or the code dies in dojo-land, which is different than what is shown in \r\n // ArcGIS documenation on the service interface.\r\n $scope.map.locationLayer.applyEdits({deleteFeatures: [deleteGraphic]}).then (function (deleteResults) { // This works\r\n\r\n if (deleteResults && deleteResults.deleteFeatureResults.length === 0)\r\n {\r\n $scope.SaveMessage = \"The location did not exist in SDE.\";\r\n console.log($scope.SaveMessage);\r\n console.dir(deleteResults);\r\n\r\n //CommonService.updateLocationAction($scope.project.Id, $scope.row.LocationId, $scope.row.SdeObjectId, $scope.row);\r\n }\r\n else if (deleteResults && deleteResults.deleteFeatureResults[0] && deleteResults.deleteFeatureResults[0].objectId) \r\n {\r\n console.log(\"Deleted old habitat point! \" + $scope.row.SdeObjectId);\r\n\r\n //CommonService.updateLocationAction($scope.project.Id, $scope.row.LocationId, $scope.row.SdeObjectId, $scope.row);\r\n }\r\n else {\r\n $scope.SaveMessage = \"There was a problem deleting that location.\";\r\n console.log($scope.SaveMessage);\r\n console.dir(deleteResults);\r\n }\r\n\r\n $rootScope.ProjectId = $scope.project.Id;\r\n\r\n $scope.saveFilesAndParent();\r\n\r\n }, function (deleteErr: any) {\r\n console.log(\"Apply Edits - Delete Habitat site location - failed: \" + deleteErr.message + \" > \" + deleteErr.innerHTML);\r\n }); // Delete applyEdits\r\n }); // GeometryService\r\n }, function (addErr: any) {\r\n $scope.SaveMessage = \"There was a problem adding the new Habitat site location.\";\r\n console.log(\"Apply Edits - Add - failed: \" + addErr.message + \" > \" + addErr.innerHTML);\r\n }); // Add applyEdits\r\n \r\n //throw \"Stopping right here...\";\r\n });\r\n\r\n // If we use src/map/habitat-map/habitat-map.component.ts, the following block will be useful.\r\n // However, this block would not behave for us, so we reverted to the old way, implemented above.\r\n // $scope.$emit('editLocation', {\r\n // 'Update': true,\r\n // 'ProjectId': $scope.project.Id,\r\n // 'Location': $scope.row,\r\n // 'IsFirstRun': true\r\n // })\r\n // $uibModalInstance.close(\r\n // // on close this information is sent to the habitat-map component\r\n // {\r\n // 'Update': true,\r\n // 'ProjectId': $scope.project.Id,\r\n // 'Location': $scope.row,\r\n // }\r\n // );\r\n } else {\r\n // Neither the easting, nor the northing changed, so just save the update in CDMS.\r\n // We don't need to deal with SDE.\r\n $scope.saveFilesAndParent();\r\n }\r\n\r\n //ok -- everything is set to save; we are editing a subproject don't have a new location to save; hand off to next step.\r\n\r\n } else {\r\n\r\n //$scope.viewSubproject either does not exist or is null, so we are creating a new Subproject.\r\n // Next, we add/save the location.\r\n subprojectId = $scope.subprojectId;\r\n\r\n console.log(\"This is a new subproject; creating a new location...\");\r\n var newLocation = angular.copy(DEFAULT_LOCATION_PROJECTION_ZONE);\r\n newLocation.Label = $scope.row.ProjectName;\r\n newLocation.Description = $scope.row.ProjectDescription;\r\n newLocation.GPSEasting = $scope.row.GPSEasting;\r\n newLocation.GPSNorthing = $scope.row.GPSNorthing;\r\n newLocation.ProjectId = parseInt($scope.projectId);\r\n //newLocation.LocationTypeId = LOCATION_TYPE_Hab;\r\n newLocation.WaterBodyId = $scope.row.WaterBodyId;\r\n //newLocation.SubprojectId = $scope.subprojectId; // When we are creating a new subproject, we do not have the subprojectId yet; this is from the old one.\r\n console.log(\"newLocation is next...\");\r\n console.dir(newLocation);\r\n\r\n //nad83 zone 11... might have to have this as a list somehwere...\r\n var inSR = new SpatialReference({wkt: NAD83_SPATIAL_REFERENCE}); //esri/SpatialReference\r\n var outSR = new SpatialReference({wkid: 102100});\r\n\r\n //$scope.newPoint = new Point(outputpoint[0], outSR);\r\n $scope.newPoint = new Point({x: $scope.row.GPSEasting, y: $scope.row.GPSNorthing, spatialReference: inSR}); // esri/geometry/Point\r\n\r\n //convert spatial reference\r\n var PrjParams = new ProjectParameters(); //esri/tasks/ProjectParameters\r\n\r\n PrjParams.geometries = [$scope.newPoint];\r\n // PrjParams.outSR is not set yet, so we must set it also.\r\n //PrjParams.outSR = outSR; // Does not exist in supportProjectParameters\r\n PrjParams.outSpatialReference = outSR;\r\n\r\n GeometryService.project(GEOMETRY_SERVICE_URL, PrjParams).then((outputpoint) => { //esri/tasks/GeometryService\r\n \r\n $scope.newAddPoint = new Point(outputpoint[0]); // esri/geometry/Point\r\n \r\n symbol = new SimpleMarkerSymbol({\r\n style: \"circle\",\r\n color: \"#00ff00\",\r\n size: \"8px\",\r\n });\r\n\r\n var newGraphic = new Graphic({geometry: $scope.newAddPoint, symbol: symbol});\r\n\r\n if (ENVIRONMENT == \"prod\")\r\n {\r\n $scope.map.locationLayer = new FeatureLayer({url:CDMS_POINTS_PROD_URL});\r\n }\r\n else\r\n {\r\n $scope.map.locationLayer = new FeatureLayer({url:CDMS_POINTS_TEST_URL});\r\n }\r\n console.log(\"$scope.map.locationLayer is next...\");\r\n console.dir($scope.map.locationLayer);\r\n\r\n $scope.map.locationLayer.applyEdits({addFeatures: [newGraphic]}).then (function (addResults) {\r\n \r\n if ((addResults.addFeatureResults) && (addResults.addFeatureResults[0].objectId))\r\n { \r\n $scope.row.SdeObjectId = $scope.SdeObjectId = addResults.addFeatureResults[0].objectId;\r\n console.log(\"Added new point! \" + $scope.row.SdeObjectId);\r\n $scope.setSdeObjectId($scope.SdeObjectId);\r\n $scope.IsNewPoint = true;\r\n\r\n var promise = CommonService.saveNewProjectLocation($scope.project.Id, newLocation);\r\n promise.$promise.then(function (result) {\r\n console.log(\"done and success!\");\r\n console.log(\"result is next...\");\r\n console.dir(result);\r\n angular.forEach(result, function (item, key) {\r\n //console.log(\"key = \" + key + \", item is next...\");\r\n //console.dir(item);\r\n if (key === \"Id\") {\r\n //$scope.locationId = promise.LocationId;\r\n //$scope.subproject_row.LocationId = item;\r\n $scope.row.LocationId = item;\r\n //console.log(\"$scope.subproject_row.LocationId = \" + $scope.subproject_row.LocationId);\r\n console.log(\"$scope.row.LocationId = \" + $scope.row.LocationId);\r\n \r\n //ok - new location is saved and we are prepped to save the subproject so handoff to next step:\r\n $scope.saveFilesAndParent();\r\n }\r\n });\r\n });\r\n \r\n //$scope.saveFilesAndParent();\r\n }\r\n else \r\n {\r\n $scope.SaveMessage = \"There was a problem adding the new location.\";\r\n console.dir(addResults);\r\n }\r\n\r\n //throw \"Stopping right here...\";\r\n \r\n }, function (addErr: any) {\r\n $scope.SaveMessage = \"There was a problem adding the new Habitat site location.\";\r\n console.log(\"Apply Edits - Add - failed: \" + addErr.message + \" > \" + addErr.innerHTML);\r\n }); // Add applyEdits\r\n\r\n //throw \"Stopping right here...\";\r\n\r\n //$scope.saveFilesAndParent();\r\n\r\n }); // Add GeometryService\r\n \r\n\r\n \r\n // This uses src/map/habitat-map/habitat-map.component.ts\r\n // $scope.$emit('editLocation',\r\n // {\r\n // 'ProjectId': $scope.project.Id,\r\n // 'Location': newLocation,\r\n // 'IsFirstRun': true\r\n // }\r\n // )\r\n }\r\n\r\n // If we had a problem saving the location, stop here and do not save the subproject.\r\n if ($scope.subprojectSave.errorMessage.length > 0) {\r\n console.log(\"Had a problem saving the location. Stopping the save...\");\r\n return;\r\n }\r\n // }); // require\r\n };\r\n\r\n $scope.savePoint = function (feature) {\r\n\r\n if (feature.hasOwnProperty(('update'))) {\r\n //$scope.newPoint = true;\r\n $scope.IsNewPoint = true;\r\n if (feature.update.hasOwnProperty('nonexistent')) {\r\n this.SdeObjectId = feature.update.nonexistent[2];\r\n // this.updateLocation.emit({update: { nonexistent: [this.project.Id, this.row.LocationId, this.row.SdeObjectId]}});\r\n CommonService.updateLocationAction(feature.update.nonexistent[0], feature.update.nonexistent[1], feature.update.nonexistent[2]);\r\n } else if (feature.update.hasOwnProperty('deleted')) {\r\n CommonService.updateLocationAction(feature.update.deleted[0], feature.update.deleted[1], feature.update.deleted[2]);\r\n }\r\n $scope.saveFilesAndParent();\r\n\r\n } else if (feature.hasOwnProperty('new')) {\r\n //$scope.newPoint = true;\r\n $scope.IsNewPoint = true;\r\n\r\n $rootScope.SdeObjectId = $scope.SdeObjectId = this.SdeObjectId = feature.new[1].SdeObjectId;\r\n\r\n var promise = CommonService.saveNewProjectLocation(feature.new[0], feature.new[1]);\r\n promise.$promise.then(function (result) {\r\n console.log(\"done and success!\");\r\n console.log(\"result is next...\");\r\n console.dir(result);\r\n angular.forEach(result, function (item, key) {\r\n //console.log(\"key = \" + key + \", item is next...\");\r\n //console.dir(item);\r\n if (key === \"Id\") {\r\n //$scope.locationId = promise.LocationId;\r\n //$scope.subproject_row.LocationId = item;\r\n $scope.row.LocationId = item;\r\n //console.log(\"$scope.subproject_row.LocationId = \" + $scope.subproject_row.LocationId);\r\n console.log(\"$scope.row.LocationId = \" + $scope.row.LocationId);\r\n\r\n //ok - new location is saved and we are prepped to save the subproject so handoff to next step:\r\n $scope.saveFilesAndParent();\r\n }\r\n });\r\n\r\n //reload the project -- this will cause the locations and locationlayer to be reloaded! wow! go AngularJS! :)\r\n // $scope.refreshProjectLocations();\r\n //$uibModalInstance.dismiss(); // This is from the ActivitiesConroller, ModalAddLocationCtrl. We have this down below, so we do not need it here; it causes an error.\r\n });\r\n // $scope.saveFilesAndParent();\r\n } else {\r\n console.log('error saving that location')\r\n }\r\n\r\n // $scope.saveFilesAndParent();\r\n }\r\n\r\n $scope.close = function () {\r\n console.log(\"Inside $scope.close...\");\r\n $uibModalInstance.close($scope.row);\r\n window.location.reload();\r\n };\r\n\r\n $scope.cancel = function () {\r\n //if they've made file changes, the files appear as if they are existing files in the ItemFiles array...\r\n // we need to reset it back to the real, actual existing files.\r\n\r\n if ($scope.originalExistingFiles && $scope.originalExistingFiles.hasOwnProperty($scope.file_field)) {\r\n $scope.row.ItemFiles = $scope.originalExistingFiles[$scope.file_field];\r\n }\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n\r\n }\r\n];\r\n\r\nexport default modal_create_habitat_subproject;\r\n","\r\n//ActivityParser\r\n// Works with a wide datasheet that includes both headers and details that might represent multiple locations/days of activity\r\n// This full sheet idea makes it easier for data entry and importing, but we need to use this function to break\r\n// them out into individual activities.\r\n/* when we're done our data will look like this:\r\n\r\n{ \"activities\":{\"76_10/1/2013\":{\"LocationId\":\"76\",\"ActivityDate\":\"2013-10-01T07:00:00.000Z\",\"Header\":{\"WaterTemperature\":4,\"TimeStart\":\"\",\"TimeEnd\":\"\",\"WaterFlow\":\"\",\"AirTemperature\":\"\"},\"Details\":[{\"locationId\":\"76\",\"activityDate\":\"10/1/2013\",\"WaterTemperature\":4,\"Species\":\"CHS\",\"Sex\":\"M\",\"Origin\":\"HAT\",\"Mark\":\"[\\\"None\\\"]\",\"Disposition\":\"PA\",\"ForkLength\":488,\"Weight\":\"\",\"TotalLength\":\"\",\"GeneticSampleId\":\"\",\"RadioTagId\":\"\",\"FishComments\":\"\",\"TimeStart\":\"\",\"TimeEnd\":\"\",\"WaterFlow\":\"\",\"AirTemperature\":\"\",\"Solution\":\"\",\"SolutionDosage\":\"\"}]}},\r\n \"errors\":false,\r\n \"UserId\":1,\r\n \"DatasetId\":5\r\n}\r\n\r\n*/\r\n\r\nimport * as angular from 'angular';\r\nimport {formatDateFromUtcToFriendly, toExactISOString} from '../../common/common-functions';\r\n\r\nconst activity_parser = ['Logger',\r\n function (Logger) {\r\n var service = {\r\n\r\n parseMetricsActivity: function (heading, fields, qaStatuses) {\r\n console.log(\"Inside service, ActivityParser, parseMetricsActivity...\");\r\n console.log(\"heading is next...\");\r\n console.dir(heading);\r\n console.log(\"qaStatuses is next\");\r\n console.dir(qaStatuses);\r\n var activities = { activities: {}, errors: false };\r\n\r\n //var tmpdata = data.slice(0); // create a copy.\r\n\r\n var key = service.makeKey(heading, null);\r\n\r\n if (key) {\r\n /*if(tmpdata.length > 0) {\r\n angular.forEach(tmpdata, function(data_row, index){\r\n //note we mash the heading fields into our row -- addActivity splits them out appropriately.\r\n //service.addActivity(activities, key, angular.extend(data_row, heading), fields);\r\n service.addActivity(activities, key, angular.extend(data_row, heading), fields, qaStatuses);\r\n });\r\n }\r\n else\r\n\t\t\t\t\t{*/\r\n //at least do a single.\r\n console.log(\"trying a single with no rows!\");\r\n //service.addActivity(activities, key, heading, fields);\r\n service.addActivity(activities, key, heading, fields, qaStatuses);\r\n //}\r\n }\r\n else {\r\n service.addError(activities, 0, \"Both a Location and ActivityDate are required to save a new Activity.\");\r\n }\r\n\r\n\r\n return activities;\r\n\r\n },\r\n\r\n //parseSingleActivity: function(heading, data, fields) {\r\n parseSingleActivity: function (heading, data, fields, qaStatuses) {\r\n console.log(\"Inside activity-parser.js, ActivityParser, parseSingleActivity...\");\r\n //console.log(\"heading is next...\");\r\n //console.dir(heading);\r\n\t\t\t\t//console.log(\"data is next...\"); // TotalTimeFished was 0, and is now 00:00 again... here\r\n\t\t\t\t//console.dir(data);\r\n //console.log(\"qaStatuses is next\");\r\n //console.dir(qaStatuses);\r\n var activities = { activities: {}, errors: false };\r\n\r\n var tmpdata = data.slice(0); // create a copy.\r\n\r\n var key = service.makeKey(heading, null);\r\n\r\n if (key) {\r\n if (tmpdata.length > 0) {\r\n angular.forEach(tmpdata, function (data_row, index) {\r\n //note we mash the heading fields into our row -- addActivity splits them out appropriately.\r\n //service.addActivity(activities, key, angular.extend(data_row, heading), fields);\r\n service.addActivity(activities, key, angular.extend(data_row, heading), fields, qaStatuses);\r\n });\r\n }\r\n else {\r\n //at least do a single.\r\n console.log(\"trying a single with no rows!\");\r\n //service.addActivity(activities, key, heading, fields);\r\n service.addActivity(activities, key, heading, fields, qaStatuses);\r\n }\r\n }\r\n else {\r\n service.addError(activities, 0, \"Both a Location and ActivityDate are required to save a new Activity.\");\r\n activities.errors = true;\r\n }\r\n\r\n\r\n return activities;\r\n\r\n },\r\n\r\n //parses an array of header+detail fields into discrete activities\r\n //parseActivitySheet: function(data, fields){\r\n //parseActivitySheet: function(data, fields, datastoreTablePrefix, callingPage){\r\n parseActivitySheet: function (data, fields, datastoreTablePrefix, callingPage, qaStatuses) {\r\n console.log(\"Inside services, parseActivitySheet...called by \" + callingPage);\r\n console.log(\"data is next...\");\r\n console.dir(data);\r\n console.log(\"qaStatuses is next...\");\r\n console.dir(qaStatuses);\r\n var activities = { activities: {}, errors: false };\r\n\r\n var tmpdata = data.slice(0); //create a copy\r\n\r\n var activityDateToday = new Date(); //need an activity date to use for the whole sheet, if we need to provide one.\r\n\r\n\t\t\t\t/* If we are adding data from a temperature logger, we will have lots of data with the same FieldActivityType (Data File Upload).\r\n\t\t\t\t* In this case, the FieldActivityType will be the same, but the ReadingDateTime will change for each record.\r\n\t\t\t\t* However, if the user adds several different other activities using the Data Entry Sheet, the FieldActivityType could be the same,\r\n\t\t\t\t* but the ReadingDateTime will change. Therefore, we must check the FieldActivityType AND the ReadingDateTime of each non-Data File Upload\r\n\t\t\t\t* record we are saving. If either value is different from the last record, the activity has changed and we must get/create a new key,\r\n\t\t\t\t* so that the record is stored as a new activity.\r\n\t\t\t\t*/\r\n var holdRow = tmpdata[0];\r\n var rowCount = 0;\r\n angular.forEach(tmpdata, function (row, index) {\r\n if ((typeof datastoreTablePrefix !== 'undefined') && (datastoreTablePrefix === \"WaterTemp\") &&\r\n (typeof callingPage !== 'undefined') && (callingPage === \"DataEntrySheet\")) {\r\n\r\n console.log(\"holdRow is next...\");\r\n console.dir(holdRow);\r\n\r\n console.log(\"holdRow.FieldActivityType.toString() = \" + holdRow.FieldActivityType.toString());\r\n console.log(\"row.FieldActivityType.toString() = \" + row.FieldActivityType.toString());\r\n console.log(\"holdRow.ReadingDateTime.toString() = \" + holdRow.ReadingDateTime.toString());\r\n console.log(\"row.ReadingDateTime.toString() = \" + row.ReadingDateTime.toString());\r\n\r\n if (rowCount > 0) {\r\n //var tmpReadingDateTime = formatDateFromFriendlyToUtc(row.ReadingDateTime.toString());\r\n }\r\n\r\n // If the FieldActivityType IS NOT \"Data File Upload\", we need to check two more things.\r\n if (row.FieldActivityType.toString().indexOf(\"Data File Upload\") === -1) {\r\n console.log(\"We are working with something other than Data File Upload.\");\r\n // If rowCount = 0, we are on the first record, with nothing to compare with but itself.\r\n if (rowCount > 0) {\r\n // If either the FieldActivityType or the ReadingDateTime are different, the record is a new activity,\r\n // so we need a new date for the key.\r\n if ((row.FieldActivityType.toString().indexOf(holdRow.FieldActivityType.toString()) === -1) ||\r\n (row.ReadingDateTime.toString().indexOf(holdRow.ReadingDateTime.toString()) === -1)) {\r\n console.log(\"Something changed...\");\r\n activityDateToday = new Date();\r\n }\r\n }\r\n }\r\n\r\n\r\n var key = service.makeKey(row, activityDateToday);\r\n console.log(\"row...index\");\r\n console.dir(row);\r\n console.dir(index);\r\n console.log(\"key...\");\r\n console.dir(key);\r\n\r\n if (key) {\r\n //service.addActivity(activities, key, row, fields);\r\n service.addActivity(activities, key, row, fields, qaStatuses);\r\n }\r\n else\r\n service.addError(activities, index, \"Please check for errors, something required is missing to save a new Activity.\");\r\n\r\n rowCount++;\r\n holdRow = row;\r\n\r\n console.log(\"holdRow.ReadingDateTime = \" + holdRow.ReadingDateTime);\r\n var utcFormatSeparatorLoc = holdRow.ReadingDateTime.toString().indexOf(\"-\");\r\n console.log(\"utcFormatSeparatorLoc = \" + utcFormatSeparatorLoc);\r\n if (utcFormatSeparatorLoc > -1) {\r\n console.log(\"Reformatting holdRow.ReadingDateTime to friendly date format...\");\r\n holdRow.ReadingDateTime = formatDateFromUtcToFriendly(holdRow.ReadingDateTime);\r\n console.log(\"Reformatted holdRow.ReadingDateTime = \" + holdRow.ReadingDateTime);\r\n }\r\n }\r\n else {\r\n var key = service.makeKey(row, activityDateToday);\r\n\r\n if (key) {\r\n //service.addActivity(activities, key, row, fields);\r\n service.addActivity(activities, key, row, fields, qaStatuses);\r\n }\r\n else\r\n service.addError(activities, index, \"Please check for errors, something required is missing to save a new Activity.\");\r\n }\r\n\r\n //console.log(\"At the end of the angular.forEach, going back to the top...\");\r\n });\r\n\r\n return activities;\r\n },\r\n\r\n addError: function (activities, index, message) {\r\n console.log(\"Inside services.js, parseActivitySheet, addError...\");\r\n if (!activities.errors) {\r\n activities.errors = {};\r\n }\r\n activities.errors.saveError = message;\r\n },\r\n\r\n\r\n makeKey: function (row, activityDateToday) {\r\n\r\n // Some codepaths pass null for activityDateToday\r\n if (activityDateToday == null)\r\n activityDateToday = new Date();\r\n\r\n if (!row.activityDate)\r\n row.activityDate = toExactISOString(activityDateToday);\r\n\r\n if (row.locationId && row.activityDate)\r\n return location + '_' + row.activityDate;\r\n\r\n return undefined;\r\n },\r\n\r\n //addActivity: function(activities, key, row, fields){\r\n addActivity: function (activities, key, row, fields, qaStatuses) {\r\n //console.log(\"Inside services, addActivity...\");\r\n\t\t\t\t//console.log(\"activities is next...\");\r\n\t\t\t\t//console.dir(activities);\r\n\t\t\t\t//console.log(\"key is next...\");\r\n\t\t\t\t//console.dir(key);\r\n\t\t\t\t//console.log(\"row is next...\");\r\n\t\t\t\t//console.dir(row);\r\n //console.log(\"qaStatuses is next...\");\r\n //console.dir(qaStatuses);\r\n if (row.Timezone)\r\n var currentTimezone = row.Timezone;\r\n\r\n if (!activities.activities[key]) {\r\n\r\n var a_date = row.activityDate;\r\n\r\n if (row.activityDate instanceof Date) {\r\n //console.log(\"is a Date\");\r\n\r\n a_date = toExactISOString(row.activityDate); //\r\n console.log(a_date);\r\n }\r\n else {\r\n //console.log(\"Is a string.\");\r\n a_date = row.activityDate;\r\n }\r\n //console.log(\"finally: \" + a_date);\r\n\r\n //console.log(a_date);\r\n\r\n //setup the new activity object structure\r\n activities.activities[key] = {\r\n LocationId: row.locationId,\r\n ActivityDate: a_date,\r\n InstrumentId: row.InstrumentId,\r\n Header: {},\r\n Details: [],\r\n };\r\n\r\n if (row.AccuracyCheckId)\r\n activities.activities[key].AccuracyCheckId = row.AccuracyCheckId;\r\n\r\n if (row.PostAccuracyCheckId)\r\n activities.activities[key].PostAccuracyCheckId = row.PostAccuracyCheckId;\r\n\r\n if (row.Timezone) {\r\n activities.activities[key].Timezone = angular.toJson(row.Timezone).toString();\r\n row.Timezone = undefined;\r\n }\r\n\r\n //add in activityqa if there isn't one (now required)\r\n if (!row.ActivityQAStatus) {\r\n //datasheet case\r\n row.ActivityQAStatus =\r\n {\r\n QAStatusId: row.QAStatusId,\r\n Comments: ''\r\n };\r\n row.QAStatusId = row.RowQAStatusId; // and then set QA status for this row...\r\n }\r\n else {\r\n //console.log(\"row.ActivityQAStatus already exists...\");\r\n //console.dir(row.ActivityQAStatus);\r\n }\r\n\r\n if ((typeof qaStatuses !== 'undefined') && (qaStatuses !== null)) {\r\n for (var i = 0; i < qaStatuses.length; i++) {\r\n //console.log(\"Checking QId: \" +qaStatuses[i].Id + \", Name: \" + qaStatuses[i].Name);\r\n //console.log(\"row.ActivityQAStatus.QAStatusId = \" + row.ActivityQAStatus.QAStatusId);\r\n //if (row.ActivityQAStatus.QAStatusId.indexOf(qaStatuses[i].Id) > -1)\r\n if (row.ActivityQAStatus.QAStatusId === qaStatuses[i].Id) {\r\n //console.log(\"This is the match...\");\r\n row.QAStatusName = qaStatuses[i].Name;\r\n row.QAStatusDescription = qaStatuses[i].Description;\r\n }\r\n else {\r\n //console.log(\"Did not match...\");\r\n }\r\n }\r\n }\r\n else {\r\n // @ts-ignore todo: is this a regular error?\r\n throw qaStatusError(\"Services-addActivity, check1 has a problem with QAStatus...\");\r\n }\r\n\r\n //console.log(\"row is next...\");\r\n //console.dir(row);\r\n activities.activities[key].ActivityQAStatus =\r\n {\r\n QAStatusID: row.ActivityQAStatus.QAStatusId,\r\n Comments: row.ActivityQAStatus.Comments,\r\n Name: row.QAStatusName,\r\n Description: row.QAStatusDescription\r\n };\r\n //console.log(\"ActivityQAStatus is next...\");\r\n //console.dir(activities.activities[key].ActivityQAStatus);\r\n\r\n\r\n\r\n //true if we are editing...\r\n if (row.ActivityId)\r\n activities['ActivityId'] = row.ActivityId;\r\n\r\n //copy the other header fields from this first row.\r\n angular.forEach(fields.header, function (field) {\r\n\r\n //flatten multiselect values into an json array string\r\n if (field.ControlType == \"multiselect\" && row[field.DbColumnName]) {\r\n row[field.DbColumnName] = angular.toJson(row[field.DbColumnName]).toString(); //wow, definitely need tostring here!\r\n }\r\n\r\n activities.activities[key].Header[field.DbColumnName] = row[field.DbColumnName];\r\n });\r\n\t\t\t\t\t// For CRPP, ProjectLead is not in the list of dataset fields, so we must add it.\r\n\t\t\t\t\tif (row.ProjectLead)\r\n\t\t\t\t\t\tactivities.activities[key].Header[\"ProjectLead\"] = row.ProjectLead;\r\n\r\n }\r\n\r\n //add in activityqa if there isn't one (now required) -- for every row\r\n if (!row.ActivityQAStatus) {\r\n //datasheet case\r\n row.ActivityQAStatus =\r\n {\r\n QAStatusId: row.QAStatusId,\r\n Comments: ''\r\n };\r\n row.QAStatusId = row.RowQAStatusId; // and then set QA status for this row...\r\n\r\n for (var i = 0; i < qaStatuses.length; i++) {\r\n //console.log(\"Checking QId: \" +qaStatuses[i].Id + \", Name: \" + qaStatuses[i].Name);\r\n //console.log(\"row.ActivityQAStatus.QAStatusId = \" + row.ActivityQAStatus.QAStatusId);\r\n //if (row.ActivityQAStatus.QAStatusId.indexOf(qaStatuses[i].Id) > -1)\r\n if (row.ActivityQAStatus.QAStatusId === qaStatuses[i].Id) {\r\n //console.log(\"This is the match...\");\r\n row.QAStatusName = qaStatuses[i].Name;\r\n row.QAStatusDescription = qaStatuses[i].Description;\r\n }\r\n else {\r\n //console.log(\"Did not match...\");\r\n }\r\n }\r\n }\r\n else {\r\n //console.log(\"row.ActivityQAStatus already exists...\");\r\n //console.dir(row);\r\n }\r\n\r\n if ((typeof qaStatuses !== 'undefined') && (qaStatuses !== null)) {\r\n for (var i = 0; i < qaStatuses.length; i++) {\r\n //console.log(\"Checking QId: \" +qaStatuses[i].Id + \", Name: \" + qaStatuses[i].Name);\r\n //console.log(\"row.ActivityQAStatus.QAStatusId = \" + row.ActivityQAStatus.QAStatusId);\r\n //if (row.ActivityQAStatus.QAStatusId.indexOf(qaStatuses[i].Id) > -1)\r\n if (row.ActivityQAStatus.QAStatusId === qaStatuses[i].Id) {\r\n //console.log(\"This is the match...\");\r\n row.QAStatusName = qaStatuses[i].Name;\r\n row.QAStatusDescription = qaStatuses[i].Description;\r\n }\r\n else {\r\n //console.log(\"Did not match...\");\r\n }\r\n }\r\n }\r\n else {\r\n // @ts-ignore\r\n throw qaStatusError(\"Services-addActivity, check2 has a problem with QAStatus...\");\r\n }\r\n\r\n //iterate through each field and do any necessary processing to field values\r\n var rowHasValue = prepFieldsToSave(row, fields.detail, currentTimezone);\r\n\r\n //console.dir(fields);\r\n\r\n //iterate through fields now and also prep any grid fields\r\n angular.forEach(Object.keys(fields.relation), function (relation_field) {\r\n //console.dir(relation_field);\r\n //console.log(\"we ahve a grid cell to save!: \" + relation_field);\r\n var rel_grid = row[relation_field];\r\n //console.dir(rel_grid);\r\n angular.forEach(rel_grid, function (grid_row) {\r\n //console.dir(grid_row);\r\n var gridHasValue = prepFieldsToSave(grid_row, fields.relation[relation_field], currentTimezone);\r\n rowHasValue = (rowHasValue) ? rowHasValue : gridHasValue; //bubble up the true!\r\n });\r\n });\r\n\r\n //only save the detail row if we have a value in at least one of the fields.\r\n if (rowHasValue)\r\n activities.activities[key].Details.push(row);\r\n\r\n },\r\n\r\n };\r\n\r\n return service;\r\n }];\r\n\r\n\r\n// this function is used to parse the field to prepare it to save, used by ActivityParser service.\r\nexport function prepFieldsToSave(row, fields, currentTimezone) {\r\n var rowHasValue = false;\r\n\r\n //handle field level validation or processing\r\n angular.forEach(fields, function (field) {\r\n if (row[field.DbColumnName]) {\r\n //flatten multiselect values into an json array string\r\n if (field.ControlType == \"multiselect\")\r\n row[field.DbColumnName] = angular.toJson(row[field.DbColumnName]).toString(); //wow, definitely need tostring here!\r\n\r\n //convert to a date string on client side for datetimes\r\n if (field.ControlType == \"datetime\" && row[field.DbColumnName]) {\r\n if (row[field.DbColumnName] instanceof Date) {\r\n row[field.DbColumnName] = toExactISOString(row[field.DbColumnName]);\r\n }\r\n else {\r\n try {\r\n row[field.DbColumnName] = toExactISOString(new Date(row[field.DbColumnName]));\r\n } catch (e) {\r\n console.log(\"Error converting date: \" + row[field.DbColumnName]);\r\n }\r\n }\r\n }\r\n\r\n rowHasValue = true;\r\n }\r\n });\r\n\r\n return rowHasValue;\r\n\r\n}\r\n\r\nexport default activity_parser;\r\n","//modal to edit location\r\nimport {modalFiles_setupControllerForFileChooserModal} from \"../../../common/components/file/modal-files\";\r\nimport {loadModules} from \"esri-loader\";\r\nimport {GEOMETRY_SERVICE_URL, \r\n NAD83_SPATIAL_REFERENCE\r\n} from '../../../../config';\r\nimport { EsriMapComponent } from \"src/app/map/esri-map/esri-map.component\";\r\n//--------\r\nimport SimpleMarkerSymbol from \"@arcgis/core/symbols/SimpleMarkerSymbol\";\r\nimport Graphic from \"@arcgis/core/Graphic\";\r\nimport SpatialReference from \"@arcgis/core/geometry/SpatialReference\";\r\nimport * as geometryServ from \"@arcgis/core/rest/geometryService\";\r\nimport Point from \"@arcgis/core/geometry/Point\";\r\n//import ProjectParameters from \"@arcgis/core/tasks/support/ProjectParameters\";\r\nimport ProjectParameters from \"@arcgis/core/rest/support/ProjectParameters\";\r\nimport Query from \"@arcgis/core/rest/support/Query\";\r\n\r\nvar modal_edit_location = ['$scope', '$uibModal', '$uibModalInstance', 'GridService', 'CommonService', 'Upload', \r\n 'ProjectService', '$rootScope', 'PermitService',\r\n function ($scope, $uibModal, $uibModalInstance, GridService, CommonService, $upload, \r\n ProjectService, $rootScope, PermitService) {\r\n\r\n console.log(\"Inside modal-edit-location.ts...\");\r\n //geometryService: geometryService;\r\n\r\n $scope.mode = \"edit\";\r\n $scope.OriginalEasting = 0;\r\n $scope.OriginalNorthing = 0;\r\n $scope.EastingOrNorthingChanged = false;\r\n var symbol = null;\r\n\r\n console.log(\"Inside modal-edit-location.ts...\");\r\n\r\n if ($scope.ProjectLocation_modal)\r\n {\r\n $scope.row = $scope.ProjectLocation_modal;\r\n $scope.dataGridOptions = $scope.permitLocationsGrid;\r\n }\r\n\r\n if (!$scope.row.Id) {\r\n $scope.mode = \"new\";\r\n }\r\n else\r\n {\r\n $scope.OriginalEasting = $scope.row.GPSEasting;\r\n $scope.OriginalNorthing = $scope.row.GPSNorthing;\r\n }\r\n\r\n modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.project.Files);\r\n\r\n // $scope.saveNewPoint = function (inId) {\r\n // if (inId.pointId) {\r\n // $scope.row.SdeObjectId = inId.pointId\r\n // console.log(\"Created a new point! \" + $scope.row.SdeObjectId);\r\n //\r\n // var data = {\r\n // ProjectId: $scope.project.Id,\r\n // };\r\n //\r\n // var target = '/api/v1/file/UploadProjectFile';\r\n //\r\n // $scope.handleFilesToUploadRemove($scope.row, data, target, $upload, $rootScope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n //\r\n // } else {\r\n // $scope.SaveMessage = \"There was a problem saving that location.\";\r\n // console.dir(inId.pointId);\r\n // }\r\n // }\r\n\r\n $scope.updateParentItem = function() {\r\n\r\n if ($scope.ProjectLocation_modal){\r\n $scope.PermitLocations = PermitService.getPermitLocations($scope.row.PermitId);\r\n $scope.PermitLocations.$promise.then(function() {\r\n console.log(\"$scope.PermitLocations modal-edit-location.ts is next...\");\r\n console.dir($scope.PermitLocations);\r\n $scope.permitLocationsGrid.api.setRowData($scope.PermitLocations);\r\n $scope.permitLocationsGrid.selectedItem = null;\r\n $scope.$apply();\r\n });\r\n }\r\n else \r\n {\r\n $scope.all_locations = ProjectService.getLocations($scope.project.Id);\r\n $scope.all_locations.$promise.then(function () {\r\n $scope.dataGridOptions.api.setRowData($scope.all_locations);\r\n });\r\n }\r\n\r\n };\r\n\r\n $scope.save = function (inId) {\r\n\r\n\r\n //OK -- if we are saving a NEW location then start off by adding the point to the featurelayer\r\n if (!$scope.row.Id) {\r\n console.log(\"Adding a NEW location...\");\r\n\r\n $uibModalInstance.close(\r\n // on close this information is sent to the esri-map component, and enters as the inPayload object.\r\n {\r\n 'ProjectId': $scope.project.Id,\r\n 'Location': $scope.row,\r\n 'IsFirstRun': true\r\n });\r\n\r\n\r\n } else //updating an existing...\r\n {\r\n //------------------------------------------------------------\r\n // The current process for updating a point is...\r\n // - Capture the SdeObjectId for the original point\r\n // - Add a new one point, with the desired specs, and set the SdeObjectId to be that of the new point\r\n // - Delete the old point\r\n //------------------------------------------------------------\r\n\r\n // $uibModalInstance.close(\r\n // // on close this information is sent to the esri-map component\r\n // {\r\n // 'Update': true,\r\n // 'ProjectId': $scope.project.Id,\r\n // 'Location': $scope.row,\r\n // 'IsFirstRun': true\r\n // });\r\n var data = {\r\n ProjectId: $scope.project.Id,\r\n };\r\n \r\n\r\n // The ngOnChanges in esri-map.component.ts works with a project-level location,\r\n // but not from a permits-level (dataset-level) location.\r\n // ($scope.ProjectLocation_modal exists)\r\n // if ($scope.ProjectLocation_modal)\r\n // {\r\n // var locationObject = {\r\n // 'Update': true,\r\n // 'ProjectId': $scope.project.Id,\r\n // 'Location': $scope.row,\r\n // }\r\n // }\r\n //var esriMapComponent = new EsriMapComponent();\r\n\r\n //esriMapComponent.modalLocationEdit(locationObject);\r\n //}\r\n\r\n if ($scope.EastingOrNorthingChanged)\r\n {\r\n // // Capture the old SdeObjectId, so we can delete it later.\r\n $scope.OldSdeObjectId = $scope.row.SdeObjectId;\r\n \r\n // Now setup things for the new point.\r\n var inSR = new SpatialReference({ wkt: NAD83_SPATIAL_REFERENCE });\r\n var outSR = new SpatialReference({ wkid: 102100 });\r\n\r\n var theEasting = $scope.row.GPSEasting;\r\n var theNorthing = $scope.row.GPSNorthing;\r\n $scope.newPoint = new Point({x: theEasting, y: theNorthing, spatialReference: inSR});\r\n\r\n //convert spatial reference\r\n var PrjParams = new ProjectParameters();\r\n\r\n PrjParams.geometries = [$scope.newPoint];\r\n PrjParams.outSpatialReference = outSR;\r\n //PrjParams.toJSON();\r\n\r\n // The following are nested, because otherwise the async process will call\r\n // a service and then continue on.\r\n geometryServ.project(GEOMETRY_SERVICE_URL, PrjParams).then((outputpoint) => {\r\n\r\n $scope.newAddPoint = new Point(outputpoint[0]);\r\n\r\n symbol = new SimpleMarkerSymbol({\r\n style: \"circle\",\r\n color: \"#00ff00\",\r\n size: \"8px\",\r\n });\r\n\r\n // PrjParams.outSR is not set yet, so we must set it also.\r\n //PrjParams.outSR = outSR; // Does not exist in supportProjectParameters\r\n\r\n //var attributes = {OBJECTID: theSdeObjectId};\r\n var newGraphic = new Graphic({geometry: $scope.newAddPoint, symbol: symbol});\r\n\r\n console.log(\"$scope.map.locationLayer is next...\");\r\n console.dir($scope.map.locationLayer);\r\n // $scope.map.locationLayer.applyEdits([$scope.newGraphic], null, null).then(function (addResults) { // Previous technique under masterV2\r\n $scope.map.locationLayer.applyEdits({addFeatures: [newGraphic]}).then (function (addResults) {\r\n //if (inId.hasOwnProperty('pointId')) {\r\n //$scope.row.SdeObjectId = addResults[0].objectId;\r\n if ((addResults.addFeatureResults) && (addResults.addFeatureResults[0].objectId))\r\n { \r\n $scope.row.SdeObjectId = addResults.addFeatureResults[0].objectId;\r\n console.log(\"Added new point! \" + $scope.row.SdeObjectId);\r\n }\r\n\r\n \r\n //throw \"Stopping right here...\";\r\n\r\n // Now that we added the new point, we must delete the old point.\r\n // Reuse the inSR\r\n // Reuse the outSR\r\n\r\n $scope.deletePoint = new Point({x: $scope.OriginalEasting, y: $scope.OriginalNorthing, spatialReference: inSR});\r\n\r\n //convert spatial reference\r\n var PrjParams = new ProjectParameters();\r\n PrjParams.outSpatialReference = outSR;\r\n PrjParams.geometries = [$scope.deletePoint];\r\n\r\n // Do the projection (conversion)\r\n geometryServ.project(GEOMETRY_SERVICE_URL, PrjParams).then((delOutputpoint) => {\r\n // Reuse symbol\r\n // let symbol = new SimpleMarkerSymbol({\r\n // style: \"circle\",\r\n // color: \"#00ff00\",\r\n // size: \"8px\",\r\n // });\r\n $scope.PointToDelete = new Point(delOutputpoint[0]);\r\n \r\n var attributes = {OBJECTID: $scope.OldSdeObjectId};\r\n\r\n //throw \"Stopping right here...\";\r\n\r\n var deleteGraphic = new Graphic({geometry: $scope.PointToDelete, symbol: symbol, attributes: attributes});\r\n\r\n // Note: You cannot just pass the point to delete; they must be in a graphic object,\r\n // or the code dies in dojo-land, which is different than what is shown in \r\n // ArcGIS documenation on the service interface.\r\n $scope.map.locationLayer.applyEdits({deleteFeatures: [deleteGraphic]}).then (function (deleteResults) { // This works\r\n\r\n console.log(\"deleteResults is next...\");\r\n console.dir(deleteResults);\r\n\r\n if (deleteResults && deleteResults.deleteFeatureResults.length === 0)\r\n {\r\n $scope.SaveMessage = \"The location did not exist in SDE.\";\r\n console.log($scope.SaveMessage);\r\n console.dir(deleteResults);\r\n CommonService.updateLocationAction($scope.project.Id, $scope.row.Id, $scope.row.SdeObjectId, $scope.row);\r\n }\r\n else if (deleteResults && deleteResults.deleteFeatureResults[0] && deleteResults.deleteFeatureResults[0].objectId) \r\n { \r\n console.log(\"Deleted old project point! \" + $scope.row.SdeObjectId);\r\n\r\n //CommonService.UpdateLocationAction($scope.project.Id, $scope.row.Id, $scope.row.SdeObjectId, $scope.OldSdeObjectId);\r\n //CommonService.updateLocationAction($scope.project.Id, $scope.row.Id, $scope.row.SdeObjectId);\r\n CommonService.updateLocationAction($scope.project.Id, $scope.row.Id, $scope.row.SdeObjectId, $scope.row);\r\n }\r\n else \r\n {\r\n $scope.SaveMessage = \"There was a problem deleting that location.\";\r\n console.log($scope.SaveMessage);\r\n console.dir(deleteResults);\r\n }\r\n\r\n // var data = {\r\n // ProjectId: $scope.project.Id,\r\n // };\r\n $rootScope.ProjectId = $scope.project.Id;\r\n\r\n //var target = '/api/v1/file/UploadProjectFile';\r\n //$scope.handleFilesToUploadRemove($scope.row, data, target, $upload, $rootScope); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n\r\n $scope.modalFile_saveParentItem($scope.row);\r\n\r\n }, function (deleteErr: any) {\r\n console.log(\"Apply Edits - Delete project location - failed: \" + deleteErr.message);\r\n }); // Delete applyEdits\r\n }); // Delete GeometryService\r\n }, function (addErr: any) {\r\n $scope.SaveMessage = \"There was a problem adding the new project location.\";\r\n console.log(\"Apply Edits - Add - failed: \" + addErr.message + \" > \" + addErr.innerHTML);\r\n }); // Add applyEdits\r\n }); // Add GeometryService\r\n }\r\n else\r\n {\r\n console.log(\"Easting or northing did not change. Only updating dbo.Locations.\");\r\n $scope.modalFile_saveParentItem($scope.row);\r\n }\r\n }\r\n };\r\n\r\n //call back from save above once the files are done processing and we're ready to save the item\r\n $scope.modalFile_saveParentItem = function (saveRow) {\r\n console.log(\"Inside modal-edit-location.ts, modalFile_saveParentItem...\");\r\n \r\n saveRow.WaterBody = undefined;\r\n\r\n var new_location = null;\r\n\r\n // var new_location = CommonService.saveNewProjectLocation($scope.project.Id, saveRow);\r\n\r\n if (!$scope.project)\r\n {\r\n new_location = CommonService.saveNewProjectLocation($scope.$parent.project.Id, saveRow);\r\n }\r\n else \r\n {\r\n new_location = CommonService.saveNewProjectLocation($scope.project.Id, saveRow);\r\n }\r\n\r\n new_location.$promise.then(function () {\r\n console.log(\"done and success!\");\r\n //return new_location;\r\n //$uibModalInstance.close(new_location);\r\n $uibModalInstance.dismiss();\r\n //$scope.$apply();\r\n window.location.reload();\r\n });\r\n\r\n };\r\n\r\n //callback that is called from modalFile to do the actual file removal (varies by module)\r\n $scope.modalFile_doRemoveFile = function (file_to_remove, saveRow) {\r\n console.dir(file_to_remove);\r\n return ProjectService.deleteFile($scope.project.Id, file_to_remove);\r\n };\r\n\r\n //used as a filter to exclude the edit link - only show bonafide fields\r\n $scope.hasDbColumnName = function (field) {\r\n return field.hasOwnProperty('DbColumnName');\r\n };\r\n\r\n $scope.onHeaderEditingStopped = function (field) {\r\n //build event to send for validation\r\n console.log(\"onHeaderEditingStopped: \" + field.DbColumnName);\r\n\r\n $scope.EastingOrNorthingChanged = false;\r\n if (field.DbColumnName)\r\n {\r\n var tmpDbColName = field.DbColumnName.toLowerCase();\r\n if ((tmpDbColName.indexOf(\"easting\") > -1) || (tmpDbColName.indexOf(\"northing\") > -1))\r\n {\r\n $scope.EastingOrNorthingChanged = true;\r\n }\r\n }\r\n \r\n var event = {\r\n colDef: field,\r\n node: {data: $scope.row},\r\n value: $scope.row[field.DbColumnName],\r\n type: 'onHeaderEditingStopped'\r\n };\r\n\r\n if (GridService.validateCell(event)) {\r\n GridService.fireRule(\"OnChange\", event); //only fires when valid change is made\r\n }\r\n\r\n //update our collection of header errors if any were returned\r\n $scope.headerFieldErrors = [];\r\n if ($scope.row.rowHasError) {\r\n $scope.row.validationErrors.forEach(function (error) {\r\n if (Array.isArray($scope.headerFieldErrors[error.field.DbColumnName])) {\r\n $scope.headerFieldErrors[error.field.DbColumnName].push(error.message);\r\n } else {\r\n $scope.headerFieldErrors[error.field.DbColumnName] = [error.message];\r\n }\r\n });\r\n }\r\n\r\n };\r\n\r\n //fire validation for all columns when we load (if we are editing)\r\n if ($scope.mode === 'edit') {\r\n console.log(\"Location Id = \" + $scope.$parent.row.Id);\r\n\r\n $scope.dataGridOptions.columnDefs.forEach(function (field) {\r\n $scope.onHeaderEditingStopped(field);\r\n });\r\n }\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n\r\n }\r\n];\r\n\r\n\r\nexport default modal_edit_location;","/*\r\n* This page loads the project details. It includes some tabs that are always populated and some tabs\r\n* that are conditionally shown and populated depending on the project type.\r\n*\r\n*/\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar project_data = ['$scope', '$routeParams', 'SubprojectService', 'ProjectService', 'DatasetService', 'CommonService', 'UserService',\r\n '$rootScope', '$uibModal', '$sce', '$window', '$http',\r\n 'ServiceUtilities', '$location', '$anchorScroll', '$rootScope',\r\n function (scope, routeParams, SubprojectService, ProjectService, DatasetService, CommonService, UserService, $rootScope, $uibModal, $sce, $window, $http,\r\n ServiceUtilities, $location, $anchorScroll, rootScope) {\r\n //console.log(\"Inside controllers.js, projectDatasetsController...\");\r\n //console.log(\"routeParams.Id = \" + routeParams.Id);\r\n // scope.OnTab = \"Files\";\r\n scope.OnTab = 'Data';\r\n // rootScope.Tab = 'Data';\r\n scope.datasets = ProjectService.getProjectDatasets(routeParams.Id);\r\n scope.project = ProjectService.getProject(routeParams.Id);\r\n\r\n //once the datasets load, make sure each is configured with our scope.\r\n scope.datasets.$promise.then(function () {\r\n\r\n var visibleDatasets = [];\r\n\r\n scope.datasets.forEach(function (dataset) {\r\n DatasetService.configureDataset(dataset, scope); // We must pass the scope along on this call.\r\n if (!dataset.Config.Hide)\r\n visibleDatasets.push(dataset);\r\n })\r\n\r\n scope.datasets = visibleDatasets;\r\n\r\n scope.activateDataGrid();\r\n });\r\n\r\n\r\n var linkTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var linkBtn = document.createElement('a');\r\n linkBtn.href =param.data.activitiesRoute + '/' + param.data.Id;\r\n linkBtn.innerHTML = param.data.Name;\r\n\r\n div.appendChild(linkBtn);\r\n\r\n return div;\r\n };\r\n\r\n //datasets tab grid\r\n scope.dataGridOptions = {\r\n suppressPropertyNamesCheck: true,\r\n //data: 'datasets',\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n onGridReady: function (params) {\r\n params.api.sizeColumnsToFit();\r\n },\r\n columnDefs:\r\n [\r\n {field: 'Name', headerName: 'Dataset Name', cellRenderer: linkTemplate, width: 280},\r\n {field: 'Description', headerName: 'Description', width: 450},\r\n ],\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n scope.activateDataGrid = function () {\r\n\r\n var ag_grid_div = document.querySelector('#data-tab-grid') as HTMLElement; //get the container id...\r\n scope.datatab_ag_grid = new Grid(ag_grid_div, scope.dataGridOptions); //bind the grid to it.\r\n scope.dataGridOptions.api.showLoadingOverlay(); //show loading...\r\n\r\n scope.dataGridOptions.api.setRowData(scope.datasets);\r\n scope.dataGridOptions.api.sizeColumnsToFit(); //\r\n\r\n };\r\n\r\n //handle favorite toggle\r\n scope.isFavorite = $rootScope.Profile.isProjectFavorite(routeParams.Id);\r\n scope.toggleFavorite = function () {\r\n UserService.toggleFavoriteProject(scope, $rootScope);\r\n }\r\n\r\n }\r\n\r\n];\r\n\r\n\r\nexport default project_data;\r\n\r\n\r\n\r\n","import {loadModules} from \"esri-loader\";\r\n\r\nexport const featureLayerDirective = function() {\r\n // this object will tell angular how our directive behaves\r\n return {\r\n // only allow esriFeatureLayer to be used as an element ()\r\n restrict: 'E',\r\n\r\n // require the esriFeatureLayer to have its own controller as well an esriMap controller\r\n // you can access these controllers in the link function\r\n require: [\"esriFeatureLayer\", \"^esriMap\"],\r\n\r\n // replace this element with our template.\r\n // since we aren't declaring a template this essentially destroys the element\r\n replace: true,\r\n\r\n // define an interface for working with this directive\r\n controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {\r\n loadModules([\r\n 'esri/layers/FeatureLayer'\r\n ]).then(([FeatureLayer]) => {\r\n var layer = new FeatureLayer($attrs.url);\r\n var filter = $attrs.filter;\r\n\r\n // lets expose a function to get the layer\r\n this.getLayer = function () {\r\n return layer;\r\n };\r\n\r\n this.getFilter = function () {\r\n return filter;\r\n };\r\n });\r\n // now is a good time to declare our FeautreLayer\r\n\r\n }],\r\n\r\n // now we can link our directive to the scope, but we can also add it to the map..\r\n link: function (scope, element, attrs, controllers) {\r\n // controllers is now an array of the controllers from the 'require' option\r\n var layerController = controllers[0];\r\n var mapController = controllers[1];\r\n\r\n // now we can use the 'addLayer' method exposed on the controller\r\n // of the esriMap directive to add the layer to the map\r\n mapController.addLayer(layerController.getLayer(), layerController.getFilter());\r\n }\r\n };\r\n};\r\n// })\r\n// ;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {valueFormatterDate} from \"../../../../core/common/common-functions\";\r\nimport {LeaseModalScope} from \"./lease-scope\";\r\n// import leasing_module from \"../../leasing-module\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar leasing_home = ['$scope', '$route', '$routeParams', '$uibModal', '$location', '$window', '$rootScope', 'LeasingService',\r\n function ($scope, $route, $routeParams, $uibModal, $location, $window, $rootScope, LeasingService) {\r\n console.log(\"Inside leasing controller...\");\r\n\r\n $rootScope.inModule = \"leasing\";\r\n\r\n if (!$scope.Profile.hasRole(\"Leasing\"))\r\n angular.rootScope.go(\"/unauthorized\");\r\n\r\n $scope.leases = LeasingService.getAllLeases();\r\n\r\n $scope.searchResults = [];\r\n $scope.searchComplete = false;\r\n $scope.clickselect = \"allotments\";\r\n\r\n $scope.leases.$promise.then(function () {\r\n //show all the leased properties on the map.\r\n\r\n console.log(\"leases loaded \" + $scope.leases.length);\r\n\r\n if (!$scope.searchGridDiv) {\r\n $scope.searchGridDiv = document.querySelector(\"#search-leases-grid\");\r\n new Grid($scope.searchGridDiv, $scope.searchGrid);\r\n }\r\n\r\n if ($routeParams.allotment != null) {\r\n $scope.searchTerm = $routeParams.allotment;\r\n $scope.searchButton();\r\n //$scope.findOnMap($routeParams.allotment);\r\n }\r\n\r\n\r\n });\r\n\r\n var SearchLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a');\r\n editBtn.href = '#';\r\n editBtn.innerHTML = 'View';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.viewLease(param.data.Id);\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n var searchColumnDefs = [\r\n {colId: 'ViewLink', width: 60, cellRenderer: SearchLinksTemplate, menuTabs: []},\r\n {headerName: \"Lease Id\", field: \"LeaseNumber\", width: 130, filter: 'text'},\r\n {\r\n headerName: \"Status\", field: \"Status\", width: 120,\r\n valueGetter: function (params) {\r\n // return leasing_module.LeaseStatus[params.node.data.Status];\r\n return LeaseModalScope.LeaseStatus[params.node.data.Status];\r\n },\r\n filter: true\r\n },\r\n {headerName: \"Allotment\", field: \"AllotmentName\", width: 100, filter: true},\r\n {headerName: \"Type\", field: \"LeaseType\", width: 120, filter: true},\r\n {headerName: \"FSA Tract #\", field: \"FSATractNumber\", width: 120, filter: 'text'},\r\n {headerName: \"FSA Farm #\", field: \"FarmNumber\", width: 120, filter: 'text'},\r\n\r\n {\r\n headerName: \"Expires\", field: \"LeaseEnd\", width: 130,\r\n valueGetter: function (params) {\r\n return moment(params.node.data.LeaseEnd)\r\n },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.LeaseEnd);\r\n },\r\n filter: 'date',\r\n sort: 'desc'\r\n },\r\n\r\n ];\r\n\r\n $scope.searchGrid = {\r\n columnDefs: searchColumnDefs,\r\n rowData: [],\r\n rowSelection: 'single',\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n menuTabs: ['filterMenuTab']\r\n },\r\n onRowDoubleClicked: function (params) {\r\n //console.dir(params);\r\n // $scope.findOnMap(params.data.AllotmentName);\r\n $scope.outAllotment = params.data.AllotmentName;\r\n }\r\n }\r\n\r\n $scope.searchButton = function () {\r\n $scope.searchByString($scope.searchTerm);\r\n }\r\n\r\n\r\n $scope.searchByString = function (in_string) {\r\n console.log(\"search \" + in_string);\r\n $scope.searchResults.length = 0;\r\n\r\n in_string = $scope.searchTerm = in_string.toUpperCase();\r\n\r\n $scope.leases.forEach(function (lease) {\r\n\r\n if (lease.AllotmentName && lease.AllotmentName.indexOf(in_string) !== -1 ||\r\n lease.LeaseNumber && lease.LeaseNumber.indexOf(in_string) !== -1) {\r\n //console.log(\"found one : \"+lease.LeaseNumber);\r\n $scope.searchResults.push(lease);\r\n }\r\n\r\n });\r\n\r\n $scope.searchGrid.api.setRowData($scope.searchResults);\r\n\r\n $scope.outAllotment = in_string;\r\n\r\n $scope.searchComplete = true;\r\n }\r\n\r\n $scope.searchByFieldId = function (field_id) {\r\n console.log(\"search for field: \" + field_id);\r\n $scope.searchResults.length = 0;\r\n $scope.searchTerm = \"\";\r\n\r\n var matching_leases = LeasingService.getLeasesByField(field_id);\r\n matching_leases.$promise.then(function () {\r\n matching_leases.forEach(function (lease) {\r\n console.log(\"found a match: \" + lease.Id);\r\n $scope.searchResults.push(lease);\r\n });\r\n\r\n $scope.searchGrid.api.setRowData($scope.searchResults);\r\n\r\n });\r\n };\r\n\r\n\r\n $scope.viewLease = function (id) {\r\n $location.url(\"view-lease/\" + id);\r\n };\r\n\r\n // in permit map component\r\n // $scope.findOnM1ap = function (in_allotment) {\r\n // console.log(\"finding on map \" + in_allotment);\r\n //\r\n // $scope.map.queryMatchParcel(in_allotment, function (features) {\r\n // if (features.length == 0) {\r\n // console.log(\"allotment not found: \" + in_allotment);\r\n // }\r\n // else {\r\n // //that doesn't include geometry so we need to get it\r\n // $scope.map.querySelectParcel(null, features[0].attributes.OBJECTID, function (geo_features) {\r\n // $scope.map.addParcelToMap(geo_features[0]);\r\n // $scope.map.centerAndZoomToGraphic($scope.map.selectedGraphic, 2);\r\n // });\r\n //\r\n // }\r\n // });\r\n //\r\n // }\r\n\r\n // expose a method for handling clicks ON THE MAP - this is linked to from the Map.js directive\r\n $scope.mapClick = function (e) {\r\n $scope.parcel = e;\r\n console.log(\"Click!\");\r\n\r\n $scope.isLeaseSelected = true;\r\n $scope.hasResults = true;\r\n\r\n\r\n var objectid = $scope.parcel.OBJECTID; //fieldid or cadasterobjectid\r\n var allotment = ($scope.parcel.Allotment) ? $scope.parcel.Allotment : $scope.parcel.PARCELID; //parcel = allotment / allotment = field\r\n\r\n $scope.searchTerm = allotment;\r\n\r\n // if ($scope.clickselect == 'fields') {\r\n // $scope.searchTerm = objectid;\r\n // $scope.searchByFieldId(objectid);\r\n // } else {\r\n $scope.searchTerm = allotment;\r\n $scope.searchByString(allotment);\r\n // }\r\n\r\n // $scope.map.loading = false;\r\n $scope.$apply(); //bump angular\r\n\r\n // });\r\n };\r\n\r\n\r\n }];\r\n\r\nexport default leasing_home;\r\n","import {Injectable} from '@angular/core';\r\nimport {UpgradeModule} from '@angular/upgrade/static';\r\nimport {HttpClient} from '@angular/common/http';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppjsLoaderService {\r\n // private app: angular.auto.IInjectorService;\r\n private app: any;\r\n\r\n constructor(private upgrade: UpgradeModule) {\r\n }\r\n\r\n load(el: HTMLElement): void {\r\n // import('../appjs/app').then(app => {\r\n try {\r\n\r\n if (!this.app) {\r\n this.app = this.upgrade.bootstrap(document.body, ['app'], {strictDi: true});\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n destroy() {\r\n if (this.app) {\r\n this.app.get('$rootScope').$destroy();\r\n }\r\n }\r\n}\r\n","import * as angular from 'angular';\r\nimport {isValidURL} from \"../../common-functions\";\r\n\r\n\r\nvar modal_link_field = ['$scope', '$uibModalInstance', '$rootScope',\r\n function ($scope, $uibModalInstance, $rootScope) {\r\n //console.log(\"Inside modals-controller.js, LinkModalCtrl...\");\r\n //console.log(\"$scope is next...\");\r\n //console.dir($scope);\r\n\r\n if (typeof $scope.onRow !== 'undefined')\r\n $scope.onRow.errors = [];\r\n\r\n $scope.LinkError = false;\r\n\r\n $scope.foundDuplicate = false;\r\n //note: link selected for upload are managed by onLinkSelect from parent scope, in the following place:\r\n // ModalAddHabitatItemCtrl\r\n\r\n $scope.makeNewLink = function () { $scope.newLink = { Name: \"\", Link: \"\" } };\r\n $scope.makeNewLink();\r\n\r\n //console.log(\"$scope.link_field.DbColumnName = \" + $scope.link_field.DbColumnName);\r\n //$scope.currentLinks = $scope.link_field[$scope.link_field.DbColumnName];\r\n $scope.currentLinks = $scope.link_row[$scope.link_field.DbColumnName];\r\n //console.log(\"$scope.currentLinks (before check) is next...\");\r\n //console.dir($scope.currentLinks);\r\n if ($scope.currentLinks)\r\n $scope.currentLinks = angular.fromJson($scope.currentLinks);\r\n else\r\n $scope.currentLinks = [];\r\n\r\n //console.log(\"$scope.currentLinks (after check) is next...\");\r\n //console.dir($scope.currentLinks);\r\n\r\n $rootScope.currentLinks = angular.copy($scope.currentLinks);\r\n //console.log(\"$rootScope.currentLinks is next...\");\r\n //console.dir($rootScope.currentLinks);\r\n\r\n $scope.removeLink = function (link) {\r\n //console.log(\"Inside FileModalCtrl, removeLink...\");\r\n //console.log(\"link is next...\");\r\n //console.dir(link);\r\n\r\n //console.log(\"$rootScope.currentLinks is next...\");\r\n //console.dir($rootScope.currentLinks);\r\n angular.forEach($scope.currentLinks, function (existing_link, key) {\r\n if (existing_link.Link == link.Link)\r\n $scope.currentLinks.splice(key, 1);\r\n });\r\n angular.forEach($rootScope.currentLinks, function (existing_link, key) {\r\n //console.log(\"existing_link.Link = \" + existing_link.Link + \", link.Link = \" + link.Link);\r\n var existing_linkLength = existing_link.Link.length;\r\n var linkLength = link.Link.length;\r\n // console.log(\"existing_linkLength = \" + existing_linkLength + \", linkLength = \" + linkLength);\r\n\r\n //console.log(\"Check: \" + existing_link.Name.indexOf(link.Link));\r\n //if(existing_link.Name == link.Link)\r\n if (existing_linkLength === linkLength) {\r\n //console.log(\"Lengths match...\");\r\n if (existing_link.Link.indexOf(link.Link) !== -1) {\r\n //console.log(\"Link matches...\");\r\n if ($scope.subprojectType === \"Habitat\") {\r\n //console.log(\"Habitat file...\");\r\n //kb - 11/1: the following function doesn't actually exist anywhere...\r\n //DatastoreService.deleteHabitatItemLink($scope.projectId, $scope.subprojectId, $scope.hi_row.Id, file);\r\n }\r\n\r\n $scope.currentLinks.splice(key, 1);\r\n }\r\n }\r\n });\r\n }\r\n\r\n $scope.validateLink = function(){\r\n $scope.LinkError = false;\r\n if(!isValidURL($scope.newLink.Link)) {\r\n $scope.LinkError = \"You must enter a valid URL including 'http://' or 'https://'\";\r\n }\r\n }\r\n\r\n $scope.addLink = function () {\r\n $scope.validateLink();\r\n if(!$scope.LinkError) {\r\n $scope.currentLinks.push($scope.newLink);\r\n $scope.makeNewLink();\r\n }\r\n }\r\n\r\n $scope.save = function () {\r\n //console.log(\"Inside modals-controller, LinkModalCtrl, save...\");\r\n //console.log(\"Adding link name(s) to the list.\");\r\n //console.log(\"$scope is next...\");\r\n //console.dir($scope);\r\n $rootScope.viewSubproject = $scope.viewSubproject; // Add this to the $rootScope, so that the filters can see it.\r\n //var errors = [];\r\n\r\n //copy back to the actual row field\r\n $scope.link_row[$scope.link_field.DbColumnName] = angular.toJson($scope.currentLinks);\r\n //console.log(\"$scope.link_row is next...\");\r\n //console.dir($scope.link_row);\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_link_field;\r\n","//modal to edit lookups\r\nvar modal_edit_lookup_item = ['$scope', '$uibModal','$uibModalInstance','GridService','CommonService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, GridService, CommonService) {\r\n\r\n $scope.mode = \"edit\";\r\n\r\n if (!$scope.row.Id) {\r\n $scope.mode = \"new\";\r\n }\r\n\r\n $scope.save = function () {\r\n\r\n var payload = {\r\n 'LookupTableId' : $scope.selectedLookup.Id,\r\n 'Item' : $scope.row,\r\n };\r\n\r\n var save_item = CommonService.saveLookupTableItem(payload);\r\n\r\n save_item.$promise.then(function () {\r\n $uibModalInstance.close(save_item);\r\n }, function (error) {\r\n $scope.SaveMessage = \"Error: \" + error.data.ExceptionMessage;\r\n });\r\n\r\n };\r\n\r\n //used as a filter to exclude the edit link - only show bonafide fields\r\n $scope.hasDbColumnName = function (field) {\r\n return field.hasOwnProperty('DbColumnName');\r\n }\r\n\r\n $scope.onHeaderEditingStopped = function (field, logerrors) {\r\n //build event to send for validation\r\n console.log(\"onHeaderEditingStopped: \" + field.DbColumnName);\r\n var event = {\r\n colDef: field,\r\n node: { data: $scope.row },\r\n value: $scope.row[field.DbColumnName],\r\n type: 'onHeaderEditingStopped'\r\n };\r\n\r\n if (GridService.validateCell(event)) {\r\n GridService.fireRule(\"OnChange\", event); //only fires when valid change is made\r\n }\r\n\r\n //update our collection of header errors if any were returned\r\n $scope.headerFieldErrors = [];\r\n if ($scope.row.rowHasError) {\r\n $scope.row.validationErrors.forEach(function (error) {\r\n if (Array.isArray($scope.headerFieldErrors[error.field.DbColumnName])) {\r\n $scope.headerFieldErrors[error.field.DbColumnName].push(error.message);\r\n } else {\r\n $scope.headerFieldErrors[error.field.DbColumnName] = [error.message];\r\n }\r\n });\r\n }\r\n\r\n if (logerrors !== false) {\r\n console.dir($scope.headerFieldErrors);\r\n console.dir($scope.row);\r\n }\r\n\r\n };\r\n\r\n //fire validation for all columns when we load (if we are editing)\r\n if ($scope.mode === 'edit') {\r\n $scope.dataGridOptions.columnDefs.forEach(function (field) {\r\n $scope.onHeaderEditingStopped(field,false);\r\n });\r\n }\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n\r\n }\r\n];\r\n\r\nexport default modal_edit_lookup_item;\r\n","//CDMSSelectCellValidator - extends CellValidator\r\n\r\n// validates dropdown list cells against the possible values.\r\n\r\nimport {CellValidator, ValidationError} from \"../cell-validation\";\r\n\r\nexport function CDMSSelectCellValidator(cdms_field) {\r\n this.base = CellValidator;\r\n this.base(cdms_field);\r\n};\r\nCDMSSelectCellValidator.prototype = new CellValidator;\r\n\r\nCDMSSelectCellValidator.prototype.validateFieldControlTypeValidation = function (data) {\r\n\r\n if (!data.value)\r\n return this.errors; //early return -- don't bother if we don't have a value\r\n\r\n //validate: does the value exist in the PossibleValues?\r\n\r\n //first, make sure our PossibleValues is properly defined for this field...\r\n if (typeof data.colDef.cellEditorParams === 'undefined' ||\r\n typeof data.colDef.cellEditorParams.values === 'undefined') {\r\n\r\n console.error(\"Configuration error: [\" + data.colDef.cdmsField.DbColumnName + \"] is a SELECT but PossibleValues is undefined.\");\r\n console.dir(data);\r\n this.errors.push(new ValidationError(this.cdms_field, \"System error: no PossibleValues defined for this field.\"));\r\n }\r\n else //Possible Values exist and we can use them\r\n {\r\n //is the multiselect possiblevalues an array? if not, we need to compare the keys not the values because possible values is using aliases\r\n if (Array.isArray(data.colDef.cellEditorParams.values)) {\r\n if ((!data.colDef.validator.validation.containsExactly(\"omit\")) && (!data.colDef.cellEditorParams.values.containsExactly(data.value))) {\r\n this.errors.push(new ValidationError(this.cdms_field, \"Invalid selection (\" + data.value + \" not in PossibleValues).\"));\r\n }\r\n }\r\n else\r\n {\r\n // If data.value is an Id, this works.\r\n // If data.value is a text value, this does not work.\r\n //if (!Object.keys(data.colDef.cellEditorParams.values).containsExactly(data.value)) {\r\n // this.errors.push(new ValidationError(this.cdms_field, \"Invalid selection (\" + data.value + \" not in PossibleValues).\"));\r\n //}\r\n\r\n // If data.value is either an Id, or a text value, this works.\r\n if ((data.colDef.cellEditorParams.values !== null) &&\r\n (!data.colDef.validator.validation.containsExactly(\"omit\")) &&\r\n //@ts-ignore\r\n ((!Object.keys(data.colDef.cellEditorParams.values).containsExactly(data.value)) &&\r\n // @ts-ignore\r\n (!Object.values(data.colDef.cellEditorParams.values).containsExactly(data.value)))\r\n ){\r\n this.errors.push(new ValidationError(this.cdms_field, \"Invalid selection (\" + data.value + \" not in PossibleValues).\"));\r\n }\r\n }\r\n }\r\n\r\n return this.errors;\r\n};\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\n\r\nimport {\r\n getByField,\r\n getFilesArrayAsList,\r\n getParsedMetadataValues,\r\n instrumentsToPossibleValues, makeObjects, orderByAlpha\r\n} from \"../../../common/common-functions\";\r\nimport {MAX_DATASET_RECORDS_THRESHOLD,\r\n serverUrl,\r\n REPORTSERVER_URL\r\n} from \"../../../../config\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar dataset_query = ['$scope', '$routeParams', 'DatasetService', '$location', '$uibModal', '$rootScope', 'ChartService',\r\n 'ProjectService', 'CommonService', 'SubprojectService', 'GridService', '$timeout',\r\n function ($scope, $routeParams, DatasetService, $location, $uibModal, $rootScope, ChartService, ProjectService, CommonService, SubprojectService, GridService, $timeout) {\r\n $scope.existingChartConfigs = ['AdultWier', 'Appraisal', 'ArtificialProduction', 'BSample', 'CreelSurvey',\r\n 'ElectroFishing', 'FishScales', 'Screwtrap', 'SnorkelFish', 'SpawningGroundSurvey', 'WaterQuality', 'WaterTemp','WaterTemp-standalone','WaterTemp-orig', 'WaterTemp-placeholder']\r\n $scope.system = {loading: true, messages: []};\r\n\r\n $scope.Criteria = {};\r\n $scope.criteriaList = [];\r\n $scope.AutoExecuteQuery = false;\r\n $scope.selectedRow = {};\r\n $scope.onField = {};\r\n\r\n $scope.instrumentIdList = [];\r\n $scope.instrumentAccuracyCheckList = [];\r\n\r\n $scope.prevTop = -1;\r\n $scope.lastRecord = 0;\r\n $scope.queryFullResults = [];\r\n $scope.queryTotalRecords = 0;\r\n $scope.queryTotalRecordsRun = false;\r\n $scope.DatasetTotalRecordsRun = false;\r\n $scope.DatasetTotalRecords = -1; //\"...\";\r\n $scope.RecordGroupSize = 30;\r\n $scope.prevStartRow = 0;\r\n $scope.endRow = $scope.RecordGroupSize;\r\n $scope.ScrollIndex = 0;\r\n $scope.scrollCount = 0;\r\n $scope.lastVisibleRow = 18;\r\n $scope.endPadding = 5;\r\n $scope.queryLoaded = false;\r\n $scope.datasource = null;\r\n $scope.NumberOfRecordsToPull = -1;\r\n $scope.NumberOfRecordsToPullSave = $scope.NumberOfRecordsToPull;\r\n $scope.infGridParams = null;\r\n $scope.fieldCriteriaRemoved = false;\r\n $scope.queryResult = {\r\n Error: false,\r\n ErrorMessage: null\r\n }\r\n $scope.runningQueryWithFieldCriteria = false;\r\n $scope.runningQueryToLoadAllRecords = false;\r\n $rootScope.infGridParams = null;\r\n $rootScope.datasetId = null;\r\n $rootScope.queryCriteriaList = null;\r\n\r\n $scope.dataset = DatasetService.getDataset($routeParams.Id);\r\n\r\n $scope.dataset.$promise.then(function () {\r\n\r\n $rootScope.datasetId = $scope.dataset.Id;\r\n\r\n /*if (typeof $scope.dataset.Config.NumberRecordsForQueryToPull !== 'undefined')\r\n $scope.NumberOfRecordsToPull = $scope.dataset.Config.NumberRecordsForQueryToPull;\r\n else\r\n $scope.NumberOfRecordsToPull = 10000;\r\n\r\n $scope.NumberOfRecordsToPullSave = $scope.NumberOfRecordsToPull;\r\n\r\n //$scope.dataAgGridOptions.cacheBlockSize = $scope.NumberOfRecordsToPull;\r\n */\r\n\r\n $scope.project = ProjectService.getProject($scope.dataset.ProjectId);\r\n\r\n if ($scope.dataset.Datastore.TablePrefix === \"WaterTemp\")\r\n $scope.instrumentAccuracyCheckList = ProjectService.getAllInstrumentAccuracyChecks();\r\n\r\n if (($scope.dataset.Config) && ($scope.dataset.Config.RedirectToReportsPage)) {\r\n\r\n var strUrl = $scope.dataset.Config.RedirectToReportsPage;\r\n window.open(strUrl, '_blank');\r\n var strParent = \"activities/\" + $scope.dataset.Id;\r\n $location.url(strParent);\r\n } else {\r\n\r\n $scope.project.$promise.then(function () {\r\n $scope.activateGrid();\r\n });\r\n\r\n $scope.query = $scope.buildQuery();\r\n $scope.query.criteria.GetTotalCount = true;\r\n\r\n $scope.query.TotalRecordCount = DatasetService.queryActivities($scope.query);\r\n $scope.query.TotalRecordCount.$promise.then(function () {\r\n\r\n if (!$scope.query.TotalRecordCount)\r\n return;\r\n else if (!$scope.query.TotalRecordCount.$resolved)\r\n return;\r\n\r\n $scope.query.criteria.GetTotalCount = false;\r\n\r\n // There should only be one...\r\n $scope.query.TotalRecordCount.forEach(function (item) {\r\n $scope.DatasetTotalRecords = item.TotalRecords;\r\n });\r\n\r\n if ($scope.DatasetTotalRecords >= MAX_DATASET_RECORDS_THRESHOLD) {\r\n //$location.path(REPORTSERVER_URL + $scope.dataset.Datastore.TablePrefix);\r\n // First, get us off the dataset query page, and put us on the dataset activities page.\r\n location.replace(\"/activities/\" + $scope.dataset.Id);\r\n \r\n // Next, open a new tab and with the report server url.\r\n //console.log(REPORTSERVER_URL + $scope.dataset.Datastore.TablePrefix); \r\n window.open(REPORTSERVER_URL + $scope.dataset.Datastore.TablePrefix, '_blank').focus();\r\n }\r\n });\r\n }\r\n });\r\n\r\n $scope.clearValue = function () {\r\n $scope.Criteria.Value = null;\r\n console.dir($scope.Criteria);\r\n };\r\n\r\n //ag-grid - header + details --- alrid for multiple activities\r\n $scope.dataAgGridOptions = {\r\n rowBuffer: 0,\r\n animateRows: true,\r\n columnDefs: null,\r\n rowData: [],\r\n rowSelection: 'multiple',\r\n suppressPropertyNamesCheck: true, // this removes the console warning for custom properties, this is a known problem, see https://github.com/ag-grid/ag-grid/issues/2320\r\n //*rowModelType: 'infinite',\r\n //*serverSideStoreType: 'partial',\r\n //paginationPageSize: 30,\r\n //*cacheOverflowSize: 2,\r\n //maxBlocksInCache controls how many rows should be kept for viewing. Default is all,\r\n // but when left off (default), it only shows 100. So when scrolling down, only\r\n // the first 100 records show.\r\n //*maxBlocksInCache: 10000000,\r\n //cacheBlockSize controls how many rows to fetch. The default is 100.\r\n //*cacheBlockSize: $scope.NumberOfRecordsToPull,\r\n //*maxConcurrentDatasourceRequests: 1,\r\n //infiniteInitialRowCount: 30,\r\n //*blockLoadDebounceMillis: 500,\r\n //maxBlocksInCache: 10,\r\n // Leave datasource out right now. We will set it later,\r\n // when we are ready to load data.\r\n //*datasource: $scope.dataSource,\r\n //*gridOptions: any = this.gridOptions,\r\n\r\n onSelectionChanged: function (params) {\r\n $scope.selectedRow = $scope.dataAgGridOptions.api.getSelectedRows()[0];\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n\r\n onCellFocused: function (params) {\r\n //console.dir(params);\r\n if (!params.column)\r\n return;\r\n\r\n $scope.onField = (params.column.colDef.cdmsField);\r\n $scope.$apply();\r\n },\r\n\r\n onBodyScroll: function (params) {\r\n // Leaving this funciton in, in case we need it sometime in the future.\r\n //console.log(\" scrolling \");\r\n //console.dir(params);\r\n //console.dir($scope.ag_grid);\r\n\r\n //$scope.scrollCount++;\r\n //console.log(\"$scope.scrollCount = \" + $scope.scrollCount);\r\n //console.log(\"-----\");\r\n },\r\n\r\n onGridReady: function (params) {\r\n console.log(\"GRID READY fired. ------------------------------------------>>>\");\r\n $scope.system.loading = false;\r\n $scope.$apply();\r\n GridService.autosizeColumns($scope.dataAgGridOptions);\r\n },\r\n\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n filter: true,\r\n },\r\n\r\n processCellForClipboard: $scope.processCellDataForOutput,\r\n };\r\n\r\n $scope.activateGrid = function () {\r\n console.log(\"activating grid!\");\r\n //setup grid and coldefs and then go!\r\n $timeout(function () {\r\n\r\n //need to set some header field possible values manually BEFORE we load our coldefs - so that the named value will display in the grid.\r\n var instrument_coldef = getByField($scope.dataset.Fields, \"InstrumentId\", \"DbColumnName\");\r\n if (instrument_coldef) {\r\n instrument_coldef.Field.PossibleValues = instrumentsToPossibleValues($scope.project.Instruments);\r\n }\r\n\r\n //var hidden_header_controltypes = [\"file\", \"hidden\", \"accuracy-check-select\", \"activity-text\", \"instrument-select\", \"post-accuracy-check-select\", \"qa-status-comment\", \"timezone-select\"];\r\n var hidden_header_controltypes = [\"file\", \"hidden\", \"activity-text\", \"instrument-select\", \"qa-status-comment\"];\r\n //var hidden_grid_controltypes = [\"hidden\", \"activity-text\",\"accuracy-check-select\",\"timezone-select\",\"post-accuracy-check-select\"];\r\n var hidden_grid_controltypes = [\"hidden\", \"activity-text\"];\r\n\r\n $scope.dataAgColumnDefs = GridService.getAgColumnDefs($scope.dataset);\r\n\r\n //setup any possible values that are needed - detail\r\n //note: the \"hide\" property hides the column in the results grid; the \"hide_header\" hides it in the header list in columns multiselect\r\n angular.forEach($scope.dataAgColumnDefs.DetailFields, function (fieldDef) {\r\n if (fieldDef.field == \"QAStatusId\") { //RowQAStatusId because we're in the details\r\n fieldDef.field = fieldDef.DbColumnName = \"RowQAStatusId\";\r\n fieldDef.PossibleValuesList = makeObjects($scope.dataset.RowQAStatuses, 'Id', 'Name');\r\n fieldDef.setPossibleValues(fieldDef.PossibleValuesList);\r\n fieldDef.hide_header = true;\r\n\r\n } else {\r\n fieldDef.PossibleValuesList = getParsedMetadataValues(fieldDef.PossibleValues);\r\n }\r\n\r\n if (fieldDef.ControlType == 'file' || fieldDef.ControlType == 'hidden')\r\n fieldDef.hide_header = true;\r\n\r\n });\r\n\r\n console.log(\"LocationId check section is next...\");\r\n\r\n //setup activity fields to point to the right place\r\n //note: the \"hide\" property hides the column in the results grid; the \"hide_header\" hides it in the header list in columns multiselect\r\n angular.forEach($scope.dataAgColumnDefs.HeaderFields, function (fieldDef) {\r\n //console.dir(fieldDef);\r\n if (fieldDef.field == \"LocationId\") {\r\n\r\n // The commented-out part below (here to line 258) is residual from the old page, \r\n // where users could add criteria at the top of the page.\r\n // Now the filtering is done in the grid.\r\n //----------------------------------------------\r\n //load the config so that we can check if we are supposed to include the habitat sites for this project\r\n /*try {\r\n $scope.project.Config = ($scope.project.Config) ? angular.fromJson($scope.project.Config) : {};\r\n } catch (e) {\r\n console.error(\"config could not be parsed for project\" + $scope.project.Config);\r\n console.dir(e);\r\n }\r\n\r\n var dataset_locations = ProjectService.getDatasetLocations($scope.project.Id, $scope.dataset.Id);\r\n\r\n dataset_locations.$promise.then(function () {\r\n dataset_locations = dataset_locations.sort(orderByAlpha);\r\n\r\n fieldDef.PossibleValuesList = dataset_locations; //makeObjects(dataset_locations, 'Id', 'Label'); //used in the headers\r\n\r\n if (fieldDef.hasOwnProperty('setPossibleValues'))\r\n fieldDef.setPossibleValues(makeObjects(dataset_locations, 'Id', 'Label')); //used in the grid\r\n })\r\n */\r\n\r\n\r\n } else if (fieldDef.field == \"QAStatusId\") { //ActivityQAStatusId\r\n fieldDef.field = fieldDef.DbColumnName = \"ActivityQAStatusId\";\r\n fieldDef.PossibleValuesList = makeObjects($scope.dataset.QAStatuses, 'Id', 'Name');\r\n\r\n if (fieldDef.hasOwnProperty('setPossibleValues'))\r\n fieldDef.setPossibleValues(fieldDef.PossibleValuesList);\r\n\r\n //fieldDef.hide_header = true; //hide in header\r\n } else if (fieldDef.field == \"QAComments\") { //ActivityQAStatusId\r\n fieldDef.field = fieldDef.DbColumnName = \"ActivityQAComments\";\r\n }\r\n\r\n if (fieldDef.ControlType == \"select\" || fieldDef.ControlType == \"multiselect\") {\r\n fieldDef.PossibleValuesList = getParsedMetadataValues(fieldDef.PossibleValues);\r\n\r\n if (fieldDef.hasOwnProperty('setPossibleValues'))\r\n fieldDef.setPossibleValues(fieldDef.PossibleValuesList);\r\n\r\n } else if (fieldDef.ControlType == \"instrument-select\") {// || fieldDef.ControlType == \"accuracy-check-select\" || fieldDef.ControlType ==\"post-accuracy-check-select\" || fieldDef.ControlType == \"timezone-select\") {\r\n fieldDef.PossibleValuesList = makeObjects(fieldDef.PossibleValues, 'Id', 'Label');\r\n\r\n if (fieldDef.hasOwnProperty('setPossibleValues'))\r\n fieldDef.setPossibleValues(fieldDef.PossibleValuesList);\r\n\r\n //fieldDef.AccuracyChecks =\r\n\r\n } else if (fieldDef.ControlType == \"fisherman-select\") {\r\n fieldDef.PossibleValuesList = fieldDef.PossibleValues;\r\n\r\n if (fieldDef.hasOwnProperty('setPossibleValues'))\r\n fieldDef.setPossibleValues(fieldDef.PossibleValuesList);\r\n\r\n } else if (fieldDef.ControlType == \"number-select\") {\r\n fieldDef.PossibleValuesList = fieldDef.PossibleValues;\r\n\r\n if (fieldDef.hasOwnProperty('setPossibleValues'))\r\n fieldDef.setPossibleValues(fieldDef.PossibleValuesList);\r\n\r\n } else if (fieldDef.ControlType == \"accuracy-check-select\") {\r\n fieldDef.PossibleValuesList = fieldDef.PossibleValues;\r\n\r\n if (fieldDef.hasOwnProperty('setPossibleValues'))\r\n fieldDef.setPossibleValues(fieldDef.PossibleValuesList);\r\n\r\n } else if (fieldDef.ControlType == \"post-accuracy-check-select\") {\r\n fieldDef.PossibleValuesList = fieldDef.PossibleValues;\r\n\r\n if (fieldDef.hasOwnProperty('setPossibleValues'))\r\n fieldDef.setPossibleValues(fieldDef.PossibleValuesList);\r\n\r\n }\r\n\r\n //hidden headers\r\n // @ts-ignore\r\n if (hidden_header_controltypes.contains(fieldDef.ControlType))\r\n fieldDef.hide_header = true; //just the headers\r\n\r\n //hidden in grid\r\n // @ts-ignore\r\n if (hidden_grid_controltypes.contains(fieldDef.ControlType))\r\n fieldDef.hide = true; //just the detail\r\n\r\n\r\n });\r\n\r\n $scope.dataAgGridOptions.columnDefs = $scope.dataAgColumnDefs.HeaderFields.concat($scope.dataAgColumnDefs.DetailFields);\r\n\r\n //console.log(\"Ready to go!\");\r\n //console.dir($scope.dataAgGridOptions.columnDefs);\r\n //console.dir($scope.imported_rows);\r\n\r\n\r\n var ag_grid_div = document.querySelector('#query-grid') as HTMLElement; //get the container id...\r\n $scope.ag_grid = new Grid(ag_grid_div, $scope.dataAgGridOptions); //bind the grid to it.\r\n //$scope.dataAgGridOptions.api.showLoadingOverlay(); //show loading...\r\n\r\n //set the detail values into the grid\r\n //$scope.dataAgGridOptions.api.setRowData($scope.imported_rows);\r\n\r\n //$scope.dataAgGridOptions.api.redrawRows();\r\n //GridService.autosizeColumns($scope.dataAgGridOptions);\r\n\r\n //$scope.calculateStatistics();\r\n //-----\r\n\r\n $scope.query = undefined;\r\n $scope.query = $scope.buildQuery();\r\n $scope.query.criteria.GetTotalCount = false;\r\n $scope.executeQuery();\r\n\r\n //****** Infinite Scrolling *******\r\n // With the dataSource part here, and turned on,\r\n // When the page loads, it has already called the\r\n // backend and pull some rows.\r\n // We want to wait, for the user to click the\r\n // Execute button, before calling the back end.\r\n //var dataSource = {\r\n /*\r\n $scope.dataSource = {\r\n //$scope.setDataSource = {\r\n rowCount: null, // behave as infinite scroll\r\n\r\n getRows: function(params) {\r\n //console.log('asking for ' + params.startRow + ' to ' + params.endRow);\r\n $scope.infGridParams = angular.copy(params);\r\n\r\n if (params.filterModel !== {})\r\n {\r\n // For now, we will just dump filter model.\r\n // When we revamp the query page, we will handle things better then.\r\n console.log(\"We don't currently user filterModel on the query page; ignoring filterModel.\");\r\n //params.filterModel = {};\r\n }\r\n\r\n // At this point in your code, you would call the server, using $http if in AngularJS 1.x.\r\n if (($scope.runningQueryToLoadAllRecords) && (typeof $scope.query !== 'undefined'))\r\n {\r\n // The user clicked on \"Load all records\",\r\n // the execution went to executeQuery, and then\r\n // came back here.\r\n params.startRow = 0;\r\n params.endRow = $scope.DatasetTotalRecords;\r\n params.NumberOfRecordsToPull = $scope.DatasetTotalRecords;\r\n\r\n $scope.executeQuery(params);\r\n }\r\n else if (typeof $scope.query === 'undefined')\r\n {\r\n // We have no query yet, so we are pulling the first block.\r\n // Could be from when the page loads,\r\n // or after the user adds or removes field criteria,\r\n // or if the user clicks on the Load all records button.\r\n console.log(\"Initial pull...\");\r\n console.log('asking for ' + params.startRow + ' to ' + params.endRow);\r\n $scope.queryTotalRecordsRun = false;\r\n $scope.query = $scope.buildQuery(params);\r\n $scope.executeQuery(params);\r\n\r\n //$scope.queryGetRecordCount();\r\n }\r\n else if (($scope.query.criteria.Fields.length === 0) && ($scope.fieldCriteriaRemoved))\r\n {\r\n // The user used criteria, and then removed it.\r\n\r\n // Reset things.\r\n $scope.fieldCriteriaRemoved = false;\r\n params.startRow = 0;\r\n params.endRow = $scope.NumberOfRecordsToPull;\r\n $scope.queryTotalRecords = 0;\r\n\r\n console.log('asking for ' + params.startRow + ' to ' + params.endRow);\r\n\r\n $scope.query = $scope.buildQuery(params);\r\n $scope.executeQuery(params);\r\n }\r\n else if (($scope.query.criteria.Fields.length === 0) &&\r\n (typeof $scope.query.results !== 'undefined') && ($scope.query.results !== null) &&\r\n ($scope.query.results.$resolved) && ($scope.query.results.length <= params.endRow))\r\n {\r\n // We have a query, results, it completed, and the length < params.endRow,\r\n // The user scrolled down the results grid, so we want to use the same query,\r\n // just offset into the result set, to get more of the same results (params.starRow)\r\n console.log(\"User scrolled down...\");\r\n\r\n //if ($scope.queryTotalRecords === $scope.DatasetTotalRecords)\r\n //{\r\n // params.startRow = $scope.DatasetTotalRecords;\r\n // params.endRow = $scope.DatasetTotalRecords;\r\n //}\r\n\r\n console.log('asking for ' + params.startRow + ' to ' + params.endRow);\r\n $scope.executeQuery(params);\r\n }\r\n else if ($scope.query.criteria.Fields.length > 0)\r\n {\r\n // Coming from $scope.runQueryWithCriteria, we go here.\r\n if ((typeof $scope.query.results === 'undefined') || ($scope.query.results === null))\r\n {\r\n // To get here, the users supplies field info,\r\n // then the grid gets cleared, and we reset things,\r\n // Here, we want to reset the params, before pulling the query afresh.\r\n //params.startRow = 0;\r\n //params.endRow = $scope.NumberOfRecordsToPull;\r\n\r\n //$scope.query = $scope.buildQuery(params);\r\n //$scope.queryTotalRecords = 0;\r\n\r\n console.log('asking for ' + params.startRow + ' to ' + params.endRow);\r\n $scope.query = $scope.buildQuery(params);\r\n $scope.executeQuery(params);\r\n\r\n //$scope.queryGetRecordCount();\r\n }\r\n //else if ($scope.query.results.$resolved)\r\n //{\r\n // // The user ran the query with field info already.\r\n // // This time we are scrolling.\r\n // console.log(\"Results resolved...\")\r\n // $scope.executeQuery(params);\r\n //}\r\n //else if (!$scope.query.results.$resolved)\r\n //{\r\n // // The user ran the query with field info already.\r\n // // This time we are scrolling.\r\n // console.log(\"Results not resolved...\")\r\n // $scope.executeQuery(params);\r\n //}\r\n else\r\n {\r\n // This time we are scrolling.\r\n console.log(\"We have results; scrolling...\")\r\n\r\n $scope.executeQuery(params);\r\n }\r\n\r\n }\r\n else if ((typeof $scope.query.results !== 'undefined') && ($scope.query.results !== null) &&\r\n ($scope.query.results.$resolved) && ($scope.query.results.length <= params.endRow))\r\n {\r\n // // Executing the query again, because the user scrolled down the results grid.\r\n // so we want to use the same query, just offset into the result\r\n // set, to get more of the same result set (params.starRow)\r\n console.log(\"Query results exist and not null, and results length < endRow...\");\r\n console.log('asking for ' + params.startRow + ' to ' + params.endRow);\r\n $scope.executeQuery(params);\r\n }\r\n else if (($scope.query.results) && ($scope.queryTotalRecords === $scope.DatasetTotalRecords))\r\n {\r\n // We have all of our results, and we scrolled down.\r\n params.startRow = 0;\r\n params.endRow = $scope.DatasetTotalRecords;\r\n params.NumberOfRecordsToPull = $scope.DatasetTotalRecords;\r\n\r\n $scope.executeQuery(params);\r\n }\r\n else if (($scope.query.results) && ($scope.query.results.length > params.endRow))\r\n {\r\n // The data in this dataset pulled quick, so we\r\n // fetched all the data in one pull.\r\n // Do nothing.\r\n //$scope.executeQuery(params);\r\n }\r\n else if (($scope.query.results) && ($scope.query.results.length <= params.endRow))\r\n {\r\n // Removed critera, executed query, second pass.\r\n //$scope.queryTotalRecords = 0;\r\n $scope.executeQuery(params);\r\n }\r\n\r\n // call the success callback\r\n // This gets called in $scope.executeQuery.\r\n //params.successCallback($scope.query.results, $scope.lastRecord);\r\n\r\n },\r\n };\r\n */\r\n //$scope.dataAgGridOptions.api.setDatasource(dataSource);\r\n //$scope.dataAgGridOptions.api.setDatasource($scope.dataSource);\r\n //********************************\r\n\r\n }, 0);\r\n };\r\n\r\n\r\n $scope.addCriteria = function () {\r\n // Notes...\r\n // When we have a list of possible values, such as the sex of a fish ([\"Male\",\"Female\",\"Unknown\"]),\r\n // and the list is an array, we pick the item, for example \"Male\", and store the value in the backend.\r\n // However, when the list is itself an object (Fishermen, or StreamName), the possible values are\r\n // a collection of key value pairs, and the list is NOT an array. In this case the Id gets stored\r\n // in the backend, NOT the name on the screen.\r\n\r\n // When the user selects only 1 item from the list, it gets converted to a number (below).\r\n // However, when the user selects 2 or more items from the list, the value becomes an array.\r\n // Therefore, we must walk this list first, and check each item against the PossibleValues.\r\n\r\n //possible values that are associative arrays will need to dereference from the value to the key\r\n /*if ($scope.Criteria.ParamFieldSelect[0].PossibleValues && !Array.isArray($scope.Criteria.ParamFieldSelect[0].PossibleValues)) {\r\n Object.keys($scope.Criteria.ParamFieldSelect[0].PossibleValues).forEach(function (key) {\r\n if ($scope.Criteria.ParamFieldSelect[0].PossibleValues[key] == $scope.Criteria.Value) {\r\n //$scope.Criteria.DisplayName = $scope.Criteria.Value;\r\n $scope.Criteria.Value = key; //convert it to the key instead of the value...\r\n }\r\n });\r\n }\r\n */\r\n\r\n if ($scope.Criteria.ParamFieldSelect[0].PossibleValues && !Array.isArray($scope.Criteria.ParamFieldSelect[0].PossibleValues)) {\r\n //if ((typeof $scope.Criteria.ParamFieldSelect[0].PossibleValues !== 'undefined') && (($scope.Criteria.ParamFieldSelect[0].PossibleValues) === null) || (!Array.isArray($scope.Criteria.ParamFieldSelect[0].PossibleValues))) {\r\n if (Array.isArray($scope.Criteria.Value)) {\r\n var arySearchList = [];\r\n var aryDisplayList = [];\r\n\r\n $scope.Criteria.Value.forEach(function (item) {\r\n // If the item is already a number, just add it to the list.\r\n // Otherwise, we must convert it to a number.\r\n if (parseInt(item)) {\r\n //Object.keys($scope.Criteria.ParamFieldSelect[0].PossibleValuesList).forEach(function (key) {\r\n $scope.Criteria.ParamFieldSelect[0].PossibleValuesList.forEach(function (key) {\r\n if (key.Id === parseInt(item)) {\r\n arySearchList.push(item);\r\n aryDisplayList.push(key.Label);\r\n }\r\n });\r\n } else {\r\n Object.keys($scope.Criteria.ParamFieldSelect[0].PossibleValuesList).forEach(function (key) {\r\n if ($scope.Criteria.ParamFieldSelect[0].PossibleValues[key] === item) {\r\n arySearchList.push(key);\r\n aryDisplayList.push(item);\r\n }\r\n });\r\n }\r\n });\r\n\r\n $scope.Criteria.Value = \"[\" + arySearchList.join() + \"]\";\r\n $scope.Criteria.DisplayName = \"[\" + aryDisplayList.join() + \"]\";\r\n } else {\r\n Object.keys($scope.Criteria.ParamFieldSelect[0].PossibleValues).forEach(function (key) {\r\n\r\n if ($scope.Criteria.ParamFieldSelect[0].PossibleValues[key] == $scope.Criteria.Value) {\r\n $scope.Criteria.DisplayName = $scope.Criteria.Value;\r\n $scope.Criteria.Value = key; //convert it to the key instead of the value...\r\n }\r\n\r\n });\r\n }\r\n } else {\r\n if (typeof $scope.Criteria.Value === 'string') {\r\n $scope.Criteria.DisplayName = $scope.Criteria.Value;\r\n } else if (typeof $scope.Criteria.Value === 'object') {\r\n if ($scope.Criteria.Value.hasOwnProperty('ParamFieldDateType') && $scope.Criteria.Value.ParamFieldDateType == 'between')\r\n $scope.Criteria.DisplayName = $scope.Criteria.Value.BetweenFromFieldDate + \" - \" + $scope.Criteria.Value.BetweenToFieldDate;\r\n } else {\r\n if ($scope.Criteria.ParamFieldSelect[0].PossibleValues)\r\n Object.keys($scope.Criteria.ParamFieldSelect[0].PossibleValues).forEach(function (key) {\r\n\r\n if ($scope.Criteria.ParamFieldSelect[0].PossibleValues[key] == $scope.Criteria.Value) {\r\n $scope.Criteria.DisplayName = $scope.Criteria.Value;\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n\r\n $scope.criteriaList.push({\r\n DbColumnName: $scope.Criteria.ParamFieldSelect[0].DbColumnName,\r\n Id: $scope.Criteria.ParamFieldSelect[0].cdmsField.Id,\r\n Value: $scope.Criteria.Value,\r\n DisplayName: $scope.Criteria.DisplayName,\r\n });\r\n\r\n\r\n //console.log($scope.Criteria.ParamFieldSelect[0].PossibleValues\r\n //console.dir($scope.Criteria.ParamFieldSelect[0]);\r\n console.dir($scope.criteriaList);\r\n\r\n $scope.Criteria.Value = null;\r\n $scope.Criteria.DisplayName = null;\r\n\r\n if ($scope.AutoExecuteQuery) {\r\n //$scope.executeQuery();\r\n $scope.setDataSource();\r\n }\r\n };\r\n\r\n $scope.clearGrid = function () {\r\n // Dump the query results.\r\n $scope.query = null;\r\n\r\n // Take the grid out of Infinite Scrolling.\r\n $scope.lastRecord = -1;\r\n\r\n // *** This is the critical part ***\r\n // These actions are what actually clear the grid.\r\n\r\n // First, create a new datasource, fill it with an empty result set,\r\n // and take the grid out of infinite scrolling mode.\r\n var dataSource = {\r\n rowCount: 0, // behave as a regular grid.\r\n\r\n getRows: function (params) {\r\n // Empty result set.\r\n // Remember, a blank, null, or -1 puts the grid INTO\r\n // infinite scrolling mode, and a 0 takes us OUT of\r\n // infinite scrolling mode.\r\n params.successCallback([], 0);\r\n },\r\n\r\n };\r\n\r\n // Now, change the datasource to be the empty grid we just created.\r\n $scope.dataAgGridOptions.api.setDatasource(dataSource);\r\n };\r\n\r\n $scope.runQueryWithCriteria = function (params) {\r\n // When the page opens and the query first runs, it pulls the first set of\r\n // records, with no filters (get everything).\r\n // When the user clicks Execute Query, they have probably added\r\n // criteria. Therefore, we must reset the query,\r\n // so that we don't append the new results onto the old result set.\r\n // Also, we want to start at the beginning,\r\n // rather than offsetting into the data (having a startRow > 0).\r\n\r\n // First dump the last results and reset things.\r\n $scope.clearGrid();\r\n $scope.query = undefined;\r\n\r\n $scope.queryTotalRecords = 0;\r\n $scope.DatasetTotalRecords = \"...\";\r\n $scope.queryTotalRecordsRun = false;\r\n $scope.DatasetTotalRecordsRun = false;\r\n $scope.resetQueryError();\r\n $scope.runningQueryWithFieldCriteria = true;\r\n $scope.NumberOfRecordsToPull = $scope.NumberOfRecordsToPullSave;\r\n\r\n // Now, set the datasource for the grid back to the real thing.\r\n $scope.dataAgGridOptions.api.setDatasource($scope.dataSource);\r\n\r\n // Update the offset and endRow.\r\n params.startRow = 0;\r\n params.endRow = $scope.NumberOfRecordsToPull;\r\n\r\n $scope.dataSource.getRows(params);\r\n };\r\n\r\n $scope.runQueryWithCriteriaLoadAllItems = function () {\r\n\r\n if ($scope.DatasetTotalRecords > 300000) {\r\n alert(\"The requested query results are currently too intense for this system. Please contact the GIS office for support with this request.\");\r\n //$scope.queryResult.Error = true;\r\n //$scope.queryResult.ErrorMessage = \"The query results are currently too intense for this system. Please contact the GIS office for support with this request.\";\r\n return;\r\n }\r\n\r\n /*\r\n // Dump the last results and reset things.\r\n $scope.clearGrid();\r\n $scope.query = undefined;\r\n\r\n $scope.queryTotalRecords = 0;\r\n //$scope.queryTotalRecordsRun = false; // Should be true still.\r\n //$scope.DatasetTotalRecordsRun = false; // Should be true still.\r\n $scope.resetQueryError();\r\n //$scope.runningQueryWithFieldCriteria = true; // More thoughts on this below.\r\n\r\n // Now, set the datasource for the grid back to the real thing.\r\n $scope.dataAgGridOptions.api.setDatasource($scope.dataSource);\r\n\r\n if ($scope.fieldCriteriaRemoved)\r\n $scope.runningQueryWithFieldCriteria = false;\r\n\r\n $scope.runningQueryToLoadAllRecords = true;\r\n */\r\n // Set the starting row and ending row, so that we can get all the records.\r\n $scope.infGridParams = null;\r\n $scope.infGridParams = {\r\n startRow: 0,\r\n endRow: $scope.DatasetTotalRecords,\r\n NumberOfRecordsToPull: $scope.DatasetTotalRecords\r\n };\r\n //$scope.infGridParams.startRow = 0;\r\n //$scope.infGridParams.endRow = $scope.DatasetTotalRecords;\r\n //$scope.infGridParams.NumberOfRecordsToPull = $scope.DatasetTotalRecords;\r\n\r\n // Copy to $root, so that the next page can access it.\r\n $rootScope.infGridParams = angular.copy($scope.infGridParams);\r\n $rootScope.criteriaList = angular.copy($scope.criterialList);\r\n\r\n // $scope.NumberOfRecordsToPull is set initially when the page/dataset loads.\r\n $scope.NumberOfRecordsToPull = $scope.DatasetTotalRecords;\r\n\r\n // Run the query.\r\n //$scope.dataSource.getRows($scope.infGridParams);\r\n\r\n\r\n //$location.path(\"/datasetqueryviewallrecords/\" + $scope.dataset.Id);\r\n $location.path(\"https://paluutreports.ctuir.org/Reports/browse/\" + $scope.dataset.Datastore.TablePrefix);\r\n\r\n };\r\n\r\n //$scope.executeQuery = function(params){\r\n $scope.executeQuery = function () {\r\n console.log(\"Inside dataset-query.ts, $scope.executeQuery...\");\r\n $scope.query.loading = true;\r\n\r\n //$scope.query = $scope.buildQuery();\r\n\r\n //if ($scope.prevStartRow !== params.startRow)\r\n //{\r\n // $scope.query.criteria.startRow = params.startRow;\r\n // $scope.prevStartRow = params.startRow;\r\n //}\r\n\r\n //$scope.query.criteria.GetTotalCount = false;\r\n\r\n $scope.query.results = DatasetService.queryActivities($scope.query);\r\n\r\n $scope.query.results.$promise.then(function () {\r\n\r\n if (!$scope.query.results.$resolved)\r\n return;\r\n\r\n var intNumberOfRecordsReturned = -1;\r\n if ($scope.query.results.length)\r\n {\r\n intNumberOfRecordsReturned = $scope.query.results.length;\r\n }\r\n\r\n var blnTooManyRecords = (intNumberOfRecordsReturned > MAX_DATASET_RECORDS_THRESHOLD);\r\n //console.log(\"intNumberOfRecordsReturned = \" + intNumberOfRecordsReturned + \", MAX_DATASET_RECORDS_THRESHOLD = \" + MAX_DATASET_RECORDS_THRESHOLD);\r\n if (blnTooManyRecords)\r\n {\r\n // First, get us off the dataset query page, and put us on the dataset activities page.\r\n location.replace(\"/activities/\" + $scope.dataset.Id);\r\n\r\n // Next, open a new tab and with the report server url.\r\n //console.log(REPORTSERVER_URL + $scope.dataset.Datastore.TablePrefix); \r\n window.open(REPORTSERVER_URL + $scope.dataset.Datastore.TablePrefix, '_blank').focus();\r\n }\r\n else\r\n {\r\n $scope.query.results.forEach(function (item) {\r\n if (item.SqlError) {\r\n $scope.query.loading = false;\r\n console.error(\"SQL Timeout in the backend...\");\r\n\r\n $scope.queryResult.Error = true;\r\n $scope.queryResult.ErrorMessage = \"The query results are currently too intense for this system. Please contact the GIS office for support with this request.\";\r\n //alert($scope.queryResult.ErrorMessage);\r\n return;\r\n }\r\n\r\n $scope.instrumentAccuracyCheckList.forEach(function (accCheck) {\r\n if (item.AccuracyCheckId === accCheck.Id) {\r\n item.AccuracyCheckId = accCheck.Bath1Grade + \"-\" + accCheck.Bath2Grade + \" \" + moment(accCheck.CheckDate).format('MMM DD YYYY');\r\n }\r\n if (item.PostAccuracyCheckId === accCheck.Id) {\r\n item.PostAccuracyCheckId = accCheck.Bath1Grade + \"-\" + accCheck.Bath2Grade + \" \" + moment(accCheck.CheckDate).format('MMM DD YYYY');\r\n }\r\n });\r\n\r\n if (item.Timezone) {\r\n var parsedTimezone = JSON.parse(item.Timezone);\r\n item.Timezone = parsedTimezone.Name;\r\n }\r\n\r\n if (item.LocationLabel)\r\n item.LocationId = item.LocationLabel;\r\n \r\n if (item.QAStatusName)\r\n item.ActivityQAStatusId = item.QAStatusName;\r\n\r\n if (item.InstrumentLabel)\r\n item.InstrumentId = item.InstrumentLabel;\r\n\r\n //$scope.queryFullResults.push(item);\r\n\r\n $scope.queryTotalRecords++;\r\n });\r\n\r\n if ($scope.queryResult.Error)\r\n return; // Get us out of here.\r\n\r\n //$scope.queryTotalRecordsRun = true;\r\n console.log(\"$scope.queryTotalRecords = \" + $scope.queryTotalRecords);\r\n\r\n // Can only call setRowData when using normal row model (not infinite).\r\n //$scope.dataAgGridOptions.api.setRowData($scope.queryFullResults);\r\n $scope.dataAgGridOptions.api.setRowData($scope.query.results);\r\n $scope.query.loading = false;\r\n $scope.DatasetTotalRecords = $scope.query.results.length;\r\n\r\n // With serverSideStoreType = 'partial' (what we use for infinite scrolling),\r\n // we must set the lastRecord to -1, until we actually know what the\r\n // last record is. Otherwise, when it does reach the end of the data,\r\n // it could leave you with lots of blank rows showing in the grid\r\n // (perhaps hundreds).\r\n // $scope.lastRecord = -1;\r\n\r\n // How do we know, when to come out of infinite scroll mode?\r\n // Firstly, if the endRow is the same as the number NumberOfRecordsToPull,\r\n // it is because we are on our very first pull, not because we\r\n // have pulled all the records.\r\n // Secondly, checking the length of the results...\r\n // Via iterations, when we have pulled all the records,\r\n // the next pull will get zero (0) records. Thus zero is the indicator.\r\n\r\n // Regarding switching the grid into / out of infinite scroll mode...\r\n // When lastRecord is blank (undefined, null, or -1),\r\n // it keeps the grid IN infinite scrolling mode.\r\n // When lastRecord >= 0 (ie the length of the results),\r\n // it sets the scrollbar to exactly fit the number of rows\r\n // that are in the results. So we keep lastRecord set to -1,\r\n // until we have pulled all the records, and then we set it to the\r\n // length of the results, so they fit the grid exactly.\r\n //if ((params.endRow > $scope.NumberOfRecordsToPull) && ($scope.query.results.length === 0))\r\n //if (params.endRow > $scope.NumberOfRecordsToPull)\r\n /*\r\n if ($scope.query.results.length < $scope.NumberOfRecordsToPull)\r\n {\r\n // We pulled less records than NumberOfRecordsToPull, so we have them all.\r\n console.log($scope.query.results.length + \"<\" + $scope.NumberOfRecordsToPull);\r\n $scope.lastRecord = $scope.queryTotalRecords;\r\n }\r\n else if (($scope.runningQueryToLoadAllRecords) &&\r\n ($scope.query.results.length === $scope.DatasetTotalRecords) //&&\r\n //($scope.queryTotalRecordsRun)\r\n )\r\n {\r\n // We have all the records.\r\n console.log(\"Ran the query to pull all the records...\");\r\n $scope.lastRecord = $scope.DatasetTotalRecords;\r\n\r\n // Reset the flag.\r\n $scope.runningQueryToLoadAllRecords = false;\r\n }\r\n else if (($scope.query.results.length === $scope.DatasetTotalRecords) &&\r\n ($scope.DatasetTotalRecords > 0)\r\n )\r\n {\r\n $scope.lastRecord = $scope.DatasetTotalRecords;\r\n }\r\n //else if (($scope.query.results.length === 0) && ($scope.DatasetTotalRecords > 0))\r\n //{\r\n // // We have all the records.\r\n // $scope.lastRecord = $scope.DatasetTotalRecords;\r\n //}\r\n\r\n //$scope.queryTotalRecordsRun = true;\r\n\r\n //else if ($scope.NumberOfRecordsToPull === $scope.DatasetTotalRecords)\r\n //{\r\n // // We are pulling all the records, so we have them all now.\r\n // console.log(\"$scope.NumberOfRecordsToPull = $scope.DatasetTotalRecords\");\r\n // $scope.lastRecord = $scope.queryTotalRecords;\r\n //}\r\n\r\n // ****** Infinite Scrolling ******\r\n // call the success callback\r\n params.successCallback($scope.query.results, $scope.lastRecord);\r\n // ********************************\r\n\r\n // This corrects an intermittant, probable, a-synch situation.\r\n // When we run the app with the debugger open, $scope.queryTotalRecords\r\n // always comes out correct. However, when we close the debugger window,\r\n // $scope.queryTotalRecords is often double the value of $scope.DatasetTotalRecords\r\n // in certain cases, most notably and consistent in this case...\r\n // The number of records in the results are less than the number of records to pull.\r\n // For example, let's say we are pulling 1000 records per chunk, and the result is 225.\r\n // Sometimes the 225 will become 500 (double), and sometimes it remains 225 (correct).\r\n //\r\n // When the user does the following...\r\n // Select a field, select a criteria to filter for, and add the item.\r\n // Click on Execute query.\r\n // When the results come back, you will see that first the value is correct,\r\n // and the grid is empty, then the grid fills in and the value is double\r\n // that of $scope.DatasetTotalRecords.\r\n // If you click Execute query several times, sometimes the value is double,\r\n // and sometimes it is correct.\r\n // So this check solves the problem. Ugly and dirty, yes, but effective and\r\n // must less time-consuming than tracking down the cause.\r\n if ($scope.queryTotalRecords === $scope.DatasetTotalRecords * 2 )\r\n $scope.queryTotalRecords = $scope.queryTotalRecords / 2;\r\n\r\n $scope.query.loading = false;\r\n\r\n // If we have not pulled the record count yet, we need to,\r\n // but we only want to run it once, when the page loads,\r\n // or when the user supplies some fields to filter on.\r\n if (!$scope.DatasetTotalRecordsRun)\r\n {\r\n $scope.queryGetRecordCount();\r\n $scope.DatasetTotalRecordsRun = true;\r\n }\r\n */\r\n }\r\n });\r\n };\r\n\r\n $scope.queryGetRecordCount = function () {\r\n\r\n $scope.query.criteria.GetTotalCount = true;\r\n\r\n $scope.query.TotalRecordCount = DatasetService.queryActivities($scope.query);\r\n $scope.query.TotalRecordCount.$promise.then(function () {\r\n // There should only be one...\r\n $scope.query.TotalRecordCount.forEach(function (item) {\r\n $scope.DatasetTotalRecords = item.TotalRecords;\r\n });\r\n $scope.query.criteria.GetTotalCount = undefined;\r\n });\r\n };\r\n\r\n\r\n //$scope.buildQuery = function(params){\r\n $scope.buildQuery = function () {\r\n\r\n //var queryCriteriaList = angular.copy($scope.criteriaList);\r\n $scope.queryCriteriaList = angular.copy($scope.criteriaList);\r\n $scope.queryCriteriaList.forEach(function (criteria) {\r\n try {\r\n if (Array.isArray(criteria.Value))\r\n criteria.Value = angular.toJson(criteria.Value);\r\n } catch (e) {\r\n //oh well.\r\n }\r\n });\r\n $rootScope.queryCriteriaList = angular.copy($scope.queryCriteriaList);\r\n\r\n var query = null;\r\n query =\r\n {\r\n criteria: {\r\n DatasetId: $scope.dataset.Id,\r\n //Fields: \t queryCriteriaList,\r\n Fields: $scope.queryCriteriaList,\r\n TablePrefix: $scope.dataset.Datastore.TablePrefix,\r\n //startRow: params.startRow,\r\n //endRow: params.endRow,\r\n //sortModel: params.sortModel,\r\n //filterModel: params.filterModel,\r\n //NumberOfRecordsToPull: $scope.NumberOfRecordsToPull,\r\n //LastRecord: $scope.lastRecord,\r\n //params: params,\r\n },\r\n loading: true,\r\n };\r\n\r\n //$scope.startRow = params.startRow;\r\n\r\n //console.log(\"query in buildQuery is next...\");\r\n //console.dir(query);\r\n\r\n return query;\r\n };\r\n\r\n $scope.removeCriteria = function (idx) {\r\n $scope.criteriaList.splice(idx, 1);\r\n\r\n $scope.fieldCriteriaRemoved = true;\r\n\r\n if ($scope.AutoExecuteQuery)\r\n $scope.executeQuery();\r\n };\r\n\r\n\r\n $scope.openActivity = function () {\r\n console.dir($scope.selectedRow);\r\n $location.path(\"/dataview/\" + $scope.selectedRow.ActivityId);\r\n };\r\n\r\n //export the data - button click\r\n $scope.doExport = function () {\r\n\r\n if (!$scope.ExportFilename) {\r\n alert(\"Please enter a name for your export file like: 'TucannonJune25Export'.\");\r\n return;\r\n }\r\n\r\n var params = {\r\n fileName: $scope.ExportFilename + \".xlsx\",\r\n processCellCallback: $scope.processCellDataForOutput,\r\n };\r\n\r\n $scope.dataAgGridOptions.api.exportDataAsExcel(params);\r\n };\r\n\r\n //this is used by both export and copy functions to de-reference our values\r\n $scope.processCellDataForOutput = function (params) {\r\n\r\n //here we do any special formatting since export does NOT call cell renderers or cell formatters...\r\n //if ((params.column.colDef.DbColumnName == \"LocationId\") && (params.column.colDef.PossibleValues !== null)) {\r\n if ((params.column.colDef.DbColumnName == \"LocationId\") && ($scope.dataset.Locations !== null)) {\r\n //return params.column.colDef.PossibleValues[params.value];\r\n\r\n // For locations, overwrite the params value with the Label,\r\n // rather than the Id, before it goes to the file, so that\r\n // the text name shows in the file, rather than the Id.\r\n $scope.dataset.Locations.forEach(function (item) {\r\n if (params.value == item.Id)\r\n params.value = item.Label;\r\n //return item.Label;\r\n });\r\n\r\n }\r\n\r\n if ((params.column.colDef.DbColumnName == \"InstrumentId\") && (params.column.colDef.PossibleValues !== null)) {\r\n return params.column.colDef.PossibleValues[params.value];\r\n }\r\n\r\n if ((params.column.colDef.DbColumnName == \"FishermanId\") && (params.column.colDef.PossibleValues !== null)) {\r\n return params.column.colDef.PossibleValues[params.value];\r\n }\r\n\r\n if ((params.column.colDef.DbColumnName == \"StreamName\") && (params.column.colDef.PossibleValues !== null)) {\r\n return params.column.colDef.PossibleValues[params.value];\r\n }\r\n\r\n if ((params.column.colDef.DbColumnName == \"ActivityQAStatusId\") && (params.column.colDef.PossibleValues !== null)) {\r\n return params.column.colDef.PossibleValues[params.value];\r\n }\r\n\r\n if ((params.column.colDef.DbColumnName == \"RowQAStatusId\") && (params.column.colDef.PossibleValues !== null)) {\r\n return params.column.colDef.PossibleValues[params.value];\r\n }\r\n\r\n if (params.column.colDef.ControlType == 'file' || params.column.colDef.ControlType == 'link') {\r\n var retvalue = [];\r\n var files = getFilesArrayAsList(params.value);\r\n files.forEach(function (file) {\r\n if (params.column.colDef.ControlType == 'file') {\r\n if (file.Name)\r\n retvalue.push(file.Name);\r\n else\r\n retvalue.push(file);\r\n } else if (params.column.colDef.ControlType == 'link')\r\n retvalue.push(file.Link);\r\n });\r\n return retvalue.join();\r\n }\r\n\r\n if (params.column.colDef.ControlType == \"datetime\" || params.column.colDef.ControlType == \"time\") {\r\n\r\n let retval = params.value;\r\n try {\r\n retval = moment(params.value).format(\"YYYY-MM-DD HH:mm:ss\");\r\n } catch (e) {\r\n console.log(\"problem converting: \" + retval + \" to datetime text\");\r\n console.dir(e);\r\n }\r\n return retval;\r\n }\r\n\r\n if (params.column.colDef.ControlType == \"date\" || params.column.colDef.ControlType == \"activity-date\") {\r\n let retval = params.value;\r\n try {\r\n retval = moment(params.value).format(\"YYYY-MM-DD\");\r\n } catch (e) {\r\n console.log(\"problem converting: \" + retval + \" to datetime text\");\r\n console.dir(e);\r\n }\r\n return retval;\r\n }\r\n\r\n //default\r\n return params.value;\r\n\r\n };\r\n\r\n $scope.resetQueryError = function () {\r\n $scope.queryResult.Error = false;\r\n $scope.queryResult.ErrorMessage = null;\r\n };\r\n\r\n }];\r\n\r\nexport default dataset_query;\r\n","/**\r\n* Data entry, date edit, data view, import (single activity) all use this controller\r\n*/\r\nimport * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {\r\n getAllMatchingFromArray,\r\n getByField,\r\n getById,\r\n getDataGrade,\r\n getFilesArrayAsList,\r\n getMatchingByField,\r\n getParsedMetadataValues,\r\n initEdit, makeObjects\r\n} from \"../../../common/common-functions\";\r\nimport {AdminUserIds, ROWSTATUS_DELETED, SystemTimezones} from \"../../../../config\";\r\nimport {modalFiles_setupControllerForFileChooserModal} from \"../../../common/components/file/modal-files\";\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\nimport 'select2';\r\n\r\ndeclare const $: any;\r\n\r\n\r\nvar dataset_edit_form = ['$scope', '$q', '$timeout', '$sce', '$routeParams', 'DatasetService', 'SubprojectService', 'ProjectService', 'CommonService', '$uibModal', '$location', '$rootScope',\r\n 'ActivityParser', 'GridService','Upload','ChartService','$compile',\r\n function ($scope, $q, $timeout, $sce, $routeParams, DatasetService, SubprojectService, ProjectService, CommonService, $uibModal, $location, $rootScope,\r\n ActivityParser, GridService, Upload, ChartService, $compile) {\r\n\r\n $scope.system = { loading: true, messages: [] };\r\n\r\n $scope.fishermen = ProjectService.getFishermen();\r\n $scope.fishermen.$promise.then(function () {\r\n console.log(\"Fishermen loaded...\");\r\n //console.log(\"Fishermen loaded and is next...\");\r\n //console.dir($scope.fishermen);\r\n });\r\n\r\n $scope.Characteristics = null;\r\n\r\n $scope.WaypointIdField = \"\";\r\n\r\n initEdit(); // stop backspace while editing from sending us back to the browser's previous page.\r\n\r\n $scope.saveResult = { saving: false, error: null, success: null, saveMessage: \"Saving...\"};\r\n $scope.background_save = false;\r\n\r\n $scope.fields = { header: [], detail: [] };\r\n $scope.headerFieldErrors = [];\r\n $scope.hasDuplicateError = false;\r\n\r\n $scope.userId = $rootScope.Profile.Id;\r\n $scope.IsFileCell = false;\r\n\r\n $scope.PageErrorCount = 0;\r\n $scope.NextActivity = $scope.PreviousActivity = 0;\r\n\r\n $scope.dsConfig = null;\r\n $scope.EventTriggeredBy = \"\";\r\n $scope.NumberOfRows = 0;\r\n $scope.NumberOfCols = 0;\r\n\r\n //returns the number of errors on the page, headers + details\r\n //TODO this is probably expensive for big grids, maybe not...\r\n $scope.getPageErrorCount = function () {\r\n if (!$scope.dataAgGridOptions.hasOwnProperty('api'))\r\n return 0; //not loaded yet.\r\n\r\n var count = Object.keys($scope.headerFieldErrors).length; //start with number of header errors\r\n $scope.dataAgGridOptions.api.forEachNode(function (node) {\r\n if (node.data.rowHasError) {\r\n count++;\r\n }\r\n });\r\n\r\n return count;\r\n };\r\n\r\n $scope.pagemode = $location.path().match(/\\/(.*)\\//)[1]; //edit, dataentryform, dataview - our 3 options from our route... nothing else is possible.\r\n\r\n // Are we editing or not?\r\n if ($scope.pagemode == 'dataentryform') {\r\n $scope.dataset_activities = { Header: {}, Details: [] };\r\n\r\n //are we importing?\r\n if ($rootScope.hasOwnProperty('imported_rows')) {\r\n $scope.dataset_activities = { Header: $rootScope.imported_header, Details: $rootScope.imported_rows };\r\n //console.dir($scope.dataset_activities);\r\n }\r\n\r\n $scope.dataset = DatasetService.getDataset($routeParams.Id);\r\n $scope.dataset.$promise.then(function () {\r\n //$scope.row is the Header fields data row\r\n $scope.row = Object.assign({ 'Activity': { 'ActivityDate': moment().format(), 'ActivityQAStatus': { 'QAStatusId': $scope.dataset.DefaultActivityQAStatusId } } }, $scope.dataset_activities.Header);\r\n //console.dir($scope.row);\r\n $scope.afterDatasetLoadedEvent();\r\n });\r\n }\r\n else { //either edit or data view - both load a particular activity\r\n $scope.dataset_activities = DatasetService.getActivityData($routeParams.Id);\r\n $scope.dataset_activities.$promise.then(function () {\r\n $scope.dataset = $scope.dataset_activities.Dataset;\r\n $scope.dsConfig = JSON.parse($scope.dataset.Config);\r\n //console.log(\"$scope.dsConfig.DataEntryPage.ShowFields.contains('AccuracyCheck') = \" + $scope.dsConfig.DataEntryPage.ShowFields.contains('AccuracyCheck'));\r\n\r\n //$scope.row is the Header fields data row\r\n $scope.row = $scope.dataset_activities.Header;\r\n $scope.row.FishermanFullName = \"\";\r\n\r\n angular.forEach($scope.fishermen, function (afisherman) {\r\n if (afisherman.Id === $scope.row.FishermanId)\r\n $scope.row.FishermanFullName = afisherman.FullName;\r\n });\r\n\r\n if ($scope.row.FishermanFullName === 2019)\r\n console.log(\"$scope.row.FishermanFullName = \" + $scope.row.FishermanFullName);\r\n\r\n $scope.afterDatasetLoadedEvent();\r\n });\r\n\r\n //setup our next/previous\r\n if ($rootScope.activities) {\r\n $rootScope.activities.forEach(function (act_list, index) {\r\n if (act_list.Id == $routeParams.Id) {\r\n try {\r\n console.log(\"found the index: \" + index);\r\n console.dir(act_list);\r\n if ((index == 0) && ($rootScope.activities.length === 1)) // One and only one record so far.\r\n {\r\n $scope.NextActivity = $rootScope.activities[index].Id;\r\n $scope.PreviousActivity = $rootScope.activities[index].Id;\r\n }\r\n else if (index == 0) {\r\n $scope.NextActivity = $rootScope.activities[index + 1].Id;\r\n $scope.PreviousActivity = $rootScope.activities[index].Id;\r\n\r\n } else if (index == $rootScope.activities.length - 1) {\r\n $scope.NextActivity = $rootScope.activities[index].Id;\r\n $scope.PreviousActivity = $rootScope.activities[index - 1].Id;\r\n\r\n } else {\r\n $scope.NextActivity = $rootScope.activities[index + 1].Id;\r\n $scope.PreviousActivity = $rootScope.activities[index - 1].Id;\r\n }\r\n console.log(\"NextActivity = \" + $scope.NextActivity);\r\n console.log(\"PreviousActivity = \" + $scope.PreviousActivity);\r\n } catch (e) {\r\n console.error(\"prev/next index error\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n //ag-grid - details\r\n $scope.dataAgGridOptions = {\r\n suppressPropertyNamesCheck: true,\r\n animateRows: true,\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n //showToolPanel: false,\r\n columnDefs: null,\r\n rowData: [],\r\n //filterParams: { apply: true }, //enable option: doesn't do the filter unless you click apply\r\n dataChanged: false, //updated to true if ever any data is changed\r\n rowSelection: 'multiple',\r\n\r\n\r\n // not used\r\n // tabToNextCell: function (params) {\r\n // //console.dir(params);\r\n // var previousCell = params.previousCellPosition;\r\n // var nextCell = (params.nextCellPosition) ? params.nextCellPosition : params.previousCellPosition;\r\n //\r\n // var result = {\r\n // rowIndex: previousCell.rowIndex,\r\n // column: nextCell.column,\r\n // floating: previousCell.floating\r\n // };\r\n //\r\n // if(previousCell.column.colDef.ControlType == \"number\" || previousCell.column.colDef.ControlType == \"text\")\r\n // nextCell.column.tabbingIn = true;\r\n //\r\n // //$scope.dataAgGridOptions.api.redrawRows();\r\n // //console.log(\"--- tabbing -- \")\r\n //\r\n // return result;\r\n // },\r\n\r\n\r\n onCellFocused: function (params) {\r\n\r\n //console.log(\"Cell Focused!! >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\");\r\n\r\n //console.dir(params.column.colDef.ControlType);\r\n if (!params.column)\r\n return;\r\n\r\n params.column.tabbingIn = false;\r\n\r\n $scope.IsFileCell = (params.column.colDef.ControlType == 'file');\r\n $scope.onField = (params.column.colDef.cdmsField);\r\n\r\n $scope.$apply();\r\n\r\n //var cell = $scope.dataAgGridOptions.api.getFocusedCell();\r\n //if(cell.column.colId != \"RunYear\")\r\n // debugger\r\n },\r\n\r\n onSelectionChanged: function (params) {\r\n //console.log(\"selection changed fired! >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\");\r\n //console.dir(params);\r\n\r\n var rows = params.api.getSelectedRows();\r\n //if (Array.isArray(rows) && rows[0] != null)\r\n //{\r\n $scope.dataAgGridOptions.selectedItems.length = 0; //truncate, don't replace with [] -- otherwise it is a shadow copy\r\n rows.forEach(function (row) {\r\n $scope.dataAgGridOptions.selectedItems.push(row);\r\n });\r\n\r\n $scope.$apply(); //bump angular (won't work otherwise!)\r\n //}\r\n },\r\n //onFilterModified: function () {\r\n // scope.corrAgGridOptions.api.deselectAll();\r\n //},\r\n editedRowIds: [],\r\n deletedItems: [],\r\n selectedItems: [],\r\n //isFullWidthCell: function (rowNode) {\r\n // return rowNode.level === 1;\r\n //},\r\n\r\n /*\r\n onFirstDataRendered: function(params){\r\n GridService.autosizeColumns($scope.dataAgGridOptions);\r\n },\r\n */\r\n onGridReady: function (params) {\r\n //console.log(\"GRID READY fired. ------------------------------------------>>>\");\r\n $scope.system.loading = false;\r\n\r\n //$scope.$apply();\r\n //GridService.autosizeColumns($scope.dataAgGridOptions);\r\n //params.api.sizeColumnsToFit();\r\n //console.log(\"resize in ON GRID READY\")\r\n\r\n },\r\n\r\n defaultColDef: {\r\n editable: ($scope.pagemode!=='dataview'),\r\n sortable: true,\r\n resizable: true,\r\n },\r\n\r\n onCellDoubleClicked: function (event) {\r\n //console.dir(event);\r\n if (event.colDef.ControlType == \"file\")\r\n $scope.editCellFiles();\r\n\r\n },\r\n\r\n getRowHeight: function (params) {\r\n //console.log(\"get row height -------------------\");\r\n //set the rowheight of this row to be the largest of the file count in this row...\r\n if (!params.node.file_height) {\r\n var file_fields = getMatchingByField($scope.dataAgGridOptions.columnDefs, 'file','ControlType');\r\n let max_file_field = 1;\r\n file_fields.forEach(function (file_field) {\r\n var curr_file_count = getFilesArrayAsList(params.node.data[file_field.DbColumnName]).length;\r\n if (curr_file_count > max_file_field)\r\n max_file_field = curr_file_count;\r\n });\r\n params.node.file_height = max_file_field;\r\n //console.log(\" -- MAX number of files in cell file field \" + max_file_field);\r\n }\r\n var file_height = 25 * (params.node.file_height);\r\n return (file_height > 25) ? file_height : 25;\r\n },\r\n\r\n rowClassRules: {\r\n 'row-validation-error': function(params) { return params.node.data.rowHasError; }\r\n },\r\n //onCellEditingStarted: function (event) {\r\n //console.log('cellEditingStarted >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>');\r\n //},\r\n onCellEditingStopped: function (event) {\r\n //save the row we just edited\r\n //console.log(\"cell editing stopped >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> \"+event.colDef.DbColumnName);\r\n //console.dir(event);\r\n\r\n if ($rootScope.headerFields)\r\n $scope.headerFields = $rootScope.headerFields;\r\n\r\n if ($rootScope.waypoints)\r\n $scope.waypoints = $rootScope.waypoints;\r\n\r\n if (GridService.validateCell(event, $scope)) {\r\n // Issue: A Temp-C field updates a Temp-F field, or vice-versa.\r\n // This conversion/update/action is OK.\r\n // But then the changed Temp-F field updates the Temp-C field, or the opposite,\r\n // which triggered the whole sequence, in the first place.\r\n // In this situation, we DO NOT want the reverse update to take place.\r\n // We only want the initial C -> F, or the F -> C conversion to take place.\r\n $scope.EventTriggeredBy += event.colDef.DbColumnName + \"-\";\r\n\r\n // Length of 42 chosen, because it is a little bit longer than\r\n // WaterTemperatureF-WaterTemperature. When the string gets longer than\r\n // two tabs or clicks, we want to retain only the last two.\r\n if ($scope.EventTriggeredBy.length > 42)\r\n {\r\n var strTmp = $scope.EventTriggeredBy;\r\n var intHyphenLoc = strTmp.indexOf(\"-\");\r\n strTmp = strTmp.slice(intHyphenLoc + 1);\r\n\r\n $scope.EventTriggeredBy = strTmp;\r\n }\r\n\r\n // Set various click/tab possibilities to check for.\r\n // For example: WaterTemperatureF-WaterTemperature- means that\r\n // the user clicked or tabbed into WaterTemperature, right after\r\n // WaterTemperatureF. We don't want to double-trigger the temperature\r\n // conversions. If they do double-trigger, it can at a minimum make the \r\n // value werid, due to the fractional calculations (5 vs 4.99996), or\r\n // cause a repeated calculation, because the grid detects when the value\r\n // gets changed.\r\n //$scope.EventTriggeredBy = event.colDef.DbColumnName + \"-\";\r\n var textToCheckWtc = \"WaterTemperatureF-WaterTemperature-\";\r\n var textToCheckAtc = \"AirTemperatureF-AirTemperature-\";\r\n var textToCheckWtf = \"WaterTemperature-WaterTemperatureF-\";\r\n var textToCheckAtf = \"AirTemperature-AirTemperatureF-\";\r\n var textToCheckAtcf = \"AirTemperature-WaterTemperatureF-\";\r\n var textToCheckWtfAtf = \"WaterTemperatureF-AirTemperatureF-\";\r\n var textToCheckAtfWtf = \"AirTemperatureF-WaterTemperatureF-\";\r\n var intTextToCheckWtLoc = $scope.EventTriggeredBy.indexOf(textToCheckWtc);\r\n var intTextToCheckAtLoc = $scope.EventTriggeredBy.indexOf(textToCheckAtc);\r\n var intTextToCheckWtfLoc = $scope.EventTriggeredBy.indexOf(textToCheckWtf);\r\n var intTextToCheckAtfLoc = $scope.EventTriggeredBy.indexOf(textToCheckAtf);\r\n var intTextToCheckAtcfLoc = $scope.EventTriggeredBy.indexOf(textToCheckAtcf);\r\n var intTextToCheckWtfAtfLoc = $scope.EventTriggeredBy.indexOf(textToCheckWtfAtf);\r\n var intTextToCheckAtfWtFLoc = $scope.EventTriggeredBy.indexOf(textToCheckAtfWtf);\r\n\r\n //if ($scope.EventTriggeredBy === \"WaterTemperature-WaterTemperatureF-\")\r\n if ((intTextToCheckWtLoc > -1) || (intTextToCheckAtLoc > -1) ||\r\n (intTextToCheckWtfLoc > -1) || (intTextToCheckAtfLoc > -1) ||\r\n (intTextToCheckAtcfLoc > -1) || (intTextToCheckAtcfLoc > -1) ||\r\n (intTextToCheckWtfAtfLoc > -1) || (intTextToCheckAtfWtFLoc > -1)\r\n )\r\n {\r\n //$scope.EventTriggeredBy = \"\";\r\n return;\r\n }\r\n else\r\n {\r\n GridService.fireRule(\"OnChange\", event, $scope); //only fires when valid change is made\r\n }\r\n }\r\n\r\n $scope.PageErrorCount = $scope.getPageErrorCount();\r\n\r\n GridService.refreshRow(event);\r\n //console.log(\"--- on cell editing stopped --\")\r\n\r\n $scope.dataAgGridOptions.dataChanged = true;\r\n\r\n if (event.data.Id && (!$scope.dataAgGridOptions.editedRowIds.containsInt(event.data.Id))){\r\n $scope.dataAgGridOptions.editedRowIds.push(event.data.Id);\r\n };\r\n $scope.$apply();\r\n\r\n //special case for water temp: fire dupecheck if readingdatetime changed\r\n if($scope.dataset.Datastore.TablePrefix == \"WaterTemp\" && event.colDef.DbColumnName == \"ReadingDateTime\")\r\n $scope.checkForDuplicates();\r\n\r\n //bah - another special case for water quality: fire dupecheck if sampledate changed\r\n if(($scope.dataset.Datastore.TablePrefix == \"WaterQuality\" || $scope.dataset.Datastore.TablePrefix == \"MetStation\")\r\n && event.colDef.DbColumnName == \"SampleDate\"){\r\n $scope.checkForDuplicates();\r\n }\r\n\r\n },\r\n };\r\n\r\n $scope.bubbleErrors = function () {\r\n GridService.bubbleErrors($scope.dataAgGridOptions);\r\n console.log(\"bubbling!\");\r\n };\r\n\r\n $scope.onHeaderEditingStopped = function (field) { //fired onChange for header fields (common/templates/form-fields)\r\n //build event to send for validation\r\n //console.log(\"onHeaderEditingStopped: \" + field.DbColumnName);\r\n\r\n if(field.DbColumnName == 'LocationId'){\r\n console.log(\"checking location \" + $scope.row.Activity.LocationId);\r\n if($scope.row.Activity.Location && isNaN($scope.row.Activity.LocationId)){\r\n console.log(\"setting back to value from NaN to \" + $scope.row.Activity.Location.Id)\r\n $scope.row.Activity.LocationId = $scope.row.Activity.Location.Id; //reset it back to the correct value if it was NaN'd\r\n }\r\n }\r\n\r\n //timezone - TODO: until we just use the id, we need to set the object (since the ID gets changed but not the whole object...)\r\n if (field.DbColumnName == 'Timezone') {\r\n if (!$scope.row.Activity.Timezone)\r\n {\r\n $scope.TimezoneMissing = true;\r\n }\r\n else\r\n {\r\n $scope.TimezoneMissing = false;\r\n $scope.row.Activity.Timezone = getById(SystemTimezones, $scope.row.Activity.Timezone.Id);\r\n }\r\n }\r\n\r\n var event = {\r\n colDef: field,\r\n node: { data: $scope.row },\r\n value: $scope.row[field.DbColumnName],\r\n type: 'onHeaderEditingStopped'\r\n };\r\n\r\n if (GridService.validateCell(event)) {\r\n //console.log(\"ran validation and is valid\")\r\n GridService.fireRule(\"OnChange\", event); //only fires when valid change is made\r\n }\r\n else\r\n {\r\n //console.log(\"ran validation and is INVALID\")\r\n //console.dir($scope.row)\r\n }\r\n\r\n //update our collection of header errors if any were returned\r\n $scope.headerFieldErrors = [];\r\n if ($scope.row.rowHasError) {\r\n $scope.row.validationErrors.forEach(function (error) {\r\n if (Array.isArray($scope.headerFieldErrors[error.field.DbColumnName])) {\r\n $scope.headerFieldErrors[error.field.DbColumnName].push(error.message);\r\n } else {\r\n $scope.headerFieldErrors[error.field.DbColumnName] = [error.message];\r\n }\r\n });\r\n }\r\n\r\n //update the error count -- determine if this bogs down on big datasets TODO\r\n $scope.PageErrorCount = $scope.getPageErrorCount();\r\n\r\n $scope.row.dataChanged = true;\r\n\r\n //if one of the duplicatecheck fields change then check for duplicates.\r\n if($scope.dataset.Config.DuplicateCheckFields && $scope.dataset.Config.DuplicateCheckFields.contains(field.DbColumnName))\r\n $scope.checkForDuplicates();\r\n\r\n //console.dir($scope.row);\r\n };\r\n\r\n //add a row\r\n $scope.addNewRow = function () {\r\n var new_row = GridService.getNewRow($scope.dataAgColumnDefs.DetailFields);\r\n new_row.QAStatusId = $scope.dataset.DefaultRowQAStatusId;\r\n\r\n //set defaults for detail fields\r\n $scope.dataAgColumnDefs.DetailFields.forEach(function (detail) {\r\n if (detail.DefaultValue) {\r\n new_row[detail.DbColumnName] = detail.DefaultValue;\r\n console.log(\"Setting default value for \" + detail.DbColumnName + \" to \" + detail.DefaultValue);\r\n }\r\n });\r\n\r\n var result = $scope.dataAgGridOptions.api.updateRowData({add: [new_row]});\r\n $scope.dataAgGridOptions.dataChanged = true;\r\n };\r\n\r\n //remove a row\r\n $scope.removeRow = function () {\r\n var rows_to_delete = $scope.dataAgGridOptions.api.getSelectedRows();\r\n\r\n //add selected rows to deleted rows (might already be some in there, just add ours, too)\r\n rows_to_delete.forEach(function (item) {\r\n $scope.dataAgGridOptions.deletedItems.push(item);\r\n });\r\n\r\n //note the currently deleted row(s) in case they want to undo\r\n $scope.deletedRows = rows_to_delete;\r\n\r\n //do the remove from the grid.\r\n $scope.dataAgGridOptions.api.updateRowData({ remove: rows_to_delete });\r\n\r\n $scope.dataAgGridOptions.dataChanged = true;\r\n };\r\n\r\n //undo remove row\r\n $scope.undoRemoveRow = function () {\r\n $scope.dataAgGridOptions.api.updateRowData({ add: $scope.deletedRows });\r\n\r\n //remove these deleted rows from deleted items since we're undeleting\r\n var new_deleted = [];\r\n $scope.dataAgGridOptions.deletedItems.forEach(function (deleted) {\r\n var is_being_undeleted = false\r\n $scope.deletedRows.forEach(function (undelete) {\r\n if (deleted.hasOwnProperty('Id') && undelete.hasOwnProperty('Id') && deleted.Id == undelete.Id)\r\n is_being_undeleted = true;\r\n });\r\n if(!is_being_undeleted)\r\n new_deleted.push(deleted)\r\n });\r\n $scope.dataAgGridOptions.deletedItems = new_deleted;\r\n\r\n //clear our deleted rows buffer\r\n $scope.deletedRows = [];\r\n\r\n };\r\n\r\n\r\n //call to fire up the grid after the $scope.dataset is ready\r\n $scope.activateGrid = function () {\r\n\r\n //setup grid and coldefs and then go!\r\n $timeout(function () {\r\n\r\n $scope.dataAgColumnDefs = GridService.getAgColumnDefs($scope.dataset);\r\n $scope.dataAgGridOptions.columnDefs = $scope.dataAgColumnDefs.DetailFields;\r\n $scope.NumberOfCols = $scope.dataAgGridOptions.columnDefs.length;\r\n $scope.fields = { header: $scope.dataAgColumnDefs.HeaderFields, detail: $scope.dataAgColumnDefs.DetailFields };\r\n\r\n //spin through and set any sytem field detail possible values ----------------- //////TODO move the config.js fields into a systems dataset, then can use the Datasource technique to load these.\r\n angular.forEach($scope.fields.detail, function (fieldDef) {\r\n if (fieldDef.field == \"QAStatusId\") { //RowQAStatusId\r\n fieldDef.setPossibleValues(makeObjects($scope.dataset.RowQAStatuses, 'Id', 'Name'));\r\n }\r\n });\r\n\r\n //multiselect header fields - convert from json\r\n var HeaderMultiselectFields = getAllMatchingFromArray($scope.dataAgColumnDefs.HeaderFields, 'multiselect', 'ControlType');\r\n\r\n HeaderMultiselectFields.forEach(function (multiselect_field) {\r\n if ($scope.row[multiselect_field.DbColumnName]) {\r\n $scope.row[multiselect_field.DbColumnName] = getParsedMetadataValues($scope.row[multiselect_field.DbColumnName]);\r\n if (!Array.isArray($scope.row[multiselect_field.DbColumnName])) { //backwards compatible - some multiselects just have the value saved... turn it into an array\r\n $scope.row[multiselect_field.DbColumnName] = [$scope.row[multiselect_field.DbColumnName]];\r\n }\r\n }\r\n console.dir($scope.row[multiselect_field.DbColumnName]);\r\n });\r\n\r\n //if we are on data entry page (and not importing), set the header values to any defaults.\r\n if ($scope.pagemode == 'dataentryform' && !$rootScope.hasOwnProperty('imported_rows')) {\r\n console.log(\"applying defaults to header fields\");\r\n $scope.dataAgColumnDefs.HeaderFields.forEach(function (header) {\r\n //console.dir(header);\r\n if (header.DefaultValue) {\r\n $scope.row[header.DbColumnName] = header.DefaultValue;\r\n console.log(\"Setting default value for \" + header.DbColumnName + \" to \" + $scope.row[header.DbColumnName]);\r\n }\r\n });\r\n }\r\n\r\n var ag_grid_div = document.querySelector('#data-edit-grid') as HTMLElement; //get the container id...\r\n $scope.ag_grid = new Grid(ag_grid_div, $scope.dataAgGridOptions); //bind the grid to it.\r\n $scope.dataAgGridOptions.api.showLoadingOverlay(); //show loading...\r\n\r\n $scope.NumberOfRows = $scope.dataset_activities.Details.length;\r\n\r\n //set the detail values into the grid\r\n $scope.dataAgGridOptions.api.setRowData($scope.dataset_activities.Details);\r\n\r\n //console.dir($scope.dataAgColumnDefs);\r\n\r\n //convert timezone to object if it exists\r\n if ($scope.row.Activity && $scope.row.Activity.Timezone) {\r\n $scope.row.Activity.Timezone = angular.fromJson($scope.row.Activity.Timezone);\r\n //workaround - sometimes the stored timezone hasn't always included an Id for some reason...\r\n if ($scope.row.Activity.Timezone && !$scope.row.Activity.Timezone.hasOwnProperty(\"Id\")) {\r\n $scope.row.Activity.Timezone = getByField(SystemTimezones, $scope.row.Activity.Timezone.Name, \"Name\");\r\n }\r\n }\r\n $scope.project.$promise.then(function () {\r\n try {\r\n $scope.project.Config = ($scope.project.Config) ? angular.fromJson($scope.project.Config) : {};\r\n } catch (e) {\r\n console.error(\"config could not be parsed for project\" + $scope.project.Config);\r\n console.dir(e);\r\n }\r\n\r\n //set our location if only one project location exists. - this async request was started as soon as the project was loaded, but we need the headerfields...\r\n $scope.project.Locations.$promise.then(function(){\r\n var HeaderLocation = getAllMatchingFromArray($scope.dataAgColumnDefs.HeaderFields, 'LocationId', 'DbColumnName');\r\n if (HeaderLocation && $scope.project.Locations.length == 1 && !$scope.row.Activity.LocationId) {\r\n $scope.row.Activity.LocationId = $scope.project.Locations[0].Id;\r\n console.log(\" --> setting Activity.LocationId because there is only one defined.\");\r\n } else {\r\n if ( (!HeaderLocation || HeaderLocation.length === 0) || ( HeaderLocation.length === 1 && HeaderLocation[0].ControlType === \"hidden\") ){\r\n if($scope.project.Locations.length > 1){\r\n alert(\"Configuration error: More than one location is defined and location field is configured to be hidden. You will not be able to save a record in this dataset.\");\r\n }\r\n }\r\n }\r\n\r\n //bump the select2 to set the current value\r\n if($scope.row.Activity.LocationId){\r\n //@ts-ignore\r\n $(function () { $(\"#location-select\").select2(); });\r\n }\r\n })\r\n\r\n\r\n if (($scope.project.Config) && ($scope.project.Config.Lookups))\r\n {\r\n $scope.project.Config.Lookups.forEach(function (item){\r\n if (item.Label === \"Characteristics\")\r\n {\r\n $scope.Characteristics = CommonService.getLookupItems(item);\r\n $scope.Characteristics.$promise.then(function () {\r\n $scope.dataset_activities.Details.forEach(function(detail){\r\n // If we are on WaterQuality, the Characteristics options were originally\r\n // stored in dbo.Fields.PossibleValues as Text. Later (because there are\r\n // so many), we moved them out to their own table. Now they come in with\r\n // Id, so the Id must be converted to the Name, because we don't want to\r\n // convert Characteristic from text to int for the millions of records\r\n // in WaterQuality_Detail.\r\n var blnFoundIt = false;\r\n $scope.Characteristics.forEach(function(aCharacteristic){\r\n if ((!blnFoundIt) && (aCharacteristic.CharacteristicName === detail.CharacteristicName))\r\n {\r\n detail.CharacteristicName = aCharacteristic.Id;\r\n blnFoundIt = true;\r\n }\r\n });\r\n });\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n\r\n GridService.validateGrid($scope.dataAgGridOptions);\r\n\r\n if ($rootScope.hasOwnProperty('imported_rows')) {\r\n //when importing fire any onchange rules (like watertemp C to F)\r\n GridService.fireAllOnChange($scope.dataAgGridOptions);\r\n }\r\n\r\n $scope.dataAgGridOptions.api.redrawRows();\r\n\r\n $scope.PageErrorCount = $scope.getPageErrorCount();\r\n\r\n if ($rootScope.imported_rows)\r\n $scope.bubbleErrors();\r\n\r\n $scope.dataAgGridOptions.api._headerrow = $scope.row;\r\n\r\n //make sure the locationid dropdown selects the selected location if it is set\r\n //console.log(\" -- row --\")\r\n //console.dir($scope.row);\r\n //if($scope.row.Activity.LocationId){\r\n // $(function () { $(\"#location-select\").select2(); });\r\n //}\r\n\r\n ChartService.buildChart($scope, $scope.dataset_activities.Details, $scope.dataset.Datastore.TablePrefix);\r\n\r\n }, 0);\r\n\r\n\r\n\r\n\r\n };\r\n\r\n //called after the dataset is loaded\r\n $scope.afterDatasetLoadedEvent = function () {\r\n\r\n $scope.project = ProjectService.getProject($scope.dataset.ProjectId);\r\n\r\n //get this started as soon as we have the project.\r\n $scope.project.$promise.then(function () {\r\n //in the new location design, we have to fetch the locations separately - these are all the valid locations for a project\r\n $scope.project.Locations = ProjectService.getDatasetLocations($scope.project.Id, $scope.dataset.Id);\r\n });\r\n\r\n DatasetService.configureDataset($scope.dataset); //bump to load config since we are pulling it directly out of the activities\r\n\r\n if ((typeof $scope.row.Activity.AccuracyCheck !== 'undefined' && $scope.row.Activity.AccuracyCheck !== null) &&\r\n (typeof $scope.row.Activity.PostAccuracyCheck !== 'undefined' && $scope.row.Activity.PostAccuracyCheck !== null) ) {\r\n // We don't need a line return on the form.\r\n $scope.row.AccuracyCheckBreak = false;\r\n $scope.row.Activity.AccuracyCheckText = $scope.row.Activity.AccuracyCheck.Bath1Grade + \"-\" + $scope.row.Activity.AccuracyCheck.Bath2Grade + \" on \" + moment($scope.row.Activity.AccuracyCheck.CheckDate).format('MMM DD YYYY');\r\n $scope.row.Activity.PostAccuracyCheckText = $scope.row.Activity.PostAccuracyCheck.Bath1Grade + \"-\" + $scope.row.Activity.PostAccuracyCheck.Bath2Grade + \" on \" + moment($scope.row.Activity.PostAccuracyCheck.CheckDate).format('MMM DD YYYY');\r\n }\r\n else {\r\n // We need line return on the form.\r\n $scope.row.AccuracyCheckBreak = true;\r\n $scope.row.AccuracyCheckText = null;\r\n $scope.row.Activity.PostAccuracyCheckText = null;\r\n }\r\n\r\n //console.log(\">>> before activate grid\")\r\n $scope.activateGrid();\r\n //console.log(\">>> after activate grid\")\r\n\r\n //load the files related to this dataset\r\n $scope.dataset.Files = DatasetService.getDatasetFiles($scope.dataset.Id);\r\n\r\n //once the dataset files load, setup our file handler\r\n $scope.dataset.Files.$promise.then(function () {\r\n //mixin the properties and functions to enable the modal file chooser for this controller...\r\n //console.log(\"---------------- setting up dataset file chooser ----------------\");\r\n //modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.dataset.Files);\r\n $scope.typeOfFilesToCheck = \"dataset\";\r\n modalFiles_setupControllerForFileChooserModal($scope, $uibModal, $scope.typeOfFilesToCheck); \r\n });\r\n\r\n //if the activity qa status is already set in the header (editing), copy it in to this row's activityqastatus\r\n if ($scope.dataset_activities.Header.Activity && $scope.dataset_activities.Header.Activity.ActivityQAStatus) {\r\n //console.warn(\"Header activity copying in activityqastatus\");\r\n $scope.row.ActivityQAStatus = {\r\n QAStatusId: \"\" + $scope.dataset_activities.Header.Activity.ActivityQAStatus.QAStatusId,\r\n Comments: $scope.dataset_activities.Header.Activity.ActivityQAStatus.Comments,\r\n }\r\n }\r\n //otherwise (new record), set it to the default.\r\n else {\r\n console.warn(\"The ActivityQAStatus for this activity is not set, setting to default.\");\r\n $scope.row.ActivityQAStatus = {\r\n QAStatusId: \"\" + $scope.dataset.DefaultRowQAStatusId,\r\n Comments: \"\"\r\n }\r\n }\r\n\r\n //set the disabled fields from the dataset config, if present\r\n if ($scope.dataset.Config.DataEntryPage && $scope.dataset.Config.DataEntryPage.DisabledFields\r\n && Array.isArray($scope.dataset.Config.DataEntryPage.DisabledFields))\r\n {\r\n $scope.DisabledFields = {};\r\n $scope.dataset.Config.DataEntryPage.DisabledFields.forEach(function(item){\r\n $scope.DisabledFields[item] = {disabled: true};\r\n });\r\n }\r\n\r\n };\r\n\r\n //this is a workaround for angularjs' either too loose matching or too strict...\r\n $scope.locequals = function (actual, expected) { return actual == expected; };\r\n\r\n $scope.setSelectedBulkQAStatus = function (rowQAId) {\r\n angular.forEach($scope.dataAgGridOptions.selectedItems, function (item, key) {\r\n //console.log(\"bulk changing: \");\r\n //console.dir(item);\r\n item.QAStatusId = rowQAId;\r\n GridService.refreshGrid($scope.dataAgGridOptions);\r\n //mark the row as updated so it will get saved.\r\n if (item.Id && $scope.dataAgGridOptions.editedRowIds.indexOf(item.Id) == -1) {\r\n $scope.dataAgGridOptions.editedRowIds.push(item.Id);\r\n }\r\n });\r\n\r\n $scope.dataAgGridOptions.dataChanged = true;\r\n\r\n $scope.dataAgGridOptions.api.deselectAll();\r\n };\r\n\r\n $scope.editCellFiles = function () {\r\n console.log(\"edit cell files:\");\r\n var the_cell = $scope.dataAgGridOptions.api.getFocusedCell();\r\n var the_row = $scope.dataAgGridOptions.api.getDisplayedRowAtIndex(the_cell.rowIndex)\r\n //console.dir(the_cell);\r\n //console.dir(the_row);\r\n $scope.openFileModal(the_row.data, the_cell.column.colDef.DbColumnName, $scope.afterEditCellFiles);\r\n }\r\n\r\n $scope.afterEditCellFiles = function () {\r\n console.log(\"after edit cell files!\");\r\n var the_cell = $scope.dataAgGridOptions.api.getFocusedCell();\r\n var the_row = $scope.dataAgGridOptions.api.getDisplayedRowAtIndex(the_cell.rowIndex)\r\n // console.dir(the_cell);\r\n console.dir(the_row);\r\n delete the_row.file_height;\r\n\r\n $scope.dataAgGridOptions.api.redrawRows();\r\n $scope.dataAgGridOptions.api.resetRowHeights(); //redraw so that the files in the cell are displayed properly.\r\n\r\n //mark the row as changed and edited.\r\n $scope.row.dataChanged = true;\r\n\r\n if (the_row.data.Id && $scope.dataAgGridOptions.editedRowIds.indexOf(the_row.data.Id) == -1) {\r\n $scope.dataAgGridOptions.editedRowIds.push(the_row.data.Id);\r\n console.log(\"edited row: \" + the_row.data.Id);\r\n }\r\n\r\n };\r\n\r\n $scope.afterFileModal = function () {\r\n $scope.row.dataChanged = true;\r\n }\r\n\r\n $scope.openBulkQAChange = function () {\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-rowqaupdate.html',\r\n controller: 'ModalBulkRowQAChangeCtrl',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n\r\n };\r\n\r\n\t\t$scope.openWaypointFileModal = function(row, field)\r\n {\r\n $scope.file_row = row;\r\n $scope.file_field = field;\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/file/templates/modal-waypoint-file.html',\r\n controller: 'WaypointFileModalCtrl',\r\n scope: $scope, //scope to make a child of\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n $scope.openEdit = function () {\r\n $location.path(\"/edit/\" + $scope.dataset_activities.Header.Activity.Id);\r\n }\r\n\r\n\r\n $scope.createInstrument = function () {\r\n //$scope.viewInstrument = null;\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-create-instrument.html',\r\n controller: 'ModalCreateInstrumentCtrl',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_instrument) {\r\n //add saved_instrument to our list.\r\n saved_instrument.AccuracyChecks = [];\r\n $scope.project.Instruments.push(saved_instrument);\r\n $scope.row.Activity.InstrumentId = saved_instrument.Id;\r\n $scope.selectInstrument();\r\n $scope.row.dataChanged = true; //we have changed!\r\n //aha! this is a trick to get the instruments select to rebuild after we change it programatically\r\n //@ts-ignore\r\n $(function () { $(\"#instruments-select\").select2(); });\r\n\r\n });\r\n };\r\n\r\n $scope.openAccuracyCheckModal = function () {\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-new-accuracycheck.html',\r\n controller: 'ModalQuickAddAccuracyCheckCtrl',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_AC) {\r\n //add saved_AC to our list.\r\n $scope.project.Instruments.forEach(function (inst) {\r\n if (inst.Id == $scope.row.Activity.InstrumentId) {\r\n console.log(\"found that instrument!\"); console.dir(inst);\r\n inst.AccuracyChecks.push(saved_AC);\r\n $scope.row.Activity.Instrument = inst;\r\n }\r\n });\r\n $scope.selectInstrument();\r\n $scope.row.dataChanged = true; //we have changed a header!\r\n\r\n });\r\n };\r\n\r\n $scope.changeQa = function () {\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-view/templates/changeqa-modal.html',\r\n controller: 'ModalQaUpdateCtrl',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n $scope.getDataGrade = function (check) { return getDataGrade(check) }; //alias\r\n\r\n //when user selects an instrument, the directive model binding sets the row.Activity.InstrumentId.\r\n // we need to set the row.Activity.Instrument to the matching one from project.Instruments\r\n // and then select the last AccuracyCheck and set it in row.Activity.AccuracyCheckId\r\n $scope.selectInstrument = function (field) {\r\n console.log(\"selectInstrument. InstrumentId is \" + $scope.row.Activity.InstrumentId);\r\n if (isNaN($scope.row.Activity.InstrumentId)) {\r\n\r\n // If $scope.row.Activity.Instrument.Id exists, we will set the nan back to a real id.\r\n if (($scope.row.Activity.Instrument) && ($scope.row.Activity.Instrument.Id))\r\n {\r\n console.log(\"setting back to value from NaN to \" + $scope.row.Activity.Instrument.Id)\r\n $scope.row.Activity.InstrumentId = $scope.row.Activity.Instrument.Id; //reset it back to the correct value if it was NaN'd\r\n }\r\n // Otherwise, we will backout any additions.\r\n else\r\n {\r\n //delete $scope.row.Activity.AccuracyCheck; delete $scope.row.Activity.AccuracyCheckId; delete $scope.row.Activity.PostAccuracyCheck; delete $scope.row.Activity.PostAccuracyCheck.Id;\r\n if ($scope.row.Activity.AccuracyCheck)\r\n delete $scope.row.Activity.AccuracyCheck;\r\n\r\n if ($scope.row.Activity.AccuracyCheckId)\r\n delete $scope.row.Activity.AccuracyCheckId;\r\n\r\n if ($scope.row.Activity.PostAccuracyCheck)\r\n delete $scope.row.Activity.PostAccuracyCheck;\r\n }\r\n\r\n return;\r\n }\r\n\r\n $scope.project.Instruments.forEach(function (inst) {\r\n if (inst.Id == $scope.row.Activity.InstrumentId) {\r\n console.log(\"found that instrument!\"); console.dir(inst);\r\n $scope.row.Activity.Instrument = inst;\r\n }\r\n });\r\n\r\n //get latest accuracy check\r\n $scope.row.Activity.AccuracyCheck = $scope.row.Activity.Instrument.AccuracyChecks[$scope.row.Activity.Instrument.AccuracyChecks.length - 1];\r\n $scope.row.DataGradeText = getDataGrade($scope.row.Activity.AccuracyCheck);\r\n\r\n if ($scope.row.Activity.AccuracyCheck)\r\n $scope.row.Activity.AccuracyCheckId = $scope.row.Activity.AccuracyCheck.Id;\r\n\r\n if(field)\r\n $scope.onHeaderEditingStopped(field);\r\n\r\n };\r\n\r\n $scope.cancel = function () {\r\n if ($scope.dataAgGridOptions.dataChanged) {\r\n if (!confirm(\"Looks like you've made changes. Are you sure you want to leave this page?\"))\r\n return;\r\n }\r\n //console.dir($scope.dataset);\r\n //console.log(\"#!/\" + $scope.dataset.activitiesRoute + \"/\" + $scope.dataset.Id);\r\n\r\n $location.path(\"/\" + $scope.dataset.activitiesRoute + \"/\" + $scope.dataset.Id);\r\n };\r\n\r\n\r\n //click \"save\" on dataset edit form\r\n $scope.saveData = function () {\r\n\r\n if (!$scope.dataAgGridOptions.dataChanged && !$scope.row.dataChanged) {\r\n if (confirm(\"Nothing to save. Return to Activities?\")) {\r\n $location.path(\"/\" + $scope.dataset.activitiesRoute + \"/\" + $scope.dataset.Id);\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n\r\n var HeaderLocation = getAllMatchingFromArray($scope.dataAgColumnDefs.HeaderFields, 'LocationId', 'DbColumnName');\r\n\r\n console.log(\"typeof $scope.row.Activity.LocationId = \" + typeof $scope.row.Activity.LocationId);\r\n //testing to see if the LocationId field doesn't exist or exists and it set to hidden\r\n if ( (!HeaderLocation || HeaderLocation.length === 0) || ( HeaderLocation.length === 1 && HeaderLocation[0].ControlType === \"hidden\") ){\r\n\r\n console.log(\"Location is removed or hidden - set it to the assigned single location\");\r\n //console.dir(HeaderLocation);\r\n //console.dir($scope.project.Locations);\r\n\r\n if($scope.project.Locations.length == 1) //we have only one location\r\n $scope.row.Activity.LocationId = $scope.project.Locations[0].Id;\r\n else{\r\n alert(\"Configuration error: A dataset with a hidden location must have one and only one location set in order to save.\")\r\n return;\r\n }\r\n\r\n }\r\n\r\n //final test to make sure we have a LocationId - required to save\r\n // The following line does not work. When the location is omitted, $scope.row.Activity.LocationId shows as NaN.\r\n //if (!$scope.row.Activity.hasOwnProperty(\"LocationId\"))\r\n // The following line DOES work.\r\n if ((typeof $scope.row.Activity.LocationId === \"undefined\") || (isNaN(parseInt($scope.row.Activity.LocationId))))\r\n {\r\n alert(\"Location is required. Please choose a location and try again.\");\r\n console.dir(HeaderLocation);\r\n console.dir($scope.row);\r\n return;\r\n }\r\n\r\n //fire validation on all header fields\r\n for (let headerField of $scope.dataAgColumnDefs.HeaderFields){\r\n $scope.onHeaderEditingStopped(headerField);\r\n }\r\n\r\n // We know by now, if the Timezone is missing. If so, abort.\r\n if ($scope.TimezoneMissing)\r\n {\r\n alert(\"Timezone cannot be blank!\");\r\n return;\r\n }\r\n\r\n //if ($scope.PageErrorCount > 0) {\r\n //if (($scope.dataset.Config) && ($scope.dataset.Config.AllowSaveWithErrors))\r\n //{\r\n // //if ($scope.PageErrorCount > 0) {\r\n // if (($scope.dataset.Config.AllowSaveWithErrors === false) && ($scope.PageErrorCount > 0)) {\r\n // alert(\"There are errors on the page. Please fix them before saving.\");\r\n // console.dir($scope.headerFieldErrors);\r\n // return;\r\n // }\r\n //}\r\n\r\n if ($scope.PageErrorCount > 0)\r\n {\r\n if (($scope.dataset.Config) && ($scope.dataset.Config.AllowSaveWithErrors))\r\n {\r\n if ($scope.dataset.Config.AllowSaveWithErrors === false)\r\n {\r\n alert(\"There are errors on the page. Please fix them before saving.\");\r\n console.dir($scope.headerFieldErrors);\r\n return;\r\n }\r\n else\r\n {\r\n // We have a dataset.Config, AND AllowSaveWithErrors, AND it is true...\r\n // Continue with the save, even with the errors.\r\n }\r\n }\r\n else\r\n {\r\n // We have a dataset.Config, but no AllowSaveWithErrors,\r\n // So we don't save with the errors.\r\n alert(\"There are errors on the page. Please fix them before saving.\");\r\n console.dir($scope.headerFieldErrors);\r\n return;\r\n }\r\n }\r\n\r\n // Several items on the page key off of $scope.saveResult.saving.\r\n // If $scope.saveResult.saving = true, it shows various items, and disables some things.\r\n // $scope.background_save gets set to true by $scope.addSection (dataset Creel Survey)\r\n // The idea is, when adding a new section, we want to stay on the same page, with some items set, \r\n // so that we don't have to reenter things. After we save the record, we need to return to\r\n // $scope.addSection to reset then applicable items.\r\n // So, if we ARE NOT adding a new section, set $scope.saveResult.saving to true.\r\n // Otherwise, we must leave it alone, with the save action happing in the background.\r\n if(!$scope.background_save)\r\n $scope.saveResult.saving = true;\r\n\r\n // Used in the modal-files.ts\r\n $scope.loading = true;\r\n\r\n console.log(\" -- save -- \");\r\n\r\n // The flow...\r\n // Open modal-save-status.html\r\n // modal-save-status.ts calls $scope.handleFilesToUploadRemove\r\n // $scope.handleFilesToUploadRemove does work and then calls dataset-edit-form.ts, $scope.modalFile_saveParentItem\r\n // dataset-edit-form.ts, $scope.modalFile_saveParentItem sets $scope.showFish to false in modal-save.status.ts\r\n // The user clicks Close on modal-save-status.html\r\n // - If the user was on dataset Creel Harvest, the page remains where it is\r\n // - If the user was on some other dataset, the page then navigations to the Dataset Activities page.\r\n\r\n $scope.CallingPage = \"DatasetEditForm\";\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/datasets/components/dataset-editor/templates/modal-save-status.html',\r\n controller: 'ModalSaveStatusCtrl',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n\r\n // -- we dynamically duplicate check, so don't check AGAIN --\r\n // var dupe_check = $scope.checkForDuplicates();\r\n // if (dupe_check) {\r\n // dupe_check.$promise.then(function () {\r\n // if (!$scope.hasDuplicateError)\r\n // $scope.modalFile_saveParentItem(); //saverow - this is just for temporary TODO......\r\n // else\r\n // console.log(\"Aborting saving because we have a duplicate error\");\r\n // });\r\n // } else {\r\n // $scope.modalFile_saveParentItem(); //saverow - this is just for temporary TODO......\r\n // }\r\n //\r\n\r\n //console.dir($scope.row);\r\n\r\n //************************************************/\r\n // Move this stuff below to modal-save-status.ts\r\n //handle saving the files.\r\n// var data = {\r\n// ProjectId: $scope.project.Id,\r\n// DatasetId: $scope.dataset.Id,\r\n// };\r\n\r\n// var target = '/api/v1/file/uploaddatasetfile';\r\n\r\n// \t\t\t//console.log(\"$scope.row is next...\");\r\n// //\t\t\tconsole.dir($scope.row);\r\n// var saveRow = $scope.row;\r\n\r\n// $scope.handleFilesToUploadRemove(saveRow, data, target, Upload, $rootScope, $scope); //when done (handles failed files, etc., sets in scope objects) then calls modalFile_saveParentItem below.\r\n //*/\r\n };\r\n\r\n //** special buttons for creel data entry **\r\n $scope.addNewInterview = function () {\r\n $scope.addNewRow();\r\n };\r\n\r\n //this just duplicates the current row\r\n $scope.addAnotherFish = function () {\r\n var the_cell = $scope.dataAgGridOptions.api.getFocusedCell();\r\n\r\n if (!the_cell) {\r\n alert(\"Please select an Interview row that you want to copy\");\r\n return;\r\n }\r\n\r\n var the_row = $scope.dataAgGridOptions.api.getDisplayedRowAtIndex(the_cell.rowIndex);\r\n var result = $scope.dataAgGridOptions.api.updateRowData({ add: [the_row.data] });\r\n $scope.dataAgGridOptions.dataChanged = true;\r\n //console.dir(the_row);\r\n };\r\n\r\n //open the add fisherman modal\r\n $scope.addFisherman = function () {\r\n $scope.viewFisherman = null;\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-create-fisherman.html',\r\n controller: 'ModalCreateFishermanCtrl',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n //callback after adding a fisherman -- push it into the dropdown list.\r\n $scope.postSaveFishermanUpdateGrid = function (new_fisherman) {\r\n var col = $scope.dataAgGridOptions.columnApi.getColumn('FishermanId');\r\n col.colDef.PossibleValues[new_fisherman.Id] = new_fisherman.FullName;\r\n col.colDef.setPossibleValues(col.colDef.PossibleValues);\r\n };\r\n\r\n //save this record and reset a few fields.\r\n $scope.addSection = function () {\r\n\r\n $scope.background_save = true;\r\n\r\n //console.log(\"$scope is next...\");\r\n //console.dir($scope);\r\n\r\n // First save the record.\r\n $scope.saveData();\r\n\r\n // Next we need to delete the following items, because they will change.\r\n //****************************************************************************\r\n // Note: To reset items on the page, we must do so AFTER the save takes place\r\n // in $scope.modalFile_saveParentItem. See note there.\r\n // Otherwise, as JavaScript is asynchronous, reset actions here will take place\r\n // before the save action completes, resulting in null values getting passed\r\n // to the backend.\r\n //****************************************************************************\r\n\r\n // Had to move this stuff to the promise as well.\r\n // // Dump the contents of the datasheet and add the new row.\r\n // $scope.dataAgGridOptions.api.setRowData([]);\r\n // //$scope.addNewRow();\r\n\r\n // // Set the file buckets for Creel to undefined or empty; otherwise, the last saved file will still be\r\n // // dangling and interphere with the save operation (trying to resave the same file - a duplicate).\r\n // if($scope.originalExistingFiles && $scope.row.originalExistingFiles)\r\n // $scope.originalExistingFiles.FieldSheetFile = $scope.row.originalExistingFiles.FieldSheetFile = undefined;\r\n\r\n // $scope.row.fieldFilesToUpload = [];\r\n\r\n // // If this is not set to undefined, it will incorrectly register an empty FieldSheetFile as 1,\r\n // // and cause problems during the save process.\r\n // $scope.filesToUpload = undefined;\r\n\r\n // // This pops the Save Success modal after Add Section.\r\n // var modalInstance = $uibModal.open({\r\n // templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-save-success.html',\r\n // controller: 'ModalSaveSuccess',\r\n // scope: $scope, //very important to pass the scope along...\r\n // backdrop: \"static\",\r\n // keyboard: false\r\n // });\r\n\r\n };\r\n\r\n //** end special creel buttons **\r\n\r\n //remove file from dataset.\r\n $scope.modalFile_doRemoveFile = function (file_to_remove, saveRow) {\r\n return DatasetService.deleteDatasetFile($scope.project.Id, $scope.dataset.Id, file_to_remove);\r\n };\r\n\r\n\r\n //check for duplicates\r\n $scope.checkForDuplicates = function () {\r\n var promise = GridService.checkForDuplicates($scope.dataset, $scope.dataAgGridOptions, $scope.row, $scope.saveResult);\r\n\r\n $scope.hasDuplicateError = $scope.saveResult.hasError;\r\n return promise;\r\n };\r\n\r\n //finish saving after file saving completes...\r\n $scope.modalFile_saveParentItem = function (saveRow) {\r\n console.log(\"Inside modalFile_saveParentItem...\");\r\n console.log(\"$scope.saveResult.saving = \" + $scope.saveResult.saving);\r\n\r\n //clean up some things from the copy of activity that we don't need to send to the backend.\r\n var new_activity = angular.copy($scope.row.Activity);\r\n delete new_activity.AccuracyCheck;\r\n delete new_activity.ActivityType;\r\n delete new_activity.Instrument;\r\n delete new_activity.Location;\r\n delete new_activity.Source;\r\n delete new_activity.User;\r\n delete new_activity.ActivityQAStatus;\r\n new_activity.Timezone = angular.toJson(new_activity.Timezone); //TODO: why don't we just save the id?\r\n\r\n //add the ActivityQAStatus back in with values from the activity\r\n new_activity.ActivityQAStatus = {\r\n 'Comments': $scope.row.Activity.ActivityQAStatus.Comments,\r\n 'QAStatusId': $scope.row.Activity.ActivityQAStatus.QAStatusId,\r\n };\r\n\r\n //clean up some things from the row (header fields)\r\n var new_row = angular.copy($scope.row);\r\n delete new_row.Activity;\r\n delete new_row.ActivityQAStatus;\r\n delete new_row.ByUser;\r\n\r\n // todo: why is this being deleted\r\n // delete dataChanged;\r\n\r\n //compose our payload\r\n var payload = {\r\n 'Activity': new_activity,\r\n 'DatasetId': $scope.dataset.Id,\r\n 'ProjectId': $scope.project.Id,\r\n 'UserId': $rootScope.Profile.Id,\r\n 'deletedRowIds': [],\r\n 'editedRowIds': [],\r\n 'header': new_row,\r\n 'details': [],\r\n };\r\n\r\n // 1) all current detail records from the grid if it is new OR just edited details if editing\r\n $scope.dataAgGridOptions.api.forEachNode(function (node) {\r\n //console.log(\"Node id: \" + node.data.Id);\r\n //console.dir($scope.dataAgGridOptions.editedRowIds);\r\n //console.log(\" does editedRowIds contain this id? \" + $scope.dataAgGridOptions.editedRowIds.containsInt(node.data.Id));\r\n\r\n if(!$scope.row.ActivityId || !node.data.Id || $scope.dataAgGridOptions.editedRowIds.containsInt(node.data.Id)){\r\n\r\n if (($scope.project.Config) && ($scope.project.Config.Lookups))\r\n {\r\n $scope.project.Config.Lookups.forEach(function (item){\r\n if (item.Label === \"Characteristics\")\r\n {\r\n var blnFoundIt = false;\r\n $scope.Characteristics.forEach(function(aCharacteristic){\r\n if ((!blnFoundIt) && (aCharacteristic.Id === parseInt(node.data.CharacteristicName)))\r\n {\r\n node.data.CharacteristicName = aCharacteristic.CharacteristicName;\r\n blnFoundIt = true;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n console.log(\"adding row id \" + node.data.Id + \" to be saved...\");\r\n var data = angular.copy(node.data);\r\n payload.details.push(data);\r\n }\r\n });\r\n\r\n\t\t\t// If the user removed a row, the grid no longer contains that row.\r\n\t\t\t// However, when we remove a row, it is not deleted from the database; it is marked as deleted in the backend (ROWSTATUS_DELETED).\r\n\t\t\t// Therefore, we need to add the removed row back into the list that we send to the database, but we DO NOT want to add it back\r\n\t\t\t// into the grid.\r\n\t\t\t// 2) add the deleted record to the detail payload, mark it as deleted\r\n\t\t\t$scope.dataAgGridOptions.deletedItems.forEach(function(deletedItem){\r\n if (deletedItem.Id) { //only push ones that were existing already (new rows that are deleted are ignored)\r\n var data = angular.copy(deletedItem);\r\n data.RowStatusId = ROWSTATUS_DELETED;\r\n payload.details.push(data);\r\n payload.deletedRowIds.push(data.Id);\r\n }\r\n\t\t\t});\r\n\r\n // 3) note which are edited\r\n payload.editedRowIds = $scope.dataAgGridOptions.editedRowIds;\r\n\r\n // 4) convert multiselects from array to json\r\n //get all multiselect fields we need to convert\r\n var DetailMultiselectFields = getAllMatchingFromArray($scope.dataAgColumnDefs.DetailFields, 'multiselect', 'ControlType');\r\n var HeaderMultiselectFields = getAllMatchingFromArray($scope.dataAgColumnDefs.HeaderFields, 'multiselect', 'ControlType');\r\n\r\n payload.details.forEach(function (data) {\r\n DetailMultiselectFields.forEach(function (multiselect_field) {\r\n if (Array.isArray(data[multiselect_field.DbColumnName]) && data[multiselect_field.DbColumnName].length > 0) {\r\n data[multiselect_field.DbColumnName] = angular.toJson(data[multiselect_field.DbColumnName]);\r\n //console.log(\" -- multiselect \" + multiselect_field.DbColumnName + \" == \" + data[multiselect_field.DbColumnName]);\r\n }\r\n });\r\n });\r\n\r\n HeaderMultiselectFields.forEach(function (multiselect_field) {\r\n if (Array.isArray(payload.header[multiselect_field.DbColumnName]) && payload.header[multiselect_field.DbColumnName].length > 0) {\r\n payload.header[multiselect_field.DbColumnName] = angular.toJson(payload.header[multiselect_field.DbColumnName]);\r\n }\r\n });\r\n\r\n\r\n // 5) convert time fields in header to be based on activity date\r\n var HeaderTimeFields = getAllMatchingFromArray($scope.dataAgColumnDefs.HeaderFields, 'time', 'ControlType');\r\n HeaderTimeFields.forEach(function (time_field) {\r\n var activity_date = moment(payload['Activity']['ActivityDate']);\r\n //console.log(\" our activity date: \" + activity_date.format('L'));\r\n var the_date = moment(payload.header[time_field.DbColumnName], [\"HH:mm\"], true);\r\n\r\n if (!the_date.isValid())\r\n return; //continue\r\n\r\n var the_combined_date = the_date.set(\r\n {\r\n year: activity_date.year(),\r\n month: activity_date.month(),\r\n date: activity_date.date()\r\n });\r\n\r\n payload.header[time_field.DbColumnName] = the_combined_date.format('YYYY-MM-DD HH:mm');\r\n //console.log(\" >> final date = \" + payload.header[time_field.DbColumnName]);\r\n });\r\n\r\n //console.dir(payload);\r\n\r\n var save_promise = null;\r\n\r\n if ($scope.pagemode == 'edit')\r\n save_promise = DatasetService.updateActivities(payload);\r\n else if ($scope.pagemode == 'dataentryform')\r\n save_promise = DatasetService.saveActivities(payload);\r\n else\r\n console.log(\"this shouldn't be possible - pagemode is unexpected: \"+ $scope.pagemode);\r\n\r\n //console.log(\"$scope.saveResult.saving = \" + $scope.saveResult.saving);\r\n\r\n // Moved the delay timer up here, because when it is inside the $promise.then below,\r\n // The results of the save action have already come back, which defeats the purpose\r\n // of the delay timer...\r\n // Also, in a testing example, there were 12,000+ records. However, only 4 records were changed.\r\n // So only 4 records were getting saved.\r\n // Yet, with the original equation ($scope.NumberOfRows * ($scope.NumberOfCols)), the delay\r\n // ended up being about 4-5 minutes -- far too long for 4 records.\r\n\r\n // Real-world situation. A user was importing WQ data via large file.\r\n // The Status message would show Success!, some time later, the success message\r\n // would be replaced with an error message. The error message was due to an SQL timeout on the update command.\r\n // The file had 50,000 rows of details.\r\n // 50,000 rows makes the delay be 50 seconds. \r\n // So, the frontend displayed the success message after 50 seconds, \r\n // and the backend was still working, and ended up timing out.\r\n // With timeout disabled, 50,000 records took about 125 seconds to save.\r\n // 125 / 50000 = 0.0025.\r\n // if ((payload.details) || (payload.header))\r\n // {\r\n // $scope.saveResult.saving = true;\r\n\r\n // var numberOfMilliSeconds = 3; // Default.\r\n // if (payload.details)\r\n // numberOfMilliSeconds = payload.details.length * .003; // Allow a little extra time.\r\n // else if (payload.header)\r\n // numberOfMilliSeconds = 5000; // This may require adjusting.\r\n\r\n // setTimeout(() => {\r\n // $scope.DelayEnablingButtons();\r\n // }, numberOfMilliSeconds);\r\n // }\r\n\r\n save_promise.$promise.then(\r\n function (theResult) {\r\n console.log(\"Inside save_promise.$promise.then...\");\r\n console.log(\"theResult is next...\");\r\n console.dir(theResult);\r\n console.log(\"$scope.saveResult.saving = \" + $scope.saveResult.saving);\r\n \r\n // For some reason, when the save or update action is finished, $scope.saveResult.saving is false.\r\n // Setting it back to true here, so that we can control it from $scope.DelayEnablingButtons,\r\n // and allow time for the frontend processing to complete, before enabling the buttons again.\r\n\r\n if ((theResult[0]) && (theResult[0].ErrorMessage))\r\n {\r\n let theErrorText: any;\r\n\r\n theErrorText = theResult[0].ErrorMessage;\r\n\r\n console.error(\"Save error: theErrorText = \" + theErrorText);\r\n\r\n $scope.saveResult.error = \"There was a problem saving your data (\" + theErrorText + \"). Please try again or contact support.\";\r\n }\r\n else\r\n {\r\n // If we are adding a section, we DON\"T want to switch the form, to show\r\n // the alert-success section, which keys off of the saveResult.success.\r\n // We need the form to stay how it is, so that we can add another section,\r\n // if necessary.\r\n if (!$scope.background_save)\r\n {\r\n $scope.saveResult.success = true; // Turn on the Back to List button.\r\n $scope.saveResult.saving = false; // Stop the spinning fish, enable the buttons. Note: If a dataset allows saving with errors, the Save and close button WILL NOT disable.\r\n \r\n // If, during the save process, we opened the a modal for the saving action,\r\n // that modal is on top, and we need to turn off its spinning fish, so that we can close the modal.\r\n if (($scope.$$childTail) && ($scope.$$childTail.showFish))\r\n $scope.$$childTail.showFish = false;\r\n }\r\n else\r\n {\r\n // When $scope.background_save = true, it is because we are adding a section (Creel Survey).\r\n // We need to reset (delete) the entry to the Location selectbox.\r\n // If we do it in function AddSection, after calling saveData(), because JavaScript is\r\n // asynchronous, it deletes $scope.row.Activity.LocationId before the save action completes\r\n // before the backend gets called and passes the LocationId, and thus LocationId ends up being null,\r\n // and causes the save to fail. So, delete LocationId here, after the save completes.\r\n $scope.row.Activity.LocationId = null;\r\n\r\n // In either case, we still need to stop the spinning fish so that the \"Close\" button\r\n // becomes enabled again.\r\n if (($scope.$$childTail) && ($scope.$$childTail.showFish))\r\n $scope.$$childTail.showFish = false;\r\n\r\n // These lines reset the applicable items in the row.\r\n if (($scope.dataset) && \r\n ($scope.dataset.Config) && \r\n ($scope.dataset.Config.DataEntryPage) &&\r\n ($scope.dataset.Config.DataEntryPage.FieldsToResetForAddSection))\r\n {\r\n for (var item in $scope.dataset.Config.DataEntryPage.FieldsToResetForAddSection)\r\n {\r\n //console.log(item + \": \" + $scope.dataset.Config.DataEntryPage.FieldsToResetForAddSection[item]);\r\n $scope.row[item] = $scope.dataset.Config.DataEntryPage.FieldsToResetForAddSection[item];\r\n }\r\n\r\n //console.log(\"$scope.row is next...\");\r\n //console.dir($scope.row);\r\n }\r\n\r\n // Dump the contents of the datasheet and add the new row.\r\n $scope.dataAgGridOptions.api.setRowData([]);\r\n //$scope.addNewRow();\r\n\r\n // Set the file buckets for Creel to undefined or empty; otherwise, the last saved file will still be\r\n // dangling and interphere with the save operation (trying to resave the same file - a duplicate).\r\n if($scope.originalExistingFiles && $scope.row.originalExistingFiles)\r\n $scope.originalExistingFiles.FieldSheetFile = $scope.row.originalExistingFiles.FieldSheetFile = undefined;\r\n\r\n $scope.row.fieldFilesToUpload = [];\r\n\r\n // If this is not set to undefined, it will incorrectly register an empty FieldSheetFile as 1,\r\n // and cause problems during the save process.\r\n $scope.filesToUpload = undefined;\r\n\r\n // This pops the Save Success modal after Add Section.\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-save-success.html',\r\n controller: 'ModalSaveSuccess',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n\r\n // Set this back to false; otherwise, if the user clicks Add Section a boult times, \r\n // then clicks Save and Close, this will still be set to true.\r\n\r\n // CD 09/22/2023 - We can't set this to false here, because this fires before the modal-save-status\r\n // runs. Because of this, it will never reload the form for Creel. Moving to modal-save-status.ts (Line 62)\r\n //$scope.background_save = false;\r\n //console.log(\"Line 1484: $scope.background_save = \" + $scope.background_save);\r\n }\r\n }\r\n },\r\n function (data) {\r\n $scope.saveResult.success = false;\r\n console.log(\"Failure!\");\r\n console.dir(data);\r\n $scope.saveResult.saving = false;\r\n let theErrorText: any;\r\n let strAdminError: any;\r\n if (typeof data.data !== 'undefined') {\r\n //if (typeof data.data.ExceptionMessage !== 'undefined') {\r\n if (typeof data.data.InnerException.ExceptionMessage !== 'undefined') {\r\n\r\n strAdminError = theErrorText = data.data.InnerException.ExceptionMessage + \" >>> \" + data.data.InnerException.ExceptionType;\r\n if (typeof data.data.InnerException.StackTrace != 'undefined')\r\n {\r\n let strError = data.data.InnerException.StackTrace;\r\n let intStartPoint = strError.indexOf(\"services\\\\\");\r\n let intLineNumber = strError.indexOf(\"cs:line\");\r\n let intEndPoint = intLineNumber + 20;\r\n\r\n // If the string has a line number in it, we need to grab some extra characters, to allow for the added line number text.\r\n if (intStartPoint > -1)\r\n {\r\n strError = strError.substring(intStartPoint, intEndPoint);\r\n strAdminError += \" >>> \" + strError + \"...\"; \r\n\r\n // We only send all the info to the screen, if the user is an admin.\r\n if (AdminUserIds.includes($scope.userId))\r\n {\r\n theErrorText = strAdminError;\r\n }\r\n }\r\n\r\n }\r\n // We want to send all the info to the debug console, whether they are admin or not.\r\n console.error(\"Save error: strAdminError = \" + strAdminError);\r\n }\r\n else {\r\n\r\n theErrorText = data.data;\r\n\r\n var titleStartLoc = theErrorText.indexOf(\"\") + 7;\r\n console.log(\"titleStartLoc = \" + titleStartLoc);\r\n\r\n var titleEndLoc = theErrorText.indexOf(\"\");\r\n console.log(\"titleEndLoc = \" + titleEndLoc);\r\n\r\n theErrorText = theErrorText.substr(titleStartLoc, titleEndLoc - titleStartLoc);\r\n }\r\n }\r\n\r\n $scope.saveResult.error = \"There was a problem saving your data (\" + theErrorText + \"). Please try again or contact support.\";\r\n }\r\n );\r\n };\r\n\r\n $scope.doneButton = function () {\r\n $scope.activities = undefined;\r\n $location.path(\"/\" + $scope.dataset.activitiesRoute + \"/\" + $scope.dataset.Id);\r\n };\r\n\r\n $scope.DelayEnablingButtons = function () {\r\n // This gets called from $scope.modalFile_saveParentItem, shortly after passing data do the backend,\r\n // via DatasetService.saveActivities, or DatasetService.updateActivities.\r\n // We want to delay enabling some buttons at the bottom of the form; otherwise, \r\n // if we enable them too early, it is confusing to the user.\r\n\r\n //console.log(\"$scope.saveResult.saving = \" + $scope.saveResult.saving);\r\n if ((!$scope.background_save) && ($scope.saveResult.saving != true)) // This gets set to true in function $scope.addSection; otherwise, it is false.\r\n {\r\n $scope.saveResult.success = \"Save successful.\";\r\n }\r\n\r\n $scope.background_save = false; //reset\r\n\r\n $scope.saveResult.error = false;\r\n //log success\r\n console.log(\"Success!\");\r\n $scope.saveResult.saving = false;\r\n\r\n $scope.$apply();\r\n };\r\n\r\n // var saveResultWatcher = $scope.$watch('saveResult', function () {\r\n // // If the save action is still running, we don't want to do anything.\r\n // if ($scope.saveResult.saving == true)\r\n // return;\r\n\r\n // if ($scope.saveResult.success)\r\n // {\r\n // $scope.saveResult.success = \"Save successful.\";\r\n // console.log(\"Success!\");\r\n\r\n // $scope.saveResult.error = false;\r\n // console.log(\"Success!\");\r\n // $scope.saveResult.saving = false;\r\n \r\n // saveResultWatcher();\r\n // }\r\n // else\r\n // {\r\n // $scope.saveResult.error = false;\r\n // console.log(\"Failed!\");\r\n // $scope.saveResult.saving = false;\r\n\r\n // //saveResultWatcher();\r\n // }\r\n\r\n // $scope.background_save = false; //reset\r\n\r\n // $scope.$apply();\r\n // });\r\n }\r\n];\r\n\r\nexport default dataset_edit_form;\r\n\r\n\r\n\r\n\r\n","import {\r\n serviceUrl,\r\n SharingLevel, SHARINGLEVEL_GROUPREAD,\r\n SHARINGLEVEL_PRIVATE,\r\n SHARINGLEVEL_PUBLICREAD,\r\n SHARINGLEVEL_REFERENCE_LIBRARY,\r\n MAX_FILE_NAME_LENGTH,\r\n} from \"../../../../config\";\r\nimport {isDuplicateUploadFile,\r\n isValidFileName\r\n} from \"../../../common/common-functions\";\r\n\r\nvar modal_new_file = ['$scope','$uibModalInstance', 'Upload',\r\n\tfunction($scope, $uibModalInstance, $upload){\r\n\t\t// This controller is for the Project File (Documents tab) modal.\r\n\t\t// note: file selected for upload in this controller are managed by onFileSelect in this controller (see below).\r\n\r\n $scope.header_message = \"Add file(s) to \" + $scope.project.Name;\r\n $scope.doneUploading = false;\r\n\r\n //options from config.js\r\n $scope.SHARINGLEVEL_PRIVATE = SHARINGLEVEL_PRIVATE;\r\n $scope.SHARINGLEVEL_PUBLICREAD = SHARINGLEVEL_PUBLICREAD;\r\n\t\t$scope.SHARINGLEVEL_GROUPREAD = SHARINGLEVEL_GROUPREAD;\r\n\t\t$scope.SHARINGLEVEL_REFERENCE_LIBRARY = SHARINGLEVEL_REFERENCE_LIBRARY;\r\n $scope.SharingLevel = SharingLevel;\r\n $scope.MAX_FILE_NAME_LENGTH = MAX_FILE_NAME_LENGTH; // Create a scope variable, so the page can access it.\r\n\r\n\t\t$scope.onFileSelect = function(files)\r\n\t\t{\r\n console.log(\"Inside modal_new_file, onFileSelect! Files is next...\");\r\n //console.dir(files);\r\n\r\n //check for duplicates\r\n if (files) {\r\n files.forEach(function (file) {\r\n if (isDuplicateUploadFile(file, $scope.project.Files))\r\n file.success = \"DUPLICATE\";\r\n else if (isValidFileName(file.Name))\r\n {\r\n file.UploadMessage = \"No special characters besides hyphen and underscore are allowed.\";\r\n alert (file.UploadMessage);\r\n\r\n var intPosition = files.indexOf(file.name);\r\n files.splice(intPosition, 1);\r\n\r\n return;\r\n }\r\n else if (file.Name.length > MAX_FILE_NAME_LENGTH)\r\n {\r\n file.UploadMessage = \"File name must be 50 characters or less\";\r\n alert (file.UploadMessage);\r\n\r\n var intPosition = files.indexOf(file.name);\r\n files.splice(intPosition, 1);\r\n\r\n return;\r\n }\r\n });\r\n }\r\n else\r\n console.log(\"there were no files on FileSelect\")\r\n\r\n $scope.uploadFiles = files;\r\n\r\n console.dir($scope.uploadFiles);\r\n\r\n if ($scope.uploadFiles.length > 0)\r\n $scope.readyToUpload = true;\r\n else\r\n $scope.readyToUpload = false;\r\n\r\n\r\n\r\n\t\t};\r\n\r\n\t\t$scope.save = function(){\r\n console.log(\"Inside modal_new_file.is, save...\");\r\n\t\t\t//console.log(\"$scope is next...\");\r\n //console.dir($scope);\r\n\r\n\t\t\t// Just in case they clicked the Upload button, without selecting a file first.\r\n\t\t\tif (!$scope.uploadFiles)\r\n\t\t\t{\r\n\t\t\t\tconsole.log(\"No file selected; do nothing...\");\r\n\t\t\t\treturn;\r\n }\r\n\r\n $scope.readyToUpload = false;\r\n $scope.doneUploading = true;\r\n\r\n\t\t\t$scope.foundDuplicate = false;\r\n\t\t\t$scope.uploadErrorMessage = undefined;\r\n\t\t\tvar errors = [];\r\n\r\n\t\t\tfor(var i = 0; i < $scope.uploadFiles.length; i++)\r\n\t\t\t{\r\n\t\t\t\tvar file = $scope.uploadFiles[i];\r\n\t\t\t\t//console.log(\"file is next...\");\r\n\t\t\t\t//console.dir(file);\r\n\r\n\t\t\t\tvar newFileNameLength = file.name.length;\r\n\t\t\t\tconsole.log(\"file name length = \" + newFileNameLength);\r\n\r\n if (file.success == \"DUPLICATE\") {\r\n console.log(\"Duplicate -- ignoring: \", file.Name);\r\n continue;\r\n }\r\n\r\n // The Title (file.Info.Title) is a required item.\r\n if (!file.Info || !file.Info.Title) {\r\n console.log(\"Title missing -- ignoring: \", file.Name);\r\n file.success = \"Need Title\";\r\n continue;\r\n }\r\n\r\n if (!file.Info.Description) {\r\n file.Info.Description = \"\";\r\n }\r\n\r\n if (!file.Info.Keyword) {\r\n file.Info.Keyword = \"\";\r\n }\r\n\r\n if (!file.Info.SharingLevel) {\r\n file.Info.SharingLevel = $scope.SHARINGLEVEL_PRIVATE;\r\n }\r\n\r\n\t\t\t\tif(!file.success)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log(\"file.success does not exist yet...\");\r\n\t\t\t\t\t$scope.upload = $upload.upload({\r\n\t\t\t\t\t\turl: serviceUrl + '/api/v1/file/UploadProjectFile',\r\n\t\t\t\t\t\tmethod: \"POST\",\r\n\t\t\t\t\t\t// headers: {'headerKey': 'headerValue'},\r\n\t\t\t\t\t\t// withCredential: true,\r\n\t\t\t\t\t\tdata: {ProjectId: $scope.project.Id, Description: file.Info.Description, Title: file.Info.Title, Keyword: file.Info.Keyword, SharingLevel: file.Info.SharingLevel},\r\n\t\t\t\t\t\tfile: file,\r\n\r\n }).progress(function (evt) {\r\n if (typeof evt !== 'undefined')\r\n\r\n evt.config.file.success = \"Working: \" + parseInt(String(100.0 * evt.loaded / evt.total)) + \"%\";\r\n }).success(function (data, status, headers, config) {\r\n if (typeof config !== 'undefined')\r\n {\r\n config.file.success = \"Success\";\r\n $scope.callback(data);\r\n }\r\n\t\t\t\t\t\t}).error(function(data, status, headers, config) {\r\n\t\t\t\t\t\t\t$scope.uploadErrorMessage = \"There was a problem uploading your file. Please try again or contact the Helpdesk if this issue continues.\";\r\n\t\t\t\t\t\t\t//console.log(file.name + \" was error.\");\r\n if (typeof config !== 'undefined')\r\n\t\t\t\t\t\t\t\tconfig.file.success = \"Failed\";\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n }//loop\r\n\r\n\t\t};\r\n\r\n\t\t$scope.cancel = function(){\r\n\t\t\t//if($scope.uploadFiles)\r\n\t\t\t//\t$scope.reloadProject();\r\n\r\n\t\t\t$scope.foundDuplicate = undefined;\r\n\r\n\t\t\t$uibModalInstance.dismiss();\r\n\t\t};\r\n\t}\r\n];\r\n\r\nexport default modal_new_file;\r\n","import * as angular from 'angular';\r\nimport {isDuplicateUploadFile} from \"../../common-functions\";\r\nimport {serviceUrl} from \"../../../../config\";\r\n\r\ndeclare const $: any;\r\n// declare const serviceUrl: any;\r\n//controller for the waypoints loading process.\r\n\r\nvar modal_waypoint_files = ['$scope', '$uibModalInstance', 'DatasetService', '$rootScope',\r\n function ($scope, $uibModalInstance, DatasetService, $rootScope) {\r\n\r\n $scope.getWaypointHeaders = function () {\r\n $scope.system.loading = true;\r\n $scope.theDelimiter = \"\";\r\n\r\n var formData = new FormData();\r\n\r\n var hasFilesToUpload = true;\r\n\r\n if (!Array.isArray($scope.filesToUpload[$scope.file_field]) || $scope.filesToUpload[$scope.file_field].length == 0)\r\n {\r\n hasFilesToUpload = false;\r\n $scope.filesToUpload[$scope.file_field] = [];\r\n }\r\n\r\n var errors = [];\r\n\r\n console.log(\"$scope.filesToUpload is next...\");\r\n console.dir($scope.filesToUpload);\r\n console.dir($scope.currentFiles);\r\n console.dir($scope.removedFiles);\r\n //console.dir(formdata);\r\n\r\n angular.forEach($scope.filesToUpload[$scope.file_field], function (incoming_file, key) {\r\n formData.append('file', incoming_file);\r\n });\r\n\r\n if (hasFilesToUpload) {\r\n console.log(\" --> we have files to upload <--\");\r\n var filesReadyToUpload = [];\r\n\r\n //remove any duplicates\r\n $scope.filesToUpload[$scope.file_field].forEach(function (incoming_file, key) {\r\n if (isDuplicateUploadFile(incoming_file, $scope.modalFiles_filesToCheckForDuplicates)) {\r\n $scope.foundDuplicate = true;\r\n errors.push(\"Ignoring: \" + incoming_file.Name + \" - file already exists.\" + \"\\n\");\r\n } else {\r\n\r\n filesReadyToUpload.push(incoming_file);\r\n }\r\n });\r\n\r\n //set our uploads to only files that are ready.\r\n $scope.filesToUpload[$scope.file_field] = filesReadyToUpload;\r\n\r\n // Inform the user we've removed their duplicate files.\r\n if ($scope.foundDuplicate) {\r\n console.warn(errors);\r\n alert(errors);\r\n }\r\n }\r\n\r\n //throw \"Stopping right here...\";\r\n\r\n $.ajax({\r\n url: serviceUrl + '/api/v1/file/getwaypointscolheaders2',\r\n type: 'POST',\r\n data: formData,\r\n processData: false, // tell jQuery not to process the data\r\n contentType: false, // tell jQuery not to set contentType\r\n success: function (data) {\r\n\r\n var headerFields = eval(\"(\" + data + \")\");\r\n //console.log(headerFields);\r\n\r\n var size = 0, key;\r\n\r\n // Capture the delimiter and then strip it off of the end of the array.\r\n // In the backend, we tacked it onto the end of the return array, just for an easy way to pass it to the frontend.\r\n $scope.theDelimiter = headerFields[headerFields.length - 1];\r\n headerFields = headerFields.slice(0, headerFields.length - 1);\r\n\r\n for (key in headerFields)\r\n {\r\n size++;\r\n }\r\n\r\n alert(size + \" headerFields loaded\");\r\n\r\n $rootScope.headerFields = $scope.headerFields = headerFields;\r\n $scope.system.loading = false;\r\n $scope.$apply();\r\n },\r\n error: function (jqXHR, error, errorThrown) {\r\n if (jqXHR.status && jqXHR.status == 400) {\r\n alert(jqXHR.responseText + \"\\n\\n\" + \"header row not loaded!\");\r\n } else {\r\n alert(\"Error uploading file!\");\r\n }\r\n }\r\n });\r\n\r\n // Don't close the modal window.\r\n //$uibModalInstance.dismiss();\r\n };\r\n\r\n $scope.uploadWaypoints = function (waypointIdField) {\r\n\r\n console.log(\"Inside $scope.uploadWaypoints\");\r\n //console.log(\"waypointIdField = \" + waypointIdField);\r\n //console.dir($scope.headerFields);\r\n\r\n if ((typeof waypointIdField === 'undefined') || (waypointIdField === null))\r\n {\r\n alert(\"You must select a Waypoint Id field!\");\r\n return;\r\n }\r\n\r\n var formData = new FormData();\r\n\r\n var waypointIdFieldName = \"\";\r\n\r\n for (var i = 0; i < $scope.headerFields.length; i++)\r\n {\r\n if (i === parseInt(waypointIdField))\r\n {\r\n waypointIdFieldName = $scope.headerFields[i];\r\n }\r\n }\r\n console.log(\"waypointIdFieldName = \" + waypointIdFieldName);\r\n formData.append('WaypointIdFieldName', waypointIdFieldName);\r\n formData.append('TheDelimiter', $scope.theDelimiter);\r\n\r\n var hasFilesToUpload = true;\r\n\r\n if (!Array.isArray($scope.filesToUpload[$scope.file_field]) || $scope.filesToUpload[$scope.file_field].length == 0)\r\n {\r\n hasFilesToUpload = false;\r\n $scope.filesToUpload[$scope.file_field] = [];\r\n }\r\n\r\n var errors = [];\r\n\r\n console.log(\"$scope.filesToUpload is next...\");\r\n console.dir($scope.filesToUpload);\r\n console.dir($scope.currentFiles);\r\n console.dir($scope.removedFiles);\r\n //console.dir(formdata);\r\n\r\n angular.forEach($scope.filesToUpload[$scope.file_field], function (incoming_file, key) {\r\n formData.append('file', incoming_file);\r\n });\r\n\r\n if (hasFilesToUpload) {\r\n console.log(\" --> we have files to upload <--\");\r\n var filesReadyToUpload = [];\r\n\r\n //remove any duplicates\r\n $scope.filesToUpload[$scope.file_field].forEach(function (incoming_file, key) {\r\n if (isDuplicateUploadFile(incoming_file, $scope.modalFiles_filesToCheckForDuplicates)) {\r\n $scope.foundDuplicate = true;\r\n errors.push(\"Ignoring: \" + incoming_file.Name + \" - file already exists.\" + \"\\n\");\r\n } else {\r\n\r\n filesReadyToUpload.push(incoming_file);\r\n\r\n //add to the currentfiles ONLY if the file is one coming from this field in the row...\r\n //if (isFileInList(incoming_file, $scope.file_row.fieldFilesToUpload[$scope.file_field])) {\r\n // //add to our current files for display once they close this modal\r\n // $scope.currentFiles.push(incoming_file);\r\n //}\r\n }\r\n });\r\n\r\n //set our uploads to only files that are ready.\r\n $scope.filesToUpload[$scope.file_field] = filesReadyToUpload;\r\n\r\n // Inform the user we've removed their duplicate files.\r\n if ($scope.foundDuplicate) {\r\n console.warn(errors);\r\n alert(errors);\r\n }\r\n }\r\n\r\n //throw \"Stopping right here...\";\r\n\r\n $.ajax({\r\n //url: serviceUrl + '/api/v1/file/handlewaypoints',\r\n url: serviceUrl + '/api/v1/file/handlewaypoints2',\r\n type: 'POST',\r\n data: formData,\r\n processData: false, // tell jQuery not to process the data\r\n contentType: false, // tell jQuery not to set contentType\r\n success: function (data) {\r\n\r\n var waypoints = eval(\"(\" + data + \")\");\r\n\r\n //console.log(waypoints);\r\n\r\n var size = 0, key;\r\n\r\n for (key in waypoints)\r\n size++;\r\n\r\n alert(size + \" waypoints loaded\");\r\n\r\n $rootScope.waypoints = $scope.waypoints = waypoints;\r\n\r\n },\r\n error: function (jqXHR, error, errorThrown) {\r\n if (jqXHR.status && jqXHR.status == 400) {\r\n alert(jqXHR.responseText + \"\\n\\n\" + \"Waypoints not loaded!\");\r\n } else {\r\n alert(\"Error uploading file!\");\r\n }\r\n }\r\n });\r\n\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n\r\n\r\n $scope.cancel = function () {\r\n console.log(\"Inside $scope.cancel...\");\r\n //console.dir($scope);\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n //after user selects files to upload from the file chooser\r\n $scope.onWaypointFileSelect = function (field, files) {\r\n console.log(\"Inside onFileSelect for field: \" + field);\r\n\r\n $scope.filesToUpload[field] = [];\r\n\r\n if (files) {\r\n files.forEach(function (file) {\r\n //add to the scope and to our own list\r\n $scope.filesToUpload[field].push(file);\r\n });\r\n } else\r\n console.log(\"there were no files on WaypointFileSelect\")\r\n\r\n console.log(\"WaypointFileSelect - filesToUpload\", $scope.filesToUpload);\r\n };\r\n\r\n\r\n }\r\n];\r\n\r\n\r\nexport default modal_waypoint_files;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {isPercent} from \"../../../../core/common/common-functions\";\r\nimport {LeaseModalScope} from \"./lease-scope\";\r\nimport leasing_module from \"../../leasing-module\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\nimport {\r\n LEASE_STATUS_ACTIVE, LEASE_STATUS_CANCELLED,\r\n LEASE_STATUS_PENDING,\r\n METADATA_PROPERTY_LEASING_SYSTEM_LASTLEASENUMBER\r\n} from \"../../../../config\";\r\n//import { difference } from 'esri/geometry/geometryEngine';\r\n\r\nvar modal_lease = ['$scope', '$rootScope', '$uibModal','$uibModalInstance', 'LeasingService',\r\n function ($scope, $rootScope, $uibModal, $uibModalInstance, LeasingService) {\r\n\r\n //utility functions\r\n console.log(\"Inside lease-modal.ts\");\r\n\r\n /* pattern =\r\n 1056889599\r\n\r\n 1-Farming (other numbers for other types of leases 4, 7)\r\n 0-Place holder (they are about to reach the threshold of 10,000 leases) with soon be 1\r\n 5688-Old lease number (TL-5688) currently at 9600 something I think\r\n 95-last two digits of the lease start year\r\n 99-Last two digits of the lease end year\r\n */\r\n\r\n $scope.generateLeaseNumber = function (lease) {\r\n //console.log(\"generateleasenumber\");\r\n if (lease.lastleasenumber)\r\n return $scope.constructLeaseNumber(lease);\r\n\r\n var systemvals = LeasingService.getLeasingSystemValues();\r\n\r\n systemvals.$promise.then(function () {\r\n systemvals.forEach(function (val) {\r\n if (val.Id == METADATA_PROPERTY_LEASING_SYSTEM_LASTLEASENUMBER) {\r\n lease.lastleasenumberproperty = val;\r\n lease.lastleasenumberproperty.PossibleValues = parseInt(val.PossibleValues);\r\n $scope.constructLeaseNumber(lease);\r\n }\r\n });\r\n });\r\n\r\n };\r\n\r\n //needs the lease.lastleasenumber already set\r\n $scope.constructLeaseNumber = function (lease) {\r\n\r\n var nextlease = lease.lastleasenumberproperty.PossibleValues+1;\r\n\r\n // if (leasing_module.LeaseTypeLeaseNumber.hasOwnProperty(lease.LeaseType))\r\n // lease.LeaseNumber = leasing_module.LeaseTypeLeaseNumber[lease.LeaseType] + \"0\" + nextlease;\r\n if (LeaseModalScope.LeaseTypeLeaseNumber.hasOwnProperty(lease.LeaseType))\r\n lease.LeaseNumber = LeaseModalScope.LeaseTypeLeaseNumber[lease.LeaseType] + \"0\" + nextlease;\r\n else\r\n lease.LeaseNumber = \"0\" + nextlease;\r\n\r\n var begin = moment(lease.LeaseStart);\r\n if (begin.isValid() && lease.LeaseStart)\r\n lease.LeaseNumber += begin.format(\"YY\");\r\n\r\n var end = moment(lease.LeaseEnd);\r\n if (end.isValid() && lease.LeaseEnd)\r\n lease.LeaseNumber += end.format(\"YY\");\r\n\r\n }\r\n\r\n //now with the modal\r\n\r\n //set if the user clicks \"new lease on this parcel\" button on view lease\r\n if ($scope.pagemode == \"new_lease_on_this_parcel\") {\r\n $scope.pagemode = \"new\";\r\n $scope.headerMessage = \"Create New Lease on this Parcel\";\r\n\r\n $scope.lease_modal = {\r\n AllotmentName: $scope.lease.AllotmentName,\r\n Status: LEASE_STATUS_PENDING, //pending\r\n Level: 1,\r\n LeaseFields: $scope.lease.LeaseFields,\r\n FieldsToLink: [],\r\n LeaseType: $scope.lease.LeaseType,\r\n LeaseAcres: $scope.lease.LeaseAcres,\r\n ProductiveAcres: $scope.lease.ProductiveAcres,\r\n LeaseNumber: $scope.lease.LeaseNumber,\r\n };\r\n console.dir($scope.lease_modal.LeaseNumber);\r\n if ($scope.lease_modal.LeaseFields && Array.isArray($scope.lease_modal.LeaseFields)) {\r\n $scope.lease_modal.LeaseFields.forEach(function (field) {\r\n $scope.lease_modal.FieldsToLink.push(field.FieldId);\r\n });\r\n }\r\n }\r\n else {\r\n $scope.lease_modal = angular.copy($scope.lease);\r\n $scope.pagemode = \"new\";\r\n $scope.headerMessage = \"Create New Lease\";\r\n }\r\n\r\n if (!$scope.lease_modal.LeaseCropShares)\r\n $scope.lease_modal.LeaseCropShares = [];\r\n\r\n //leasenumber is automatically updated when creating for the first time - changing LeaseType, LeaseStart, LeaseEnd trigger update UNLESS user has manually changed the leasenumber\r\n $scope.canUpdateLeaseNumber = true;\r\n\r\n $scope.updateLeaseNumber = function () {\r\n //console.log(\"updateLeaseNumber running - \" +$scope.pagemode);\r\n if ($scope.canUpdateLeaseNumber && $scope.pagemode == \"new\") {\r\n $scope.generateLeaseNumber($scope.lease_modal);\r\n }\r\n };\r\n\r\n $scope.manuallyUpdatedLeaseNumber = function () {\r\n //console.log(\"settingupdateleasenumber to false\");\r\n $scope.canUpdateLeaseNumber = false;\r\n }\r\n\r\n $scope.canViewCropFields = $rootScope.Profile.hasRole(\"LeaseCropAdmin\");\r\n\r\n if ($scope.lease_modal.Id) {\r\n $scope.headerMessage = \"Edit Lease: \" + $scope.lease_modal.LeaseNumber;\r\n $scope.pagemode = \"edit\";\r\n try {\r\n $scope.lease_modal.GrazeAnimal = angular.fromJson($scope.lease_modal.GrazeAnimal);\r\n } catch (e) {\r\n $scope.lease_modal.GrazeAnimal = new Array($scope.lease_modal.GrazeAnimal);\r\n //console.log(\"grazeanimal not json... now it is:\");\r\n //console.dir($scope.lease_modal.GrazeAnimal);\r\n }\r\n } else {\r\n $scope.lease_modal.TransactionDate = moment().format(); //defaults to today\r\n }\r\n\r\n $scope.updateLeaseNumber(); //run the first time we open\r\n\r\n var EditLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.editCropShare(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n var leaseCropShareColumnDefs = [\r\n { headerName: \"Crop Share Type\", field: \"CropShareType\", width: 160, menuTabs: ['filterMenuTab'],\r\n cellEditor: \"select\",\r\n cellEditorParams: { values: [\"Primary\",\"Alternative\"] },\r\n },\r\n { headerName: \"Crop\", field: \"Crop\", width: 160, menuTabs: ['filterMenuTab'],\r\n cellEditor: \"select\",\r\n cellEditorParams: { values: $scope.cropOptions.ListValues }\r\n },\r\n { headerName: \"Crop Share %\", field: \"CropSharePercent\", width: 180, menuTabs: ['filterMenuTab'], filter: \"text\",\r\n valueParser: function (params) {\r\n if (params.newValue && !isPercent(params.newValue)) { alert(\"Value must be a percent (0-100).\"); return; }\r\n return (params.newValue) ? Number(params.newValue) : \"\";\r\n },\r\n },\r\n { headerName: \"Cost Share %\", field: \"CostSharePercent\", width: 160, menuTabs: ['filterMenuTab'], filter: \"text\",\r\n valueParser: function (params) {\r\n if (params.newValue && !isPercent(params.newValue)) { alert(\"Value must be a percent (0-100).\"); return; }\r\n return (params.newValue) ? Number(params.newValue) : \"\";\r\n },\r\n },\r\n { headerName: \"Comments\", field: \"Comment\", width: 180, menuTabs: ['filterMenuTab'], filter: \"text\" },\r\n ];\r\n\r\n $scope.leaseCropShareGrid = {\r\n columnDefs: leaseCropShareColumnDefs,\r\n rowData: $scope.lease_modal.LeaseCropShares,\r\n removedCropShares: [],\r\n defaultColDef: {\r\n editable: true,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n\r\n rowSelection: 'single',\r\n }\r\n\r\n\r\n $uibModalInstance.opened.then(function () {\r\n setTimeout(function () {\r\n $scope.cropsShareGridModalDiv = document.querySelector('#cropshare-grid-modal');\r\n new Grid($scope.cropsShareGridModalDiv, $scope.leaseCropShareGrid);\r\n }, 500);\r\n })\r\n\r\n $scope.addRow = function () {\r\n //set the default cropsharetype: Primary, unless one already exists.\r\n var cropShareType = \"Primary\";\r\n $scope.leaseCropShareGrid.api.forEachNode(function (node) {\r\n if (node.data.CropShareType == \"Primary\")\r\n cropShareType = \"Alternative\";\r\n });\r\n\r\n $scope.leaseCropShareGrid.api.updateRowData({ add: [{ \"CropShareType\": cropShareType}] });\r\n };\r\n\r\n $scope.removeRow = function () {\r\n var selected = $scope.leaseCropShareGrid.api.getSelectedRows();\r\n $scope.leaseCropShareGrid.api.updateRowData({ remove: selected });\r\n\r\n //console.dir($scope.lease_modal);\r\n\r\n //fix: find it and delete it from our lease object's cropshare list\r\n selected.forEach(function (remove_cropshare) {\r\n\r\n if(remove_cropshare.Id !== 0)\r\n $scope.leaseCropShareGrid.removedCropShares.push(remove_cropshare.Id);\r\n/*\r\n if (remove_cropshare.Id && Array.isArray($scope.lease_modal.LeaseCropShares)) {\r\n $scope.lease_modal.LeaseCropShares.forEach(function (existing_cropshare, index) {\r\n if (existing_cropshare.Id === remove_cropshare.Id) {\r\n $scope.lease_modal.LeaseCropShares.splice(index, 1);\r\n $scope.leaseCropShareGrid.removedCropShares.push(remove_cropshare.Id);\r\n }\r\n });\r\n }\r\n*/\r\n });\r\n\r\n };\r\n\r\n// console.dir($scope.lease_modal);\r\n //if this is a new lease, make sure the fields are all from the same allotment.\r\n if ($scope.lease_modal.LeaseNumber == null && $scope.lease_modal.LeaseFields.length > 1) {\r\n var target_allotment = \"\";\r\n var isValid = true;\r\n\r\n $scope.lease_modal.LeaseFields.forEach(function (field) {\r\n if (target_allotment == \"\") {\r\n target_allotment = field.AllotmentName;\r\n console.log(field.AllotmentName + \"<--set\");\r\n return;\r\n }\r\n\r\n console.log(\"-->checking::: \" + field.AllotmentName);\r\n if (field.AllotmentName != target_allotment) {\r\n console.log(\"No good!\");\r\n isValid = false;\r\n }\r\n });\r\n\r\n console.log(\"isvalid: \" + isValid);\r\n\r\n if (!isValid) {\r\n alert(\"Only fields from the same allotment can be added to a lease. Please change your selection.\");\r\n $uibModalInstance.dismiss();\r\n }\r\n }\r\n\r\n $scope.save = function () {\r\n\r\n var lease_save = angular.copy($scope.lease_modal);\r\n\r\n //check for required fields\r\n if (!$scope.verifyRequiredFields()) {\r\n alert(\"Error: missing required fields. Please check the fields with asterisks and make sure all fields have a valid value.\");\r\n return;\r\n }\r\n\r\n //check for unique Lease Number on new Leases\r\n $scope.activeLeaseObjects = LeasingService.getActiveLeases();\r\n\r\n $scope.activeLeaseObjects.$promise.then(function () {\r\n if ($scope.pagemode != \"edit\") {\r\n if (!$scope.leaseNumberIsUnique($scope.activeLeaseObjects)) {\r\n alert(\"Error: a lease with lease number \" + lease_save.LeaseNumber + \" already exists. Please use a unique lease number.\");\r\n return;\r\n }\r\n }\r\n \r\n\r\n delete lease_save.LeaseComplianceActions;\r\n delete lease_save.LeaseCropPlans;\r\n delete lease_save.LeaseFields;\r\n delete lease_save.LeaseInspections;\r\n delete lease_save.LeaseOperator;\r\n delete lease_save.LeaseProductions;\r\n delete lease_save.lastleasenumberproperty;\r\n\r\n /* --- validation and such --- */\r\n\r\n lease_save.GrazeAnimal = JSON.stringify(lease_save.GrazeAnimal);\r\n\r\n //set the status if it changed\r\n if ($scope.lease.Status != lease_save.Status || $scope.lease.Level != lease_save.Level) {\r\n\r\n lease_save.StatusDate = $scope.currentDay;\r\n lease_save.StatusBy = $scope.currentUser;\r\n\r\n if ((lease_save.Level == 4 && lease_save.Status == LEASE_STATUS_PENDING) || (lease_save.Status == LEASE_STATUS_ACTIVE && lease_save.Level != 4)) {\r\n if (confirm(\"This change will automatically set the Level to 4 and Status to Active. Are you sure?\")) {\r\n lease_save.Level = 4;\r\n lease_save.Status = LEASE_STATUS_ACTIVE;\r\n } else {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n lease_save.LeaseCropShares.length = 0; //reset and copy in the changed (or new) rows.\r\n $scope.leaseCropShareGrid.api.forEachNode(function (node) {\r\n node.data.LeaseId = lease_save.Id;\r\n lease_save.LeaseCropShares.push(node.data);\r\n });\r\n\r\n console.log(\" leasecropshares -- \");\r\n console.dir(lease_save.LeaseCropShares);\r\n console.dir($scope.leaseCropShareGrid.removedCropShares);\r\n\r\n //check if they changed the Operator - if so, we need to close this lease with today as the expiration and open a new one.\r\n if ($scope.pagemode == 'edit' && $scope.lease.Status == LEASE_STATUS_ACTIVE && $scope.lease.LeaseOperatorId != $scope.lease_modal.LeaseOperatorId) {\r\n if (confirm(\"Notice: Changing the Operator will CANCEL the existing lease and create a new one with the new Opeator. Are you sure?\")) {\r\n $scope.cancelExistingAndSaveNewLease(lease_save);\r\n return;\r\n } else {\r\n $scope.lease_modal.LeaseOperatorId = $scope.lease.LeaseOperatorId; //reset the operator and keep saving...\r\n }\r\n }\r\n\r\n var saveResult = LeasingService.saveLease(lease_save, $scope.leaseCropShareGrid.removedCropShares );\r\n\r\n saveResult.$promise.then(function (result) {\r\n\r\n //save our next lease number into the system property.\r\n if($scope.lease_modal.lastleasenumberproperty)\r\n {\r\n $scope.lease_modal.lastleasenumberproperty.PossibleValues++; //increment now that we did the save...\r\n LeasingService.saveLookupList($scope.lease_modal.lastleasenumberproperty);\r\n }\r\n\r\n $uibModalInstance.dismiss();\r\n $scope.saveLeaseCallback(saveResult);\r\n });\r\n });\r\n\r\n };\r\n\r\n // cancel the existing lease and save the new one with the new operator\r\n // cancel = set status to cancelled, expiration date to today, with old operator\r\n // new = clear the LeaseId, start date to today, expiration as before, with new operator\r\n $scope.cancelExistingAndSaveNewLease = function (lease_save) {\r\n lease_save.LeaseOperatorId = $scope.lease.LeaseOperatorId; // operator id as before\r\n lease_save.Status = LEASE_STATUS_CANCELLED;\r\n lease_save.LeaseEnd = moment().format();\r\n lease_save.StatusDate = $scope.currentDay;\r\n lease_save.StatusBy = $scope.currentUser;\r\n lease_save.LeaseNumber = $scope.lease.LeaseNumber; // make sure it is the original\r\n lease_save.TAAMSNumber = $scope.lease.TAAMSNumber; // original\r\n\r\n var saveResult = LeasingService.saveLease(lease_save);\r\n\r\n saveResult.$promise.then(function (result) {\r\n lease_save.Id = 0; // we want a new lease created, so remove our lease id\r\n lease_save.LeaseOperatorId = $scope.lease_modal.LeaseOperatorId; // the operator we changed to\r\n lease_save.Status = $scope.lease_modal.Status; // existing status (probably active)\r\n\r\n lease_save.LeaseEnd = $scope.lease_modal.LeaseEnd; // restore the original lease end date\r\n lease_save.LeaseStart = moment().format(); // start the lease today\r\n\r\n lease_save.LeaseNumber = $scope.lease_modal.LeaseNumber; // new - this is whatever they set.\r\n lease_save.TAAMSNumber = $scope.lease_modal.TAAMSNumber; // new - this is whatever they set.\r\n\r\n var newSaveResult = LeasingService.saveLease(lease_save);\r\n\r\n newSaveResult.$promise.then(function (result) {\r\n\r\n delete newSaveResult.LeaseCropPlans;\r\n\r\n //also save the crop plan from the old to the new lease (not inspections or production)\r\n var saved_cropplan = LeasingService.saveCropPlan(newSaveResult, $scope.lease.LeaseCropPlans);\r\n saved_cropplan.$promise.then(function(result){\r\n $uibModalInstance.dismiss();\r\n $scope.saveLeaseCallback(newSaveResult);\r\n }, function (result) {\r\n console.log(\"Something went wrong saving the crop plan.\");\r\n });\r\n\r\n\r\n }, function (result) {\r\n console.log(\"Something went wrong saving the new lease.\");\r\n });\r\n\r\n\r\n }, function (result) {\r\n\r\n console.log(\"Something went wrong saving the old lease.\");\r\n\r\n });\r\n\r\n };\r\n\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n $scope.dateOptions = {\r\n 'year-format': \"'yy'\",\r\n 'starting-day': 1\r\n };\r\n\r\n $scope.addOperatorPopup = function(){\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/add-operator-modal.html',\r\n controller: 'AddOperatorModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n }\r\n\r\n $scope.saveOperatorCallback = function () {\r\n $scope.operators = LeasingService.getOperators();\r\n\r\n $scope.operators.$promise.then(function () {\r\n $scope.lease_modal.LeaseOperator = $scope.operators[$scope.operators.length - 1];\r\n $scope.lease_modal.LeaseOperatorId = $scope.lease_modal.LeaseOperator.Id;\r\n\r\n $scope.operators.forEach(function (oper) {\r\n oper.SortName = (oper.Organization) ? oper.Organization : oper.FirstName + \" \" + oper.LastName;\r\n });\r\n\r\n });\r\n }\r\n\r\n //checks all the fields. returns \"true\" if verified, false if any missing\r\n $scope.verifyRequiredFields = function () {\r\n var requiredFields = [\"AllotmentName\", \"LeaseNumber\", \"LeaseOperatorId\", \"Status\", \"Level\", \"LeaseType\", \"LeaseStart\"]; //TODO: refactor all of this into a forms feature!\r\n\r\n console.dir($scope.lease_modal);\r\n\r\n var verified = true;\r\n\r\n requiredFields.forEach(function (field) {\r\n if (!$scope.lease_modal.hasOwnProperty([field]) || $scope.lease_modal[field] == null ) {\r\n console.log(\"missing field: \" + field);\r\n verified = false;\r\n }\r\n });\r\n\r\n return verified;\r\n\r\n };\r\n\r\n $scope.leaseNumberIsUnique = function(activeLeaseObjects) {\r\n var leaseNumber = $scope.lease_modal.LeaseNumber;\r\n var leaseCompare = -2;\r\n var isUnique = true;\r\n\r\n console.log(activeLeaseObjects.length);\r\n \r\n for (let i = 0; i < activeLeaseObjects.length; i++) {\r\n leaseCompare = leaseNumber.localeCompare(activeLeaseObjects[i].LeaseNumber);\r\n if (leaseCompare == 0) {\r\n isUnique = false;\r\n break;\r\n }\r\n }\r\n\r\n return isUnique;\r\n };\r\n }\r\n];\r\n\r\nexport default modal_lease;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {PERMITCONTACTS_DATASETID} from \"../../../../config\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar permit_contacts = ['$scope', '$route', '$routeParams', '$uibModal', '$location', '$window', '$rootScope', 'PermitService','GridService','DatasetService',\r\n function ($scope, $route, $routeParams, $uibModal, $location, $window, $rootScope,PermitService, GridService,DatasetService) {\r\n\r\n $rootScope.inModule = \"permits\";\r\n\r\n $scope.contactsdataset = DatasetService.getDataset(PERMITCONTACTS_DATASETID);\r\n\r\n $scope.contactsdataset.$promise.then(function () {\r\n\r\n //first, check permissions - we expect a Permission group to be set on dataset.Config.Permissions\r\n if(!$scope.contactsdataset.Config.Permissions || !$scope.contactsdataset.Config.Permissions.View || !$scope.contactsdataset.Config.Permissions.Edit){\r\n console.error(\"Configuration error - the administrator needs to configure the permissions for this dataset on Admin->Dataset->Config->Permissions\");\r\n throw (\"Failed to load\");\r\n }\r\n\r\n if (!$scope.Profile.hasRole($scope.contactsdataset.Config.Permissions.View) && !$scope.Profile.hasRole($scope.contactsdataset.Config.Permissions.Edit)){\r\n angular.rootScope.go(\"/unauthorized\");\r\n }\r\n\r\n $scope.permitsCanEdit = $scope.Profile.hasRole($scope.contactsdataset.Config.Permissions.Edit);\r\n //end permissions\r\n\r\n $scope.contacts = PermitService.getAllPersons();\r\n\r\n $scope.contacts.$promise.then(function () {\r\n $scope.contactsGrid.api.setRowData($scope.contacts);\r\n });\r\n\r\n $scope.ContactsDatasetColumnDefs = GridService.getAgColumnDefs($scope.contactsdataset);\r\n\r\n $scope.contactsGrid.columnDefs = angular.copy($scope.ContactsDatasetColumnDefs.HeaderFields);\r\n\r\n $scope.contactsGridDiv = document.querySelector('#contacts-grid');\r\n new Grid($scope.contactsGridDiv, $scope.contactsGrid);\r\n\r\n });\r\n\r\n $scope.deleteContact = function () {\r\n\r\n if (confirm(\"Are you sure you want to delete this person?\")) {\r\n var deleting = PermitService.deletePerson($scope.contactsGrid.selectedItems[0].Id);\r\n\r\n deleting.$promise.then(function () {\r\n $scope.saveContactCallback(); //refresh the contacts...\r\n }, function(data){\r\n alert(\"Error: \" + data.data.InnerException.ExceptionMessage)\r\n });\r\n }\r\n };\r\n\r\n $scope.openAddContact = function (params) {\r\n\r\n delete $scope.person_modal;\r\n\r\n if (params) {\r\n $scope.person_modal = params;\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/contacts/templates/add-person-modal.html',\r\n controller: 'AddPersonModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function(saved){\r\n $scope.saveContactCallback();\r\n });\r\n }\r\n\r\n $scope.contactsGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: [],\r\n rowData: null,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n $scope.contactsGrid.selectedItems = $scope.contactsGrid.api.getSelectedRows();\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n selectedItems: [],\r\n onRowDoubleClicked: function (params) {\r\n if ($scope.permitsCanEdit) {\r\n $scope.openAddContact(params.data);\r\n }\r\n },\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n }\r\n\r\n $scope.saveContactCallback = function () {\r\n $scope.contacts = PermitService.getAllPersons();\r\n\r\n $scope.contacts.$promise.then(function () {\r\n if ($scope.contactsGrid.api)\r\n $scope.contactsGrid.api.setRowData($scope.contacts);\r\n });\r\n\r\n }\r\n\r\n $scope.currentUser = $rootScope.Profile.Fullname;\r\n $scope.currentDay = moment().format();\r\n}];\r\n\r\nexport default permit_contacts;\r\n","import * as moment from 'moment';\r\n\r\nvar modal_add_production = ['$scope', '$uibModalInstance', 'LeasingService',\r\n function ($scope, $uibModalInstance, LeasingService) {\r\n\r\n $scope.header_message = \"Production\";\r\n\r\n $scope.saveResult = {};\r\n\r\n if (!$scope.production_modal) {\r\n $scope.production_modal = {\r\n IncomeDate: $scope.currentDay,\r\n IncomePostedBy: $scope.currentUser,\r\n LeaseYear: \"\" + moment().year(),\r\n };\r\n }\r\n\r\n $scope.save = function () {\r\n console.log(\"Inside add-production-modal.js, save...\");\r\n console.log(\"$scope.production_modal is next...\");\r\n console.dir($scope.production_modal);\r\n\r\n var strLeaseYear = $scope.production_modal.LeaseYear.toString();\r\n\r\n if (($scope.production_modal.LeaseYear === undefined) || ($scope.production_modal.LeaseYear.length < 1))\r\n {\r\n $scope.saveResult.error = \"Lease Year cannot be blank; it must be a 4-digit year.\"\r\n return;\r\n }\r\n else if (strLeaseYear.length !== 4)\r\n {\r\n $scope.saveResult.error = \"Lease Year has incorrect number of digits.\"\r\n return;\r\n }\r\n else if (($scope.production_modal.LeaseYear < 1990) || ($scope.production_modal.LeaseYear > 2050))\r\n {\r\n $scope.saveResult.error = \"Lease Year is outside of the accepted range (1990 - 2050).\"\r\n return;\r\n }\r\n\r\n if (($scope.production_modal.CropAcres != undefined) && (isNaN($scope.production_modal.CropAcres)))\r\n {\r\n $scope.saveResult.error = \"Crop Acres must be either blank, or a number.\"\r\n return;\r\n }\r\n\r\n $scope.production_modal.LeaseId = $scope.lease.Id;\r\n var save_result = LeasingService.saveProduction($scope.production_modal);\r\n\r\n save_result.$promise.then(function () {\r\n $scope.saveLeaseCallback(save_result);\r\n $uibModalInstance.dismiss();\r\n });\r\n\r\n };\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_add_production;\r\n","import * as angular from 'angular';\r\n\r\nvar modal_create_instrument = ['$scope', '$uibModalInstance', 'DatasetService', 'ProjectService', 'CommonService', '$rootScope',\r\n function ($scope, $uibModalInstance, DatasetService, ProjectService, CommonService, $rootScope) {\r\n\r\n $scope.header_message = \"Create new instrument\";\r\n\r\n $scope.instrument_row = {\r\n StatusId: 0,\r\n OwningDepartmentId: 1,\r\n };\r\n\r\n if($scope.viewInstrument)\r\n {\r\n $scope.header_message = \"Edit instrument: \" + $scope.viewInstrument.Name;\r\n $scope.instrument_row = $scope.viewInstrument;\r\n }\r\n\r\n\r\n $scope.InstrumentTypes = ProjectService.getInstrumentTypes();\r\n $scope.Departments = CommonService.getDepartments();\r\n $scope.RawProjects = ProjectService.getProjects();\r\n $scope.instrumentList = ProjectService.getInstruments();\r\n\r\n\r\n $scope.save = function(){\r\n console.log(\"Inside modal_create_instrument, save...\");\r\n console.log(\"$scope.instrument_row is next...\");\r\n console.dir($scope.instrument_row);\r\n console.dir($scope);\r\n\r\n // We set StatusText, so that the column filter would work properly, but we don't want to save it.\r\n $scope.instrument_row.StatusText = undefined;\r\n\r\n if (!$scope.instrument_row.InstrumentTypeId) {\r\n alert(\"You must select an Instrument Type!\");\r\n return;\r\n }\r\n else if ((typeof $scope.instrument_row.Id === 'undefined') || ($scope.instrument_row.Id === 0)) {\r\n // No Id, or Id = 0 means that we're adding a new instrument.\r\n // Verify that the instrument does not already exist, before adding it.\r\n if (CommonService.checkForDuplicateInstrument($scope.instrumentList, $scope.instrument_row)) {\r\n alert(\"An instrument with this name and serial number has already been entered!\");\r\n return;\r\n }\r\n }\r\n\r\n var saveRow = angular.copy($scope.instrument_row);\r\n\t\tconsole.log(\"saveRow is next...\");\r\n\t\tconsole.dir(saveRow);\r\n\r\n saveRow.AccuracyChecks = undefined;\r\n saveRow.OwningDepartment = undefined;\r\n var saved_instrument = ProjectService.saveInstrument($scope.project.Id, saveRow);\r\n saved_instrument.$promise.then(function () {\r\n $uibModalInstance.close(saved_instrument);\r\n }, function (error) {\r\n $scope.SaveMessage = \"Error: \" + error.data.ExceptionMessage;\r\n });\r\n };\r\n\r\n $scope.cancel = function(){\r\n $uibModalInstance.dismiss();\r\n };\r\n }\r\n];\r\n\r\nexport default modal_create_instrument;\r\n","//modal to bulk update RowQAStatus\r\nvar modal_bulk_rowqa_change = ['$scope', '$uibModal','$uibModalInstance',\r\n\r\n function ($scope, $uibModal, $uibModalInstance) {\r\n\r\n $scope.newRowQAStatus = {};\r\n\r\n $scope.save = function () {\r\n $scope.setSelectedBulkQAStatus($scope.newRowQAStatus.Id);\r\n $uibModalInstance.close('save');\r\n };\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_bulk_rowqa_change;\r\n","import * as angular from 'angular';\r\n\r\nvar modal_create_fisherman = ['$scope', '$uibModalInstance','ProjectService','ServiceUtilities','ConvertStatus',\r\n function ($scope, $uibModalInstance, ProjectService, ServiceUtilities, ConvertStatus){\r\n\r\n\t$scope.fishermenList = ProjectService.getFishermen();\r\n\r\n $scope.header_message = \"Create new fisherman\";\r\n\t$scope.saveResults = null;\r\n\r\n $scope.fisherman_row = {\r\n StatusId: 0,\r\n };\r\n\r\n\tconsole.log(\"$scope in ModalCreateFishermanCtrl is next...\");\r\n\t//console.dir($scope);\r\n\r\n if($scope.viewFisherman)\r\n {\r\n $scope.header_message = \"Edit fisherman: \" + $scope.viewFisherman.FullName;\r\n\t\tconsole.log(\"viewfisherman...\");\r\n\t\tconsole.dir($scope.viewFisherman);\r\n $scope.fisherman_row = $scope.viewFisherman;\r\n\r\n\t\tvar strInDate = $scope.viewFisherman.DateAdded;\r\n\t\tconsole.log(\"strInDate = \" + strInDate);\r\n\t\t$scope.viewFisherman.DateAdded = ServiceUtilities.extractDateFromString(strInDate);\r\n\t\tconsole.log(\"$scope.viewFisherman.DateAdded = \" + $scope.viewFisherman.DateAdded);\r\n\r\n\t\t$scope.fisherman_row.DateAdded = $scope.viewFisherman.DateAdded;\r\n\t\tconsole.log($scope.fisherman_row.DateAdded);\r\n\t\tconsole.log(\"$scope.fisherman_row.DateAdded = \" + $scope.fisherman_row.DateAdded);\r\n\r\n\t\t$scope.fisherman_row.StatusId = $scope.viewFisherman.StatusId;\r\n\t\t$scope.viewFisherman.Status = ConvertStatus.convertStatus($scope.viewFisherman.StatusId);\r\n\t\tconsole.log(\"$scope.viewFisherman.Status = \" + $scope.viewFisherman.Status);\r\n\r\n\t\t$scope.fisherman_row.OkToCallId = $scope.viewFisherman.OkToCallId;\r\n\t\t$scope.viewFisherman.OkToCall = ConvertStatus.convertOkToCall($scope.viewFisherman.OkToCallId);\r\n console.log(\"$scope.viewFisherman.OkToCall = \" + $scope.viewFisherman.OkToCall);\r\n\r\n if ((typeof $scope.fisherman_row.Aka !== 'undefined') && ($scope.fisherman_row.Aka !== null))\r\n $scope.fisherman_row.FullName = $scope.fisherman_row.FirstName + \" (\" + $scope.fisherman_row.Aka + \") \" + $scope.fisherman_row.LastName;\r\n else\r\n $scope.fisherman_row.FullName = $scope.fisherman_row.FirstName + \" \" + $scope.fisherman_row.LastName;\r\n }\r\n\telse\r\n\t{\r\n\t\t$scope.fisherman_row['DateAdded'] = new Date();\r\n\t}\r\n\r\n $scope.updateFullName = function () {\r\n if ((typeof $scope.fisherman_row.Aka !== 'undefined') && ($scope.fisherman_row.Aka !== null) && ($scope.fisherman_row.Aka !== ''))\r\n $scope.fisherman_row.FullName = $scope.fisherman_row.FirstName + \" (\" + $scope.fisherman_row.Aka + \") \" + $scope.fisherman_row.LastName;\r\n\t\telse if ((typeof $scope.fisherman_row.LastName !== 'undefined') && ($scope.fisherman_row.LastName !== null) && ($scope.fisherman_row.LastName !== ''))\r\n $scope.fisherman_row.FullName = $scope.fisherman_row.FirstName + \" \" + $scope.fisherman_row.LastName;\r\n else\r\n\t\t{\r\n //$scope.fisherman_row.FullName = $scope.fisherman_row.FirstName + \" \" + $scope.fisherman_row.LastName;\r\n $scope.fisherman_row.FullName = $scope.fisherman_row.FirstName;\r\n\t\t}\r\n }\r\n\r\n $scope.saveFisherman = function(){\r\n\t\tconsole.log(\"Inside modal-create-fisherman.js, saveFisherman...\");\r\n //console.log(\"$scope in saveFisherman is next...\");\r\n\t\t//console.dir($scope);\r\n\t\t//console.log(\"$scope.fisherman_row is next...\");\r\n\t\t//console.dir($scope.fisherman_row);\r\n\r\n\t\t$scope.fishermanSave = [];\r\n\r\n\t\tif ((!$scope.viewFisherman) || ($scope.viewFisherman === null))\r\n\t\t{\r\n\t\t\t//console.log(\"Either $scope.viewFisherman does not exist, or it is null...\");\r\n\t\t\t//console.log(\"$scope.fishermenList is next...\");\r\n\t\t\t//console.dir($scope.fishermenList);\r\n\r\n\t\t\t// First check if the fisherman is already in the database -- no duplicates allowed.//$rootScope.fishermenList\r\n\t\t\tangular.forEach($scope.fishermenList, function(fishermanInfo, index){\r\n\t\t\t\t// Verify whether or not the Aka is present\r\n\t\t\t\tif ((typeof $scope.fisherman_row.Aka !== 'undefined') && ($scope.fisherman_row.Aka !== null))\r\n\t\t\t\t{\r\n\t\t\t\t\t// AKA is present, so we need to check the First, AKA, and Last name.\r\n\t\t\t\t\tif (($scope.fisherman_row.FirstName === fishermanInfo.FirstName) && ($scope.fisherman_row.Aka === fishermanInfo.Aka) && ($scope.fisherman_row.LastName === fishermanInfo.LastName))\r\n\t\t\t\t\t\t$scope.fishermanSave.error = true;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t// AKA is missing, so we only check the First and Last names.\r\n\t\t\t\t\tif (($scope.fisherman_row.FirstName === fishermanInfo.FirstName) && ($scope.fisherman_row.LastName === fishermanInfo.LastName))\r\n\t\t\t\t\t\t$scope.fishermanSave.error = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar strInDate = ServiceUtilities.toExactISOString($scope.fisherman_row.DateAdded);\r\n\t\t\tconsole.log(\"strInDate = \" + strInDate);\r\n\t\t\t$scope.fisherman_row.DateAdded = ServiceUtilities.extractDateFromString(strInDate);\r\n\t\t\tconsole.log($scope.fisherman_row.DateAdded);\r\n\t\t}\r\n\r\n\t\tif (!$scope.fishermanSave.error)\r\n\t\t{\r\n\t\t\tif ((typeof $scope.fisherman_row.Aka !== 'undefined') && ($scope.fisherman_row.Aka !== null))\r\n\t\t\t\t$scope.fisherman_row.FullName = $scope.fisherman_row.FirstName + \" (\" + $scope.fisherman_row.Aka + \") \" + $scope.fisherman_row.LastName;\r\n\t\t\telse\r\n\t\t\t\t$scope.fisherman_row.FullName = $scope.fisherman_row.FirstName + \" \" + $scope.fisherman_row.LastName;\r\n\r\n\t\t\t//var strInDate = $scope.fisherman_row.DateAdded;\r\n\t\t\t//console.log(\"strInDate = \" + strInDate);\r\n\t\t\t//$scope.fisherman_row.DateAdded = ServiceUtilities.extractDateFromString(strInDate);\r\n\t\t\t//console.log($scope.fisherman_row.DateAdded);\r\n\r\n\t\t\t$scope.fisherman_row.Status = ConvertStatus.convertStatus($scope.fisherman_row.StatusId);\r\n\t\t\tconsole.log(\"$scope.fisherman_row.Status = \" + $scope.fisherman_row.Status);\r\n\r\n\t\t\t$scope.fisherman_row.OkToCall = ConvertStatus.convertOkToCall($scope.fisherman_row.OkToCallId);\r\n\t\t\tconsole.log(\"$scope.fisherman_row.OkToCall = \" + $scope.fisherman_row.OkToCall);\r\n\r\n\t\t\t//$scope.fisherman_row.Id = 0;\r\n\t\t\tconsole.log(\"$scope.fisherman_row is next...\");\r\n\t\t\tconsole.dir($scope.fisherman_row);\r\n\t\t\tvar saveRow = angular.copy($scope.fisherman_row);\r\n\t\t\tconsole.log(\"saveRow is next...\");\r\n\t\t\tconsole.dir(saveRow);\r\n\t\t\t$scope.saveResults = {};\r\n\t\t\tconsole.log(\"$scope.saveResults is next...\");\r\n\t\t\tconsole.dir($scope.saveResults);\r\n\r\n\t\t\tvar promise = ProjectService.saveFisherman($scope.project.Id, saveRow, $scope.saveResults);\r\n\t\t\tif (typeof promise !== 'undefined')\r\n\t\t\t{\r\n\t\t\t\tconsole.log(\"promise is next...\");\r\n\t\t\t\tconsole.dir(promise);\r\n\t\t\t\tpromise.$promise.then(function(){\r\n\t\t\t\t\t//$scope.reloadProject();\r\n\t\t\t\t\t//location.reload(true);\r\n $scope.postSaveFishermanUpdateGrid(promise);\r\n\t\t\t\t\t$uibModalInstance.dismiss();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n };\r\n\r\n $scope.cancel = function(){\r\n $uibModalInstance.dismiss();\r\n };\r\n }\r\n];\r\n\r\nexport default modal_create_fisherman;\r\n","export default \"\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n x\\r\\n

Failed to save confirmation

\\r\\n {{error}}\\r\\n
\\r\\n\\r\\n

Loading review information

\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n

TPO Permit Review Request - Confirmation Form

\\r\\n

Please submit the following form to confirm your review intent.

\\r\\n\\r\\n
\\r\\n
Permit Number:
{{data.Permit.PermitNumber}}
\\r\\n
Site Address:
{{data.Permit.SiteAddress}}
\\r\\n
Project Name:
{{data.Permit.ProjectName}}
\\r\\n
Project Scope:
{{data.Permit.ScopeOfWork}}
\\r\\n
Sent Date:
{{data.PermitEvent.EventDate | date}}
\\r\\n
Sent By:
{{data.ByUser.Fullname}}
\\r\\n
Request Type:
{{data.PermitEvent.ItemType}}
\\r\\n
Reference:
{{data.PermitEvent.Reference}}
\\r\\n
Date Requested:
{{data.PermitEvent.RequestDate | date}}
\\r\\n
Contact:
{{data.PermitEvent.ReferenceContact}} 
\\r\\n
Comments:
{{data.PermitEvent.Comments}}
\\r\\n
\\r\\n
\\r\\n\\r\\n
* Name:
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
* Email:
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
Comments:
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
* Confirmation:
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Success

\\r\\n {{savedMessage}}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Unauthorized access to this system is prohibited and will be prosecuted to the full extent of the law.
\\r\\n (C) 2014-2021 - Confederated Tribes of the Umatilla Indian Reservation\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\";","var modal_exportfile = ['$scope','DatasetService','$uibModalInstance','$window',\r\n\tfunction($scope, DatasetService,$uibModalInstance, $window) {\r\n\r\n\t\t//$scope.alerts\r\n\t\t$scope.Export = { Filename: \"Export.csv\" };\r\n\r\n\t\t$scope.ok = function(){\r\n\t\t\t$scope.downloadQuery = $scope.buildQuery();\r\n\t\t\t$scope.downloadQuery.criteria.Filename = $scope.Export.Filename;\r\n\t\t\tDatasetService.exportActivities($scope.downloadQuery);\r\n\r\n\t\t\t//$uibModalInstance.dismiss();\r\n\t\t};\r\n\r\n\t\t$scope.cancel = function(){\r\n\t\t\t$uibModalInstance.dismiss();\r\n\t\t};\r\n\t}\r\n];\r\n\r\nexport default modal_exportfile;\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJsb2dvdXQuY29tcG9uZW50LnNjc3MifQ== */\";","//subproject (crpp + habitat) factories and service\r\n\r\n//NB: this is not the final form - we want to create an actual\r\n// subproject feature in the system and refactor this\r\n/*\r\n* subprojects service (includes Project factory which is defined in projects-service.js)\r\n*/\r\nimport * as angular from 'angular';\r\n\r\nconst subproject_service = ['$q',\r\n 'ProjectSubprojects',\r\n 'SubprojectFiles',\r\n 'OlcSubprojectFiles',\r\n 'SaveCorrespondenceEvent',\r\n 'SaveOlcEvent',\r\n 'SaveHabitatItem',\r\n 'DeleteCorresEventFile',\r\n 'DeleteHabitatItemFile',\r\n 'DeleteHabSubprojectFile',\r\n 'SaveSubproject',\r\n 'SaveCrppSubproject',\r\n 'SaveHabSubproject',\r\n 'SaveOlcSubproject',\r\n 'GetSubprojects',\r\n 'GetHabSubproject',\r\n 'GetHabSubprojects',\r\n 'GetOlcSubprojects',\r\n 'QueryOlcSubprojectsForSearch',\r\n 'RemoveSubproject',\r\n 'RemoveHabSubproject',\r\n 'RemoveOlcSubproject',\r\n 'RemoveCorrespondenceEvent',\r\n 'RemoveOlcEvent',\r\n 'RemoveHabitatItem',\r\n 'MigrateOlcEvent',\r\n 'SaveFileItemId',\r\n\r\n function ($q,\r\n ProjectSubprojects,\r\n SubprojectFiles,\r\n OlcSubprojectFiles,\r\n SaveCorrespondenceEvent,\r\n SaveOlcEvent,\r\n SaveHabitatItem,\r\n DeleteCorresEventFile,\r\n DeleteHabitatItemFile,\r\n DeleteHabSubprojectFile,\r\n SaveSubproject,\r\n SaveCrppSubproject,\r\n SaveHabSubproject,\r\n SaveOlcSubproject,\r\n GetSubprojects,\r\n GetHabSubproject,\r\n GetHabSubprojects,\r\n GetOlcSubprojects,\r\n QueryOlcSubprojectsForSearch,\r\n RemoveSubproject,\r\n RemoveHabSubproject,\r\n RemoveOlcSubproject,\r\n RemoveCorrespondenceEvent,\r\n RemoveOlcEvent,\r\n RemoveHabitatItem,\r\n MigrateOlcEvent,\r\n SaveFileItemId) {\r\n\r\n var service = {\r\n\r\n //we'd like to move this subproject stuff all out soon\r\n subproject: null,\r\n subprojects: null,\r\n subprojectType: null,\r\n\r\n clearSubproject: function () {\r\n service.subproject = null;\r\n },\r\n clearSubprojects: function () {\r\n service.subprojects = null;\r\n },\r\n getSubproject: function (id) {\r\n console.log(\"Inside subproject-service, getSubproject...\");\r\n if (service.subproject && service.subproject.Id === id)\r\n return service.subproject;\r\n },\r\n setServiceSubprojectType: function (spType) {\r\n console.log(\"Inside subproject-service, setServiceSubprojectType, spType = \" + spType);\r\n service.subprojectType = spType;\r\n console.log(\"service.subprojectType = \" + service.subprojectType);\r\n },\r\n getSubprojects: function () {\r\n return GetSubprojects.query();\r\n },\r\n getHabSubproject: function (id) {\r\n console.log(\"Inside subproject-service, getHabSubproject...\");\r\n return GetHabSubproject.query({id: id});\r\n },\r\n getHabSubprojects: function ()\r\n //getHabSubprojects: function(id)\r\n {\r\n console.log(\"Inside subproject-service, getHabSubprojects\");\r\n //console.log(\"id = \" + id);\r\n return GetHabSubprojects.query();\r\n //return GetHabSubprojects.query({id: id});\r\n },\r\n getOlcSubprojects: function () {\r\n console.log(\"Inside subproject-service, getOlcSubprojects\");\r\n //console.log(\"id = \" + id);\r\n return GetOlcSubprojects.query();\r\n },\r\n getOlcSubprojectsForSearch: function (datasetId) {\r\n console.log(\"Inside subproject-service, getOlcSubprojectsForSearch\");\r\n //console.log(\"id = \" + id);\r\n var searchCriteria = {\r\n DatasetId: datasetId\r\n }\r\n return QueryOlcSubprojectsForSearch.save(searchCriteria);\r\n },\r\n saveSubproject: function (projectId, subproject, saveResults) {\r\n console.log(\"Inside subproject-service, saveSubproject...\");\r\n saveResults.saving = true;\r\n console.log(\"saveResults.saving = \" + saveResults.saving);\r\n\r\n return SaveSubproject.save({ProjectId: projectId, Subproject: subproject});\r\n },\r\n saveCrppSubproject: function (projectId, subproject, saveResults) {\r\n console.log(\"Inside subproject-service, saveCrppSubproject...\");\r\n saveResults.saving = true;\r\n console.log(\"saveResults.saving = \" + saveResults.saving);\r\n\r\n return SaveSubproject.save({ProjectId: projectId, Subproject: subproject});\r\n },\r\n saveHabSubproject: function (projectId, subproject, saveResults) {\r\n console.log(\"Inside services.js, saveHabSubproject...\");\r\n saveResults.saving = true;\r\n console.log(\"saveResults.saving = \" + saveResults.saving);\r\n\r\n return SaveHabSubproject.save({ProjectId: projectId, Subproject: subproject});\r\n },\r\n saveOlcSubproject: function (projectId, subproject, saveResults) {\r\n console.log(\"Inside services.js, saveOlcSubproject...\");\r\n saveResults.saving = true;\r\n console.log(\"saveResults.saving = \" + saveResults.saving);\r\n\r\n return SaveOlcSubproject.save({ProjectId: projectId, Subproject: subproject});\r\n },\r\n removeSubproject: function (projectId, subprojectId) {\r\n return RemoveSubproject.save({ProjectId: projectId, SubprojectId: subprojectId});\r\n },\r\n //removeHabSubproject: function(projectId, subprojectId){\r\n removeHabSubproject: function (projectId, subprojectId, locationId) {\r\n //return RemoveHabSubproject.save({ProjectId: projectId, SubprojectId: subprojectId});\r\n return RemoveHabSubproject.save({ProjectId: projectId, SubprojectId: subprojectId, LocationId: locationId});\r\n },\r\n removeOlcSubproject: function (projectId, subprojectId) {\r\n return RemoveOlcSubproject.save({ProjectId: projectId, SubprojectId: subprojectId});\r\n },\r\n //removeCorrespondenceEvent: function(projectId, subprojectId, correspondenceEventId){\r\n removeCorrespondenceEvent: function (projectId, subprojectId, correspondenceEventId, datastoreTablePrefix) {\r\n console.log(\"Inside removeCorrespondenceEvent...\");\r\n console.log(\"projectId = \" + projectId + \", subprojectId = \" + subprojectId + \", correspondenceEventId = \" + correspondenceEventId + \", datastoreTablePrefix = \" + datastoreTablePrefix);\r\n //return RemoveCorrespondenceEvent.save({ProjectId: projectId, SubprojectId: subprojectId, CorrespondenceEventId: correspondenceEventId});\r\n return RemoveCorrespondenceEvent.save({\r\n ProjectId: projectId,\r\n SubprojectId: subprojectId,\r\n CorrespondenceEventId: correspondenceEventId,\r\n DatastoreTablePrefix: datastoreTablePrefix\r\n });\r\n },\r\n removeOlcEvent: function (projectId, subprojectId, olcEventId, datastoreTablePrefix) {\r\n console.log(\"Inside removeOlcEvent...\");\r\n console.log(\"projectId = \" + projectId + \", subprojectId = \" + subprojectId + \", olcEventId = \" + olcEventId + \", datastoreTablePrefix = \" + datastoreTablePrefix);\r\n return RemoveOlcEvent.save({ProjectId: projectId, SubprojectId: subprojectId, OlcEventId: olcEventId});\r\n },\r\n removeHabitatItem: function (projectId, subprojectId, habitatItemId, datastoreTablePrefix) {\r\n console.log(\"Inside removeHabitatItem...\");\r\n console.log(\"projectId = \" + projectId + \", subprojectId = \" + subprojectId + \", habitatItemId = \" + habitatItemId + \", datastoreTablePrefix = \" + datastoreTablePrefix);\r\n return RemoveHabitatItem.save({\r\n ProjectId: projectId,\r\n SubprojectId: subprojectId,\r\n HabitatItemId: habitatItemId,\r\n DatastoreTablePrefix: datastoreTablePrefix\r\n });\r\n },\r\n saveCorrespondenceEvent: function (projectId, subprojectId, ce) {\r\n console.log(\"Inside saveCorrespondenceEvent...\")\r\n console.log(\"projectId = \" + projectId);\r\n console.log(\"subprojectId = \" + subprojectId);\r\n console.log(\"ce is next...\");\r\n console.dir(ce);\r\n return SaveCorrespondenceEvent.save({\r\n ProjectId: projectId,\r\n SubprojectId: subprojectId,\r\n CorrespondenceEvent: ce\r\n });\r\n },\r\n saveOlcEvent: function (projectId, subprojectId, olcEvent) {\r\n console.log(\"Inside saveOlcEvent...\")\r\n console.log(\"projectId = \" + projectId);\r\n console.log(\"subprojectId = \" + subprojectId);\r\n console.log(\"olcEvent is next...\");\r\n console.dir(olcEvent);\r\n return SaveOlcEvent.save({ProjectId: projectId, SubprojectId: subprojectId, OlcEvent: olcEvent});\r\n },\r\n saveHabitatItem: function (projectId, subprojectId, hi) {\r\n console.log(\"Inside saveHabitatItem...\")\r\n console.log(\"projectId = \" + projectId);\r\n console.log(\"subprojectId = \" + subprojectId);\r\n console.log(\"hi is next...\");\r\n console.dir(hi);\r\n return SaveHabitatItem.save({ProjectId: projectId, SubprojectId: subprojectId, HabitatItem: hi});\r\n },\r\n deleteCorresEventFile: function (projectId, subprojectId, ceId, file) {\r\n console.log(\"Inside deleteCorresEventFile\");\r\n console.log(\"SubprojectId = \" + subprojectId + \", ceId = \" + ceId + \" attempting to delete file...\");\r\n console.dir(file);\r\n //return DeleteFile.save({ProjectId: projectId, File: file});\r\n return DeleteCorresEventFile.save({ProjectId: projectId, SubprojectId: subprojectId, CeId: ceId, File: file});\r\n },\r\n deleteHabitatItemFile: function (projectId, subprojectId, hiId, file) {\r\n console.log(\"Inside deleteHabitatItemFile\");\r\n console.log(\"ProjectId = \" + projectId + \", SubprojectId = \" + subprojectId + \", hiId = \" + hiId + \" attempting to delete file...\");\r\n console.dir(file);\r\n //return DeleteFile.save({ProjectId: projectId, File: file});\r\n return DeleteHabitatItemFile.save({ProjectId: projectId, SubprojectId: subprojectId, HiId: hiId, File: file});\r\n },\r\n deleteHabSubprojectFile: function (projectId, subprojectId, file) {\r\n console.log(\"Inside deleteHabSubprojectFile\");\r\n console.log(\"SubprojectId = \" + subprojectId + \", attempting to delete file...\");\r\n console.dir(file);\r\n return DeleteHabSubprojectFile.save({ProjectId: projectId, SubprojectId: subprojectId, File: file});\r\n },\r\n getSubprojectFiles: function (projectId) {\r\n console.log(\"Inside getSubprojectFiles...\");\r\n console.log(\"projectId = \" + projectId);\r\n return SubprojectFiles.query({id: projectId});\r\n },\r\n getOlcSubprojectFiles: function (projectId) {\r\n console.log(\"Inside getOlcSubprojectFiles...\");\r\n console.log(\"projectId = \" + projectId);\r\n return OlcSubprojectFiles.query({id: projectId});\r\n },\r\n //NB: why is this .save()? -- to get a POST instead of a GET?\r\n getProjectSubprojects: function (projectId) {\r\n console.log(\"Inside getProjectSubprojects, projectId = \" + projectId);\r\n //this.getProject(projectId); //set our local project to the one selected\r\n return ProjectSubprojects.save({ProjectId: projectId});\r\n },\r\n migrateOlcEvent: function (projectId, subprojectId, eventRow, fileNames) {\r\n console.log(\"Inside migrateOlcEvent...\");\r\n console.log(\"projectId = \" + projectId);\r\n console.log(\"subprojectId = \" + subprojectId);\r\n //console.log(\"eventRow is next...\");\r\n //console.dir(eventRow);\r\n\r\n //this.getProject(projectId); //set our local project to the one selected\r\n return MigrateOlcEvent.save({\r\n ProjectId: projectId,\r\n SubprojectId: subprojectId,\r\n OlcEvent: eventRow,\r\n FileNames: fileNames\r\n });\r\n },\r\n /*\r\n saveOlcEvent: function (projectId, subprojectId, olcEvent) {\r\n console.log(\"Inside saveOlcEvent...\")\r\n console.log(\"projectId = \" + projectId);\r\n console.log(\"subprojectId = \" + subprojectId);\r\n console.log(\"olcEvent is next...\");\r\n console.dir(olcEvent);\r\n return SaveOlcEvent.save({ ProjectId: projectId, SubprojectId: subprojectId, OlcEvent: olcEvent });\r\n },\r\n */\r\n saveFileItemId: function (projectId, subprojectId, itemId, fileName) {\r\n console.log(\"Inside saveFileItemId...\");\r\n console.log(\"projectid = \" + projectId);\r\n console.log(\"subprojectId = \" + subprojectId);\r\n console.log(\"itemId = \" + itemId);\r\n console.log(\"fileName = \" + fileName);\r\n\r\n return SaveFileItemId.save({\r\n ProjectId: projectId,\r\n SubprojectId: subprojectId,\r\n ItemId: itemId,\r\n FileName: fileName\r\n });\r\n }\r\n\r\n };\r\n\r\n return service;\r\n }\r\n];export default subproject_service;\r\n\r\n\r\n","import * as angular from 'angular';\r\nimport {makeObjectsFromValues} from \"../../../common/common-functions\";\r\nimport {DATASTORE_ACTIVITYSYSTEMFIELDS} from \"../../../../config\";\r\n\r\nvar admin_new_dataset = ['$scope', '$uibModal', 'DatasetService', 'AdminService', '$routeParams','ProjectService',\r\n function ($scope, $uibModal, DatasetService, AdminService, $routeParams, ProjectService) {\r\n\r\n $scope.datastore = DatasetService.getDatastore($routeParams.Id);\r\n $scope.projects = ProjectService.getProjects();\r\n $scope.datasets = DatasetService.getDatasets();\r\n\r\n $scope.projectsWithThisDatasetList = [];\r\n $scope.availableProjectList = [];\r\n\r\n $scope.datastoreFields = null; //the fields we'll load once the datastore is loaded\r\n\r\n $scope.SelectedProject = null;\r\n\r\n $scope.DefaultExcludeFields = [\"Row QA Status\", \"Instrument\", \"Activity Description\", \"Accuracy Check\", \"Post Accuracy Check\", \"Reading Timezone\"];\r\n\r\n $scope.datastore.$promise.then( function () {\r\n if ($scope.datastore.Id > 0) {\r\n $scope.datastoreFields = AdminService.getMasterFields($scope.datastore.Id);\r\n\r\n $scope.datastoreFields.$promise.then(function () {\r\n if (!$scope.datastoreFields)\r\n return;\r\n\r\n angular.forEach($scope.datastoreFields, function (field) {\r\n //parseField(field, $scope);\r\n if (field.PossibleValues)\r\n field.Values = makeObjectsFromValues($scope.datastore.Id + field.DbColumnName, field.PossibleValues);\r\n\r\n });\r\n\r\n //let's also load the system fields if it isn't a \"single\" type table\r\n if($scope.datastore.TableType != 'Single' && $scope.datastore.TableType != 'Single Multi-project'){\r\n var systemFields = AdminService.getMasterFields(DATASTORE_ACTIVITYSYSTEMFIELDS);\r\n systemFields.$promise.then(function () {\r\n systemFields.forEach(function (systemfield) {\r\n if (systemfield.PossibleValues)\r\n systemfield.Values = makeObjectsFromValues(DATASTORE_ACTIVITYSYSTEMFIELDS + systemfield.DbColumnName, systemfield.PossibleValues);\r\n\r\n if ($scope.DefaultExcludeFields.contains(systemfield.Name))\r\n systemfield.exclude = true;\r\n\r\n $scope.datastoreFields.push(systemfield);\r\n })\r\n });\r\n }\r\n });\r\n\r\n }\r\n });\r\n\r\n\r\n $scope.projects.$promise.then(function () {\r\n if ((typeof $scope.projects === 'undefined') || ($scope.projects === null))\r\n return;\r\n else if ((typeof $scope.projects[0] === 'undefined') || ($scope.projects[0] === null))\r\n return;\r\n\r\n // First, get the list of projects that have a dataset from this datastore.\r\n $scope.datasets.forEach(function (dataset) {\r\n if (dataset.DatastoreId === $scope.datastore.Id)\r\n $scope.projectsWithThisDatasetList.push(dataset.ProjectId);\r\n });\r\n\r\n // Next, build our list of available projects, that DO NOT have this dataset.\r\n $scope.projects.forEach(function (project) {\r\n var DoesProjectHaveThisDataset = false;\r\n $scope.projectsWithThisDatasetList.forEach(function (p) {\r\n if (project.Id === p)\r\n DoesProjectHaveThisDataset = true;\r\n });\r\n if (!DoesProjectHaveThisDataset)\r\n $scope.availableProjectList.push(project);\r\n\r\n });\r\n\r\n // Now set the list that we show in the combo-box to our list of available projects.\r\n $scope.projects = $scope.availableProjectList;\r\n });\r\n\r\n $scope.addDatasetToProject = function () {\r\n console.log(\"Inside admin_new_dataset, addDatasetToProject...\");\r\n console.log(\"$scope is next...\");\r\n console.dir($scope);\r\n\r\n if (!$scope.SelectedProject)\r\n {\r\n alert(\"Please select a project to add this dataset to.\");\r\n return;\r\n }\r\n\r\n var projectIndex = $scope.projects.indexOf(parseInt($scope.SelectedProject));\r\n console.log(\"projectIndex = \" + projectIndex);\r\n\r\n console.log(\" The selected project: \" + $scope.SelectedProject);\r\n $scope.fieldsToSave = [];\r\n\r\n //whip up an array with the fields we want to have in our new dataset.\r\n $scope.datastoreFields.forEach(function (item, index) {\r\n if (!item.exclude)\r\n $scope.fieldsToSave.push(item);\r\n });\r\n\r\n console.dir($scope.fieldsToSave);\r\n\r\n var promise = DatasetService.addDatasetToProject($scope.datastore.Id, $scope.SelectedProject, $scope.fieldsToSave);\r\n\r\n promise.$promise.then(function () {\r\n console.log(\"Hey we're back! Success!\")\r\n console.dir(promise);\r\n angular.rootScope.go(\"/admin\");\r\n });\r\n }\r\n\r\n $scope.selectField = function (field) {\r\n $scope.SelectedField = field;\r\n };\r\n\r\n $scope.removeField = function (field) {\r\n //console.dir(field);\r\n field.exclude = !field.exclude;\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default admin_new_dataset;\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport {RouterModule, Routes} from \"@angular/router\";\r\nimport {LoginComponent} from \"../login/login.component\";\r\nimport {LogoutComponent} from \"../logout/logout.component\";\r\n\r\nconst routes: Routes = [\r\n {path: 'login', component: LoginComponent},\r\n {path: 'logout', component: LogoutComponent}\r\n]\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n RouterModule.forRoot(routes)\r\n ],\r\n exports: [RouterModule]\r\n})\r\nexport class LoginRoutingModule { }\r\n","import * as angular from 'angular';\r\n\r\n\r\nvar lookup_lists = ['$scope', '$route', '$routeParams', '$uibModal', '$location', '$window', '$rootScope', 'LeasingService',\r\n\r\n function ($scope, $route, $routeParams, $uibModal, $location, $window, $rootScope, LeasingService) {\r\n\r\n $rootScope.inModule = \"leasing\";\r\n\r\n if (!$scope.Profile.hasRole(\"Leasing\"))\r\n angular.rootScope.go(\"/unauthorized\");\r\n\r\n $scope.lookup_lists = LeasingService.getLookupLists();\r\n\r\n $scope.selectLookupList = function (id) {\r\n $scope.lookup_lists.forEach(function (lookup_list) {\r\n if (lookup_list.Id == id) {\r\n lookup_list.DisplayListValues = $scope.makeList(lookup_list.ListValues);\r\n $scope.selectedLookup = lookup_list;\r\n }\r\n\r\n });\r\n }\r\n\r\n $scope.makeList = function (array_in) {\r\n var result = '';\r\n if (array_in != null) {\r\n array_in.forEach(function (item) {\r\n result += item + \"\\n\";\r\n })\r\n } else {\r\n console.log(\"no items in lookup list\");\r\n }\r\n\r\n\r\n return result;\r\n }\r\n\r\n $scope.save = function () {\r\n\r\n //do some cleanup of the incoming data\r\n $scope.selectedLookup.DisplayListValues = $scope.selectedLookup.DisplayListValues.replace(/,|\"/g, \"\");\r\n $scope.selectedLookup.ListValues = $scope.selectedLookup.DisplayListValues.trim().split('\\n');\r\n\r\n for (let i = 0; i < $scope.selectedLookup.ListValues.length; i++) {\r\n $scope.selectedLookup.ListValues[i] = $scope.selectedLookup.ListValues[i].trim();\r\n }\r\n\r\n $scope.selectedLookup.DisplayListValues = $scope.makeList($scope.selectedLookup.ListValues);\r\n $scope.selectedLookup.PossibleValues = JSON.stringify($scope.selectedLookup.ListValues);\r\n\r\n let results = LeasingService.saveLookupList($scope.selectedLookup);\r\n\r\n /*\r\n results.$promise.then(function (the_result) {\r\n console.dir(the_result);\r\n console.dir(results);\r\n });\r\n */\r\n }\r\n\r\n\r\n\r\n}];\r\n\r\nexport default lookup_lists;\r\n","/*\r\n* This lets you edit possiblevalues for select/multiselct fields in your dataset...\r\n*/\r\nimport * as angular from 'angular';\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\n\r\nvar project_lookups = ['$scope', '$routeParams','GridService', 'ProjectService', 'DatasetService', 'CommonService', 'UserService',\r\n '$rootScope', '$uibModal', '$sce', '$window', '$http',\r\n 'ServiceUtilities', '$location', '$anchorScroll',\r\n function (scope, routeParams, GridService, ProjectService, DatasetService, CommonService, UserService, $rootScope, $uibModal, $sce, $window, $http,\r\n ServiceUtilities, $location, $anchorScroll) {\r\n\t\t//console.log(\"Inside controllers.js, projectDatasetsController...\");\r\n\t\t//console.log(\"routeParams.Id = \" + routeParams.Id);\r\n\r\n scope.OnTab = \"Lookups\";\r\n\r\n scope.project = ProjectService.getProject(routeParams.Id);\r\n scope.selectedLookup = null;\r\n\r\n //to support metadata lookup editing\r\n scope.metadataentities = CommonService.getMetadataEntities();\r\n scope.selectedEntity = null;\r\n\r\n scope.project.$promise.then(function () {\r\n //console.log(\"project done loading\")\r\n try {\r\n /*\r\n //note: this is already done now in ProjectService.getProject\r\n if(typeof scope.project.Config == 'string')\r\n scope.project.Config = angular.fromJson(scope.project.Config);\r\n else\r\n scope.project.Config = {}\r\n */\r\n if (scope.project.Config.hasOwnProperty('Lookups')) {\r\n scope.lookupTables = scope.project.Config.Lookups;\r\n if (scope.lookupTables.length > 0) {\r\n scope.selectLookup(scope.lookupTables[0]);\r\n }\r\n //console.log(\"scope.lookupTables is next...\");\r\n //console.dir(scope.lookupTables);\r\n }\r\n\r\n } catch (e) {\r\n console.error(\"config could not be parsed for project: \" + scope.project.Config);\r\n console.dir(e);\r\n }\r\n\r\n });\r\n\r\n scope.deselectAll = function () {\r\n scope.dataGridOptions.api.setFilterModel(null)\r\n scope.dataGridOptions.api.onFilterChanged();\r\n scope.dataGridOptions.api.deselectAll();\r\n }\r\n\r\n scope.selectLookup = function (lookup) {\r\n console.log(\"selected lookup ------\");\r\n console.dir(lookup);\r\n\r\n scope.selectedLookup = lookup;\r\n\r\n if (lookup.hasOwnProperty('Type') && lookup.Type == \"Metafields\") {\r\n scope.metadataentities.forEach(function (entity) {\r\n if (entity.Id == lookup.Id) {\r\n scope.selectedEntity = entity;\r\n //console.log(\"selected entity = \");\r\n //console.dir(entity);\r\n\r\n }\r\n });\r\n }\r\n\r\n if (scope.project.Config.hasOwnProperty('ShowDelete')) {\r\n scope.ShowDelete = scope.project.Config.ShowDelete;\r\n\r\n console.log(\"ShowDelete = \" + ((scope.dataGridOptions.selectedItems.length > 0) && (scope.ShowDelete == true)));\r\n\r\n //if (scope.HideItems.contains(\"delete\"))\r\n // scope.HideDelete = true;\r\n }\r\n\r\n //if a lookup doesn't have a dataset then don't try to load up the grid.\r\n if (lookup.DatasetId == null)\r\n return;\r\n\r\n scope.lookupItems = CommonService.getLookupItems(lookup);\r\n\r\n scope.selectedLookup.Dataset = DatasetService.getDataset(scope.selectedLookup.DatasetId);\r\n\r\n scope.selectedLookup.Dataset.$promise.then(function () {\r\n scope.dataGridOptions.columnDefs = null;\r\n //scope.dataGridOptions.columnDefs = GridService.getAgColumnDefs(scope.selectedLookup.Dataset).HeaderFields;\r\n\r\n console.log(\"HeaderFields.length = \" + (GridService.getAgColumnDefs(scope.selectedLookup.Dataset).HeaderFields.length));\r\n //console.dir(GridService.getAgColumnDefs(scope.selectedLookup.Dataset).HeaderFields);\r\n console.log(\"DetailFields.length = \" + (GridService.getAgColumnDefs(scope.selectedLookup.Dataset).DetailFields.length));\r\n //console.dir(GridService.getAgColumnDefs(scope.selectedLookup.Dataset).DetailFields.length);\r\n\r\n if (GridService.getAgColumnDefs(scope.selectedLookup.Dataset).HeaderFields.length > 0)\r\n {\r\n scope.dataGridOptions.columnDefs = GridService.getAgColumnDefs(scope.selectedLookup.Dataset).HeaderFields;\r\n }\r\n\r\n if (GridService.getAgColumnDefs(scope.selectedLookup.Dataset).DetailFields.length > 0)\r\n {\r\n scope.dataGridOptions.columnDefs = GridService.getAgColumnDefs(scope.selectedLookup.Dataset).DetailFields;\r\n }\r\n\r\n\r\n scope.dataGridOptions.columnDefs.unshift({ field: 'EditLink', headerName: '', cellRenderer: EditLinkTemplate, width: 50, menuTabs: [], hide: true }); //alwaysShowField: true, ?\r\n\r\n scope.lookupItems.$promise.then(function () {\r\n if (!scope.datatab_ag_grid)\r\n scope.activateDataGrid();\r\n else {\r\n scope.deselectAll();\r\n scope.dataGridOptions.api.setRowData(scope.lookupItems);\r\n scope.dataGridOptions.api.setColumnDefs(scope.dataGridOptions.columnDefs); //redraws everything\r\n }\r\n\r\n //unhide the edit link column if they are owner/admin.\r\n if ($rootScope.Profile.canAdminProject(scope.project)) {\r\n scope.dataGridOptions.columnApi.setColumnVisible(\"EditLink\", true);\r\n scope.dataGridOptions.api.refreshHeader();\r\n } else {\r\n console.log(\"canAdminProject = false - hiding editlink\")\r\n }\r\n });\r\n\r\n\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n var EditLinkTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.openEditModal(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n //div.appendChild(document.createTextNode(\" | \"));\r\n\r\n /*var delBtn = document.createElement('a'); delBtn.href = '#'; delBtn.innerHTML = 'Delete';\r\n delBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.removeCharacteristic(param.data);\r\n });\r\n div.appendChild(delBtn);\r\n */\r\n\r\n return div;\r\n };\r\n\r\n //datasets tab grid\r\n scope.dataGridOptions = {\r\n //data: 'datasets',\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: [],\r\n rowSelection: 'multiple',\r\n onSelectionChanged: function (params) {\r\n scope.dataGridOptions.selectedItems = scope.dataGridOptions.api.getSelectedRows();\r\n scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n console.dir(params);\r\n },\r\n selectedItems: [],\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n //note: the template links other controllers than this one, for example in admin-metafields.js\r\n scope.activateDataGrid = function () {\r\n console.log(\"activating local data grid\");\r\n var ag_grid_div = document.querySelector('#lookups-grid') as HTMLElement; //get the container id...\r\n scope.datatab_ag_grid = new Grid(ag_grid_div, scope.dataGridOptions); //bind the grid to it.\r\n scope.dataGridOptions.api.showLoadingOverlay(); //show loading...\r\n\r\n scope.dataGridOptions.api.setRowData(scope.lookupItems);\r\n\r\n if ($rootScope.Profile.canEdit(scope.project)) {\r\n scope.dataGridOptions.columnApi.setColumnVisible(\"EditLink\", true);\r\n scope.dataGridOptions.api.refreshHeader();\r\n }\r\n };\r\n\r\n scope.openEditModal = function (a_selection) {\r\n scope.SaveMessage = null;\r\n scope.row = angular.copy(a_selection);\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/modal-edit-lookup-item.html',\r\n controller: 'ModalEditLookupItemCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_item) {\r\n //replace that item in the grid with the one we got back\r\n var found = false;\r\n\r\n scope.lookupItems.forEach(function (existing, index) {\r\n if (existing.Id == saved_item.Id) {\r\n console.dir(\"found field to replace : \" + existing.Id);\r\n scope.lookupItems[index] = saved_item;\r\n found = true;\r\n }\r\n });\r\n\r\n if (!found)\r\n scope.lookupItems.push(saved_item);\r\n\r\n scope.deselectAll();\r\n scope.dataGridOptions.api.setRowData(scope.lookupItems);\r\n scope.SaveMessage = \"Success.\";\r\n\r\n });\r\n };\r\n\r\n scope.addItem = function (a_selection) {\r\n scope.SaveMessage = null;\r\n scope.row = { };\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/projects/components/project-detail/templates/modal-edit-lookup-item.html',\r\n controller: 'ModalEditLookupItemCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_item) {\r\n //add that item in the grid with the one we got back\r\n scope.lookupItems.push(saved_item);\r\n scope.deselectAll();\r\n scope.dataGridOptions.api.setRowData(scope.lookupItems);\r\n scope.SaveMessage = \"Success.\";\r\n });\r\n\t\t};\r\n\r\n\t\t//Delete\r\n\t\tscope.deleteItems = function () {\r\n\t\t\tvar lookupId = scope.selectedLookup.Id;\r\n\t\t\tscope.dataGridOptions.selectedItems.forEach(function (item) {\r\n\t\t\t\tvar delete_item = CommonService.deleteLookupItem(item, lookupId);\r\n\t\t\t\tdelete_item.$promise.then(function () {\r\n\t\t\t\t\tscope.lookupItems.forEach(function (existing, index) {\r\n\t\t\t\t\t\tif (existing.Id == item.Id) {\r\n\t\t\t\t\t\t\tscope.lookupItems.splice(index);\r\n\t\t\t\t\t\t\tscope.dataGridOptions.api.setRowData(scope.lookupItems);\r\n\t\t\t\t\t\t\tscope.selectLookup(scope.selectedLookup);\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}), function () {\r\n\t\t\t\t\t\talert(\"There was a problem deleting item(s) from \" + scope.selectedLookup.Label + \". Please contact CDMS support.\" );\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t}, function () {\r\n\t\t\t\tconsole.log(\"something went wrong\");\r\n\t\t\t});\r\n\r\n\t\t};\r\n\r\n\r\n\r\n scope.deleteItems = function (a_selection) {\r\n\r\n };\r\n\r\n scope.removeCharacteristic = function (characteristic) {\r\n scope.viewCharacteristic = characteristic;\r\n if (!scope.viewCharacteristic)\r\n return;\r\n\r\n if (confirm(\"Are you sure you want to remove this characteristic from this Project?\")) {\r\n var promise = ProjectService.removeCharacteristic(scope.viewCharacteristic.Id);\r\n\r\n promise.$promise.then(function () {\r\n scope.project.Charactersitics.forEach(function (item, index) {\r\n if (item.Id === scope.viewCharacteristic.Id) {\r\n scope.project.Charactersitics.splice(index, 1);\r\n scope.instrGridOptions.api.setRowData(scope.project.Charactersitics);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n //handle favorite toggle\r\n scope.isFavorite = $rootScope.Profile.isProjectFavorite(routeParams.Id);\r\n scope.toggleFavorite = function () {\r\n UserService.toggleFavoriteProject(scope, $rootScope);\r\n }\r\n\r\n }\r\n\r\n];\r\n\r\n\r\nexport default project_lookups;\r\n\r\n\r\n\r\n","export default \"\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n

Welcome to the CTUIR CDMS

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n x\\r\\n

Failed to login

\\r\\n {{error}}\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\tIf you are an authorized user, please login:\\r\\n \\t
\\r\\n \\t\\t\\r\\n \\t\\t\\r\\n \\r\\n \\t
\\r\\n\\r\\n \\t
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

{{loginMessage}}

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\nUnauthorized access to this system is prohibited and will be prosecuted to the full extent of the law.
\\r\\n (C) 2014-2021 - Confederated Tribes of the Umatilla Indian Reservation\\r\\n
\\r\\n
\\r\\n\";","import {\r\n EHS_PROJECTID,\r\n serviceUrl,\r\n SharingLevel,\r\n SHARINGLEVEL_PRIVATE,\r\n SHARINGLEVEL_PUBLICREAD\r\n} from \"../../../../config\";\r\nimport {isDuplicateUploadFile} from \"../../../../core/common/common-functions\";\r\nimport {config} from \"rxjs\";\r\n\r\nvar modal_violation_new_file = ['$scope','$uibModalInstance', 'Upload',\r\n\tfunction($scope, $uibModalInstance, $upload){\r\n\t\t// note: file selected for upload in this controller are managed by onFileSelect in this controller (see below).\r\n\r\n $scope.header_message = \"Add file(s) to: \" + $scope.row.Name;\r\n $scope.doneUploading = false;\r\n $scope.isUploading = false;\r\n $scope.readyToUpload = false;\r\n\r\n //options from config.js\r\n $scope.SHARINGLEVEL_PRIVATE = SHARINGLEVEL_PRIVATE;\r\n $scope.SHARINGLEVEL_PUBLICREAD = SHARINGLEVEL_PUBLICREAD;\r\n $scope.SharingLevel = SharingLevel;\r\n\r\n $scope.all_saved_files = [];\r\n\r\n\t\t$scope.onFileSelect = function(files)\r\n\t\t{\r\n console.log(\"Inside modal_new_file, onFileSelect! Files is next...\");\r\n //console.dir(files);\r\n\r\n //check for duplicates\r\n if (files) {\r\n files.forEach(function (file) {\r\n if (isDuplicateUploadFile(file, $scope.ViolationFiles))\r\n file.success = \"DUPLICATE\";\r\n });\r\n }\r\n else\r\n console.log(\"there were no files on FileSelect\")\r\n\r\n $scope.uploadFiles = files;\r\n\r\n console.dir($scope.uploadFiles);\r\n\r\n if ($scope.uploadFiles.length > 0)\r\n $scope.readyToUpload = true;\r\n else\r\n $scope.readyToUpload = false;\r\n\r\n\t\t};\r\n\r\n\t\t$scope.save = function(){\r\n console.log(\"Inside modal_new_file.js, save...\");\r\n\t\t\t//console.log(\"$scope is next...\");\r\n //console.dir($scope);\r\n\r\n\t\t\t// Just in case they clicked the Upload button, without selecting a file first.\r\n\t\t\tif (!$scope.uploadFiles)\r\n\t\t\t{\r\n\t\t\t\tconsole.log(\"No file selected; do nothing...\");\r\n\t\t\t\treturn;\r\n }\r\n\r\n $scope.readyToUpload = false;\r\n $scope.doneUploading = false;\r\n $scope.isUploading = true;\r\n\r\n\t\t\t$scope.foundDuplicate = false;\r\n\t\t\t$scope.uploadErrorMessage = undefined;\r\n\t\t\tvar errors = [];\r\n\r\n\t\t\tfor(var i = 0; i < $scope.uploadFiles.length; i++)\r\n\t\t\t{\r\n\t\t\t\tvar file = $scope.uploadFiles[i];\r\n\t\t\t\t//console.log(\"file is next...\");\r\n\t\t\t\t//console.dir(file);\r\n\r\n\t\t\t\tvar newFileNameLength = file.name.length;\r\n\t\t\t\tconsole.log(\"file name length = \" + newFileNameLength);\r\n\r\n if (file.success == \"DUPLICATE\") {\r\n console.log(\"Duplicate -- ignoring: \", file.Name);\r\n continue;\r\n }\r\n\r\n\t\t\t\tif(!file.success)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log(\"file.success does not exist yet...\");\r\n\t\t\t\t\t$scope.upload = $upload.upload({\r\n\t\t\t\t\t\turl: serviceUrl + '/api/v1/violation/UploadFile',\r\n\t\t\t\t\t\tmethod: \"POST\",\r\n\t\t\t\t\t\t// headers: {'headerKey': 'headerValue'},\r\n\t\t\t\t\t\t// withCredential: true,\r\n\t\t\t\t\t\tdata: {ProjectId: EHS_PROJECTID, Description: file.Description, SubprojectId: $scope.row.Id},\r\n\t\t\t\t\t\tfile: file\r\n\r\n\t\t\t\t\t}).progress(function (evt) {\r\n\t\t\t\t\t console.dir(evt);\r\n if (typeof config !== 'undefined')\r\n // @ts-ignore\r\n config.file.success = \"Working: \" + parseInt(100.0 * evt.loaded / evt.total) + \"%\";\r\n\t\t\t\t\t}).success(function (data, status, headers, config) {\r\n if (typeof config !== 'undefined')\r\n {\r\n config.file.success = \"Success\";\r\n //console.dir(data);\r\n $scope.all_saved_files.push(data[0]);\r\n $scope.doneUploading = true;\r\n $scope.isUploading = false;\r\n console.log(\"--- done and success\");\r\n }\r\n\t\t\t\t\t\t}).error(function(data, status, headers, config) {\r\n\t\t\t\t\t\t\t$scope.uploadErrorMessage = \"There was a problem uploading your file. Please try again or contact the Helpdesk if this issue continues.\";\r\n\t\t\t\t\t\t\t//console.log(file.name + \" was error.\");\r\n if (typeof config !== 'undefined')\r\n config.file.success = \"Failed\";\r\n\r\n $scope.readyToUpload = true;\r\n $scope.doneUploading = true;\r\n $scope.isUploading = false;\r\n console.log(\"done and error...\");\r\n\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n }//loop\r\n\r\n\t\t};\r\n\r\n\t\t$scope.cancel = function(){\r\n\r\n\t\t\t$scope.foundDuplicate = undefined;\r\n\r\n if ($scope.all_saved_files.length > 0) {\r\n console.warn(\"---- returning the files ----\");\r\n console.dir($scope.all_saved_files);\r\n $uibModalInstance.close($scope.all_saved_files);\r\n }\r\n\r\n\t\t\t$uibModalInstance.dismiss();\r\n\t\t};\r\n\t}\r\n];\r\n\r\nexport default modal_violation_new_file;\r\n","import * as angular from 'angular';\r\n\r\nvar admin_edit_dataset_permissions = ['$scope', '$uibModal', '$timeout', '$routeParams', 'DatasetService', 'CommonService','ProjectService','AdminService',\r\n function ($scope, $uibModal, $timeout, $routeParams, DatasetService, CommonService, ProjectService, AdminService) {\r\n\r\n $scope.OnTab = \"Permissions\";\r\n $scope.SaveMessage = null;\r\n $scope.dataset = DatasetService.getDataset($routeParams.Id);\r\n $scope.groups = CommonService.getGroups();\r\n\r\n $scope.dataset.$promise.then(function () {\r\n if(typeof $scope.dataset.Config.Permissions === 'undefined'){\r\n $scope.dataset.Config.Permissions = {};\r\n }\r\n });\r\n\r\n\r\n $scope.saveConfig = function () {\r\n $scope.SaveMessage = \"Saving...\";\r\n $scope.ErrorMessage = \"\";\r\n\r\n if($scope.dataset.Config.Permissions.Edit == \"\"){\r\n delete $scope.dataset.Config.Permissions.Edit;\r\n }\r\n\r\n if($scope.dataset.Config.Permissions.View == \"\"){\r\n delete $scope.dataset.Config.Permissions.View;\r\n }\r\n\r\n console.dir($scope.dataset.Config);\r\n\r\n $scope.dataset.Config = angular.toJson($scope.dataset.Config);\r\n\r\n var promise = DatasetService.saveDataset($scope.dataset );\r\n\r\n promise.$promise.then(function () {\r\n $scope.dataset.Config = angular.fromJson(promise.Config);\r\n $scope.SaveMessage = \"Save successful.\";\r\n }, function(error) {\r\n console.log(\"something went wrong:\");\r\n console.dir(promise);\r\n $scope.SaveMessage = \"\";\r\n $scope.ErrorMessage = \"Error. Try again or contact your administrator\"\r\n });\r\n };\r\n\r\n }\r\n\r\n];\r\n\r\nexport default admin_edit_dataset_permissions;\r\n","//bot api\r\nimport {serviceUrl} from \"../../config\";\r\nimport bot_module from \"./bot-module\";\r\n\r\n\r\n\r\nconst bot_services = ['$q',\r\n\r\n 'BOTProjects',\r\n 'ProjectObjectiveReports',\r\n 'SaveBOTProject',\r\n 'SaveBOTProjectObjective',\r\n 'SaveBOTProjectObjectiveReport',\r\n 'AllBOTProjects',\r\n\r\n function ($q,\r\n\r\n BOTProjects,\r\n ProjectObjectiveReports,\r\n SaveBOTProject,\r\n SaveBOTProjectObjective,\r\n SaveBOTProjectObjectiveReport,\r\n AllBOTProjects\r\n\r\n ) {\r\n var service = {\r\n\r\n getBOTProjects: function (ProjectTypeId) {\r\n return BOTProjects.query({ Id: ProjectTypeId });\r\n },\r\n\r\n getProjectObjectiveReports: function (ProjectObjectiveId) {\r\n return ProjectObjectiveReports.query({ Id: ProjectObjectiveId });\r\n },\r\n\r\n saveBOTProject: function (project) {\r\n return SaveBOTProject.save({ Project: project });\r\n },\r\n\r\n saveBOTProjectObjective: function(objective) {\r\n return SaveBOTProjectObjective.save({ ProjectObjective: objective });\r\n },\r\n\r\n saveProjectObjectiveReport: function(report){\r\n return SaveBOTProjectObjectiveReport.save({ ProjectObjectiveReport: report });\r\n },\r\n\r\n getAllBOTProjects: function () {\r\n return AllBOTProjects.query({ });\r\n },\r\n\r\n };\r\n\r\n return service;\r\n\r\n }\r\n];\r\n\r\nexport default bot_services;\r\n","import * as angular from 'angular';\r\n\r\nvar module_add_accuracy_check = ['$scope', '$uibModalInstance', 'ProjectService',\r\n function ($scope, $uibModalInstance, ProjectService) {\r\n\r\n if ($scope.ac_row.hasOwnProperty('CheckDate'))\r\n $scope.pagemode = \"Edit\";\r\n else\r\n $scope.pagemode = \"Add new\";\r\n\r\n $scope.ac_row = angular.copy($scope.ac_row);\r\n\r\n $scope.save = function () {\r\n\r\n var promise = ProjectService.saveInstrumentAccuracyCheck($scope.viewInstrument.Id, $scope.ac_row);\r\n\r\n promise.$promise.then(function () {\r\n //$scope.reloadProject();\r\n $scope.postInstrumentAccuracyCheckUpdateGrid(promise);\r\n $uibModalInstance.dismiss();\r\n });\r\n };\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default module_add_accuracy_check;\r\n","/*\r\n CellValidator is the parent class for all cell validators.\r\n\r\n Most of the control type definitions also include a cellValidator based on the control type.\r\n For example, a field of \"Text\" type has a \"CDMSTextCellValidator\" that is a subclass of CellValidator\r\n to handle validating that cell's value.\r\n\r\n// There are three types of validations that need to be run in order to fully validate a field:\r\n// 1) field-level (set in the dataset/master \"Validation\" column value)\r\n// 2) field-control-type (based on the type of control the field is + any applicable control-dependent field-level validations)\r\n// 3) field-rules (any rule set in the field's \"Rule\" column value that is of \"OnValidate\" type);\r\n\r\n Every field will get a CellValidator attached, even if it is just the basic CellValidator. The specialized subclasses\r\n (CDMSNumberCellValidator, for example) handles the field-control-type validation in its own special way.\r\n\r\n*/\r\n\r\n//define our cell validators. they will be loaded at the end of this file via requireJS.\r\n// var cellValidators = [\r\n// 'core/common/components/grid/validators/CDMSTextCellValidator',\r\n// 'core/common/components/grid/validators/CDMSNumberCellValidator',\r\n// 'core/common/components/grid/validators/CDMSDateCellValidator',\r\n// 'core/common/components/grid/validators/CDMSDateTimeCellValidator',\r\n// 'core/common/components/grid/validators/CDMSTimeCellValidator',\r\n// 'core/common/components/grid/validators/CDMSMultiselectCellValidator',\r\n// 'core/common/components/grid/validators/CDMSSelectCellValidator',\r\n// ];\r\n\r\n\r\n//validation error object. give the field object and the message.\r\nexport function ValidationError(field, message) {\r\n this.message = message || '';\r\n this.field = field || null;\r\n};\r\n\r\n//Parent class of all cell validators (see below)\r\nexport function CellValidator(cdms_field?) {\r\n if (cdms_field)\r\n {\r\n this.cdms_field = cdms_field;\r\n\r\n //cache our validations as an array for convenience and performance.\r\n if (!this.validation)\r\n this.validation = this.getValidationsArray(this.cdms_field);\r\n\r\n //console.log(\"cdms_field validation initialized for ---------> \" + cdms_field.DbColumnName);\r\n //console.dir(this.validation);\r\n\r\n this.errors = [];\r\n }\r\n};\r\n\r\n\r\n/*\r\n* Field Control-type validation --\r\n* this will be overridden by subclasses of this object to provide validation for that type.\r\n*/\r\nCellValidator.prototype.validateFieldControlTypeValidation = function (data) { };\r\n\r\n/*\r\n* to be implemented - runs on each field to fire any \"OnValidate\" rule that may be configured\r\n*\r\n*/\r\nCellValidator.prototype.validateFieldOnValidateRule = function (data) { };\r\n\r\n\r\n/*\r\n* Field-level validation\r\n* This function validates the field value according to the validation rules specified in the dataset field's \"Validation\" column.\r\n* It only validates those that are NOT dependent upon the field type (like \"required\").\r\n\r\n* NOTE: validation that is specific to a type of field (number, multiselect) should NOT go here.\r\n\r\n* returns an array of ValidationError objects (or [] if no error)\r\n\r\n*/\r\nCellValidator.prototype.validateFieldLevelValidation = function (data) {\r\n //console.log(\"Running validateFieldLevelValidation\");\r\n //console.dir(data);\r\n //console.dir(this.validation);\r\n\r\n if(this.cdms_field.DbColumnName == \"ActivityDate\"){\r\n data.value = data.node.data.Activity.ActivityDate;\r\n }\r\n\r\n if(this.cdms_field.DbColumnName == \"LocationId\"){\r\n if ((data.scope) && (data.scope.PERMIT_DATASETID))\r\n {\r\n // Do nothing. data.value has the value of the item.\r\n }\r\n else\r\n data.value = data.node.data.Activity.LocationId;\r\n }\r\n\r\n //validation: is the field required? \"required\" or \"nb\" (for \"not blank\")\r\n if ( (this.validation.contains('required') || this.validation.contains(\"nb\")) ) {\r\n\r\n //console.log(\"Checking required field: \")\r\n //console.dir(this.cdms_field);\r\n\r\n if((data.value == undefined || data.value === null || data.value === ''))\r\n this.errors.push(new ValidationError(this.cdms_field, \"Field is required.\"));\r\n\r\n }\r\n //other types of field-level validation?\r\n //console.dir(this.errors);\r\n return this.errors;\r\n};\r\n\r\n\r\n//parses the cdms_field validations and returns an array of validation definitions or [] if none.\r\n// for example a string of: \"Required; [1000-2000]\" will return: ['required','[1000-2000]']\r\n// see tests/validations.js for an example of the array that gets returned.\r\n\r\nCellValidator.prototype.getValidationsArray = function (cdms_field) {\r\n\r\n var empty = [];\r\n\r\n if (!cdms_field) {\r\n console.log(\"empty cdms_field -- no validations array for you.\");\r\n return empty;\r\n }\r\n\r\n //get validation from dataset field Validation column - otherwise from master's.\r\n var validation = (cdms_field.Field) ? cdms_field.Validation || cdms_field.Field.Validation : cdms_field.Validation ; //prefer dataset over master.\r\n\r\n if (!validation)\r\n return empty;\r\n\r\n //parse the cdms_field Validation into validation array.\r\n if (typeof validation !== 'string') //if we aren't a string then it is invalid validation\r\n {\r\n console.error(cdms_field.DbColumnName + \" - Validation is invalid (not a string)\");\r\n console.dir(validation)\r\n return empty;\r\n }\r\n\r\n try {\r\n validation = validation.toLowerCase(); //ignore case\r\n validation = validation.replace(/\\s/g, ''); //ignore spaces\r\n validation = validation.split(';'); //split on semicolon: our validation string can be \"Required\" or \"Required; int(3)\";\r\n } catch (e) {\r\n console.error(cdms_field.DbColumnName + \" - Validation is invalid (could not parse). Exception follows:\");\r\n console.dir(e);\r\n return empty;\r\n }\r\n\r\n// console.log(\"Found some validation for that field: \" + cdms_field.DbColumnName + \" -- now parsing... \");\r\n// console.dir(validation);\r\n// console.log(\" -- now parsing... \");\r\n\r\n validation = this.getParsedValidationArray(validation); //add the .parsed property to each validation that tokenizes the validation string\r\n\r\n// console.log(\"completed validation parsing: \");\r\n// console.dir(validation);\r\n\r\n return validation;\r\n\r\n\r\n};\r\n\r\n//parses number validations by tokens into a validation definition object\r\n// adds a \"parsed\" property to the validations object if it can parse the validation.\r\nCellValidator.prototype.getParsedValidationArray = function (validations) {\r\n //btw: handy tool for testing regex: https://www.debuggex.com\r\n\r\n var parsed_validations = [];\r\n\r\n //the regex that matches our \"range\" validations (ex: \"[100,500]\" or )\r\n var rangeRegex = new RegExp(/\\[-?\\d*\\,-?\\d*\\]$/);\r\n\r\n //the regexs that match the int/float format validations\r\n var validationMatchers =\r\n [\r\n new RegExp(/^(int)\\((\\d)\\)$/), //int(4)\r\n new RegExp(/^(int)$/), //int\r\n new RegExp(/^(float)$/), //float\r\n new RegExp(/^(float)\\(()(\\d)\\)$/), //float(4)\r\n new RegExp(/^(float)\\((\\d)\\,(\\d)\\)$/), //float(5,2)\r\n ];\r\n\r\n //for each validation rule, try to match it with\r\n // one of our regex patterns and produce an array\r\n // we can use to validate values later. see /tests/validations.js for example output\r\n validations.forEach(function (val) {\r\n var matched = false;\r\n\r\n //range\r\n if (rangeRegex.test(val)) {\r\n var obj = rangeRegex.exec(val);\r\n parsed_validations.push({\r\n number: {\r\n 'num_type': 'range',\r\n 'num_range': val,\r\n }\r\n });\r\n matched = true;\r\n }\r\n\r\n //floats and ints\r\n validationMatchers.forEach(function (regex) {\r\n if (regex.test(val)) {\r\n var obj = regex.exec(val);\r\n parsed_validations.push({\r\n number: {\r\n 'num_type': obj[1],\r\n 'num_length': +obj[2], //+\r\n 'num_decimal': +obj[3], //+ coerces to number\r\n 'original': obj.input,\r\n }\r\n });\r\n //console.log(\" -- match --\");\r\n //console.dir(obj);\r\n //console.dir(val);\r\n matched = true;\r\n }\r\n });\r\n\r\n if (!matched) {\r\n parsed_validations.push(val);\r\n }\r\n\r\n });\r\n\r\n return parsed_validations;\r\n};\r\n\r\n/**\r\n* Validate our field value and return an array of ValidationErrors if any.\r\n* this function is what should be called after a cell is edited.\r\n*/\r\nCellValidator.prototype.validate = function (data) {\r\n this.errors = []; //start fresh!\r\n\r\n this.validateFieldLevelValidation(data);\r\n this.validateFieldControlTypeValidation(data);\r\n this.validateFieldOnValidateRule(data);\r\n\r\n return this.errors;\r\n};\r\n\r\n/**\r\n* utility function to remove the given column's validation errors from this array\r\n*/\r\nCellValidator.prototype.removeFieldValidationErrors = function (validationErrors, colDef) {\r\n\r\n var otherValidationErrors = [];\r\n\r\n if (typeof validationErrors !== 'undefined') {\r\n //if this error matches the field then skip, otherwise add to our otherValidationErrors array.\r\n validationErrors.forEach(function (error, index) {\r\n if (error.field && error.field.DbColumnName !== colDef.DbColumnName)\r\n otherValidationErrors.push(error);\r\n });\r\n }\r\n\r\n return otherValidationErrors;\r\n};\r\n\r\n\r\n// require(cellValidators, function () { });\r\n/*\r\nimport './validators/CDMSTextCellValidator';\r\nimport './validators/CDMSNumberCellValidator';\r\nimport './validators/CDMSDateCellValidator';\r\nimport './validators/CDMSDateTimeCellValidator';\r\nimport './validators/CDMSTimeCellValidator';\r\nimport './validators/CDMSMultiselectCellValidator';\r\nimport './validators/CDMSSelectCellValidator';\r\n*/\r\n\r\n\r\n","import {EHS_PROJECTID} from \"../../../../config\";\r\n\r\nvar modal_violation_edit_filetype = ['$scope', '$uibModalInstance', 'ProjectService',\r\n function ($scope, $uibModalInstance, ProjectService){\r\n\r\n\t\t$scope.header_message = \"Edit File Type\";\r\n\r\n\t\t$scope.save = function(){\r\n\t\t\tvar saved_file = ProjectService.updateFile(EHS_PROJECTID, $scope.file_modal);\r\n\t\t\tsaved_file.$promise.then(function(){\r\n\t\t\t\t$uibModalInstance.close($scope.file_modal);\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t$scope.cancel = function(){\r\n\t\t\t$uibModalInstance.dismiss();\r\n\t\t};\r\n\t}\r\n];\r\n\r\nexport default modal_violation_edit_filetype;\r\n","import * as moment from 'moment';\r\n\r\nvar modal_add_compliance_inspection = ['$scope', '$uibModalInstance', 'LeasingService',\r\n function ($scope, $uibModalInstance, LeasingService) {\r\n\r\n $scope.header_message = \"Edit Compliance Inspection\";\r\n\r\n //if we're not editing then we are creating a new one\r\n if (!$scope.inspection_modal) {\r\n $scope.header_message = \"Add Compliance Inspection\";\r\n\r\n $scope.inspection_modal = {\r\n InspectionDateTime: $scope.currentDay,\r\n InspectedBy: $scope.currentUser,\r\n LeaseYear: \"\" + moment().year(),\r\n };\r\n }\r\n\r\n console.dir($scope.inspection_modal);\r\n\r\n $scope.save = function () {\r\n console.dir($scope.inspection_modal);\r\n $scope.inspection_modal.LeaseId = $scope.lease.Id;\r\n var save_result = LeasingService.saveInspection($scope.inspection_modal);\r\n\r\n save_result.$promise.then(function () {\r\n $scope.saveLeaseCallback(save_result);\r\n $uibModalInstance.dismiss();\r\n });\r\n };\r\n\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n];\r\n\r\nexport default modal_add_compliance_inspection;\r\n","declare const d3: any;\r\n\r\nvar watertemp_chartservice = [\r\n function(){\r\n var service = {\r\n\r\n \tdataset: \"WaterTemp\",\r\n\r\n\t\t\tbuildChart: function(data_in, config)\r\n\t\t\t{\r\n\t\t\t\tif(data_in.length == 0)\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\tif(!config)\r\n\t\t\t\t\tconfig = {width: 400, height: 200};\r\n\r\n\t\t\t\t\tvar margin = {top: 10, right: 10, bottom: 20, left: 30},\r\n\t\t\t\t\t width = config.width - margin.left - margin.right,\r\n\t\t\t\t\t height = config.height - margin.top - margin.bottom;\r\n\r\n\t\t\t\t\tvar x = d3.time.scale()\r\n\t\t\t\t\t .range([0, width]);\r\n\r\n\t\t\t\t\tvar y = d3.scale.linear()\r\n\t\t\t\t\t .range([height, 0]);\r\n\r\n\t\t\t\t\tvar color = d3.scale.ordinal()\r\n\t\t\t\t\t \t\t.domain([1,12,13,14,15,16])\r\n\t\t\t\t\t \t\t.range([\"FF0000\",\"#009933\" , \"#0000FF\",\"#0FF933\" , \"#00FFFF\",\"#00FFAAFB\"]);\r\n\r\n\t\t\t\t\tvar xAxis = d3.svg.axis()\r\n\t\t\t\t\t .scale(x)\r\n\t\t\t\t\t .orient(\"bottom\");\r\n\r\n\t\t\t\t\tvar yAxis = d3.svg.axis()\r\n\t\t\t\t\t .scale(y)\r\n\t\t\t\t\t .orient(\"left\");\r\n\r\n\t\t\t\t\tvar line = d3.svg.line()\r\n\t\t\t\t\t\t//.interpolate(\"basis\")\r\n\t\t\t\t\t .x(function(d) { return x(d.chart_date); })\r\n\t\t\t\t\t .y(function(d) { return y(d.chart_temp); });\r\n\r\n\t\t\t\t\t d3.select(\"#chart-div\").selectAll(\"svg\").remove();\r\n\r\n\t\t\t\t\tvar svg = d3.select(\"#chart-div\").append(\"svg\")\r\n\t\t\t\t\t .attr(\"width\", width + margin.left + margin.right)\r\n\t\t\t\t\t .attr(\"height\", height + margin.top + margin.bottom)\r\n\t\t\t\t\t .append(\"g\")\r\n\t\t\t\t\t .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\r\n\r\n\r\n\t\t\t\t\t//converting via new Date() seems to work better.\r\n\t\t\t\t\t//var parseDate = d3.time.format(\"%Y-%m-%dT%H:%M:%S\").parse;\r\n\r\n\t\t\t\t\t//color.domain(d3.keys(data[0]).filter(function(key) { return key !== \"date\"; }));\r\n\r\n\t\t\t\t\tvar data = [];\r\n\r\n\t\t\t\t\tdata_in.forEach(function(d) {\r\n\t\t\t\t\t \t//only show rows with default QA status (OK)\r\n\t\t\t\t\t \t//if(d.QAStatusId == scope.dataset.DefaultRowQAStatusId)\r\n\t\t\t\t\t \t//{\r\n\t\t\t\t\t \tif(!isNaN(d.WaterTemperature))\r\n\t\t\t\t\t \t{\r\n\t\t\t\t\t \t\td.chart_date = new Date(d.ReadingDateTime);\r\n\t\t\t\t\t \td.chart_temp = +d.WaterTemperature;\r\n\t\t\t\t\t \td.chart_QAStatusId = d.QAStatusId;\r\n\t\t\t\t\t \tdata.push(d);\r\n\t\t\t\t\t }\r\n\t\t\t\t\t //}\r\n\r\n\t\t\t\t\t //console.dir(d);\r\n });\r\n\r\n //sort by date so that our graph isn't wonky\r\n data = data.sort(function (a, b) { return a.chart_date - b.chart_date });\r\n\r\n\t\t\t\t\t//console.dir(data);\r\n\r\n\t\t\t\t\t //x.domain(d3.extent(data, function(d) { return d.date; }));\r\n\t\t\t\t\t //y.domain(d3.extent(data, function(d) { return d.close; }));\r\n\r\n\r\n\t\t\t\t\t x.domain(d3.extent(data, function(d) { return d.chart_date; }));\r\n\t\t\t\t\t y.domain(d3.extent(data, function(d) { return d.chart_temp; }));\r\n\r\n\t\t\t\t\t svg.append(\"g\")\r\n\t\t\t\t\t .attr(\"class\", \"x axis\")\r\n\t\t\t\t\t .attr(\"transform\", \"translate(0,\" + height + \")\")\r\n\t\t\t\t\t .call(xAxis);\r\n\r\n\t\t\t\t\t svg.append(\"g\")\r\n\t\t\t\t\t .attr(\"class\", \"y axis\")\r\n\t\t\t\t\t .call(yAxis)\r\n\t\t\t\t\t .append(\"text\")\r\n\t\t\t\t\t .attr(\"transform\", \"rotate(-90)\")\r\n\t\t\t\t\t .attr(\"y\", 6)\r\n\t\t\t\t\t .attr(\"dy\", \".71em\")\r\n\t\t\t\t\t .style(\"text-anchor\", \"end\")\r\n\t\t\t\t\t .text(\"H2O Temp (C)\");\r\n\r\n\t\t\t\t\t svg.append(\"path\")\r\n\t\t\t\t\t .datum(data)\r\n\t\t\t\t\t .attr(\"class\", \"line\")\r\n\t\t\t\t\t .attr(\"d\", line);\r\n\t\t\t\t\t /*\r\n\t\t\t\t\t .style(\"stroke\", function(d,i) {\r\n\t\t\t\t\t \tconsole.dir(d);\r\n\t\t\t\t\t \tconsole.dir(i);\r\n\t\t\t\t\t \tconsole.dir(color(d.chart_QAStatusId));\r\n\t\t\t\t\t \treturn color(d.chart_QAStatusId);\r\n\t\t\t\t\t });*/\r\n\t\t\t},\r\n };\r\n\r\n return service;\r\n }\r\n];\r\n\r\nexport default watertemp_chartservice;\r\n","\r\nvar add_project_dataset = ['$scope','$uibModalInstance', 'ProjectService',\r\n\tfunction($scope, $uibModalInstance, ProjectService){\r\n\r\n\t\t$scope.row = {};\r\n\r\n $scope.projects = ProjectService.getProjects(); //.sort(orderByAlpha);\r\n\r\n\r\n\t\t$scope.save = function(){\r\n\r\n\t\t\t$uibModalInstance.dismiss();\r\n\r\n\t\t};\r\n\r\n\t\t$scope.cancel = function(){\r\n\t\t\t$uibModalInstance.dismiss();\r\n\t\t};\r\n\r\n\t}\r\n];\r\nexport default add_project_dataset;\r\n","import * as angular from 'angular';\r\nimport {getJsonObjects, getPossibleValueGridObjects} from \"../../../common/common-functions\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\n//modal to edit dataset field\r\nvar modal_admin_edit_dataset_field = ['$scope', '$uibModal','$uibModalInstance','AdminService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, AdminService) {\r\n\r\n //possible values selection grid for customizing datasetfield possible values selection\r\n $scope.CustomPossibleValues = false;\r\n $scope.assignedComparator = function (one, two, nodeone, nodetwo) {\r\n if (nodeone.isSelected() && nodetwo.isSelected())\r\n return 0;\r\n\r\n if (!nodeone.isSelected() && !nodetwo.isSelected())\r\n return 0;\r\n\r\n if (nodeone.isSelected() && !nodetwo.isSelected())\r\n return 1;\r\n\r\n if (!nodeone.isSelected() && nodetwo.isSelected())\r\n return -1;\r\n\r\n }\r\n\r\n var pvColumnDefs = [\r\n {\r\n field: 'Assigned',\r\n headerName: 'Assigned',\r\n headerCheckboxSelection: true,\r\n checkboxSelection: true,\r\n width: 110,\r\n maxWidth: 110,\r\n alwaysShowField: true,\r\n menuTabs: [],\r\n comparator: $scope.assignedComparator\r\n },\r\n { field: 'Label', headerName: 'Possible Value', sort: 'asc', menuTabs: [],}\r\n ];\r\n\r\n $scope.pvGridOptions = {\r\n columnDefs: pvColumnDefs,\r\n rowSelection: 'multiple',\r\n suppressRowClickSelection: false,\r\n suppressPropertyNamesCheck: true,\r\n onSelectionChanged: function (params) {\r\n //console.dir(params);\r\n $scope.pvGridOptions.selectedItems = $scope.pvGridOptions.api.getSelectedRows();\r\n //$scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n selectedItems: [],\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n $scope.activateGrid = function () {\r\n if($scope.CustomPossibleValues && $scope.field_to_edit.Field.PossibleValues){ //checkbox is checked\r\n\r\n if(!$scope.ag_grid){\r\n $scope.ag_grid_div = document.querySelector('#pv-grid'); //get the container id...\r\n $scope.ag_grid = new Grid($scope.ag_grid_div, $scope.pvGridOptions); //bind the grid to it.\r\n\r\n //handle the possible values\r\n // 1 - superset of all possible values from master field - set as grid data\r\n $scope.MasterPossibleValues = getPossibleValueGridObjects(getJsonObjects($scope.field_to_edit.Field.PossibleValues));\r\n //console.dir($scope.MasterPossibleValues);\r\n\r\n $scope.pvGridOptions.api.setRowData($scope.MasterPossibleValues);\r\n\r\n // 2 - if we already have datasetfield possible values set, convert from Json and then select the nodes in master list\r\n if($scope.hasCustomPossibleValues($scope.field_to_edit)){\r\n $scope.field_to_edit.PossibleValues = getPossibleValueGridObjects(getJsonObjects($scope.field_to_edit.PossibleValues));\r\n //console.dir($scope.field_to_edit.PossibleValues);\r\n\r\n $scope.pvGridOptions.api.forEachNode(function(node){\r\n $scope.field_to_edit.PossibleValues.forEach(function(val){\r\n if(val.Label == node.data.Label){\r\n node.setSelected(true);\r\n }\r\n });\r\n });\r\n }\r\n\r\n }\r\n }\r\n };\r\n\r\n $scope.save = function () {\r\n\r\n var fieldtosave = angular.copy($scope.field_to_edit);\r\n if($scope.CustomPossibleValues){\r\n //convert to a pv array/object\r\n var pv_to_save = {};\r\n\r\n //console.dir($scope.pvGridOptions.selectedItems);\r\n\r\n if($scope.field_to_edit.ControlType == \"select-number\"){\r\n pv_to_save = {}; //switch to an object\r\n $scope.pvGridOptions.selectedItems.forEach(function(item){\r\n var int_id = parseInt(item.Id);\r\n pv_to_save[int_id] = item.Label;\r\n });\r\n } else {\r\n $scope.pvGridOptions.selectedItems.forEach(function(item){\r\n pv_to_save[item.Id] = item.Label;\r\n })\r\n }\r\n\r\n //console.dir(pv_to_save);\r\n\r\n fieldtosave.PossibleValues = angular.toJson(pv_to_save);\r\n } else {\r\n delete fieldtosave.PossibleValues;\r\n }\r\n\r\n var saved_field = AdminService.saveDatasetField(fieldtosave);\r\n saved_field.$promise.then(function () {\r\n $uibModalInstance.close(saved_field);\r\n }, function (error) {\r\n $scope.SaveMessage = \"Error: \" + error.data.ExceptionMessage;\r\n });\r\n\r\n };\r\n\r\n $scope.parsePossibleValuesString = function () {\r\n\t\t\ttry {\r\n\t\t\t\t$scope.field_to_edit.Values = angular.fromJson($scope.field_to_edit.PossibleValues);\r\n\t\t\t} catch (exception) {\r\n\t\t\t\t$scope.field_to_edit.Values = exception.message;\r\n\t\t\t}\r\n\t\t}\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n $uibModalInstance.opened.then(function () {\r\n\r\n //if the datasetfield has custom possible values, set the checkbox and show the values...\r\n $scope.CustomPossibleValues = $scope.hasCustomPossibleValues($scope.field_to_edit);\r\n\r\n //we have to wait until the modal is loaded or else our grid div is not available\r\n setTimeout(function () {\r\n if($scope.CustomPossibleValues){\r\n $scope.activateGrid();\r\n }\r\n }, 500);\r\n })\r\n\r\n $scope.hasCustomPossibleValues = function(datasetfield){\r\n return (datasetfield.PossibleValues != null && datasetfield.PossibleValues != \"\")\r\n }\r\n\r\n }\r\n];\r\n\r\nexport default modal_admin_edit_dataset_field;\r\n","//list all datasets.\r\nimport * as angular from 'angular';\r\nimport {serverUrl} from \"../../../../config\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar datasets_list = ['$scope', 'DatasetService', 'ProjectService','CommonService','$uibModal', '$window',\r\n function (scope, DatasetService, ProjectService, CommonService, $uibModal, $window){\r\n console.log('dataset list controller called');\r\n scope.datasets = DatasetService.getDatasetsList();\r\n\r\n scope.datasets.$promise.then(function () {\r\n\r\n angular.forEach(scope.datasets, function (dataset, key) {\r\n //need to bump this to get the route\r\n DatasetService.configureDataset(dataset, scope);\r\n });\r\n\r\n var visibleDatasets = [];\r\n\r\n scope.datasets.forEach(function(dataset){\r\n //need to bump this to get the route\r\n DatasetService.configureDataset(dataset, scope);\r\n\r\n //hide if the flag is flipped\r\n if(!dataset.Config.Hide)\r\n visibleDatasets.push(dataset);\r\n });\r\n\r\n scope.datasets = visibleDatasets;\r\n\r\n var agCellRendererName = function (params) {\r\n return '';\r\n };\r\n\r\n var agColumnDefs = [\r\n { field: 'Name', headerName: 'Dataset Name', sort: 'asc', cellRenderer: agCellRendererName, width: 300, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n { field: 'ProjectName', headerName: 'Project', width: 300, menuTabs: ['filterMenuTab'], filter: true},\r\n { field: 'DatastoreName', headerName: 'Type', width: 300, menuTabs: ['filterMenuTab'], filter: true},\r\n ];\r\n\r\n scope.agGridOptions = {\r\n columnHoverHighlight: false,\r\n animateRows: true,\r\n suppressPropertyNamesCheck: true,\r\n // showToolPanel: false,\r\n columnDefs: agColumnDefs,\r\n rowData: undefined,\r\n debug: false,\r\n onGridReady: function (params) {\r\n params.api.sizeColumnsToFit();\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n var ag_grid_div = document.querySelector('#datasets-list-grid') as HTMLElement; //get the container id...\r\n scope.ag_grid = new Grid(ag_grid_div, scope.agGridOptions); //bind the grid to it.\r\n\r\n scope.agGridOptions.api.setRowData(scope.datasets);\r\n });\r\n }\r\n];\r\n\r\nexport default datasets_list;\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJhcHByYWlzYWwtbWFwLmNvbXBvbmVudC5zY3NzIn0= */\";","import * as angular from 'angular';\r\nimport {PERMIT_PROJECTID} from \"../../../../config\";\r\nimport {getFilesArrayAsList} from \"../../../../core/common/common-functions\";\r\nimport {executeNgPackagrBuilder} from \"@angular-devkit/build-angular\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar requests_list = ['$scope', '$route', '$routeParams', '$uibModal', '$location', '$window', '$rootScope', 'PermitService', 'UserService', 'GridService', 'DatasetService','CommonService',\r\n function ($scope, $route, $routeParams, $uibModal, $location, $window, $rootScope, PermitService, UserService, GridService, DatasetService, CommonService) {\r\n\r\n $scope.ReviewItemType = $routeParams.ItemType;\r\n $scope.dataset = DatasetService.getDataset($routeParams.DatasetId);\r\n\r\n $scope.currentPage = \"Open\";\r\n $scope.project = { Id: PERMIT_PROJECTID };\r\n $scope.downloadSpinner = false;\r\n\r\n $scope.dataset.$promise.then(function () {\r\n var EventColumnDefs = GridService.getAgColumnDefs($scope.dataset);\r\n $scope.permitEventsGrid.columnDefs = EventColumnDefs.HeaderFields;\r\n\r\n //add in the PermitNumber virtual column (returned by the be)\r\n $scope.permitEventsGrid.columnDefs.unshift(\r\n {\r\n field: 'PermitNumber',\r\n headerName: 'Permit Number',\r\n alwaysShowField: true,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text',\r\n Label: 'Permit Number',\r\n DbColumnName: 'PermitNumber',\r\n cdmsField: { Label: 'Permit Number', DbColumnName: 'PermitNumber', ControlType: 'text', Disabled: true, Field:{ Description: \"hi\"} }\r\n });\r\n\r\n if($scope.ReviewItemType == 'Inspections'){\r\n $scope.PermitEvents = PermitService.getPermitEventsForMe();\r\n } else {\r\n $scope.PermitEvents = PermitService.getPermitEventsByItemType($scope.ReviewItemType);\r\n }\r\n\r\n $scope.PermitEvents.$promise.then(function () {\r\n $scope.permitEventsGridDiv = document.querySelector('#permit-events-grid');\r\n new Grid($scope.permitEventsGridDiv, $scope.permitEventsGrid);\r\n $scope.permitEventsGrid.api.setRowData($scope.PermitEvents);\r\n\r\n $scope.addFilterOptions();\r\n $scope.showOpen();\r\n\r\n });\r\n\r\n $scope.isFavorite = $rootScope.Profile.isDatasetFavorite($scope.dataset.Id);\r\n $scope.permitsCanEdit = $scope.Profile.hasRole($scope.dataset.Config.Permissions.Edit);\r\n\r\n });\r\n\r\n $scope.showOpen = function(){\r\n $scope.currentPage = \"Open\";\r\n $scope.filterRequests('open');\r\n }\r\n\r\n $scope.showClosed = function(){\r\n $scope.currentPage = \"Closed\";\r\n $scope.filterRequests('closed');\r\n }\r\n\r\n //this ag-grid filter options is a bit tricky\r\n // primarily because you MUST have a string as the first element in the array\r\n // or it simply does not work. :/\r\n const dateFilterOptions = [\r\n 'empty',\r\n {\r\n displayKey: 'closed',\r\n displayName: 'closed',\r\n test: function (filterValue, cellValue) {\r\n return (cellValue !== null);\r\n },\r\n hideFilterInput: true\r\n },\r\n {\r\n displayKey: 'open',\r\n displayName: 'open',\r\n test: function (filterValue, cellValue) {\r\n return (cellValue === null);\r\n },\r\n hideFilterInput: true\r\n },\r\n\r\n 'equals',\r\n 'notEqual',\r\n 'lessThan',\r\n 'lessThanOrEqual',\r\n 'greaterThan',\r\n 'greaterThanOrEqual',\r\n 'inRange'\r\n ];\r\n\r\n $scope.addFilterOptions = function(){\r\n $scope.permitEventsGrid.columnDefs.forEach(function (coldef) {\r\n if (coldef.DbColumnName == 'ResponseDate'){\r\n coldef.filterParams.filterOptions = dateFilterOptions;\r\n }\r\n });\r\n }\r\n\r\n $scope.permitEventsGrid = {\r\n suppressPropertyNamesCheck: true,\r\n columnDefs: null,\r\n rowData: null,\r\n selectedItem: null,\r\n rowSelection: 'single',\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n\r\n },\r\n onRowDoubleClicked: function (params) {\r\n $scope.openActivityModal($scope.permitEventsGrid.selectedItem);\r\n },\r\n onSelectionChanged: function (params) {\r\n $scope.permitEventsGrid.selectedItem = $scope.row = $scope.permitEventsGrid.api.getSelectedRows()[0];\r\n console.dir($scope.permitEventsGrid.columnDefs);\r\n $scope.downloadSpinner = false;\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n onFirstDataRendered: function(){\r\n var allColumnIds = [];\r\n $scope.permitEventsGrid.columnApi.getAllColumns().forEach(function (columnDef) {\r\n allColumnIds.push(columnDef.colId);\r\n });\r\n $scope.permitEventsGrid.columnApi.autoSizeColumns(allColumnIds);\r\n },\r\n getRowHeight: function (params) {\r\n var file_height = 25 * (getFilesArrayAsList(params.data.Files).length); //count up the number of file lines we will have.\r\n var shared_height = 25 * (getFilesArrayAsList(params.data.SharedFiles).length);\r\n var final = (shared_height > file_height) ? shared_height : file_height;\r\n return (final > 25) ? final : 25;\r\n },\r\n }\r\n\r\n $scope.downloadTemplate = function(){\r\n $scope.downloadSpinner = true; //disables button\r\n\r\n var template = PermitService.downloadInspectionDocument($scope.permitEventsGrid.selectedItem.Id)\r\n\r\n template.$promise.then(function(){\r\n console.log('redirecting to ' + template.InspectionFormUrl);\r\n\r\n var a = document.createElement(\"a\");\r\n a.href=template.InspectionFormUrl;\r\n a.download=\"InspectionForm_\" + $scope.permitEventsGrid.selectedItem.Id + \".pdf\";\r\n a.click();\r\n\r\n //there is no way to know how long the browser will take to start the download... so we'll just give it a second\r\n setTimeout(function(){\r\n $scope.downloadSpinner = false;\r\n },4000);\r\n\r\n })\r\n }\r\n\r\n $scope.filterRequests = function(filterBy){\r\n\r\n var filter_component = $scope.permitEventsGrid.api.getFilterInstance('ResponseDate');\r\n if ((typeof filter_component !== 'undefined') && (filter_component != null))\r\n {\r\n filter_component.setModel(null);\r\n $scope.permitEventsGrid.api.onFilterChanged();\r\n filter_component.setModel({ type: filterBy });\r\n $scope.permitEventsGrid.api.onFilterChanged();\r\n }\r\n\r\n var allColumnIds = [];\r\n $scope.permitEventsGrid.columnApi.getAllColumns().forEach(function (columnDef) {\r\n allColumnIds.push(columnDef.colId);\r\n });\r\n $scope.permitEventsGrid.columnApi.autoSizeColumns(allColumnIds);\r\n }\r\n\r\n $scope.openActivityModal = function (params, intent) {\r\n\r\n //load the related permit's file\r\n $scope.PermitFiles = PermitService.getPermitFiles($scope.row.PermitId);\r\n\r\n delete $scope.activity_modal;\r\n $scope.intent = intent;\r\n\r\n //in this UI we only ever edit\r\n if (params) {\r\n $scope.activity_modal = angular.copy(params);\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/permits/components/requests/templates/requests-modal.html',\r\n controller: 'PermitRequestsModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_activity) {\r\n if($scope.ReviewItemType == 'Inspections'){\r\n $scope.PermitEvents = PermitService.getPermitEventsForMe();\r\n } else {\r\n $scope.PermitEvents = PermitService.getPermitEventsByItemType($scope.ReviewItemType);\r\n }\r\n $scope.PermitEvents.$promise.then(function(){\r\n $scope.permitEventsGrid.api.setRowData($scope.PermitEvents);\r\n if($scope.currentPage == \"Open\")\r\n $scope.showOpen()\r\n else\r\n $scope.showClosed();\r\n })\r\n\r\n });\r\n\r\n }\r\n\r\n $scope.onHeaderEditingStopped = function (field) { //fired onChange for header fields (common/templates/form-fields)\r\n\r\n //console.log(\"onHeaderEditingStopped: \" + field.DbColumnName);\r\n\r\n //build event to send for validation\r\n var event = {\r\n colDef: field,\r\n node: { data: $scope.row },\r\n value: $scope.row[field.DbColumnName],\r\n type: 'onHeaderEditingStopped',\r\n scope: $scope\r\n };\r\n\r\n if (GridService.validateCell(event)) {\r\n GridService.fireRule(\"OnChange\", event); //only fires when valid change is made\r\n }\r\n\r\n //update our collection of header errors if any were returned\r\n $scope.headerFieldErrors = [];\r\n if ($scope.row.rowHasError) {\r\n $scope.row.validationErrors.forEach(function (error) {\r\n if (Array.isArray($scope.headerFieldErrors[error.field.DbColumnName])) {\r\n $scope.headerFieldErrors[error.field.DbColumnName].push(error.message);\r\n } else {\r\n $scope.headerFieldErrors[error.field.DbColumnName] = [error.message];\r\n }\r\n });\r\n }\r\n\r\n $rootScope.$emit('headerEditingStopped', field); //offer child scopes a chance to do something, i.e. add activity modal...\r\n\r\n\r\n };\r\n\r\n //handle favorite toggle\r\n $scope.toggleFavorite = function () {\r\n UserService.toggleFavoriteDataset($scope, $rootScope);\r\n }\r\n\r\n }];\r\n\r\nexport default requests_list;\r\n","import {\r\n SharingLevel, SHARINGLEVEL_GROUPREAD,\r\n SHARINGLEVEL_PRIVATE,\r\n SHARINGLEVEL_PUBLICREAD,\r\n SHARINGLEVEL_REFERENCE_LIBRARY\r\n} from \"../../../../config\";\r\nimport {isValidURL} from \"../../../common/common-functions\";\r\n\r\nvar modal_edit_file = ['$scope', '$uibModalInstance', 'ProjectService',\r\n function ($scope, $uibModalInstance, ProjectService){\r\n\r\n\t\t$scope.header_message = \"Edit file\";\r\n\r\n //options from config.js\r\n $scope.SHARINGLEVEL_PRIVATE = SHARINGLEVEL_PRIVATE;\r\n\t\t$scope.SHARINGLEVEL_PUBLICREAD = SHARINGLEVEL_PUBLICREAD;\r\n\t\t$scope.SHARINGLEVEL_GROUPREAD = SHARINGLEVEL_GROUPREAD;\r\n\t\t$scope.SHARINGLEVEL_REFERENCE_LIBRARY = SHARINGLEVEL_REFERENCE_LIBRARY;\r\n $scope.SharingLevel = SharingLevel;\r\n\r\n\t\t$scope.LinkError = false;\r\n\r\n\t\t$scope.save = function(){\r\n\t\t\tif (($scope.row.FileType) && ($scope.row.FileType.Name == 'Link')){\r\n\t\t\t\t$scope.validateLink();\r\n\t\t\t\tif ($scope.LinkError)\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\t$scope.row.Name = $scope.row.Link;\r\n\t\t\t}\r\n\r\n\t\t\tvar promise = ProjectService.updateFile($scope.project.Id, $scope.row);\r\n\r\n\t\t\tpromise.$promise.then(function(){\r\n\t\t\t\t$scope.callback(promise);\r\n\t\t\t\t$uibModalInstance.dismiss();\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t$scope.cancel = function(){\r\n\t\t\t$uibModalInstance.dismiss();\r\n\t\t};\r\n\r\n\t\t//validate link URL\r\n $scope.validateLink = function(){\r\n\r\n $scope.LinkError = false;\r\n\r\n if(!isValidURL($scope.row.Link))\r\n $scope.LinkError = \"Please enter a full valid URL (http:// or https:// required)\";\r\n\r\n }\r\n\t}\r\n];\r\n\r\nexport default modal_edit_file;\r\n","//CDMSDateCellValidator - extends CellValidator\r\n\r\n// validates date cells.\r\n\r\nimport * as moment from 'moment';\r\nimport {CellValidator, ValidationError} from \"../cell-validation\";\r\n\r\nexport function CDMSDateCellValidator(cdms_field) {\r\n this.base = CellValidator;\r\n this.base(cdms_field);\r\n}\r\nCDMSDateCellValidator.prototype = new CellValidator;\r\n\r\nCDMSDateCellValidator.prototype.validateFieldControlTypeValidation = function (data) {\r\n\r\n if (data.value == null || data.value == \"\")\r\n return;\r\n\r\n //console.log(\"validating: \" + data.value + \" as a date.\");\r\n\r\n let the_date = moment(data.value, [\"MM/DD/YYYY\", \"YYYY-MM-DD\"], false); //will try both formats, strict=true\r\n\r\n //console.dir(the_date);\r\n\r\n if (!the_date.isValid())\r\n this.errors.push(new ValidationError(this.cdms_field, \"Value is not a date (mm/dd/yyyy).\"));\r\n\r\n //console.log(\"Result is: \" + the_date.isValid());\r\n //console.dir(this.errors);\r\n\r\n return this.errors;\r\n};\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"vGbJ\";","import {makeObjects} from '../../../common/common-functions';\r\nimport * as angular from 'angular';\r\n\r\nvar admin_edit_dataset_config = ['$scope', '$uibModal', '$timeout', '$routeParams', 'DatasetService', 'CommonService','ProjectService','AdminService',\r\n function ($scope, $uibModal, $timeout, $routeParams, DatasetService, CommonService, ProjectService, AdminService) {\r\n\r\n $scope.OnTab = \"Configuration\";\r\n $scope.SaveMessage = null;\r\n $scope.dataset = DatasetService.getDataset($routeParams.Id);\r\n\r\n $scope.dataset.$promise.then(function () {\r\n\r\n $scope.convertDisabledFields();\r\n\r\n\r\n $scope.dataset.childDatasets = DatasetService.getDatasetsList();\r\n $scope.dataset.childDatasets.$promise.then(function(){\r\n\r\n $scope.dataset.DefaultActivityQAStatusId = \"\" + $scope.dataset.DefaultActivityQAStatusId;\r\n $scope.dataset.DefaultRowQAStatusId = \"\" + $scope.dataset.DefaultRowQAStatusId;\r\n\r\n //load our child dataset if we have one already configured\r\n if($scope.dataset.ChildDatasetId != null){\r\n $scope.selectChildDataset();\r\n }\r\n\r\n $scope.QAStatusList = makeObjects($scope.dataset.QAStatuses, 'Id', 'Name');\r\n $scope.RowQAStatuses = makeObjects($scope.dataset.RowQAStatuses, 'Id', 'Name');\r\n //console.log($scope.dataset.ChildDatasetId)\r\n })\r\n\r\n });\r\n\r\n $scope.convertDisabledFields = function(){\r\n if($scope.dataset.Config.DataEntryPage && $scope.dataset.Config.DataEntryPage.DisabledFields){\r\n try{\r\n $scope.dataset.Config.DataEntryPage.DisabledFields = angular.toJson($scope.dataset.Config.DataEntryPage.DisabledFields);\r\n }catch{\r\n console.log(\"error converting DisabledFields\");\r\n }\r\n }\r\n }\r\n\r\n $scope.saveConfig = function () {\r\n $scope.SaveMessage = \"Saving...\";\r\n\r\n //console.dir($scope.childDataset)\r\n //console.dir($scope.dataset.Config);\r\n\r\n if($scope.dataset.Config.DataEntryPage && $scope.dataset.Config.DataEntryPage.DisabledFields){\r\n try{\r\n $scope.dataset.Config.DataEntryPage.DisabledFields = angular.fromJson($scope.dataset.Config.DataEntryPage.DisabledFields);\r\n }catch{\r\n console.log(\"error converting DisabledFields\");\r\n }\r\n }\r\n\r\n $scope.dataset.Config = angular.toJson($scope.dataset.Config);\r\n\r\n console.dir($scope.dataset.Config);\r\n\r\n var promise = DatasetService.saveDataset($scope.dataset );\r\n\r\n promise.$promise.then(function () {\r\n if($scope.childDataset){\r\n console.log(\"also save the child dataset\");\r\n $scope.childDataset.Config = angular.toJson($scope.childDataset.Config);\r\n var childPromise = DatasetService.saveDataset($scope.childDataset);\r\n childPromise.$promise.then(function(){\r\n $scope.SaveMessage = \"Save successful.\";\r\n $scope.childDataset.Config = angular.fromJson(childPromise.Config);\r\n }, function(error){\r\n console.dir(error);\r\n $scope.SaveMessage = \"Child save failed.\";\r\n })\r\n }\r\n $scope.dataset.Config = angular.fromJson(promise.Config);\r\n $scope.SaveMessage = \"Save successful.\";\r\n $scope.convertDisabledFields();\r\n }, function(error) {\r\n console.log(\"something went wrong:\");\r\n console.dir(promise);\r\n $scope.SaveMessage = \"Save failed.\";\r\n $scope.convertDisabledFields();\r\n });\r\n };\r\n\r\n $scope.selectChildDataset = function(){\r\n console.dir($scope.dataset.ChildDatasetId);\r\n $scope.childDataset = DatasetService.getDataset($scope.dataset.ChildDatasetId);\r\n $scope.childDataset.$promise.then(function(data){\r\n if(!$scope.childDataset.ChildDatasetKeyColumn) {\r\n $scope.childDataset.ChildDatasetKeyColumn = \"ParentId\"; //set the default to be ParentId\r\n $scope.childDataset.hasDefault = true;\r\n }\r\n console.dir($scope.childDataset)\r\n console.dir($scope.dataset);\r\n console.log($scope.dataset.ChildDatasetId)\r\n })\r\n }\r\n\r\n $scope.openChooseDuplicateFields = function () {\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/modal-choose-duplicate-fields.html',\r\n controller: 'ModalChooseDuplicateFieldsCtrl',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_field) {\r\n\r\n });\r\n };\r\n\r\n $scope.openChooseActivityListFields = function () {\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/admin/components/admin-page/templates/modal-choose-activitylist-fields.html',\r\n controller: 'ModalChooseActivityListFieldsCtrl',\r\n scope: $scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_field) {\r\n\r\n });\r\n };\r\n\r\n\r\n\r\n\r\n }\r\n\r\n];\r\n\r\nexport default admin_edit_dataset_config;\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport {AppComponent} from './app.component';\r\n\r\nconst routes: Routes = [\r\n // {path: '', component: AppComponent}\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","//CDMSTextCellValidator - extends CellValidator (use this one as a template for other validators)\r\n\r\n// validates text cells. this is just an example as there isn't any validation for text fields.\r\n\r\n//this.validation is an array of validations parsed from the cdms_field.Validation column.\r\n//see the structure of this.validation array in the \"output\" section of: tests/validations.js\r\n\r\n// to write a new validator, follow the pattern: subclass the CellValidator, implement the validateFieldControlTypeValidation function.\r\n\r\n\r\nimport {CellValidator} from \"../cell-validation\";\r\n\r\nexport function CDMSTextCellValidator(cdms_field) {\r\n this.base = CellValidator;\r\n this.base(cdms_field);\r\n};\r\nCDMSTextCellValidator.prototype = new CellValidator;\r\n\r\nCDMSTextCellValidator.prototype.validateFieldControlTypeValidation = function (data) {\r\n\r\n //console.log(\"validateFieldControlType for TEXTCell\");\r\n //you can validate text cells and push any errors that arise.\r\n\r\n //for example: the ken error\r\n //if (data.value != \"ken\")\r\n // this.errors.push(new ValidationError(this.cdms_field, \"Your name must be KEN\"));\r\n\r\n\r\n //\"t\" - this is for backwards compatibility support for text fields that actually hold time.\r\n // in the future we want to always store time as datetime (best practice) so that we can do datemath without converting, etc.\r\n // but for now we will allow \"t\" in the cdms_field.Validation column on a \"text\" cdms_field.ControlType to validate here.\r\n// if (this.validation[0] == \"t\")\r\n// {\r\n// var time_validator = new CDMSTimeCellValidator(data.colDef.cdmsField); //there should only be ONE place that time validation happens, the CDMSTimeCellValidator...\r\n// this.errors = time_validator.validateFieldControlTypeValidation(data);\r\n// }\r\n\r\n //\"nb\" - not blank - same as required, so is handled at field-level\r\n\r\n return this.errors;\r\n};\r\n","declare const d3: any;\r\n\r\nvar waterquality_chartservice = [\r\n function(){\r\n var service = {\r\n\r\n \tdataset: \"WaterQuality\",\r\n\r\n\t\t\tgetChartConfig: function () {\r\n\r\n var options = {\r\n chart: {\r\n type: 'multiBarChart',\r\n height: 230,\r\n width: 500,\r\n x: function (d) { return d.label; },\r\n y: function (d) { return d.value; },\r\n showLabels: true,\r\n //duration: 500,\r\n labelThreshold: 0.01,\r\n showControls: false,\r\n //labelSunbeamLayout: true,\r\n showLegend: false,\r\n yAxis: {\r\n tickFormat: function (d) {\r\n return d3.format(\"~.0\")(d);\r\n },\r\n }\r\n },\r\n title: {\r\n enable: true,\r\n text: 'Sample Count'\r\n },\r\n\r\n };\r\n\r\n return options;\r\n\r\n },\r\n\r\n getChartData: function () {\r\n\r\n var dataCalc = {\r\n 'Total': {}\r\n };\r\n\r\n //count up the total by species\r\n var data = [];\r\n data.forEach(function (row, key) {\r\n\r\n var num = 1;\r\n\t\t\t var characteristic = row.CharacteristicName || 'Unknown';\r\n\r\n if (!dataCalc['Total'][characteristic])\r\n dataCalc['Total'][characteristic] = num;\r\n else\r\n dataCalc['Total'][characteristic] += num;\r\n });\r\n\r\n\r\n\r\n Object.keys(dataCalc).forEach(function (key) {\r\n var the_count = [];\r\n Object.keys(dataCalc[key]).forEach(function (species) {\r\n var val = dataCalc[key][species];\r\n the_count.push({ 'label': species, 'value': val });\r\n });\r\n\r\n data.push({\r\n \"key\": key,\r\n //\"color\": color[sex],\r\n \"values\": the_count\r\n });\r\n });\r\n\r\n return data;\r\n },\r\n\r\n\r\n };\r\n\r\n return service;\r\n }\r\n];\r\n\r\nexport default waterquality_chartservice;\r\n","//this is a nested controller used on the project-details page to load\r\n// the instruments tab if it is a water temperature project.\r\nimport * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {getById, getDataGrade, orderByAlphaName} from \"../../../common/common-functions\";\r\nimport {DataGradeMethods} from \"../../../../config\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\nvar lookup_instruments = ['$scope', '$timeout','$routeParams', 'SubprojectService', 'ProjectService', 'DatasetService', 'CommonService', 'UserService',\r\n '$rootScope', '$uibModal', '$sce', '$window', '$http',\r\n 'ServiceUtilities', 'ConvertStatus', '$location', '$anchorScroll',\r\n function (scope, $timeout, routeParams, SubprojectService, ProjectService, DatasetService, CommonService, UserService, $rootScope, $uibModal, $sce, $window, $http,\r\n ServiceUtilities, ConvertStatus, $location, $anchorScroll) {\r\n //console.log(\"Inside tab instruments controller...\");\r\n\r\n scope.allInstruments = null;\r\n scope.getDataGrade = function (check) { return getDataGrade(check) }; //alias from service ?? TODO: check this kb/11/21\r\n scope.viewInstrument = null; //what they've clicked to view accuracy checks\r\n scope.selectedInstrument = null; //what they've selected in the dropdown to add to the project\r\n\r\n\r\n var CheckMethodRenderer = function (param) {\r\n return DataGradeMethods[param.data.CheckMethod]; //DataGradeMethods defined in config.js\r\n };\r\n\r\n var CheckDateRenderer = function (param) {\r\n return moment(param.data.CheckDate).format('L');\r\n };\r\n\r\n var EditLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.editInstrument(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var delBtn = document.createElement('a'); delBtn.href = '#'; delBtn.innerHTML = 'Delete';\r\n delBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.removeInstrument(param.data);\r\n });\r\n div.appendChild(delBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var addBtn = document.createElement('a'); addBtn.href = '#'; addBtn.innerHTML = 'Add AC';\r\n addBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.openAccuracyCheckForm(param.data, {});\r\n });\r\n div.appendChild(addBtn);\r\n\r\n return div;\r\n };\r\n\r\n var EditDetailLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.openAccuracyCheckForm(getById(scope.project.Instruments, param.data.InstrumentId), param.data);\r\n });\r\n div.appendChild(editBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var delBtn = document.createElement('a'); delBtn.href = '#'; delBtn.innerHTML = 'Delete';\r\n delBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.removeAccuracyCheck(param.data);\r\n });\r\n div.appendChild(delBtn);\r\n div.appendChild(document.createTextNode(\" | \"));\r\n\r\n var addBtn = document.createElement('a'); addBtn.href = '#'; addBtn.innerHTML = 'Add';\r\n addBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n scope.openAccuracyCheckForm(getById(scope.project.Instruments, param.data.InstrumentId), {});\r\n });\r\n div.appendChild(addBtn);\r\n\r\n return div;\r\n };\r\n\r\n //Instrument Accuracy Checks\r\n var instrDetailColDefs = [\r\n //{ colId: 'EditLinksDetail', cellRenderer: EditDetailLinksTemplate, width: 100, menuTabs: [], hide: true },\r\n { field: 'CheckDate', headerName: 'Check Date', width: 140, sort: 'desc', cellRenderer: CheckDateRenderer, menuTabs: []},\r\n { field: 'CheckMethod', headerName: 'Check Method', cellRenderer: CheckMethodRenderer, width: 300, menuTabs: ['filterMenuTab'] },\r\n { field: 'Bath1Grade', headerName: 'Bath 1 Grade', width: 130, menuTabs: ['filterMenuTab'] },\r\n { field: 'Bath2Grade', headerName: 'Bath 2 Grade', width: 130, menuTabs: ['filterMenuTab'] },\r\n { field: 'Comments', headerName: 'Comments', width: 340, menuTabs: [] },\r\n ];\r\n\r\n scope.instrDetailGridOptions = {\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n columnDefs: instrDetailColDefs,\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n ///////////////instruments grid\r\n scope.instrGridOptions = {\r\n masterDetail: true,\r\n suppressPropertyNamesCheck: true,\r\n detailCellRendererParams: {\r\n detailGridOptions: scope.instrDetailGridOptions,\r\n getDetailRowData: function (params) {\r\n params.successCallback(params.data.AccuracyChecks);\r\n },\r\n },\r\n //enableSorting: true,\r\n //enableFilter: true,\r\n //enableColResize: true,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n console.log(\"selection changed!\");\r\n scope.instrGridOptions.selectedItems = scope.instrGridOptions.api.getSelectedRows();\r\n //scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n onFilterModified: function () {\r\n scope.instrGridOptions.api.deselectAll();\r\n },\r\n selectedItems: [],\r\n columnDefs:\r\n [\r\n { colId: 'EditLinksMaster', cellRenderer: EditLinksTemplate, width: 160, menuTabs: [], hide: true },\r\n { field: 'Name', headerName: 'Name', width: 250, sort: 'asc', menuTabs: ['filterMenuTab'], filter: 'text', cellRenderer: 'group' },\r\n { field: 'SerialNumber', headerName: 'Serial Number', width: 150, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n { field: 'Manufacturer', headerName: 'Manufacturer', width: 150, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n { field: 'Model', headerName: 'Model', width: 180, menuTabs: ['filterMenuTab'], filter: 'text'},\r\n { field: 'InstrumentType.Name', headerName: 'Type', menuTabs: ['filterMenuTab'], filter: 'text' },\r\n {\r\n //field: 'StatusId',\r\n field: 'StatusText',\r\n headerName: 'Status',\r\n width: 150,\r\n menuTabs: ['filterMenuTab'],\r\n // When the StatusId is a number, the displayed values and the column filter suggest the user to enter text values (Active or Inactive).\r\n // However, the filter does not work, unless the user enters the corresponding StatusId number (0 for Active, 1 for Inactive).\r\n // This is confusing and makes the user thing the filter is broke.\r\n // Therefore, down below in scope.$parent.$watch, we set StatusText the value to the text, for displaying, and then the filter works.\r\n //cellRenderer: function (params) { return (params.node.data.StatusId == 0) ? 'Active' : 'Inactive'; },\r\n filter: 'text'\r\n },\r\n //{ field: 'OwningDepartment.Name', headerName: 'Owner', width: 250, menuTabs: ['filterMenuTab'], },\r\n\r\n\r\n ],\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n },\r\n };\r\n\r\n\r\n\r\n\r\n //watch the datasets on the parent-detail page to load... once they do, check to see if we should show our tab\r\n var inst_ds_watcher = scope.$parent.$watch('datasets', function () {\r\n //console.log(\"Inside TAB INSTRUMENTS watch datasets... --------------------------\");\r\n\r\n //console.log(\"parent datasets\");\r\n //console.dir(scope.$parent.datasets);\r\n //console.log(\"our datasets\");\r\n //console.dir(scope.datasets);\r\n\r\n if (scope.datasets === undefined || scope.datasets.length === 0)\r\n return;\r\n\r\n //console.log(\"OK TAB INSTRUMENTS . The datasets are loaded...\");\r\n\r\n //scope.datasets = scope.$parent.datasets; //but i dont' want to do this.\r\n\r\n inst_ds_watcher(); //turn off watcher\r\n\r\n // Moved this block over to project-detail.js, in the users watch.\r\n // This part was running before user results were back yet.\r\n /*for (var i = 0; i < scope.datasets.length; i++) { //look through the datasets for one of ours.\r\n\r\n //console.log(\"Woohoo! are we water tempproject?\"); //TODO!! don't look at the dataset, look at the project type\r\n //console.dir(scope.project);\r\n\r\n if (scope.datasets[i].Datastore.TablePrefix === \"WaterTemp\") {\r\n console.log(\"Adding instruments to tab bar...\");\r\n console.log(\"scope is next...\");\r\n console.dir(scope);\r\n //scope.ShowInstruments = true;\r\n\r\n if ((scope.currentUserId === scope.project.OwnerId) || scope.UserIsEditor || scope.UserIsAdmin)\r\n scope.ShowInstruments = true;\r\n }\r\n }\r\n */\r\n }, true);\r\n\r\n //when the parent project is loaded...\r\n scope.$parent.$watch('project.Id', function () {\r\n\r\n if (typeof scope.project === 'undefined' || typeof scope.project.Id === 'undefined')\r\n return;\r\n\r\n console.log(\"project done loading: your project instruments:-------------------- *************************\");\r\n console.dir(scope.project.Instruments);\r\n\r\n $timeout(function () {\r\n\r\n var ag_grid_div = document.querySelector('#instruments-tab-grid') as HTMLElement; //get the container id...\r\n scope.ag_grid = new Grid(ag_grid_div, scope.instrGridOptions); //bind the grid to it.\r\n scope.instrGridOptions.api.showLoadingOverlay(); //show loading...\r\n\r\n //build the grid based on our subprojects\r\n var tmpInstruments = angular.copy(scope.project.Instruments);\r\n\r\n tmpInstruments.forEach(function (tmpInstrument) {\r\n //if (tmpInstrument.StatusId === 0)\r\n // console.log(\"Found active one\");\r\n\r\n tmpInstrument.StatusText = ConvertStatus.convertStatus(tmpInstrument.StatusId);\r\n });\r\n\r\n //scope.instrGridOptions.api.setRowData(scope.project.Instruments);\r\n scope.instrGridOptions.api.setRowData(tmpInstruments);\r\n\r\n //if user can edit, unhide the edit links\r\n if ($rootScope.Profile.canEdit(scope.project)) {\r\n scope.instrGridOptions.columnApi.setColumnVisible(\"EditLinksMaster\", true);\r\n scope.instrDetailGridOptions.columnDefs.unshift({ colId: 'EditLinksDetail', cellRenderer: EditDetailLinksTemplate, width: 140, menuTabs: [] }); //add this column to the front of the detail grid cols\r\n }\r\n\r\n }, 0);\r\n\r\n //these are the ones that show up in the dropdown list to select from -- ALL the instruments in the world.\r\n scope.allInstruments = ProjectService.getAllInstruments();\r\n\r\n //filter and only show instruments not already in our project.\r\n scope.allInstruments.$promise.then(function () {\r\n scope.filterAllInstruments();\r\n });\r\n\r\n\r\n //console.log(\"Parent project is loaded! watching from instruments tab ---------------- >>>>>>>>>>>>>>\");\r\n\r\n //reload if it is already selected -- this is what allows you to see the new accuracycheck/characteristic immediately after it is added\r\n //if (scope.viewInstrument)\r\n //{\r\n // scope.viewInstrument = getMatchingByField(scope.project.Instruments, scope.viewInstrument.Id, 'Id')[0];\r\n //}\r\n });\r\n\r\n scope.createInstrument = function () {\r\n scope.viewInstrument = null;\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-create-instrument.html',\r\n controller: 'ModalCreateInstrumentCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n\r\n scope.viewSelectedInstrument = function (instrument) {\r\n scope.viewInstrument = instrument;\r\n };\r\n\r\n scope.addInstrument = function () {\r\n\t\t\t/* Verify that situations are true:\r\n\t\t\t* scope.selectedInstrument exists\t\t\t\tThis is important because IE will not actually select something, when you select it the first time.\r\n\t\t\t* scope.selectedInstrument is not null\t\t\tImportant for the same reason just mentioned.\r\n\t\t\t*/\r\n if (!scope.selectedInstrument || scope.selectedInstrument === null )\r\n {\r\n alert(\"Please select an Instrument from the dropdown to add to this project.\");\r\n return;\r\n }\r\n\r\n var instrument_to_add = getById(scope.allInstruments, scope.selectedInstrument)\r\n var promise = ProjectService.saveProjectInstrument(scope.project.Id, instrument_to_add);\r\n\r\n promise.$promise.then(function () {\r\n //done, add it to the list.\r\n scope.project.Instruments.push(instrument_to_add);\r\n scope.filterAllInstruments();\r\n scope.instrGridOptions.api.setRowData(scope.project.Instruments);\r\n });\r\n };\r\n\r\n scope.removeInstrument = function (instrument) {\r\n scope.viewInstrument = instrument;\r\n if (!scope.viewInstrument)\r\n return;\r\n\r\n if (confirm(\"Are you sure you want to remove this Instrument from this Project?\")) {\r\n var promise = ProjectService.removeProjectInstrument(scope.project.Id, scope.viewInstrument.Id);\r\n\r\n promise.$promise.then(function () {\r\n scope.project.Instruments.forEach(function (item, index) {\r\n if (item.Id === scope.viewInstrument.Id) {\r\n scope.project.Instruments.splice(index, 1);\r\n scope.instrGridOptions.api.setRowData(scope.project.Instruments);\r\n scope.allInstruments.push(instrument);\r\n scope.filterAllInstruments();\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n scope.removeAccuracyCheck = function (ac) {\r\n\r\n var instrument = getById(scope.project.Instruments, ac.InstrumentId);\r\n if (typeof instrument === 'undefined') {\r\n alert(\"Cannot remove that Accuracy Check. Can't find related instrument. Please share this error with your administrator.\");\r\n return;\r\n }\r\n\r\n if (confirm(\"Are you sure you want to remove this Accuracy Check from this Instrument?\")) {\r\n\r\n var promise = ProjectService.removeInstrumentAccuracyCheck(ac.InstrumentId, ac);\r\n\r\n promise.$promise.then(function () {\r\n instrument.AccuracyChecks.forEach(function (item, index) {\r\n if (item.Id === ac.Id) {\r\n instrument.AccuracyChecks.splice(index, 1);\r\n scope.instrGridOptions.api.setRowData(scope.project.Instruments);\r\n var the_node = scope.expandById(ac.InstrumentId);\r\n if (the_node != null)\r\n scope.instrGridOptions.api.ensureNodeVisible(the_node);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n scope.editInstrument = function (instrument) {\r\n\r\n scope.viewInstrument = instrument;\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-create-instrument.html',\r\n controller: 'ModalCreateInstrumentCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n }).result.then(function (saved_instrument) {\r\n //console.log(\"ok - we saved so update the grid...\");\r\n var total = scope.project.Instruments.length;\r\n var count = 0;\r\n var updated = false;\r\n scope.project.Instruments.forEach(function (item, index) {\r\n if (item.Id === saved_instrument.Id) {\r\n updated = true;\r\n\r\n //console.log(\"ok we found a match! -- updating! before:\");\r\n //console.dir(scope.subprojectList[index]);\r\n\r\n if (saved_instrument.AccuracyChecks !== undefined)\r\n delete saved_instrument.AccuracyChecks; //remove this before the copy.\r\n\r\n angular.extend(scope.project.Instruments[index], saved_instrument); //replace the data for that item\r\n //console.log(\"ok we found a match! -- updating! after:\");\r\n scope.instrGridOptions.api.redrawRows();\r\n console.log(\"done reloading grid after editing an instrument.\");\r\n }\r\n count++;\r\n if (count == total && updated == false) //if we get all done and we never found it, lets add it to the end.\r\n {\r\n //console.log(\"ok we found never a match! -- adding!\");\r\n saved_instrument.AccuracyChecks = [];\r\n scope.project.Instruments.push(saved_instrument); //add that item\r\n scope.instrGridOptions.api.setRowData([]);\r\n scope.instrGridOptions.api.setRowData(scope.project.Instruments);\r\n\r\n console.log(\"done reloading grid after adding an instrument.\");\r\n }\r\n });\r\n\r\n //console.log(\"updated the list and the grid... now refreshing the instrument lists\");\r\n //scope.refreshSubprojectLists(); //funders, collaborators, etc.\r\n\r\n });\r\n };\r\n\r\n\r\n\r\n\r\n //returns the (last) node or null if none found.\r\n scope.expandById = function (id_in) {\r\n var the_node = null;\r\n scope.instrGridOptions.api.forEachNode(function (node) {\r\n if (node.data.Id === id_in) {\r\n //console.log(\"Expanding! \" + id_in);\r\n node.setExpanded(true);\r\n the_node = node;\r\n }\r\n });\r\n return the_node;\r\n };\r\n\r\n\r\n\r\n\r\n //called by the modal once the instrument accuracy check is successfully saved.\r\n scope.postInstrumentAccuracyCheckUpdateGrid = function (edited_item) {\r\n //edit our instrument's accuracy check and then reload the grid.\r\n var edited = false;\r\n scope.project.Instruments.forEach(function (item, index) {\r\n if (item.Id === edited_item.InstrumentId) {\r\n item.AccuracyChecks.forEach(function (instr_item, instr_item_index) {\r\n if (instr_item.Id === edited_item.Id) {\r\n angular.extend(instr_item, edited_item); //replace the data for that item\r\n console.log(\"OK!! we edited that accuracy check item\");\r\n edited = true;\r\n }\r\n });\r\n if (!edited) {\r\n item.AccuracyChecks.push(edited_item);\r\n console.log(\"OK we added that accuracy check item!\");\r\n }\r\n }\r\n });\r\n\r\n\r\n scope.instrGridOptions.api.setRowData(scope.project.Instruments);\r\n\r\n //after we setRowData, the grid collapses our expanded item. we want it to re-expand that item and make sure it is visible.\r\n var the_node = scope.expandById(edited_item.InstrumentId);\r\n if (the_node != null)\r\n scope.instrGridOptions.api.ensureNodeVisible(the_node);\r\n\r\n console.log(\"done reloading grid after editing accuracy check item.\");\r\n\r\n };\r\n\r\n scope.openAccuracyCheckForm = function (a_instrument, ac_row) {\r\n\r\n scope.viewInstrument = a_instrument;\r\n\r\n //use this format so that our accuracy check form works on the quick-edit on data entry\r\n scope.row = {\r\n Activity: { Instrument: a_instrument }\r\n };\r\n\r\n if (ac_row)\r\n scope.ac_row = ac_row;\r\n else\r\n scope.ac_row = {};\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/core/common/components/modals/templates/modal-new-accuracycheck.html',\r\n controller: 'ModalAddAccuracyCheckCtrl',\r\n scope: scope, //very important to pass the scope along...\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n };\r\n\r\n scope.filterAllInstruments = function () {\r\n var filteredInstruments = [];\r\n scope.allInstruments.forEach(function (item, index) {\r\n var have_instrument = getById(scope.project.Instruments, item.Id);\r\n if (typeof have_instrument === 'undefined' || have_instrument == null) {\r\n filteredInstruments.push(item);\r\n }\r\n });\r\n scope.allInstruments = filteredInstruments.sort(orderByAlphaName);\r\n };\r\n\r\n}];\r\n\r\nexport default lookup_instruments;\r\n","import * as angular from 'angular';\r\nimport * as moment from 'moment';\r\nimport {valueFormatterDate} from \"../../../../core/common/common-functions\";\r\nimport {LeaseModalScope} from \"./lease-scope\";\r\n// import leasing_module from \"../../leasing-module\";\r\n\r\nimport {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar manage_operators = ['$scope', '$route', '$routeParams', '$uibModal', '$location', '$window', '$rootScope', 'LeasingService',\r\n function ($scope, $route, $routeParams, $uibModal, $location, $window, $rootScope,LeasingService) {\r\n\r\n $rootScope.inModule = \"leasing\";\r\n\r\n if (!$scope.Profile.hasRole(\"Leasing\"))\r\n angular.rootScope.go(\"/unauthorized\");\r\n\r\n LeaseModalScope.prepareLeaseModalScope($scope, LeasingService);\r\n\r\n $scope.operators = LeasingService.getOperators();\r\n $scope.saveResults = {};\r\n\r\n $scope.operators.$promise.then(function () {\r\n $scope.operatorsGridDiv = document.querySelector('#operators-grid');\r\n new Grid($scope.operatorsGridDiv, $scope.operatorsGrid);\r\n\r\n if ($rootScope.Profile.hasRole(\"LeasingEditor\")) {\r\n $scope.operatorsGrid.columnApi.setColumnVisible(\"EditLinks\", true);\r\n $scope.operatorsGrid.api.refreshHeader();\r\n }\r\n });\r\n\r\n var EditLinksTemplate = function (param) {\r\n\r\n var div = document.createElement('div');\r\n\r\n var editBtn = document.createElement('a'); editBtn.href = '#'; editBtn.innerHTML = 'Edit';\r\n editBtn.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n $scope.openAddOperator(param.data);\r\n });\r\n div.appendChild(editBtn);\r\n\r\n return div;\r\n };\r\n\r\n\r\n var operatorColumnDefs = [\r\n { colId: 'EditLinks', width: 90, cellRenderer: EditLinksTemplate, menuTabs: []},\r\n { headerName: \"Organization\", field: \"Organization\", width: 180, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"FirstName\", field: \"FirstName\", width: 160, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: \"LastName\", field: \"LastName\", width: 160, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: \"Prefix\", field: \"Prefix\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Suffix\", field: \"Suffix\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"MailingAddress1\", field: \"MailingAddress1\", width: 160, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: \"MailingAddress2\", field: \"MailingAddress2\", width: 160, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: \"MailingCity\", field: \"MailingCity\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"MailingState\", field: \"MailingState\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"MailingZip\", field: \"MailingZip\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"PhysicalAddress1\", field: \"PhysicalAddress1\", width: 160, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: \"PhysicalAddress2\", field: \"PhysicalAddress2\", width: 160, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: \"PhysicalCity\", field: \"PhysicalCity\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"PhysicalState\", field: \"PhysicalState\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"PhysicalZip\", field: \"PhysicalZip\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"IsMailingDifferent\", field: \"IsMailingDifferent\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n { headerName: \"Phone\", field: \"Phone\", width: 160, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: \"Cell\", field: \"Cell\", width: 160, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: \"Fax\", field: \"Fax\", width: 160, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: \"Email\", field: \"Email\", width: 160, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n {\r\n headerName: \"LastUpdated\", field: \"LastUpdated\", width: 160,\r\n valueGetter: function (params) { return moment(params.node.data.LastUpdated) },\r\n valueFormatter: function (params) {\r\n return valueFormatterDate(params.node.data.LastUpdated);\r\n }, menuTabs: ['filterMenuTab'], filter: 'date'\r\n },\r\n { headerName: \"UpdatedBy\", field: \"UpdatedBy\", width: 160, menuTabs: ['filterMenuTab'], filter: 'text' },\r\n { headerName: \"Inactive\", field: \"Inactive\", width: 160, menuTabs: ['filterMenuTab'], filter: true },\r\n\r\n ];\r\n\r\n $scope.deleteOperator = function () {\r\n\r\n $scope.saveResults = {};\r\n if (confirm(\"Are you sure you want to delete this operator?\")) {\r\n var deleting = LeasingService.deleteOperator($scope.operatorsGrid.selectedItems[0]);\r\n\r\n deleting.$promise.then(function () {\r\n $scope.saveOperatorCallback(); //refresh the operators...\r\n $scope.saveResults.success=true;\r\n },function(data){\r\n $scope.saveResults.failure=true;\r\n $scope.saveResults.message=\"Most likely there is a lease associated with this Operator.\"\r\n });\r\n }\r\n };\r\n\r\n $scope.openAddOperator = function (params) {\r\n $scope.saveResults = {};\r\n delete $scope.operator_modal;\r\n\r\n if (params) {\r\n $scope.operator_modal = params;\r\n }\r\n\r\n var modalInstance = $uibModal.open({\r\n templateUrl: 'appjsLegacy/private/leasing/components/manage/templates/add-operator-modal.html',\r\n controller: 'AddOperatorModalController',\r\n scope: $scope,\r\n backdrop: \"static\",\r\n keyboard: false\r\n });\r\n }\r\n\r\n $scope.operatorsGrid = {\r\n columnDefs: operatorColumnDefs,\r\n rowData: $scope.operators,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n $scope.operatorsGrid.selectedItems = $scope.operatorsGrid.api.getSelectedRows();\r\n $scope.$apply(); //trigger angular to update our view since it doesn't monitor ag-grid\r\n },\r\n selectedItems: [],\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n }\r\n\r\n $scope.saveOperatorCallback = function () {\r\n $scope.operators = LeasingService.getOperators();\r\n\r\n $scope.operators.$promise.then(function () {\r\n if ($scope.operatorsGrid.api)\r\n $scope.operatorsGrid.api.setRowData($scope.operators);\r\n });\r\n\r\n }\r\n\r\n $scope.currentUser = $rootScope.Profile.Fullname;\r\n $scope.currentDay = moment().format();\r\n}];\r\n\r\nexport default manage_operators;\r\n","\r\nvar project_preferences = ['$scope', '$rootScope', '$location','UserService','$window',\r\n function ($scope, $rootScope, $location, UserService, $window){\r\n\t\t$scope.myprojects = UserService.getMyProjects();\r\n}];\r\n\r\nexport default project_preferences;\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {ConfirmService} from \"../confirm.service\";\r\nimport {ActivatedRoute} from \"@angular/router\";\r\nimport {Subscription} from \"rxjs\";\r\n\r\n\r\n@Component({\r\n selector: 'app-confirm-review',\r\n templateUrl: './confirm-review.component.html',\r\n styleUrls: ['./confirm-review.component.scss']\r\n})\r\nexport class ConfirmReviewComponent implements OnInit {\r\n public error = undefined\r\n public data: any;\r\n public PermitEventId: any;\r\n public confirmData: { PermitEventId: any, Name?: any, Email?: any, Comments?: any, Confirmation?: any, ProposedTime?: any };\r\n public downloadLink: string;\r\n public savedMessage: string;\r\n public downloadName: string;\r\n private routeSub: Subscription;\r\n public loading: boolean = true;\r\n public confirmName: string;\r\n public confirmEmail: string;\r\n public confirmComments: string;\r\n public confirmConfirmation: any;\r\n\r\n constructor(private confirmService: ConfirmService, private route: ActivatedRoute) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.routeSub = this.route.params.subscribe(params => {\r\n this.PermitEventId = params['Id'];\r\n console.log(this.PermitEventId)\r\n });\r\n\r\n // let PermitEventId = $routeParams[\"Id\"];\r\n // this.data = this.confirmService.getConfirmationData(this.PermitEventId).subscribe(val => this.data = val);\r\n this.data = this.confirmService.getConfirmationData(this.PermitEventId).toPromise();\r\n\r\n this.data.then((res) => {\r\n this.data = res;\r\n this.confirmData = {\"PermitEventId\": this.data.PermitEvent.Id};\r\n\r\n if (this.data.User) {\r\n //@ts-ignore\r\n this.confirmData.Name = this.data.User.Fullname;\r\n //@ts-ignore\r\n this.confirmData.Email = this.data.PermitEvent.AssigneeEmail\r\n }\r\n this.loading = false\r\n })\r\n this.downloadLink = \"\";\r\n // this.confirm();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.routeSub.unsubscribe();\r\n }\r\n\r\n confirm() {\r\n if (this.confirmData) {\r\n if (!this.confirmData.Name || !this.confirmData.Email || !this.confirmData.Confirmation) {\r\n alert(\"Please fill in all required form fields.\");\r\n return;\r\n }\r\n console.log(this.confirmData);\r\n let save_result = this.confirmService.saveConfirmation(this.confirmData).toPromise();\r\n save_result.then(() => {\r\n\r\n if (this.data.PermitEvent.EventType == \"Inspection\") {\r\n this.savedMessage = \"Successfully confirmed. Generating inspection form...\";\r\n let template = this.confirmService.downloadInspectionDocument(this.data.PermitEvent.Id)\r\n template.toPromise().then((res) => {\r\n this.savedMessage = \"Successfully confirmed.\";\r\n //@ts-ignore\r\n this.downloadLink = res.InspectionFormUrl;\r\n this.downloadName = \"InspectionForm_\" + this.data.PermitEvent.Id + \".pdf\";\r\n });\r\n } else {\r\n this.savedMessage = \"Successfully confirmed.\";\r\n }\r\n\r\n }, (data) => {\r\n this.error = \"There was a problem saving your confirmation. Please call the CTUIR TPO office to confirm (541-276-3099) or try again.\"\r\n console.dir(data);\r\n })\r\n }\r\n\r\n\r\n }\r\n}\r\n","//modal to add fee\r\n// note - this modal allows editing of the fee fields of the selected permit\r\nimport * as angular from 'angular';\r\nimport * as moment from 'moment';\r\n\r\nvar modal_add_fee = ['$scope', '$uibModal','$uibModalInstance','Upload','PermitService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, $upload, PermitService) {\r\n\r\n $scope.row.FeePaymentDate = moment().format('L');\r\n\r\n $scope.save = function () {\r\n\r\n var save_permit = angular.copy($scope.row);\r\n save_permit.ReviewsRequired = angular.toJson(save_permit.ReviewsRequired);\r\n\r\n var new_permit = PermitService.savePermit(save_permit);\r\n\r\n new_permit.$promise.then(function () {\r\n console.log(\"done and success!\");\r\n $uibModalInstance.close(new_permit);\r\n });\r\n\r\n };\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n }\r\n];\r\n\r\nexport default modal_add_fee;\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {ConfirmService} from \"../confirm.service\";\r\nimport {ActivatedRoute} from \"@angular/router\";\r\nimport {Subscription} from \"rxjs\";\r\n\r\n@Component({\r\n selector: 'app-confirm',\r\n templateUrl: './confirm.component.html',\r\n styleUrls: ['./confirm.component.scss']\r\n})\r\nexport class ConfirmComponent implements OnInit {\r\n public error = undefined\r\n public data: any;\r\n public PermitEventId: any;\r\n public confirmData: { PermitEventId: any, Name?: any, Email?: any, Comments?: any, Confirmation?: any, ProposedTime?: any };\r\n public downloadLink: string;\r\n public savedMessage: string;\r\n public downloadName: string;\r\n private routeSub: Subscription;\r\n public loading: boolean = true;\r\n public confirmName: string;\r\n public confirmEmail: string;\r\n public confirmComments: string;\r\n public confirmConfirmation: any;\r\n\r\n\r\n constructor(private confirmService: ConfirmService, private route: ActivatedRoute) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.routeSub = this.route.params.subscribe(params => {\r\n this.PermitEventId = params['Id'];\r\n console.log(this.PermitEventId)\r\n });\r\n\r\n // let PermitEventId = $routeParams[\"Id\"];\r\n // this.data = this.confirmService.getConfirmationData(this.PermitEventId).subscribe(val => this.data = val);\r\n this.data = this.confirmService.getConfirmationData(this.PermitEventId).toPromise();\r\n\r\n this.data.then((res) => {\r\n this.data = res;\r\n this.confirmData = {\"PermitEventId\": this.data.PermitEvent.Id};\r\n\r\n if (this.data.User) {\r\n //@ts-ignore\r\n this.confirmData.Name = this.data.User.Fullname;\r\n //@ts-ignore\r\n this.confirmData.Email = this.data.PermitEvent.AssigneeEmail\r\n }\r\n this.loading = false\r\n })\r\n this.downloadLink = \"\";\r\n // this.confirm();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.routeSub.unsubscribe();\r\n }\r\n\r\n confirm() {\r\n if (this.confirmData) {\r\n if (!this.confirmData.Name || !this.confirmData.Email || !this.confirmData.Confirmation) {\r\n alert(\"Please fill in all required form fields.\");\r\n return;\r\n }\r\n\r\n let save_result = this.confirmService.saveConfirmation(this.confirmData).toPromise();\r\n save_result.then(() => {\r\n\r\n if (this.data.PermitEvent.EventType == \"Inspection\") {\r\n this.savedMessage = \"Successfully confirmed. Generating inspection form...\";\r\n let template = this.confirmService.downloadInspectionDocument(this.data.PermitEvent.Id)\r\n template.toPromise().then((res) => {\r\n this.savedMessage = \"Successfully confirmed.\";\r\n //@ts-ignore\r\n this.downloadLink = res.InspectionFormUrl;\r\n this.downloadName = \"InspectionForm_\" + this.data.PermitEvent.Id + \".pdf\";\r\n });\r\n } else {\r\n this.savedMessage = \"Successfully confirmed.\";\r\n }\r\n\r\n }, (data) => {\r\n this.error = \"There was a problem saving your confirmation. Please call the CTUIR TPO office to confirm (541-276-3099) or try again.\"\r\n console.dir(data);\r\n })\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n}\r\n","import {Grid} from \"ag-grid-community\";\r\nimport 'ag-grid-enterprise';\r\n\r\nvar modal_select_grid = ['$scope', '$uibModalInstance','CommonService',\r\n function ($scope, $uibModalInstance, CommonService){\r\n\r\n\r\n\r\n\t$scope.data = CommonService.getSelectGridData($scope.grid_field.cdmsField.FieldId);\r\n\t$scope.data.$promise.then(function(){\r\n\r\n\t\t//$scope.data = $scope.grid_field.PossibleValues;\r\n\t\t//console.dir($scope.grid_field.PossibleValues);\r\n\r\n\t\tvar columnDefs = [];\r\n\r\n\t\t//console.dir($scope.data);\r\n\r\n\t\tObject.keys($scope.data[0]).forEach(function(key){\r\n\t\t\tvar aField = {\r\n\t\t\t\tfield: key,\r\n\t\t\t\theaderName: key,\r\n\t\t\t\tmenuTabs: ['filterMenuTab'],\r\n\t\t\t\tfilter: 'text'\r\n\t\t\t};\r\n\t\t\tif(key == 'Label'){\r\n\t\t\t // @ts-ignore\r\n\t\t\t\taField.sort = 'asc';\r\n\t\t\t}\r\n\t\t\tcolumnDefs.push(aField);\r\n\t\t})\r\n\r\n\t\t$scope.selectGrid = {\r\n\t\t\tcolumnDefs: columnDefs,\r\n\t\t\trowData: $scope.data,\r\n\t\t\trowSelection: 'single',\r\n\t\t\tonSelectionChanged: function (params) {\r\n\t\t\t\t$scope.selectGrid.selectedItem = $scope.selectGrid.api.getSelectedRows()[0];\r\n\t\t\t},\r\n\t\t\tonRowDoubleClicked: function(params) {\r\n\t\t\t\t$scope.selectItemGrid();\r\n\t\t\t},\r\n\t\t\tselectedItem: null,\r\n\t\t\tdefaultColDef: {\r\n\t\t\t\teditable: false,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tresizable: true,\r\n\t\t\t},\r\n\t\t\tonFirstDataRendered: function(){\r\n\t\t\t\tlet allColumnIds = [];\r\n\t\t\t\t$scope.selectGrid.columnApi.getAllColumns().forEach(function (columnDef) {\r\n\t\t\t\t\tallColumnIds.push(columnDef.colId);\r\n\t\t\t\t});\r\n\t\t\t\t$scope.selectGrid.columnApi.autoSizeColumns(allColumnIds);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t$scope.bindGrid();\r\n\r\n\t});\r\n\r\n\t$scope.bindGrid = function(){\r\n\t\t$scope.ag_grid_div = document.querySelector('#select-grid'); //get the container id...\r\n\t\t$scope.ag_grid = new Grid($scope.ag_grid_div, $scope.selectGrid); //bind the grid to it.\r\n\r\n\t\t//if an item is already selected, select the node.\r\n\t\tif($scope.row[$scope.grid_field.DbColumnName])\r\n\t\t{\r\n\t\t\tvar theId = $scope.row[$scope.grid_field.DbColumnName]\r\n\t\t\t$scope.selectGrid.api.forEachNode(function(item){\r\n\t\t\t\tif(item.data.Id == theId){\r\n\t\t\t\t\titem.setSelected(true);\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t$scope.selectGrid.api.ensureNodeVisible(item);\r\n\t\t\t\t\t},500)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t$scope.selectItemGrid = function(){\r\n\t\t$uibModalInstance.close($scope.selectGrid.selectedItem.Id);\r\n };\r\n\r\n $scope.cancelGrid = function(){\r\n $uibModalInstance.dismiss();\r\n };\r\n }\r\n];\r\n\r\nexport default modal_select_grid;\r\n","// defines the preferences module\r\nimport * as angular from 'angular';\r\n// require([\r\n//load components\r\nimport my_preferences from \"./components/my-preferences/my-preferences\";\r\nimport dataset_preferences from \"./components/dataset-preferences/dataset-preferences\";\r\nimport project_preferences from \"./components/project-preferences/project-preferences\";\r\nimport landing_page from \"./components/landing-page/landing-page\";\r\nimport user_analytics from \"./components/analytics/user-analytics\";\r\n\r\n//load preference service\r\nimport user_service from \"./user-service\";\r\nimport {serviceUrl} from \"../../config\";\r\n\r\n//add the controllers and services to the module once the files are loaded!\r\nconst user_module = angular.module('UserModule', ['ui.bootstrap', 'ngResource']);\r\n//controllers\r\nuser_module.controller('MyPreferencesCtrl', my_preferences);\r\nuser_module.controller('MyDatasetsCtrl', dataset_preferences);\r\nuser_module.controller('MyProjectsCtrl', project_preferences);\r\nuser_module.controller('UserAnalyticsCtrl', user_analytics);\r\nuser_module.controller('LandingPage', landing_page);\r\n\r\n\r\nuser_module.factory('SaveUserInfo', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/user/saveuserinfo');\r\n}]);\r\n\r\nuser_module.factory('GetMyProjectsAction', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/user/getmyprojects', {}, {\r\n query: {method: 'GET', params: {}, isArray: true}\r\n });\r\n}]);\r\n\r\nuser_module.factory('GetMyProjectsList', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/user/getmyprojectslist', {}, {\r\n query: {method: 'GET', params: {}, isArray: true}\r\n });\r\n}]);\r\n\r\nuser_module.factory('SaveUserPreferenceAction', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/user/saveuserpreference', {}, {\r\n save: {method: 'POST', isArray: false}\r\n });\r\n}]);\r\n\r\nuser_module.factory('GetMyDatasetsAction', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/user/getmydatasets', {}, {\r\n query: {method: 'GET', params: {}, isArray: true}\r\n });\r\n}]);\r\n\r\nuser_module.factory('GetMyDatasetsList', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/user/getmydatasetslist', {}, {\r\n query: {method: 'GET', params: {}, isArray: true}\r\n });\r\n}]);\r\n\r\nuser_module.factory('GetMyLastUpdatedDatasets', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/user/GetMyLastUpdatedDatasets', {}, {\r\n query: {method: 'GET', params: {}, isArray: true}\r\n });\r\n}]);\r\n\r\n//analytics\r\n\r\nuser_module.factory('UserLoginsPastMonth', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/analytics/UserLoginsPastMonth', {}, {\r\n query: {method: 'GET', params: {}, isArray: true}\r\n });\r\n}]);\r\n\r\n\r\nuser_module.factory('UserRequestsTotalPastMonth', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/analytics/UserRequestsTotalPastMonth', {}, {\r\n query: {method: 'GET', params: {}, isArray: true}\r\n });\r\n}]);\r\n\r\nuser_module.factory('DatasetRequestsTotalPastMonth', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/analytics/DatasetRequestsTotalPastMonth', {}, {\r\n query: {method: 'GET', params: {}, isArray: true}\r\n });\r\n}]);\r\n\r\nuser_module.factory('LastUpdatedDatasets', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/analytics/LastUpdatedDatasets', {}, {\r\n query: {method: 'GET', params: {}, isArray: true}\r\n });\r\n}]);\r\n\r\nuser_module.factory('SearchProjects', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/search/searchprojects', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\nuser_module.factory('SearchDatasets', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/search/searchdatasets', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\nuser_module.factory('SearchFiles', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/search/searchfiles', {}, {\r\n save: {method: 'POST', isArray: true}\r\n });\r\n}]);\r\n\r\nuser_module.service('UserService', user_service);\r\n\r\nexport default user_module;\r\n\r\n\r\n","//Cell Control Types are defined below with their validators and their formatters\r\n// Each type of control that can be in a grid needs to have a basic\r\n// definition that will be used to configure a column of that type with the\r\n// cell editors, cell validators, formatters, etc. so that they function properly according to their type (dropdown, currency, date, etc.).\r\n\r\n\r\n//multiselect list - displays as multiple selection dropdown list\r\nimport * as moment from 'moment';\r\nimport {\r\n filterToCurrency,\r\n formatUsPhone,\r\n getAgGridFilterKeyCreator,\r\n getJsonObjects,\r\n getParsedMetadataValues,\r\n getProjectFilesArrayAsLinks,\r\n getSubprojectFilesArrayAsLinks,\r\n getTextArrayAsList,\r\n isArray,\r\n parseToFloat\r\n} from \"../../common-functions\";\r\nimport {\r\n CDMSMultiselectCellEditor,\r\n CDMSSelectCellEditor,\r\n CDMSTextareaCellEditor,\r\n CDMSTextCellEditor\r\n} from \"./cell-editors\";\r\nimport {CDMSMultiselectCellValidator} from \"./validators/CDMSMultiselectCellValidator\";\r\nimport {CDMSSelectCellValidator} from \"./validators/CDMSSelectCellValidator\";\r\nimport {CDMSDateCellValidator} from \"./validators/CDMSDateCellValidator\";\r\nimport {CDMSTimeCellValidator} from \"./validators/CDMSTimeCellValidator\";\r\nimport {CDMSNumberCellValidator} from \"./validators/CDMSNumberCellValidator\";\r\nimport {CDMSDateTimeCellValidator} from \"./validators/CDMSDateTimeCellValidator\";\r\nimport {CDMSTextCellValidator} from \"./validators/CDMSTextCellValidator\";\r\n\r\nexport function MultiselectControlType(cdms_field, col_def) {\r\n\r\n //check for master field's possible values and copy them if they exist.\r\n if (cdms_field.hasOwnProperty('Field') && cdms_field.Field.hasOwnProperty('PossibleValues'))\r\n cdms_field.PossibleValues = cdms_field.Field.PossibleValues;\r\n\r\n //now either directly set or copied from master, do we have possible values?\r\n if (!cdms_field.hasOwnProperty('PossibleValues')) {\r\n console.warn(\"Field: \" + cdms_field.DbColumnName + \" is Multiselect but no PossibleValues are given.\");\r\n return;\r\n }\r\n\r\n //if so then define our cell editor and validator.\r\n col_def.cellEditor = CDMSMultiselectCellEditor;\r\n col_def.cellEditorParams = {\r\n values: getJsonObjects(cdms_field.PossibleValues)\r\n };\r\n col_def.cellValidator = CDMSMultiselectCellValidator;\r\n\r\n\r\n col_def.valueGetter = function (params) {\r\n if ((typeof params.data !== 'undefined') && (params.data !== null)) {\r\n //console.dir(params);\r\n //console.dir(params.data[params.column.colId]);\r\n //console.dir(col_def.cellEditorParams.values);\r\n //console.dir(getParsedMetadataValues(params.data[params.column.colId]));\r\n return getParsedMetadataValues(params.data[params.column.colId]);\r\n //return col_def.cellEditorParams.values[params.data[params.column.colId]];\r\n }\r\n };\r\n return col_def;\r\n};\r\n\r\n//select list - displays as drop down select\r\nexport function SelectFancyControlType(cdms_field, col_def) {\r\n\r\n //now either directly set or copied from master, do we have possible values?\r\n if (!col_def.hasOwnProperty('PossibleValues')) {\r\n console.warn(\"Field: \" + cdms_field.field + \" is Select but no PossibleValues are given.\");\r\n return;\r\n }\r\n\r\n //if so then define our cell editor and validator.\r\n col_def.cellEditor = CDMSSelectCellEditor; //works for standard cdms values: [\"label\"] or {\"alias\":\"label\"}\r\n col_def.cellEditorParams = {\r\n values: col_def.PossibleValues\r\n };\r\n col_def.cellValidator = CDMSSelectCellValidator;\r\n col_def.valueFormatter = function (params) {\r\n var retval = null;\r\n if (params.colDef.cellEditorParams.values != null) {\r\n if (Array.isArray(params.colDef.cellEditorParams.values)) { //if array type of possible values, just return the value\r\n retval = params.value; //params.data[params.column.colId];\r\n } else {\r\n retval = params.colDef.cellEditorParams.values[params.value]; //[params.data[params.column.colId]];\r\n }\r\n } else {\r\n console.warn(\"Warning: Field \" + params.colDef.Label + \" is a select but no values are set.\");\r\n }\r\n return retval;\r\n };\r\n col_def.keyCreator = getAgGridFilterKeyCreator(col_def.PossibleValues);\r\n\r\n return col_def;\r\n};\r\n\r\n//select list - displays as drop down select\r\nexport function SelectControlType(cdms_field, col_def) {\r\n console.log(\"Inside SelectControlType...\");\r\n\r\n //now either directly set or copied from master, do we have possible values?\r\n if (!col_def.hasOwnProperty('PossibleValues')) {\r\n console.warn(\"Field: \" + cdms_field.field + \" is Select but no PossibleValues are given.\");\r\n return;\r\n }\r\n\r\n //if so then define our cell editor and validator.\r\n col_def.cellEditor = CDMSSelectCellEditor; //works for standard cdms values: [\"label\"] or {\"alias\":\"label\"}\r\n col_def.cellEditorParams = {\r\n values: col_def.PossibleValues\r\n };\r\n col_def.cellValidator = CDMSSelectCellValidator;\r\n col_def.valueFormatter = function (params) {\r\n var retval = null;\r\n if (params.colDef.cellEditorParams.values != null) {\r\n if (Array.isArray(params.colDef.cellEditorParams.values)) { //if array type of possible values, just return the value\r\n retval = params.value; //params.data[params.column.colId];\r\n } else {\r\n retval = params.colDef.cellEditorParams.values[params.value]; //[params.data[params.column.colId]];\r\n }\r\n } else {\r\n console.warn(\"Warning: Field \" + params.colDef.Label + \" is a select but no values are set.\");\r\n }\r\n return retval;\r\n };\r\n //console.log(\"About to set col_def.keyCreator...\");\r\n if (col_def.PossibleValues != null)\r\n {\r\n col_def.keyCreator = getAgGridFilterKeyCreator(col_def.PossibleValues);\r\n }\r\n\r\n return col_def;\r\n};\r\n\r\n\r\n//currency - displays as USD currency, saves as number\r\nexport function CurrencyControlType(cdms_field, col_def) {\r\n col_def.valueFormatter = function (params) {\r\n return filterToCurrency(params.value);\r\n };\r\n col_def.valueParser = function (params) {\r\n return parseToFloat(params.newValue);\r\n };\r\n return col_def;\r\n};\r\n\r\n//date - displays as MM/DD/YYYY date without time, saves datetime\r\n//TIMEZONE note - we save it as a date without any timezone.\r\nexport function DateControlType(cdms_field, col_def) {\r\n col_def.cellEditor = 'agTextCellEditor';\r\n col_def.cellEditorParams = {\r\n useFormatter: true,\r\n };\r\n col_def.valueFormatter = function (params) {\r\n if (params.value == null)\r\n return params.value;\r\n else {\r\n\r\n let the_date = moment(params.value);\r\n\r\n if (!the_date.isValid())\r\n console.log(\"could not format date: moment failed to parse : \" + params.value);\r\n\r\n return (the_date.isValid()) ? the_date.format(\"MM/DD/YYYY\") : params.value;\r\n }\r\n };\r\n\r\n col_def.valueParser = function (params) {\r\n if (params.newValue == null)\r\n return params.newValue;\r\n else {\r\n\r\n let the_date = moment(params.newValue);\r\n\r\n if (!the_date.isValid())\r\n console.log(\"could not parse date: moment failed to parse : \" + params.newValue);\r\n\r\n return (the_date.isValid()) ? the_date.format(\"YYYY-MM-DD\") : params.newValue; // 2017-12-19T14:03:10 (no timezone)\r\n }\r\n };\r\n\r\n col_def.cellValidator = CDMSDateCellValidator;\r\n return col_def;\r\n};\r\n\r\nexport function PhoneNumberControlType(cdms_field, col_def) {\r\n col_def.valueFormatter = function (params) {\r\n return formatUsPhone(params.value);\r\n }\r\n}\r\n\r\n//datetime - displays as MM/DD/YYYY HH:mm:ss, saves as datetime\r\n//TIMEZONE note - we save it as a date without any timezone.\r\nexport function DateTimeControlType(cdms_field, col_def) {\r\n col_def.cellEditor = 'agTextCellEditor';\r\n col_def.cellEditorParams = {\r\n useFormatter: true,\r\n };\r\n\r\n col_def.valueFormatter = function (params) { //valueformatter - formats the field for display\r\n\r\n if (params.value == null) {\r\n return params.value;\r\n } else {\r\n\r\n let the_date = moment(params.value);\r\n\r\n return (the_date.isValid()) ? the_date.format(\"YYYY-MM-DD HH:mm:ss\") : params.value;\r\n }\r\n };\r\n\r\n col_def.valueParser = function (params) { //valueparser - parses the field for storing in the grid\r\n\r\n if (params.newValue == null) {\r\n return params.newValue;\r\n } else {\r\n\r\n let the_date = moment(params.newValue);\r\n\r\n return (the_date.isValid()) ? the_date.format(\"YYYY-MM-DDTHH:mm:ss\") : params.newValue; // 2017-12-19T14:03:10 (no timezone)\r\n }\r\n\r\n };\r\n\r\n col_def.cellValidator = CDMSDateTimeCellValidator;\r\n return col_def;\r\n};\r\n\r\n//time - displays as time, saves as date+time (default date)\r\nexport function TimeControlType(cdms_field, col_def) {\r\n col_def.cellEditor = 'agTextCellEditor';\r\n col_def.cellEditorParams = {\r\n useFormatter: true,\r\n };\r\n col_def.valueFormatter = function (params) { //formats for display\r\n if (params.value == null)\r\n return params.value;\r\n else {\r\n\r\n let the_date = moment(params.value);\r\n\r\n return (the_date.isValid()) ? the_date.format(\"HH:mm\") : params.value;\r\n }\r\n };\r\n\r\n col_def.valueParser = function (params) { //formats for saving in the grid\r\n var strHours = \"\";\r\n var strMinutes = \"\";\r\n\r\n if (params.newValue == null)\r\n return params.newValue;\r\n else if (params.oldValue == null) {\r\n try {\r\n var the_new_date = moment(params.api._headerrow.Activity.ActivityDate);\r\n the_new_date.set({\r\n 'hour': 0,\r\n 'minute': 0,\r\n 'second': 0\r\n });\r\n\r\n if (params.newValue.length == 4) { // Exmample: Time = 1300\r\n strHours = params.newValue.substr(0, 2);\r\n strMinutes = params.newValue.substr(2, 2);\r\n the_new_date.set({\r\n hour: parseInt(strHours),\r\n minute: parseInt(strMinutes)\r\n });\r\n\r\n //return (the_new_date.isValid()) ? the_new_date.format(\"HH:mm\") : params.newValue;\r\n return (the_new_date.isValid()) ? the_new_date.format(\"YYYY-MM-DDTHH:mm:ss\") : params.newValue;\r\n }\r\n if (params.newValue.length == 5) { // Exmample: Time = 13:00\r\n strHours = params.newValue.substr(0, 2);\r\n strMinutes = params.newValue.substr(3, 2);\r\n the_new_date.set({\r\n hour: parseInt(strHours),\r\n minute: parseInt(strMinutes)\r\n });\r\n\r\n //return (the_new_date.isValid()) ? the_new_date.format(\"HH:mm\") : params.newValue;\r\n return (the_new_date.isValid()) ? the_new_date.format(\"YYYY-MM-DDTHH:mm:ss\") : params.newValue;\r\n }\r\n } catch (e) {\r\n console.error(\"failed to convert time: \");\r\n console.dir(params);\r\n return \"error\";\r\n }\r\n\r\n } else {\r\n try {\r\n if (params.newValue.length == 4) { // Exmample: Time = 1300\r\n strHours = params.newValue.substr(0, 2);\r\n strMinutes = params.newValue.substr(2, 2);\r\n params.newValue = strHours + \":\" + strMinutes; // Reformat Time to 13:00\r\n }\r\n\r\n let the_old_date = moment(params.oldValue); //get the date from the old value.\r\n\r\n if (!the_old_date.isValid())\r\n\r\n the_old_date = moment(params.api._headerrow.Activity.ActivityDate);\r\n\r\n\r\n let the_date = moment(params.newValue, [\"HH:mm\"], true);\r\n //console.log(\"the_date is next...\");\r\n //console.dir(the_date);\r\n\r\n var the_combined_date = the_date.set(\r\n {\r\n\r\n year: the_old_date.year(),\r\n\r\n month: the_old_date.month(),\r\n\r\n date: the_old_date.date()\r\n });\r\n //console.log(\"the_combined_date is next...\");\r\n //console.dir(the_combined_date);\r\n return (the_combined_date.isValid()) ? the_combined_date.format(\"YYYY-MM-DDTHH:mm:ss\") : params.newValue; // 2017-12-19T14:03:10 (no timezone)\r\n\r\n } catch (e) {\r\n console.error(\"failed to convert time: \");\r\n console.dir(params);\r\n return \"error\";\r\n }\r\n\r\n }\r\n };\r\n col_def.cellValidator = CDMSTimeCellValidator;\r\n return col_def;\r\n};\r\n\r\n//easting - no special handling in the editor or display\r\nexport function EastingControlType(cdms_field, col_def) {\r\n return col_def;\r\n};\r\n\r\n//northing - no special handling in the editor or display\r\nexport function NorthingControlType(cdms_field, col_def) {\r\n return col_def;\r\n};\r\n\r\n//file\r\n\r\nexport function FileListCellTemplate(params) {\r\n var list = '
    ';\r\n //console.dir(params);\r\n //console.dir(this);\r\n var file_links;\r\n\r\n if ((params.node.data) && (params.node.data.SubprojectId)) {\r\n //console.log(\"Files for a subproject (S)\")\r\n file_links = getSubprojectFilesArrayAsLinks(params.colDef.ProjectId, params.node.data.SubprojectId, params.node.data[params.colDef.DbColumnName]);\r\n } else {\r\n //console.log(\"Files for a project (D)\")\r\n if ((typeof params.node.data !== 'undefined') && (params.node.data !== null))\r\n file_links = getProjectFilesArrayAsLinks(params.colDef.ProjectId, params.colDef.DatasetId, params.node.data[params.colDef.DbColumnName]);\r\n }\r\n //console.dir(file_links);\r\n if ((typeof file_links !== 'undefined') && (file_links !== null)) {\r\n file_links.forEach(function (link) {\r\n list += '
  • ' + link + '
  • ';\r\n });\r\n }\r\n\r\n list += '
';\r\n //list += '';\r\n //console.dir(list);\r\n return list;\r\n};\r\n\r\nexport function ItemListCellTemplate(params) {\r\n var list = '
    ';\r\n //console.dir(params);\r\n //console.dir(this);\r\n //var itemList = getProjectFilesArrayAsLinks(params.colDef.ProjectId, params.colDef.DatasetId, params.node.data[params.colDef.DbColumnName]);\r\n var itemList = getTextArrayAsList(params.node.data[params.colDef.field]);\r\n //console.dir(file_links);\r\n itemList.forEach(function (item) {\r\n list += '
  • ' + item + '
  • ';\r\n });\r\n\r\n list += '
';\r\n //list += '';\r\n //console.dir(list);\r\n return list;\r\n};\r\n\r\nexport function BulletedItemListCellTemplate(params) {\r\n if (params.node.data[params.colDef.field] !== null) {\r\n var list = '
    ';\r\n\r\n var itemList = params.node.data[params.colDef.field];\r\n //itemList = JSON.parse(params.node.data.Boundary);\r\n if (isArray(params.node.data[params.colDef.field])) {\r\n itemList.forEach(function (item) {\r\n list += '
  • ' + item + '
  • ';\r\n });\r\n } else\r\n list += '
  • ' + itemList + '
  • ';\r\n list += '
';\r\n //console.dir(list);\r\n return list;\r\n }\r\n};\r\n\r\nexport function FileControlType(cdms_field, col_def) {\r\n /*\r\n col_def.valueFormatter = function (params) {\r\n retval = params.value;\r\n\r\n console.dir(params.value);\r\n var filenames = [];\r\n if (params.value) {\r\n var files = angular.fromJson(params.value);\r\n files.forEach(function (file) {\r\n filenames.push(file.Name);\r\n });\r\n retval = filenames.join(\"\\n\");\r\n }\r\n return retval;\r\n };\r\n */\r\n col_def.editable = false;\r\n col_def.cellRenderer = FileListCellTemplate;\r\n return col_def;\r\n};\r\n\r\n//link - just in header fields? (TSR sharepoint)\r\nexport function LinkControlType(cdms_field, col_def) {\r\n col_def.cellRenderer = FileListCellTemplate;\r\n return col_def;\r\n};\r\n\r\n//number - no special handling\r\nexport function NumberControlType(cdms_field, col_def) {\r\n col_def.cellEditor = CDMSTextCellEditor;\r\n col_def.cellValidator = CDMSNumberCellValidator;\r\n /*\r\n col_def.suppressKeyboardEvent = function (params) {\r\n console.log('cell is editing: ' + params.editing);\r\n console.log('keyboard event:', params.event);\r\n\r\n // return true (to suppress) if editing and user hit up/down keys\r\n var keyCode = params.event.keyCode;\r\n var gridShouldDoNothing = params.editing && (keyCode===9 );\r\n return gridShouldDoNothing;\r\n };\r\n */\r\n return col_def;\r\n};\r\n\r\n//temp-waypoint-file - header only\r\nexport function TempWaypointFileControlType(cdms_field, col_def) {\r\n return col_def;\r\n};\r\n\r\n//text - no special editor handling\r\nexport function TextControlType(cdms_field, col_def) {\r\n col_def.cellValidator = CDMSTextCellValidator;\r\n return col_def;\r\n};\r\n\r\n//textarea - our own special text box\r\nexport function TextAreaControlType(cdms_field, col_def) {\r\n col_def.cellEditor = CDMSTextareaCellEditor;\r\n col_def.cellValidator = CDMSTextCellValidator;\r\n return col_def;\r\n};\r\n\r\n//select-group - This is only for displaying (grouping) items in a select box.\r\nexport function SelectGroupControlType(cdms_field, col_def) {\r\n col_def.cellEditor = null;\r\n col_def.cellValidator = null;\r\n return col_def;\r\n};\r\n\r\n//checkbox - A checkbox\r\nexport function CheckboxControlType(cdms_field, col_def) {\r\n col_def.cellEditor = null;\r\n col_def.cellValidator = null;\r\n return col_def;\r\n};\r\n\r\n//multiselect-checkbox\r\nexport function MultiselectCheckboxControlType(cdms_field, col_def) {\r\n col_def.cellEditor = null;\r\n col_def.cellValidator = null;\r\n return col_def;\r\n};\r\n\r\n//upload - headers\r\nexport function UploadControlType(cdms_field, col_def) {\r\n return col_def;\r\n};\r\n\r\nvar ControlTypeDefinitions = {\r\n 'multiselect': MultiselectControlType,\r\n 'currency': CurrencyControlType,\r\n 'date': DateControlType,\r\n 'datetime': DateTimeControlType,\r\n 'easting': NumberControlType,\r\n 'file': FileControlType,\r\n 'link': LinkControlType,\r\n 'northing': NumberControlType,\r\n 'number': NumberControlType,\r\n 'select': SelectControlType,\r\n 'instrument-select': SelectControlType,\r\n 'fisherman-select': SelectControlType,\r\n 'select-number': SelectControlType,\r\n 'select-fancy': SelectControlType,\r\n 'select-grid': SelectControlType,\r\n 'select-with-better-filter': SelectControlType,\r\n 'select-group': SelectGroupControlType,\r\n 'string': TextControlType, //just use the Text renderer\r\n 'temp-waypoint-file': TempWaypointFileControlType,\r\n 'hidden': TextControlType,\r\n 'text': TextControlType,\r\n 'phone-number': PhoneNumberControlType,\r\n 'textarea': TextAreaControlType,\r\n 'time': TimeControlType,\r\n 'upload': UploadControlType,\r\n 'qa-status-comment': TextAreaControlType,\r\n 'location-select': SelectControlType,\r\n 'permit-location-select': SelectControlType,\r\n 'activity-date': DateControlType,\r\n 'qa-status-select': SelectControlType,\r\n 'accuracy-check-select': SelectControlType,\r\n 'post-accuracy-check-select': SelectControlType,\r\n 'timezone-select': SelectControlType,\r\n 'activity-text': TextControlType,\r\n 'checkbox': CheckboxControlType,\r\n 'multiselect-checkbox': MultiselectCheckboxControlType\r\n};\r\n\r\nexport function getControlDefinition(def) {\r\n if (ControlTypeDefinitions.hasOwnProperty(def))\r\n return ControlTypeDefinitions[def];\r\n else\r\n return null;\r\n}\r\n\r\n\r\n/*\r\n\r\nvar LinkListCellTemplate = function (params) {\r\n if (!params.node.data.ExternalLinks)\r\n return;\r\n\r\n var list = '';\r\n\r\n return list;\r\n}\r\n*/\r\n","//Global / full query across all projects with this dataset.\r\nimport * as angular from 'angular';\r\nimport {makeObjects, makeObjectsFromValues, orderByAlpha} from \"../../../common/common-functions\";\r\nimport {makeFieldColDef, parseField} from \"../../datasets-functions\";\r\n\r\nvar big_bucket_query = ['$scope','$routeParams','CommonService','AdminService','DatasetService','$location', '$uibModal','DataSheet', '$rootScope', 'AdultWeir_ChartService',\r\n \tfunction($scope, $routeParams, CommonService, AdminService, DatasetService, $location, $uibModal, DataSheet, $rootScope, AdultWeir_ChartService) {\r\n\r\n \t\t$scope.datastoreLocations = CommonService.getLocations($routeParams.Id);\r\n \t\t$scope.dataFields = AdminService.getFields($routeParams.Id);\r\n \t\t$scope.datastore = DatasetService.getDatastore($routeParams.Id);\r\n\r\n\t\t\t$scope.headerFields = [];\r\n \t\t$scope.detailFields = [];\r\n \t\t$scope.datasheetColDefs = [];\r\n \t\t$scope.query = {results: []};\r\n \t\t$scope.dataSheetDataset = [];\r\n\r\n\t\t\t$scope.chartData = {\"series\": [], \"data\":[{ \"x\": \"Loading...\", \"y\": [0],\"tooltip\": \"\"}]}; //default\r\n\r\n \t\t$scope.gridDatasheetOptions = {\r\n \t\t\tdata: 'dataSheetDataset',\r\n\t\t columnDefs: 'datasheetColDefs',\r\n \t\t\tenableColumnResize: true,\r\n\t \tenableRowSelection: true,\r\n\t \tenableCellEdit: false,\r\n\t \tenableSorting: true,\r\n \t\t\tenableCellSelection: true,\r\n \t\t\tshowFilter: false,\r\n \t\t\tshowColumnMenu: true,\r\n \t\t\tmultiSelect: false,\r\n suppressPropertyNamesCheck: true,\r\n \t\t};\r\n\r\n\t\t\tDataSheet.initScope($scope);\r\n\r\n\t\t\t$scope.datasheetColDefs = [{\r\n\t\t\t\t\t\t\t\t\t\tfield: 'LocationId',\r\n displayName: 'Location',\r\n cellFilter: 'locationNameFilter'\r\n },\r\n {\r\n field: 'ActivityDate',\r\n displayName: 'Activity Date',\r\n cellFilter: 'date: \\'MM/dd/yyyy\\'',\r\n },\r\n {\r\n field: 'ActivityQAStatusId',\r\n displayName: 'QA Status',\r\n cellFilter: 'QAStatusFilter'\r\n }];\r\n\r\n\r\n \t\t$scope.$watch('datastoreLocations', function(){\r\n \t\t\tif(!$scope.datastoreLocations)\r\n \t\t\t\treturn;\r\n\r\n \t\t\t$scope.locationOptions = $rootScope.locationOptions = makeObjects($scope.datastoreLocations, 'Id','Label') ;\r\n \t\t\t$scope.locationOptions[\"all\"] = \"- All -\";\r\n \t\t\t$scope.Criteria.LocationIds = [\"all\"]; //set the default\r\n \t\t},true);\r\n\r\n\r\n \t\t$scope.$watch('dataFields', function(){\r\n \t\t\tif(!$scope.dataFields)\r\n \t\t\t\treturn;\r\n\r\n \t\t\tvar fieldIndex = 0;\r\n\r\n \t\t\t$scope.dataFields = $scope.dataFields.sort(orderByAlpha);\r\n \t\t\tconsole.log(\"ordered!\");\r\n \t\t\tconsole.dir($scope.dataFields);\r\n\r\n\t\t\t\tangular.forEach($scope.dataFields, function(field){\r\n\t\t\t\t\tparseField(field, $scope);\r\n\r\n\t\t\t\t\t//create a javascript list from our possible values (if any)\r\n\t\t\t\t\tif(field.PossibleValues)\r\n\t\t\t\t\t{\r\n\r\n\t\t field.PossibleValuesList = makeObjectsFromValues(field.DbColumnName, field.PossibleValues); //set this into our object\r\n\r\n\t\t\t\t\t\tfieldIndex ++;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$scope.datasheetColDefs.push(makeFieldColDef(field, $scope));\r\n\r\n\r\n\t \t\t});\r\n\r\n\t\t\t\t$scope.recalculateGridWidth($scope.datasheetColDefs.length);\r\n\r\n \t\t},true);\r\n\r\n\r\n\t\t\t$scope.criteriaList = [];\r\n\r\n\t \t$scope.queryToolVisible = true;\r\n\t\t\t$scope.Criteria = {};\r\n\t\t\t$scope.Criteria.paramActivityDateType = \"all\"; //default\r\n\r\n\t\t//$scope.QAStatusOptions = $rootScope.QAStatusOptions = makeObjects($scope.dataset.QAStatuses, 'Id','Name'); //TODO\r\n\t\t\t$scope.QAStatusOptions = {};\r\n\t\t\t$scope.RowQAStatuses = {};\r\n\r\n\t $scope.QAStatusOptions[\"all\"] = \"- All -\";\r\n\t $scope.RowQAStatusOptions[\"all\"] = \"- All -\";\r\n\r\n\t $scope.Criteria.ParamQAStatusId = \"all\";\r\n\t $scope.Criteria.ParamRowQAStatusId = \"all\";\r\n\r\n\t $scope.RowQAStatuses[\"all\"] = \"- All -\";\r\n\r\n\r\n \t\t$scope.AutoExecuteQuery = true;\r\n\r\n \t\t$scope.removeCriteria = function(idx) {\r\n \t\t\t$scope.criteriaList.splice(idx,1);\r\n \t\t\tif($scope.AutoExecuteQuery)\r\n\t\t\t\t\t$scope.executeQuery();\r\n \t\t};\r\n\r\n \t\t$scope.addCriteria = function(){\r\n\t\t\t\t$scope.criteriaList.push({\r\n\t\t\t\t\t//commenting these out because they will be read at EXECUTE time, not saved per query.\r\n\t\t\t\t\t//qastatus: $scope.Criteria.ParamQAStatusId,\r\n\t\t\t\t\t//locations: $scope.Criteria.LocationIds,\r\n\t\t\t\t\t//activities: $scope.Criteria.paramActivityDateType,\r\n\t\t\t\t\tDbColumnName: \t\t$scope.Criteria.ParamFieldSelect[0].DbColumnName,\r\n\t\t\t\t\tId: \t\t\t\t$scope.Criteria.ParamFieldSelect[0].Id,\r\n\t\t\t\t\tValue: \t\t\t\t$scope.Criteria.Value,\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//console.dir($scope.criteriaList);\r\n\r\n\t\t\t\t$scope.Criteria.Value = null;\r\n\r\n\t\t\t\tif($scope.AutoExecuteQuery)\r\n\t\t\t\t\t$scope.executeQuery();\r\n \t\t};\r\n\r\n \t\t$scope.buildQuery = function(){\r\n\t\t\t\tconsole.log(\"Inside DatastoreQueryCtrl.buildQuery...\");\r\n\r\n\t\t\t\tvar query =\r\n \t\t\t{\r\n\t\t\t\t\tcriteria: {\r\n\t\t\t\t\t\tDatastoreId: \t $routeParams.Id,\r\n\t\t\t\t\t\tQAStatusId: $scope.Criteria.ParamQAStatusId,\r\n\t\t\t\t\t\tLocations: angular.toJson($scope.Criteria.LocationIds).toString(),\r\n\t\t\t\t\t\tFromDate: $scope.Criteria.BetweenFromActivityDate,\r\n\t\t\t\t\t\tToDate: $scope.Criteria.BetweenToActivityDate,\r\n\t\t\t\t\t\tDateSearchType: $scope.Criteria.paramActivityDateType,\r\n\t\t\t\t\t\tFields: \t $scope.criteriaList,\r\n\r\n\t\t\t\t\t},\r\n\t\t\t\t\tloading: true,\r\n \t\t\t};\r\n\r\n\t\t\t\tconsole.log(\"query is next...\");\r\n\t\t\t\tconsole.dir(query);\r\n\r\n \t\t\treturn query;\r\n \t\t};\r\n\r\n \t\t$scope.executeQuery = function(){\r\n\t\t\t\tconsole.log(\"Inside DatastoreQueryCtrl.executeQuery...\");\r\n \t\t\t$scope.query = $scope.buildQuery();\r\n\t\t\t\tconsole.log(\"$scope.query is next...\");\r\n\t\t\t\tconsole.dir($scope.query);\r\n\r\n \t\t\tDatasetService.queryActivities($scope.query);\r\n \t\t\t//service will run query and then update:\r\n\t \t\t\t//query.results\r\n\t \t\t\t//query.errors\r\n\t \t};\r\n\r\n\t \t$scope.$watch('query.loading', function(){\r\n\t \t\tconsole.log(\"--- gathering graph data\");\r\n\r\n\t \t\t$scope.chartData = AdultWeir_ChartService.getChartData($scope.query.results);\r\n\t \t\t$scope.dataSheetDataset = $scope.query.results;\r\n\t \t});\r\n\r\n\r\n\r\n\t\t}\r\n];\r\n\r\nexport default big_bucket_query;\r\n","//Covid api\r\n\r\nimport {serviceUrl} from \"../../config\";\r\nimport covid_module from \"./covid-module\";\r\n\r\n\r\n\r\nconst covid_services = ['$q',\r\n\r\n 'MyEmployees',\r\n 'MyEmployeesWork',\r\n 'SaveEmployees',\r\n 'RemoveEmployee',\r\n\r\n function ($q,\r\n\r\n MyEmployees,\r\n MyEmployeesWork,\r\n SaveEmployees,\r\n RemoveEmployee\r\n\r\n ) {\r\n var service = {\r\n\r\n getMyEmployees: function () {\r\n return MyEmployees.query();\r\n },\r\n\r\n getMyEmployeesWork: function() {\r\n return MyEmployeesWork.query();\r\n },\r\n\r\n saveEmployees: function(data){\r\n return SaveEmployees.save({ Employees: data });\r\n },\r\n\r\n removeEmployee: function(Id) {\r\n return RemoveEmployee.save({ Id: Id });\r\n }\r\n\r\n\r\n\r\n };\r\n\r\n return service;\r\n\r\n }\r\n];\r\n\r\nexport default covid_services;\r\n","\r\n\r\nconst convert_status = ['Logger', '$window', '$route',\r\n function (Logger, $window, $route, $q) {\r\n\r\n var service = {\r\n\r\n convertStatus: function (aStatus) {\r\n //console.log(\"Inside convertStatus...\");\r\n //console.log(\"aStatus = \" + aStatus);\r\n\r\n var strStatus = null;\r\n\r\n if (aStatus === 0) {\r\n strStatus = \"Active\";\r\n }\r\n else {\r\n strStatus = \"Inactive\";\r\n }\r\n //console.log(\"strStatus = \" + strStatus);\r\n\r\n return strStatus;\r\n },\r\n convertStatusToInt: function (aStatus) {\r\n //console.log(\"Inside convertStatus...\");\r\n //console.log(\"aStatus = \" + aStatus);\r\n\r\n var intStatus = 1;\r\n\r\n if (aStatus === \"Active\") {\r\n intStatus = 0;\r\n }\r\n\r\n //console.log(\"intStatus = \" + intStatus);\r\n\r\n return intStatus;\r\n },\r\n convertOkToCall: function (aStatus) {\r\n //console.log(\"Inside convertOkToCall...\");\r\n //console.log(\"aStatus = \" + aStatus);\r\n\r\n var strStatus = null;\r\n\r\n if (aStatus === 0) {\r\n strStatus = \"Yes\";\r\n }\r\n else {\r\n strStatus = \"No\";\r\n }\r\n //console.log(\"strStatus = \" + strStatus);\r\n\r\n return strStatus;\r\n },\r\n }\r\n return service;\r\n }];\r\n\r\nexport default convert_status;\r\n\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJhcHAuY29tcG9uZW50LnNjc3MifQ== */\";","//Violations api - loaded by permits since they are both TPO projects\r\n\r\n// NOTE: that means the resources have the same namespace and cannot share names across services...\r\n\r\n\r\nimport permit_module from \"./permit-module\";\r\nimport {EHS_PROJECTID, serviceUrl} from \"../../config\";\r\n\r\n\r\n\r\nconst violation_services = ['$q',\r\n'GetViolations',\r\n'SaveViolation',\r\n'GetViolationContacts',\r\n'SaveViolationContact',\r\n'GetViolationParcels',\r\n'GetViolationRelatedParcels',\r\n'SaveViolationParcel',\r\n'DeleteViolationFile',\r\n'GetViolationFiles',\r\n'GetViolationEvents',\r\n'SaveViolationEvent',\r\n'GetViolationCodes',\r\n'SaveViolationCode',\r\n'RemoveViolationContact',\r\n'RemoveViolationParcel',\r\n'SendNotification',\r\n'GetNotifications',\r\n'RemoveViolationActivity',\r\n\r\n function ($q,\r\n GetViolations,\r\n SaveViolation,\r\n GetViolationContacts,\r\n SaveViolationContact,\r\n GetViolationParcels,\r\n GetViolationRelatedParcels,\r\n SaveViolationParcel,\r\n DeleteViolationFile,\r\n GetViolationFiles,\r\n GetViolationEvents,\r\n SaveViolationEvent,\r\n GetViolationCodes,\r\n SaveViolationCode,\r\n RemoveViolationContact,\r\n RemoveViolationParcel,\r\n SendNotification,\r\n GetNotifications,\r\n RemoveViolationActivity\r\n\r\n ) {\r\n var service = {\r\n\r\n\r\n getAllViolations: function () {\r\n return GetViolations.query();\r\n },\r\n\r\n getViolationContacts: function (Id) {\r\n return GetViolationContacts.query({ Id: Id });\r\n },\r\n\r\n saveViolation: function(violation) {\r\n return SaveViolation.save({Violation: violation})\r\n },\r\n\r\n saveViolationContact: function (contact) {\r\n return SaveViolationContact.save({ ViolationContact: contact });\r\n },\r\n\r\n getViolationParcels: function (Id) {\r\n return GetViolationParcels.query({ Id: Id });\r\n },\r\n\r\n getViolationsByRelatedParcels: function (ParcelId) {\r\n return GetViolationRelatedParcels.query({ ParcelId: ParcelId });\r\n },\r\n\r\n saveViolationParcel: function (violationparcel) {\r\n return SaveViolationParcel.save({ ViolationParcel: violationparcel });\r\n },\r\n\r\n deleteViolationFile: function (projectId, subprojectId, itemId, file) {\r\n return DeleteViolationFile.save({ ProjectId: projectId, SubprojectId: subprojectId, ItemId: itemId, File: file });\r\n },\r\n\r\n getViolationFiles: function (ViolationId) {\r\n return GetViolationFiles.query({ ProjectId: EHS_PROJECTID, ViolationId: ViolationId });\r\n },\r\n\r\n saveViolationEvent: function (violationevent) {\r\n return SaveViolationEvent.save({ ViolationEvent: violationevent });\r\n },\r\n\r\n getViolationEvents: function (Id) {\r\n return GetViolationEvents.query({ Id: Id });\r\n },\r\n\r\n saveViolationCode: function (violationcode) {\r\n return SaveViolationCode.save({ ViolationCode: violationcode });\r\n },\r\n\r\n getViolationCodes: function (Id) {\r\n return GetViolationCodes.query({ Id: Id });\r\n },\r\n\r\n removeViolationParcel: function (violationparcel) {\r\n return RemoveViolationParcel.save({ ViolationParcel: violationparcel });\r\n },\r\n\r\n sendNotifications: function (notification) {\r\n return SendNotification.save({ EHSViolationId: notification.EHSViolationId, NotifyRoutes: notification.NotifyRoutes });\r\n },\r\n\r\n removeViolationContact: function (violationcontact) {\r\n return RemoveViolationContact.save({ ViolationContact: violationcontact });\r\n },\r\n\r\n removeViolationActivity: function (activityId) {\r\n return RemoveViolationActivity.save({ ViolationActivityId: activityId });\r\n },\r\n\r\n getNotifications: function () {\r\n return GetNotifications.query({ Module: 'EHSInspectionViolation' });\r\n }\r\n\r\n };\r\n\r\n return service;\r\n\r\n }\r\n];\r\n\r\nexport default violation_services;\r\n","var modal_save_success = ['$scope','$uibModalInstance',\r\n function($scope, $uibModalInstance){\r\n\r\n $scope.header_message = \"Save Successful!\";\r\n\r\n $scope.cancel = function(){\r\n $uibModalInstance.dismiss();\r\n };\r\n }\r\n];\r\n\r\nexport default modal_save_success;\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nimport {setAngularJSGlobal} from '@angular/upgrade/static';\r\nimport * as angular from 'angular';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nsetAngularJSGlobal(angular);\r\n\r\nimport './appjsLegacy/main';\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n\r\n\r\n","//modal to edit location\r\n\r\nimport { EsriMapComponent } from \"src/app/map/esri-map/esri-map.component\";\r\n\r\n\r\nvar edit_location_modal = ['$scope', '$uibModal', '$uibModalInstance', 'GridService', 'CommonService', 'Upload', 'ProjectService', '$rootScope', 'PermitService',\r\n\r\n function ($scope, $uibModal, $uibModalInstance, GridService, CommonService, $upload, ProjectService, $rootScope, PermitService) {\r\n\r\n console.log(\"Inside edit-location-modal.ts...\");\r\n \r\n $scope.mode = \"edit\";\r\n\r\n $scope.row = $scope.ProjectLocation_modal;\r\n\r\n if ($scope.mode === 'edit') {\r\n console.log(\"Location Id = \" + $scope.$parent.row.Id);\r\n\r\n $scope.permitLocationsGrid.columnDefs.forEach(function (field) {\r\n $scope.onHeaderEditingStopped(field);\r\n });\r\n }\r\n\r\n $scope.onHeaderEditingStopped = function (field) {\r\n //build event to send for validation\r\n console.log(\"onHeaderEditingStopped: \" + field.DbColumnName);\r\n var event = {\r\n colDef: field,\r\n node: {data: $scope.row},\r\n value: $scope.row[field.DbColumnName],\r\n type: 'onHeaderEditingStopped'\r\n };\r\n\r\n if (GridService.validateCell(event)) {\r\n GridService.fireRule(\"OnChange\", event); //only fires when valid change is made\r\n }\r\n\r\n //update our collection of header errors if any were returned\r\n $scope.headerFieldErrors = [];\r\n if ($scope.row.rowHasError) {\r\n $scope.row.validationErrors.forEach(function (error) {\r\n if (Array.isArray($scope.headerFieldErrors[error.field.DbColumnName])) {\r\n $scope.headerFieldErrors[error.field.DbColumnName].push(error.message);\r\n } else {\r\n $scope.headerFieldErrors[error.field.DbColumnName] = [error.message];\r\n }\r\n });\r\n }\r\n\r\n };\r\n\r\n $scope.updateParentItem = function(permitId) {\r\n\r\n $scope.PermitLocations = PermitService.getPermitLocations(permitId);\r\n $scope.PermitLocations.$promise.then(function() {\r\n console.log(\"$scope.PermitLocations in selectPermit is next...\");\r\n console.dir($scope.PermitLocations);\r\n $scope.permitLocationsGrid.api.setRowData($scope.PermitLocations);\r\n $scope.permitLocationsGrid.selectedItem = null;\r\n $scope.$apply();\r\n });\r\n }\r\n\r\n $scope.save = function (inId) {\r\n $uibModalInstance.close(\r\n // on close this information is sent to the esri-map component\r\n {\r\n 'Update': true,\r\n 'ProjectId': $scope.project.Id,\r\n 'Location': $scope.row,\r\n });\r\n\r\n console.log(\"$rootScope is next...\");\r\n console.dir($rootScope);\r\n if ($scope.ProjectLocation_modal)\r\n {\r\n var esriMapComponent = new EsriMapComponent();\r\n var anObj = {\r\n 'Update': true,\r\n 'ProjectId': $scope.project.Id,\r\n 'Location': $scope.row,\r\n };\r\n esriMapComponent.changeFromChild(anObj);\r\n }\r\n\r\n //CommonService.updateLocationAction($scope.project.Id, $scope.row.Id, $scope.row.SdeObjectId);\r\n $scope.saveResult = CommonService.updateLocationAction($scope.project.Id, $scope.row.Id, $scope.row.SdeObjectId, $scope.row);\r\n\r\n $scope.saveResult.$promise.then(function () {\r\n $scope.updateParentItem($scope.permitsGrid.selectedItem.Id)\r\n });\r\n }\r\n\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n\r\n }\r\n\r\n];\r\n\r\n\r\nexport default edit_location_modal;\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJwZXJtaXQtbWFwLmNvbXBvbmVudC5zY3NzIn0= */\";","export default \"
\\r\\n\";","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"zn8P\";"],"sourceRoot":"webpack:///"}