From 4245732d9bfd890beeed981ea284fc9cbc72e8e1 Mon Sep 17 00:00:00 2001 From: ArturBaybulatov Date: Mon, 19 Sep 2016 02:34:13 +0300 Subject: [PATCH] Fixes --- assets/index.js | 19 ++++++++++------ .../templates/customer_project_create.html | 20 +++++++++++++++-- projects/templates/customer_project_edit.html | 22 +++++++++++++++++-- 3 files changed, 50 insertions(+), 11 deletions(-) diff --git a/assets/index.js b/assets/index.js index 4ad98c9..ef913cc 100644 --- a/assets/index.js +++ b/assets/index.js @@ -72,7 +72,6 @@ $('[data-tooltip]').tooltip({ var $specSelect2 = $container.find('.-spec-select-level-2').first() var $specSelect3 = $container.find('.-spec-select-level-3').first() var $specSelect4 = $container.find('.-spec-select-level-4').first() - var specSelects = [$specSelect1, $specSelect2, $specSelect3, $specSelect4] reinitSpecializationsByWorkType($specSelects, null) @@ -93,14 +92,21 @@ $('[data-tooltip]').tooltip({ $.get('/api/specializations/?parent__name=_root') .then(function(res) { var rootSpecs = res.results - var rootSpec = workTypeId == null ? rootSpecs[0] : ({1: rootSpecs[0], 2: rootSpecs[1], 3: rootSpecs[2]})[workTypeId] - $specSelects.select2(_.merge(specSelectOptions, { - ajax: {url: format('/api/specializations/?lft__gte=%s&rght__lte=%s', rootSpec.lft, rootSpec.rght)}, - })) + if (workTypeId == null) { + var url = '/api/specializations/' + } else { + var rootSpec = ({1: rootSpecs[0], 2: rootSpecs[1], 3: rootSpecs[2]})[workTypeId] + var url = format('/api/specializations/?lft__gte=%s&rght__lte=%s', rootSpec.lft, rootSpec.rght) + } + + specSelectOptions.ajax.url = url + $specSelects.select2(specSelectOptions) }) } + window.reinitSpecializationsByWorkType = reinitSpecializationsByWorkType + function updateSpecializationWidgets(specId, $container, $chosenSpecId, specSelects) { return getSpecializationTree(specId).then(function(specs) { @@ -118,8 +124,7 @@ $('[data-tooltip]').tooltip({ }) } - - window.reinitSpecializationsByWorkType = reinitSpecializationsByWorkType + window.updateSpecializationWidgets = updateSpecializationWidgets }()) diff --git a/projects/templates/customer_project_create.html b/projects/templates/customer_project_create.html index 390727f..03ab236 100644 --- a/projects/templates/customer_project_create.html +++ b/projects/templates/customer_project_create.html @@ -350,10 +350,26 @@ ;(function() { - var $radiosContainer = $('.-project-work-type-selection-container').first() - var $radios = $radiosContainer.find('input[type=radio][name={{ form.work_type.html_name }}]') var $specSelectContainer = $('.-spec-select-container').first() var $specSelects = $specSelectContainer.find('.-spec-select') + var $chosenSpecId = $specSelectContainer.find('.-chosen-spec-id').first() + + var $specSelect1 = $specSelectContainer.find('.-spec-select-level-1').first() + var $specSelect2 = $specSelectContainer.find('.-spec-select-level-2').first() + var $specSelect3 = $specSelectContainer.find('.-spec-select-level-3').first() + var $specSelect4 = $specSelectContainer.find('.-spec-select-level-4').first() + var specSelects = [$specSelect1, $specSelect2, $specSelect3, $specSelect4] + + var $radiosContainer = $('.-project-work-type-selection-container').first() + var $radios = $radiosContainer.find('input[type=radio][name={{ form.work_type.html_name }}]') + + var workTypeId = Number($radios.filter(':checked').val()) || 1 + reinitSpecializationsByWorkType($specSelects, workTypeId) + + var chosenSpecId = $chosenSpecId.val() + + if (chosenSpecId) + updateSpecializationWidgets(chosenSpecId, $specSelectContainer, $chosenSpecId, specSelects) $radios.on('change', function($evt) { var $that = $(this) diff --git a/projects/templates/customer_project_edit.html b/projects/templates/customer_project_edit.html index a1af185..05d9a81 100644 --- a/projects/templates/customer_project_edit.html +++ b/projects/templates/customer_project_edit.html @@ -367,12 +367,30 @@ ;(function() { - var $radiosContainer = $('.-project-work-type-selection-container').first() - var $radios = $radiosContainer.find('input[type=radio][name={{ form.work_type.html_name }}]') var $specSelectContainer = $('.-spec-select-container').first() var $specSelects = $specSelectContainer.find('.-spec-select') + var $chosenSpecId = $specSelectContainer.find('.-chosen-spec-id').first() + + var $specSelect1 = $specSelectContainer.find('.-spec-select-level-1').first() + var $specSelect2 = $specSelectContainer.find('.-spec-select-level-2').first() + var $specSelect3 = $specSelectContainer.find('.-spec-select-level-3').first() + var $specSelect4 = $specSelectContainer.find('.-spec-select-level-4').first() + var specSelects = [$specSelect1, $specSelect2, $specSelect3, $specSelect4] + + var $radiosContainer = $('.-project-work-type-selection-container').first() + var $radios = $radiosContainer.find('input[type=radio][name={{ form.work_type.html_name }}]') + + var workTypeId = Number($radios.filter(':checked').val()) || 1 + reinitSpecializationsByWorkType($specSelects, workTypeId) + + var chosenSpecId = $chosenSpecId.val() + + if (chosenSpecId) + updateSpecializationWidgets(chosenSpecId, $specSelectContainer, $chosenSpecId, specSelects) $radios.on('change', function($evt) { + console.log('Radio change') + var $that = $(this) var workTypeId = $that.val() reinitSpecializationsByWorkType($specSelects, workTypeId)