angular-ui-grid
Version:
A data grid for Angular
6 lines • 4.92 kB
JavaScript
/*!
* ui-grid - v4.12.7 - 2024-04-12
* http://ui-grid.info/
* Copyright (c) 2024 ; License: MIT
*/
!function(){"use strict";var r=angular.module("ui.grid.rowEdit",["ui.grid","ui.grid.edit","ui.grid.cellNav"]);r.constant("uiGridRowEditConstants",{}),r.service("uiGridRowEditService",["$interval","$q","uiGridConstants","uiGridRowEditConstants","gridUtil",function(t,r,i,e,n){var s={initializeGrid:function(i,e){e.rowEdit={};var r={rowEdit:{saveRow:function(r){}}},t={rowEdit:{setSavePromise:function(r,i){s.setSavePromise(e,r,i)},getDirtyRows:function(){return e.rowEdit.dirtyRows||[]},getErrorRows:function(){return e.rowEdit.errorRows||[]},flushDirtyRows:function(){return s.flushDirtyRows(e)},setRowsDirty:function(r){s.setRowsDirty(e,r)},setRowsClean:function(r){s.setRowsClean(e,r)}}};e.api.registerEventsFromObject(r),e.api.registerMethodsFromObject(t),e.api.core.on.renderingComplete(i,function(r){e.api.edit.on.afterCellEdit(i,s.endEditCell),e.api.edit.on.beginCellEdit(i,s.beginEditCell),e.api.edit.on.cancelCellEdit(i,s.cancelEditCell),e.api.cellNav&&e.api.cellNav.on.navigate(i,s.navigate)})},defaultGridOptions:function(r){},saveRow:function(i,e){var t=this;return function(){var r;return e.isSaving=!0,e.rowEditSavePromise||(r=i.api.rowEdit.raise.saveRow(e.entity),e.rowEditSavePromise?e.rowEditSavePromise.then(t.processSuccessPromise(i,e),t.processErrorPromise(i,e)):n.logError("A promise was not returned when saveRow event was raised, either nobody is listening to event, or event handler did not return a promise"),r)}},setSavePromise:function(r,i,e){r.getRow(i).rowEditSavePromise=e},processSuccessPromise:function(r,i){var e=this;return function(){delete i.isSaving,delete i.isDirty,delete i.isError,delete i.rowEditSaveTimer,delete i.rowEditSavePromise,e.removeRow(r.rowEdit.errorRows,i),e.removeRow(r.rowEdit.dirtyRows,i)}},processErrorPromise:function(r,i){return function(){delete i.isSaving,delete i.rowEditSaveTimer,delete i.rowEditSavePromise,i.isError=!0,r.rowEdit.errorRows||(r.rowEdit.errorRows=[]),s.isRowPresent(r.rowEdit.errorRows,i)||r.rowEdit.errorRows.push(i)}},removeRow:function(e,t){null!=e&&e.forEach(function(r,i){r.uid===t.uid&&e.splice(i,1)})},isRowPresent:function(r,e){var t=!1;return r.forEach(function(r,i){r.uid===e.uid&&(t=!0)}),t},flushDirtyRows:function(i){var e=[];return i.api.rowEdit.getDirtyRows().forEach(function(r){s.cancelTimer(i,r),s.saveRow(i,r)(),e.push(r.rowEditSavePromise)}),r.all(e)},endEditCell:function(r,i,e,t){var o=this.grid,r=o.getRow(r);r?e===t&&!r.isDirty||(o.rowEdit.dirtyRows||(o.rowEdit.dirtyRows=[]),r.isDirty||(r.isDirty=!0,o.rowEdit.dirtyRows.push(r)),delete r.isError,s.considerSetTimer(o,r)):n.logError("Unable to find rowEntity in grid data, dirty flag cannot be set")},beginEditCell:function(r,i){var e=this.grid,r=e.getRow(r);r?s.cancelTimer(e,r):n.logError("Unable to find rowEntity in grid data, timer cannot be cancelled")},cancelEditCell:function(r,i){var e=this.grid,r=e.getRow(r);r?s.considerSetTimer(e,r):n.logError("Unable to find rowEntity in grid data, timer cannot be set")},navigate:function(r,i){var e=this.grid;r.row.rowEditSaveTimer&&s.cancelTimer(e,r.row),i&&i.row&&i.row!==r.row&&s.considerSetTimer(e,i.row)},considerSetTimer:function(r,i){var e;s.cancelTimer(r,i),i.isDirty&&!i.isSaving&&-1!==r.options.rowEditWaitInterval&&(e=r.options.rowEditWaitInterval||2e3,i.rowEditSaveTimer=t(s.saveRow(r,i),e,1))},cancelTimer:function(r,i){i.rowEditSaveTimer&&!i.isSaving&&(t.cancel(i.rowEditSaveTimer),delete i.rowEditSaveTimer)},setRowsDirty:function(e,r){var t;r.forEach(function(r,i){(t=e.getRow(r))?(e.rowEdit.dirtyRows||(e.rowEdit.dirtyRows=[]),t.isDirty||(t.isDirty=!0,e.rowEdit.dirtyRows.push(t)),delete t.isError,s.considerSetTimer(e,t)):n.logError("requested row not found in rowEdit.setRowsDirty, row was: "+r)})},setRowsClean:function(e,r){var t;r.forEach(function(r,i){(t=e.getRow(r))?(delete t.isDirty,s.removeRow(e.rowEdit.dirtyRows,t),s.cancelTimer(e,t),delete t.isError,s.removeRow(e.rowEdit.errorRows,t)):n.logError("requested row not found in rowEdit.setRowsClean, row was: "+r)})}};return s}]),r.directive("uiGridRowEdit",["gridUtil","uiGridRowEditService","uiGridEditConstants",function(r,o,i){return{replace:!0,priority:0,require:"^uiGrid",scope:!1,compile:function(){return{pre:function(r,i,e,t){o.initializeGrid(r,t.grid)},post:function(r,i,e,t){}}}}}]),r.directive("uiGridViewport",["$compile","uiGridConstants","gridUtil","$parse",function(r,i,e,t){return{priority:-200,scope:!1,compile:function(r,i){var r=angular.element(r.children().children()[0]),e=r.attr("ng-class"),t="",t=e?e.slice(0,-1)+", 'ui-grid-row-dirty': row.isDirty, 'ui-grid-row-saving': row.isSaving, 'ui-grid-row-error': row.isError}":"{'ui-grid-row-dirty': row.isDirty, 'ui-grid-row-saving': row.isSaving, 'ui-grid-row-error': row.isError}";return r.attr("ng-class",t),{pre:function(r,i,e,t){},post:function(r,i,e,t){}}}}}])}();