angular-slickgrid 9.0.0 → 9.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/{dist/fesm2022 → fesm2022}/angular-slickgrid.mjs +16 -16
- package/package.json +27 -14
- package/.gitbook.yaml +0 -5
- package/CHANGELOG.md +0 -1691
- package/CONTRIBUTING.md +0 -17
- package/angular.json +0 -133
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/clover.xml +0 -1620
- package/coverage/coverage-final.json +0 -9
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -176
- package/coverage/library/components/angular-slickgrid.component.ts.html +0 -5074
- package/coverage/library/components/index.html +0 -116
- package/coverage/library/constants.ts.html +0 -397
- package/coverage/library/extensions/index.html +0 -116
- package/coverage/library/extensions/slickRowDetailView.ts.html +0 -1261
- package/coverage/library/index.html +0 -116
- package/coverage/library/modules/angular-slickgrid.module.ts.html +0 -166
- package/coverage/library/modules/index.html +0 -116
- package/coverage/library/services/angularUtil.service.ts.html +0 -445
- package/coverage/library/services/container.service.ts.html +0 -163
- package/coverage/library/services/index.html +0 -161
- package/coverage/library/services/translater.service.ts.html +0 -199
- package/coverage/library/services/utilities.ts.html +0 -142
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -196
- package/dist/LICENSE +0 -21
- package/dist/README.md +0 -142
- package/docs/README.md +0 -5
- package/docs/TOC.md +0 -105
- package/docs/backend-services/Custom-Backend-Service.md +0 -50
- package/docs/backend-services/GraphQL.md +0 -276
- package/docs/backend-services/OData.md +0 -245
- package/docs/backend-services/graphql/GraphQL-Filtering.md +0 -156
- package/docs/backend-services/graphql/GraphQL-JSON-Result.md +0 -85
- package/docs/backend-services/graphql/GraphQL-Pagination.md +0 -77
- package/docs/backend-services/graphql/GraphQL-Sorting.md +0 -78
- package/docs/column-functionalities/cell-menu.md +0 -212
- package/docs/column-functionalities/editors/autocomplete-editor.md +0 -466
- package/docs/column-functionalities/editors/date-editor-flatpickr.md +0 -71
- package/docs/column-functionalities/editors/date-editor-vanilla-calendar.md +0 -91
- package/docs/column-functionalities/editors/longtext-editor-textarea.md +0 -80
- package/docs/column-functionalities/editors/select-dropdown-editor.md +0 -227
- package/docs/column-functionalities/editors.md +0 -604
- package/docs/column-functionalities/filters/autocomplete-filter.md +0 -183
- package/docs/column-functionalities/filters/compound-filters.md +0 -234
- package/docs/column-functionalities/filters/custom-filter.md +0 -117
- package/docs/column-functionalities/filters/filter-intro.md +0 -81
- package/docs/column-functionalities/filters/input-filter.md +0 -260
- package/docs/column-functionalities/filters/range-filters.md +0 -188
- package/docs/column-functionalities/filters/select-filter.md +0 -695
- package/docs/column-functionalities/filters/single-search-filter.md +0 -77
- package/docs/column-functionalities/filters/styling-filled-filters.md +0 -45
- package/docs/column-functionalities/formatters.md +0 -325
- package/docs/column-functionalities/sorting.md +0 -200
- package/docs/developer-guides/csp-compliance.md +0 -64
- package/docs/events/Available-Events.md +0 -223
- package/docs/events/Grid-&-DataView-Events.md +0 -211
- package/docs/getting-started/quick-start.md +0 -230
- package/docs/getting-started/troubleshooting.md +0 -80
- package/docs/grid-functionalities/Column-Picker.md +0 -22
- package/docs/grid-functionalities/Composite-Editor-Modal.md +0 -627
- package/docs/grid-functionalities/Context-Menu.md +0 -226
- package/docs/grid-functionalities/Custom-Footer.md +0 -80
- package/docs/grid-functionalities/Custom-Tooltip-(plugin).md +0 -258
- package/docs/grid-functionalities/Export-to-Excel.md +0 -457
- package/docs/grid-functionalities/Export-to-Text-File.md +0 -165
- package/docs/grid-functionalities/FAQ.md +0 -53
- package/docs/grid-functionalities/Global-Options.md +0 -29
- package/docs/grid-functionalities/Grid-Auto-Resize.md +0 -218
- package/docs/grid-functionalities/Grid-Menu.md +0 -134
- package/docs/grid-functionalities/Grid-State-&-Preset.md +0 -245
- package/docs/grid-functionalities/Header-Menu-&-Header-Buttons.md +0 -125
- package/docs/grid-functionalities/Resize-by-Cell-Content.md +0 -138
- package/docs/grid-functionalities/Row-Selection.md +0 -247
- package/docs/grid-functionalities/Row-based-edit.md +0 -71
- package/docs/grid-functionalities/add-update-highlight.md +0 -258
- package/docs/grid-functionalities/column-row-spanning.md +0 -74
- package/docs/grid-functionalities/dynamic-item-metadata.md +0 -124
- package/docs/grid-functionalities/excel-copy-buffer.md +0 -145
- package/docs/grid-functionalities/frozen-columns-rows.md +0 -164
- package/docs/grid-functionalities/grouping-and-aggregators.md +0 -269
- package/docs/grid-functionalities/header-footer-slots.md +0 -22
- package/docs/grid-functionalities/infinite-scroll.md +0 -150
- package/docs/grid-functionalities/providing-grid-data.md +0 -61
- package/docs/grid-functionalities/row-detail.md +0 -530
- package/docs/grid-functionalities/tree-data-grid.md +0 -391
- package/docs/localization/Localization---Component-Sample.md +0 -87
- package/docs/localization/Localization-with-Custom-Locales.md +0 -66
- package/docs/localization/Localization-with-ngx-translate.md +0 -148
- package/docs/migrations/migration-to-2.x.md +0 -304
- package/docs/migrations/migration-to-3.x.md +0 -295
- package/docs/migrations/migration-to-4.x.md +0 -83
- package/docs/migrations/migration-to-5.x.md +0 -160
- package/docs/migrations/migration-to-6.x.md +0 -128
- package/docs/migrations/migration-to-7.x.md +0 -294
- package/docs/migrations/migration-to-8.x.md +0 -316
- package/docs/migrations/migration-to-9.x.md +0 -219
- package/docs/slick-grid-dataview-objects/slickgrid-dataview-objects.md +0 -79
- package/docs/styling/dark-mode.md +0 -100
- package/docs/styling/styling.md +0 -250
- package/docs/testing/testing-patterns.md +0 -73
- package/eslint.config.mjs +0 -60
- package/ng-package.json +0 -10
- package/src/assets/angular-logo.png +0 -0
- package/src/assets/angular-logo2.png +0 -0
- package/src/assets/data/collection_100_numbers.json +0 -12
- package/src/assets/data/collection_500_numbers.json +0 -52
- package/src/assets/data/countries.json +0 -245
- package/src/assets/data/country_names.json +0 -245
- package/src/assets/data/customers_100.json +0 -102
- package/src/assets/data/users.csv +0 -5
- package/src/assets/i18n/en.json +0 -102
- package/src/assets/i18n/fr.json +0 -103
- package/src/demos/app-routing.module.ts +0 -108
- package/src/demos/app.component.html +0 -187
- package/src/demos/app.component.scss +0 -79
- package/src/demos/app.component.ts +0 -11
- package/src/demos/app.module.ts +0 -196
- package/src/demos/environments/environment.dev.ts +0 -3
- package/src/demos/environments/environment.prod.ts +0 -3
- package/src/demos/environments/environment.ts +0 -8
- package/src/demos/examples/custom-angularComponentEditor.ts +0 -187
- package/src/demos/examples/custom-angularComponentFilter.ts +0 -123
- package/src/demos/examples/custom-buttonFormatter.component.ts +0 -13
- package/src/demos/examples/custom-inputEditor.ts +0 -132
- package/src/demos/examples/custom-inputFilter.ts +0 -134
- package/src/demos/examples/custom-titleFormatter.component.ts +0 -9
- package/src/demos/examples/data/collection_100_numbers.json +0 -12
- package/src/demos/examples/data/collection_500_numbers.json +0 -52
- package/src/demos/examples/data/countries.json +0 -245
- package/src/demos/examples/data/country_names.json +0 -245
- package/src/demos/examples/data/customers_100.json +0 -102
- package/src/demos/examples/data/users.csv +0 -5
- package/src/demos/examples/editor-ng-select.component.ts +0 -38
- package/src/demos/examples/example01.component.html +0 -48
- package/src/demos/examples/example01.component.ts +0 -109
- package/src/demos/examples/example02.component.html +0 -45
- package/src/demos/examples/example02.component.ts +0 -218
- package/src/demos/examples/example03.component.html +0 -118
- package/src/demos/examples/example03.component.ts +0 -694
- package/src/demos/examples/example04.component.html +0 -87
- package/src/demos/examples/example04.component.ts +0 -326
- package/src/demos/examples/example05.component.html +0 -151
- package/src/demos/examples/example05.component.ts +0 -474
- package/src/demos/examples/example06.component.html +0 -163
- package/src/demos/examples/example06.component.ts +0 -446
- package/src/demos/examples/example07.component.html +0 -56
- package/src/demos/examples/example07.component.scss +0 -10
- package/src/demos/examples/example07.component.ts +0 -216
- package/src/demos/examples/example08.component.html +0 -51
- package/src/demos/examples/example08.component.scss +0 -23
- package/src/demos/examples/example08.component.ts +0 -195
- package/src/demos/examples/example09.component.html +0 -55
- package/src/demos/examples/example09.component.scss +0 -22
- package/src/demos/examples/example09.component.ts +0 -302
- package/src/demos/examples/example10.component.html +0 -103
- package/src/demos/examples/example10.component.ts +0 -309
- package/src/demos/examples/example11.component.html +0 -91
- package/src/demos/examples/example11.component.ts +0 -276
- package/src/demos/examples/example12.component.html +0 -98
- package/src/demos/examples/example12.component.ts +0 -317
- package/src/demos/examples/example13.component.html +0 -96
- package/src/demos/examples/example13.component.ts +0 -370
- package/src/demos/examples/example14.component.html +0 -50
- package/src/demos/examples/example14.component.scss +0 -11
- package/src/demos/examples/example14.component.ts +0 -156
- package/src/demos/examples/example15.component.html +0 -56
- package/src/demos/examples/example15.component.ts +0 -304
- package/src/demos/examples/example16.component.html +0 -77
- package/src/demos/examples/example16.component.ts +0 -277
- package/src/demos/examples/example17.component.html +0 -50
- package/src/demos/examples/example17.component.ts +0 -109
- package/src/demos/examples/example18.component.html +0 -132
- package/src/demos/examples/example18.component.ts +0 -445
- package/src/demos/examples/example19-rowdetail.component.html +0 -40
- package/src/demos/examples/example19-rowdetail.component.ts +0 -54
- package/src/demos/examples/example19.component.html +0 -79
- package/src/demos/examples/example19.component.ts +0 -316
- package/src/demos/examples/example20.component.html +0 -76
- package/src/demos/examples/example20.component.scss +0 -11
- package/src/demos/examples/example20.component.ts +0 -341
- package/src/demos/examples/example21.component.html +0 -86
- package/src/demos/examples/example21.component.scss +0 -16
- package/src/demos/examples/example21.component.ts +0 -140
- package/src/demos/examples/example22.component.html +0 -41
- package/src/demos/examples/example22.component.ts +0 -117
- package/src/demos/examples/example23.component.html +0 -111
- package/src/demos/examples/example23.component.ts +0 -323
- package/src/demos/examples/example24.component.html +0 -120
- package/src/demos/examples/example24.component.scss +0 -62
- package/src/demos/examples/example24.component.ts +0 -641
- package/src/demos/examples/example25.component.html +0 -60
- package/src/demos/examples/example25.component.scss +0 -8
- package/src/demos/examples/example25.component.ts +0 -255
- package/src/demos/examples/example26.component.html +0 -98
- package/src/demos/examples/example26.component.scss +0 -42
- package/src/demos/examples/example26.component.ts +0 -383
- package/src/demos/examples/example27.component.html +0 -138
- package/src/demos/examples/example27.component.scss +0 -10
- package/src/demos/examples/example27.component.ts +0 -369
- package/src/demos/examples/example28.component.html +0 -143
- package/src/demos/examples/example28.component.scss +0 -54
- package/src/demos/examples/example28.component.ts +0 -453
- package/src/demos/examples/example29.component.html +0 -30
- package/src/demos/examples/example29.component.ts +0 -70
- package/src/demos/examples/example30.component.html +0 -116
- package/src/demos/examples/example30.component.scss +0 -20
- package/src/demos/examples/example30.component.ts +0 -1070
- package/src/demos/examples/example32.component.html +0 -77
- package/src/demos/examples/example32.component.scss +0 -8
- package/src/demos/examples/example32.component.ts +0 -905
- package/src/demos/examples/example33.component.html +0 -50
- package/src/demos/examples/example33.component.scss +0 -46
- package/src/demos/examples/example33.component.ts +0 -571
- package/src/demos/examples/example34.component.html +0 -82
- package/src/demos/examples/example34.component.scss +0 -77
- package/src/demos/examples/example34.component.ts +0 -434
- package/src/demos/examples/example35.component.html +0 -77
- package/src/demos/examples/example35.component.scss +0 -18
- package/src/demos/examples/example35.component.ts +0 -264
- package/src/demos/examples/example36.component.html +0 -56
- package/src/demos/examples/example36.component.scss +0 -26
- package/src/demos/examples/example36.component.ts +0 -504
- package/src/demos/examples/example37.component.html +0 -30
- package/src/demos/examples/example37.component.ts +0 -123
- package/src/demos/examples/example38.component.html +0 -104
- package/src/demos/examples/example38.component.scss +0 -8
- package/src/demos/examples/example38.component.ts +0 -420
- package/src/demos/examples/example39.component.html +0 -112
- package/src/demos/examples/example39.component.scss +0 -8
- package/src/demos/examples/example39.component.ts +0 -371
- package/src/demos/examples/example40.component.html +0 -76
- package/src/demos/examples/example40.component.ts +0 -226
- package/src/demos/examples/example41.component.html +0 -50
- package/src/demos/examples/example41.component.scss +0 -42
- package/src/demos/examples/example41.component.ts +0 -229
- package/src/demos/examples/example42.component.html +0 -47
- package/src/demos/examples/example42.component.ts +0 -203
- package/src/demos/examples/example43.component.html +0 -94
- package/src/demos/examples/example43.component.scss +0 -30
- package/src/demos/examples/example43.component.ts +0 -449
- package/src/demos/examples/example44.component.html +0 -78
- package/src/demos/examples/example44.component.scss +0 -50
- package/src/demos/examples/example44.component.ts +0 -375
- package/src/demos/examples/example45-detail.component.html +0 -15
- package/src/demos/examples/example45-detail.component.ts +0 -97
- package/src/demos/examples/example45.component.html +0 -110
- package/src/demos/examples/example45.component.scss +0 -50
- package/src/demos/examples/example45.component.ts +0 -243
- package/src/demos/examples/filter-ng-select.component.ts +0 -33
- package/src/demos/examples/grid-custom-pager.component.html +0 -60
- package/src/demos/examples/grid-custom-pager.component.scss +0 -57
- package/src/demos/examples/grid-custom-pager.component.ts +0 -107
- package/src/demos/examples/grid-remote.component.html +0 -44
- package/src/demos/examples/grid-remote.component.ts +0 -164
- package/src/demos/examples/home.component.html +0 -39
- package/src/demos/examples/home.component.ts +0 -10
- package/src/demos/examples/jsonp.ts +0 -89
- package/src/demos/examples/rowdetail-preload.component.ts +0 -10
- package/src/demos/examples/swt-common-grid-pagination.component.ts +0 -160
- package/src/demos/examples/swt-common-grid-test.component.html +0 -37
- package/src/demos/examples/swt-common-grid-test.component.ts +0 -214
- package/src/demos/examples/swt-common-grid.component.ts +0 -436
- package/src/demos/examples/swt-logger.service.ts +0 -173
- package/src/demos/examples/utilities.ts +0 -9
- package/src/favicon.ico +0 -0
- package/src/index.html +0 -17
- package/src/library/components/__tests__/angular-slickgrid.component.spec.ts +0 -2638
- package/src/library/components/angular-slickgrid.component.html +0 -5
- package/src/library/components/angular-slickgrid.component.ts +0 -1662
- package/src/library/constants.ts +0 -105
- package/src/library/extensions/__tests__/slickRowDetailView.spec.ts +0 -751
- package/src/library/extensions/index.ts +0 -1
- package/src/library/extensions/slickRowDetailView.ts +0 -395
- package/src/library/global-grid-options.ts +0 -273
- package/src/library/index.ts +0 -11
- package/src/library/models/angularComponentOutput.interface.ts +0 -6
- package/src/library/models/angularGridInstance.interface.ts +0 -76
- package/src/library/models/externalTestingDependencies.interface.ts +0 -37
- package/src/library/models/gridOption.interface.ts +0 -15
- package/src/library/models/index.ts +0 -5
- package/src/library/models/rowDetailView.interface.ts +0 -16
- package/src/library/modules/angular-slickgrid.module.spec.ts +0 -25
- package/src/library/modules/angular-slickgrid.module.ts +0 -27
- package/src/library/services/__tests__/angularUtilService.spec.ts +0 -156
- package/src/library/services/__tests__/container.service.spec.ts +0 -25
- package/src/library/services/__tests__/translater.service.spec.ts +0 -43
- package/src/library/services/__tests__/utilities.spec.ts +0 -22
- package/src/library/services/angularUtil.service.ts +0 -120
- package/src/library/services/container.service.ts +0 -26
- package/src/library/services/index.ts +0 -4
- package/src/library/services/translater.service.ts +0 -38
- package/src/library/services/utilities.ts +0 -19
- package/src/library/slickgrid-config.ts +0 -10
- package/src/main.ts +0 -13
- package/src/public_api.ts +0 -1
- package/src/styles.scss +0 -178
- package/test/cypress/e2e/example01.cy.ts +0 -367
- package/test/cypress/e2e/example02.cy.ts +0 -60
- package/test/cypress/e2e/example03.cy.ts +0 -268
- package/test/cypress/e2e/example04.cy.ts +0 -254
- package/test/cypress/e2e/example05.cy.ts +0 -804
- package/test/cypress/e2e/example06.cy.ts +0 -890
- package/test/cypress/e2e/example07.cy.ts +0 -384
- package/test/cypress/e2e/example08.cy.ts +0 -190
- package/test/cypress/e2e/example09.cy.ts +0 -392
- package/test/cypress/e2e/example10.cy.ts +0 -650
- package/test/cypress/e2e/example11.cy.ts +0 -86
- package/test/cypress/e2e/example12.cy.ts +0 -269
- package/test/cypress/e2e/example13.cy.ts +0 -246
- package/test/cypress/e2e/example14.cy.ts +0 -122
- package/test/cypress/e2e/example15.cy.ts +0 -598
- package/test/cypress/e2e/example16.cy.ts +0 -427
- package/test/cypress/e2e/example17.cy.ts +0 -83
- package/test/cypress/e2e/example18.cy.ts +0 -431
- package/test/cypress/e2e/example19.cy.ts +0 -263
- package/test/cypress/e2e/example20.cy.ts +0 -264
- package/test/cypress/e2e/example21.cy.ts +0 -77
- package/test/cypress/e2e/example22.cy.ts +0 -94
- package/test/cypress/e2e/example23.cy.ts +0 -259
- package/test/cypress/e2e/example24.cy.ts +0 -707
- package/test/cypress/e2e/example25.cy.ts +0 -193
- package/test/cypress/e2e/example26.cy.ts +0 -111
- package/test/cypress/e2e/example27.cy.ts +0 -261
- package/test/cypress/e2e/example28.cy.ts +0 -740
- package/test/cypress/e2e/example29.cy.ts +0 -30
- package/test/cypress/e2e/example30.cy.ts +0 -757
- package/test/cypress/e2e/example31.cy.ts +0 -69
- package/test/cypress/e2e/example32.cy.ts +0 -272
- package/test/cypress/e2e/example33.cy.ts +0 -278
- package/test/cypress/e2e/example34.cy.ts +0 -84
- package/test/cypress/e2e/example35.cy.ts +0 -178
- package/test/cypress/e2e/example36.cy.ts +0 -219
- package/test/cypress/e2e/example37.cy.ts +0 -52
- package/test/cypress/e2e/example38.cy.ts +0 -160
- package/test/cypress/e2e/example39.cy.ts +0 -150
- package/test/cypress/e2e/example40.cy.ts +0 -126
- package/test/cypress/e2e/example41.cy.ts +0 -90
- package/test/cypress/e2e/example42.cy.ts +0 -82
- package/test/cypress/e2e/example43.cy.ts +0 -482
- package/test/cypress/e2e/example44.cy.ts +0 -458
- package/test/cypress/e2e/example45.cy.ts +0 -455
- package/test/cypress/e2e/home.cy.ts +0 -7
- package/test/cypress/fixtures/example.json +0 -5
- package/test/cypress/plugins/index.ts +0 -17
- package/test/cypress/plugins/utilities.ts +0 -28
- package/test/cypress/support/commands.ts +0 -88
- package/test/cypress/support/common.ts +0 -47
- package/test/cypress/support/drag.ts +0 -101
- package/test/cypress/support/index.ts +0 -20
- package/test/cypress/tsconfig.json +0 -9
- package/test/cypress.config.ts +0 -34
- package/test/mockSlickEvent.ts +0 -77
- package/test/rxjsResourceStub.ts +0 -69
- package/test/test-setup.ts +0 -6
- package/test/translateServiceStub.ts +0 -230
- package/test/translaterServiceStub.ts +0 -239
- package/test/tsconfig.json +0 -17
- package/test/vitest-global-mocks.ts +0 -41
- package/test/vitest-global-setup.ts +0 -3
- package/test/vitest-pretest.ts +0 -5
- package/tsconfig.app.json +0 -14
- package/tsconfig.json +0 -31
- package/tsconfig.spec.json +0 -11
- package/types/sortablejs.d.ts +0 -4
- package/vite.config.mts +0 -51
- /package/{dist/fesm2022 → fesm2022}/angular-slickgrid.mjs.map +0 -0
- /package/{dist/i18n → i18n}/en.json +0 -0
- /package/{dist/i18n → i18n}/fr.json +0 -0
- /package/{dist/index.d.ts → index.d.ts} +0 -0
- /package/{dist/library → library}/components/angular-slickgrid.component.d.ts +0 -0
- /package/{dist/library → library}/constants.d.ts +0 -0
- /package/{dist/library → library}/extensions/index.d.ts +0 -0
- /package/{dist/library → library}/extensions/slickRowDetailView.d.ts +0 -0
- /package/{dist/library → library}/global-grid-options.d.ts +0 -0
- /package/{dist/library → library}/index.d.ts +0 -0
- /package/{dist/library → library}/models/angularComponentOutput.interface.d.ts +0 -0
- /package/{dist/library → library}/models/angularGridInstance.interface.d.ts +0 -0
- /package/{dist/library → library}/models/externalTestingDependencies.interface.d.ts +0 -0
- /package/{dist/library → library}/models/gridOption.interface.d.ts +0 -0
- /package/{dist/library → library}/models/index.d.ts +0 -0
- /package/{dist/library → library}/models/rowDetailView.interface.d.ts +0 -0
- /package/{dist/library → library}/modules/angular-slickgrid.module.d.ts +0 -0
- /package/{dist/library → library}/services/angularUtil.service.d.ts +0 -0
- /package/{dist/library → library}/services/container.service.d.ts +0 -0
- /package/{dist/library → library}/services/index.d.ts +0 -0
- /package/{dist/library → library}/services/translater.service.d.ts +0 -0
- /package/{dist/library → library}/services/utilities.d.ts +0 -0
- /package/{dist/library → library}/slickgrid-config.d.ts +0 -0
- /package/{dist/public_api.d.ts → public_api.d.ts} +0 -0
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
<div id="demo-container" class="container-fluid">
|
|
2
|
-
<h2>
|
|
3
|
-
Example 4: Client Side Sort/Filter
|
|
4
|
-
<span class="float-end">
|
|
5
|
-
<a
|
|
6
|
-
style="font-size: 18px"
|
|
7
|
-
target="_blank"
|
|
8
|
-
href="https://github.com/ghiscoding/slickgrid-universal/blob/master/frameworks/angular-slickgrid/src/demos/examples/grid-clientside.component.ts"
|
|
9
|
-
>
|
|
10
|
-
<span class="mdi mdi-link-variant"></span> code
|
|
11
|
-
</a>
|
|
12
|
-
</span>
|
|
13
|
-
</h2>
|
|
14
|
-
<div class="subtitle">
|
|
15
|
-
Sort/Filter on client side only using SlickGrid DataView (<a
|
|
16
|
-
href="https://ghiscoding.gitbook.io/angular-slickgrid/column-functionalities/sorting"
|
|
17
|
-
target="_blank"
|
|
18
|
-
>Wiki docs</a
|
|
19
|
-
>)
|
|
20
|
-
<br />
|
|
21
|
-
<ul class="small">
|
|
22
|
-
<li>Support multi-sort (by default), hold "Shift" key and click on the next column to sort.</li>
|
|
23
|
-
<li>All column types support the following operators: (>, >=, <, <=, <>, !=, =, ==, *)</li>
|
|
24
|
-
<ul>
|
|
25
|
-
<li>Example: >100 ... >=2001-01-01 ... >02/28/17</li>
|
|
26
|
-
<li>
|
|
27
|
-
<b>Note:</b> For filters to work properly (default is string), make sure to provide a FieldType (type is against the dataset, not
|
|
28
|
-
the Formatter)
|
|
29
|
-
</li>
|
|
30
|
-
</ul>
|
|
31
|
-
<li>Date Filters</li>
|
|
32
|
-
<ul>
|
|
33
|
-
<li>
|
|
34
|
-
FieldType of dateUtc/date (from dataset) can use an extra option of "filterSearchType" to let user filter more easily. For
|
|
35
|
-
example, in the "UTC Date" field below, you can type ">02/28/2017", also when dealing with UTC you have to take the time
|
|
36
|
-
difference in consideration.
|
|
37
|
-
</li>
|
|
38
|
-
</ul>
|
|
39
|
-
<li>On String filters, (*) can be used as startsWith (Hello* => matches "Hello Word") ... endsWith (*Doe => matches: "John Doe")</li>
|
|
40
|
-
<li>
|
|
41
|
-
Custom Filter are now possible, "Description" column below, is a customized InputFilter with different placeholder. See
|
|
42
|
-
<a href="https://ghiscoding.gitbook.io/angular-slickgrid/column-functionalities/custom-filter" target="_blank"
|
|
43
|
-
>Wiki - Custom Filter</a
|
|
44
|
-
>
|
|
45
|
-
</li>
|
|
46
|
-
<li>MultipleSelect & SingeSelect Filters can use a regular "collection" or "collectionAsync" to load it asynchronously</li>
|
|
47
|
-
</ul>
|
|
48
|
-
</div>
|
|
49
|
-
|
|
50
|
-
<br />
|
|
51
|
-
<span *ngIf="metrics" style="margin-right: 10px">
|
|
52
|
-
<b>Metrics:</b> {{ metrics.startTime | date: "yyyy-MM-dd hh:mm aaaaa'm'" }} | {{ metrics.itemCount }} of
|
|
53
|
-
{{ metrics.totalItemCount }} items
|
|
54
|
-
</span>
|
|
55
|
-
<div class="btn-group" role="group">
|
|
56
|
-
<button class="btn btn-sm btn-outline-secondary btn-icon" data-test="scroll-top-btn" (click)="scrollGridTop()">
|
|
57
|
-
<i class="mdi mdi-arrow-down mdi-rotate-180"></i>
|
|
58
|
-
</button>
|
|
59
|
-
<button class="btn btn-sm btn-outline-secondary btn-icon" data-test="scroll-bottom-btn" (click)="scrollGridBottom()">
|
|
60
|
-
<i class="mdi mdi-arrow-down"></i>
|
|
61
|
-
</button>
|
|
62
|
-
</div>
|
|
63
|
-
<button class="btn btn-outline-secondary btn-sm btn-icon" data-test="clear-filters" (click)="angularGrid.filterService.clearFilters()">
|
|
64
|
-
Clear Filters
|
|
65
|
-
</button>
|
|
66
|
-
<button class="btn btn-outline-secondary btn-sm btn-icon" data-test="clear-sorting" (click)="angularGrid.sortService.clearSorting()">
|
|
67
|
-
Clear Sorting
|
|
68
|
-
</button>
|
|
69
|
-
<button class="btn btn-outline-secondary btn-sm btn-icon" data-test="set-dynamic-filter" (click)="setFiltersDynamically()">
|
|
70
|
-
Set Filters Dynamically
|
|
71
|
-
</button>
|
|
72
|
-
<button class="btn btn-outline-secondary btn-sm btn-icon" data-test="set-dynamic-sorting" (click)="setSortingDynamically()">
|
|
73
|
-
Set Sorting Dynamically
|
|
74
|
-
</button>
|
|
75
|
-
|
|
76
|
-
<angular-slickgrid
|
|
77
|
-
gridId="grid4"
|
|
78
|
-
[columns]="columnDefinitions"
|
|
79
|
-
[options]="gridOptions"
|
|
80
|
-
[dataset]="dataset"
|
|
81
|
-
(onAngularGridCreated)="angularGridReady($event.detail)"
|
|
82
|
-
(onGridStateChanged)="gridStateChanged($event.detail)"
|
|
83
|
-
(onBeforeGridDestroy)="saveCurrentGridState()"
|
|
84
|
-
(onRowCountChanged)="refreshMetrics($event.detail.eventData, $event.detail.args)"
|
|
85
|
-
>
|
|
86
|
-
</angular-slickgrid>
|
|
87
|
-
</div>
|
|
@@ -1,326 +0,0 @@
|
|
|
1
|
-
import { Component, OnInit } from '@angular/core';
|
|
2
|
-
import { HttpClient } from '@angular/common/http';
|
|
3
|
-
import { ExcelExportService } from '@slickgrid-universal/excel-export';
|
|
4
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
5
|
-
import {
|
|
6
|
-
AngularGridInstance,
|
|
7
|
-
Column,
|
|
8
|
-
Filters,
|
|
9
|
-
Formatters,
|
|
10
|
-
GridOption,
|
|
11
|
-
GridStateChange,
|
|
12
|
-
Metrics,
|
|
13
|
-
type MultipleSelectOption,
|
|
14
|
-
OperatorType,
|
|
15
|
-
type VanillaCalendarOption,
|
|
16
|
-
} from '../../library';
|
|
17
|
-
import { CustomInputFilter } from './custom-inputFilter';
|
|
18
|
-
|
|
19
|
-
function randomBetween(min: number, max: number) {
|
|
20
|
-
return Math.floor(Math.random() * (max - min + 1) + min);
|
|
21
|
-
}
|
|
22
|
-
const NB_ITEMS = 10500;
|
|
23
|
-
const URL_SAMPLE_COLLECTION_DATA = 'assets/data/collection_500_numbers.json';
|
|
24
|
-
|
|
25
|
-
@Component({
|
|
26
|
-
templateUrl: './example04.component.html',
|
|
27
|
-
standalone: false,
|
|
28
|
-
})
|
|
29
|
-
export class Example4Component implements OnInit {
|
|
30
|
-
angularGrid!: AngularGridInstance;
|
|
31
|
-
columnDefinitions: Column[] = [];
|
|
32
|
-
gridOptions!: GridOption;
|
|
33
|
-
dataset!: any[];
|
|
34
|
-
metrics!: Metrics;
|
|
35
|
-
|
|
36
|
-
constructor(
|
|
37
|
-
private http: HttpClient,
|
|
38
|
-
private translate: TranslateService
|
|
39
|
-
) {}
|
|
40
|
-
|
|
41
|
-
ngOnInit(): void {
|
|
42
|
-
this.columnDefinitions = [
|
|
43
|
-
{
|
|
44
|
-
id: 'title',
|
|
45
|
-
name: 'Title',
|
|
46
|
-
field: 'title',
|
|
47
|
-
sortable: true,
|
|
48
|
-
minWidth: 55,
|
|
49
|
-
filterable: true,
|
|
50
|
-
filter: { model: Filters.compoundInputText },
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
id: 'description',
|
|
54
|
-
name: 'Description',
|
|
55
|
-
field: 'description',
|
|
56
|
-
filterable: true,
|
|
57
|
-
sortable: true,
|
|
58
|
-
minWidth: 80,
|
|
59
|
-
filter: {
|
|
60
|
-
model: CustomInputFilter, // create a new instance to make each Filter independent from each other
|
|
61
|
-
enableTrimWhiteSpace: true, // or use global "enableFilterTrimWhiteSpace" to trim on all Filters
|
|
62
|
-
},
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
id: 'duration',
|
|
66
|
-
name: 'Duration (days)',
|
|
67
|
-
field: 'duration',
|
|
68
|
-
sortable: true,
|
|
69
|
-
type: 'number',
|
|
70
|
-
exportCsvForceToKeepAsString: true,
|
|
71
|
-
minWidth: 55,
|
|
72
|
-
filterable: true,
|
|
73
|
-
filter: {
|
|
74
|
-
collectionAsync: this.http.get<{ option: string; value: string }[]>(URL_SAMPLE_COLLECTION_DATA),
|
|
75
|
-
// collectionFilterBy & collectionSortBy accept a single or multiple options
|
|
76
|
-
// we can exclude certains values 365 & 360 from the dropdown filter
|
|
77
|
-
collectionFilterBy: [
|
|
78
|
-
{
|
|
79
|
-
property: 'value',
|
|
80
|
-
operator: OperatorType.notEqual,
|
|
81
|
-
value: 360,
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
property: 'value',
|
|
85
|
-
operator: OperatorType.notEqual,
|
|
86
|
-
value: 365,
|
|
87
|
-
},
|
|
88
|
-
],
|
|
89
|
-
collectionSortBy: {
|
|
90
|
-
property: 'value',
|
|
91
|
-
sortDesc: true,
|
|
92
|
-
fieldType: 'number',
|
|
93
|
-
},
|
|
94
|
-
customStructure: {
|
|
95
|
-
value: 'value',
|
|
96
|
-
label: 'label',
|
|
97
|
-
optionLabel: 'value', // if selected text is too long, we can use option labels instead
|
|
98
|
-
labelSuffix: 'text',
|
|
99
|
-
},
|
|
100
|
-
collectionOptions: {
|
|
101
|
-
separatorBetweenTextLabels: ' ',
|
|
102
|
-
filterResultAfterEachPass: 'chain', // options are "merge" or "chain" (defaults to "chain")
|
|
103
|
-
},
|
|
104
|
-
model: Filters.multipleSelect,
|
|
105
|
-
|
|
106
|
-
// we could add certain option(s) to the "multiple-select" plugin
|
|
107
|
-
options: {
|
|
108
|
-
maxHeight: 250,
|
|
109
|
-
width: 175,
|
|
110
|
-
|
|
111
|
-
// if we want to display shorter text as the selected text (on the select filter itself, parent element)
|
|
112
|
-
// we can use "useSelectOptionLabel" or "useSelectOptionLabelToHtml" the latter will parse html
|
|
113
|
-
useSelectOptionLabelToHtml: true,
|
|
114
|
-
} as MultipleSelectOption,
|
|
115
|
-
},
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
id: 'complete',
|
|
119
|
-
name: '% Complete',
|
|
120
|
-
field: 'percentComplete',
|
|
121
|
-
formatter: Formatters.percentCompleteBar,
|
|
122
|
-
minWidth: 70,
|
|
123
|
-
type: 'number',
|
|
124
|
-
sortable: true,
|
|
125
|
-
filterable: true,
|
|
126
|
-
filter: { model: Filters.compoundInputNumber },
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
id: 'start',
|
|
130
|
-
name: 'Start',
|
|
131
|
-
field: 'start',
|
|
132
|
-
formatter: Formatters.dateIso,
|
|
133
|
-
sortable: true,
|
|
134
|
-
minWidth: 75,
|
|
135
|
-
type: 'date',
|
|
136
|
-
filterable: true,
|
|
137
|
-
filter: { model: Filters.compoundDate },
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
id: 'usDateShort',
|
|
141
|
-
name: 'US Date Short',
|
|
142
|
-
field: 'usDateShort',
|
|
143
|
-
sortable: true,
|
|
144
|
-
minWidth: 70,
|
|
145
|
-
width: 70,
|
|
146
|
-
type: 'dateUsShort',
|
|
147
|
-
exportWithFormatter: true,
|
|
148
|
-
filterable: true,
|
|
149
|
-
filter: { model: Filters.compoundDate },
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
id: 'utcDate',
|
|
153
|
-
name: 'UTC Date',
|
|
154
|
-
field: 'utcDate',
|
|
155
|
-
formatter: Formatters.dateTimeIsoAmPm,
|
|
156
|
-
sortable: true,
|
|
157
|
-
minWidth: 115,
|
|
158
|
-
type: 'dateUtc',
|
|
159
|
-
exportWithFormatter: true,
|
|
160
|
-
outputType: 'dateTimeIsoAmPm',
|
|
161
|
-
filterable: true,
|
|
162
|
-
filter: {
|
|
163
|
-
model: Filters.compoundDate,
|
|
164
|
-
// override any of the date picker options through "options"
|
|
165
|
-
options: { displayDateMin: 'today' } as VanillaCalendarOption,
|
|
166
|
-
},
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
id: 'effort-driven',
|
|
170
|
-
name: 'Effort Driven',
|
|
171
|
-
field: 'effortDriven.isEffort',
|
|
172
|
-
minWidth: 85,
|
|
173
|
-
maxWidth: 85,
|
|
174
|
-
type: 'boolean',
|
|
175
|
-
sortable: true,
|
|
176
|
-
exportCustomFormatter: Formatters.complexObject,
|
|
177
|
-
|
|
178
|
-
// to pass multiple formatters, use the params property
|
|
179
|
-
// also these formatters are executed in sequence, so if you want the checkmark to work correctly, it has to be the last formatter defined
|
|
180
|
-
formatter: Formatters.multiple,
|
|
181
|
-
params: { formatters: [Formatters.complexObject, Formatters.checkmarkMaterial] },
|
|
182
|
-
|
|
183
|
-
// when the "field" string includes the dot "." notation, the library will consider this to be a complex object and Filter accordingly
|
|
184
|
-
filterable: true,
|
|
185
|
-
filter: {
|
|
186
|
-
// We can also add HTML text to be rendered (any bad script will be sanitized) but we have to opt-in, else it will be sanitized
|
|
187
|
-
// enableRenderHtml: true,
|
|
188
|
-
// collection: [{ value: '', label: '' }, { value: true, label: 'True', labelPrefix: `<i class="mdi mdi-check"></i> ` }, { value: false, label: 'False' }],
|
|
189
|
-
|
|
190
|
-
collection: [
|
|
191
|
-
{ isEffort: '', label: '' },
|
|
192
|
-
{ isEffort: true, label: 'True' },
|
|
193
|
-
{ isEffort: false, label: 'False' },
|
|
194
|
-
],
|
|
195
|
-
customStructure: {
|
|
196
|
-
value: 'isEffort',
|
|
197
|
-
label: 'label',
|
|
198
|
-
},
|
|
199
|
-
model: Filters.singleSelect,
|
|
200
|
-
|
|
201
|
-
// we could add certain option(s) to the "multiple-select" plugin
|
|
202
|
-
options: { autoAdjustDropHeight: true } as MultipleSelectOption,
|
|
203
|
-
},
|
|
204
|
-
},
|
|
205
|
-
];
|
|
206
|
-
|
|
207
|
-
this.gridOptions = {
|
|
208
|
-
autoResize: {
|
|
209
|
-
container: '#demo-container',
|
|
210
|
-
rightPadding: 10,
|
|
211
|
-
},
|
|
212
|
-
enableExcelExport: true,
|
|
213
|
-
enableExcelCopyBuffer: true,
|
|
214
|
-
enableFiltering: true,
|
|
215
|
-
// enableFilterTrimWhiteSpace: true,
|
|
216
|
-
i18n: this.translate,
|
|
217
|
-
showCustomFooter: true, // display some metrics in the bottom custom footer
|
|
218
|
-
|
|
219
|
-
// use columnDef searchTerms OR use presets as shown below
|
|
220
|
-
presets: {
|
|
221
|
-
filters: [
|
|
222
|
-
{ columnId: 'duration', searchTerms: [10, 98] },
|
|
223
|
-
// { columnId: 'complete', searchTerms: ['5'], operator: '>' },
|
|
224
|
-
{ columnId: 'usDateShort', operator: '<', searchTerms: ['4/20/25'] },
|
|
225
|
-
// { columnId: 'effort-driven', searchTerms: [true] },
|
|
226
|
-
],
|
|
227
|
-
sorters: [
|
|
228
|
-
{ columnId: 'duration', direction: 'DESC' },
|
|
229
|
-
{ columnId: 'complete', direction: 'ASC' },
|
|
230
|
-
],
|
|
231
|
-
},
|
|
232
|
-
externalResources: [new ExcelExportService()],
|
|
233
|
-
};
|
|
234
|
-
|
|
235
|
-
// mock a dataset
|
|
236
|
-
this.dataset = this.mockData(NB_ITEMS);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
angularGridReady(angularGrid: AngularGridInstance) {
|
|
240
|
-
this.angularGrid = angularGrid;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
mockData(itemCount: number, startingIndex = 0): any[] {
|
|
244
|
-
// mock a dataset
|
|
245
|
-
const tempDataset = [];
|
|
246
|
-
for (let i = startingIndex; i < startingIndex + itemCount; i++) {
|
|
247
|
-
const randomDuration = Math.round(Math.random() * 100);
|
|
248
|
-
const randomYear = randomBetween(2000, 2035);
|
|
249
|
-
const randomYearShort = randomBetween(10, 35);
|
|
250
|
-
const randomMonth = randomBetween(1, 12);
|
|
251
|
-
const randomMonthStr = randomMonth < 10 ? `0${randomMonth}` : randomMonth;
|
|
252
|
-
const randomDay = randomBetween(10, 28);
|
|
253
|
-
const randomPercent = randomBetween(0, 100);
|
|
254
|
-
const randomHour = randomBetween(10, 23);
|
|
255
|
-
const randomTime = randomBetween(10, 59);
|
|
256
|
-
const randomMilliseconds = `${randomBetween(1, 9)}${randomBetween(10, 99)}`;
|
|
257
|
-
const randomIsEffort = i % 3 === 0;
|
|
258
|
-
|
|
259
|
-
tempDataset.push({
|
|
260
|
-
id: i,
|
|
261
|
-
title: 'Task ' + i,
|
|
262
|
-
description: i % 5 ? 'desc ' + i : null, // also add some random to test NULL field
|
|
263
|
-
duration: randomDuration,
|
|
264
|
-
percentComplete: randomPercent,
|
|
265
|
-
percentCompleteNumber: randomPercent,
|
|
266
|
-
start: i % 4 ? null : new Date(randomYear, randomMonth, randomDay), // provide a Date format
|
|
267
|
-
usDateShort: `${randomMonth}/${randomDay}/${randomYearShort}`, // provide a date US Short in the dataset
|
|
268
|
-
utcDate: `${randomYear}-${randomMonthStr}-${randomDay}T${randomHour}:${randomTime}:${randomTime}.${randomMilliseconds}Z`,
|
|
269
|
-
effortDriven: {
|
|
270
|
-
isEffort: randomIsEffort,
|
|
271
|
-
label: randomIsEffort ? 'Effort' : 'NoEffort',
|
|
272
|
-
},
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
return tempDataset;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
/** Dispatched event of a Grid State Changed event */
|
|
279
|
-
gridStateChanged(gridState: GridStateChange) {
|
|
280
|
-
console.log('Client sample, Grid State changed:: ', gridState.change);
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
/** Save current Filters, Sorters in LocaleStorage or DB */
|
|
284
|
-
saveCurrentGridState() {
|
|
285
|
-
console.log('Client sample, last Grid State:: ', this.angularGrid.gridStateService.getCurrentGridState());
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
setFiltersDynamically() {
|
|
289
|
-
// we can Set Filters Dynamically (or different filters) afterward through the FilterService
|
|
290
|
-
this.angularGrid.filterService.updateFilters([
|
|
291
|
-
{ columnId: 'duration', searchTerms: [2, 25, 48, 50] },
|
|
292
|
-
{ columnId: 'complete', searchTerms: [95], operator: '<' },
|
|
293
|
-
{ columnId: 'effort-driven', searchTerms: [true] },
|
|
294
|
-
{ columnId: 'start', operator: '>=', searchTerms: ['2001-02-28'] },
|
|
295
|
-
]);
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
setSortingDynamically() {
|
|
299
|
-
this.angularGrid.sortService.updateSorting([
|
|
300
|
-
// orders matter, whichever is first in array will be the first sorted column
|
|
301
|
-
{ columnId: 'duration', direction: 'ASC' },
|
|
302
|
-
{ columnId: 'start', direction: 'DESC' },
|
|
303
|
-
]);
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
refreshMetrics(e: Event, args: any) {
|
|
307
|
-
if (args && args.current >= 0) {
|
|
308
|
-
setTimeout(() => {
|
|
309
|
-
this.metrics = {
|
|
310
|
-
startTime: new Date(),
|
|
311
|
-
endTime: new Date(),
|
|
312
|
-
itemCount: (args && args.current) || 0,
|
|
313
|
-
totalItemCount: this.dataset.length || 0,
|
|
314
|
-
};
|
|
315
|
-
});
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
scrollGridBottom() {
|
|
320
|
-
this.angularGrid.slickGrid.navigateBottom();
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
scrollGridTop() {
|
|
324
|
-
this.angularGrid.slickGrid.navigateTop();
|
|
325
|
-
}
|
|
326
|
-
}
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
<div id="demo-container" class="container-fluid">
|
|
2
|
-
<h2>
|
|
3
|
-
Example 5: Grid connected to Backend Server with OData
|
|
4
|
-
<span class="float-end">
|
|
5
|
-
<a
|
|
6
|
-
style="font-size: 18px"
|
|
7
|
-
target="_blank"
|
|
8
|
-
href="https://github.com/ghiscoding/slickgrid-universal/blob/master/frameworks/angular-slickgrid/src/demos/examples/grid-odata.component.ts"
|
|
9
|
-
>
|
|
10
|
-
<span class="mdi mdi-link-variant"></span> code
|
|
11
|
-
</a>
|
|
12
|
-
</span>
|
|
13
|
-
</h2>
|
|
14
|
-
<div class="row">
|
|
15
|
-
<div class="col-sm-9">
|
|
16
|
-
<div class="subtitle">
|
|
17
|
-
Sorting/Paging connected to a Backend OData Service (<a
|
|
18
|
-
href="https://ghiscoding.gitbook.io/angular-slickgrid/backend-services/odata"
|
|
19
|
-
target="_blank"
|
|
20
|
-
>Docs</a
|
|
21
|
-
>).
|
|
22
|
-
<br />
|
|
23
|
-
<ul class="small">
|
|
24
|
-
<li>Only "Name" field is sortable for the demo (because we use JSON files), however "multiColumnSort: true" is also supported</li>
|
|
25
|
-
<li>This example also demos the Grid State feature, open the console log to see the changes</li>
|
|
26
|
-
<li>String column also support operator (>, >=, <, <=, <>, !=, =, ==, *)</li>
|
|
27
|
-
<ul>
|
|
28
|
-
<li>The (*) can be used as startsWith (ex.: "abc*" => startsWith "abc") / endsWith (ex.: "*xyz" => endsWith "xyz")</li>
|
|
29
|
-
<li>The other operators can be used on column type number for example: ">=100" (bigger or equal than 100)</li>
|
|
30
|
-
</ul>
|
|
31
|
-
<li>OData Service could be replaced by other Service type in the future (GraphQL or whichever you provide)</li>
|
|
32
|
-
<li>
|
|
33
|
-
You can also preload a grid with certain "presets" like Filters / Sorters / Pagination
|
|
34
|
-
<a href="https://ghiscoding.gitbook.io/angular-slickgrid/grid-functionalities/grid-state-and-preset" target="_blank"
|
|
35
|
-
>Docs - Grid Preset</a
|
|
36
|
-
>
|
|
37
|
-
</li>
|
|
38
|
-
<li>
|
|
39
|
-
<span class="text-danger">NOTE:</span> For demo purposes, the last column (filter & sort) will always throw an error and its
|
|
40
|
-
only purpose is to demo what would happen when you encounter a backend server error (the UI should rollback to previous state
|
|
41
|
-
before you did the action). Also changing Page Size to 50,000 will also throw which again is for demo purposes.
|
|
42
|
-
</li>
|
|
43
|
-
</ul>
|
|
44
|
-
</div>
|
|
45
|
-
</div>
|
|
46
|
-
<div class="col-sm-3">
|
|
47
|
-
<div class="alert alert-danger" *ngIf="errorStatus" data-test="error-status">
|
|
48
|
-
<em><strong>Backend Error:</strong> <span [innerHTML]="errorStatus"></span></em>
|
|
49
|
-
</div>
|
|
50
|
-
</div>
|
|
51
|
-
</div>
|
|
52
|
-
|
|
53
|
-
<div class="row">
|
|
54
|
-
<div class="col-sm-2">
|
|
55
|
-
<div [class]="status.class" role="alert" data-test="status">
|
|
56
|
-
<strong>Status: </strong> {{ status.text }}
|
|
57
|
-
<span [hidden]="!processing">
|
|
58
|
-
<i class="mdi mdi-sync mdi-spin-1s"></i>
|
|
59
|
-
</span>
|
|
60
|
-
</div>
|
|
61
|
-
</div>
|
|
62
|
-
<div class="col-sm-10">
|
|
63
|
-
<div class="alert alert-info" data-test="alert-odata-query">
|
|
64
|
-
<strong>OData Query:</strong> <span data-test="odata-query-result">{{ odataQuery }}</span>
|
|
65
|
-
</div>
|
|
66
|
-
</div>
|
|
67
|
-
</div>
|
|
68
|
-
|
|
69
|
-
<div class="row">
|
|
70
|
-
<div class="col-sm-4">
|
|
71
|
-
<button class="btn btn-outline-secondary btn-sm btn-icon" data-test="set-dynamic-filter" (click)="setFiltersDynamically()">
|
|
72
|
-
Set Filters Dynamically
|
|
73
|
-
</button>
|
|
74
|
-
<button class="btn btn-outline-secondary btn-sm btn-icon" data-test="set-dynamic-sorting" (click)="setSortingDynamically()">
|
|
75
|
-
Set Sorting Dynamically
|
|
76
|
-
</button>
|
|
77
|
-
<br />
|
|
78
|
-
<span *ngIf="metrics">
|
|
79
|
-
<b>Metrics:</b> {{ metrics.endTime | date: "yyyy-MM-dd hh:mm aaaaa'm'" }} | {{ metrics.executionTime }}ms |
|
|
80
|
-
{{ metrics.totalItemCount }} items
|
|
81
|
-
</span>
|
|
82
|
-
</div>
|
|
83
|
-
|
|
84
|
-
<div class="col-sm-8">
|
|
85
|
-
<label>OData Version: </label>
|
|
86
|
-
<span data-test="radioVersion">
|
|
87
|
-
<label class="radio-inline control-label" for="radio2">
|
|
88
|
-
<input
|
|
89
|
-
type="radio"
|
|
90
|
-
name="inlineRadioOptions"
|
|
91
|
-
data-test="version2"
|
|
92
|
-
id="radio2"
|
|
93
|
-
checked
|
|
94
|
-
[value]="2"
|
|
95
|
-
(change)="setOdataVersion(2)"
|
|
96
|
-
/>
|
|
97
|
-
2
|
|
98
|
-
</label>
|
|
99
|
-
<label class="radio-inline control-label" for="radio4">
|
|
100
|
-
<input type="radio" name="inlineRadioOptions" data-test="version4" id="radio4" [value]="4" (change)="setOdataVersion(4)" /> 4
|
|
101
|
-
</label>
|
|
102
|
-
</span>
|
|
103
|
-
<label class="checkbox-inline control-label" for="enableCount" style="margin-left: 20px">
|
|
104
|
-
<input type="checkbox" id="enableCount" data-test="enable-count" [checked]="isCountEnabled" (click)="changeCountEnableFlag()" />
|
|
105
|
-
<span style="font-weight: bold">Enable Count</span> (add to OData query)
|
|
106
|
-
</label>
|
|
107
|
-
<label class="checkbox-inline control-label" for="enableSelect" style="margin-left: 20px">
|
|
108
|
-
<input type="checkbox" id="enableSelect" data-test="enable-select" [checked]="isSelectEnabled" (click)="changeEnableSelectFlag()" />
|
|
109
|
-
<span style="font-weight: bold">Enable Select</span> (add to OData query)
|
|
110
|
-
</label>
|
|
111
|
-
<label class="checkbox-inline control-label" for="enableExpand" style="margin-left: 20px">
|
|
112
|
-
<input type="checkbox" id="enableExpand" data-test="enable-expand" [checked]="isExpandEnabled" (click)="changeEnableExpandFlag()" />
|
|
113
|
-
<span style="font-weight: bold">Enable Expand</span> (add to OData query)
|
|
114
|
-
</label>
|
|
115
|
-
</div>
|
|
116
|
-
</div>
|
|
117
|
-
<div class="row mt-2 mb-1">
|
|
118
|
-
<div class="col-md-12">
|
|
119
|
-
<button class="btn btn-outline-danger btn-sm btn-icon" data-test="throw-page-error-btn" (click)="throwPageChangeError()">
|
|
120
|
-
<span>Throw Error Going to Last Page... </span>
|
|
121
|
-
<i class="mdi mdi-page-last"></i>
|
|
122
|
-
</button>
|
|
123
|
-
|
|
124
|
-
<span class="ms-2">
|
|
125
|
-
<label>Programmatically go to first/last page:</label>
|
|
126
|
-
<div class="btn-group" role="group">
|
|
127
|
-
<button class="btn btn-outline-secondary btn-xs btn-icon px-2" data-test="goto-first-page" (click)="goToFirstPage()">
|
|
128
|
-
<i class="mdi mdi-page-first"></i>
|
|
129
|
-
</button>
|
|
130
|
-
<button class="btn btn-outline-secondary btn-xs btn-icon px-2" data-test="goto-last-page" (click)="goToLastPage()">
|
|
131
|
-
<i class="mdi mdi-page-last"></i>
|
|
132
|
-
</button>
|
|
133
|
-
</div>
|
|
134
|
-
</span>
|
|
135
|
-
</div>
|
|
136
|
-
</div>
|
|
137
|
-
|
|
138
|
-
<angular-slickgrid
|
|
139
|
-
gridId="grid5"
|
|
140
|
-
[columns]="columnDefinitions"
|
|
141
|
-
[options]="gridOptions"
|
|
142
|
-
[paginationOptions]="paginationOptions"
|
|
143
|
-
[dataset]="dataset"
|
|
144
|
-
(onAngularGridCreated)="angularGridReady($event.detail)"
|
|
145
|
-
(onGridStateChanged)="gridStateChanged($event.detail)"
|
|
146
|
-
(onBeforeSort)="handleOnBeforeSort($event)"
|
|
147
|
-
(onBeforeSearchChange)="handleOnBeforeSearchChange($event)"
|
|
148
|
-
(onBeforePaginationChange)="handleOnBeforePaginationChange($event)"
|
|
149
|
-
>
|
|
150
|
-
</angular-slickgrid>
|
|
151
|
-
</div>
|