@firestitch/system 12.5.1 → 12.5.3
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/app/modules/query-logs/query-logs.module.d.ts +1 -1
- package/bundles/firestitch-system.umd.js +6 -2
- package/bundles/firestitch-system.umd.js.map +1 -1
- package/esm2015/app/modules/query-logs/components/query-log/query-log.component.js +2 -2
- package/esm2015/app/modules/query-logs/query-logs.module.js +5 -2
- package/esm2015/app/modules/system/components/crons/crons.component.js +1 -1
- package/esm2015/app/modules/system/fs-system.module.js +1 -1
- package/esm2015/public_api.js +2 -1
- package/fesm2015/firestitch-system.js +6 -3
- package/fesm2015/firestitch-system.js.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +1 -0
|
@@ -18,6 +18,6 @@ import * as i16 from "@firestitch/list";
|
|
|
18
18
|
import * as i17 from "@firestitch/clipboard";
|
|
19
19
|
export declare class FsSystemQueryLogsModule {
|
|
20
20
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsSystemQueryLogsModule, never>;
|
|
21
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<FsSystemQueryLogsModule, [typeof i1.QueryLogsComponent, typeof i2.QueryLogComponent, typeof i3.ExplainComponent], [typeof i4.CommonModule, typeof i5.RouterModule, typeof i4.CommonModule, typeof i6.FormsModule, typeof i7.MatTabsModule, typeof i8.MatButtonModule, typeof i9.MatDialogModule, typeof i10.FsFormModule, typeof i11.FsLabelModule, typeof i12.FsPopoverModule, typeof i13.FsCommonModule, typeof i14.FsDateModule, typeof i15.FsDialogModule, typeof i16.FsListModule, typeof i17.FsClipboardModule],
|
|
21
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<FsSystemQueryLogsModule, [typeof i1.QueryLogsComponent, typeof i2.QueryLogComponent, typeof i3.ExplainComponent], [typeof i4.CommonModule, typeof i5.RouterModule, typeof i4.CommonModule, typeof i6.FormsModule, typeof i7.MatTabsModule, typeof i8.MatButtonModule, typeof i9.MatDialogModule, typeof i10.FsFormModule, typeof i11.FsLabelModule, typeof i12.FsPopoverModule, typeof i13.FsCommonModule, typeof i14.FsDateModule, typeof i15.FsDialogModule, typeof i16.FsListModule, typeof i17.FsClipboardModule], [typeof i1.QueryLogsComponent]>;
|
|
22
22
|
static ɵinj: i0.ɵɵInjectorDeclaration<FsSystemQueryLogsModule>;
|
|
23
23
|
}
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
return QueryLogComponent;
|
|
125
125
|
}());
|
|
126
126
|
QueryLogComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: QueryLogComponent, deps: [{ token: i1.MAT_DIALOG_DATA }, { token: i1__namespace.MatDialog }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
127
|
-
QueryLogComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: QueryLogComponent, selector: "ng-component", ngImport: i0__namespace, template: "<fs-dialog>\n <h1 mat-dialog-title>Query Log</h1>\n <mat-dialog-content>\n <div class=\"fs-row.gap-large\">\n <fs-label-field>\n <fs-label>Duration</fs-label>\n {{queryLog.duration}}\n </fs-label-field>\n\n <fs-label-field>\n <fs-label>Optimized</fs-label>\n {{queryLog.optimized ? 'Yes' : 'No'}}\n </fs-label-field>\n\n <fs-label-field>\n <fs-label>Query Cost</fs-label>\n {{queryLog.queryCost}}\n </fs-label-field>\n\n <fs-label-field>\n <fs-label>Raw Explain</fs-label>\n <a (click)=\"openExplain()\">View</a>\n </fs-label-field>\n\n <fs-label-field>\n <fs-label>URL</fs-label>\n {{queryLog.path | fsFormatTruncate: 50}}\n </fs-label-field>\n </div>\n\n <mat-tab-group>\n <mat-tab label=\"Query\">\n <fs-clipboard-button\n [content]=\"queryLog.prettyQuery\">\n </fs-clipboard-button>\n <div [innerHTML]=\"queryLog.prettyQuery\" class=\"query\"></div>\n </mat-tab>\n \n <mat-tab label=\"Explain\">\n <ng-container
|
|
127
|
+
QueryLogComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: QueryLogComponent, selector: "ng-component", ngImport: i0__namespace, template: "<fs-dialog>\n <h1 mat-dialog-title>Query Log</h1>\n <mat-dialog-content>\n <div class=\"fs-row.gap-large\">\n <fs-label-field>\n <fs-label>Duration</fs-label>\n {{queryLog.duration}}\n </fs-label-field>\n\n <fs-label-field>\n <fs-label>Optimized</fs-label>\n {{queryLog.optimized ? 'Yes' : 'No'}}\n </fs-label-field>\n\n <fs-label-field>\n <fs-label>Query Cost</fs-label>\n {{queryLog.queryCost}}\n </fs-label-field>\n\n <fs-label-field>\n <fs-label>Raw Explain</fs-label>\n <a (click)=\"openExplain()\">View</a>\n </fs-label-field>\n\n <fs-label-field>\n <fs-label>URL</fs-label>\n {{queryLog.path | fsFormatTruncate: 50}}\n </fs-label-field>\n </div>\n\n <mat-tab-group>\n <mat-tab label=\"Query\">\n <fs-clipboard-button\n [content]=\"queryLog.prettyQuery\">\n </fs-clipboard-button>\n <div [innerHTML]=\"queryLog.prettyQuery\" class=\"query\"></div>\n </mat-tab>\n \n <mat-tab label=\"Explain\">\n <ng-container [ngTemplateOutlet]=\"nestedLoop\" [ngTemplateOutletContext]=\"{ queryBlock: queryBlock }\"></ng-container>\n </mat-tab>\n </mat-tab-group>\n\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Done\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n\n<ng-template #nestedLoop let-queryBlock=\"queryBlock\">\n\n\n <ng-container *ngIf=\"queryBlock.nestedLoop\">\n <table class=\"fs-list-table style-line\">\n <thead>\n <tr>\n <th>Table</th>\n <th>Type</th>\n <th>Keys</th>\n <th>Ref</th>\n <th>Rows</th>\n <th>Filtered</th>\n <th>Extra</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of queryBlock.nestedLoop; let index = index\">\n <tr>\n <td>\n {{item.table.tableName}}\n </td>\n <td>\n <fs-popover [template]=\"accessTypePopover\" [data]=\"item.table.accessType\">\n <span class=\"access-type\" [ngClass]=\"item.table.accessType\">{{item.table.accessType}}</span>\n </fs-popover> \n </td>\n <td>\n <fs-popover \n [template]=\"keysPopover\"\n [maxWidth]=\"null\"\n [data]=\"{ possibleKeys: item.table.possibleKeys, key: item.table.key }\">\n {{item.table.key}}\n </fs-popover>\n </td>\n <td>\n <div class=\"fs-delimit\">\n <ng-container *ngFor=\"let ref of item.table.ref\">\n <span>{{ref}}</span>\n </ng-container>\n </div>\n </td>\n <td>\n {{item.table.rowsExaminedPerScan}}\n </td>\n <td>\n {{item.table.filtered}}\n </td>\n <td>\n <div class=\"fs-delimit\">\n <ng-container *ngIf=\"item.table.indexCondition\">\n <span>\n <fs-popover \n [template]=\"usingIndexCondition\" \n [maxWidth]=\"null\"\n [data]=\"item.table.indexCondition\">\n Using Index Condition\n </fs-popover>\n </span>\n </ng-container>\n <ng-container *ngIf=\"item.table.attachedCondition\">\n <span>\n <fs-popover \n [template]=\"usingWhere\" \n [maxWidth]=\"null\"\n [data]=\"item.table.attachedCondition\">\n Using Where\n </fs-popover>\n </span>\n </ng-container>\n <ng-container *ngIf=\"item.table.usingIndex\">\n <span>Using Index</span>\n </ng-container> \n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n <br>\n </ng-container> \n\n <ng-container *ngIf=\"queryBlock.orderingOperation\">\n <fs-label-field>\n <fs-label>Ordering Operation</fs-label>\n <ng-container [ngTemplateOutlet]=\"queryBlockCritical\" [ngTemplateOutletContext]=\"{ queryBlock: queryBlock.orderingOperation }\"></ng-container>\n </fs-label-field>\n <ng-container [ngTemplateOutlet]=\"nestedLoop\" [ngTemplateOutletContext]=\"{ queryBlock: queryBlock.orderingOperation }\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"queryBlock.groupingOperation\">\n <fs-label-field>\n <fs-label>Grouping Operation</fs-label>\n <ng-container [ngTemplateOutlet]=\"queryBlockCritical\" [ngTemplateOutletContext]=\"{ queryBlock: queryBlock.groupingOperation }\"></ng-container>\n </fs-label-field>\n <ng-container [ngTemplateOutlet]=\"nestedLoop\" [ngTemplateOutletContext]=\"{ queryBlock: queryBlock.groupingOperation }\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"queryBlock.selectListSubqueries\">\n <fs-label-field>\n <fs-label>Select List Subqueries</fs-label>\n </fs-label-field>\n\n <ng-container *ngFor=\"let selectListSubquery of queryBlock.selectListSubqueries\">\n <ng-container [ngTemplateOutlet]=\"nestedLoop\" [ngTemplateOutletContext]=\"{ queryBlock: { nestedLoop: [selectListSubquery.queryBlock] }}\"></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #keysPopover let-data=\"data\">\n <div class=\"fs-delimit\">\n <ng-container *ngFor=\"let possibleKey of data.possibleKeys\">\n <span [ngClass]=\"{ 'query-log-used-key': possibleKey === data.key }\">{{possibleKey}}</span>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #usingWhere let-data=\"data\">\n {{data}}\n</ng-template>\n\n<ng-template #usingIndexCondition let-data=\"data\">\n {{data}}\n</ng-template>\n\n<ng-template #accessTypePopover let-data=\"data\">\n {{accessTypes[data]}}\n</ng-template>\n\n\n<ng-template #queryBlockCritical let-queryBlock=\"queryBlock\">\n <div class=\"fs-delimit\">\n <ng-container *ngIf=\"queryBlock.usingFilesort\">\n <span class=\"critical\">Using File Sort</span>\n </ng-container>\n \n <ng-container *ngIf=\"queryBlock.usingTemporaryTable\">\n <span class=\"critical\">Temporary Table</span>\n </ng-container>\n </div>\n</ng-template>", styles: ["::ng-deep .query-log-used-key{font-weight:bold}::ng-deep .explain-popover{white-space:pre}.critical{color:red}fs-clipboard-button{float:right}.query{white-space:break-spaces}.access-type{color:green}.access-type.fulltext,.access-type.index,.access-type.range{color:orange}.access-type.ALL{color:red}\n"], components: [{ type: i2__namespace.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i3__namespace.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i3__namespace.FsLabelComponent, selector: "fs-label" }, { type: i3__namespace$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i3__namespace$1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby"], exportAs: ["matTab"] }, { type: i2__namespace$1.FsClipboardButtonComponent, selector: "fs-clipboard-button", inputs: ["content"] }, { type: i4__namespace.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7__namespace.FsPopoverComponent, selector: "fs-popover" }], directives: [{ type: i1__namespace.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i8__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1__namespace.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1__namespace.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i8__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "fsFormatTruncate": i9__namespace.FsFormatTruncatePipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
|
128
128
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: QueryLogComponent, decorators: [{
|
|
129
129
|
type: i0.Component,
|
|
130
130
|
args: [{
|
|
@@ -240,7 +240,7 @@
|
|
|
240
240
|
i4$1.FsDateModule,
|
|
241
241
|
i2.FsDialogModule,
|
|
242
242
|
i2$2.FsListModule,
|
|
243
|
-
i2$1.FsClipboardModule] });
|
|
243
|
+
i2$1.FsClipboardModule], exports: [QueryLogsComponent] });
|
|
244
244
|
FsSystemQueryLogsModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsSystemQueryLogsModule, imports: [[
|
|
245
245
|
i8.CommonModule,
|
|
246
246
|
router.RouterModule,
|
|
@@ -283,6 +283,9 @@
|
|
|
283
283
|
QueryLogComponent,
|
|
284
284
|
ExplainComponent,
|
|
285
285
|
],
|
|
286
|
+
exports: [
|
|
287
|
+
QueryLogsComponent,
|
|
288
|
+
],
|
|
286
289
|
}]
|
|
287
290
|
}] });
|
|
288
291
|
|
|
@@ -1889,6 +1892,7 @@
|
|
|
1889
1892
|
exports.ProcessComponent = ProcessComponent;
|
|
1890
1893
|
exports.ProcessStates = ProcessStates;
|
|
1891
1894
|
exports.ProcessesComponent = ProcessesComponent;
|
|
1895
|
+
exports.QueryLogsComponent = QueryLogsComponent;
|
|
1892
1896
|
exports.ServerLogComponent = ServerLogComponent;
|
|
1893
1897
|
exports.ServerLogsComponent = ServerLogsComponent;
|
|
1894
1898
|
exports.SettingsComponent = SettingsComponent;
|