diff --git a/assets/index.js b/assets/index.js index 0372810..04d372e 100644 --- a/assets/index.js +++ b/assets/index.js @@ -24,8 +24,8 @@ var specSelectOptions = { return { results: _.map(function(item) { return { - text: item.name, id: item.id, + text: item.name, origItem: item, } }, data.results), @@ -99,38 +99,62 @@ var simpleSpecSelectsOptions = { allowClear: true, } +var $simpleSpecContainer = $('#simpleSpecContainer') +var $emptySimpleSpecWidget = $simpleSpecContainer.find('.-simple-spec-widget').first() + +$simpleSpecContainer.find('.-chosen-simple-spec-id').each(function(i, el) { + var $el = $(el) + var specId = Number($el.val()) + + if (specId) + initSimpleSpecSelect2($el.closest('.-simple-spec-widget').find('.-simple-spec-select').first(), specId) +}) + $('#addSpec').on('click', function($evt) { - var $simpleSpecContainer = $('#simpleSpecContainer') - var $simpleSpecWidget = $simpleSpecContainer.find('.-simple-spec-widget').first() - var $newSimpleSpecWidget = $simpleSpecWidget.clone() + var $newSimpleSpecWidget = $emptySimpleSpecWidget.clone() $simpleSpecContainer.append($newSimpleSpecWidget) + var $newSimpleSpecSelect = $newSimpleSpecWidget.find('.-simple-spec-select').first() - var $simpleSpecSelect = $newSimpleSpecWidget.find('.-simple-spec-select').first() - //var $chosenSimpleSpecId = $newSimpleSpecWidget.find('.-chosen-simple-spec-id').first() - - $.ajax({url: '/api/specializations/', method: 'GET', dataType: 'json'}) - .then(function(res) { - $simpleSpecSelect.select2(_.merge(simpleSpecSelectsOptions, { - data: _.map(function(item) { - return { - text: _.repeat(item.level-1, '---') + item.name, - id: item.id, - origItem: item, - } - }, res.results), - })) - - $newSimpleSpecWidget.css('display', 'block') - }) + initSimpleSpecSelect2($newSimpleSpecSelect).then(function() { + $newSimpleSpecWidget.css('display', 'block') + }) }) -$('#simpleSpecContainer').on('change', '.-simple-spec-select', function($evt) { +$simpleSpecContainer.on('change', '.-simple-spec-select', function($evt) { if ($evt.added) $(this).parent().children('.-chosen-simple-spec-id').first().val($evt.added.id) }) +function initSimpleSpecSelect2($select, specId) { + return $.ajax({url: '/api/specializations/', method: 'GET', dataType: 'json'}) + .then(function(res) { + var specs = res.results + + $select.select2(_.merge(simpleSpecSelectsOptions, { + data: _.map(function(spec) { + return { + id: spec.id, + text: _.repeat(spec.level-1, '---') + spec.name, + origItem: spec, + } + }, specs), + })) + + if (specId) { + var spec = _.find({id: specId}, specs) + + $select.select2('data', { + id: spec.id, + text: _.repeat(spec.level-1, '---') + spec.name, + origItem: spec, + }) + } + }) +} + + diff --git a/users/templates/user_profile_edit.html b/users/templates/user_profile_edit.html index 1ae32a6..519d379 100644 --- a/users/templates/user_profile_edit.html +++ b/users/templates/user_profile_edit.html @@ -46,10 +46,17 @@

Специализации

-