blob: 64536ca8bed4be4794d9e8b14ac4d7182e1d6653 [file] [log] [blame]
/**
* @module module/leasing-list-sk
* @description <h2><code>leasing-list-sk</code></h2>
*
* <p>
* Displays leasing tasks.
* </p>
*
*/
import { define } from 'elements-sk/define';
import { html, TemplateResult } from 'lit-html';
import { upgradeProperty } from 'elements-sk/upgradeProperty';
import { ElementSk } from '../../../infra-sk/modules/ElementSk';
import '../leasing-task-sk';
import 'elements-sk/error-toast-sk';
import 'elements-sk/icon/folder-icon-sk';
import 'elements-sk/icon/gesture-icon-sk';
import 'elements-sk/icon/help-icon-sk';
import 'elements-sk/icon/home-icon-sk';
import 'elements-sk/icon/star-icon-sk';
import 'elements-sk/nav-button-sk';
import 'elements-sk/nav-links-sk';
import { doImpl } from '../leasing';
import '../../../infra-sk/modules/login-sk';
import { Task } from '../json';
export class LeasingListSk extends ElementSk {
private tasks: Task[] = [];
constructor() {
super(LeasingListSk.template);
this.fetchTasks();
}
private static template = (ele: LeasingListSk) => html`${ele.displayTasks()}`;
connectedCallback(): void {
super.connectedCallback();
upgradeProperty(this, 'filterByUser');
this._render();
}
attributeChangedCallback(name: string, oldValue: string, newValue: string): void {
switch (name) {
case 'filter_by_user':
if (newValue !== '') {
this.fetchTasks();
}
break;
default:
}
}
disconnectedCallback(): void {
super.disconnectedCallback();
}
private displayTasks(): TemplateResult[] {
return this.tasks.map((task) => html`
<leasing-task-sk .task=${task}></leasing-task-sk>
`);
}
private fetchTasks(): void {
const url = '/_/get_leases';
const details = {
filter_by_user: this.filterByUser,
};
doImpl(url, details, (json) => {
this.tasks = json;
this._render();
});
}
static get observedAttributes(): string[] {
return ['filter_by_user'];
}
/** @prop filter_by_user {String} User tasks should be filtered by. */
get filterByUser(): string {
return this.getAttribute('filter_by_user')!;
}
set filterByUser(val: string) {
this.setAttribute('filter_by_user', val);
}
}
define('leasing-list-sk', LeasingListSk);