tns-template-master-detail-progress-ng
Version:
Master-detail interface to display tables from a Progress backend and inspect and edit selected records.
74 lines (50 loc) • 4.58 kB
Markdown
# NativeScript with Angular Master Detail Template
Master Detail template to access a Progress Data Object backend.
App templates help you jump start your native cross-platform apps with built-in UI elements and best practices. Save time writing boilerplate code over and over again when you create new apps.
This Master-Detail template is a fundamental building block for any app that displays collection of objects and their details.
The Master Detail template provides support for CRUD operations, server-filtering and server-side sorting using an OpenEdge backend.
The following authentication modes can be used:
* Anonymous
* Basic authentication
* Form-based authentication
## Quick Start
Execute the following command to create an app from this template:
```
tns create my-app-name --template tns-template-master-detail-progress-ng
```
> Note: This command will create a new NativeScript app that uses the latest version of this template published to [npm] (https://www.npmjs.com/package/tns-template-master-detail-progress-ng).
If you want to create a new app that uses the source of the template from the `master` branch, you can execute the following:
```
tns create my-app-name --template https://github.com/progress/template-master-detail-progress-ng
```
## Walkthrough
### Architecture
The template has the following components:
- `/customers/customer-list/customer-list.component.ts` - the master list component. It gets the data and displays it in a list. On item tap, it navigates to the item details component. Use swipe action to delete items.
- `/customers/customer-detail/customer-detail.component.ts` - the item details component. Displays the details of the tapped item. Has an `Edit` button that leads to the edit component.
- `/customers/customer-detail-edit/customer-detail-edit.component.ts` - the item details edit component. Provides edit options for the selected item. The `Done` button saves the changes. This component also provides support for the create and delete operations in addition to the update operation.
There is one model to represent the data items:
- `/customers/shared/customer.model.ts`
The template also provides a data service:
- `/customers/shared/customer.service.ts` - serves as a data layer for the master-detail data items. Wraps the functions that are used to make operations on the OpenEdge database.
There is 2nd model to represent state items to be used in a ListPicker when editing a customer row:
- `/customers/shared/state.model.ts`
The template also provides a state data service to retreive state items from an OpenEdge database:
- `/customers/shared/state.service.ts`
### Styling
This template is set up to use SASS for styling. All classes used are based on the {N} core theme . consult the [documentation](https://docs.nativescript.org/angular/ui/theme.html#theme) to understand how to customize it. Check it out to see what classes you can use on which component.
It has 4 global style files that are located at the root of the app folder:
- `_app-variables.scss` - holds the global SASS variables that are imported on each component's styles.
- `app.scss` - the global common style sheet. These style rules are applied to both Android and iOS.
- `platform.android.scss` - the global Android style sheet. These style rules are applied to Android only.
- `platform.ios.scss` - the global iOS style sheet. These style rules are applied to iOS only.
Each component has 3 style files located in its folder:
- `_page-name.scss` - the component common style sheet. These style rules are applied to both Android and iOS.
- `page-name.android.scss` - the component Android style sheet. These style rules are applied to Android only.
- `page-name.ios.scss` - the component iOS style sheet. These style rules are applied to iOS only.
## Get Help
The NativeScript framework has a vibrant community that can help when you run into problems.
Try [joining the NativeScript community Slack](http://developer.telerik.com/wp-login.php?action=slack-invitation). The Slack channel is a great place to get help troubleshooting problems, as well as connect with other NativeScript developers.
If you have found an issue with this template, please report the problem in the [Issues](https://github.com/progress/template-master-detail-progress-ng/issues).
## Contributing
We love PRs, and accept them gladly. Feel free to propose changes and new ideas. We will review and discuss, so that they can be accepted and better integrated.