Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/devextreme/js/__internal/core/di/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export class DIContext {
return instance;
}

throw new Error('DI item is not registered');
throw new Error(`DI item is not registered: ${id}`);
}

public tryGet<T>(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/* eslint-disable spellcheck/spell-checker */
import { DIContext } from '@ts/core/di';
import { OptionsController as GridCoreOptionsController } from '@ts/grids/new/grid_core/options_controller/options_controller';

import { register } from './di';
import type { Options } from './options';
import { OptionsController } from './options_controller';
import { OptionsControllerMock } from './options_controller.mock';

export function getContext(config: Options): DIContext {
const diContext = new DIContext();
register(diContext);

const options = new OptionsControllerMock(config);
diContext.registerInstance(OptionsController, options);
diContext.registerInstance(OptionsControllerMock, options);
diContext.registerInstance(GridCoreOptionsController, options);

return diContext;
}
13 changes: 13 additions & 0 deletions packages/devextreme/js/__internal/grids/new/card_view/di.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/* eslint-disable spellcheck/spell-checker */
import type { DIContext } from '@ts/core/di';

import { register as gridCoreDIRegister } from '../grid_core/di';
import * as ContentViewModule from './content_view/index';
import { HeaderPanelView } from './header_panel/view';

export function register(diContext: DIContext): void {
gridCoreDIRegister(diContext);

diContext.register(ContentViewModule.View);
diContext.register(HeaderPanelView);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,46 +2,28 @@
import {
describe, expect, it, jest,
} from '@jest/globals';
import { HeaderFilterController } from '@ts/grids/new/grid_core/filtering/header_filter/index';
import { rerender } from 'inferno';

import { ColumnsController } from '../../grid_core/columns_controller';
import { DataController } from '../../grid_core/data_controller';
import { FilterController } from '../../grid_core/filtering';
import { Sortable } from '../../grid_core/inferno_wrappers/sortable';
import { SortingController } from '../../grid_core/sorting_controller';
import { getContext } from '../di.test_utils';
import type { Options } from '../options';
import { OptionsControllerMock } from '../options_controller.mock';
import { HeaderPanelView } from './view';

const setup = (options: Options) => {
const setup = (config: Options) => {
const rootElement = document.createElement('div');
rootElement.classList.add('test-container');

const optionsController = new OptionsControllerMock(options);
const filterController = new FilterController(optionsController);
const columnsController = new ColumnsController(optionsController);
const sortingController = new SortingController(optionsController, columnsController);
const dataController = new DataController(optionsController, sortingController, filterController);
const headerFilterController = new HeaderFilterController(
optionsController,
dataController,
columnsController,
);
const headerPanelView = new HeaderPanelView(
sortingController,
columnsController,
optionsController,
headerFilterController,
);
const context = getContext(config);

const optionsController = context.get(OptionsControllerMock);
const headerPanelView = context.get(HeaderPanelView);

headerPanelView.render(rootElement);
rerender();

return {
optionsController,
dataController,
columnsController,
headerPanelView,
rootElement,
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { OptionsController as OptionsControllerBase } from '@ts/grids/new/grid_c
import { GridCoreNew } from '@ts/grids/new/grid_core/widget';

import * as ContentViewModule from './content_view/index';
import * as di from './di';
import { HeaderPanelView } from './header_panel/view';
import { MainView } from './main_view';
import { defaultOptions } from './options';
Expand All @@ -21,8 +22,7 @@ export class CardViewBase extends GridCoreNew {
protected _registerDIContext(): void {
super._registerDIContext();

this.diContext.register(ContentViewModule.View);
this.diContext.register(HeaderPanelView);
di.register(this.diContext);
this.diContext.register(MainViewBase, MainView);

const optionsController = new OptionsController(this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,19 @@ import { describe, expect, it } from '@jest/globals';
import type { SelectionChangedEvent } from '@js/ui/tree_view';

import { ColumnsController } from '../columns_controller';
import { getContext } from '../di.test_utils';
import type { Options } from '../options';
import { OptionsControllerMock } from '../options_controller/options_controller.mock';
import { ColumnChooserController } from './controller';
import { expectColumnVisibility } from './test-utils';

const createColumnChooserController = (options?: Options): {
controller: ColumnChooserController;
columnsController: ColumnsController;
optionsController: OptionsControllerMock;
} => {
const optionsController = new OptionsControllerMock(options ?? {
columnChooser: {
enabled: true,
},
});
const columnsController = new ColumnsController(optionsController);

const columnChooserController = new ColumnChooserController(columnsController, optionsController);
const setup = (options: Options) => {
const context = getContext(options);

return {
controller: columnChooserController,
columnsController,
optionsController,
controller: context.get(ColumnChooserController),
columnsController: context.get(ColumnsController),
optionsController: context.get(OptionsControllerMock),
};
};

Expand All @@ -44,7 +34,7 @@ describe('ColumnChooser', () => {
};

it('is correct', () => {
const { controller } = createColumnChooserController({
const { controller } = setup({
columns: [
{ dataField: 'A Column' },
{ dataField: 'B Column' },
Expand All @@ -55,7 +45,7 @@ describe('ColumnChooser', () => {
});

it('is correct when a column has showInColumnChooser=false', () => {
const { controller } = createColumnChooserController({
const { controller } = setup({
columns: [
{ dataField: 'A Column' },
{ dataField: 'B Column', showInColumnChooser: false },
Expand All @@ -67,7 +57,7 @@ describe('ColumnChooser', () => {
});

it('is correct when sortOrder is set', () => {
const { controller, optionsController } = createColumnChooserController({
const { controller, optionsController } = setup({
columns: [
{ dataField: 'C Column' },
{ dataField: 'A Column' },
Expand All @@ -88,7 +78,7 @@ describe('ColumnChooser', () => {

describe('items state', () => {
it('is correct', () => {
const { controller } = createColumnChooserController({
const { controller } = setup({
columns: [
{ dataField: 'A Column' },
{ dataField: 'B Column', caption: 'B Caption' },
Expand All @@ -108,7 +98,7 @@ describe('ColumnChooser', () => {
});

it('updated when column option changed on select mode', () => {
const { columnsController, controller } = createColumnChooserController({
const { columnsController, controller } = setup({
columns: ['Column 1', 'Column 2', 'Column 3', 'Column 4', 'Column 5'],
columnChooser: {
enabled: true,
Expand Down Expand Up @@ -155,7 +145,7 @@ describe('ColumnChooser', () => {
});

it('onSelectionChanged', () => {
const { controller, columnsController } = createColumnChooserController({
const { controller, columnsController } = setup({
columns: [
{ dataField: 'A Column' },
{ dataField: 'B Column' },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,9 @@ import DataSource from '@js/data/data_source';
import { logger } from '@ts/core/utils/m_console';
import ArrayStore from '@ts/data/m_array_store';

import { ColumnsController } from '../columns_controller';
import { FilterController } from '../filtering';
import { getContext } from '../di.test_utils';
import type { Options } from '../options';
import { OptionsControllerMock } from '../options_controller/options_controller.mock';
import { SortingController } from '../sorting_controller';
import { DataController } from './data_controller';

beforeAll(() => {
Expand All @@ -24,15 +22,11 @@ afterAll(() => {
});

const setup = (options: Options) => {
const optionsController = new OptionsControllerMock(options);
const filterController = new FilterController(optionsController);
const columnsController = new ColumnsController(optionsController);
const sortingController = new SortingController(optionsController, columnsController);
const dataController = new DataController(optionsController, sortingController, filterController);
const context = getContext(options);

return {
optionsController,
dataController,
optionsController: context.get(OptionsControllerMock),
dataController: context.get(DataController),
};
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,17 @@ import {
} from '@jest/globals';
import ArrayStore from '@ts/data/m_array_store';

import { ColumnsController } from '../columns_controller';
import { FilterController } from '../filtering';
import { getContext } from '../di.test_utils';
import type { Options } from '../options';
import { OptionsControllerMock } from '../options_controller/options_controller.mock';
import { SortingController } from '../sorting_controller';
import { DataController } from './data_controller';
import { PublicMethods } from './public_methods';

const setup = (options: Options) => {
const optionsController = new OptionsControllerMock(options);
const filterController = new FilterController(optionsController);
const columnsController = new ColumnsController(optionsController);
const sortingController = new SortingController(optionsController, columnsController);
const dataController = new DataController(optionsController, sortingController, filterController);
const context = getContext(options);

const optionsController = context.get(OptionsControllerMock);
const dataController = context.get(DataController);

// @ts-expect-error
const gridCore = new (PublicMethods(class {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/* eslint-disable spellcheck/spell-checker */
import { DIContext } from '@ts/core/di';

import { register } from './di';
import type { Options } from './options';
import { OptionsController } from './options_controller/options_controller';
import { OptionsControllerMock } from './options_controller/options_controller.mock';

export function getContext(config: Options): DIContext {
const diContext = new DIContext();
register(diContext);

const options = new OptionsControllerMock(config);
diContext.registerInstance(OptionsController, options);
diContext.registerInstance(OptionsControllerMock, options);

return diContext;
}
44 changes: 44 additions & 0 deletions packages/devextreme/js/__internal/grids/new/grid_core/di.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/* eslint-disable spellcheck/spell-checker */
import type { DIContext } from '@ts/core/di/index';
import { SearchView } from '@ts/grids/new/grid_core/search/view';

import * as ColumnChooserModule from './column_chooser/index';
import * as ColumnsControllerModule from './columns_controller/index';
import * as DataControllerModule from './data_controller/index';
import { ErrorController } from './error_controller/error_controller';
import { FilterPanelView } from './filtering/filter_panel/view';
import {
HeaderFilterController,
HeaderFilterPopupView,
} from './filtering/header_filter/index';
import * as FilterControllerModule from './filtering/index';
import { ItemsController } from './items_controller/items_controller';
import { PagerView } from './pager/view';
import { SearchController } from './search/controller';
import * as SelectionControllerModule from './selection/index';
import * as SortingControllerModule from './sorting_controller/index';
import { ToolbarController } from './toolbar/controller';
import { ToolbarView } from './toolbar/view';

export function register(diContext: DIContext): void {
diContext.register(DataControllerModule.DataController);
diContext.register(DataControllerModule.CompatibilityDataController);
diContext.register(ItemsController);
diContext.register(ColumnsControllerModule.ColumnsController);
diContext.register(SelectionControllerModule.Controller);
diContext.register(ColumnsControllerModule.CompatibilityColumnsController);
diContext.register(SortingControllerModule.SortingController);
diContext.register(ToolbarController);
diContext.register(ToolbarView);
diContext.register(PagerView);
diContext.register(SearchController);
diContext.register(SearchView);
diContext.register(ColumnChooserModule.ColumnChooserController);
diContext.register(ColumnChooserModule.ColumnChooserView);
diContext.register(FilterControllerModule.FilterController);
diContext.register(FilterControllerModule.FilterPanelView);
diContext.register(FilterPanelView);
diContext.register(HeaderFilterController);
diContext.register(HeaderFilterPopupView);
diContext.register(ErrorController);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,17 @@
import { describe, expect, it } from '@jest/globals';
import { ColumnsController } from '@ts/grids/new/grid_core/columns_controller';
import type { Column } from '@ts/grids/new/grid_core/columns_controller/types';
import { DataController } from '@ts/grids/new/grid_core/data_controller';
import { FilterController } from '@ts/grids/new/grid_core/filtering';
import { HeaderFilterController } from '@ts/grids/new/grid_core/filtering/header_filter/controller';
import type { HeaderFilterColumnOptions } from '@ts/grids/new/grid_core/filtering/header_filter/types';
import type { Options } from '@ts/grids/new/grid_core/options';
import { OptionsControllerMock } from '@ts/grids/new/grid_core/options_controller/options_controller.mock';

import { SortingController } from '../../sorting_controller/sorting_controller';

const setup = (config: Options = {}) => {
const options = new OptionsControllerMock(config);
const filterController = new FilterController(options);
const columnsController = new ColumnsController(options);
const sortingController = new SortingController(options, columnsController);
const dataController = new DataController(options, sortingController, filterController);
const headerFilterController = new HeaderFilterController(
options,
dataController,
columnsController,
);

import { getContext } from '../../di.test_utils';

const setup = (options = {}) => {
const context = getContext(options);

return {
headerFilterController,
columnsController,
headerFilterController: context.get(HeaderFilterController),
columnsController: context.get(ColumnsController),
};
};

Expand Down
Loading
Loading