diff --git a/module/project/js/common.js b/module/project/js/common.js index a0c7b3c6fc..ede3586f37 100644 --- a/module/project/js/common.js +++ b/module/project/js/common.js @@ -162,9 +162,9 @@ function loadBranches(product) } }); - if($('#productsBox .input-group:last select:first').val() != 0) + if($('#productsBox .row .input-group:last select:first').val() != 0) { - var length = $('#productsBox .input-group').size(); + var length = $('#productsBox .row .input-group').size(); $('#productsBox .row').append('
' + $('#productsBox .col-sm-4:last').html() + '
'); if($('#productsBox .input-group:last select').size() >= 2) $('#productsBox .input-group:last select:last').remove(); $('#productsBox .input-group:last .chosen-container').remove(); @@ -179,7 +179,8 @@ function loadBranches(product) if($inputgroup.find('.chosen-container').size() >= 2) $inputgroup.find('.chosen-container:last').remove(); var index = $inputgroup.find('select:first').attr('id').replace('products' , ''); - $.get(createLink('branch', 'ajaxGetBranches', "productID=" + $(product).val() + "&oldBranch=0¶m=active"), function(data) + var oldBranch = $(product).attr('data-branch') !== undefined ? $(product).attr('data-branch') : 0; + $.get(createLink('branch', 'ajaxGetBranches', "productID=" + $(product).val() + "&oldBranch=" + oldBranch + "¶m=active"), function(data) { if(data) { @@ -206,12 +207,13 @@ function loadPlans(product, branchID) var productID = $(product).val(); var branchID = typeof(branchID) == 'undefined' ? 0 : branchID; + var planID = $(product).attr('data-plan') !== undefined ? $(product).attr('data-plan') : 0; var index = $(product).attr('id').replace('products', ''); $("input[name='products[" + index + "]']").remove(); $("input[name='branch[" + index + "]']").remove(); - $.get(createLink('product', 'ajaxGetPlans', "productID=" + productID + '&branch=0,' + branchID + '&planID=0&fieldID&needCreate=&expired=unexpired¶m=skipParent,multiple'), function(data) + $.get(createLink('product', 'ajaxGetPlans', "productID=" + productID + '&branch=0,' + branchID + '&planID=' + planID + '&fieldID&needCreate=&expired=unexpired,noclosed¶m=skipParent,multiple'), function(data) { if(data) { diff --git a/module/project/js/create.js b/module/project/js/create.js index 1fb3828b02..c8b6458c26 100644 --- a/module/project/js/create.js +++ b/module/project/js/create.js @@ -150,27 +150,19 @@ function setParentProgram(parentProgram) { $('#budget').val(''); - var select = data.allProducts; - var planSelect = data.plans; + var productSelectHtml = data.allProducts; + var planSelectHtml = data.plans; - var index = 0; - $('#productsBox .row .col-sm-4 .input-group').each(function() + $('#productsBox .row .col-sm-4 .input-group').each(function(index) { var selectedProduct = $(this).find('[name^=products]').val(); var selectedBranch = $(this).find('[name^=branch]').val(); + var selectedPlan = $('#plan' + index ).find('[name^=plans]').val(); - $(this).html(select); - $(this).find('[name^=products]').attr('name', 'products[' + index + ']').attr('id', 'products' + index).attr('data-branch', selectedBranch); + $(this).html(productSelectHtml); + $(this).find('[name^=products]').attr('name', 'products[' + index + ']').attr('id', 'products' + index).attr('data-branch', selectedBranch).attr('data-plan', selectedPlan); $(this).find('[name^=products]').val(selectedProduct).chosen().change(); - - index ++; }); - - /* Hide product and plan dropdown controls. */ - $('#plansBox .col-sm-4:not(:last)').remove(); - $('#plansBox .col-sm-4').children().remove(); - $('#plansBox .col-sm-4').prepend(planSelect); - $('#plansBox .col-sm-4 select').chosen(); } if(parentProgram != 0) @@ -282,6 +274,9 @@ function setAclList(programID) */ function loadBranches(product) { + /* When selecting a product, delete a plan that is empty by default. */ + $("#planDefault").remove(); + $("#productsBox select[name^='products']").each(function() { var $product = $(product); @@ -348,9 +343,10 @@ function loadPlans(product, branchID) var productID = $(product).val(); var branchID = typeof(branchID) == 'undefined' ? 0 : branchID; + var planID = $(product).attr('data-plan') !== undefined ? $(product).attr('data-plan') : 0; var index = $(product).attr('id').replace('products', ''); - $.get(createLink('product', 'ajaxGetPlans', "productID=" + productID + '&branch=0,' + branchID + '&planID=0&fieldID&needCreate=&expired=unexpired,noclosed¶m=skipParent,multiple'), function(data) + $.get(createLink('product', 'ajaxGetPlans', "productID=" + productID + '&branch=0,' + branchID + '&planID=' + planID + '&fieldID&needCreate=&expired=unexpired,noclosed¶m=skipParent,multiple'), function(data) { if(data) { diff --git a/module/project/js/edit.js b/module/project/js/edit.js index 0b6701d26b..ae82eacb69 100644 --- a/module/project/js/edit.js +++ b/module/project/js/edit.js @@ -2,8 +2,34 @@ $(function() { $('#parent').change(function() { - var programID = $(this).val(); + var programID = $(this).val(); + var lastSelectedID = $('#parent').attr('data-lastSelected'); + setAclList(programID); + + $.get(createLink('project', 'ajaxGetObjectInfo', 'objectType=program&objectID=' + lastSelectedID + "&selectedProgramID=" + programID), function(data) + { + var data = JSON.parse(data); + selectedParent = programID != 0 ? data.selectedProgramPath[1] : 0; + lastSelectedParent = lastSelectedID != 0 ? data.objectPath[1] : 0; + + if(selectedParent != lastSelectedParent) + { + var productSelectHtml = data.allProducts; + var planSelectHtml = data.plans; + + $('#productsBox .row .col-sm-4 .input-group').each(function(index) + { + var selectedProduct = $(this).find('[name^=products]').val(); + var selectedBranch = $(this).find('[name^=branch]').val(); + var selectedPlan = $('#plan' + index ).find('[name^=plans]').val(); + + $(this).html(productSelectHtml); + $(this).find('[name^=products]').attr('name', 'products[' + index + ']').attr('id', 'products' + index).attr('data-branch', selectedBranch).attr('data-plan', selectedPlan); + $(this).find('[name^=products]').val(selectedProduct).chosen().change(); + }); + } + }); }); adjustProductBoxMargin(); diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index bfef3cf480..57d89d0da8 100755 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -65,7 +65,7 @@ $programList = array($project->parent => $program->name); } ?> - parent, "class='form-control chosen' $attr");?> + parent, "class='form-control chosen' data-lastSelected='{$project->parent}' $attr");?> @@ -164,14 +164,7 @@ id], $branchID, "class='form-control chosen' onchange=\"loadPlans('#products{$i}', this.value)\" data-last='" . $branchID . "'");?> - id, $unmodifiableProducts) and in_array($branchID, $unmodifiableBranches)) - { - echo html::hidden("products[$i]", $product->id); - echo html::hidden("branch[$i]", $branchID); - } - $i++; - ?> +
' style="padding-right: 6px;">