Add empty state for crawls (#121)

This commit is contained in:
sua yoo 2022-01-29 15:55:44 -08:00 committed by GitHub
parent 7777a22829
commit b93ca4e833
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 44 additions and 58 deletions

View File

@ -221,7 +221,7 @@ export class CrawlTemplatesList extends LiteElement {
name="slash-circle" name="slash-circle"
></sl-icon ></sl-icon
><span class="inline-block align-middle text-0-400" ><span class="inline-block align-middle text-0-400"
>${msg("No crawls")}</span >${msg("No finished crawls")}</span
> >
`} `}
</div> </div>

View File

@ -239,12 +239,11 @@ export class CrawlTemplatesNew extends LiteElement {
</sl-select> </sl-select>
</div> </div>
</div> </div>
<div class="grid grid-flow-col gap-2 items-center mt-2"> <div class="flex items-center mt-2">
<span class="px-1">${msg("At")}</span> <span class="px-3">${msg("At")}</span>
<sl-select <sl-select
name="scheduleHour" name="scheduleHour"
value=${this.scheduleTime.hour} value=${this.scheduleTime.hour}
class="w-24"
?disabled=${!this.scheduleInterval} ?disabled=${!this.scheduleInterval}
@sl-select=${(e: any) => @sl-select=${(e: any) =>
(this.scheduleTime = { (this.scheduleTime = {
@ -257,11 +256,11 @@ export class CrawlTemplatesNew extends LiteElement {
html`<sl-menu-item value=${value}>${label}</sl-menu-item>` html`<sl-menu-item value=${value}>${label}</sl-menu-item>`
)} )}
</sl-select> </sl-select>
<span>:</span> <span class="px-1">:</span>
<sl-select <sl-select
name="scheduleMinute" name="scheduleMinute"
class="mr-2"
value=${this.scheduleTime.minute} value=${this.scheduleTime.minute}
class="w-24"
?disabled=${!this.scheduleInterval} ?disabled=${!this.scheduleInterval}
@sl-select=${(e: any) => @sl-select=${(e: any) =>
(this.scheduleTime = { (this.scheduleTime = {
@ -276,7 +275,6 @@ export class CrawlTemplatesNew extends LiteElement {
</sl-select> </sl-select>
<sl-select <sl-select
value=${this.scheduleTime.period} value=${this.scheduleTime.period}
class="w-24"
?disabled=${!this.scheduleInterval} ?disabled=${!this.scheduleInterval}
@sl-select=${(e: any) => @sl-select=${(e: any) =>
(this.scheduleTime = { (this.scheduleTime = {
@ -291,7 +289,7 @@ export class CrawlTemplatesNew extends LiteElement {
>${msg("PM", { desc: "Time AM/PM" })}</sl-menu-item >${msg("PM", { desc: "Time AM/PM" })}</sl-menu-item
> >
</sl-select> </sl-select>
<span class="px-1">${this.timeZoneShortName}</span> <span class="px-3">${this.timeZoneShortName}</span>
</div> </div>
<div class="text-sm text-gray-500 mt-2"> <div class="text-sm text-gray-500 mt-2">
${this.formattededNextCrawlDate ${this.formattededNextCrawlDate
@ -374,8 +372,7 @@ export class CrawlTemplatesNew extends LiteElement {
<sl-menu-item value="host">Host</sl-menu-item> <sl-menu-item value="host">Host</sl-menu-item>
<sl-menu-item value="any">Any</sl-menu-item> <sl-menu-item value="any">Any</sl-menu-item>
</sl-select> </sl-select>
<sl-checkbox <sl-checkbox name="extraHopsOne"
name="extraHopsOne"
>${msg("Include External Links ('one hop out')")} >${msg("Include External Links ('one hop out')")}
</sl-checkbox> </sl-checkbox>
<sl-input <sl-input

View File

@ -135,7 +135,15 @@ export class CrawlsList extends LiteElement {
return html` return html`
<main> <main>
<header class="pb-4">${this.renderControls()}</header> <header class="pb-4">${this.renderControls()}</header>
<section>${this.renderCrawlList()}</section> <section>
${this.crawls.length
? this.renderCrawlList()
: html`
<div class="border-t border-b py-5">
<p class="text-center text-0-500">${msg("No crawls yet.")}</p>
</div>
`}
</section>
<footer class="mt-2"> <footer class="mt-2">
<span class="text-0-400 text-sm"> <span class="text-0-400 text-sm">
${this.lastFetched ${this.lastFetched
@ -166,6 +174,7 @@ export class CrawlsList extends LiteElement {
placeholder=${msg("Search by Crawl Template name or ID")} placeholder=${msg("Search by Crawl Template name or ID")}
pill pill
clearable clearable
?disabled=${!this.crawls?.length}
@sl-input=${this.onSearchInput} @sl-input=${this.onSearchInput}
> >
<sl-icon name="search" slot="prefix"></sl-icon> <sl-icon name="search" slot="prefix"></sl-icon>
@ -186,7 +195,11 @@ export class CrawlsList extends LiteElement {
}; };
}} }}
> >
<sl-button slot="trigger" pill caret <sl-button
slot="trigger"
pill
caret
?disabled=${!this.crawls?.length}
>${(sortableFieldLabels as any)[this.orderBy.field] || >${(sortableFieldLabels as any)[this.orderBy.field] ||
sortableFieldLabels[ sortableFieldLabels[
`${this.orderBy.field}_${this.orderBy.direction}` `${this.orderBy.field}_${this.orderBy.direction}`

View File

@ -13,7 +13,7 @@ import "./crawl-templates-list";
import "./crawl-templates-new"; import "./crawl-templates-new";
import "./crawls-list"; import "./crawls-list";
export type ArchiveTab = "crawls" | "crawl-templates" | "settings" | "members"; export type ArchiveTab = "crawls" | "crawl-templates" | "members";
const defaultTab = "crawls"; const defaultTab = "crawls";
@ -114,12 +114,6 @@ export class Archive extends LiteElement {
this.navTo(`/archives/${this.archiveId}/crawl-templates`)} this.navTo(`/archives/${this.archiveId}/crawl-templates`)}
>${msg("Crawl Templates")} >${msg("Crawl Templates")}
</sl-tab> </sl-tab>
<sl-tab
slot="nav"
panel="settings"
?active=${this.archiveTab === "settings"}
>${msg("Settings")}</sl-tab
>
${showMembersTab ${showMembersTab
? html`<sl-tab ? html`<sl-tab
slot="nav" slot="nav"
@ -137,11 +131,6 @@ export class Archive extends LiteElement {
?active=${this.archiveTab === "crawl-templates"} ?active=${this.archiveTab === "crawl-templates"}
>${this.renderCrawlTemplates()}</sl-tab-panel >${this.renderCrawlTemplates()}</sl-tab-panel
> >
<sl-tab-panel
name="settings"
?active=${this.archiveTab === "settings"}
>${this.renderSettings()}</sl-tab-panel
>
${showMembersTab ${showMembersTab
? html`<sl-tab-panel ? html`<sl-tab-panel
name="members" name="members"
@ -170,24 +159,8 @@ export class Archive extends LiteElement {
} }
private renderCrawlTemplates() { private renderCrawlTemplates() {
const crawlConfig = this.viewStateData?.crawlConfig; if (this.crawlConfigId) {
if (this.isNewResourceTab || this.crawlConfigId) {
return html` return html`
<div class="md:grid grid-cols-6 gap-6">
<nav class="col-span-1 mb-6">
<a
class="font-medium text-sm text-primary hover:opacity-80 flex items-center"
href=${`/archives/${this.archiveId}/crawl-templates`}
@click=${this.navLink}
><sl-icon class="mr-1" name="arrow-left"></sl-icon> ${msg(
"Back to templates"
)}</a
>
</nav>
${this.crawlConfigId
? html`
<btrix-crawl-templates-detail <btrix-crawl-templates-detail
class="col-span-5 mt-6" class="col-span-5 mt-6"
.authState=${this.authState!} .authState=${this.authState!}
@ -195,15 +168,18 @@ export class Archive extends LiteElement {
.crawlConfigId=${this.crawlConfigId} .crawlConfigId=${this.crawlConfigId}
.isEditing=${this.isEditing} .isEditing=${this.isEditing}
></btrix-crawl-templates-detail> ></btrix-crawl-templates-detail>
` `;
: html` <btrix-crawl-templates-new }
if (this.isNewResourceTab) {
const crawlConfig = this.viewStateData?.crawlConfig;
return html` <btrix-crawl-templates-new
class="col-span-5 mt-6" class="col-span-5 mt-6"
.authState=${this.authState!} .authState=${this.authState!}
.archiveId=${this.archiveId!} .archiveId=${this.archiveId!}
.initialCrawlConfig=${crawlConfig} .initialCrawlConfig=${crawlConfig}
></btrix-crawl-templates-new>`} ></btrix-crawl-templates-new>`;
</div>
`;
} }
return html`<btrix-crawl-templates-list return html`<btrix-crawl-templates-list

View File

@ -69,7 +69,7 @@ export class Archives extends LiteElement {
} }
makeOnArchiveClick(archive: ArchiveData): Function { makeOnArchiveClick(archive: ArchiveData): Function {
const navigate = () => this.navTo(`/archives/${archive.id}/settings`); const navigate = () => this.navTo(`/archives/${archive.id}/crawls`);
if (typeof window.getSelection !== undefined) { if (typeof window.getSelection !== undefined) {
return () => { return () => {