Compare commits
	
		
			18 Commits
		
	
	
		
			git-info-f
			...
			v1.4.0-rc6
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | cb8e906f93 | ||
|   | be746db774 | ||
|   | de9d972cf6 | ||
|   | 5ac43ccf6a | ||
|   | d29b4d3b83 | ||
|   | 541e96a20a | ||
|   | 1554823416 | ||
|   | 674a888d80 | ||
|   | ec9dbabc46 | ||
|   | c148160fa8 | ||
|   | 8b45dae1f1 | ||
|   | 1ec0274984 | ||
|   | 9de1927834 | ||
|   | df3991cbd5 | ||
|   | 528a2aad8c | ||
|   | c9a29d0854 | ||
|   | d28c4e8711 | ||
|   | ac04983c5b | 
| @@ -46,6 +46,7 @@ define( | ||||
|                 filter = filter.trim().toLowerCase(); | ||||
|  | ||||
|                 let rowsToFilter = this.getRowsToFilter(columnKey, filter); | ||||
|  | ||||
|                 if (filter.length === 0) { | ||||
|                     delete this.columnFilters[columnKey]; | ||||
|                 } else { | ||||
| @@ -56,6 +57,16 @@ define( | ||||
|                 this.emit('filter'); | ||||
|             } | ||||
|  | ||||
|             setColumnRegexFilter(columnKey, filter) { | ||||
|                 filter = filter.trim(); | ||||
|  | ||||
|                 let rowsToFilter = this.masterCollection.getRows(); | ||||
|  | ||||
|                 this.columnFilters[columnKey] = new RegExp(filter); | ||||
|                 this.rows = rowsToFilter.filter(this.matchesFilters, this); | ||||
|                 this.emit('filter'); | ||||
|             } | ||||
|  | ||||
|             /** | ||||
|              * @private | ||||
|              */ | ||||
| @@ -71,6 +82,10 @@ define( | ||||
|              * @private | ||||
|              */ | ||||
|             isSubsetOfCurrentFilter(columnKey, filter) { | ||||
|                 if (this.columnFilters[columnKey] instanceof RegExp) { | ||||
|                     return false; | ||||
|                 } | ||||
|  | ||||
|                 return this.columnFilters[columnKey] | ||||
|                     && filter.startsWith(this.columnFilters[columnKey]) | ||||
|                     // startsWith check will otherwise fail when filter cleared | ||||
| @@ -97,7 +112,11 @@ define( | ||||
|                         return false; | ||||
|                     } | ||||
|  | ||||
|                     doesMatchFilters = formattedValue.toLowerCase().indexOf(this.columnFilters[key]) !== -1; | ||||
|                     if (this.columnFilters[key] instanceof RegExp) { | ||||
|                         doesMatchFilters = this.columnFilters[key].test(formattedValue); | ||||
|                     } else { | ||||
|                         doesMatchFilters = formattedValue.toLowerCase().indexOf(this.columnFilters[key]) !== -1; | ||||
|                     } | ||||
|                 }); | ||||
|  | ||||
|                 return doesMatchFilters; | ||||
|   | ||||
| @@ -188,7 +188,17 @@ | ||||
|                                 class="c-table__search" | ||||
|                                 @input="filterChanged(key)" | ||||
|                                 @clear="clearFilter(key)" | ||||
|                             /> | ||||
|                             > | ||||
|  | ||||
|                                 <button | ||||
|                                     class="c-search__use-regex" | ||||
|                                     :class="{ 'is-active': enableRegexSearch[key] }" | ||||
|                                     title="Click to enable regex: enter a string with slashes, like this: /regex_exp/" | ||||
|                                     @click="toggleRegex(key)" | ||||
|                                 > | ||||
|                                     /R/ | ||||
|                                 </button> | ||||
|                             </search> | ||||
|                         </table-column-header> | ||||
|                     </tr> | ||||
|                 </thead> | ||||
| @@ -361,6 +371,7 @@ export default { | ||||
|             paused: false, | ||||
|             markedRows: [], | ||||
|             isShowingMarkedRowsOnly: false, | ||||
|             enableRegexSearch: {}, | ||||
|             hideHeaders: configuration.hideHeaders, | ||||
|             totalNumberOfRows: 0 | ||||
|         }; | ||||
| @@ -618,7 +629,16 @@ export default { | ||||
|             this.headersHolderEl.scrollLeft = this.scrollable.scrollLeft; | ||||
|         }, | ||||
|         filterChanged(columnKey) { | ||||
|             this.table.filteredRows.setColumnFilter(columnKey, this.filters[columnKey]); | ||||
|             if (this.enableRegexSearch[columnKey]) { | ||||
|                 if (this.isCompleteRegex(this.filters[columnKey])) { | ||||
|                     this.table.filteredRows.setColumnRegexFilter(columnKey, this.filters[columnKey].slice(1, -1)); | ||||
|                 } else { | ||||
|                     return; | ||||
|                 } | ||||
|             } else { | ||||
|                 this.table.filteredRows.setColumnFilter(columnKey, this.filters[columnKey]); | ||||
|             } | ||||
|  | ||||
|             this.setHeight(); | ||||
|         }, | ||||
|         clearFilter(columnKey) { | ||||
| @@ -956,6 +976,18 @@ export default { | ||||
|  | ||||
|             this.$nextTick().then(this.calculateColumnWidths); | ||||
|         }, | ||||
|         toggleRegex(key) { | ||||
|             this.$set(this.filters, key, ''); | ||||
|  | ||||
|             if (this.enableRegexSearch[key] === undefined) { | ||||
|                 this.$set(this.enableRegexSearch, key, true); | ||||
|             } else { | ||||
|                 this.$set(this.enableRegexSearch, key, !this.enableRegexSearch[key]); | ||||
|             } | ||||
|         }, | ||||
|         isCompleteRegex(string) { | ||||
|             return (string.length > 2 && string[0] === '/' && string[string.length - 1] === '/'); | ||||
|         }, | ||||
|         getViewContext() { | ||||
|             return { | ||||
|                 type: 'telemetry-table', | ||||
|   | ||||
| @@ -1,6 +1,11 @@ | ||||
| @mixin visibleRegexButton { | ||||
|     opacity: 1; | ||||
|     padding: 1px 3px; | ||||
|     width: 24px; | ||||
| } | ||||
|  | ||||
| .c-search { | ||||
|     @include wrappedInput(); | ||||
|  | ||||
|     padding-top: 2px; | ||||
|     padding-bottom: 2px; | ||||
|  | ||||
| @@ -9,11 +14,46 @@ | ||||
|         content: $glyph-icon-magnify; | ||||
|     } | ||||
|  | ||||
|     &__use-regex { | ||||
|         // Button | ||||
|         $c: $colorBodyFg; | ||||
|         background: rgba($c, 0.2); | ||||
|         border: 1px solid rgba($c, 0.3); | ||||
|         color: $c; | ||||
|         border-radius: $controlCr; | ||||
|         font-weight: bold; | ||||
|         letter-spacing: 1px; | ||||
|         font-size: 0.8em; | ||||
|         margin-left: $interiorMarginSm; | ||||
|         min-width: 0; | ||||
|         opacity: 0; | ||||
|         order: 2; | ||||
|         overflow: hidden; | ||||
|         padding: 1px 0; | ||||
|         transform-origin: left; | ||||
|         transition: $transOut; | ||||
|         width: 0; | ||||
|  | ||||
|         &.is-active { | ||||
|             $c: $colorBtnActiveBg; | ||||
|             @include visibleRegexButton(); | ||||
|             background: rgba($c, 0.3); | ||||
|             border-color: $c; | ||||
|             color: $c; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     &__clear-input { | ||||
|         display: none; | ||||
|         order: 99; | ||||
|         padding: 1px 0; | ||||
|     } | ||||
|  | ||||
|     &.is-active { | ||||
|         .c-search__use-regex { | ||||
|             margin-left: 0; | ||||
|         } | ||||
|  | ||||
|         .c-search__clear-input { | ||||
|             display: block; | ||||
|         } | ||||
| @@ -21,6 +61,15 @@ | ||||
|  | ||||
|     input[type='text'], | ||||
|     input[type='search'] { | ||||
|         margin-left: $interiorMargin; | ||||
|         order: 3; | ||||
|         text-align: left; | ||||
|     } | ||||
|  | ||||
|     &:hover { | ||||
|         .c-search__use-regex { | ||||
|             @include visibleRegexButton(); | ||||
|             transition: $transIn; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -15,6 +15,7 @@ | ||||
|         class="c-search__clear-input icon-x-in-circle" | ||||
|         @click="clearInput" | ||||
|     ></a> | ||||
|     <slot></slot> | ||||
| </div> | ||||
| </template> | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user