diff --git a/cit-esi-web/src/main/webapp/assets/js/angular/custom/directive/FormBuilderDirective.js b/cit-esi-web/src/main/webapp/assets/js/angular/custom/directive/FormBuilderDirective.js index 9f4e8b1..e2b3938 100644 --- a/cit-esi-web/src/main/webapp/assets/js/angular/custom/directive/FormBuilderDirective.js +++ b/cit-esi-web/src/main/webapp/assets/js/angular/custom/directive/FormBuilderDirective.js @@ -178,7 +178,11 @@ citApp.directive("formBuilder", ['ImageRepository', '$translate', '$filter', '$t $scope.currentTab = $scope.formContainer.tabs[0]; } var tabIndex = $scope.currentTab.index; - var row = {index: $scope.formContainer.rows.length + var rowIndex = $scope.formContainer.rows.length; + if ($scope.currentRow) { + rowIndex = $scope.currentRow.index + 1; + } + var row = {index: rowIndex , $type: "row" , tabIndex: tabIndex , components: [] @@ -189,7 +193,15 @@ citApp.directive("formBuilder", ['ImageRepository', '$translate', '$filter', '$t , ngIfHtml: "" , aditionalHtml: "" , htmlOnly: false}; - $scope.formContainer.rows.push(row); + if ($scope.currentRow) { + for (var i = $scope.formContainer.rows.length -1; i > $scope.currentRow.index; i--) { + $scope.formContainer.rows[i+1] = $scope.formContainer.rows[i]; + } + $scope.formContainer.rows[$scope.currentRow.index+1] = row; + $scope.reorderRows(); + }else{ + $scope.formContainer.rows.push(row); + } $scope.selectRow(row, true); return row; } @@ -372,6 +384,44 @@ citApp.directive("formBuilder", ['ImageRepository', '$translate', '$filter', '$t } } + $scope.allowComponentUp = function(component) { + if (component) { + if (component.rowIndex > 0) { + var row = $scope.formContainer.rows[component.rowIndex]; + var targetRow = $scope.formContainer.rows[component.rowIndex - 1]; + + return row.tabIndex == targetRow.tabIndex; + } + } + return false; + } + + $scope.allowComponentDown = function(component) { + if (component) { + if (component.rowIndex < $scope.formContainer.rows.length - 1) { + var row = $scope.formContainer.rows[component.rowIndex]; + var targetRow = $scope.formContainer.rows[component.rowIndex + 1]; + + return row.tabIndex == targetRow.tabIndex; + } + } + return false; + } + + $scope.moveComponentUp = function(component) { + if ($scope.allowComponentUp(component)) { + component.rowIndexInput = component.rowIndexInput - 1; + $scope.changeComponentRow(component); + } + } + + $scope.moveComponentDown = function(component) { + if ($scope.allowComponentDown(component)) { + component.rowIndexInput = component.rowIndexInput + 1; + $scope.changeComponentRow(component); + } + } + $scope.deleteRow = function(row){ if (row) { $scope.formContainer.rows.splice(row.index, 1); @@ -386,17 +436,15 @@ citApp.directive("formBuilder", ['ImageRepository', '$translate', '$filter', '$t } $scope.changeComponentRow = function(component) { - if (component.rowIndexInput != component.rowIndex + 1) { - var row = $scope.formContainer.rows[component.rowIndex]; - row.components.splice(component.index, 1); - $scope.reorderComponents(row); - - component.rowIndex = component.rowIndexInput - 1; - row = $scope.formContainer.rows[component.rowIndex]; - component.index = row.components.length - 1; - row.components.push(component); - $scope.reorderComponents(row); - } + var row = $scope.formContainer.rows[component.rowIndex]; + row.components.splice(component.index, 1); + $scope.reorderComponents(row); + + component.rowIndex = component.rowIndexInput - 1; + row = $scope.formContainer.rows[component.rowIndex]; + component.index = row.components.length - 1; + row.components.push(component); + $scope.reorderComponents(row); } $scope.allowRowUp = function(row) { diff --git a/cit-esi-web/src/main/webapp/assets/js/angular/custom/directive/html/formBuilder.html b/cit-esi-web/src/main/webapp/assets/js/angular/custom/directive/html/formBuilder.html index bdf5f79..d91ca9a 100644 --- a/cit-esi-web/src/main/webapp/assets/js/angular/custom/directive/html/formBuilder.html +++ b/cit-esi-web/src/main/webapp/assets/js/angular/custom/directive/html/formBuilder.html @@ -161,7 +161,7 @@ -