|
147 | 147 | flushDirtyRows: function () {
|
148 | 148 | return service.flushDirtyRows(grid);
|
149 | 149 | },
|
150 |
| - |
| 150 | + |
151 | 151 | /**
|
152 | 152 | * @ngdoc method
|
153 | 153 | * @methodOf ui.grid.rowEdit.api:PublicApi
|
|
159 | 159 | * call in a $interval or $timeout
|
160 | 160 | * <pre>
|
161 | 161 | * $interval( function() {
|
162 |
| - * gridApi.rowEdit.setRowsDirty(grid, myDataRows); |
| 162 | + * gridApi.rowEdit.setRowsDirty(myDataRows); |
163 | 163 | * }, 0, 1);
|
164 | 164 | * </pre>
|
165 | 165 | * @param {array} dataRows the data entities for which the gridRows
|
|
168 | 168 | */
|
169 | 169 | setRowsDirty: function ( dataRows) {
|
170 | 170 | service.setRowsDirty(grid, dataRows);
|
| 171 | + }, |
| 172 | + |
| 173 | + /** |
| 174 | + * @ngdoc method |
| 175 | + * @methodOf ui.grid.rowEdit.api:PublicApi |
| 176 | + * @name setRowsClean |
| 177 | + * @description Sets each of the rows passed in dataRows |
| 178 | + * to be clean, removing them from the dirty cache and the error cache, |
| 179 | + * and clearing the error flag and the dirty flag |
| 180 | + * <pre> |
| 181 | + * var gridRows = $scope.gridApi.rowEdit.getDirtyRows(); |
| 182 | + * var dataRows = gridRows.map( function( gridRow ) { return gridRow.entity; }); |
| 183 | + * $scope.gridApi.rowEdit.setRowsClean( dataRows ); |
| 184 | + * </pre> |
| 185 | + * @param {array} dataRows the data entities for which the gridRows |
| 186 | + * should be set clean. |
| 187 | + * |
| 188 | + */ |
| 189 | + setRowsClean: function ( dataRows) { |
| 190 | + service.setRowsClean(grid, dataRows); |
171 | 191 | }
|
172 | 192 | }
|
173 | 193 | }
|
174 | 194 | };
|
175 | 195 |
|
176 | 196 | grid.api.registerEventsFromObject(publicApi.events);
|
177 | 197 | grid.api.registerMethodsFromObject(publicApi.methods);
|
178 |
| - |
| 198 | + |
179 | 199 | grid.api.core.on.renderingComplete( scope, function ( gridApi ) {
|
180 | 200 | grid.api.edit.on.afterCellEdit( scope, service.endEditCell );
|
181 | 201 | grid.api.edit.on.beginCellEdit( scope, service.beginEditCell );
|
182 | 202 | grid.api.edit.on.cancelCellEdit( scope, service.cancelEditCell );
|
183 |
| - |
| 203 | + |
184 | 204 | if ( grid.api.cellNav ) {
|
185 | 205 | grid.api.cellNav.on.navigate( scope, service.navigate );
|
186 |
| - } |
| 206 | + } |
187 | 207 | });
|
188 | 208 |
|
189 | 209 | },
|
|
222 | 242 | // don't save the row again if it's already saving - that causes stale object exceptions
|
223 | 243 | return gridRow.rowEditSavePromise;
|
224 | 244 | }
|
225 |
| - |
| 245 | + |
226 | 246 | var promise = grid.api.rowEdit.raise.saveRow( gridRow.entity );
|
227 |
| - |
| 247 | + |
228 | 248 | if ( gridRow.rowEditSavePromise ){
|
229 | 249 | gridRow.rowEditSavePromise.then( self.processSuccessPromise( grid, gridRow ), self.processErrorPromise( grid, gridRow ));
|
230 | 250 | } else {
|
|
233 | 253 | return promise;
|
234 | 254 | };
|
235 | 255 | },
|
236 |
| - |
| 256 | + |
237 | 257 |
|
238 | 258 | /**
|
239 | 259 | * @ngdoc method
|
|
269 | 289 | */
|
270 | 290 | processSuccessPromise: function ( grid, gridRow ) {
|
271 | 291 | var self = this;
|
272 |
| - |
| 292 | + |
273 | 293 | return function() {
|
274 | 294 | delete gridRow.isSaving;
|
275 | 295 | delete gridRow.isDirty;
|
|
280 | 300 | self.removeRow( grid.rowEdit.dirtyRows, gridRow );
|
281 | 301 | };
|
282 | 302 | },
|
283 |
| - |
| 303 | + |
284 | 304 |
|
285 | 305 | /**
|
286 | 306 | * @ngdoc method
|
|
299 | 319 | delete gridRow.rowEditSavePromise;
|
300 | 320 |
|
301 | 321 | gridRow.isError = true;
|
302 |
| - |
| 322 | + |
303 | 323 | if (!grid.rowEdit.errorRows){
|
304 | 324 | grid.rowEdit.errorRows = [];
|
305 | 325 | }
|
|
308 | 328 | }
|
309 | 329 | };
|
310 | 330 | },
|
311 |
| - |
312 |
| - |
| 331 | + |
| 332 | + |
313 | 333 | /**
|
314 | 334 | * @ngdoc method
|
315 | 335 | * @methodOf ui.grid.rowEdit.service:uiGridRowEditService
|
|
324 | 344 | if (typeof(rowArray) === 'undefined' || rowArray === null){
|
325 | 345 | return;
|
326 | 346 | }
|
327 |
| - |
| 347 | + |
328 | 348 | rowArray.forEach( function( gridRow, index ){
|
329 | 349 | if ( gridRow.uid === removeGridRow.uid ){
|
330 | 350 | rowArray.splice( index, 1);
|
331 | 351 | }
|
332 | 352 | });
|
333 | 353 | },
|
334 |
| - |
335 |
| - |
| 354 | + |
| 355 | + |
336 | 356 | /**
|
337 | 357 | * @ngdoc method
|
338 | 358 | * @methodOf ui.grid.rowEdit.service:uiGridRowEditService
|
|
352 | 372 | return present;
|
353 | 373 | },
|
354 | 374 |
|
355 |
| - |
| 375 | + |
356 | 376 | /**
|
357 | 377 | * @ngdoc method
|
358 | 378 | * @methodOf ui.grid.rowEdit.service:uiGridRowEditService
|
|
374 | 394 | service.saveRow( grid, gridRow )();
|
375 | 395 | promises.push( gridRow.rowEditSavePromise );
|
376 | 396 | });
|
377 |
| - |
| 397 | + |
378 | 398 | return $q.all( promises );
|
379 | 399 | },
|
380 |
| - |
381 |
| - |
| 400 | + |
| 401 | + |
382 | 402 | /**
|
383 | 403 | * @ngdoc method
|
384 | 404 | * @methodOf ui.grid.rowEdit.service:uiGridRowEditService
|
|
389 | 409 | * is automatically provided by the gridApi.
|
390 | 410 | * @param {object} rowEntity the data entity for which the cell
|
391 | 411 | * was edited
|
392 |
| - */ |
| 412 | + */ |
393 | 413 | endEditCell: function( rowEntity, colDef, newValue, previousValue ){
|
394 | 414 | var grid = this.grid;
|
395 | 415 | var gridRow = grid.getRow( rowEntity );
|
|
399 | 419 | if ( !grid.rowEdit.dirtyRows ){
|
400 | 420 | grid.rowEdit.dirtyRows = [];
|
401 | 421 | }
|
402 |
| - |
| 422 | + |
403 | 423 | if ( !gridRow.isDirty ){
|
404 | 424 | gridRow.isDirty = true;
|
405 | 425 | grid.rowEdit.dirtyRows.push( gridRow );
|
406 | 426 | }
|
407 |
| - |
| 427 | + |
408 | 428 | delete gridRow.isError;
|
409 |
| - |
| 429 | + |
410 | 430 | service.considerSetTimer( grid, gridRow );
|
411 | 431 | }
|
412 | 432 | },
|
413 |
| - |
414 |
| - |
| 433 | + |
| 434 | + |
415 | 435 | /**
|
416 | 436 | * @ngdoc method
|
417 | 437 | * @methodOf ui.grid.rowEdit.service:uiGridRowEditService
|
|
428 | 448 | var grid = this.grid;
|
429 | 449 | var gridRow = grid.getRow( rowEntity );
|
430 | 450 | if ( !gridRow ){ gridUtil.logError( 'Unable to find rowEntity in grid data, timer cannot be cancelled' ); return; }
|
431 |
| - |
| 451 | + |
432 | 452 | service.cancelTimer( grid, gridRow );
|
433 | 453 | },
|
434 | 454 |
|
|
440 | 460 | * @description Receives a cancelCellEdit event from the edit function,
|
441 | 461 | * and if the row was already dirty, restarts the save timer. If the row
|
442 | 462 | * was not already dirty, then it's not dirty now either and does nothing.
|
443 |
| - * |
| 463 | + * |
444 | 464 | * Only the rowEntity parameter
|
445 | 465 | * is processed, although other params are available. Grid
|
446 | 466 | * is automatically provided by the gridApi.
|
447 |
| - * |
| 467 | + * |
448 | 468 | * @param {object} rowEntity the data entity for which the cell
|
449 | 469 | * editing was cancelled
|
450 |
| - */ |
| 470 | + */ |
451 | 471 | cancelEditCell: function( rowEntity, colDef ){
|
452 | 472 | var grid = this.grid;
|
453 | 473 | var gridRow = grid.getRow( rowEntity );
|
454 | 474 | if ( !gridRow ){ gridUtil.logError( 'Unable to find rowEntity in grid data, timer cannot be set' ); return; }
|
455 |
| - |
| 475 | + |
456 | 476 | service.considerSetTimer( grid, gridRow );
|
457 | 477 | },
|
458 |
| - |
459 |
| - |
| 478 | + |
| 479 | + |
460 | 480 | /**
|
461 | 481 | * @ngdoc method
|
462 | 482 | * @methodOf ui.grid.rowEdit.service:uiGridRowEditService
|
|
479 | 499 | service.considerSetTimer( grid, oldRowCol.row );
|
480 | 500 | }
|
481 | 501 | },
|
482 |
| - |
483 |
| - |
| 502 | + |
| 503 | + |
484 | 504 | /**
|
485 | 505 | * @ngdoc property
|
486 | 506 | * @propertyOf ui.grid.rowEdit.api:GridOptions
|
|
510 | 530 | */
|
511 | 531 | considerSetTimer: function( grid, gridRow ){
|
512 | 532 | service.cancelTimer( grid, gridRow );
|
513 |
| - |
| 533 | + |
514 | 534 | if ( gridRow.isDirty && !gridRow.isSaving ){
|
515 | 535 | if ( grid.options.rowEditWaitInterval !== -1 ){
|
516 | 536 | var waitTime = grid.options.rowEditWaitInterval ? grid.options.rowEditWaitInterval : 2000;
|
517 | 537 | gridRow.rowEditSaveTimer = $interval( service.saveRow( grid, gridRow ), waitTime, 1);
|
518 | 538 | }
|
519 | 539 | }
|
520 | 540 | },
|
521 |
| - |
| 541 | + |
522 | 542 |
|
523 | 543 | /**
|
524 | 544 | * @ngdoc method
|
|
565 | 585 | if ( !grid.rowEdit.dirtyRows ){
|
566 | 586 | grid.rowEdit.dirtyRows = [];
|
567 | 587 | }
|
568 |
| - |
| 588 | + |
569 | 589 | if ( !gridRow.isDirty ){
|
570 | 590 | gridRow.isDirty = true;
|
571 | 591 | grid.rowEdit.dirtyRows.push( gridRow );
|
572 | 592 | }
|
573 |
| - |
| 593 | + |
574 | 594 | delete gridRow.isError;
|
575 |
| - |
| 595 | + |
576 | 596 | service.considerSetTimer( grid, gridRow );
|
577 | 597 | } else {
|
578 | 598 | gridUtil.logError( "requested row not found in rowEdit.setRowsDirty, row was: " + value );
|
579 | 599 | }
|
580 | 600 | });
|
| 601 | + }, |
| 602 | + |
| 603 | + |
| 604 | + /** |
| 605 | + * @ngdoc method |
| 606 | + * @methodOf ui.grid.rowEdit.service:uiGridRowEditService |
| 607 | + * @name setRowsClean |
| 608 | + * @description Sets each of the rows passed in dataRows |
| 609 | + * to be clean, clearing the dirty flag and the error flag, and removing |
| 610 | + * the rows from the dirty and error caches. |
| 611 | + * @param {object} grid the grid for which rows should be set clean |
| 612 | + * @param {array} dataRows the data entities for which the gridRows |
| 613 | + * should be set clean. |
| 614 | + * |
| 615 | + */ |
| 616 | + setRowsClean: function( grid, myDataRows ) { |
| 617 | + var gridRow; |
| 618 | + |
| 619 | + myDataRows.forEach( function( value, index ){ |
| 620 | + gridRow = grid.getRow( value ); |
| 621 | + if ( gridRow ){ |
| 622 | + delete gridRow.isDirty; |
| 623 | + service.removeRow( grid.rowEdit.dirtyRows, gridRow ); |
| 624 | + service.cancelTimer( grid, gridRow ); |
| 625 | + |
| 626 | + delete gridRow.isError; |
| 627 | + service.removeRow( grid.rowEdit.errorRows, gridRow ); |
| 628 | + } else { |
| 629 | + gridUtil.logError( "requested row not found in rowEdit.setRowsClean, row was: " + value ); |
| 630 | + } |
| 631 | + }); |
581 | 632 | }
|
582 |
| - |
583 |
| - |
| 633 | + |
584 | 634 | };
|
585 | 635 |
|
586 | 636 | return service;
|
|
0 commit comments