angular .module('EssayApp.controllers') .controller('LanguageDropController', ['$scope', '$window', '$sce', 'dataService', '$timeout', 'ngProgress', 'utils', 'I18n', ($scope, $window, $sce, dataService, $timeout, ngProgress, utils, I18n) -> ngProgress.start() $scope.ready = false $scope.forms = {} $scope.customer = src_language: undefined dst_language: undefined $scope.data = language_from_groups: [] state: undefined dst_language_title: '' $scope.STATES = SRC: 'src_language' DST: 'dst_language' $scope.src_languages = [] $scope.src_languages_groups = [] $scope.dst_languages_groups = [] # Load data from server dataService.get_languages().then (responce) -> $scope.data = responce?.data return unless $scope.data?.languages?.length > 0 $scope.src_languages = $scope.filterAvailableSrcLanguages() $scope.src_languages_groups = utils.inGroups($scope.src_languages, 4) $scope.data.state = $scope.STATES.SRC $scope.ready = true ngProgress.complete() , (err) -> console.log 'Error', err ngProgress.complete() $scope.isCurrentState = (state)-> $scope.data.state is state $scope.orderParams = () -> if $scope.customer? params = {} params['from'] = $scope.customer.src_language.id if $scope.customer.src_language?.id? params['to'] = $scope.customer.dst_language.id if $scope.customer.dst_language?.id? _params = $.param(params) "?" + _params if _params?.length > 0 $scope.equals = (obj1, obj2)-> obj1?.id? && obj2?.id? && obj1.id == obj2.id $scope.filterAvailableSrcLanguages = ()-> $scope.data.languages.filter (lang)-> $scope.data.rates.languages.filter( (pair)-> pair.language_from_id == lang.id ).length > 0 $scope.filterAvailableDstLanguages = (src_lang)-> $scope.data.languages.filter (to_lang)-> $scope.data.rates.languages.filter( (pair)-> (pair.language_from_id == src_lang.id) && (pair.language_to_id == to_lang.id) ).length > 0 $scope.$watch 'customer.src_language', (language)-> if language $scope._dst_languages = $scope.filterAvailableDstLanguages(language) $scope.dst_languages_groups = utils.inGroups($scope._dst_languages, 4) $scope.customer.dst_language = undefined $scope.data.dst_language_title = undefined $scope.data.state = $scope.STATES.DST else $scope._dst_languages = [] $scope.dst_languages_groups = [] $scope.$watch 'customer.dst_language', (language)-> if language $scope.data.dst_language_title = language?.title else $scope.data.dst_language_title = '' return $scope ])