|
|
|
|
@ -1,10 +1,10 @@ |
|
|
|
|
// Constants -----------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var API_PAGE_SIZE = 100 |
|
|
|
|
var LIVE_IMAGE_UPLOAD_URL = '/common/live-image-upload/create/' |
|
|
|
|
var STUB_IMAGE_URL = '/static/img/profile.jpg' |
|
|
|
|
|
|
|
|
|
var API_PAGE_SIZE = 100; |
|
|
|
|
var LIVE_IMAGE_UPLOAD_URL = '/common/live-image-upload/create/'; |
|
|
|
|
var STUB_IMAGE_URL = '/static/img/profile.jpg'; |
|
|
|
|
var DEFAULT_WORK_TYPE = 403; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Plugins init --------------------------------------------
|
|
|
|
|
@ -90,32 +90,32 @@ $('[data-tooltip]').tooltip({ |
|
|
|
|
var $workTypeSelect = $container.find('.-project-work-type-select-field').first() |
|
|
|
|
|
|
|
|
|
if (!_.isEmpty($workTypeSelect)) { |
|
|
|
|
var workTypeId = Number($workTypeSelect.find('option:selected').first().val()) || 1 |
|
|
|
|
var workTypeId = Number($workTypeSelect.find('option:selected').first().val()) || DEFAULT_WORK_TYPE; |
|
|
|
|
|
|
|
|
|
$workTypeSelect.on('change', function($evt) { |
|
|
|
|
var $that = $(this) |
|
|
|
|
var workTypeId = Number($that.val()) |
|
|
|
|
|
|
|
|
|
reinitSpecializationsByWorkType(specSelects, workTypeId).then(function(rootSpec) { |
|
|
|
|
updateSpecializationWidgets(rootSpec.id, $container, $chosenSpecId, specSelects) |
|
|
|
|
updateSpecializationWidgets(workTypeId, $container, $chosenSpecId, specSelects) |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
} else { |
|
|
|
|
var $workTypeRadios = $container.find('.-project-work-type-radios-container').first().find('input[type=radio]') |
|
|
|
|
|
|
|
|
|
if (!_.isEmpty($workTypeRadios)) { |
|
|
|
|
var workTypeId = Number($workTypeRadios.filter(':checked').val()) || 1 |
|
|
|
|
var workTypeId = Number($workTypeRadios.filter(':checked').val()) || DEFAULT_WORK_TYPE; |
|
|
|
|
|
|
|
|
|
$workTypeRadios.on('change', function($evt) { |
|
|
|
|
var $that = $(this) |
|
|
|
|
var workTypeId = Number($that.val()) |
|
|
|
|
|
|
|
|
|
reinitSpecializationsByWorkType(specSelects, workTypeId).then(function(rootSpec) { |
|
|
|
|
updateSpecializationWidgets(rootSpec.id, $container, $chosenSpecId, specSelects) |
|
|
|
|
updateSpecializationWidgets(workTypeId, $container, $chosenSpecId, specSelects) |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
} else { |
|
|
|
|
var workTypeId = 1 |
|
|
|
|
var workTypeId = DEFAULT_WORK_TYPE; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -142,29 +142,35 @@ $('[data-tooltip]').tooltip({ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function reinitSpecializationsByWorkType(specSelects, workTypeId) { |
|
|
|
|
return $.get('/api/specializations/?parent__name=_root') |
|
|
|
|
return $.get('/api/specializations/?parent__id='+workTypeId) |
|
|
|
|
.then(function(res) { |
|
|
|
|
var rootSpecs = res.results |
|
|
|
|
|
|
|
|
|
var rootSpecs = res.results; |
|
|
|
|
console.log('workTypeId', workTypeId) |
|
|
|
|
if (workTypeId == null) { |
|
|
|
|
var url = '/api/specializations/' |
|
|
|
|
var specId = null |
|
|
|
|
var url = '/api/specializations/'; |
|
|
|
|
// var specId = null
|
|
|
|
|
} else { |
|
|
|
|
var rootSpec = ({1: rootSpecs[0], 2: rootSpecs[1], 3: rootSpecs[2]})[workTypeId] |
|
|
|
|
var specId = rootSpec.id |
|
|
|
|
var specializations = {}; |
|
|
|
|
$.each(rootSpecs, function(key, spec) { |
|
|
|
|
specializations[spec.id] = spec; |
|
|
|
|
}); |
|
|
|
|
// var rootSpec = specializations[workTypeId];
|
|
|
|
|
var rootSpec = rootSpecs[0].parent; |
|
|
|
|
console.log('rootSpec', rootSpec); |
|
|
|
|
// var specId = rootSpec.id
|
|
|
|
|
var url = format('/api/specializations/?lft__gte=%s&rght__lte=%s', rootSpec.lft, rootSpec.rght) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
specSelects[0].select2(_.merge(specSelectOptions, {ajax: {url: url}})) |
|
|
|
|
specSelects[1].select2(_.merge(specSelectOptions, {ajax: {url: null}})) |
|
|
|
|
specSelects[2].select2(_.merge(specSelectOptions, {ajax: {url: null}})) |
|
|
|
|
specSelects[3].select2(_.merge(specSelectOptions, {ajax: {url: null}})) |
|
|
|
|
specSelects[0].select2(_.merge(specSelectOptions, {ajax: {url: url}})); |
|
|
|
|
specSelects[1].select2(_.merge(specSelectOptions, {ajax: {url: null}})); |
|
|
|
|
specSelects[2].select2(_.merge(specSelectOptions, {ajax: {url: null}})); |
|
|
|
|
specSelects[3].select2(_.merge(specSelectOptions, {ajax: {url: null}})); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: Hardcoded:
|
|
|
|
|
|
|
|
|
|
specSelects[0].select2('container').closest('.-single-spec-select').css('display', workTypeId === 2 ? 'none' : 'block') |
|
|
|
|
specSelects[1].select2('container').closest('.-single-spec-select').find('.-dynamic-label').first().text(workTypeId === 2 ? 'Перечень услуг' : 'Стадия проекта') |
|
|
|
|
// specSelects[0].select2('container').closest('.-single-spec-select').css('display', workTypeId === 2 ? 'none' : 'block');
|
|
|
|
|
specSelects[1].select2('container').closest('.-single-spec-select').find('.-dynamic-label').first().text(workTypeId === 2 ? 'Перечень услуг' : 'Стадия проекта'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return rootSpec |
|
|
|
|
@ -176,10 +182,10 @@ $('[data-tooltip]').tooltip({ |
|
|
|
|
return getSpecializationTree(specId).then(function(specs) { |
|
|
|
|
var spec = specs.spec |
|
|
|
|
|
|
|
|
|
specSelects[1].select2(_.merge(specSelectOptions, {ajax: {url: specs.urlLevel2}})) |
|
|
|
|
specSelects[2].select2(_.merge(specSelectOptions, {ajax: {url: specs.urlLevel3}})) |
|
|
|
|
specSelects[3].select2(_.merge(specSelectOptions, {ajax: {url: specs.urlLevel4}})) |
|
|
|
|
|
|
|
|
|
specSelects[1].select2(_.merge(specSelectOptions, {ajax: {url: specs.urlLevel2}})); |
|
|
|
|
specSelects[2].select2(_.merge(specSelectOptions, {ajax: {url: specs.urlLevel3}})); |
|
|
|
|
specSelects[3].select2(_.merge(specSelectOptions, {ajax: {url: specs.urlLevel4}})); |
|
|
|
|
|
|
|
|
|
var specLevel1 = specs.specLevel1; |
|
|
|
|
var specLevel2 = specs.specLevel2; |
|
|
|
|
var specLevel3 = specs.specLevel3; |
|
|
|
|
|