Commit 82dab98008110895ab2849e3f5986a8e0d1c3884
1 parent
2bbb09a4
Exists in
master
Melhoria da movimentação de componentes do form builder
Showing
3 changed files
with
71 additions
and
15 deletions
Show diff stats
cit-esi-web/src/main/webapp/assets/js/angular/custom/directive/FormBuilderDirective.js
@@ -178,7 +178,11 @@ citApp.directive("formBuilder", ['ImageRepository', '$translate', '$filter', '$t | @@ -178,7 +178,11 @@ citApp.directive("formBuilder", ['ImageRepository', '$translate', '$filter', '$t | ||
178 | $scope.currentTab = $scope.formContainer.tabs[0]; | 178 | $scope.currentTab = $scope.formContainer.tabs[0]; |
179 | } | 179 | } |
180 | var tabIndex = $scope.currentTab.index; | 180 | var tabIndex = $scope.currentTab.index; |
181 | - var row = {index: $scope.formContainer.rows.length | 181 | + var rowIndex = $scope.formContainer.rows.length; |
182 | + if ($scope.currentRow) { | ||
183 | + rowIndex = $scope.currentRow.index + 1; | ||
184 | + } | ||
185 | + var row = {index: rowIndex | ||
182 | , $type: "row" | 186 | , $type: "row" |
183 | , tabIndex: tabIndex | 187 | , tabIndex: tabIndex |
184 | , components: [] | 188 | , components: [] |
@@ -189,7 +193,15 @@ citApp.directive("formBuilder", ['ImageRepository', '$translate', '$filter', '$t | @@ -189,7 +193,15 @@ citApp.directive("formBuilder", ['ImageRepository', '$translate', '$filter', '$t | ||
189 | , ngIfHtml: "" | 193 | , ngIfHtml: "" |
190 | , aditionalHtml: "" | 194 | , aditionalHtml: "" |
191 | , htmlOnly: false}; | 195 | , htmlOnly: false}; |
192 | - $scope.formContainer.rows.push(row); | 196 | + if ($scope.currentRow) { |
197 | + for (var i = $scope.formContainer.rows.length -1; i > $scope.currentRow.index; i--) { | ||
198 | + $scope.formContainer.rows[i+1] = $scope.formContainer.rows[i]; | ||
199 | + } | ||
200 | + $scope.formContainer.rows[$scope.currentRow.index+1] = row; | ||
201 | + $scope.reorderRows(); | ||
202 | + }else{ | ||
203 | + $scope.formContainer.rows.push(row); | ||
204 | + } | ||
193 | $scope.selectRow(row, true); | 205 | $scope.selectRow(row, true); |
194 | return row; | 206 | return row; |
195 | } | 207 | } |
@@ -372,6 +384,44 @@ citApp.directive("formBuilder", ['ImageRepository', '$translate', '$filter', '$t | @@ -372,6 +384,44 @@ citApp.directive("formBuilder", ['ImageRepository', '$translate', '$filter', '$t | ||
372 | } | 384 | } |
373 | } | 385 | } |
374 | 386 | ||
387 | + $scope.allowComponentUp = function(component) { | ||
388 | + if (component) { | ||
389 | + if (component.rowIndex > 0) { | ||
390 | + var row = $scope.formContainer.rows[component.rowIndex]; | ||
391 | + var targetRow = $scope.formContainer.rows[component.rowIndex - 1]; | ||
392 | + | ||
393 | + return row.tabIndex == targetRow.tabIndex; | ||
394 | + } | ||
395 | + } | ||
396 | + return false; | ||
397 | + } | ||
398 | + | ||
399 | + $scope.allowComponentDown = function(component) { | ||
400 | + if (component) { | ||
401 | + if (component.rowIndex < $scope.formContainer.rows.length - 1) { | ||
402 | + var row = $scope.formContainer.rows[component.rowIndex]; | ||
403 | + var targetRow = $scope.formContainer.rows[component.rowIndex + 1]; | ||
404 | + | ||
405 | + return row.tabIndex == targetRow.tabIndex; | ||
406 | + } | ||
407 | + } | ||
408 | + return false; | ||
409 | + } | ||
410 | + | ||
411 | + $scope.moveComponentUp = function(component) { | ||
412 | + if ($scope.allowComponentUp(component)) { | ||
413 | + component.rowIndexInput = component.rowIndexInput - 1; | ||
414 | + $scope.changeComponentRow(component); | ||
415 | + } | ||
416 | + } | ||
417 | + | ||
418 | + $scope.moveComponentDown = function(component) { | ||
419 | + if ($scope.allowComponentDown(component)) { | ||
420 | + component.rowIndexInput = component.rowIndexInput + 1; | ||
421 | + $scope.changeComponentRow(component); | ||
422 | + } | ||
423 | + } | ||
424 | + | ||
375 | $scope.deleteRow = function(row){ | 425 | $scope.deleteRow = function(row){ |
376 | if (row) { | 426 | if (row) { |
377 | $scope.formContainer.rows.splice(row.index, 1); | 427 | $scope.formContainer.rows.splice(row.index, 1); |
@@ -386,17 +436,15 @@ citApp.directive("formBuilder", ['ImageRepository', '$translate', '$filter', '$t | @@ -386,17 +436,15 @@ citApp.directive("formBuilder", ['ImageRepository', '$translate', '$filter', '$t | ||
386 | } | 436 | } |
387 | 437 | ||
388 | $scope.changeComponentRow = function(component) { | 438 | $scope.changeComponentRow = function(component) { |
389 | - if (component.rowIndexInput != component.rowIndex + 1) { | ||
390 | - var row = $scope.formContainer.rows[component.rowIndex]; | ||
391 | - row.components.splice(component.index, 1); | ||
392 | - $scope.reorderComponents(row); | ||
393 | - | ||
394 | - component.rowIndex = component.rowIndexInput - 1; | ||
395 | - row = $scope.formContainer.rows[component.rowIndex]; | ||
396 | - component.index = row.components.length - 1; | ||
397 | - row.components.push(component); | ||
398 | - $scope.reorderComponents(row); | ||
399 | - } | 439 | + var row = $scope.formContainer.rows[component.rowIndex]; |
440 | + row.components.splice(component.index, 1); | ||
441 | + $scope.reorderComponents(row); | ||
442 | + | ||
443 | + component.rowIndex = component.rowIndexInput - 1; | ||
444 | + row = $scope.formContainer.rows[component.rowIndex]; | ||
445 | + component.index = row.components.length - 1; | ||
446 | + row.components.push(component); | ||
447 | + $scope.reorderComponents(row); | ||
400 | } | 448 | } |
401 | 449 | ||
402 | $scope.allowRowUp = function(row) { | 450 | $scope.allowRowUp = function(row) { |
cit-esi-web/src/main/webapp/assets/js/angular/custom/directive/html/formBuilder.html
@@ -161,7 +161,7 @@ | @@ -161,7 +161,7 @@ | ||
161 | </div> | 161 | </div> |
162 | </div> | 162 | </div> |
163 | </div> | 163 | </div> |
164 | - <div class="form-group" > | 164 | +<!-- <div class="form-group" > |
165 | <label for=currentComponent.rowIndexInput> <translate> <span class="">ESI.LINHA</span></translate> | 165 | <label for=currentComponent.rowIndexInput> <translate> <span class="">ESI.LINHA</span></translate> |
166 | <i class="fa fa-info-circle" tooltip-placement="top" | 166 | <i class="fa fa-info-circle" tooltip-placement="top" |
167 | tooltip="Linha do componente" | 167 | tooltip="Linha do componente" |
@@ -173,7 +173,7 @@ | @@ -173,7 +173,7 @@ | ||
173 | class="form-control property--width input-sm ng-valid ng-valid-min ng-valid-max ng-dirty ng-touched" | 173 | class="form-control property--width input-sm ng-valid ng-valid-min ng-valid-max ng-dirty ng-touched" |
174 | id="currentComponent.rowIndexInput" min="1" max="{{formContainer.rows.length}}" ng-change="changeComponentRow(currentComponent)"> | 174 | id="currentComponent.rowIndexInput" min="1" max="{{formContainer.rows.length}}" ng-change="changeComponentRow(currentComponent)"> |
175 | </div> | 175 | </div> |
176 | - </div> | 176 | + </div> --> |
177 | <div style="height:395px;overflow-x: hidden;overflow-y: auto; padding: 0px 0px 0px 0px"> | 177 | <div style="height:395px;overflow-x: hidden;overflow-y: auto; padding: 0px 0px 0px 0px"> |
178 | <div class='row no-padding' ng-if="currentComponent.widget.type.name == 'HTML'"> | 178 | <div class='row no-padding' ng-if="currentComponent.widget.type.name == 'HTML'"> |
179 | <label-ui-ace ng-label="ESI.HTML" ng-theme="eclipse" ng-mode="html" ng-model="currentComponent.htmlCode" | 179 | <label-ui-ace ng-label="ESI.HTML" ng-theme="eclipse" ng-mode="html" ng-model="currentComponent.htmlCode" |
cit-esi-web/src/main/webapp/assets/js/angular/custom/directive/html/formBuilderRow.html
@@ -43,6 +43,14 @@ | @@ -43,6 +43,14 @@ | ||
43 | ng-click="moveComponentRight(row, component)" | 43 | ng-click="moveComponentRight(row, component)" |
44 | class="fa fa-arrow-circle-right btn-caption move-right" | 44 | class="fa fa-arrow-circle-right btn-caption move-right" |
45 | title="Move o componente para a direita"></button> | 45 | title="Move o componente para a direita"></button> |
46 | + <button ng-if="allowComponentUp(component)" | ||
47 | + ng-click="moveComponentUp(component)" | ||
48 | + class="fa fa-arrow-circle-up btn-caption move-left" | ||
49 | + title="Move o componente para a linha acima"></button> | ||
50 | + <button ng-if="allowComponentDown(component)" | ||
51 | + ng-click="moveComponentDown(component)" | ||
52 | + class="fa fa-arrow-circle-down btn-caption move-left" | ||
53 | + title="Move o componente para a linha abaixo"></button> | ||
46 | <button ng-click="deleteComponent(row, component)" | 54 | <button ng-click="deleteComponent(row, component)" |
47 | class="fa fa-times-circle btn-caption" | 55 | class="fa fa-times-circle btn-caption" |
48 | title="Exclui o componente"></button> | 56 | title="Exclui o componente"></button> |