ui.collection_widget.async.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /**
  2. * DevExtreme (ui/collection/ui.collection_widget.async.js)
  3. * Version: 19.1.16
  4. * Build date: Tue Oct 18 2022
  5. *
  6. * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
  7. * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
  8. */
  9. "use strict";
  10. var _uiCollection_widget = require("./ui.collection_widget.edit");
  11. var _uiCollection_widget2 = _interopRequireDefault(_uiCollection_widget);
  12. var _deferred = require("../../core/utils/deferred");
  13. var _common = require("../../core/utils/common");
  14. function _interopRequireDefault(obj) {
  15. return obj && obj.__esModule ? obj : {
  16. "default": obj
  17. }
  18. }
  19. var AsyncCollectionWidget = _uiCollection_widget2.default.inherit({
  20. _initMarkup: function() {
  21. this._deferredItems = [];
  22. this.callBase()
  23. },
  24. _renderItemContent: function(args) {
  25. var renderContentDeferred = new _deferred.Deferred;
  26. var itemDeferred = new _deferred.Deferred;
  27. var that = this;
  28. this._deferredItems[args.index] = itemDeferred;
  29. var $itemContent = this.callBase.call(that, args);
  30. itemDeferred.done(function() {
  31. renderContentDeferred.resolve($itemContent)
  32. });
  33. return renderContentDeferred.promise()
  34. },
  35. _createItemByTemplate: function(itemTemplate, renderArgs) {
  36. var _this = this;
  37. return itemTemplate.render({
  38. model: renderArgs.itemData,
  39. container: renderArgs.container,
  40. index: renderArgs.index,
  41. onRendered: function() {
  42. _this._deferredItems[renderArgs.index].resolve()
  43. }
  44. })
  45. },
  46. _postProcessRenderItems: _common.noop,
  47. _renderItemsAsync: function() {
  48. var _this2 = this;
  49. var d = new _deferred.Deferred;
  50. _deferred.when.apply(this, this._deferredItems).done(function() {
  51. _this2._postProcessRenderItems();
  52. d.resolve()
  53. });
  54. return d.promise()
  55. },
  56. _clean: function() {
  57. this.callBase();
  58. this._deferredItems = []
  59. }
  60. });
  61. module.exports = AsyncCollectionWidget;