UNPKG

13.9 kBJavaScriptView Raw
1/**
2 * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components
3 * @version v18.1.2
4 * @link http://www.ag-grid.com/
5 * @license MIT
6 */
7"use strict";
8Object.defineProperty(exports, "__esModule", { value: true });
9var gridOptionsWrapper_1 = require("./gridOptionsWrapper");
10var selectionController_1 = require("./selectionController");
11var columnApi_1 = require("./columnController/columnApi");
12var columnController_1 = require("./columnController/columnController");
13var rowRenderer_1 = require("./rendering/rowRenderer");
14var headerRootComp_1 = require("./headerRendering/headerRootComp");
15var filterManager_1 = require("./filter/filterManager");
16var valueService_1 = require("./valueService/valueService");
17var eventService_1 = require("./eventService");
18var gridPanel_1 = require("./gridPanel/gridPanel");
19var gridApi_1 = require("./gridApi");
20var balancedColumnTreeBuilder_1 = require("./columnController/balancedColumnTreeBuilder");
21var displayedGroupCreator_1 = require("./columnController/displayedGroupCreator");
22var expressionService_1 = require("./valueService/expressionService");
23var templateService_1 = require("./templateService");
24var popupService_1 = require("./widgets/popupService");
25var logger_1 = require("./logger");
26var columnUtils_1 = require("./columnController/columnUtils");
27var autoWidthCalculator_1 = require("./rendering/autoWidthCalculator");
28var horizontalResizeService_1 = require("./headerRendering/horizontalResizeService");
29var context_1 = require("./context/context");
30var csvCreator_1 = require("./csvCreator");
31var gridCore_1 = require("./gridCore");
32var standardMenu_1 = require("./headerRendering/standardMenu");
33var dragAndDropService_1 = require("./dragAndDrop/dragAndDropService");
34var dragService_1 = require("./dragAndDrop/dragService");
35var sortController_1 = require("./sortController");
36var focusedCellController_1 = require("./focusedCellController");
37var mouseEventService_1 = require("./gridPanel/mouseEventService");
38var cellNavigationService_1 = require("./cellNavigationService");
39var utils_1 = require("./utils");
40var filterStage_1 = require("./rowModels/clientSide/filterStage");
41var sortStage_1 = require("./rowModels/clientSide/sortStage");
42var flattenStage_1 = require("./rowModels/clientSide/flattenStage");
43var cellEditorFactory_1 = require("./rendering/cellEditorFactory");
44var events_1 = require("./events");
45var infiniteRowModel_1 = require("./rowModels/infinite/infiniteRowModel");
46var clientSideRowModel_1 = require("./rowModels/clientSide/clientSideRowModel");
47var cellRendererFactory_1 = require("./rendering/cellRendererFactory");
48var cellRendererService_1 = require("./rendering/cellRendererService");
49var valueFormatterService_1 = require("./rendering/valueFormatterService");
50var agCheckbox_1 = require("./widgets/agCheckbox");
51var baseFrameworkFactory_1 = require("./baseFrameworkFactory");
52var scrollVisibleService_1 = require("./gridPanel/scrollVisibleService");
53var downloader_1 = require("./downloader");
54var xmlFactory_1 = require("./xmlFactory");
55var gridSerializer_1 = require("./gridSerializer");
56var stylingService_1 = require("./styling/stylingService");
57var columnHoverService_1 = require("./rendering/columnHoverService");
58var columnAnimationService_1 = require("./rendering/columnAnimationService");
59var sortService_1 = require("./rowNodes/sortService");
60var filterService_1 = require("./rowNodes/filterService");
61var autoGroupColService_1 = require("./columnController/autoGroupColService");
62var paginationProxy_1 = require("./rowModels/paginationProxy");
63var immutableService_1 = require("./rowModels/clientSide/immutableService");
64var constants_1 = require("./constants");
65var valueCache_1 = require("./valueService/valueCache");
66var changeDetectionService_1 = require("./valueService/changeDetectionService");
67var alignedGridsService_1 = require("./alignedGridsService");
68var pinnedRowModel_1 = require("./rowModels/pinnedRowModel");
69var componentResolver_1 = require("./components/framework/componentResolver");
70var componentRecipes_1 = require("./components/framework/componentRecipes");
71var componentProvider_1 = require("./components/framework/componentProvider");
72var agComponentUtils_1 = require("./components/framework/agComponentUtils");
73var componentMetadataProvider_1 = require("./components/framework/componentMetadataProvider");
74var beans_1 = require("./rendering/beans");
75var environment_1 = require("./environment");
76var animationFrameService_1 = require("./misc/animationFrameService");
77var navigationService_1 = require("./gridPanel/navigationService");
78var heightScaler_1 = require("./rendering/heightScaler");
79var selectableService_1 = require("./rowNodes/selectableService");
80var autoHeightCalculator_1 = require("./rendering/autoHeightCalculator");
81var paginationComp_1 = require("./rowModels/pagination/paginationComp");
82var Grid = (function () {
83 function Grid(eGridDiv, gridOptions, params) {
84 if (!eGridDiv) {
85 console.error('ag-Grid: no div element provided to the grid');
86 }
87 if (!gridOptions) {
88 console.error('ag-Grid: no gridOptions provided to the grid');
89 }
90 var rowModelClass = this.getRowModelClass(gridOptions);
91 var enterprise = utils_1.Utils.exists(Grid.enterpriseBeans);
92 var frameworkFactory = params ? params.frameworkFactory : null;
93 if (utils_1.Utils.missing(frameworkFactory)) {
94 frameworkFactory = new baseFrameworkFactory_1.BaseFrameworkFactory();
95 }
96 var overrideBeans = [];
97 if (Grid.enterpriseBeans) {
98 overrideBeans = overrideBeans.concat(Grid.enterpriseBeans);
99 }
100 if (Grid.frameworkBeans) {
101 overrideBeans = overrideBeans.concat(Grid.frameworkBeans);
102 }
103 var seed = {
104 enterprise: enterprise,
105 gridOptions: gridOptions,
106 eGridDiv: eGridDiv,
107 $scope: params ? params.$scope : null,
108 $compile: params ? params.$compile : null,
109 quickFilterOnScope: params ? params.quickFilterOnScope : null,
110 globalEventListener: params ? params.globalEventListener : null,
111 frameworkFactory: frameworkFactory
112 };
113 if (params && params.seedBeanInstances) {
114 utils_1.Utils.assign(seed, params.seedBeanInstances);
115 }
116 var components = [
117 { componentName: 'AgCheckbox', theClass: agCheckbox_1.AgCheckbox },
118 { componentName: 'AgGridComp', theClass: gridPanel_1.GridPanel },
119 { componentName: 'AgHeaderRoot', theClass: headerRootComp_1.HeaderRootComp },
120 { componentName: 'AgPagination', theClass: paginationComp_1.PaginationComp },
121 ];
122 if (Grid.enterpriseComponents) {
123 components = components.concat(Grid.enterpriseComponents);
124 }
125 var contextParams = {
126 overrideBeans: overrideBeans,
127 seed: seed,
128 //Careful with the order of the beans here, there are dependencies between them that need to be kept
129 beans: [rowModelClass, beans_1.Beans, paginationProxy_1.PaginationAutoPageSizeService, gridApi_1.GridApi, componentProvider_1.ComponentProvider, agComponentUtils_1.AgComponentUtils, componentMetadataProvider_1.ComponentMetadataProvider,
130 componentProvider_1.ComponentProvider, componentResolver_1.ComponentResolver, componentRecipes_1.ComponentRecipes, heightScaler_1.HeightScaler, autoHeightCalculator_1.AutoHeightCalculator,
131 cellRendererFactory_1.CellRendererFactory, horizontalResizeService_1.HorizontalResizeService, pinnedRowModel_1.PinnedRowModel, dragService_1.DragService,
132 displayedGroupCreator_1.DisplayedGroupCreator, eventService_1.EventService, gridOptionsWrapper_1.GridOptionsWrapper, selectionController_1.SelectionController,
133 filterManager_1.FilterManager, columnController_1.ColumnController, paginationProxy_1.PaginationProxy, rowRenderer_1.RowRenderer, expressionService_1.ExpressionService,
134 balancedColumnTreeBuilder_1.BalancedColumnTreeBuilder, csvCreator_1.CsvCreator, downloader_1.Downloader, xmlFactory_1.XmlFactory, gridSerializer_1.GridSerializer, templateService_1.TemplateService,
135 navigationService_1.NavigationService, popupService_1.PopupService, valueCache_1.ValueCache, valueService_1.ValueService, alignedGridsService_1.AlignedGridsService,
136 logger_1.LoggerFactory, columnUtils_1.ColumnUtils, autoWidthCalculator_1.AutoWidthCalculator, popupService_1.PopupService, gridCore_1.GridCore, standardMenu_1.StandardMenuFactory,
137 dragAndDropService_1.DragAndDropService, columnApi_1.ColumnApi, focusedCellController_1.FocusedCellController, mouseEventService_1.MouseEventService,
138 cellNavigationService_1.CellNavigationService, filterStage_1.FilterStage, sortStage_1.SortStage, flattenStage_1.FlattenStage, filterService_1.FilterService,
139 cellEditorFactory_1.CellEditorFactory, cellRendererService_1.CellRendererService, valueFormatterService_1.ValueFormatterService, stylingService_1.StylingService, scrollVisibleService_1.ScrollVisibleService,
140 columnHoverService_1.ColumnHoverService, columnAnimationService_1.ColumnAnimationService, sortService_1.SortService, selectableService_1.SelectableService, autoGroupColService_1.AutoGroupColService,
141 immutableService_1.ImmutableService, changeDetectionService_1.ChangeDetectionService, environment_1.Environment, animationFrameService_1.AnimationFrameService, sortController_1.SortController],
142 components: components,
143 debug: !!gridOptions.debug
144 };
145 var isLoggingFunc = function () { return contextParams.debug; };
146 this.context = new context_1.Context(contextParams, new logger_1.Logger('Context', isLoggingFunc));
147 this.setColumnsAndData();
148 this.dispatchGridReadyEvent(gridOptions);
149 if (gridOptions.debug) {
150 console.log('ag-Grid -> initialised successfully, enterprise = ' + enterprise);
151 }
152 }
153 Grid.setEnterpriseBeans = function (enterpriseBeans, rowModelClasses) {
154 this.enterpriseBeans = enterpriseBeans;
155 // the enterprise can inject additional row models. this is how it injects the viewportRowModel
156 utils_1.Utils.iterateObject(rowModelClasses, function (key, value) { return Grid.RowModelClasses[key] = value; });
157 };
158 Grid.setEnterpriseComponents = function (components) {
159 this.enterpriseComponents = components;
160 };
161 Grid.setFrameworkBeans = function (frameworkBeans) {
162 this.frameworkBeans = frameworkBeans;
163 };
164 Grid.prototype.setColumnsAndData = function () {
165 var gridOptionsWrapper = this.context.getBean('gridOptionsWrapper');
166 var columnController = this.context.getBean('columnController');
167 var rowModel = this.context.getBean('rowModel');
168 var columnDefs = gridOptionsWrapper.getColumnDefs();
169 var rowData = gridOptionsWrapper.getRowData();
170 var nothingToSet = utils_1.Utils.missing(columnDefs) && utils_1.Utils.missing(rowData);
171 if (nothingToSet) {
172 return;
173 }
174 if (utils_1.Utils.exists(columnDefs)) {
175 columnController.setColumnDefs(columnDefs, "gridInitializing");
176 }
177 if (utils_1.Utils.exists(rowData) && rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {
178 var clientSideRowModel = rowModel;
179 clientSideRowModel.setRowData(rowData);
180 }
181 };
182 Grid.prototype.dispatchGridReadyEvent = function (gridOptions) {
183 var eventService = this.context.getBean('eventService');
184 var readyEvent = {
185 type: events_1.Events.EVENT_GRID_READY,
186 api: gridOptions.api,
187 columnApi: gridOptions.columnApi
188 };
189 eventService.dispatchEvent(readyEvent);
190 };
191 Grid.prototype.getRowModelClass = function (gridOptions) {
192 var rowModelType = gridOptions.rowModelType;
193 //TODO: temporary measure before 'enterprise' is completely removed (similar handling in gridOptionsWrapper is also required)
194 rowModelType = rowModelType === 'enterprise' ? constants_1.Constants.ROW_MODEL_TYPE_SERVER_SIDE : rowModelType;
195 if (utils_1.Utils.exists(rowModelType)) {
196 var rowModelClass = Grid.RowModelClasses[rowModelType];
197 if (utils_1.Utils.exists(rowModelClass)) {
198 return rowModelClass;
199 }
200 else {
201 if (rowModelType === 'normal') {
202 console.warn("ag-Grid: normal rowModel deprecated. Should now be called client side row model instead.");
203 return clientSideRowModel_1.ClientSideRowModel;
204 }
205 console.error('ag-Grid: could not find matching row model for rowModelType ' + rowModelType);
206 if (rowModelType === constants_1.Constants.ROW_MODEL_TYPE_VIEWPORT) {
207 console.error('ag-Grid: rowModelType viewport is only available in ag-Grid Enterprise');
208 }
209 if (rowModelType === constants_1.Constants.ROW_MODEL_TYPE_SERVER_SIDE) {
210 console.error('ag-Grid: rowModelType server side is only available in ag-Grid Enterprise');
211 }
212 }
213 }
214 return clientSideRowModel_1.ClientSideRowModel;
215 };
216 ;
217 Grid.prototype.destroy = function () {
218 this.context.destroy();
219 };
220 // the default is ClientSideRowModel, which is also used for pagination.
221 // the enterprise adds viewport to this list.
222 Grid.RowModelClasses = {
223 infinite: infiniteRowModel_1.InfiniteRowModel,
224 clientSide: clientSideRowModel_1.ClientSideRowModel
225 };
226 return Grid;
227}());
228exports.Grid = Grid;