UNPKG

ftable

Version:
180 lines 16.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component } from '@angular/core'; import { Input } from '@angular/core'; import { Output } from '@angular/core'; import { EventEmitter } from '@angular/core'; var FPaginateComponent = /** @class */ (function () { function FPaginateComponent() { this.PagingChange = new EventEmitter(); } Object.defineProperty(FPaginateComponent.prototype, "totalItemsAfterFilters", { set: /** * @param {?} totalItemsAfterFilters * @return {?} */ function (totalItemsAfterFilters) { this._totalItemsAfterFilters = totalItemsAfterFilters; this.totalPages = Math.ceil(this._totalItemsAfterFilters / this.itemsPerPage); this._currentPage = 1; }, enumerable: true, configurable: true }); Object.defineProperty(FPaginateComponent.prototype, "currentPage", { set: /** * @param {?} num * @return {?} */ function (num) { this._currentPage = num; }, enumerable: true, configurable: true }); /** * @return {?} */ FPaginateComponent.prototype.ngOnInit = /** * @return {?} */ function () { this.totalPages = Math.ceil(this._totalItemsAfterFilters / this.itemsPerPage); this.setCurrentPage(this._currentPage); }; /** * @return {?} */ FPaginateComponent.prototype.ngOnChanges = /** * @return {?} */ function () { this.totalPages = Math.ceil(this._totalItemsAfterFilters / this.itemsPerPage); }; /** * @param {?} number * @return {?} */ FPaginateComponent.prototype.setCurrentPage = /** * @param {?} number * @return {?} */ function (number) { this._currentPage = number; this.PagingChange.emit(number); }; /** * @return {?} */ FPaginateComponent.prototype.firstPage = /** * @return {?} */ function () { this.setCurrentPage(1); }; /** * @return {?} */ FPaginateComponent.prototype.previousPage = /** * @return {?} */ function () { this.setCurrentPage(this._currentPage - 1); }; /** * @return {?} */ FPaginateComponent.prototype.nextPage = /** * @return {?} */ function () { this.setCurrentPage(this._currentPage + 1); }; /** * @return {?} */ FPaginateComponent.prototype.lastPage = /** * @return {?} */ function () { this.setCurrentPage(this.totalPages); }; /** * @return {?} */ FPaginateComponent.prototype.isFirstDisabled = /** * @return {?} */ function () { return (this._currentPage === 1); }; /** * @return {?} */ FPaginateComponent.prototype.isPreviousDisabled = /** * @return {?} */ function () { return (this._currentPage === 1); }; /** * @return {?} */ FPaginateComponent.prototype.isNextDisabled = /** * @return {?} */ function () { return (this._currentPage === this.totalPages); }; /** * @return {?} */ FPaginateComponent.prototype.isLastDisabled = /** * @return {?} */ function () { return (this._currentPage === this.totalPages); }; FPaginateComponent.decorators = [ { type: Component, args: [{ selector: 'ft-fpaginate', template: "<div id=\"ft-fpaginate\" class=\"ft-fpaginate\">\r\n \r\n <button class=\"ft-b ft-b-fpaginate\" id='ft-b-fpaginate_first' [disabled]=\"isFirstDisabled()\" (click)=\"firstPage()\"><i></i></button>\r\n <button class=\"ft-b ft-b-fpaginate\" id='ft-b-fpaginate_previous' [disabled]=\"isPreviousDisabled()\" (click)=\"previousPage()\"><i></i></button>\r\n\r\n <!-- <span> -->\r\n <ng-container *ngIf=\"totalPages < 8\">\r\n <ng-container *ngIf=\"totalPages > 0\">\r\n <button class='ft-b' [ngClass]=\"{'ft-b-fpaginate': _currentPage != 1, 'ft-b-fpaginate_current': _currentPage == 1}\" (click)=\"setCurrentPage(1)\">1</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"totalPages > 1\">\r\n <button class='ft-b' [ngClass]=\"{'ft-b-fpaginate': _currentPage != 2, 'ft-b-fpaginate_current': _currentPage == 2}\" (click)=\"setCurrentPage(2)\">2</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"totalPages > 2\">\r\n <button class='ft-b' [ngClass]=\"{'ft-b-fpaginate': _currentPage != 3, 'ft-b-fpaginate_current': _currentPage == 3}\" (click)=\"setCurrentPage(3)\">3</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"totalPages > 3\">\r\n <button class='ft-b' [ngClass]=\"{'ft-b-fpaginate': _currentPage != 4, 'ft-b-fpaginate_current': _currentPage == 4}\" (click)=\"setCurrentPage(4)\">4</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"totalPages > 4\">\r\n <button class='ft-b' [ngClass]=\"{'ft-b-fpaginate': _currentPage != 5, 'ft-b-fpaginate_current': _currentPage == 5}\" (click)=\"setCurrentPage(5)\">5</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"totalPages > 5\">\r\n <button class='ft-b' [ngClass]=\"{'ft-b-fpaginate': _currentPage != 6, 'ft-b-fpaginate_current': _currentPage == 6}\" (click)=\"setCurrentPage(6)\">6</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"totalPages > 6\">\r\n <button class='ft-b' [ngClass]=\"{'ft-b-fpaginate': _currentPage != 7, 'ft-b-fpaginate_current': _currentPage == 7}\" (click)=\"setCurrentPage(7)\">7</button>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"totalPages > 7\">\r\n\r\n <ng-container *ngIf=\"_currentPage < 5\">\r\n <button class='ft-b' [ngClass]=\"{'ft-b-fpaginate': _currentPage != 1, 'ft-b-fpaginate_current': _currentPage == 1}\" (click)=\"setCurrentPage(1)\">1</button>\r\n <button class='ft-b' [ngClass]=\"{'ft-b-fpaginate': _currentPage != 2, 'ft-b-fpaginate_current': _currentPage == 2}\" (click)=\"setCurrentPage(2)\">2</button>\r\n <button class='ft-b' [ngClass]=\"{'ft-b-fpaginate': _currentPage != 3, 'ft-b-fpaginate_current': _currentPage == 3}\" (click)=\"setCurrentPage(3)\">3</button>\r\n <button class='ft-b' [ngClass]=\"{'ft-b-fpaginate': _currentPage != 4, 'ft-b-fpaginate_current': _currentPage == 4}\" (click)=\"setCurrentPage(4)\">4</button>\r\n <button class=\"ft-b ft-b-fpaginate\" (click)=\"setCurrentPage(5)\">5</button>\r\n <span class='ft-paginate_ellipsis'>&#8230;</span>\r\n <button class=\"ft-b ft-b-fpaginate\" (click)=\"setCurrentPage(totalPages)\">{{totalPages}}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"_currentPage >= totalPages-3\">\r\n <button class=\"ft-b ft-b-fpaginate\" (click)=\"setCurrentPage(1)\">1</button>\r\n <span class='ft-paginate_ellipsis'>&#8230;</span>\r\n <button class=\"ft-b ft-b-fpaginate\" (click)=\"setCurrentPage(totalPages-4)\">{{totalPages-4}}</button>\r\n <button class='ft-b' [ngClass]=\"{'ft-b-fpaginate': _currentPage != (totalPages-3), 'ft-b-fpaginate_current': _currentPage == (totalPages-3)}\" (click)=\"setCurrentPage(totalPages-3)\">{{totalPages-3}}</button>\r\n <button class='ft-b' [ngClass]=\"{'ft-b-fpaginate': _currentPage != (totalPages-2), 'ft-b-fpaginate_current': _currentPage == (totalPages-2)}\" (click)=\"setCurrentPage(totalPages-2)\">{{totalPages-2}}</button>\r\n <button class='ft-b' [ngClass]=\"{'ft-b-fpaginate': _currentPage != (totalPages-1), 'ft-b-fpaginate_current': _currentPage == (totalPages-1)}\" (click)=\"setCurrentPage(totalPages-1)\">{{totalPages-1}}</button>\r\n <button class='ft-b' [ngClass]=\"{'ft-b-fpaginate': _currentPage != (totalPages), 'ft-b-fpaginate_current': _currentPage == (totalPages)}\" (click)=\"setCurrentPage(totalPages)\">{{totalPages}}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"(_currentPage < (totalPages-3)) && (_currentPage >= 5)\">\r\n <button class=\"ft-b ft-b-fpaginate\" (click)=\"setCurrentPage(1)\">1</button>\r\n <span class='ft-paginate_ellipsis'>&#8230;</span>\r\n <button class=\"ft-b ft-b-fpaginate\" (click)=\"setCurrentPage(_currentPage-1)\">{{_currentPage-1}}</button>\r\n <button class=\"ft-b ft-b-fpaginate_current\" (click)=\"setCurrentPage(_currentPage)\">{{_currentPage}}</button>\r\n <button class=\"ft-b ft-b-fpaginate\" (click)=\"setCurrentPage(_currentPage+1)\">{{_currentPage+1}}</button>\r\n <span class='ft-paginate_ellipsis'>&#8230;</span>\r\n <button class=\"ft-b ft-b-fpaginate\" (click)=\"setCurrentPage(totalPages)\">{{totalPages}}</button>\r\n </ng-container>\r\n\r\n </ng-container>\r\n <!-- </span> -->\r\n\r\n <button class=\"ft-b ft-b-fpaginate\" id='ft-b-fpaginate_next' [disabled]=\"isNextDisabled()\" (click)=\"nextPage()\"><i></i></button>\r\n <button class=\"ft-b ft-b-fpaginate\" id='ft-b-fpaginate_last' [disabled]=\"isLastDisabled()\" (click)=\"lastPage()\"><i></i></button>\r\n\r\n</div>", styles: [""] }] } ]; FPaginateComponent.propDecorators = { itemsPerPage: [{ type: Input }], totalItems: [{ type: Input }], totalItemsAfterFilters: [{ type: Input }], currentPage: [{ type: Input }], PagingChange: [{ type: Output }] }; return FPaginateComponent; }()); export { FPaginateComponent }; if (false) { /** * @type {?} * @private */ FPaginateComponent.prototype.itemsPerPage; /** * @type {?} * @private */ FPaginateComponent.prototype.totalItems; /** @type {?} */ FPaginateComponent.prototype._currentPage; /** @type {?} */ FPaginateComponent.prototype.PagingChange; /** * @type {?} * @private */ FPaginateComponent.prototype._totalItemsAfterFilters; /** @type {?} */ FPaginateComponent.prototype.totalPages; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnBhZ2luYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2Z0YWJsZS8iLCJzb3VyY2VzIjpbImxpYi9mcGFnaW5hdGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdDO0lBQUE7UUE0QmMsaUJBQVksR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQTJEOUUsQ0FBQztJQXZFRyxzQkFDSSxzREFBc0I7Ozs7O1FBRDFCLFVBQzJCLHNCQUE4QjtZQUNyRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsc0JBQXNCLENBQUM7WUFDdEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDOUUsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDMUIsQ0FBQzs7O09BQUE7SUFFRCxzQkFDSSwyQ0FBVzs7Ozs7UUFEZixVQUNnQixHQUFXO1lBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1FBQzFCLENBQUM7OztPQUFBOzs7O0lBZUQscUNBQVE7OztJQUFSO1FBQ0ksSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7OztJQUVELHdDQUFXOzs7SUFBWDtRQUNJLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xGLENBQUM7Ozs7O0lBRUQsMkNBQWM7Ozs7SUFBZCxVQUFlLE1BQWM7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7OztJQUVELHNDQUFTOzs7SUFBVDtRQUNJLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7OztJQUVELHlDQUFZOzs7SUFBWjtRQUNJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDOzs7O0lBRUQscUNBQVE7OztJQUFSO1FBQ0ksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Ozs7SUFFRCxxQ0FBUTs7O0lBQVI7UUFDSSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6QyxDQUFDOzs7O0lBRUQsNENBQWU7OztJQUFmO1FBQ0ksT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQzs7OztJQUVELCtDQUFrQjs7O0lBQWxCO1FBQ0ksT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQzs7OztJQUVELDJDQUFjOzs7SUFBZDtRQUNJLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRCxDQUFDOzs7O0lBRUQsMkNBQWM7OztJQUFkO1FBQ0ksT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7O2dCQXJGSixTQUFTLFNBQUM7b0JBQ1AsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLDQzTEFBeUM7O2lCQUc1Qzs7OytCQUtJLEtBQUs7NkJBRUwsS0FBSzt5Q0FJTCxLQUFLOzhCQU9MLEtBQUs7K0JBS0wsTUFBTTs7SUEyRFgseUJBQUM7Q0FBQSxBQXZGRCxJQXVGQztTQWhGWSxrQkFBa0I7Ozs7OztJQUczQiwwQ0FBc0M7Ozs7O0lBRXRDLHdDQUFvQzs7SUFFbkMsMENBQTRCOztJQWM3QiwwQ0FBMEU7Ozs7O0lBVTFFLHFEQUF3Qzs7SUFDeEMsd0NBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZnQtZnBhZ2luYXRlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZnBhZ2luYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mcGFnaW5hdGUuY29tcG9uZW50LnNjc3MnXSxcblxufSlcblxuZXhwb3J0IGNsYXNzIEZQYWdpbmF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICAgIC8vIE51bWJlciBvZiBJdGVtcyBwZXIgcGFnZVxuICAgIEBJbnB1dCgpIHByaXZhdGUgaXRlbXNQZXJQYWdlOiBudW1iZXI7XG4gICAgLy8gRGF0YVxuICAgIEBJbnB1dCgpIHByaXZhdGUgdG90YWxJdGVtczogbnVtYmVyO1xuICAgIC8vIEN1cnJlbnQgUGFnZVxuICAgICBwdWJsaWMgX2N1cnJlbnRQYWdlOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCB0b3RhbEl0ZW1zQWZ0ZXJGaWx0ZXJzKHRvdGFsSXRlbXNBZnRlckZpbHRlcnM6IG51bWJlcikge1xuICAgICAgICB0aGlzLl90b3RhbEl0ZW1zQWZ0ZXJGaWx0ZXJzID0gdG90YWxJdGVtc0FmdGVyRmlsdGVycztcbiAgICAgICAgdGhpcy50b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHRoaXMuX3RvdGFsSXRlbXNBZnRlckZpbHRlcnMgLyB0aGlzLml0ZW1zUGVyUGFnZSk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRQYWdlID0gMTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBjdXJyZW50UGFnZShudW06IG51bWJlcikge1xuICAgICAgdGhpcy5fY3VycmVudFBhZ2UgPSBudW07XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIFBhZ2luZ0NoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuXG5cbiAgICAvLyBnZXQgY3VycmVudFBhZ2UoKTogbnVtYmVyIHtcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuY3VycmVudFBhZ2U7XG4gICAgLy8gICB9XG4gICAgICBcbiBcblxuICAgIHByaXZhdGUgX3RvdGFsSXRlbXNBZnRlckZpbHRlcnM6IG51bWJlcjtcbiAgICBwdWJsaWMgdG90YWxQYWdlczogbnVtYmVyO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudG90YWxQYWdlcyA9IE1hdGguY2VpbCh0aGlzLl90b3RhbEl0ZW1zQWZ0ZXJGaWx0ZXJzIC8gdGhpcy5pdGVtc1BlclBhZ2UpO1xuICAgICAgICB0aGlzLnNldEN1cnJlbnRQYWdlKHRoaXMuX2N1cnJlbnRQYWdlKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy50b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHRoaXMuX3RvdGFsSXRlbXNBZnRlckZpbHRlcnMgLyB0aGlzLml0ZW1zUGVyUGFnZSk7XG4gICAgfVxuXG4gICAgc2V0Q3VycmVudFBhZ2UobnVtYmVyOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFBhZ2UgPSBudW1iZXI7XG4gICAgICAgIHRoaXMuUGFnaW5nQ2hhbmdlLmVtaXQobnVtYmVyKTtcbiAgICB9XG5cbiAgICBmaXJzdFBhZ2UoKSB7XG4gICAgICAgIHRoaXMuc2V0Q3VycmVudFBhZ2UoMSk7XG4gICAgfVxuXG4gICAgcHJldmlvdXNQYWdlKCkge1xuICAgICAgICB0aGlzLnNldEN1cnJlbnRQYWdlKHRoaXMuX2N1cnJlbnRQYWdlIC0gMSk7XG4gICAgfVxuXG4gICAgbmV4dFBhZ2UoKSB7XG4gICAgICAgIHRoaXMuc2V0Q3VycmVudFBhZ2UodGhpcy5fY3VycmVudFBhZ2UgKyAxKTtcbiAgICB9XG5cbiAgICBsYXN0UGFnZSgpIHtcbiAgICAgICAgdGhpcy5zZXRDdXJyZW50UGFnZSh0aGlzLnRvdGFsUGFnZXMpO1xuICAgIH1cblxuICAgIGlzRmlyc3REaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLl9jdXJyZW50UGFnZSA9PT0gMSk7XG4gICAgfVxuXG4gICAgaXNQcmV2aW91c0Rpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMuX2N1cnJlbnRQYWdlID09PSAxKTtcbiAgICB9XG5cbiAgICBpc05leHREaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLl9jdXJyZW50UGFnZSA9PT0gdGhpcy50b3RhbFBhZ2VzKTtcbiAgICB9XG5cbiAgICBpc0xhc3REaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLl9jdXJyZW50UGFnZSA9PT0gdGhpcy50b3RhbFBhZ2VzKTtcbiAgICB9XG5cbn1cbiJdfQ==