Repo for the search and displace core module including the interface to select files and search and displace operations to run on them. https://searchanddisplace.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

86 lines
2.4 KiB

<template>
<div>
<h1> Searchers </h1>
<div v-if=" ! allowSelect" style="margin-bottom: 1rem;">
<a href="/searchers/create">
<Button class="fc-button p-button-success">
Add searcher
</Button>
</a>
</div>
<div class="content">
<DataTable
:value.sync="searchers"
:selection.sync="selectedSearcher"
dataKey="id"
:selectionMode="allowSelect ? 'single' : ''"
class="p-datatable-md"
:paginator="true"
:rows="10"
paginatorTemplate="CurrentPageReport FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink RowsPerPageDropdown"
currentPageReportTemplate="Showing {first} to {last} of {totalRecords}"
:rowsPerPageOptions="[10,20,50]">
<Column v-if="allowSelect" selectionMode="single" headerStyle="width: 3em"></Column>
<Column header="Name" sortable>
<template #body="slotProps">
<a @click.stop="onOpen(slotProps.data.id)" class="searcher-link">
{{ slotProps.data.name }}
</a>
</template>
</Column>
</DataTable>
</div>
</div>
</template>
<script lang="ts">
import {Component, Prop, Vue, Watch} from "vue-property-decorator";
import {Searcher} from "@/interfaces/Searcher";
@Component({
})
export default class Index extends Vue {
private searchers: Array<Searcher> = [];
private selectedSearcher: any = {};
@Prop({default: false})
public readonly allowSelect!: boolean;
@Prop({default: () => []})
public readonly ignoreSearcherIds!: Array<string>;
async boot() {
try {
const { data } = await (window as any).axios.get('/searchers');
this.searchers = data.searchers.filter((searcher: Searcher) => {
return ! this.ignoreSearcherIds.includes(searcher.id);
});
} catch (e) {
}
}
onOpen(id: string) {
window.open(this.getURL(id), '_blank');
}
getURL(id: string) {
return `/searchers/${id}`;
}
@Watch('selectedSearcher')
selectedSearcherIdChanged(value: any) {
this.$emit('selected', value);
}
created() {
this.boot();
}
};
</script>