filter with runner
This commit is contained in:
parent
418b02acd7
commit
afc2c1f8a1
@ -346,7 +346,7 @@ export class CompactFilterComponent implements OnInit, OnChanges {
|
|||||||
|
|
||||||
return this.filterValue.includes(option);
|
return this.filterValue.includes(option);
|
||||||
}
|
}
|
||||||
|
// need to check this
|
||||||
// Add method to handle multiselect option change
|
// Add method to handle multiselect option change
|
||||||
onMultiselectOptionChange(event: any, option: string): void {
|
onMultiselectOptionChange(event: any, option: string): void {
|
||||||
// Initialize filterValue array if it doesn't exist
|
// Initialize filterValue array if it doesn't exist
|
||||||
|
|||||||
@ -1,3 +1,6 @@
|
|||||||
|
<!-- Debug: Show all input values -->
|
||||||
|
|
||||||
|
|
||||||
<!-- Display Mode - No configuration UI in runner -->
|
<!-- Display Mode - No configuration UI in runner -->
|
||||||
<div class="compact-filter">
|
<div class="compact-filter">
|
||||||
<div class="filter-header">
|
<div class="filter-header">
|
||||||
@ -6,6 +9,16 @@
|
|||||||
<span class="filter-type">({{ filterType }})</span>
|
<span class="filter-type">({{ filterType }})</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Debug: Show which filter type is active -->
|
||||||
|
<div style="background-color: yellow; padding: 5px; margin: 5px;">
|
||||||
|
Current filter type: {{ filterType }}
|
||||||
|
<div *ngIf="filterType === 'text'">Showing TEXT filter</div>
|
||||||
|
<div *ngIf="filterType === 'dropdown'">Showing DROPDOWN filter</div>
|
||||||
|
<div *ngIf="filterType === 'multiselect'">Showing MULTISELECT filter</div>
|
||||||
|
<div *ngIf="filterType === 'date-range'">Showing DATE-RANGE filter</div>
|
||||||
|
<div *ngIf="filterType === 'toggle'">Showing TOGGLE filter</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Text Filter -->
|
<!-- Text Filter -->
|
||||||
<div class="filter-control" *ngIf="filterType === 'text'">
|
<div class="filter-control" *ngIf="filterType === 'text'">
|
||||||
<input type="text"
|
<input type="text"
|
||||||
@ -21,19 +34,22 @@
|
|||||||
(ngModelChange)="onFilterValueChange($event)"
|
(ngModelChange)="onFilterValueChange($event)"
|
||||||
class="clr-select compact-select">
|
class="clr-select compact-select">
|
||||||
<option value="">{{ filterLabel || filterKey }}</option>
|
<option value="">{{ filterLabel || filterKey }}</option>
|
||||||
<option *ngFor="let option of filterOptions" [value]="option">{{ option }}</option>
|
<option *ngFor="let option of filterOptions; let i = index" [value]="option">{{ option }}</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Multi-Select Filter -->
|
<!-- Multi-Select Filter -->
|
||||||
<div class="filter-control" *ngIf="filterType === 'multiselect'">
|
<div class="filter-control" *ngIf="filterType === 'multiselect'">
|
||||||
|
<div class="multiselect-container">
|
||||||
<div class="checkbox-group">
|
<div class="checkbox-group">
|
||||||
<div *ngFor="let option of filterOptions" class="checkbox-item">
|
<div *ngFor="let option of filterOptions; let i = index" class="checkbox-item">
|
||||||
<input type="checkbox"
|
<input type="checkbox"
|
||||||
[checked]="filterValue && filterValue.includes(option)"
|
[checked]="isOptionSelected(option)"
|
||||||
(change)="onMultiSelectChange(option, $event)"
|
(change)="onMultiSelectChange(option, $event)"
|
||||||
[id]="'checkbox-' + option">
|
[id]="'checkbox-' + filterKey + '-' + i"
|
||||||
<label [for]="'checkbox-' + option">{{ option }}</label>
|
class="clr-checkbox">
|
||||||
|
<label [for]="'checkbox-' + filterKey + '-' + i" class="checkbox-label">{{ option }}</label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,74 +1,148 @@
|
|||||||
|
// Make sure the component is visible with very obvious styling
|
||||||
.compact-filter {
|
.compact-filter {
|
||||||
padding: 10px;
|
display: block !important;
|
||||||
border: 1px solid #ddd;
|
min-width: 200px !important;
|
||||||
border-radius: 4px;
|
max-width: 300px !important;
|
||||||
margin-bottom: 10px;
|
margin: 10px !important;
|
||||||
background-color: #f8f8f8;
|
padding: 15px !important;
|
||||||
|
background: #e3f2fd !important; // Light blue background
|
||||||
|
border: 3px solid #1976d2 !important; // Dark blue border
|
||||||
|
border-radius: 8px !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
|
||||||
.filter-header {
|
.filter-header {
|
||||||
display: flex;
|
display: flex !important;
|
||||||
justify-content: space-between;
|
justify-content: space-between !important;
|
||||||
align-items: center;
|
align-items: center !important;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px !important;
|
||||||
|
padding: 5px !important;
|
||||||
|
background: #bbdefb !important; // Lighter blue header
|
||||||
|
border-radius: 4px !important;
|
||||||
|
|
||||||
.filter-label, .filter-key {
|
.filter-label, .filter-key {
|
||||||
font-weight: bold;
|
font-weight: bold !important;
|
||||||
|
white-space: nowrap !important;
|
||||||
|
overflow: hidden !important;
|
||||||
|
text-overflow: ellipsis !important;
|
||||||
|
flex-grow: 1 !important;
|
||||||
|
color: #0d47a1 !important; // Dark blue text
|
||||||
}
|
}
|
||||||
|
|
||||||
.filter-type {
|
.filter-type {
|
||||||
font-size: 0.8em;
|
font-size: 12px !important;
|
||||||
color: #666;
|
color: #424242 !important;
|
||||||
|
margin-left: 8px !important;
|
||||||
|
background: #fff !important;
|
||||||
|
padding: 2px 6px !important;
|
||||||
|
border-radius: 10px !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.filter-control {
|
.filter-control {
|
||||||
margin-bottom: 10px;
|
display: block !important;
|
||||||
|
margin: 8px 0 !important;
|
||||||
.compact-input, .compact-select, .compact-date {
|
padding: 8px !important;
|
||||||
width: 100%;
|
background: #f5f5f5 !important;
|
||||||
padding: 5px;
|
border-radius: 4px !important;
|
||||||
border: 1px solid #ccc;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.compact-multiselect {
|
|
||||||
width: 100%;
|
|
||||||
height: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.checkbox-group {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
|
|
||||||
.checkbox-item {
|
|
||||||
margin: 5px 0;
|
|
||||||
|
|
||||||
input[type="checkbox"] {
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.date-range {
|
&.date-range {
|
||||||
display: flex;
|
display: flex !important;
|
||||||
gap: 10px;
|
flex-direction: column !important;
|
||||||
|
gap: 5px !important;
|
||||||
.compact-date {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&.toggle {
|
&.toggle {
|
||||||
display: flex;
|
display: flex !important;
|
||||||
align-items: center;
|
align-items: center !important;
|
||||||
|
justify-content: flex-start !important;
|
||||||
|
gap: 8px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.clr-toggle {
|
.compact-input,
|
||||||
margin-right: 10px;
|
.compact-select,
|
||||||
|
.compact-multiselect,
|
||||||
|
.compact-date {
|
||||||
|
width: 100% !important;
|
||||||
|
padding: 8px 12px !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
border-radius: 4px !important;
|
||||||
|
min-height: 36px !important;
|
||||||
|
border: 2px solid #4caf50 !important; // Green border
|
||||||
|
background: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.compact-select {
|
||||||
|
height: 36px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.multiselect-container {
|
||||||
|
max-height: 200px !important;
|
||||||
|
overflow-y: auto !important;
|
||||||
|
border: 2px solid #ff9800 !important; // Orange border
|
||||||
|
border-radius: 4px !important;
|
||||||
|
padding: 10px !important;
|
||||||
|
background: #fff8e1 !important; // Light yellow background
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkbox-group {
|
||||||
|
display: flex !important;
|
||||||
|
flex-direction: column !important;
|
||||||
|
gap: 8px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkbox-item {
|
||||||
|
display: flex !important;
|
||||||
|
align-items: center !important;
|
||||||
|
gap: 8px !important;
|
||||||
|
padding: 5px !important;
|
||||||
|
border-radius: 4px !important;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: #f0f0f0 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkbox-label {
|
||||||
|
font-size: 14px !important;
|
||||||
|
margin: 0 !important;
|
||||||
|
cursor: pointer !important;
|
||||||
|
white-space: nowrap !important;
|
||||||
|
overflow: hidden !important;
|
||||||
|
text-overflow: ellipsis !important;
|
||||||
|
color: #333 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clr-checkbox {
|
||||||
|
margin: 0 !important;
|
||||||
|
cursor: pointer !important;
|
||||||
|
width: 18px !important;
|
||||||
|
height: 18px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.toggle-label {
|
.toggle-label {
|
||||||
margin: 0;
|
margin: 0 !important;
|
||||||
}
|
font-size: 14px !important;
|
||||||
|
white-space: nowrap !important;
|
||||||
|
overflow: hidden !important;
|
||||||
|
text-overflow: ellipsis !important;
|
||||||
|
max-width: 200px !important;
|
||||||
|
color: #333 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.clr-toggle {
|
||||||
|
margin: 0 8px 0 0 !important;
|
||||||
|
width: 40px !important;
|
||||||
|
height: 20px !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add a very obvious background to make sure the component is visible
|
||||||
|
:host {
|
||||||
|
display: block !important;
|
||||||
|
background-color: #fffde7 !important; // Very light yellow
|
||||||
|
padding: 15px !important;
|
||||||
|
margin: 15px !important;
|
||||||
|
border: 4px solid #f57f17 !important; // Orange border
|
||||||
|
border-radius: 10px !important;
|
||||||
|
}
|
||||||
@ -23,17 +23,20 @@ export class CompactFilterRunnerComponent implements OnInit, OnChanges {
|
|||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private filterService: FilterService
|
private filterService: FilterService
|
||||||
) { }
|
) {
|
||||||
|
console.log('=== COMPACT FILTER RUNNER CONSTRUCTOR CALLED ===');
|
||||||
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
console.log('CompactFilterRunnerComponent initialized with inputs:', {
|
console.log('=== COMPACT FILTER RUNNER DEBUG INFO ===');
|
||||||
filterKey: this.filterKey,
|
console.log('Component initialized with inputs:');
|
||||||
filterType: this.filterType,
|
console.log('- filterKey:', this.filterKey);
|
||||||
filterOptions: this.filterOptions,
|
console.log('- filterType:', this.filterType);
|
||||||
filterLabel: this.filterLabel,
|
console.log('- filterOptions:', this.filterOptions);
|
||||||
apiUrl: this.apiUrl,
|
console.log('- filterLabel:', this.filterLabel);
|
||||||
connection: this.connection
|
console.log('- apiUrl:', this.apiUrl);
|
||||||
});
|
console.log('- connection:', this.connection);
|
||||||
|
console.log('========================================');
|
||||||
|
|
||||||
// Register this filter with the filter service
|
// Register this filter with the filter service
|
||||||
this.registerFilter();
|
this.registerFilter();
|
||||||
@ -41,24 +44,30 @@ export class CompactFilterRunnerComponent implements OnInit, OnChanges {
|
|||||||
// Subscribe to filter definitions to get available filters
|
// Subscribe to filter definitions to get available filters
|
||||||
this.filterService.filters$.subscribe(filters => {
|
this.filterService.filters$.subscribe(filters => {
|
||||||
this.availableFilters = filters;
|
this.availableFilters = filters;
|
||||||
|
console.log('Available filters updated:', filters);
|
||||||
this.updateSelectedFilter();
|
this.updateSelectedFilter();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Subscribe to filter state changes
|
// Subscribe to filter state changes
|
||||||
this.filterService.filterState$.subscribe(state => {
|
this.filterService.filterState$.subscribe(state => {
|
||||||
|
console.log('Filter state updated:', state);
|
||||||
if (this.selectedFilter && state.hasOwnProperty(this.selectedFilter.id)) {
|
if (this.selectedFilter && state.hasOwnProperty(this.selectedFilter.id)) {
|
||||||
this.filterValue = state[this.selectedFilter.id];
|
this.filterValue = state[this.selectedFilter.id];
|
||||||
|
console.log('Filter value updated for', this.selectedFilter.id, ':', this.filterValue);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnChanges(changes: SimpleChanges): void {
|
ngOnChanges(changes: SimpleChanges): void {
|
||||||
console.log('CompactFilterRunnerComponent inputs changed:', changes);
|
console.log('=== COMPACT FILTER RUNNER CHANGES DEBUG ===');
|
||||||
|
console.log('Component inputs changed:', changes);
|
||||||
|
|
||||||
// If filterKey or filterType changes, re-register the filter
|
// If filterKey or filterType changes, re-register the filter
|
||||||
if (changes.filterKey || changes.filterType || changes.filterOptions) {
|
if (changes.filterKey || changes.filterType || changes.filterOptions) {
|
||||||
|
console.log('Re-registering filter due to input changes');
|
||||||
this.registerFilter();
|
this.registerFilter();
|
||||||
}
|
}
|
||||||
|
console.log('==========================================');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register this filter with the filter service
|
// Register this filter with the filter service
|
||||||
@ -68,6 +77,7 @@ export class CompactFilterRunnerComponent implements OnInit, OnChanges {
|
|||||||
if (this.filterKey) {
|
if (this.filterKey) {
|
||||||
// Get current filter values from the service
|
// Get current filter values from the service
|
||||||
const currentFilterValues = this.filterService.getFilterValues();
|
const currentFilterValues = this.filterService.getFilterValues();
|
||||||
|
console.log('Current filter values from service:', currentFilterValues);
|
||||||
|
|
||||||
// Create a filter definition for this compact filter
|
// Create a filter definition for this compact filter
|
||||||
const filterDef: Filter = {
|
const filterDef: Filter = {
|
||||||
@ -83,9 +93,11 @@ export class CompactFilterRunnerComponent implements OnInit, OnChanges {
|
|||||||
|
|
||||||
// Get current filters
|
// Get current filters
|
||||||
const currentFilters = this.filterService.getFilters();
|
const currentFilters = this.filterService.getFilters();
|
||||||
|
console.log('Current filters from service:', currentFilters);
|
||||||
|
|
||||||
// Check if this filter is already registered
|
// Check if this filter is already registered
|
||||||
const existingFilterIndex = currentFilters.findIndex(f => f.id === filterDef.id);
|
const existingFilterIndex = currentFilters.findIndex(f => f.id === filterDef.id);
|
||||||
|
console.log('Existing filter index:', existingFilterIndex);
|
||||||
|
|
||||||
if (existingFilterIndex >= 0) {
|
if (existingFilterIndex >= 0) {
|
||||||
// Preserve the existing filter configuration
|
// Preserve the existing filter configuration
|
||||||
@ -130,15 +142,20 @@ export class CompactFilterRunnerComponent implements OnInit, OnChanges {
|
|||||||
// Update the selected filter reference
|
// Update the selected filter reference
|
||||||
this.selectedFilter = filterDef;
|
this.selectedFilter = filterDef;
|
||||||
console.log('Selected filter set to:', this.selectedFilter);
|
console.log('Selected filter set to:', this.selectedFilter);
|
||||||
|
} else {
|
||||||
|
console.log('No filterKey provided, skipping filter registration');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
updateSelectedFilter(): void {
|
updateSelectedFilter(): void {
|
||||||
|
console.log('Updating selected filter. Filter key:', this.filterKey, 'Available filters:', this.availableFilters);
|
||||||
if (this.filterKey && this.availableFilters.length > 0) {
|
if (this.filterKey && this.availableFilters.length > 0) {
|
||||||
this.selectedFilter = this.availableFilters.find(f => f.field === this.filterKey) || null;
|
this.selectedFilter = this.availableFilters.find(f => f.field === this.filterKey) || null;
|
||||||
|
console.log('Found selected filter:', this.selectedFilter);
|
||||||
if (this.selectedFilter) {
|
if (this.selectedFilter) {
|
||||||
// Get current value for this filter from the service
|
// Get current value for this filter from the service
|
||||||
const currentState = this.filterService.getFilterValues();
|
const currentState = this.filterService.getFilterValues();
|
||||||
|
console.log('Current state from service:', currentState);
|
||||||
const filterValue = currentState[this.selectedFilter.id];
|
const filterValue = currentState[this.selectedFilter.id];
|
||||||
if (filterValue !== undefined) {
|
if (filterValue !== undefined) {
|
||||||
this.filterValue = filterValue;
|
this.filterValue = filterValue;
|
||||||
@ -181,8 +198,14 @@ export class CompactFilterRunnerComponent implements OnInit, OnChanges {
|
|||||||
this.onFilterValueChange(dateRange);
|
this.onFilterValueChange(dateRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Handle multi-select changes
|
// Handle multi-select changes
|
||||||
onMultiSelectChange(option: string, event: any): void {
|
onMultiSelectChange(option: string, event: any): void {
|
||||||
|
console.log('=== MULTISELECT CHANGE DEBUG ===');
|
||||||
|
console.log('Option:', option);
|
||||||
|
console.log('Event:', event);
|
||||||
|
console.log('Checked:', event.target.checked);
|
||||||
|
|
||||||
const checked = event.target.checked;
|
const checked = event.target.checked;
|
||||||
|
|
||||||
// Initialize filterValue as array if it's not already
|
// Initialize filterValue as array if it's not already
|
||||||
@ -194,13 +217,38 @@ export class CompactFilterRunnerComponent implements OnInit, OnChanges {
|
|||||||
// Add option to array if not already present
|
// Add option to array if not already present
|
||||||
if (!this.filterValue.includes(option)) {
|
if (!this.filterValue.includes(option)) {
|
||||||
this.filterValue.push(option);
|
this.filterValue.push(option);
|
||||||
|
console.log('Added option to filter value:', option);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Remove option from array
|
// Remove option from array
|
||||||
this.filterValue = this.filterValue.filter((item: string) => item !== option);
|
this.filterValue = this.filterValue.filter((item: string) => item !== option);
|
||||||
|
console.log('Removed option from filter value:', option);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log('Updated filter value:', this.filterValue);
|
||||||
|
|
||||||
// Emit the change
|
// Emit the change
|
||||||
this.onFilterValueChange(this.filterValue);
|
this.onFilterValueChange(this.filterValue);
|
||||||
|
console.log('==============================');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add method to check if an option is selected for checkboxes (needed for proper UI rendering)
|
||||||
|
isOptionSelected(option: string): boolean {
|
||||||
|
console.log('Checking if option is selected:', option, 'Current filter value:', this.filterValue);
|
||||||
|
if (!this.filterValue) {
|
||||||
|
console.log('No filter value, returning false');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure filterValue is an array for multiselect
|
||||||
|
if (!Array.isArray(this.filterValue)) {
|
||||||
|
console.log('Filter value is not an array, converting to array');
|
||||||
|
this.filterValue = [];
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = this.filterValue.includes(option);
|
||||||
|
console.log('Option', option, 'is selected:', result);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -26,6 +26,9 @@
|
|||||||
<!-- <span><button class="btn btn-primary" (click)="Export(item.name)">Export</button></span> -->
|
<!-- <span><button class="btn btn-primary" (click)="Export(item.name)">Export</button></span> -->
|
||||||
<!-- <span><app-line-runner (buttonClicked)="generatePDFFile()"></app-line-runner></span> -->
|
<!-- <span><app-line-runner (buttonClicked)="generatePDFFile()"></app-line-runner></span> -->
|
||||||
<!-- <h4 style="margin-top: 10px; margin-left: 10px;">{{ item.charttitle }}</h4> -->
|
<!-- <h4 style="margin-top: 10px; margin-left: 10px;">{{ item.charttitle }}</h4> -->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<ndc-dynamic class="no-drag"
|
<ndc-dynamic class="no-drag"
|
||||||
[ndcDynamicComponent]="item.component"
|
[ndcDynamicComponent]="item.component"
|
||||||
[ndcDynamicInputs]="getComponentInputs(item)"
|
[ndcDynamicInputs]="getComponentInputs(item)"
|
||||||
|
|||||||
@ -311,12 +311,18 @@ dashboard_name = "Dashtest";
|
|||||||
|
|
||||||
// Compact Filter specific inputs
|
// Compact Filter specific inputs
|
||||||
if (item.name === 'Compact Filter') {
|
if (item.name === 'Compact Filter') {
|
||||||
|
console.log('=== COMPACT FILTER INPUTS DEBUG ===');
|
||||||
|
console.log('Item data for compact filter:', item);
|
||||||
|
|
||||||
if (item.filterKey !== undefined) inputs.filterKey = item.filterKey;
|
if (item.filterKey !== undefined) inputs.filterKey = item.filterKey;
|
||||||
if (item.filterType !== undefined) inputs.filterType = item.filterType;
|
if (item.filterType !== undefined) inputs.filterType = item.filterType;
|
||||||
if (item.filterLabel !== undefined) inputs.filterLabel = item.filterLabel;
|
if (item.filterLabel !== undefined) inputs.filterLabel = item.filterLabel;
|
||||||
if (item.filterOptions !== undefined) inputs.filterOptions = item.filterOptions;
|
if (item.filterOptions !== undefined) inputs.filterOptions = item.filterOptions;
|
||||||
if (item.table !== undefined) inputs.apiUrl = item.table; // Use table as API URL for compact filter
|
if (item.table !== undefined) inputs.apiUrl = item.table; // Use table as API URL for compact filter
|
||||||
if (item.connection !== undefined) inputs.connection = item.connection ? parseInt(item.connection, 10) : undefined;
|
if (item.connection !== undefined) inputs.connection = item.connection ? parseInt(item.connection, 10) : undefined;
|
||||||
|
|
||||||
|
console.log('Final inputs for compact filter:', inputs);
|
||||||
|
console.log('==============================');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Grid View specific inputs
|
// Grid View specific inputs
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user