{"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/appjsLegacy/core/datasets/components/dataset-editor/modal-save-status.ts","./src/appjsLegacy/core/datasets/components/dataset-table/table.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/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/login/components/login/login.component.ts","./src/appjsLegacy/core/common/components/modals/modal-invalid-operation.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/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/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/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/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/appjsLegacy/core/datasets/services/dataset-service.ts","./src/appjsLegacy/core/common/directives/currency.ts","./src/appjsLegacy/core/projects/components/project-detail/modal-edit-project.ts","./src/appjsLegacy/core/projects/components/project-detail/project-locations.ts","./src/app/login/profile.service.ts","./src/appjsLegacy/config.ts","./src/appjsLegacy/core/common/components/feedback/feedback.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/appjsLegacy/core/common/components/chart/creelsurvey-chartservice.ts","./src/appjsLegacy/core/projects/components/project-detail/modal-choose-summary-images.ts","./src/appjsLegacy/core/admin/components/admin-page/admin-groups.ts","./src/appjsLegacy/core/projects/components/project-detail/project-permissions.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/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/appjsLegacy/core/projects/components/project-detail/modal-choose-map.ts","./src/appjsLegacy/core/admin/components/admin-page/admin-users.ts","./src/appjsLegacy/core/user/components/landing-page/landing-page.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/core/projects/components/project-list/project-list.ts","./src/app/login/components/login-functions.ts","./src/appjsLegacy/core/datasets/datasets-module.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/core/common/components/grid/grid-service.ts","./src/app/login/login.module.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/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/appjsLegacy/core/admin/components/admin-page/modal-admin-group-members.ts","./src/appjsLegacy/core/admin/admin-module.ts","./src/appjsLegacy/core/admin/components/admin-page/admin-edit-master.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/appjsLegacy/core/admin/components/admin-page/admin-organizations.ts","./src/appjsLegacy/core/common/components/chart/snorkelfish-chartservice.ts","./src/app/appjs/appjs-routing.module.ts","./src/appjsLegacy/core/datasets/components/dataset-import/dataset-import.ts","./src/appjsLegacy/core/common/components/modals/modal-verify-action.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/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/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/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/core/projects/components/project-detail/project-lookups.ts","./src/app/login/components/logout/logout.component.html","./src/appjsLegacy/core/admin/components/admin-page/admin-edit-dataset-permissions.ts","./src/appjsLegacy/core/projects/components/project-detail/modal-add-accuracy-check.ts","./src/appjsLegacy/core/common/components/grid/cell-validation.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/appjsLegacy/core/projects/components/project-detail/modal-edit-file.ts","./src/appjsLegacy/core/common/components/grid/validators/CDMSDateCellValidator.ts","./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/core/user/components/project-preferences/project-preferences.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/core/datasets/services/convert-status.ts","./src/app/app.component.scss","./src/appjsLegacy/core/common/components/modals/modal-save-success.ts","./src/main.ts","./$_lazy_route_resource lazy namespace object"],"names":[],"mappings":"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+EAA+E;AAC/E,6CAA6C;AAC7C,gDAAgD;AAChD,mCAAmC;AACnC,sDAAsD;AACtD,sBAAsB;AACtB,EAAE;AACF,kFAAkF;AAClF,4DAA4D;AAC5D,sDAAsD;AACtD,sBAAsB;AACtB,EAAE;AACF,gBAAgB;AAChB,EAAE;AACF,aAAa;AACb,MAAM;AACN,EAAE;AACF,2DAA2D;AAC3D,eAAe;AACf,8BAA8B;AAC9B,4DAA4D;AAC5D,qDAAqD;AACrD,4CAA4C;AAC5C,kBAAkB;AAClB,wDAAwD;AACxD,mCAAmC;AACnC,kBAAkB;AAClB,YAAY;AACZ,SAAS;AACT,MAAM;AACN,EAAE;AACa,4EAAa,EAAC;;;;;;;;;;;;ACngC7B;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;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;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2B;;;;;;;;;;;;ACvSA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAmC;AACF;AACqC;AAE7B;AACb;AAE5B,IAAI,oBAAoB,GAAG,CAAC,QAAQ,EAAE,cAAc;IAChD,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa;IACvF,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EACjD,UAAU,MAAM,EAAE,YAAY,EAC1B,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAC7E,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU;QAEzC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,MAAM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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 * 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...\");\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\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 navigations 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\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 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);\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 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\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 comment_length = (!params.data.Comments) ? 1 : params.data.Comments.length;\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\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","//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.changeFilterIcons = function (event) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters = scope.dataGridOptions.api.getFilterModel();\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.field) || span.textContent.includes(col.headerName)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.field in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n if (icon && icon.style) {\r\n icon.style.color = \"#bdbdbd\";\r\n }\r\n }\r\n }\r\n }\r\n }\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 onBodyScroll: function (event) {\r\n scope.changeFilterIcons(event);\r\n },\r\n onFilterModified: function (event) {\r\n scope.changeFilterIcons(event);\r\n },\r\n selectedItems: [],\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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 //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, $scope)) {\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","/*\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 'DeleteProject',\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 DeleteProject,\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 deleteProject: function (projectId) {\r\n return DeleteProject.save({ ProjectId: projectId })\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 { Component, OnInit } from '@angular/core';\r\nimport { uiConfig, 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 logoSrc: string;\r\n public welcomeText: string;\r\n public welcomeSubtext: string;\r\n // public login: () => void;\r\n public Password: string;\r\n public errorHeader: string | boolean;\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 console.log(\"Inside login.component.ts, ngOnInit...\");\r\n this.logoSrc = uiConfig.logo;\r\n this.welcomeText = uiConfig.welcomeText;\r\n this.welcomeSubtext = uiConfig.welcomeSubtext;\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 this.errorHeader = undefined;\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 // Provide more meaningful message for invalid username\r\n if (data.Message == \"Username is Inactive.\") {\r\n this.errorHeader = `\"${this.Username}\" is not a valid username.`\r\n this.error = \"Please contact your System Administrator\"\r\n } else {\r\n this.errorHeader = \"Failed to login\";\r\n // @ts-ignore\r\n this.error = data.Message;\r\n }\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.errorHeader = \"Failed to login\";\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","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","export default \"\\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// \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","\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 if (logout) {\r\n logout.toPromise().then(() => {\r\n //@ts-ignore\r\n //window.location = loginUrl;\r\n this.router.navigateByUrl('login').then(() => {\r\n location.reload();\r\n });\r\n });\r\n }\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[$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 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","// 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('DeleteProject', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/project/deleteproject');\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\n//import {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","//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 \".panel {\\n margin-bottom: 20px;\\n background-color: #fff0;\\n border: 1px solid transparent;\\n border-radius: 4px;\\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uXFwuLlxcLi5cXC4uXFwuLlxcbG9naW4uY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxtQkFBQTtFQUNBLHVCQUFBO0VBQ0EsNkJBQUE7RUFDQSxrQkFBQTtFQUVBLHlDQUFBO0FBQ0oiLCJmaWxlIjoibG9naW4uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIucGFuZWwge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYwO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xyXG4gICAgYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNSlcclxufSJdfQ== */\";","/*\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 //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 // 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 {\r\n //console.log(\"[\" + field.DbColumnName + \"] Invalid selection, value = \" + value);\r\n row_errors.push(\"[\" + field.DbColumnName + \"] Invalid selection, value = \" + value);\r\n }\r\n //else\r\n //\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 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 /* Before import change\r\n console.log(\"Found time field...\");\r\n //if(!stringIsNumber(value) && !is_empty(value))\r\n console.log(\"Value = \" + value);\r\n var validTime = checkTime(value);\r\n console.log(\"validTime = \" + validTime)\r\n if ((typeof validTime === 'undefined') || (value.length < 5))\r\n {\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 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 //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","//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 $scope.dataset = DatasetService.getDataset($routeParams.Id);\r\n $scope.FieldLookup = {};\r\n\r\n $scope.MasterFields = [];\r\n $scope.allFields = [];\r\n\r\n //$scope.Sources = CommonService.getSources();\r\n //$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 onBodyScroll: function (event) {\r\n $scope.changeFilterIcons(event);\r\n },\r\n onFilterModified: function (event) {\r\n $scope.changeFilterIcons(event);\r\n },\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 icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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 $scope.changeFilterIcons = function (event) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters = $scope.fieldGridOptions.api.getFilterModel();\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.field) || span.textContent.includes(col.headerName)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.field in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n if (icon && icon.style) {\r\n icon.style.color = \"#bdbdbd\";\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n $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 });\r\n\r\n\r\n $scope.removeField = function (params) {\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 }\r\n\r\n $scope.addMasterField = function () {\r\n // Note: Given a list with zero-based index (0, 1, 2, 3, etc.), like we have here.\r\n // With angular, when you select the first item in a list, it often (always?) shows blank (null).\r\n // The problem does not present itself for items 1 and following.\r\n // 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 // To avoid this problem, we access the first item (0), using index 0.\r\n if ($scope.newField === null)\r\n $scope.newField = $scope.MasterFields[0].Id;\r\n\r\n console.log(\"$scope.newField = \" + $scope.newField);\r\n console.dir($scope.newField);\r\n\r\n var 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 };\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 }\r\n];\r\n\r\nexport default admin_edit_dataset_fields;\r\n","// 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 'QueryRecordCount',\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 QueryRecordCount,\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 });\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, count) {\r\n return Activities.query({ id: id, count: count }).$promise;\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 queryRecordCount: function (query) {\r\n return QueryRecordCount.save(query);\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","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 // Turned off by CTUIR but kept, in case this sort of thing may be desireable by other organizaions.\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 console.log(\"scope.row is next...\");\r\n console.dir(scope.row);\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","/*\r\n* This page loads the project locations.\r\n*/\r\nimport * as angular from 'angular';\r\nimport { SYSTEM_LOCATION_DATASET, uiConfig } 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\n//import { EsriMapComponent } from \"src/app/map/esri-map/esri-map.component\";\r\n//--------\r\n//import Map from \"@arcgis/core/Map\";\r\n//import SimpleMarkerSymbol from \"@arcgis/core/symbols/SimpleMarkerSymbol\";\r\n//import Graphic from \"@arcgis/core/Graphic\";\r\n//import SpatialReference from \"@arcgis/core/geometry/SpatialReference\";\r\n//import * as geometryServ from \"@arcgis/core/rest/geometryService\";\r\n//import Point from \"@arcgis/core/geometry/Point\";\r\n////import ProjectParameters from \"@arcgis/core/tasks/support/ProjectParameters\"; // Deprecated\r\n//import ProjectParameters from \"@arcgis/core/rest/support/ProjectParameters\";\r\n//import Query from \"@arcgis/core/rest/support/Query\";\r\n//import 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) {\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\r\n //*** If you use the GIS mapping, turn on these lines. Start ***\r\n //scope.map = new Map();\r\n //scope.map.locationLayer = new FeatureLayer({url:CDMS_POINTS_TEST_URL});\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 //*** If you use the GIS mapping, turn on these lines. Stop ***\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 scope.changeFilterIcons = function (event) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters = scope.dataGridOptions.api.getFilterModel();\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.field) || span.textContent.includes(col.headerName)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.field in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n if (icon && icon.style) {\r\n icon.style.color = \"#bdbdbd\";\r\n }\r\n }\r\n }\r\n }\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 onBodyScroll: function (event) {\r\n scope.changeFilterIcons(event);\r\n },\r\n onFilterModified: function (event) {\r\n scope.changeFilterIcons(event);\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n width: 180,\r\n icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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 // Who initiates this?\r\n // Projects -> Locations -> Create button (project-locations.html)\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 scope.deletePoints = deleteIds;\r\n var delete_loc = CommonService.deleteLocations(locationIds);\r\n\r\n delete_loc.$promise.then(function (items) {\r\n if (items.length == 0) {\r\n scope.dataGridOptions.api.deselectAll()\r\n scope.loadProjectLocations();\r\n } else {\r\n alert(\"Could not delete some locations because activities exist. Remove them and then you can delete those locations.\");\r\n scope.dataGridOptions.api.deselectAll()\r\n scope.loadProjectLocations();\r\n }\r\n // This wasn't providing alert to user if activites exist for the location\r\n // }, function (error) {\r\n // console.log(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\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 // } else {\r\n // scope.ShowMap.Display = true;\r\n // scope.ShowMap.Message = scope.ShowMap.MessageToClose;\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","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","//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 ENVIRONMENT = \"DEV_CONFIG_ENV\";\r\nexport let DISPLAY_NAME = \"CRITFC CDMS\";\r\nexport let CURRENT_VERSION = \"3.0\";\r\nexport let PUBLIC_OR_PRIVATE = \"public\"; // Paluut = public, CDMS_Priv = private.\r\nexport let DATASET_RECORDS_EXPORT_FORMAT_THRESHOLD = 500000\r\nexport let HOST_SERVER = \"cdms.critfc.org\";\r\n//Change these to point to your own webserver directories\r\nexport let serviceUrl = '//cdms.critfc.org/services'; //location of cdms-services deployment (REST Services)\r\nexport let serverUrl = '//cdms.critfc.org'; //location of cdms-dev files (Javascript+HTML application)\r\nexport let cdmsShareUrl = serverUrl + '/services/uploads/'; // Location of project/dataset/subproject files\r\n//export let cdmsShareUrl = serviceUrl + '/services/uploads/'; // Location of project/dataset/subproject files\r\n// export let proxyUrl = \"https://paluut.ctuir.org/DotNet/proxy.ashx\";\r\nexport let proxyUrl = \"https://cdms.innovateteam.com/DotNet/proxy.ashx\";\r\nexport let ANALYTICS_CODE = 'UA-105142901-3'; //this should be your own analytics code for google analytics.\r\n\r\nexport let REPORTSERVER_URL = 'https://cdms.critfc.org/Reports/browse/CDMS'; //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 = 'https://paluutreports.ctuir.org/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 = \"http://intranet.ctuir.org/adminstration/oit/gis/wiki/Pages/Project%20Tracker%20Documentation.aspx\";\r\nexport let NUM_FLOAT_DIGITS = 3;\r\nexport let SystemDefaultColumnWidth = 150; //default column width for ag-grid\r\n\r\n// For Dev/Test environments\r\nexport let CDMS_POINTS_TEST_URL = \"http://restdata.ctuir.org/arcgis/rest/services/CDMS_Points_TEST/FeatureServer/0\";\r\n// For Dev/Test environment\r\nexport let CDMS_POINTS_PROD_URL = \"http://restdata.ctuir.org/arcgis/rest/services/CDMS_ProjectPoints/FeatureServer/0\";\r\n\r\n//AG_GRID_LICENSE = \"Confederated_Tribes_of_the_Umatilla_Indian_Reservation_CDMS_2Devs4_January_2019__MTU0NjU2MDAwMDAwMA==4503f47698e5fc4ee942383b2ad564c2\";\r\n//AG_GRID_LICENSE = \"CompanyName=Confederated Tribes of the Umatilla Indian Reservation,LicensedApplication=CDMS,LicenseType=SingleApplication,LicensedConcurrentDeveloperCount=2,LicensedProductionInstancesCount=0,AssetReference=AG-008333,ExpiryDate=29_May_2021_[v2]_MTYyMjI0MjgwMDAwMA==a03e080c36373374aeff15e4b0a3fe3f\";\r\nexport 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//\r\n// if ('undefined' !== typeof agGrid) {\r\nLicenseManager.setLicenseKey(AG_GRID_LICENSE);\r\n// //agGrid.initialiseAgGridWithAngular1(angular);\r\n// }\r\n\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/arcgis/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//export let DEFAULT_BASEMAP = \"BingMapsRoad\";\r\nexport let SDE_FEATURECLASS_TAXLOTQUERY = 4;\r\n\r\n// UI Config Options\r\nexport let uiConfig = {\r\n logo: \"./assets/images/logo.png\",\r\n background: \"../images/TionaMorrisonGorge20200504.jpg\",\r\n version: \"CDMS v.3.1\",\r\n welcomeText: \"Columbia River Inter-Tribal Fish Commission\",\r\n welcomeSubtext: \"Central Data Management System\",\r\n headerText: \"CRITFC CDMS\",\r\n usesMap: false,\r\n usesPermits: false,\r\n\r\n}\r\n\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 = 5; // Primary Project Location, from table LocationTypes\r\nexport let PRIMARY_PROJECT_LOCATION_TYPEID = 5;\r\nexport let LOCATION_TYPE_Hab = 0;\r\nexport let LOCATION_TYPE_APPRAISAL = 0;\r\n\r\nexport let DATASTORE_ACTIVITYSYSTEMFIELDS = 7; //id for activitysystemfields datastore\r\nexport let SYSTEM_LOCATION_DATASET = 5; //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\n\r\n\r\n//datasets that are lookups/lists\r\nexport let FISHERMEN_DATASETID = 6;\r\nexport let SEASONS_DATASETID = 7;\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\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\nexport let METADATA_PROPERTY_LEASING_LEASETYPES = 1;\r\nexport let METADATA_PROPERTY_LEASING_PRODUCTIONDELIVERY = 1;\r\nexport let METADATA_PROPERTY_LEASING_CROPOPTIONS = 1;\r\nexport let METADATA_PROPERTY_LEASING_WEEDS = 1;\r\nexport let METADATA_PROPERTY_LEASING_RESIDUETYPES = 1;\r\nexport let METADATA_PROPERTY_LEASING_ANIMALTYPES = 1;\r\nexport let METADATA_PROPERTY_LEASING_SUBPRACTICES = 1;\r\nexport let METADATA_PROPERTY_LEASING_PRODUCTIONTYPES = 1;\r\nexport let METADATA_PROPERTY_LEASING_OPSTATES = 1;\r\nexport let METADATA_PROPERTY_LEASING_OPCITIES = 1;\r\nexport let METADATA_PROPERTY_LEASING_COMPLIANCE_INSP_TYPES = 1;\r\nexport let METADATA_PROPERTY_LEASING_VIOLATION_TYPES = 1;\r\nexport let METADATA_PROPERTY_LEASING_INSPECTIONVIOLATIONS = 1;\r\nexport let METADATA_PROPERTY_LEASING_SYSTEM_LASTLEASENUMBER = 1;\r\n\r\nexport let MAX_DATASET_RECORDS_THRESHOLD = 100;\r\n\r\nexport let METADATA_ENTITY_OLCEVENTS = 1;\r\n\r\nexport let METADATA_ENTITY_LEASING_SYSTEM = 1;\r\nexport 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\n// export 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\nexport let successUrl = '/projects';\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 \"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 \"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 \"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 //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 // We had problems with Bing, down below, so we switched back to the ESRI map.\r\n // Note: The roadsLayer, imageryLayer, and hybridLayer constants are not in the ESRI map,\r\n // 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 // 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\r\nexport let parcelLayerConfig =\r\n{\r\n taxParcelLayer: {\r\n Display: \"Tax Parcel\",\r\n QueryURL: \"https://restdata.ctuir.org/arcgis/rest/services/TaxParcelQueryCTUIR/MapServer/0\",//?token=\" + security_token,\r\n ServiceURL: \"https://restdata.ctuir.org/arcgis/rest/services/BasemapParcelViewerCTUIR/MapServer\",//?token=\" + security_token,\r\n OutFields: \"PARCELID, Address\",\r\n isAddressSearchService: true,\r\n //ParcelQuery: \"PARCELID LIKE '%${0}%' \",\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 //QueryURL: \"https://restdata.ctuir.org/arcgis/rest/services/TaxParcelQueryCTUIR/MapServer/0\",//?token=\" + security_token,\r\n //ServiceURL: \"https://restdata.ctuir.org/arcgis/rest/services/DECD/BasemapDECD_Imagery/MapServer?token=\" + security_token,\r\n ServiceURL: \"https://restdata.ctuir.org/arcgis/rest/services/BasemapImagery/MapServer\",//?token=\" + security_token,\r\n QueryURL: \"https://restdata.ctuir.org/arcgis/rest/services/Parcels_LIVE/MapServer/0\",\r\n //QueryURL: \"https://restdata.ctuir.org/arcgis/rest/services/Parcels_CTUIR/MapServer/0\",\r\n OutFields: \"PARCELID, Address\",\r\n isAddressSearchService: true,\r\n //ParcelQuery: \"PARCELID LIKE '%${0}%' \",\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/arcgis/rest/services/TaxParcelQueryCTUIR/MapServer/0\",//?token=\" + security_token,\r\n ServiceURL: \"https://restdata.ctuir.org/arcgis/rest/services/DECD/BasemapsDECD_Plat/MapServer\",//?token=\" + security_token,\r\n OutFields: \"PARCELID, Address\",\r\n isAddressSearchService: true,\r\n //ParcelQuery: \"PARCELID LIKE '%${0}%' \",\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/arcgis/rest/services/TaxParcelQueryCTUIR/MapServer/0\",//?token=\" + security_token,\r\n ServiceURL: \"https://restdata.ctuir.org/arcgis/rest/services/DECD/BasemapsDECD_Soils/MapServer\",//?token=\" + security_token,\r\n OutFields: \"PARCELID, Address\",\r\n isAddressSearchService: true,\r\n //ParcelQuery: \"PARCELID LIKE '%${0}%' \",\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/arcgis/rest/services/TaxParcelQueryCTUIR/MapServer/0\",//?token=\" + security_token,\r\n ServiceURL: \"https://restdata.ctuir.org/arcgis/rest/services/DECD/BasemapsDECD_Topo/MapServer\",//?token=\" + security_token,\r\n OutFields: \"PARCELID, Address\",\r\n isAddressSearchService: true,\r\n //ParcelQuery: \"PARCELID LIKE '%${0}%' \",\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/arcgis/rest/services/TaxParcelQueryCTUIR/MapServer/0\",//?token=\" + security_token,\r\n ServiceURL: \"https://restdata.ctuir.org/arcgis/rest/services/BasemapZoningParcels/MapServer\",//?token=\" + security_token,\r\n OutFields: \"PARCELID, Address\",\r\n isAddressSearchService: true,\r\n //ParcelQuery: \"PARCELID LIKE '%${0}%' \",\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/arcgis/rest/services/StreamBuffers/MapServer\",//?token=\" + security_token,\r\n },\r\n utilityLines: {\r\n Display: \"Utilities\",\r\n ServiceURL: \"https://restdata.ctuir.org/arcgis/rest/services/UtilityLines/MapServer\",//?token=\" + security_token,\r\n },\r\n waterSewer: {\r\n Display: \"Water / Sewer\",\r\n ServiceURL: \"https://restdata.ctuir.org/arcgis/rest/services/WaterSewer/MapServer\",//?token=\" + security_token,\r\n },\r\n roads: {\r\n Display: \"Roads\",\r\n ServiceURL: \"https://restdata.ctuir.org/arcgis/rest/services/Roads/MapServer\",//?token=\" + security_token,\r\n },\r\n range: {\r\n Display: \"Grazing Range\",\r\n ServiceURL: \"https://restdata.ctuir.org/arcgis/rest/services/RangeUnits/MapServer\",//?token=\" + security_token,\r\n },\r\n forest: {\r\n Display: \"Timber Stands\",\r\n ServiceURL: \"https://restdata.ctuir.org/arcgis/rest/services/ForestStands/MapServer\",//?token=\" + security_token,\r\n },\r\n parcels: {\r\n Display: \"Parcels\",\r\n ServiceURL: \"https://restdata.ctuir.org/arcgis/rest/services/Parcels_LIVE/MapServer/0\",\r\n },\r\n parcels_outline: {\r\n Display: \"ParcelOutline\",\r\n ServiceURL: \"https://restdata.ctuir.org/arcgis/rest/services/Parcels_outline/MapServer\",\r\n },\r\n // note added for testing\r\n farms: {\r\n Display: \"Farms\",\r\n ServiceURL: \"https://arcserv4.ctuir.org/server/rest/services/FarmTracts_RAF/MapServer/0\",\r\n }\r\n};\r\n\r\nexport let PARCEL_LAYER = \"https://restdata.ctuir.org/arcgis/rest/services/Parcels_LIVE/MapServer/0\";\r\nexport let ZONING_LAYER = \"https://restdata.ctuir.org/arcgis/rest/services/Zoning/MapServer/4\";\r\n\r\n//export let MapPointsLayer = \"https://restdata.ctuir.org/arcgis/rest/services/CDMS_ProjectPoints_TEST/FeatureServer/0\";\r\nexport let MapPointsLayer = \"https://restdata.ctuir.org/arcgis/rest/services/CDMS_ProjectPoints/FeatureServer/0\";\r\n// added due to build errors in Jenkins\r\nexport let AdminUserIds = []\r\n//analytics configuration\r\ndeclare const ga: any;\r\n// @ts-ignore\r\n(function (i, s, o, g, r, a, m) {\r\n i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () {\r\n (i[r].q = i[r].q || []).push(arguments)\r\n },\r\n // @ts-ignore\r\n i[r].l = 1 * new Date();\r\n 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\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 * 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 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 $scope.Criteria.Value = null;\r\n console.dir($scope.Criteria);\r\n };\r\n\r\n $scope.changeFilterIcons = function (event) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters = $scope.agGridOptions.api.getFilterModel();\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.field) || span.textContent.includes(col.headerName)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.field in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n console.log(icon);\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n if (icon && icon.style) {\r\n icon.style.color = \"#bdbdbd\";\r\n }\r\n }\r\n }\r\n }\r\n }\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 (event) {\r\n $scope.changeFilterIcons(event);\r\n },\r\n onFilterModified: function (event) {\r\n $scope.changeFilterIcons(event);\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 icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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 $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: $scope.dataset.Id,\r\n Fields: $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 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 }\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 $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","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\n//import {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\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 * 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\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 $scope.changeFilterIcons = function (event) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters = $scope.agGridOptions.api.getFilterModel();\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.field) || span.textContent.includes(col.headerName)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.field in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n console.log(icon);\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n if (icon && icon.style) {\r\n icon.style.color = \"#bdbdbd\";\r\n }\r\n }\r\n }\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 onBodyScroll: function (event) {\r\n $scope.changeFilterIcons(event);\r\n },\r\n onFilterModified: function (event) {\r\n $scope.changeFilterIcons(event);\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 icons: {\r\n menu: \"filter_alt\", filter: \"\",\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(\"finished editing.\");\r\n //console.dir(event);\r\n\r\n if (GridService.validateCell(event, $scope)) {\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 == \"Description\") {\r\n fieldDef.field = \"Activity.\" + fieldDef.DbColumnName;\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, $scope);\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 if ($scope.PageErrorCount > 0) {\r\n if (($scope.dataset.Config) && ($scope.dataset.Config.AllowSaveWithErrors)) {\r\n if ($scope.dataset.Config.AllowSaveWithErrors === false) {\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 // 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 // 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.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 //$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 $scope.datasets = DatasetService.getAllDatasetsList();\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 field: 'hasActivity',\r\n headerName: \"Activities Exist\",\r\n width: 200,\r\n menuTabs: ['filterMenuTab'],\r\n filter: 'text',\r\n valueGetter: function (data) {\r\n if (data.data.hasActivity === \"unknown\") {\r\n return \"\";\r\n }\r\n else if (data.data.hasActivity === \"yes\") {\r\n return \"Yes\";\r\n }\r\n else if (data.data.hasActivity === \"no\") {\r\n return \"No\";\r\n }\r\n },\r\n }\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 setTimeout(() => {\r\n $scope.refreshGrid();\r\n }, 300)\r\n },\r\n selectedItem: null,\r\n rowSelection: 'single',\r\n onSelectionChanged: function (params) {\r\n $scope.datasetGridOptions.selectedItem = $scope.datasetGridOptions.api.getSelectedRows()[0];\r\n $scope.$apply();\r\n console.log($scope.datasetGridOptions.selectedItem);\r\n },\r\n onBodyScroll: function (event) {\r\n $scope.changeFilterIcons(event, \"dataset\");\r\n },\r\n onFilterModified: function (event) {\r\n $scope.changeFilterIcons(event, \"dataset\");\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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 filter: 'text',\r\n valueGetter: function (data) {\r\n if (data.data.hasDataset) return \"Yes\"; else return \"No\";\r\n },\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 setTimeout(() => {\r\n $scope.refreshGrid();\r\n }, 300)\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 onBodyScroll: function (event) {\r\n $scope.changeFilterIcons(event, \"datastore\");\r\n },\r\n onFilterModified: function (event) {\r\n $scope.changeFilterIcons(event, \"datastore\");\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\r\n },\r\n };\r\n\r\n $scope.datasets.forEach(async function (dataset) {\r\n\r\n dataset.hasActivity = \"unknown\";\r\n\r\n DatasetService.getActivities(dataset.Id, 1).then(function (result) {\r\n\r\n if (result.length == 1) {\r\n dataset.hasActivity = \"yes\";\r\n } else {\r\n dataset.hasActivity = \"no\";\r\n }\r\n })\r\n\r\n })\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 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 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.changeFilterIcons = function (event, grid) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters;\r\n if (grid == \"dataset\") {\r\n filters = $scope.datasetGridOptions.api.getFilterModel();\r\n }\r\n else {\r\n filters = $scope.datastoreGridOptions.api.getFilterModel();\r\n }\r\n\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.field) || span.textContent.includes(col.headerName)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.field in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n if (icon && icon.style) {\r\n icon.style.color = \"#bdbdbd\";\r\n }\r\n }\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.deleteDataset = function () {\r\n if (confirm(\"Are you sure you want to delete this dataset? There is no undo.\")) {\r\n console.log($scope.datasetGridOptions.selectedItem);\r\n var deleted = AdminService.deleteDataset($scope.datasetGridOptions.selectedItem.Id);\r\n deleted.$promise.then(function () {\r\n $scope.datasets.forEach(function (store, index) {\r\n if (store.Id == $scope.datasetGridOptions.selectedItem.Id) {\r\n $scope.datasets.splice(index, 1);\r\n }\r\n });\r\n $scope.datasetGridOptions.selectedItem = null;\r\n $scope.datasetGridOptions.api.setRowData($scope.datasets);\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.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.refreshGrid = function () {\r\n $scope.datasetGridOptions.api.refreshCells({ force: true });\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, PUBLIC_OR_PRIVATE, REPORTSERVER_URL, uiConfig, CDMS_DOCUMENTATION_URL } 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 uiConfig;\r\n public logoSrc;\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.logoSrc = uiConfig.logo;\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.lazyLoader.load(this.elRef.nativeElement);\r\n this.uiConfig = uiConfig;\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.lazyLoader.destroy();\r\n }\r\n}\r\n","/**\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 } 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 // This loop iterates through the list sequentially.\r\n for (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 var listLength = list.length;\r\n\r\n if (binIdSearch())\r\n\r\n return -1;\r\n}\r\n\r\n//returns array with matching field value\r\nexport function getMatchingByField(data, search, field) {\r\n //console.log(\"data is next...\");\r\n //console.dir(data);\r\n //console.log(\"search is next...\");\r\n //console.dir(search);\r\n\r\n var newlist = [];\r\n\r\n for (var key in data) {\r\n //console.log(\"key = \" + key + \", field = \" + field);\r\n //console.dir(key);\r\n if (data[key][field] == search) {\r\n //console.log(\"Found it...\");\r\n newlist.push(data[key]);\r\n }\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 // 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 console.log(\"a_date = \" + a_date);\r\n console.log(\"typeof a_date = \" + typeof a_date);\r\n\r\n // When the date comes in from the Data Entry page, a_date is a date object.\r\n // When the date comes in from the Date Edit page, a_date is a string.\r\n if (typeof a_date !== 'string') {\r\n strYear = a_date.getFullYear().toString();\r\n\r\n // Note: getMonth gives a zero-based month; January is 0.\r\n strMonth = (a_date.getMonth() + 1).toString();\r\n if (strMonth.length < 2)\r\n strMonth = \"0\" + strMonth;\r\n\r\n strDay = a_date.getDate().toString();\r\n if (strDay.length < 2)\r\n strDay = \"0\" + strDay;\r\n }\r\n else {\r\n strYear = a_date.substr(0, 4);\r\n strMonth = a_date.substr(5, 2);\r\n strDay = a_date.substr(8, 2);\r\n }\r\n\r\n console.log(\"The date = \" + strYear + \"-\" + strMonth + \"-\" + strDay);\r\n //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 //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 var theHour = \"00\";\r\n var theMinutes = \"00\";\r\n var theSeconds = \"00\";\r\n separatorLocation = d.indexOf(\":\");\r\n if (separatorLocation < 0) // The string has only date, no time.\r\n {\r\n // Do nothing; the hour/minutes/seconds are already set.\r\n }\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 if (separatorLocation < 0) {\r\n // Do nothing; the hour/minutes/seconds are already set.\r\n }\r\n else {\r\n theMinutes = d.substring(0, 2);\r\n //console.log(\"theMinutes = \" + theMinutes);\r\n d = d.substring(3);\r\n //console.log(\"d = \" + d);\r\n d = \"\" + d;\r\n //console.log(\"d = \" + d);\r\n if ((d.length > 0) && (d.length < 2))\r\n theSeconds = pad(d);\r\n else\r\n theSeconds = \"00\";\r\n }\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 var strIsoDateTime = \"\";\r\n var strType = \"\";\r\n strType = typeof strD;\r\n //console.log(\"strType = \" + strType);\r\n if (strType === \"string\") {\r\n if (strD.indexOf(\"T\") > -1) // UTC (YYYY-MM-DDTHH:MM:SS.mmm)\r\n {\r\n strIsoDateTime = strD.replace(\"T\", \" \");\r\n }\r\n else if (strD.indexOf(\"/\") > -1) // Friendly (MM/DD/YYYY HH:MM)\r\n {\r\n strIsoDateTime = 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 }\r\n else {\r\n\r\n }\r\n //console.log(\"strIsoDateTime = \" + strIsoDateTime);\r\n return 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 //console.log(\"Inside uniq_fast...\");\r\n //console.dir(a);\r\n var seen = {};\r\n var out = [];\r\n var len = a.length;\r\n var j = 0;\r\n\r\n //console.log(\"len = \" + len);\r\n for (var i = 0; i < len; i++) {\r\n var item = a[i];\r\n //console.log(\"item = \" + item);\r\n //console.log(\"seen[\" + item + \"] = \" + seen[item]);\r\n if ((seen[item] === undefined) || (seen[item] !== 1)) {\r\n //console.log(\"New item...\");\r\n seen[item] = 1;\r\n out[j++] = item;\r\n }\r\n }\r\n //console.log(\"out is next...\");\r\n //console.dir(out);\r\n\r\n return 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 console.log(\"Inside common-functions.js, isObjectEmpty...\");\r\n for (var prop in obj) {\r\n if (obj.hasOwnProperty(prop))\r\n return false;\r\n }\r\n return 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 console.log(\"Inside common-functions.js, convertStringToArray...\");\r\n //console.log(\"aString = \" + aString);\r\n\r\n var aryItems = aString.split(\";\");\r\n //console.log(\"aryItems is next...\");\r\n //console.dir(aryItems);\r\n\r\n // Next, get rid of that trailing semicolon record.\r\n aryItems.splice(-1, 1);\r\n //console.dir(aryItems);\r\n\r\n return 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\n// export 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 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 var files = getFilesArrayAsList(a_files);\r\n var retval = [];\r\n\r\n files.forEach(function (file) {\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 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' || type == 'qa-status-comment' ||\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 if (Array.isArray(values)) { //if array type of possible values, just return the value\r\n return function (params) { return params.value; }\r\n }\r\n else if (values == null) {\r\n return function (params) { return params.value; }\r\n // return function (params) { return values[params.value]; }\r\n }\r\n else {\r\n return function (params) { return values[params.value]; }\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","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\n// deleted AdminUserIds from the below import\r\nimport { 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 \"QAStatusId\",\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 //console.dir($scope.QAStatusList);\r\n //console.dir(params);\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 $scope.changeFilterIcons = function (event) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters = $scope.agGridOptions.api.getFilterModel();\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.field) || span.textContent.includes(col.headerName)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.field in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n console.log(icon);\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n if (icon && icon.style) {\r\n icon.style.color = \"#bdbdbd\";\r\n }\r\n }\r\n }\r\n }\r\n }\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 onBodyScroll: function (event) {\r\n $scope.changeFilterIcons(event);\r\n },\r\n onFilterModified: function (event) {\r\n $scope.changeFilterIcons(event);\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 icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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\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 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 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\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\n//import {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 $scope.ListsToHide = ['Datasets', 'Lookups', 'Program', 'Project'];\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\n//import habitat_module from \"./private/habitat/habitat-module\";\r\n//import habitat_module from \"./private/habitat/habitat-module\";\r\nimport {\r\n ANALYTICS_CODE,\r\n CDMS_DOCUMENTATION_URL,\r\n CURRENT_VERSION,\r\n DataGradeMethods,\r\n DEFAULT_PROJECT_PERMISSION,\r\n DISPLAY_NAME,\r\n ENVIRONMENT,\r\n PUBLIC_OR_PRIVATE,\r\n REPORTSERVER_URL,\r\n serverUrl,\r\n SystemTimezones,\r\n AG_GRID_LICENSE,\r\n} from \"./config\";\r\n//import permit_module from \"./private/permits/permit-module\";\r\nimport { getByName } from \"./core/common/common-functions\";\r\n//import olc_module from \"./private/olc/olc-module\";\r\nimport admin_module from \"./core/admin/admin-module\";\r\n//import bot_module from \"./private/bot/bot-module\";\r\nimport projects_module from \"./core/projects/projects-module\";\r\n//import leasing_module from \"./private/leasing/leasing-module\";\r\n//import covid_module from \"./private/covid/covid-module\";\r\n//import crpp_module from \"./private/crpp/crpp-module\";\r\nimport datasets_module from \"./core/datasets/datasets-module\";\r\n//import 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\n//import {EsriMapComponent} from \"../app/map/esri-map/esri-map.component\";\r\n//import {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://cdmsdevtribal.ctuir.org', 'https://cdmsdevtribal.ctuir.org', 'http://cdmsdevtribal.ctuir.org', 'http://cdmsdevtribal.ctuir.org',\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 'http://localhost:4200/localhost:60681/index.html'\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 return '/dashboard';\r\n }\r\n else {\r\n return '/login';\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\n// app.directive('esriFeatureLayer', featureLayerDirective);\r\n// app.directive('esriMap', downgradeComponent({component: EsriMapComponent}));\r\n\r\napp.service('ProfileService', downgradeInjectable(ProfileService));\r\n// app.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","import {getByField} from \"../../../common/common-functions\";\r\n//import {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","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.changeFilterIcons = function (event) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters = scope.agGridOptions.api.getFilterModel();\r\n console.log(filters);\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.field) || span.textContent.includes(col.headerName)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.field in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n if (icon && icon.style) {\r\n icon.style.color = \"#bdbdbd\";\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\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 {\r\n headerName: \"Groups\", width: 120,\r\n cellRenderer: function (params) {\r\n return params.data.Groups.length;\r\n }\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 {\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 icons: {\r\n menu: \"filter_alt\",\r\n filter: \"\",\r\n }\r\n },\r\n onBodyScroll: function (event) {\r\n scope.changeFilterIcons(event);\r\n },\r\n onFilterModified: function (event) {\r\n scope.changeFilterIcons(event);\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 $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.changeFilterIcons = function (event) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters = $scope.agGridOptions.api.getFilterModel();\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.field) || span.textContent.includes(col.headerName)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.field in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n console.log(icon);\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n if (icon && icon.style) {\r\n icon.style.color = \"#bdbdbd\";\r\n }\r\n }\r\n }\r\n }\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 onBodyScroll: function (event) {\r\n $scope.changeFilterIcons(event);\r\n },\r\n onFilterModified: function (event) {\r\n $scope.changeFilterIcons(event);\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n icons: {\r\n menu: \"filter_alt\",\r\n filter: \"\",\r\n }\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 angular.forEach($scope.mydatasets, function (dataset, key) {\r\n //need to bump this to get the route\r\n DatasetService.configureDataset(dataset);\r\n });\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","// 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-ps\": \"TJgH\",\n\t\"./ar-ps.js\": \"TJgH\",\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-kmr\": \"dVgr\",\n\t\"./ku-kmr.js\": \"dVgr\",\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 $scope.changeFilterIcons = function (event) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters = $scope.agGridOptions.api.getFilterModel();\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.field) || span.textContent.includes(col.headerName)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.field in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n console.log(icon);\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n if (icon && icon.style) {\r\n icon.style.color = \"#bdbdbd\";\r\n }\r\n }\r\n }\r\n }\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 onBodyScroll: function (event) {\r\n $scope.changeFilterIcons(event);\r\n },\r\n onFilterModified: function (event) {\r\n $scope.changeFilterIcons(event);\r\n },\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 icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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","//controller for the main project list page.\r\nimport * as angular from 'angular';\r\nimport { 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 console.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.changeFilterIcons = function (event) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters = $scope.agGridOptions.api.getFilterModel();\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.field) || span.textContent.includes(col.headerName)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.field in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n console.log(icon);\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n if (icon && icon.style) {\r\n icon.style.color = \"#bdbdbd\";\r\n }\r\n }\r\n }\r\n }\r\n }\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\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 field: 'DatasetsExist',\r\n headerName: 'Datasets Exist',\r\n width: 130,\r\n menuTabs: ['filterMenuTab'],\r\n valueGetter: function (data) {\r\n if (data.data.hasDataset === \"unknown\") {\r\n return \"\";\r\n }\r\n else if (data.data.hasDataset === \"yes\") {\r\n return \"Yes\";\r\n }\r\n else if (data.data.hasDataset === \"no\") {\r\n return \"No\";\r\n }\r\n },\r\n filter: true\r\n }\r\n ];\r\n\r\n $scope.agGridOptions = {\r\n suppressPropertyNamesCheck: true,\r\n animateRows: true,\r\n rowSelection: 'single',\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 setTimeout(() => {\r\n $scope.refreshGrid();\r\n }, 300)\r\n },\r\n onBodyScroll: function (event) {\r\n $scope.changeFilterIcons(event);\r\n },\r\n onFilterModified: function (event) {\r\n $scope.changeFilterIcons(event);\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n icons: {\r\n menu: \"filter_alt\",\r\n filter: \"\",\r\n }\r\n },\r\n onSelectionChanged: function (params) {\r\n $scope.agGridOptions.selectedItem = $scope.agGridOptions.api.getSelectedRows()[0];\r\n $scope.$apply();\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 console.log(\"or else\")\r\n $scope.agGridOptions.api.setRowData($scope.projects);\r\n $scope.refreshGrid();\r\n }\r\n\r\n $scope.projects.forEach(async function (project) {\r\n project.hasDataset = \"unknown\";\r\n ProjectService.getProjectDatasets(project.Id).$promise.then(function (result) {\r\n console.log(result.length);\r\n if (result.length > 0) {\r\n project.hasDataset = \"yes\";\r\n } else {\r\n project.hasDataset = \"no\";\r\n }\r\n })\r\n })\r\n\r\n $scope.refreshGrid = function () {\r\n $scope.agGridOptions.api.refreshCells({ force: true });\r\n }\r\n\r\n $scope.deleteProject = function () {\r\n if (confirm(\"Are you sure you want to delete this project? There is no undo.\")) {\r\n console.log($scope.agGridOptions.selectedItem);\r\n var deleted = ProjectService.deleteProject($scope.agGridOptions.selectedItem.Id);\r\n deleted.$promise.then(function () {\r\n $scope.projects.forEach(function (store, index) {\r\n if (store.Id == $scope.agGridOptions.selectedItem.Id) {\r\n $scope.projects.splice(index, 1);\r\n }\r\n });\r\n $scope.agGridOptions.selectedItem = null;\r\n $scope.agGridOptions.api.setRowData($scope.projects);\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 // var project_grid_div = document.querySelector('#project-list-grid') as HTMLElement; //get the container id...\r\n // $scope.project_grid = new Grid(project_grid_div, $scope.agGridOptions); //bind the grid to it.\r\n // $scope.agGridOptions.api.setRowData($scope.projects);\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","// 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', count: 'count' }, 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('QueryRecordCount', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/query/queryrecordcount', {}, {\r\n save: { method: 'POST', isArray: false }\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\n// filter (pipe) to format numbers with commas\r\ndatasets_module.filter('thousandFormat', function() {\r\n return function(input) {\r\n if (input === null || input === undefined) return ''; \r\n return input.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n };\r\n});\r\n\r\nexport default datasets_module;\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","//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 console.log(\"Inside grid-sesrvice, scope is next...\");\r\n console.dir(scope);\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, Allow unlimited column width\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, Allow unlimited column width\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.log(\"Inside validateCell...\");\r\n //console.dir(event);\r\n //console.log(\"scope is next...\");\r\n //console.dir(scope);\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 }, scope);\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, scope) {\r\n console.log(\"Inside grid-service.ts, validateGrid...\");\r\n //console.log(\"scope is next...\");\r\n //console.dir(scope);\r\n\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 }, scope)\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, scope) { //row, field, value, headers, errors, scope) {\r\n //console.log(\"Inside grid-service, fireRule...\");\r\n //console.log(\"event is next...\");\r\n //console.dir(event); // scope is undefined here\r\n //console.log(\"scope is next...\");\r\n //console.dir(scope);\r\n\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 //console.log(\"DatasetFieldRule = \" + DatasetFieldRule);\r\n //console.dir(DatasetFieldRule);\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\" || dataset.Datastore.TablePrefix == \"WaterTemperature\") {\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('MM/DD/YYYY');\r\n var newest_date = moment(newest.data[fieldname]).format('MM/DD/YYYY');\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","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 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 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 scope.changeFilterIcons = function (event) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters = scope.docsGridOptions.api.getFilterModel();\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.field) || span.textContent.includes(col.headerName)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.field in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n if (icon && icon.style) {\r\n icon.style.color = \"#bdbdbd\";\r\n }\r\n }\r\n }\r\n }\r\n }\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 onBodyScroll: function (event) {\r\n scope.changeFilterIcons(event);\r\n },\r\n onFilterModified: function (event) {\r\n scope.changeFilterIcons(event);\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 icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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 },\r\n Description: {\r\n field: 'Description',\r\n value: scope.dataset.Description,\r\n controlType: 'text',\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 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 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 $location.path(\"/dataset-edit/\" + scope.dataset.Id);\r\n };\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 $location.path(\"/datasetimport/\" + scope.dataset.Id);\r\n };\r\n\r\n scope.openDataEntry = function (p) {\r\n $location.path(\"/dataentryform/\" + scope.dataset.Id);\r\n };\r\n\r\n\r\n }\r\n];\r\n\r\nexport default dataset_detail;\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\n// import {EsriMapComponent} from './map/esri-map/esri-map.component';\r\n// import {PermitMapComponent} from './map/permit-map/permit-map.component';\r\n// import {AppraisalMapComponent} from './map/appraisal-map/appraisal-map.component';\r\n// import {LeasingMapComponent} from './map/leasing-map/leasing-map.component';\r\nimport {FormsModule} from \"@angular/forms\";\r\n// import {ConfirmModule} from \"./confirm/confirm.module\";\r\n// import { 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 'DeleteDataset',\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 DeleteDataset,\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 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 deleteDataset: function (datasetId) {\r\n return DeleteDataset.save({ DatasetId: datasetId })\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 console.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, isDuplicateUploadFile, isFileInList, removeFileFromList} from \"../../common-functions\";\r\nimport {\r\n PUBLIC_OR_PRIVATE,\r\n HOST_SERVER,\r\n serviceUrl\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','$rootScope',\r\n '$uibModal','ProjectService',\r\n function ($scope, $uibModalInstance, \r\n DatasetService, $rootScope,\r\n $uibModal, ProjectService){\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 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\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 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 // 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-file.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\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\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
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n

{{welcomeText}}

\\r\\n

{{welcomeSubtext}}

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

{{errorHeader}}

\\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
\\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 \\r\\n Unauthorized access to this system is prohibited and will be prosecuted to the full extent of the\\r\\n law.
\\r\\n (C) 2014-Present - Confederated Tribes of the Umatilla Indian Reservation\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n \\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","// 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('DeleteDataset', ['$resource', function ($resource) {\r\n return $resource(serviceUrl + '/api/v1/dataset/deletedataset');\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\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 function ($scope, $timeout, $uibModal, DatasetService, AdminService, $routeParams) {\r\n\r\n $scope.datastore = DatasetService.getDatastore($routeParams.Id);\r\n\r\n\r\n $scope.datastore.$promise.then(function () {\r\n $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 onBodyScroll: function (event) {\r\n $scope.changeFilterIcons(event);\r\n },\r\n onFilterModified: function (event) {\r\n $scope.changeFilterIcons(event);\r\n },\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 icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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.changeFilterIcons = function (event) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters = $scope.fieldGridOptions.api.getFilterModel();\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.field) || span.textContent.includes(col.headerName)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.field in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n if (icon && icon.style) {\r\n icon.style.color = \"#bdbdbd\";\r\n }\r\n }\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 = 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 }\r\n];\r\n\r\nexport default admin_edit_master;\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","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 onBodyScroll: function (event) {\r\n scope.changeFilterIcons(event, \"org\");\r\n },\r\n onFilterModified: function (event) {\r\n scope.changeFilterIcons(event, \"org\");\r\n },\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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 {\r\n headerName: \"Members\", width: 120, cellRenderer: function (params) {\r\n return params.data.Members.length;\r\n }\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 icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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 onBodyScroll: function (event) {\r\n scope.changeFilterIcons(event, \"group\");\r\n },\r\n onFilterModified: function (event) {\r\n scope.changeFilterIcons(event, \"group\");\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 icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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 onBodyScroll: function (event) {\r\n scope.changeFilterIcons(event, \"department\");\r\n },\r\n onFilterModified: function (event) {\r\n scope.changeFilterIcons(event, \"department\");\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 {\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 {\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 {\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 icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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 onBodyScroll: function (event) {\r\n scope.changeFilterIcons(event, \"user\");\r\n },\r\n onFilterModified: function (event) {\r\n scope.changeFilterIcons(event, \"user\");\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 {\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 {\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 icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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 onBodyScroll: function (event) {\r\n scope.changeFilterIcons(event, \"admin\");\r\n },\r\n onFilterModified: function (event) {\r\n scope.changeFilterIcons(event, \"admin\");\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 icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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 onBodyScroll: function (event) {\r\n scope.changeFilterIcons(event, \"member\");\r\n },\r\n onFilterModified: function (event) {\r\n scope.changeFilterIcons(event, \"member\");\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 scope.changeFilterIcons = function (event, grid) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters;\r\n if (grid == \"org\") {\r\n filters = scope.orgGrid.api.getFilterModel();\r\n }\r\n else if (grid == \"group\") {\r\n filters = scope.groupGrid.api.getFilterModel();\r\n }\r\n else if (grid == \"department\") {\r\n filters = scope.departmentGrid.api.getFilterModel();\r\n }\r\n else if (grid == \"user\") {\r\n filters = scope.userGrid.api.getFilterModel();\r\n }\r\n else if (grid == \"admin\") {\r\n filters = scope.adminGrid.api.getFilterModel();\r\n }\r\n else {\r\n filters = scope.memberGrid.api.getFilterModel();\r\n }\r\n\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.field) || span.textContent.includes(col.headerName)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.field in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n if (icon && icon.style) {\r\n icon.style.color = \"#bdbdbd\";\r\n }\r\n }\r\n }\r\n }\r\n }\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 var 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","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\n//import {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 * 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.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 var mappableFields = [];\r\n mappableFields.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 return mappableFields;\r\n };\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 //console.dir(data_row);\r\n\r\n //set default Row QA StatusId\r\n var 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 };\r\n\r\n // On each row of imported data (data_row), we only want to pull in the fields we have mapped.\r\n // 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 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 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 }); //foreach data row\r\n //console.dir(imported_rows);\r\n return imported_rows;\r\n\r\n };\r\n\r\n // Get the date range for WaterTemperature activities\r\n $scope.getDateRange = function (rows) {\r\n var range = \"\";\r\n var earliest = \"\";\r\n var latest = \"\";\r\n\r\n rows.forEach(function (row) {\r\n if (earliest == \"\") {\r\n earliest = row.ReadingDateTime;\r\n latest = row.ReadingDateTime;\r\n } else {\r\n if (row.ReadingDateTime < earliest) {\r\n earliest = row.ReadingDateTime;\r\n } else if (row.ReadingDateTime > latest) {\r\n latest = row.ReadingDateTime;\r\n }\r\n }\r\n });\r\n\r\n earliest = moment(earliest).format(\"MM/DD/YYYY\");\r\n latest = moment(latest).format(\"MM/DD/YYYY\");\r\n\r\n range = earliest + \" - \" + latest;\r\n return range;\r\n }\r\n\r\n\r\n $scope.openLocationMappingModal = function () {\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 console.log(\"Got result back from location modal...\");\r\n //console.dir($scope.mappedLocations);\r\n\r\n // Add date range for WaterTemperature\r\n if ($scope.dataset.Datastore.TablePrefix == \"WaterTemp\" || $scope.dataset.Datastore.TablePrefix == \"WaterTemperature\") {\r\n var range = $scope.getDateRange($scope.imported_rows);\r\n }\r\n\r\n $scope.imported_rows.forEach(function (data_row) {\r\n\r\n // Add date range for WaterTemperature\r\n if ($scope.dataset.Datastore.TablePrefix == \"WaterTemp\" || $scope.dataset.Datastore.TablePrefix == \"WaterTemperature\") {\r\n data_row.Activity.Description = range;\r\n }\r\n\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.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\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 $scope.openQueryWindow = function (p) {\r\n delete $rootScope.imported_rows;\r\n $location.path(\"/datasetquery/\" + $scope.dataset.Id);\r\n };\r\n\r\n $scope.openDetailsWindow = function (p) {\r\n delete $rootScope.imported_rows;\r\n $location.path(\"/dataset-details/\" + $scope.dataset.Id);\r\n };\r\n\r\n $scope.openImportWindow = function () {\r\n $location.path(\"/datasetimport/\" + $scope.dataset.Id);\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\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 }\r\n];\r\n\r\nexport default dataset_import;\r\n","\r\nvar modal_verify_action = ['$scope', '$rootScope', '$uibModalInstance', 'SubprojectService',\r\n function ($scope, $rootScope, $uibModalInstance, SubprojectService){\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\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);\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//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","\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, NAD83_SPATIAL_REFERENCE, uiConfig } from '../../../../config';\r\n// import { EsriMapComponent } from \"src/app/map/esri-map/esri-map.component\";\r\n\r\nvar modal_edit_location = ['$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 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 var symbol = null;\r\n\r\n if ($scope.ProjectLocation_modal) {\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 $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 console.log(\"Inside $scope.save...\");\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 if (uiConfig.usesMap) {\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 } else {\r\n // LocationController.cs will overwrite user input to current datetime, but API requires a time\r\n console.log(\"Adding a location to the database, not using the map\");\r\n if ($scope.row.CreateDateTime == null) {\r\n let date = new Date();\r\n let dt = date.toJSON();\r\n $scope.row.CreateDateTime = dt;\r\n $scope.saveResult = CommonService.saveNewProjectLocation($scope.project.Id, $scope.row);\r\n $scope.saveResult.$promise.then(function () {\r\n $scope.updateParentItem();\r\n });\r\n $uibModalInstance.close();\r\n } else {\r\n $scope.saveResult = CommonService.saveNewProjectLocation($scope.project.Id, $scope.row);\r\n $scope.saveResult.$promise.then(function () {\r\n $scope.updateParentItem();\r\n });\r\n $uibModalInstance.close();\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 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 // 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 // // $scope.row.SdeObjectId = addResults[0].objectId;\r\n // // console.log(\"Added new point! \" + $scope.row.SdeObjectId);\r\n //\r\n // //throw \"Stopping right here...\";\r\n //\r\n // // var attributes = {\r\n // // OBJECTID: $scope.OldSdeObjectId\r\n // // }\r\n // // var deleteGraphic = new Graphic($scope.newPoint, null, 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 // // $scope.map.locationLayer.applyEdits(null, null, [deleteGraphic], function (addResults, updateResults, 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[0]);\r\n //\r\n // //.then(function (deleteResults) {\r\n // if (inId.failed == \"The location did not exist in SDE.\") {\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(\"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 $scope.saveResult = CommonService.updateLocationAction($scope.project.Id, $scope.row.Id, $scope.row.SdeObjectId, $scope.row);\r\n $scope.saveResult.$promise.then(function () {\r\n $scope.updateParentItem();\r\n });\r\n //CommonService.updateLocationAction($scope.project.Id, $scope.row.Id, $scope.row.SdeObjectId, $scope.row);\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); //when done (handles failed files, etc., sets in scope objects) then calls modalFiles_saveParentItem below.\r\n //\r\n }\r\n // }); //require\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(\"Insilde modal-edit-location.ts, modalFile_saveParentItem...\");\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 //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 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, $scope)) {\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 {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, $scope)) {\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 getAgGridFilterByType, getAgGridFilterParamsByType,\r\n getByField,\r\n getFilesArrayAsList,\r\n getParsedMetadataValues, getPossibleValues,\r\n instrumentsToPossibleValues, makeObjects, orderByAlpha\r\n} from \"../../../common/common-functions\";\r\nimport { MAX_DATASET_RECORDS_THRESHOLD, serverUrl, SystemDefaultColumnWidth } from \"../../../../config\";\r\nimport { Grid } from \"ag-grid-community\";\r\nimport { saveAs } from 'file-saver';\r\nimport { serviceUrl, DATASET_RECORDS_EXPORT_FORMAT_THRESHOLD, REPORTSERVER_URL } from \"../../../../config\";\r\nimport 'ag-grid-enterprise';\r\n//import { MatIconModule } from '@angular/material/icon';\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 = null;\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.firstId = 0;\r\n $scope.lastSeenId = 0;\r\n $scope.firstIx = 0;\r\n $scope.lastIx = 0;\r\n $scope.resultCount = 0;\r\n $scope.resultsPerPage = 1000;\r\n $scope.currentPage = 0;\r\n $scope.nextPage = true;\r\n $scope.recordCount = 0;\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 $scope.sortModel = [];\r\n $scope.filterModel;\r\n $scope.filterChanged = false;\r\n $scope.overlayCountBool = false;\r\n $scope.overlayResultBool = false;\r\n\r\n // Export records to csv variables\r\n $scope.modalInstance = null;\r\n $scope.isExporting = false;\r\n $scope.isExportClicked = false;\r\n $scope.isLessThanThreshold = true;\r\n $scope.exportText = 'Export Records';\r\n\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\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\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 = false;\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\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 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 $scope.changeFilterIcons = function (event) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters = $scope.dataAgGridOptions.api.getFilterModel();\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.Label)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.DbColumnName in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n icon.style.color = \"#bdbdbd\";\r\n }\r\n }\r\n }\r\n }\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 overlayLoadingTemplate: '',\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 suppressMultiSort: true,\r\n onBodyScroll: function (event) {\r\n $scope.changeFilterIcons(event);\r\n },\r\n onFilterModified: function (event) {\r\n $scope.changeFilterIcons(event);\r\n },\r\n rowModelType: 'serverSide',\r\n pagination: true,\r\n paginationPageSize: 1000,\r\n cacheBlockSize: 1000,\r\n maxBlocksInCache: 1,\r\n infiniteInitialRowCount: 1000,\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 // Used for bottom bar for field description\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 onSortChanged: function () {\r\n // if sort is changed, start over with new index from 0\r\n $scope.lastSeenId = 0;\r\n },\r\n onPaginationChanged: function () {\r\n // check paginationGetCurrentPage() against the last page to see if we went forward or back\r\n if ($scope.dataAgGridOptions.api) {\r\n if ($scope.dataAgGridOptions.api.paginationGetCurrentPage() > $scope.currentPage) {\r\n $scope.nextPage = true;\r\n }\r\n else if ($scope.dataAgGridOptions.api.paginationGetCurrentPage() < $scope.currentPage) {\r\n $scope.nextPage = false;\r\n }\r\n }\r\n\r\n $scope.currentPage = $scope.dataAgGridOptions.api.paginationGetCurrentPage();\r\n },\r\n onGridReady: function (params) {\r\n $scope.system.loading = false;\r\n $scope.$apply();\r\n GridService.autosizeColumns($scope.dataAgGridOptions);\r\n },\r\n floatingFilter: false,\r\n defaultColDef: {\r\n editable: false,\r\n suppressHeaderFilterButton: false,\r\n sortable: true,\r\n resizable: true,\r\n enableFilter: true,\r\n filter: true,\r\n filterParams: { applyButton: true, clearButton: true },\r\n icons: {\r\n menu: \"filter_alt\",\r\n }\r\n },\r\n paginationNumberFormatter: function (params) {\r\n return ' ' + params.value.toLocaleString() + ' ';\r\n },\r\n processCellForClipboard: $scope.processCellDataForOutput,\r\n\r\n // Remove the Export context menu item\r\n getContextMenuItems: params => {\r\n var defaultItems = params.defaultItems; // Get the default context menu items\r\n var filteredItems = defaultItems.filter(item => item !== 'export');\r\n return filteredItems;\r\n }\r\n };\r\n\r\n $scope.getRowCount = function () {\r\n if ($scope.dataAgGridOptions.api) {\r\n return $scope.dataAgGridOptions.api.getDisplayedRowCount();\r\n } else {\r\n return 0;\r\n }\r\n };\r\n\r\n $scope.activateGrid = function () {\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 // generic index field that will always be included\r\n const indexField = {\r\n headerName: 'index',\r\n field: 'ix',\r\n width: SystemDefaultColumnWidth,\r\n //maxWidth: 320, Allow unlimited column width\r\n Label: 'ix',\r\n DbColumnName: 'ix',\r\n ControlType: 'ix',\r\n DatasetId: $scope.dataset.Id,\r\n ProjectId: $scope.dataset.ProjectId,\r\n hide_header: true,\r\n hide: \"true\",\r\n };\r\n $scope.dataAgColumnDefs.DetailFields.push(indexField);\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 // If the detail fields have set possible values, use them as filter param values to use them to filter instead of default text search\r\n if (fieldDef.PossibleValues && fieldDef.PossibleValues.length > 0) {\r\n fieldDef.filterParams = {\r\n values: Object.values(fieldDef.PossibleValues),\r\n applyButton: true,\r\n clearButton: true,\r\n }\r\n fieldDef.filter = true;\r\n }\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 if (fieldDef.hasOwnProperty(\"filterParams\")) {\r\n if (fieldDef.filterParams != null) {\r\n if (!fieldDef.filterParams.hasOwnProperty(\"apply\") || !fieldDef.filterParams.hasOwnProperty(\"applyButton\")) {\r\n fieldDef.filterParams.applyButton = true;\r\n }\r\n\r\n if (!fieldDef.filterParams.hasOwnProperty(\"clear\") || !fieldDef.filterParams.hasOwnProperty(\"clearButton\")) {\r\n fieldDef.filterParams.clearButton = true;\r\n }\r\n } else {\r\n fieldDef.filterParams = {\r\n applyButton: true,\r\n clearButton: true,\r\n }\r\n }\r\n\r\n } else {\r\n fieldDef.filterParams = {\r\n applyButton: true,\r\n clearButton: true,\r\n }\r\n }\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 // 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 fieldDef.filterParams = {\r\n applyButton: true,\r\n clearButton: true,\r\n values: params => {\r\n dataset_locations.$promise.then(function () {\r\n dataset_locations = dataset_locations.sort(orderByAlpha);\r\n fieldDef.PossibleValuesList = dataset_locations; //makeObjects(dataset_locations, 'Id', 'Label'); //used in the headers\r\n if (fieldDef.hasOwnProperty('setPossibleValues')) {\r\n fieldDef.setPossibleValues(makeObjects(dataset_locations, 'Id', 'Label'));\r\n var vals = Object.values(fieldDef.PossibleValues);\r\n params.success(vals);\r\n }\r\n })\r\n }\r\n }\r\n\r\n dataset_locations.$promise.then(function () {\r\n dataset_locations = dataset_locations.sort(orderByAlpha);\r\n fieldDef.PossibleValuesList = dataset_locations;\r\n if (fieldDef.hasOwnProperty('setPossibleValues')) {\r\n fieldDef.setPossibleValues(makeObjects(dataset_locations, 'Id', 'Label'));\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\r\n fieldDef.filterParams = {\r\n values: Object.values(fieldDef.PossibleValues),\r\n applyButton: true,\r\n clearButton: true,\r\n }\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 fieldDef.filter = getAgGridFilterByType(fieldDef.ControlType, fieldDef.DbColumnName)\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\r\n fieldDef.filterParams = {\r\n values: Object.values(fieldDef.PossibleValues),\r\n applyButton: true,\r\n clearButton: true,\r\n }\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\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\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\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\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\r\n // If using possible values to filter, set filter to true for checkboxes instead of text search\r\n if (fieldDef.PossibleValues && fieldDef.PossibleValues.length > 0) {\r\n fieldDef.filter = true;\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;\r\n fieldDef.PossibleValuesList = [];\r\n } //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;\r\n fieldDef.PossibleValuesList = [];\r\n } //just the detail\r\n\r\n if (fieldDef.hasOwnProperty(\"filterParams\")) {\r\n if (fieldDef.filterParams != null) {\r\n if (!fieldDef.filterParams.hasOwnProperty(\"apply\") || !fieldDef.filterParams.hasOwnProperty(\"applyButton\")) {\r\n fieldDef.filterParams.applyButton = true;\r\n }\r\n\r\n if (!fieldDef.filterParams.hasOwnProperty(\"clear\") || !fieldDef.filterParams.hasOwnProperty(\"clearButton\")) {\r\n fieldDef.filterParams.clearButton = true;\r\n }\r\n } else {\r\n fieldDef.filterParams = {\r\n applyButton: true,\r\n clearButton: true,\r\n }\r\n }\r\n\r\n } else {\r\n fieldDef.filterParams = {\r\n applyButton: true,\r\n clearButton: true,\r\n }\r\n }\r\n\r\n });\r\n\r\n $scope.dataAgGridOptions.columnDefs = $scope.dataAgColumnDefs.HeaderFields.concat($scope.dataAgColumnDefs.DetailFields);\r\n\r\n // For each column def, if possible values, set filter params values to that column defs possible values\r\n // angular.forEach($scope.dataAgGridOptions.columnDefs, function (colDef) {\r\n // if (colDef.PossibleValuesList.length > 0) {\r\n // if (colDef.PossibleValues) {\r\n // colDef.filterParams.values = Object[\"values\"](colDef.PossibleValues);\r\n // }\r\n\r\n // }\r\n // });\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\r\n\r\n //********************************\r\n // $scope.queryRecordsCount();\r\n $scope.dataAgGridOptions.api.setServerSideDatasource($scope.agGridDataSource);\r\n $scope.query = undefined;\r\n $scope.query = $scope.buildQuery();\r\n $scope.query.criteria.GetTotalCount = false;\r\n // $scope.executeQuery();\r\n }, 0);\r\n };\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.openDataEntry = function (p) {\r\n delete $rootScope.imported_rows;\r\n $location.path(\"/dataentryform/\" + $scope.dataset.Id);\r\n };\r\n\r\n $scope.queryRecordsCount = function () {\r\n\r\n $scope.query.loading = true;\r\n $scope.dataAgGridOptions.api.showLoadingOverlay();\r\n\r\n var query = {\r\n datasetId: parseInt($routeParams.Id),\r\n tablePrefix: $scope.dataset.Datastore.TablePrefix,\r\n filterModel: $scope.dataAgGridOptions.api.getFilterModel()\r\n }\r\n\r\n var count = DatasetService.queryRecordCount(query).$promise.then(val => {\r\n $scope.queryTotalRecords = val.recordCount;\r\n $scope.overlayCountBool = true;\r\n // Purge cache to get new page count & force grid refresh\r\n $scope.dataAgGridOptions.api.purgeServerSideCache();\r\n\r\n if ($scope.overlayCountBool && $scope.overlayResultBool) {\r\n $scope.query.loading = false;\r\n $scope.dataAgGridOptions.api.hideOverlay();\r\n }\r\n\r\n });\r\n\r\n return count;\r\n\r\n };\r\n\r\n $scope.clearFilters = function () {\r\n $scope.dataAgGridOptions.api.setFilterModel(null);\r\n $scope.changeFilterIcons($scope.dataAgGridOptions);\r\n $scope.execute();\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 }\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\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 console.dir($scope.criteriaList);\r\n\r\n $scope.Criteria.Value = null;\r\n $scope.Criteria.DisplayName = null;\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(\"[YourReportServerUrl]/\" + $scope.dataset.Datastore.TablePrefix);\r\n\r\n };\r\n\r\n // this is the function ag-grid calls to add more data to the table\r\n $scope.agGridDataSource = {\r\n getRows: function (params) {\r\n $scope.query.loading = true;\r\n $scope.dataAgGridOptions.api.showLoadingOverlay();\r\n $scope.dataAgGridOptions.api.paginationSetPageSize(1000);\r\n $scope.DatasetTotalRecords = 1000;\r\n $scope.criteriaList = [];\r\n // always include the index field\r\n $scope.orderByCriteria(params);\r\n\r\n $scope.query = $scope.buildQuery();\r\n\r\n $scope.sortModel = params.request.sortModel;\r\n $scope.query.criteria.GetTotalCount = false;\r\n $scope.query.criteria.FirstId = $scope.firstId;\r\n $scope.query.criteria.LastSeenId = $scope.lastSeenId;\r\n // include a sort model and filter for that ID\r\n $scope.query.criteria.sortModel = params.request.sortModel;\r\n $scope.query.criteria.ResultsPerPage = 1000;\r\n $scope.query.criteria.lastRecord = $scope.query.results != undefined && $scope.query.results.length > 0 ? $scope.query.results[$scope.query.results.length - 1] : null;\r\n // if we need the total record count, get that first\r\n if ($scope.filterChanged || $scope.queryTotalRecords == null) {\r\n $scope.queryRecordsCount().then(() => {\r\n return $scope.queryActivities(params);\r\n });\r\n }\r\n // if the filter model hasn't changed, we don't need to query the record count\r\n else {\r\n return $scope.queryActivities(params);\r\n }\r\n\r\n }\r\n };\r\n\r\n $scope.queryActivities = function (params) {\r\n $scope.overlayResultBool = false;\r\n\r\n $scope.query.results = DatasetService.queryActivities($scope.query);\r\n\r\n $scope.query.results.$promise.then((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 if ((item.TotalRecords) && (item.TotalRecords >= MAX_DATASET_RECORDS_THRESHOLD)) {\r\n $location.path(\"https://paluutreports.ctuir.org/Reports/browse/\" + $scope.dataset.Datastore.TablePrefix);\r\n }\r\n\r\n\r\n $scope.instrumentAccuracyCheckList.forEach((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 const 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\r\n if (item.QAStatusName) {\r\n item.ActivityQAStatusId = item.QAStatusName;\r\n }\r\n\r\n if (item.InstrumentLabel) {\r\n item.InstrumentId = item.InstrumentLabel;\r\n }\r\n\r\n // $scope.queryTotalRecords++;\r\n\r\n const resLen = $scope.query.results.length;\r\n if (resLen > 0) {\r\n $scope.lastSeenId = $scope.query.results[resLen - 1]?.ix;\r\n $scope.resultCount = resLen;\r\n } else {\r\n $scope.lastSeenId = 0;\r\n }\r\n\r\n\r\n if ($scope.queryResult.Error) {\r\n return;\r\n } // Get us out of here.\r\n\r\n $scope.DatasetTotalRecords = $scope.query.results.length;\r\n $scope.overlayResultBool = true;\r\n if ($scope.overlayResultBool && $scope.overlayCountBool) {\r\n $scope.query.loading = false;\r\n $scope.dataAgGridOptions.api.hideOverlay();\r\n }\r\n return params.successCallback($scope.query.results, $scope.queryTotalRecords);\r\n });\r\n\r\n };\r\n\r\n\r\n $scope.queryActivitiesExport = function (params) {\r\n $scope.query.results = DatasetService.queryActivities($scope.query);\r\n\r\n $scope.query.results.$promise.then((item) => {\r\n if ($scope.queryResult.Error) {\r\n return;\r\n }\r\n\r\n $scope.query.loading = false;\r\n $scope.DatasetTotalRecords = $scope.query.results.length;\r\n return params.successCallback($scope.query.results.StatusCode, $scope.queryTotalRecords);\r\n });\r\n\r\n };\r\n\r\n\r\n $scope.executeQuery = function (params) {\r\n\r\n //$scope.query = $scope.buildQuery();\r\n\r\n //if ($scope.prevStartRow !== params.startRow)\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\r\n $scope.resultCount = $scope.query.results.length;\r\n\r\n var count = 0;\r\n $scope.query.results.forEach(function (item) {\r\n if (item.SqlError) {\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 if (count == 0) {\r\n $scope.firstId = item.ix;\r\n }\r\n\r\n // if ((item.TotalRecords) && (item.TotalRecords >= MAX_DATASET_RECORDS_THRESHOLD)) {\r\n // $location.path(\"https://paluutreports.ctuir.org/Reports/browse/\" + $scope.dataset.Datastore.TablePrefix);\r\n // }\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\r\n\r\n if (item.QAStatusName) {\r\n item.ActivityQAStatusId = item.QAStatusName;\r\n }\r\n\r\n\r\n if (item.InstrumentLabel) {\r\n item.InstrumentId = item.InstrumentLabel;\r\n }\r\n\r\n count++;\r\n\r\n if (count == $scope.query.results.length) {\r\n $scope.lastSeenId = item.ix;\r\n $scope.lastIx = item.ix;\r\n }\r\n });\r\n\r\n if ($scope.queryResult.Error) {\r\n return; // Get us out of here.\r\n }\r\n\r\n }\r\n );\r\n }\r\n\r\n\r\n };\r\n\r\n\r\n // No longer used\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 () {\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 }\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: [],\r\n Criteria: $scope.queryCriteriaList,\r\n TablePrefix: $scope.dataset.Datastore.TablePrefix,\r\n FirstId: $scope.firstId,\r\n LastSeenId: $scope.lastSeenId,\r\n ResultsPerPage: $scope.resultsPerPage,\r\n TotalRecords: 0,\r\n sortModel: $scope.sortModel,\r\n //startRow: params.startRow,\r\n //endRow: params.endRow,\r\n //sortModel: params.sortModel,\r\n filterModel: $scope.filterModel,\r\n nextPage: $scope.nextPage,\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 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.orderByCriteria = function (params, lastRow) {\r\n if (params.request.sortModel.length > 0) {\r\n // append to the scope criteria for paginating using an orderby criteria\r\n // create a simple index so we don't have to loop through the dataset fields for each sortmodel\r\n\r\n $scope.fieldIndex = {};\r\n $scope.dataset.Fields.forEach((field, index) => {\r\n if (!$scope.fieldIndex.hasOwnProperty(field.DbColumnName)) {\r\n $scope.fieldIndex[field.DbColumnName] = index;\r\n }\r\n });\r\n\r\n params.request.sortModel.forEach((sm) => {\r\n // get the field first to establish base criteria, then just assign a value and add it to the $scope criteria\r\n const baseCriteria = $scope.dataset.Fields[$scope.fieldIndex[sm.colId]];\r\n // if it is ascending, we want the next page to be greater than\r\n const operator = sm.sort.toLowerCase() === 'asc' ? '>' : '<';\r\n // get the value of the last record\r\n\r\n // update the scope criteria list\r\n });\r\n\r\n // always include the index field\r\n $scope.criteriaList.push({\r\n DbColumnName: 'ix',\r\n Id: 'ix',\r\n // todo: handle differently for sortmodels\r\n Value: ` > ${$scope.lastSeenId}`,\r\n DisplayName: 'index',\r\n });\r\n\r\n }\r\n };\r\n\r\n $scope.execute = function () {\r\n $scope.overlayCountBool = false;\r\n $scope.query = undefined;\r\n $scope.query = $scope.buildQuery();\r\n $scope.lastSeenId = 0;\r\n $scope.query.criteria.GetTotalCount = false;\r\n $scope.filterChanged = true;\r\n $scope.filterModel = $scope.dataAgGridOptions.api.getFilterModel();\r\n var params = {\r\n request: {\r\n \"startRow\": 0,\r\n \"endRow\": 999,\r\n \"rowGroupCols\": [],\r\n \"valueCols\": [],\r\n \"pivotCols\": [],\r\n \"pivotMode\": false,\r\n \"groupKeys\": [],\r\n \"filterModel\": $scope.filterModel,\r\n \"sortModel\": []\r\n },\r\n successCallback: function (results, records) { },\r\n }\r\n params.successCallback([], 0);\r\n $scope.agGridDataSource.getRows(params);\r\n $scope.filterChanged = false\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 }\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 }\r\n } else if (params.column.colDef.ControlType == 'link') {\r\n retvalue.push(file.Link);\r\n }\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.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.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 // Download query data records as a csv file or csv zip file, showing a progress bar in the modal\r\n $scope.openExportModal = function () {\r\n const templateUrl = 'appjsLegacy/core/datasets/components/dataset-query/templates/modal-export-records.html';\r\n\r\n $scope.isExportClicked = false;\r\n if ($scope.queryTotalRecords > DATASET_RECORDS_EXPORT_FORMAT_THRESHOLD) {\r\n $scope.isLessThanThreshold = false;\r\n $scope.modalData = { // !!! The exportFormat property needs to be set that way to allow a correct 2 ways data binding with the radio buttons in the modal\r\n exportFormat: 'zipped-csv',\r\n }\r\n }\r\n else {\r\n $scope.isLessThanThreshold = true;\r\n $scope.modalData = {\r\n exportFormat: 'csv',\r\n }\r\n }\r\n\r\n // Open the modal\r\n $scope.modalInstance = $uibModal.open({\r\n templateUrl: templateUrl,\r\n scope: $scope, // Pass the current scope to the modal\r\n backdrop: \"static\",\r\n keyboard: true\r\n });\r\n };\r\n\r\n\r\n $scope.exportRecords = async function () {\r\n // Send the displayed fields that we want to export from the grid\r\n try {\r\n let displayedFields = [];\r\n $scope.dataAgGridOptions.columnDefs.forEach(i => {\r\n if (i.ControlType != \"hidden\" && i.ControlType != \"ix\" && i.hide != true) {\r\n displayedFields.push(i.cdmsField.DbColumnName);\r\n }\r\n });\r\n\r\n $scope.isExportClicked = true;\r\n $scope.isExporting = true;\r\n $scope.exportText = 'Exporting...';\r\n\r\n const query = $scope.buildQuery();\r\n query.criteria.GetTotalCount = false; // That is expected to be false because we are exporting records\r\n query.criteria.ExportFormat = $scope.modalData.exportFormat; // The export format to be sent in the request body\r\n query.criteria.Fields = displayedFields;\r\n\r\n const body = query.criteria; // The query criteria object to be sent in the request body\r\n\r\n // Making the post request to the server\r\n const response = await fetch(`${serviceUrl}/api/v1/query/querydatasetactivitiescsv`, {\r\n method: 'POST',\r\n headers: {\r\n accept: \"application/json\",\r\n \"content-type\": \"application/json\",\r\n \"Access-Control-Allow-Origin\": \"*\"\r\n },\r\n body: JSON.stringify(body) // Convert the query criteria object to JSON string and send it in the request body\r\n });\r\n\r\n // Check if the response is successful (status code 200)\r\n if (response.ok) {\r\n // Parse the content-disposition header to extract the filename\r\n const contentDisposition = response.headers.get('Content-Disposition');\r\n const filename = contentDisposition.split('filename=')[1].trim();\r\n\r\n // Use FileSaver.js to trigger file download\r\n const blob = await response.blob();\r\n saveAs(blob, filename);\r\n\r\n // Set variables to their initial state\r\n $scope.isExporting = false;\r\n $scope.exportText = 'Export Records';\r\n $scope.closeModalOnSuccess();\r\n }\r\n else {\r\n // Handle errors or non-200 responses\r\n const msg = await response.text();\r\n console.error('Error exporting records:', msg);\r\n $scope.isExporting = false;\r\n $scope.exportText = 'Export Records';\r\n $scope.closeModalOnError();\r\n }\r\n }\r\n catch (error) {\r\n // Handle errors\r\n console.error('Error exporting records:', error);\r\n $scope.isExporting = false;\r\n $scope.exportText = 'Export Records';\r\n $scope.closeModalOnError();\r\n }\r\n };\r\n\r\n $scope.closeModal = function () {\r\n $scope.modalInstance.close();\r\n };\r\n\r\n $scope.closeModalOnSuccess = function () {\r\n let alertMessage = `SUCCESS: Your ${$scope.modalData.exportFormat} file of ${$scope.queryTotalRecords} records ` +\r\n \"has been successfully downloaded into your browser's default download location.\";\r\n $scope.closeModalSendAlert(alertMessage);\r\n };\r\n\r\n $scope.closeModalOnError = function () {\r\n let alertMessage = `ERROR: An error occurred while dowloading your ${$scope.modalData.exportFormat} file of ${$scope.queryTotalRecords} records. ` +\r\n \"Please, try again later or contact support.\";\r\n $scope.closeModalSendAlert(alertMessage);\r\n };\r\n\r\n $scope.closeModalSendAlert = function (alertMessage: string) {\r\n $scope.closeModal();\r\n setTimeout(function () {\r\n alert(alertMessage);\r\n }, 1000);\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\n// deleted AdminUserIds form the below import\r\nimport { 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 $scope.changeFilterIcons = function (event) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters = $scope.agGridOptions.api.getFilterModel();\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.field) || span.textContent.includes(col.headerName)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.field in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n console.log(icon);\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n if (icon && icon.style) {\r\n icon.style.color = \"#bdbdbd\";\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 onBodyScroll: function (event) {\r\n $scope.changeFilterIcons(event);\r\n },\r\n onFilterModified: function (event) {\r\n $scope.changeFilterIcons(event);\r\n },\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 icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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 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 //$scope.EventTriggeredBy = \"\";\r\n return;\r\n }\r\n else {\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.openQueryWindow = function (p) {\r\n $scope.activities = null; // Dump the activities to free up memory.\r\n $location.path(\"/datasetquery/\" + $scope.dataset.Id);\r\n };\r\n\r\n $scope.openDetailsWindow = function (p) {\r\n $scope.activities = null; // Dump the activities to free up memory.\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.openDataEntry = function (p) {\r\n $scope.activities = null; // Dump the activities to free up memory.\r\n $location.path(\"/dataentryform/\" + $scope.dataset.Id);\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 $scope.TimezoneMissing = true;\r\n }\r\n else {\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, $scope)) {\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 //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 $scope.project.Config.Lookups.forEach(function (item) {\r\n if (item.Label === \"Characteristics\") {\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 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, $scope);\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 $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 $scope.openWaypointFileModal = function (row, field) {\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 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 //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 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 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 if (($scope.dataset.Config) && ($scope.dataset.Config.AllowSaveWithErrors)) {\r\n if ($scope.dataset.Config.AllowSaveWithErrors === false) {\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 // 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 // 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 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 $scope.project.Config.Lookups.forEach(function (item) {\r\n if (item.Label === \"Characteristics\") {\r\n var blnFoundIt = false;\r\n $scope.Characteristics.forEach(function (aCharacteristic) {\r\n if ((!blnFoundIt) && (aCharacteristic.Id === parseInt(node.data.CharacteristicName))) {\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 // If the user removed a row, the grid no longer contains that row.\r\n // 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 // 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 // into the grid.\r\n // 2) add the deleted record to the detail payload, mark it as deleted\r\n $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 });\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 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 // 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 $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 // 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 for (var item in $scope.dataset.Config.DataEntryPage.FieldsToResetForAddSection) {\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 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 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\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} from \"../../../../config\";\r\nimport {isDuplicateUploadFile} 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\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 });\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.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 = 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\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","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 console.log(\"Inside amdin-new-dataset.ts...\");\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 {\r\n systemfield.exclude = true;\r\n }\r\n\r\n $scope.datastoreFields.push(systemfield);\r\n });\r\n });\r\n // If DATASTORE_ACTIVITYSYSTEMFIELDS in config.ts is not set correctly, these lines help to identify that issue.\r\n // After all the datastore fields show (from dbo.Fields), the fields from datastore ActivitySystemFields get\r\n // added on to the array. Reviewing and comparing what shows in the debugger, to what is in the ActivitySystemFields\r\n // datastore will clarify if DATASTORE_ACTIVITYSYSTEMFIELDS is set correctly.\r\n console.log(\"$scope.datastoreFields is next...\");\r\n console.dir($scope.datastoreFields);\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","/*\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 //console.log(\"Inside controllers.js, projectDatasetsController...\");\r\n //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 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 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 scope.changeFilterIcons = function (event) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters = scope.dataGridOptions.api.getFilterModel();\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.field) || span.textContent.includes(col.headerName)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.field in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n if (icon && icon.style) {\r\n icon.style.color = \"#bdbdbd\";\r\n }\r\n }\r\n }\r\n }\r\n }\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 onBodyScroll: function (event) {\r\n scope.changeFilterIcons(event);\r\n },\r\n onFilterModified: function (event) {\r\n scope.changeFilterIcons(event);\r\n },\r\n selectedItems: [],\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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 };\r\n\r\n //Delete\r\n scope.deleteItems = function () {\r\n var lookupId = scope.selectedLookup.Id;\r\n scope.dataGridOptions.selectedItems.forEach(function (item) {\r\n var delete_item = CommonService.deleteLookupItem(item, lookupId);\r\n delete_item.$promise.then(function () {\r\n scope.lookupItems.forEach(function (existing, index) {\r\n if (existing.Id == item.Id) {\r\n scope.lookupItems.splice(index);\r\n scope.dataGridOptions.api.setRowData(scope.lookupItems);\r\n scope.selectLookup(scope.selectedLookup);\r\n\r\n }\r\n\r\n }), function () {\r\n alert(\"There was a problem deleting item(s) from \" + scope.selectedLookup.Label + \". Please contact CDMS support.\");\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 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 * 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","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","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 try {\r\n $scope.field_to_edit.Values = angular.fromJson($scope.field_to_edit.PossibleValues);\r\n } catch (exception) {\r\n $scope.field_to_edit.Values = exception.message;\r\n }\r\n }\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.changeFilterIcons = function (event) {\r\n // We need to call this onFilterModified and onBodyScroll, as the elements are removed/added\r\n // to the DOM when scrolling horizontally on wide datasets.\r\n // Can also pass $scope.dataAgGridOptions to this function rather than an event.\r\n let filters = scope.agGridOptions.api.getFilterModel();\r\n console.log(filters);\r\n\r\n for (let col of event.api.columnController.columnDefs) {\r\n for (const span of document.querySelectorAll(\"span\")) {\r\n if (span.textContent.includes(col.field) || span.textContent.includes(col.headerName)) {\r\n // Naming conventions vary, so lets check all of these to see if the column has a filter\r\n if (col.Label in filters || col.headerName in filters || col.field in filters) {\r\n // If column has a filter change the icon color\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];\r\n console.log(icon);\r\n icon.style.color = \"#007bff\";\r\n }\r\n else {\r\n // Remove the color prop from the icon if there is no filter\r\n // @ts-ignore\r\n let icon: HTMLElement = span.parentNode.parentNode.children[0].children[0];// filterIcon.children[0];\r\n if (icon && icon.style) {\r\n icon.style.color = \"#bdbdbd\";\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\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 overlayLoadingTemplate: '',\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 onBodyScroll: function (event) {\r\n scope.changeFilterIcons(event);\r\n },\r\n onFilterModified: function (event) {\r\n scope.changeFilterIcons(event);\r\n },\r\n defaultColDef: {\r\n editable: false,\r\n sortable: true,\r\n resizable: true,\r\n icons: {\r\n menu: \"filter_alt\", filter: \"\",\r\n }\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","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","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","\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 {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","\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== */\";","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","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:///"}