tns-template-master-detail-progress-ng
Version:
Master-detail interface to display tables from a Progress backend and inspect and edit selected records.
101 lines (85 loc) • 3.7 kB
text/typescript
import { Component, Input, OnInit } from "@angular/core";
import { RouterExtensions } from "nativescript-angular/router";
import { RadSideDrawerComponent } from "nativescript-ui-sidedrawer/angular";
import { ItemEventData } from "ui/list-view";
import { navigationCancelingError } from "@angular/router/src/shared";
import { confirm } from "tns-core-modules/ui/dialogs";
import { JsdoSettings } from "../jsdo.settings";
import { ProgressService } from "../progress.service";
({
selector: "SideDrawer",
moduleId: module.id,
templateUrl: "./side-drawer.component.html",
styleUrls: ["./side-drawer.component.css"]
})
export class SideDrawerComponent implements OnInit {
// The "selectedPage" is a component input property.
// It is used to pass the current page title from the containing page component.
() selectedPage: string;
// The "sideDrawer" is the actual drawer itself
() sideDrawer: RadSideDrawerComponent;
private _navigationItems: Array<any>;
private _isNotAnonymous: boolean = (JsdoSettings.authenticationModel !== "Anonymous");
constructor(
private routerExtensions: RouterExtensions,
private progressService: ProgressService
) {
}
// Use the SideDrawerComponent "onInit" event handler to initialize the properties data values.
// The navigationItems property is initialized here and is data bound to <ListView> in the SideDrawer view file.
// Add, remove or edit navigationItems to change what is displayed in the app drawer list.
ngOnInit(): void {
this._navigationItems = [
{
title: "Customers",
name: "customers",
route: "/customers"
}
];
if (this._isNotAnonymous) {
this._navigationItems.push({
title: "Log Out",
name: "logout",
route: "/login"
});
}
}
get navigationItems(): Array<any> {
return this._navigationItems;
}
// Use the "itemTap" event handler of the <ListView> component for handling list item taps.
// The "itemTap" event handler of the app drawer <ListView> is used to navigate the app
// based on the tapped navigationItem's route.
onNavigationItemTap(args: ItemEventData): void {
const navigationItemView = args.view;
const navigationItemRoute = navigationItemView.bindingContext.route;
if (navigationItemView.bindingContext.name === "logout") {
this.onLogout();
} else if (this.isPageSelected(navigationItemView.bindingContext.title)) {
this.sideDrawer.sideDrawer.closeDrawer();
} else {
this.routerExtensions.navigate([navigationItemRoute], {
transition: {
name: "fade"
}
});
}
}
onLogout(): void {
this.progressService.logout()
.then(() => {
this.routerExtensions.navigate(["/login"], {
clearHistory: true,
transition: {
name: "fade"
}
});
});
}
// The "isPageSelected" function is bound to every navigation item on the <ListView>.
// It is used to determine whether the item should have the "selected" class.
// The "selected" class changes the styles of the item, so that you know which page you are on.
isPageSelected(pageTitle: string): boolean {
return pageTitle === this.selectedPage;
}
}