Untitled diff

Created Diff never expires
44 removals
62 lines
31 additions
46 lines
import { inject as service } from '@ember/service';
import { inject as service } from "@ember-decorators/service";
import Component from '@ember/component';
import Component from '@ember/component';
import { computed } from '@ember/object';
import { action, wrapComputed, computed } from "@ember/object";
import { isEmpty } from '@ember/utils';
import { isEmpty } from '@ember/utils';
import { task } from 'ember-concurrency';
import { task } from 'ember-concurrency';
import { filterByFilePath } from '../utils';
import { filterByFilePath } from '../utils';


export default Component.extend({
export default class AddonSourceUsagesComponent extends Component {
visibleUsageCount: 25,
visibleUsageCount = 25;

showUsages = false;
showUsages: false,
usages = null;
regex = false;
fileFilter = null;


usages: null,
@service codeSearch;


regex: false,
@computed('visibleUsageCount', 'usages')

get visibleUsages() {
fileFilter: null,

codeSearch: service(),

visibleUsages: computed('visibleUsageCount', 'usages', function() {
return this.usages.slice(0, this.visibleUsageCount);
return this.usages.slice(0, this.visibleUsageCount);
}),
}


moreUsages: computed('visibleUsageCount', 'usages', function() {
@computed('visibleUsageCount', 'usages')
get moreUsages() {
return this.visibleUsageCount < this.usages.length;
return this.visibleUsageCount < this.usages.length;
}),
}


fetchUsages: task(function* () {
@(task(function* () {
let usages = yield this.codeSearch.usages.perform(this.addon.id, this.query, this.regex);
let usages = yield this.codeSearch.usages.perform(this.addon.id, this.query, this.regex);
this.set('usages', filterByFilePath(usages, this.fileFilter));
this.set('usages', filterByFilePath(usages, this.fileFilter));
}).drop(),
}).drop())

fetchUsages;
actions: {
toggleUsages() {
this.toggleProperty('showUsages');
if (this.showUsages && this.usages === null) {
this.fetchUsages.perform();
}
},


viewMore() {
@action
let newUsageCount = this.visibleUsageCount + 25;
toggleUsages() {
this.set('visibleUsageCount', newUsageCount);
this.toggleProperty('showUsages');
if (this.showUsages && this.usages === null) {
this.fetchUsages.perform();
}
}
}
}
});


function filterByFilePath(usages, filterTerm) {
@action
if (isEmpty(filterTerm)) {
viewMore() {
return usages;
let newUsageCount = this.visibleUsageCount + 25;
this.set('visibleUsageCount', newUsageCount);
}
}
let filterRegex;
try {
filterRegex = new RegExp(filterTerm);
} catch(e) {
return [];
}
return usages.filter((usage) => {
return usage.filename.match(filterRegex);
});
}
}