| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- import _ from 'lodash'
- /* eslint-disable
- max-len,
- no-return-assign,
- */
- // TODO: This file was created by bulk-decaffeinate.
- // Fix any style issues and re-enable lint.
- /*
- * decaffeinate suggestions:
- * DS102: Remove unnecessary code created because of implicit returns
- * DS207: Consider shorter variations of null checks
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
- */
- import App from '../../../base'
- const affiliationFormController = function (
- $scope,
- $element,
- $attrs,
- UserAffiliationsDataService
- ) {
- const ctrl = this
- ctrl.roles = []
- ctrl.departments = []
- ctrl.countries = []
- ctrl.universities = []
- let _defaultDepartments = []
- ctrl.addUniversityToSelection = universityName => ({
- name: universityName,
- isUserSuggested: true,
- })
- ctrl.handleFreeformInputChange = function ($select, propertyToMatch) {
- if ($select.search == null || $select.search === '') {
- return
- }
- let resultingItem = $select.search
- if (($select.tagging != null ? $select.tagging.fct : undefined) != null) {
- resultingItem = $select.tagging.fct($select.search)
- }
- if (propertyToMatch != null) {
- const matchingItem = _.find(
- $select.items,
- item => item[propertyToMatch] === $select.search
- )
- if (matchingItem != null) {
- resultingItem = matchingItem
- }
- }
- return $select.searchInput.scope().$broadcast('uis:select', resultingItem)
- }
- // Populates the countries dropdown
- UserAffiliationsDataService.getCountries().then(
- countries => (ctrl.countries = countries)
- )
- // Populates the roles dropdown
- UserAffiliationsDataService.getDefaultRoleHints().then(
- roles => (ctrl.roles = roles)
- )
- // Fetches the default department hints
- UserAffiliationsDataService.getDefaultDepartmentHints().then(
- departments => (_defaultDepartments = departments)
- )
- // Populates the universities dropdown (after selecting a country)
- $scope.$watch(
- '$ctrl.affiliationData.country',
- function (newSelectedCountry, prevSelectedCountry) {
- if (
- newSelectedCountry != null &&
- newSelectedCountry !== prevSelectedCountry
- ) {
- ctrl.affiliationData.university = null
- ctrl.affiliationData.role = null
- ctrl.affiliationData.department = null
- return UserAffiliationsDataService.getUniversitiesFromCountry(
- newSelectedCountry
- ).then(universities => (ctrl.universities = universities))
- }
- }
- )
- // Populates the departments dropdown (after selecting a university)
- $scope.$watch(
- '$ctrl.affiliationData.university',
- function (newSelectedUniversity, prevSelectedUniversity) {
- if (
- newSelectedUniversity != null &&
- newSelectedUniversity !== prevSelectedUniversity &&
- (newSelectedUniversity.departments != null
- ? newSelectedUniversity.departments.length
- : undefined) > 0
- ) {
- return (ctrl.departments = _.uniq(newSelectedUniversity.departments))
- } else {
- return (ctrl.departments = _defaultDepartments)
- }
- }
- )
- }
- export default App.component('affiliationForm', {
- bindings: {
- affiliationData: '=',
- showUniversityAndCountry: '<',
- showRoleAndDepartment: '<',
- },
- controller: affiliationFormController,
- templateUrl: 'affiliationFormTpl',
- })
|