@rolatech/angular-property 20.0.0-beta.13 → 20.0.0-beta.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{rolatech-angular-property-property-manage-viewings-index.component-BpzCLRiN.mjs → rolatech-angular-property-property-manage-viewings-index.component-CPGJsz-b.mjs} +2 -2
- package/fesm2022/{rolatech-angular-property-property-manage-viewings-index.component-BpzCLRiN.mjs.map → rolatech-angular-property-property-manage-viewings-index.component-CPGJsz-b.mjs.map} +1 -1
- package/fesm2022/{rolatech-angular-property-rolatech-angular-property-DSFZRtNt.mjs → rolatech-angular-property-rolatech-angular-property-BUtExPY1.mjs} +114 -11
- package/fesm2022/rolatech-angular-property-rolatech-angular-property-BUtExPY1.mjs.map +1 -0
- package/fesm2022/rolatech-angular-property.mjs +1 -1
- package/index.d.ts +1 -1
- package/package.json +5 -5
- package/themes/_default.scss +1 -1
- package/fesm2022/rolatech-angular-property-rolatech-angular-property-DSFZRtNt.mjs.map +0 -1
|
@@ -6,7 +6,7 @@ import { MatButtonModule } from '@angular/material/button';
|
|
|
6
6
|
import * as i1 from '@angular/router';
|
|
7
7
|
import { RouterModule } from '@angular/router';
|
|
8
8
|
import { PropertyService } from '@rolatech/angular-services';
|
|
9
|
-
import { P as PropertyViewingItemComponent } from './rolatech-angular-property-rolatech-angular-property-
|
|
9
|
+
import { P as PropertyViewingItemComponent } from './rolatech-angular-property-rolatech-angular-property-BUtExPY1.mjs';
|
|
10
10
|
|
|
11
11
|
class PropertyManageViewingsIndexComponent extends BaseComponent {
|
|
12
12
|
propertyService = inject(PropertyService);
|
|
@@ -84,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
84
84
|
}] });
|
|
85
85
|
|
|
86
86
|
export { PropertyManageViewingsIndexComponent };
|
|
87
|
-
//# sourceMappingURL=rolatech-angular-property-property-manage-viewings-index.component-
|
|
87
|
+
//# sourceMappingURL=rolatech-angular-property-property-manage-viewings-index.component-CPGJsz-b.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rolatech-angular-property-property-manage-viewings-index.component-BpzCLRiN.mjs","sources":["../tmp-esm2022/lib/pages/property-manage/property-manage-viewings-index/property-manage-viewings-index.component.js"],"sourcesContent":["import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseComponent, EmptyComponent, TabComponent, TabsComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\nimport { PropertyService } from '@rolatech/angular-services';\nimport { PropertyViewingItemComponent } from '../../../components/property-viewing-item/property-viewing-item.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport class PropertyManageViewingsIndexComponent extends BaseComponent {\n propertyService = inject(PropertyService);\n select = 0;\n links = [\n {\n name: 'All',\n icon: 'dashboard',\n },\n {\n name: 'Completed',\n icon: 'category',\n status: 'completed',\n },\n {\n name: 'Cancelled',\n icon: 'category',\n status: 'cancelled',\n },\n ];\n filterOptions = {\n type: '',\n status: '',\n };\n viewings = [];\n ngOnInit() {\n this.route.queryParams.subscribe(({ status }) => {\n this.select = this.links.findIndex((item) => item.status === status);\n if (status) {\n this.filterOptions.status = status.toUpperCase();\n }\n else {\n delete this.filterOptions.status;\n }\n this.findViewings();\n });\n }\n findViewings() {\n const options = {\n sort: 'updatedAt desc',\n };\n const filterString = this.convertFilterOptions(this.filterOptions);\n if (filterString) {\n options['filter'] = filterString;\n }\n this.propertyService.findViewingsByAgent(options).subscribe({\n next: (res) => {\n this.viewings = res.data;\n },\n });\n }\n convertFilterOptions(jsonObj) {\n return Object.entries(jsonObj)\n .filter(([key, value]) => value !== '' && value !== undefined)\n .map(([key, value]) => {\n return `${key}:${value}`;\n })\n .join(',');\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PropertyManageViewingsIndexComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: PropertyManageViewingsIndexComponent, isStandalone: true, selector: \"rolatech-property-manage-viewings-index\", usesInheritance: true, ngImport: i0, template: \"<rolatech-toolbar title=\\\"Viewings\\\">\\n <div class=\\\"flex items-center gap-2\\\"></div>\\n</rolatech-toolbar>\\n<rolatech-tabs [select]=\\\"select\\\">\\n @for (item of links; track item) {\\n @if (item.status) {\\n <rolatech-tab [label]=\\\"item.name\\\" routerLink=\\\"./\\\" [queryParams]=\\\"{ status: item.status }\\\"></rolatech-tab>\\n } @else {\\n <rolatech-tab [label]=\\\"item.name\\\" routerLink=\\\"./\\\"></rolatech-tab>\\n }\\n }\\n</rolatech-tabs>\\n<div>\\n @if (viewings) {\\n @for (item of viewings; track $index) {\\n <rolatech-property-viewing-item [routerLink]=\\\"['./', item.id]\\\" [viewing]=\\\"item\\\"></rolatech-property-viewing-item>\\n }\\n } @else {\\n <rolatech-empty></rolatech-empty>\\n }\\n</div>\\n\", styles: [\"\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"component\", type: ToolbarComponent, selector: \"rolatech-toolbar\", inputs: [\"title\", \"subtitle\", \"back\", \"link\", \"large\", \"divider\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: TabsComponent, selector: \"rolatech-tabs\", inputs: [\"select\", \"loading\"], outputs: [\"selectChange\"] }, { kind: \"component\", type: TabComponent, selector: \"rolatech-tab\", inputs: [\"label\"] }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"directive\", type: i1.RouterLink, selector: \"[routerLink]\", inputs: [\"target\", \"queryParams\", \"fragment\", \"queryParamsHandling\", \"state\", \"info\", \"relativeTo\", \"preserveFragment\", \"skipLocationChange\", \"replaceUrl\", \"routerLink\"] }, { kind: \"component\", type: EmptyComponent, selector: \"rolatech-empty\" }, { kind: \"component\", type: PropertyViewingItemComponent, selector: \"rolatech-property-viewing-item\", inputs: [\"viewing\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PropertyManageViewingsIndexComponent, decorators: [{\n type: Component,\n args: [{ selector: 'rolatech-property-manage-viewings-index', imports: [\n CommonModule,\n ToolbarComponent,\n MatButtonModule,\n TabsComponent,\n TabComponent,\n RouterModule,\n EmptyComponent,\n PropertyViewingItemComponent,\n ], template: \"<rolatech-toolbar title=\\\"Viewings\\\">\\n <div class=\\\"flex items-center gap-2\\\"></div>\\n</rolatech-toolbar>\\n<rolatech-tabs [select]=\\\"select\\\">\\n @for (item of links; track item) {\\n @if (item.status) {\\n <rolatech-tab [label]=\\\"item.name\\\" routerLink=\\\"./\\\" [queryParams]=\\\"{ status: item.status }\\\"></rolatech-tab>\\n } @else {\\n <rolatech-tab [label]=\\\"item.name\\\" routerLink=\\\"./\\\"></rolatech-tab>\\n }\\n }\\n</rolatech-tabs>\\n<div>\\n @if (viewings) {\\n @for (item of viewings; track $index) {\\n <rolatech-property-viewing-item [routerLink]=\\\"['./', item.id]\\\" [viewing]=\\\"item\\\"></rolatech-property-viewing-item>\\n }\\n } @else {\\n <rolatech-empty></rolatech-empty>\\n }\\n</div>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktbWFuYWdlLXZpZXdpbmdzLWluZGV4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItcHJvcGVydHkvc3JjL2xpYi9wYWdlcy9wcm9wZXJ0eS1tYW5hZ2UvcHJvcGVydHktbWFuYWdlLXZpZXdpbmdzLWluZGV4L3Byb3BlcnR5LW1hbmFnZS12aWV3aW5ncy1pbmRleC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXByb3BlcnR5L3NyYy9saWIvcGFnZXMvcHJvcGVydHktbWFuYWdlL3Byb3BlcnR5LW1hbmFnZS12aWV3aW5ncy1pbmRleC9wcm9wZXJ0eS1tYW5hZ2Utdmlld2luZ3MtaW5kZXguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQzs7O0FBa0J6SCxNQUFNLE9BQU8sb0NBQXFDLFNBQVEsYUFBYTtJQUNyRSxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDWCxLQUFLLEdBQUc7UUFDTjtZQUNFLElBQUksRUFBRSxLQUFLO1lBQ1gsSUFBSSxFQUFFLFdBQVc7U0FDbEI7UUFDRDtZQUNFLElBQUksRUFBRSxXQUFXO1lBQ2pCLElBQUksRUFBRSxVQUFVO1lBQ2hCLE1BQU0sRUFBRSxXQUFXO1NBQ3BCO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsV0FBVztZQUNqQixJQUFJLEVBQUUsVUFBVTtZQUNoQixNQUFNLEVBQUUsV0FBVztTQUNwQjtLQUNGLENBQUM7SUFDRixhQUFhLEdBQVE7UUFDbkIsSUFBSSxFQUFFLEVBQUU7UUFDUixNQUFNLEVBQUUsRUFBRTtLQUNYLENBQUM7SUFDRixRQUFRLEdBQXNCLEVBQUUsQ0FBQztJQUVqQyxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO1lBQzlDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUM7WUFDckUsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBSSxNQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9ELENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ25DLENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsWUFBWTtRQUNWLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSSxFQUFFLGdCQUFnQjtTQUN2QixDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRSxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDbkMsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzFELElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDM0IsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxPQUFPO1FBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7YUFDM0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxFQUFFLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQzthQUM3RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3BCLE9BQU8sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsQ0FBQzt1R0F6RFUsb0NBQW9DOzJGQUFwQyxvQ0FBb0MsMEhDeEJqRCxpdEJBcUJBLHlERFRJLFlBQVksK0JBQ1osZ0JBQWdCLCtIQUNoQixlQUFlLCtCQUNmLGFBQWEsb0hBQ2IsWUFBWSwyRUFDWixZQUFZLGdSQUNaLGNBQWMsMkRBQ2QsNEJBQTRCOzsyRkFLbkIsb0NBQW9DO2tCQWZoRCxTQUFTOytCQUNFLHlDQUF5QyxXQUMxQzt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixjQUFjO3dCQUNkLDRCQUE0QjtxQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgRW1wdHlDb21wb25lbnQsIFRhYkNvbXBvbmVudCwgVGFic0NvbXBvbmVudCwgVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQcm9wZXJ0eVNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBQcm9wZXJ0eVZpZXdpbmdJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9wcm9wZXJ0eS12aWV3aW5nLWl0ZW0vcHJvcGVydHktdmlld2luZy1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9wZXJ0eVZpZXdpbmcgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtcHJvcGVydHktbWFuYWdlLXZpZXdpbmdzLWluZGV4JyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBUYWJzQ29tcG9uZW50LFxuICAgIFRhYkNvbXBvbmVudCxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgRW1wdHlDb21wb25lbnQsXG4gICAgUHJvcGVydHlWaWV3aW5nSXRlbUNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb3BlcnR5LW1hbmFnZS12aWV3aW5ncy1pbmRleC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9wcm9wZXJ0eS1tYW5hZ2Utdmlld2luZ3MtaW5kZXguY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eU1hbmFnZVZpZXdpbmdzSW5kZXhDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvcGVydHlTZXJ2aWNlID0gaW5qZWN0KFByb3BlcnR5U2VydmljZSk7XG4gIHNlbGVjdCA9IDA7XG4gIGxpbmtzID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICdBbGwnLFxuICAgICAgaWNvbjogJ2Rhc2hib2FyZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnQ29tcGxldGVkJyxcbiAgICAgIGljb246ICdjYXRlZ29yeScsXG4gICAgICBzdGF0dXM6ICdjb21wbGV0ZWQnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ0NhbmNlbGxlZCcsXG4gICAgICBpY29uOiAnY2F0ZWdvcnknLFxuICAgICAgc3RhdHVzOiAnY2FuY2VsbGVkJyxcbiAgICB9LFxuICBdO1xuICBmaWx0ZXJPcHRpb25zOiBhbnkgPSB7XG4gICAgdHlwZTogJycsXG4gICAgc3RhdHVzOiAnJyxcbiAgfTtcbiAgdmlld2luZ3M6IFByb3BlcnR5Vmlld2luZ1tdID0gW107XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHsgc3RhdHVzIH0pID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5saW5rcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uc3RhdHVzID09PSBzdGF0dXMpO1xuICAgICAgaWYgKHN0YXR1cykge1xuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMuc3RhdHVzID0gKHN0YXR1cyBhcyBzdHJpbmcpLnRvVXBwZXJDYXNlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgdGhpcy5maWx0ZXJPcHRpb25zLnN0YXR1cztcbiAgICAgIH1cbiAgICAgIHRoaXMuZmluZFZpZXdpbmdzKCk7XG4gICAgfSk7XG4gIH1cbiAgZmluZFZpZXdpbmdzKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBzb3J0OiAndXBkYXRlZEF0IGRlc2MnLFxuICAgIH07XG4gICAgY29uc3QgZmlsdGVyU3RyaW5nID0gdGhpcy5jb252ZXJ0RmlsdGVyT3B0aW9ucyh0aGlzLmZpbHRlck9wdGlvbnMpO1xuICAgIGlmIChmaWx0ZXJTdHJpbmcpIHtcbiAgICAgIG9wdGlvbnNbJ2ZpbHRlciddID0gZmlsdGVyU3RyaW5nO1xuICAgIH1cbiAgICB0aGlzLnByb3BlcnR5U2VydmljZS5maW5kVmlld2luZ3NCeUFnZW50KG9wdGlvbnMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy52aWV3aW5ncyA9IHJlcy5kYXRhO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBjb252ZXJ0RmlsdGVyT3B0aW9ucyhqc29uT2JqKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGpzb25PYmopXG4gICAgICAuZmlsdGVyKChba2V5LCB2YWx1ZV0pID0+IHZhbHVlICE9PSAnJyAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIHJldHVybiBgJHtrZXl9OiR7dmFsdWV9YDtcbiAgICAgIH0pXG4gICAgICAuam9pbignLCcpO1xuICB9XG59XG4iLCI8cm9sYXRlY2gtdG9vbGJhciB0aXRsZT1cIlZpZXdpbmdzXCI+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPjwvZGl2PlxuPC9yb2xhdGVjaC10b29sYmFyPlxuPHJvbGF0ZWNoLXRhYnMgW3NlbGVjdF09XCJzZWxlY3RcIj5cbiAgQGZvciAoaXRlbSBvZiBsaW5rczsgdHJhY2sgaXRlbSkge1xuICAgIEBpZiAoaXRlbS5zdGF0dXMpIHtcbiAgICAgIDxyb2xhdGVjaC10YWIgW2xhYmVsXT1cIml0ZW0ubmFtZVwiIHJvdXRlckxpbms9XCIuL1wiIFtxdWVyeVBhcmFtc109XCJ7IHN0YXR1czogaXRlbS5zdGF0dXMgfVwiPjwvcm9sYXRlY2gtdGFiPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPHJvbGF0ZWNoLXRhYiBbbGFiZWxdPVwiaXRlbS5uYW1lXCIgcm91dGVyTGluaz1cIi4vXCI+PC9yb2xhdGVjaC10YWI+XG4gICAgfVxuICB9XG48L3JvbGF0ZWNoLXRhYnM+XG48ZGl2PlxuICBAaWYgKHZpZXdpbmdzKSB7XG4gICAgQGZvciAoaXRlbSBvZiB2aWV3aW5nczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8cm9sYXRlY2gtcHJvcGVydHktdmlld2luZy1pdGVtIFtyb3V0ZXJMaW5rXT1cIlsnLi8nLCBpdGVtLmlkXVwiIFt2aWV3aW5nXT1cIml0ZW1cIj48L3JvbGF0ZWNoLXByb3BlcnR5LXZpZXdpbmctaXRlbT5cbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIDxyb2xhdGVjaC1lbXB0eT48L3JvbGF0ZWNoLWVtcHR5PlxuICB9XG48L2Rpdj5cbiJdfQ=="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rolatech-angular-property-property-manage-viewings-index.component-CPGJsz-b.mjs","sources":["../tmp-esm2022/lib/pages/property-manage/property-manage-viewings-index/property-manage-viewings-index.component.js"],"sourcesContent":["import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseComponent, EmptyComponent, TabComponent, TabsComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\nimport { PropertyService } from '@rolatech/angular-services';\nimport { PropertyViewingItemComponent } from '../../../components/property-viewing-item/property-viewing-item.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport class PropertyManageViewingsIndexComponent extends BaseComponent {\n propertyService = inject(PropertyService);\n select = 0;\n links = [\n {\n name: 'All',\n icon: 'dashboard',\n },\n {\n name: 'Completed',\n icon: 'category',\n status: 'completed',\n },\n {\n name: 'Cancelled',\n icon: 'category',\n status: 'cancelled',\n },\n ];\n filterOptions = {\n type: '',\n status: '',\n };\n viewings = [];\n ngOnInit() {\n this.route.queryParams.subscribe(({ status }) => {\n this.select = this.links.findIndex((item) => item.status === status);\n if (status) {\n this.filterOptions.status = status.toUpperCase();\n }\n else {\n delete this.filterOptions.status;\n }\n this.findViewings();\n });\n }\n findViewings() {\n const options = {\n sort: 'updatedAt desc',\n };\n const filterString = this.convertFilterOptions(this.filterOptions);\n if (filterString) {\n options['filter'] = filterString;\n }\n this.propertyService.findViewingsByAgent(options).subscribe({\n next: (res) => {\n this.viewings = res.data;\n },\n });\n }\n convertFilterOptions(jsonObj) {\n return Object.entries(jsonObj)\n .filter(([key, value]) => value !== '' && value !== undefined)\n .map(([key, value]) => {\n return `${key}:${value}`;\n })\n .join(',');\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PropertyManageViewingsIndexComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: PropertyManageViewingsIndexComponent, isStandalone: true, selector: \"rolatech-property-manage-viewings-index\", usesInheritance: true, ngImport: i0, template: \"<rolatech-toolbar title=\\\"Viewings\\\">\\n <div class=\\\"flex items-center gap-2\\\"></div>\\n</rolatech-toolbar>\\n<rolatech-tabs [select]=\\\"select\\\">\\n @for (item of links; track item) {\\n @if (item.status) {\\n <rolatech-tab [label]=\\\"item.name\\\" routerLink=\\\"./\\\" [queryParams]=\\\"{ status: item.status }\\\"></rolatech-tab>\\n } @else {\\n <rolatech-tab [label]=\\\"item.name\\\" routerLink=\\\"./\\\"></rolatech-tab>\\n }\\n }\\n</rolatech-tabs>\\n<div>\\n @if (viewings) {\\n @for (item of viewings; track $index) {\\n <rolatech-property-viewing-item [routerLink]=\\\"['./', item.id]\\\" [viewing]=\\\"item\\\"></rolatech-property-viewing-item>\\n }\\n } @else {\\n <rolatech-empty></rolatech-empty>\\n }\\n</div>\\n\", styles: [\"\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"component\", type: ToolbarComponent, selector: \"rolatech-toolbar\", inputs: [\"title\", \"subtitle\", \"back\", \"link\", \"large\", \"divider\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: TabsComponent, selector: \"rolatech-tabs\", inputs: [\"select\", \"loading\"], outputs: [\"selectChange\"] }, { kind: \"component\", type: TabComponent, selector: \"rolatech-tab\", inputs: [\"label\"] }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"directive\", type: i1.RouterLink, selector: \"[routerLink]\", inputs: [\"target\", \"queryParams\", \"fragment\", \"queryParamsHandling\", \"state\", \"info\", \"relativeTo\", \"preserveFragment\", \"skipLocationChange\", \"replaceUrl\", \"routerLink\"] }, { kind: \"component\", type: EmptyComponent, selector: \"rolatech-empty\" }, { kind: \"component\", type: PropertyViewingItemComponent, selector: \"rolatech-property-viewing-item\", inputs: [\"viewing\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PropertyManageViewingsIndexComponent, decorators: [{\n type: Component,\n args: [{ selector: 'rolatech-property-manage-viewings-index', imports: [\n CommonModule,\n ToolbarComponent,\n MatButtonModule,\n TabsComponent,\n TabComponent,\n RouterModule,\n EmptyComponent,\n PropertyViewingItemComponent,\n ], template: \"<rolatech-toolbar title=\\\"Viewings\\\">\\n <div class=\\\"flex items-center gap-2\\\"></div>\\n</rolatech-toolbar>\\n<rolatech-tabs [select]=\\\"select\\\">\\n @for (item of links; track item) {\\n @if (item.status) {\\n <rolatech-tab [label]=\\\"item.name\\\" routerLink=\\\"./\\\" [queryParams]=\\\"{ status: item.status }\\\"></rolatech-tab>\\n } @else {\\n <rolatech-tab [label]=\\\"item.name\\\" routerLink=\\\"./\\\"></rolatech-tab>\\n }\\n }\\n</rolatech-tabs>\\n<div>\\n @if (viewings) {\\n @for (item of viewings; track $index) {\\n <rolatech-property-viewing-item [routerLink]=\\\"['./', item.id]\\\" [viewing]=\\\"item\\\"></rolatech-property-viewing-item>\\n }\\n } @else {\\n <rolatech-empty></rolatech-empty>\\n }\\n</div>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktbWFuYWdlLXZpZXdpbmdzLWluZGV4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItcHJvcGVydHkvc3JjL2xpYi9wYWdlcy9wcm9wZXJ0eS1tYW5hZ2UvcHJvcGVydHktbWFuYWdlLXZpZXdpbmdzLWluZGV4L3Byb3BlcnR5LW1hbmFnZS12aWV3aW5ncy1pbmRleC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXByb3BlcnR5L3NyYy9saWIvcGFnZXMvcHJvcGVydHktbWFuYWdlL3Byb3BlcnR5LW1hbmFnZS12aWV3aW5ncy1pbmRleC9wcm9wZXJ0eS1tYW5hZ2Utdmlld2luZ3MtaW5kZXguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQzs7O0FBa0J6SCxNQUFNLE9BQU8sb0NBQXFDLFNBQVEsYUFBYTtJQUNyRSxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDWCxLQUFLLEdBQUc7UUFDTjtZQUNFLElBQUksRUFBRSxLQUFLO1lBQ1gsSUFBSSxFQUFFLFdBQVc7U0FDbEI7UUFDRDtZQUNFLElBQUksRUFBRSxXQUFXO1lBQ2pCLElBQUksRUFBRSxVQUFVO1lBQ2hCLE1BQU0sRUFBRSxXQUFXO1NBQ3BCO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsV0FBVztZQUNqQixJQUFJLEVBQUUsVUFBVTtZQUNoQixNQUFNLEVBQUUsV0FBVztTQUNwQjtLQUNGLENBQUM7SUFDRixhQUFhLEdBQVE7UUFDbkIsSUFBSSxFQUFFLEVBQUU7UUFDUixNQUFNLEVBQUUsRUFBRTtLQUNYLENBQUM7SUFDRixRQUFRLEdBQXNCLEVBQUUsQ0FBQztJQUVqQyxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO1lBQzlDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUM7WUFDckUsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBSSxNQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9ELENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ25DLENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsWUFBWTtRQUNWLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSSxFQUFFLGdCQUFnQjtTQUN2QixDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRSxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDbkMsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzFELElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDM0IsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxPQUFPO1FBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7YUFDM0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxFQUFFLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQzthQUM3RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3BCLE9BQU8sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsQ0FBQzt1R0F6RFUsb0NBQW9DOzJGQUFwQyxvQ0FBb0MsMEhDeEJqRCxpdEJBcUJBLHlERFRJLFlBQVksK0JBQ1osZ0JBQWdCLCtIQUNoQixlQUFlLCtCQUNmLGFBQWEsb0hBQ2IsWUFBWSwyRUFDWixZQUFZLGdSQUNaLGNBQWMsMkRBQ2QsNEJBQTRCOzsyRkFLbkIsb0NBQW9DO2tCQWZoRCxTQUFTOytCQUNFLHlDQUF5QyxXQUMxQzt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixjQUFjO3dCQUNkLDRCQUE0QjtxQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgRW1wdHlDb21wb25lbnQsIFRhYkNvbXBvbmVudCwgVGFic0NvbXBvbmVudCwgVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQcm9wZXJ0eVNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBQcm9wZXJ0eVZpZXdpbmdJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9wcm9wZXJ0eS12aWV3aW5nLWl0ZW0vcHJvcGVydHktdmlld2luZy1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9wZXJ0eVZpZXdpbmcgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtcHJvcGVydHktbWFuYWdlLXZpZXdpbmdzLWluZGV4JyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBUYWJzQ29tcG9uZW50LFxuICAgIFRhYkNvbXBvbmVudCxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgRW1wdHlDb21wb25lbnQsXG4gICAgUHJvcGVydHlWaWV3aW5nSXRlbUNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb3BlcnR5LW1hbmFnZS12aWV3aW5ncy1pbmRleC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9wcm9wZXJ0eS1tYW5hZ2Utdmlld2luZ3MtaW5kZXguY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eU1hbmFnZVZpZXdpbmdzSW5kZXhDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvcGVydHlTZXJ2aWNlID0gaW5qZWN0KFByb3BlcnR5U2VydmljZSk7XG4gIHNlbGVjdCA9IDA7XG4gIGxpbmtzID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICdBbGwnLFxuICAgICAgaWNvbjogJ2Rhc2hib2FyZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnQ29tcGxldGVkJyxcbiAgICAgIGljb246ICdjYXRlZ29yeScsXG4gICAgICBzdGF0dXM6ICdjb21wbGV0ZWQnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ0NhbmNlbGxlZCcsXG4gICAgICBpY29uOiAnY2F0ZWdvcnknLFxuICAgICAgc3RhdHVzOiAnY2FuY2VsbGVkJyxcbiAgICB9LFxuICBdO1xuICBmaWx0ZXJPcHRpb25zOiBhbnkgPSB7XG4gICAgdHlwZTogJycsXG4gICAgc3RhdHVzOiAnJyxcbiAgfTtcbiAgdmlld2luZ3M6IFByb3BlcnR5Vmlld2luZ1tdID0gW107XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHsgc3RhdHVzIH0pID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5saW5rcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uc3RhdHVzID09PSBzdGF0dXMpO1xuICAgICAgaWYgKHN0YXR1cykge1xuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMuc3RhdHVzID0gKHN0YXR1cyBhcyBzdHJpbmcpLnRvVXBwZXJDYXNlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgdGhpcy5maWx0ZXJPcHRpb25zLnN0YXR1cztcbiAgICAgIH1cbiAgICAgIHRoaXMuZmluZFZpZXdpbmdzKCk7XG4gICAgfSk7XG4gIH1cbiAgZmluZFZpZXdpbmdzKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBzb3J0OiAndXBkYXRlZEF0IGRlc2MnLFxuICAgIH07XG4gICAgY29uc3QgZmlsdGVyU3RyaW5nID0gdGhpcy5jb252ZXJ0RmlsdGVyT3B0aW9ucyh0aGlzLmZpbHRlck9wdGlvbnMpO1xuICAgIGlmIChmaWx0ZXJTdHJpbmcpIHtcbiAgICAgIG9wdGlvbnNbJ2ZpbHRlciddID0gZmlsdGVyU3RyaW5nO1xuICAgIH1cbiAgICB0aGlzLnByb3BlcnR5U2VydmljZS5maW5kVmlld2luZ3NCeUFnZW50KG9wdGlvbnMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy52aWV3aW5ncyA9IHJlcy5kYXRhO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBjb252ZXJ0RmlsdGVyT3B0aW9ucyhqc29uT2JqKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGpzb25PYmopXG4gICAgICAuZmlsdGVyKChba2V5LCB2YWx1ZV0pID0+IHZhbHVlICE9PSAnJyAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIHJldHVybiBgJHtrZXl9OiR7dmFsdWV9YDtcbiAgICAgIH0pXG4gICAgICAuam9pbignLCcpO1xuICB9XG59XG4iLCI8cm9sYXRlY2gtdG9vbGJhciB0aXRsZT1cIlZpZXdpbmdzXCI+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPjwvZGl2PlxuPC9yb2xhdGVjaC10b29sYmFyPlxuPHJvbGF0ZWNoLXRhYnMgW3NlbGVjdF09XCJzZWxlY3RcIj5cbiAgQGZvciAoaXRlbSBvZiBsaW5rczsgdHJhY2sgaXRlbSkge1xuICAgIEBpZiAoaXRlbS5zdGF0dXMpIHtcbiAgICAgIDxyb2xhdGVjaC10YWIgW2xhYmVsXT1cIml0ZW0ubmFtZVwiIHJvdXRlckxpbms9XCIuL1wiIFtxdWVyeVBhcmFtc109XCJ7IHN0YXR1czogaXRlbS5zdGF0dXMgfVwiPjwvcm9sYXRlY2gtdGFiPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPHJvbGF0ZWNoLXRhYiBbbGFiZWxdPVwiaXRlbS5uYW1lXCIgcm91dGVyTGluaz1cIi4vXCI+PC9yb2xhdGVjaC10YWI+XG4gICAgfVxuICB9XG48L3JvbGF0ZWNoLXRhYnM+XG48ZGl2PlxuICBAaWYgKHZpZXdpbmdzKSB7XG4gICAgQGZvciAoaXRlbSBvZiB2aWV3aW5nczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8cm9sYXRlY2gtcHJvcGVydHktdmlld2luZy1pdGVtIFtyb3V0ZXJMaW5rXT1cIlsnLi8nLCBpdGVtLmlkXVwiIFt2aWV3aW5nXT1cIml0ZW1cIj48L3JvbGF0ZWNoLXByb3BlcnR5LXZpZXdpbmctaXRlbT5cbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIDxyb2xhdGVjaC1lbXB0eT48L3JvbGF0ZWNoLWVtcHR5PlxuICB9XG48L2Rpdj5cbiJdfQ=="],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import { MatSnackBar } from '@angular/material/snack-bar';
|
|
|
10
10
|
import { MatTableModule } from '@angular/material/table';
|
|
11
11
|
import * as i1$1 from '@angular/router';
|
|
12
12
|
import { RouterLink, RouterModule, Router, ActivatedRoute, RouterLinkActive, RouterOutlet } from '@angular/router';
|
|
13
|
-
import { ThumbnailComponent, ImagePlaceholderComponent, ToolbarComponent, SpinnerComponent, ImagePreviewDialogComponent, BaseComponent, AcceptDialogComponent, RejectDialogComponent, RichLabelComponent, AngularComponentsModule, ConfirmationDialogComponent, TabsComponent, TabComponent, EmptyComponent, ContainerComponent, ListComponent, MediaListComponent, MediaListItemComponent } from '@rolatech/angular-components';
|
|
13
|
+
import { ThumbnailComponent, ImagePlaceholderComponent, ToolbarComponent, SpinnerComponent, ImagePreviewDialogComponent, BaseComponent, AcceptDialogComponent, RejectDialogComponent, RichLabelComponent, AngularComponentsModule, ConfirmationDialogComponent, TabsComponent, TabComponent, EmptyComponent, ContainerComponent, ListComponent, MediaListComponent, MediaListItemComponent, VideoUpload } from '@rolatech/angular-components';
|
|
14
14
|
import { PropertyService, FeatureService } from '@rolatech/angular-services';
|
|
15
15
|
import * as i1 from '@angular/common';
|
|
16
16
|
import { CommonModule, NgClass, isPlatformBrowser, ViewportScroller, KeyValuePipe, Location } from '@angular/common';
|
|
@@ -30,7 +30,7 @@ import * as i5 from '@angular/material/select';
|
|
|
30
30
|
import { MatSelectModule } from '@angular/material/select';
|
|
31
31
|
import * as i1$5 from '@angular/material/chips';
|
|
32
32
|
import { MatChipsModule } from '@angular/material/chips';
|
|
33
|
-
import { startWith, map, defer, forkJoin } from 'rxjs';
|
|
33
|
+
import { startWith, map, defer, forkJoin, from, concatMap, take, Observable } from 'rxjs';
|
|
34
34
|
import { ENTER, COMMA } from '@angular/cdk/keycodes';
|
|
35
35
|
import * as i4$2 from '@angular/material/autocomplete';
|
|
36
36
|
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
@@ -2365,8 +2365,14 @@ class PropertyManageIndexComponent {
|
|
|
2365
2365
|
},
|
|
2366
2366
|
});
|
|
2367
2367
|
}
|
|
2368
|
+
export() {
|
|
2369
|
+
this.propertyService.export().subscribe({
|
|
2370
|
+
next: (res) => {
|
|
2371
|
+
},
|
|
2372
|
+
});
|
|
2373
|
+
}
|
|
2368
2374
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: PropertyManageIndexComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2369
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: PropertyManageIndexComponent, isStandalone: true, selector: "rolatech-property-manage-index", host: { properties: { "class.rolatech-property-manage-index": "this.hasClass" } }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, isSignal: true }], ngImport: i0, template: "<rolatech-toolbar title=\"Properties\">\n <div class=\"flex items-center gap-2\">\n <button mat-flat-button routerLink=\"./create\">\n <mat-icon>add</mat-icon>\n <span i18n>Add property</span>\n </button>\n </div>\n</rolatech-toolbar>\n@if (isLoading) {\n <div class=\"flex justify-center items-center\">\n <rolatech-spinner></rolatech-spinner>\n </div>\n} @else {\n <div class=\"bg-[--rt-rasised-background] h-full\">\n <rolatech-property-manage-filter></rolatech-property-manage-filter>\n <div class=\"flex flex-wrap p-3 gap-3\">\n @for (item of properties; track $index) {\n <rolatech-property-manage-item\n [property]=\"item\"\n routerLink=\"./{{ item.id }}/manage/info\"\n ></rolatech-property-manage-item>\n }\n </div>\n </div>\n}\n<mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"pageEvent = findProperties($event)\"\n hidePageSize\n showFirstLastButtons\n>\n</mat-paginator>\n", styles: ["mat-form-field{width:100%}table{width:100%}td.mat-column-actions{text-align:right;max-width:64px;font-size:.8rem;padding:0 8px}.mat-mdc-header-cell.actions{text-align:right;max-width:64px;width:64px}.mat-mdc-cell:nth-last-child(2),.mat-mdc-header-cell:nth-last-child(2),.mat-mdc-footer-cell:nth-last-child(2){text-align:right;max-width:180px;width:180px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{text-align:right;padding-right:8px!important}rolatech-property-manage-index{display:flex;flex-direction:column;--rt-property-view-items-per-row: 1}@media (min-width: 600px){rolatech-property-manage-index{--rt-property-view-items-per-row: 2}}@media (min-width: 768px){rolatech-property-manage-index{--rt-property-view-items-per-row: 3}}@media (min-width: 1280px){rolatech-property-manage-index{--rt-property-view-items-per-row: 3}}@media (min-width: 1536px){rolatech-property-manage-index{--rt-property-view-items-per-row: 4}}@media (min-width: 1920px){rolatech-property-manage-index{--rt-property-view-items-per-row: 5}}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$4.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i3$2.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: SpinnerComponent, selector: "rolatech-spinner", inputs: ["title"] }, { kind: "component", type: PropertyManageItemComponent, selector: "rolatech-property-manage-item", inputs: ["property", "thumbnail", "list"] }, { kind: "component", type: PropertyManageFilterComponent, selector: "rolatech-property-manage-filter" }], encapsulation: i0.ViewEncapsulation.None });
|
|
2375
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: PropertyManageIndexComponent, isStandalone: true, selector: "rolatech-property-manage-index", host: { properties: { "class.rolatech-property-manage-index": "this.hasClass" } }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, isSignal: true }], ngImport: i0, template: "<rolatech-toolbar title=\"Properties\">\n <div class=\"flex items-center gap-2\">\n <button mat-flat-button routerLink=\"./create\">\n <mat-icon>add</mat-icon>\n <span i18n>Add property</span>\n </button>\n <button mat-flat-button (click)=\"export()\">\n <mat-icon>file_export</mat-icon>\n <span i18n>Export</span>\n </button>\n </div>\n</rolatech-toolbar>\n@if (isLoading) {\n <div class=\"flex justify-center items-center\">\n <rolatech-spinner></rolatech-spinner>\n </div>\n} @else {\n <div class=\"bg-[--rt-rasised-background] h-full\">\n <rolatech-property-manage-filter></rolatech-property-manage-filter>\n <div class=\"flex flex-wrap p-3 gap-3\">\n @for (item of properties; track $index) {\n <rolatech-property-manage-item\n [property]=\"item\"\n routerLink=\"./{{ item.id }}/manage/info\"\n ></rolatech-property-manage-item>\n }\n </div>\n </div>\n}\n<mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"pageEvent = findProperties($event)\"\n hidePageSize\n showFirstLastButtons\n>\n</mat-paginator>\n", styles: ["mat-form-field{width:100%}table{width:100%}td.mat-column-actions{text-align:right;max-width:64px;font-size:.8rem;padding:0 8px}.mat-mdc-header-cell.actions{text-align:right;max-width:64px;width:64px}.mat-mdc-cell:nth-last-child(2),.mat-mdc-header-cell:nth-last-child(2),.mat-mdc-footer-cell:nth-last-child(2){text-align:right;max-width:180px;width:180px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{text-align:right;padding-right:8px!important}rolatech-property-manage-index{display:flex;flex-direction:column;--rt-property-view-items-per-row: 1}@media (min-width: 600px){rolatech-property-manage-index{--rt-property-view-items-per-row: 2}}@media (min-width: 768px){rolatech-property-manage-index{--rt-property-view-items-per-row: 3}}@media (min-width: 1280px){rolatech-property-manage-index{--rt-property-view-items-per-row: 3}}@media (min-width: 1536px){rolatech-property-manage-index{--rt-property-view-items-per-row: 4}}@media (min-width: 1920px){rolatech-property-manage-index{--rt-property-view-items-per-row: 5}}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$4.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i3$2.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: SpinnerComponent, selector: "rolatech-spinner", inputs: ["title"] }, { kind: "component", type: PropertyManageItemComponent, selector: "rolatech-property-manage-item", inputs: ["property", "thumbnail", "list"] }, { kind: "component", type: PropertyManageFilterComponent, selector: "rolatech-property-manage-filter" }], encapsulation: i0.ViewEncapsulation.None });
|
|
2370
2376
|
}
|
|
2371
2377
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: PropertyManageIndexComponent, decorators: [{
|
|
2372
2378
|
type: Component,
|
|
@@ -2381,7 +2387,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
2381
2387
|
SpinnerComponent,
|
|
2382
2388
|
PropertyManageItemComponent,
|
|
2383
2389
|
PropertyManageFilterComponent,
|
|
2384
|
-
], encapsulation: ViewEncapsulation.None, template: "<rolatech-toolbar title=\"Properties\">\n <div class=\"flex items-center gap-2\">\n <button mat-flat-button routerLink=\"./create\">\n <mat-icon>add</mat-icon>\n <span i18n>Add property</span>\n </button>\n </div>\n</rolatech-toolbar>\n@if (isLoading) {\n <div class=\"flex justify-center items-center\">\n <rolatech-spinner></rolatech-spinner>\n </div>\n} @else {\n <div class=\"bg-[--rt-rasised-background] h-full\">\n <rolatech-property-manage-filter></rolatech-property-manage-filter>\n <div class=\"flex flex-wrap p-3 gap-3\">\n @for (item of properties; track $index) {\n <rolatech-property-manage-item\n [property]=\"item\"\n routerLink=\"./{{ item.id }}/manage/info\"\n ></rolatech-property-manage-item>\n }\n </div>\n </div>\n}\n<mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"pageEvent = findProperties($event)\"\n hidePageSize\n showFirstLastButtons\n>\n</mat-paginator>\n", styles: ["mat-form-field{width:100%}table{width:100%}td.mat-column-actions{text-align:right;max-width:64px;font-size:.8rem;padding:0 8px}.mat-mdc-header-cell.actions{text-align:right;max-width:64px;width:64px}.mat-mdc-cell:nth-last-child(2),.mat-mdc-header-cell:nth-last-child(2),.mat-mdc-footer-cell:nth-last-child(2){text-align:right;max-width:180px;width:180px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{text-align:right;padding-right:8px!important}rolatech-property-manage-index{display:flex;flex-direction:column;--rt-property-view-items-per-row: 1}@media (min-width: 600px){rolatech-property-manage-index{--rt-property-view-items-per-row: 2}}@media (min-width: 768px){rolatech-property-manage-index{--rt-property-view-items-per-row: 3}}@media (min-width: 1280px){rolatech-property-manage-index{--rt-property-view-items-per-row: 3}}@media (min-width: 1536px){rolatech-property-manage-index{--rt-property-view-items-per-row: 4}}@media (min-width: 1920px){rolatech-property-manage-index{--rt-property-view-items-per-row: 5}}\n"] }]
|
|
2390
|
+
], encapsulation: ViewEncapsulation.None, template: "<rolatech-toolbar title=\"Properties\">\n <div class=\"flex items-center gap-2\">\n <button mat-flat-button routerLink=\"./create\">\n <mat-icon>add</mat-icon>\n <span i18n>Add property</span>\n </button>\n <button mat-flat-button (click)=\"export()\">\n <mat-icon>file_export</mat-icon>\n <span i18n>Export</span>\n </button>\n </div>\n</rolatech-toolbar>\n@if (isLoading) {\n <div class=\"flex justify-center items-center\">\n <rolatech-spinner></rolatech-spinner>\n </div>\n} @else {\n <div class=\"bg-[--rt-rasised-background] h-full\">\n <rolatech-property-manage-filter></rolatech-property-manage-filter>\n <div class=\"flex flex-wrap p-3 gap-3\">\n @for (item of properties; track $index) {\n <rolatech-property-manage-item\n [property]=\"item\"\n routerLink=\"./{{ item.id }}/manage/info\"\n ></rolatech-property-manage-item>\n }\n </div>\n </div>\n}\n<mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"pageEvent = findProperties($event)\"\n hidePageSize\n showFirstLastButtons\n>\n</mat-paginator>\n", styles: ["mat-form-field{width:100%}table{width:100%}td.mat-column-actions{text-align:right;max-width:64px;font-size:.8rem;padding:0 8px}.mat-mdc-header-cell.actions{text-align:right;max-width:64px;width:64px}.mat-mdc-cell:nth-last-child(2),.mat-mdc-header-cell:nth-last-child(2),.mat-mdc-footer-cell:nth-last-child(2){text-align:right;max-width:180px;width:180px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{text-align:right;padding-right:8px!important}rolatech-property-manage-index{display:flex;flex-direction:column;--rt-property-view-items-per-row: 1}@media (min-width: 600px){rolatech-property-manage-index{--rt-property-view-items-per-row: 2}}@media (min-width: 768px){rolatech-property-manage-index{--rt-property-view-items-per-row: 3}}@media (min-width: 1280px){rolatech-property-manage-index{--rt-property-view-items-per-row: 3}}@media (min-width: 1536px){rolatech-property-manage-index{--rt-property-view-items-per-row: 4}}@media (min-width: 1920px){rolatech-property-manage-index{--rt-property-view-items-per-row: 5}}\n"] }]
|
|
2385
2391
|
}], propDecorators: { hasClass: [{
|
|
2386
2392
|
type: HostBinding,
|
|
2387
2393
|
args: ['class.rolatech-property-manage-index']
|
|
@@ -3138,7 +3144,7 @@ class PropertyManageLocationComponent extends BaseComponent {
|
|
|
3138
3144
|
location = model({
|
|
3139
3145
|
flatNumber: '',
|
|
3140
3146
|
streetNumber: '',
|
|
3141
|
-
|
|
3147
|
+
name: '',
|
|
3142
3148
|
street: '',
|
|
3143
3149
|
town: '',
|
|
3144
3150
|
postCode: '',
|
|
@@ -3267,7 +3273,7 @@ class PropertyManageLocationComponent extends BaseComponent {
|
|
|
3267
3273
|
searchSchools(lat, lng, radius = 2000) {
|
|
3268
3274
|
}
|
|
3269
3275
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: PropertyManageLocationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
3270
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: PropertyManageLocationComponent, isStandalone: true, selector: "rolatech-property-manage-location", inputs: { location: { classPropertyName: "location", publicName: "location", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { location: "locationChange" }, viewQueries: [{ propertyName: "autocompleteInput", first: true, predicate: ["autocompleteInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<rolatech-property-manage-content>\n <rolatech-toolbar title=\"Location\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <mat-form-field position=\"left\">\n <input\n type=\"text\"\n placeholder=\"Search for a location\"\n #searchInput\n (input)=\"onInputChange($event)\"\n matInput\n [matAutocomplete]=\"auto\"\n />\n <mat-autocomplete\n class=\"single-autocomplete\"\n #auto=\"matAutocomplete\"\n (optionSelected)=\"onOptionSelected($event)\"\n [displayWith]=\"displayFn\"\n >\n @for (prediction of predictions; track $index) {\n <mat-option [value]=\"prediction\">\n {{ prediction.description }}\n </mat-option>\n }\n </mat-autocomplete>\n </mat-form-field>\n <div class=\"border px-3 rounded-md\">\n <div class=\"flex justify-between items-center py-3 cursor-pointer select-none\" i18n (click)=\"expand = !expand\">\n <span> Enter the address manually </span>\n <mat-icon>{{ expand ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}</mat-icon>\n </div>\n <div [@contentAnimation]=\"expand\" [class.hidden]=\"!expand\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Flat number </mat-label>\n <input matInput [(ngModel)]=\"location().flatNumber\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street number </mat-label>\n <input matInput [(ngModel)]=\"location().streetNumber\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Building name </mat-label>\n <input matInput [(ngModel)]=\"location().
|
|
3276
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: PropertyManageLocationComponent, isStandalone: true, selector: "rolatech-property-manage-location", inputs: { location: { classPropertyName: "location", publicName: "location", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { location: "locationChange" }, viewQueries: [{ propertyName: "autocompleteInput", first: true, predicate: ["autocompleteInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<rolatech-property-manage-content>\n <rolatech-toolbar title=\"Location\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <mat-form-field position=\"left\">\n <input\n type=\"text\"\n placeholder=\"Search for a location\"\n #searchInput\n (input)=\"onInputChange($event)\"\n matInput\n [matAutocomplete]=\"auto\"\n />\n <mat-autocomplete\n class=\"single-autocomplete\"\n #auto=\"matAutocomplete\"\n (optionSelected)=\"onOptionSelected($event)\"\n [displayWith]=\"displayFn\"\n >\n @for (prediction of predictions; track $index) {\n <mat-option [value]=\"prediction\">\n {{ prediction.description }}\n </mat-option>\n }\n </mat-autocomplete>\n </mat-form-field>\n <div class=\"border px-3 rounded-md\">\n <div class=\"flex justify-between items-center py-3 cursor-pointer select-none\" i18n (click)=\"expand = !expand\">\n <span> Enter the address manually </span>\n <mat-icon>{{ expand ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}</mat-icon>\n </div>\n <div [@contentAnimation]=\"expand\" [class.hidden]=\"!expand\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Flat number </mat-label>\n <input matInput [(ngModel)]=\"location().flatNumber\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street number </mat-label>\n <input matInput [(ngModel)]=\"location().streetNumber\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Building name </mat-label>\n <input matInput [(ngModel)]=\"location().name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input matInput [(ngModel)]=\"location().street\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Town </mat-label>\n <input matInput [(ngModel)]=\"location().town\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Postcode </mat-label>\n <input matInput [(ngModel)]=\"location().postCode\" required />\n </mat-form-field>\n </div>\n </div>\n <div class=\"flex justify-end items-center p-3 gap-3\">\n <button mat-flat-button i18n (click)=\"save()\">Save</button>\n </div>\n</rolatech-property-manage-content>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "component", type: PropertyManageContentComponent, selector: "rolatech-property-manage-content" }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$2.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i4$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i4$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$4.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], animations: [
|
|
3271
3277
|
trigger('contentAnimation', [
|
|
3272
3278
|
state('hidden', style({
|
|
3273
3279
|
height: '0',
|
|
@@ -3307,7 +3313,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
3307
3313
|
})),
|
|
3308
3314
|
transition('hidden <=> visible', animate('300ms ease-in-out')),
|
|
3309
3315
|
]),
|
|
3310
|
-
], template: "<rolatech-property-manage-content>\n <rolatech-toolbar title=\"Location\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <mat-form-field position=\"left\">\n <input\n type=\"text\"\n placeholder=\"Search for a location\"\n #searchInput\n (input)=\"onInputChange($event)\"\n matInput\n [matAutocomplete]=\"auto\"\n />\n <mat-autocomplete\n class=\"single-autocomplete\"\n #auto=\"matAutocomplete\"\n (optionSelected)=\"onOptionSelected($event)\"\n [displayWith]=\"displayFn\"\n >\n @for (prediction of predictions; track $index) {\n <mat-option [value]=\"prediction\">\n {{ prediction.description }}\n </mat-option>\n }\n </mat-autocomplete>\n </mat-form-field>\n <div class=\"border px-3 rounded-md\">\n <div class=\"flex justify-between items-center py-3 cursor-pointer select-none\" i18n (click)=\"expand = !expand\">\n <span> Enter the address manually </span>\n <mat-icon>{{ expand ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}</mat-icon>\n </div>\n <div [@contentAnimation]=\"expand\" [class.hidden]=\"!expand\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Flat number </mat-label>\n <input matInput [(ngModel)]=\"location().flatNumber\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street number </mat-label>\n <input matInput [(ngModel)]=\"location().streetNumber\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Building name </mat-label>\n <input matInput [(ngModel)]=\"location().
|
|
3316
|
+
], template: "<rolatech-property-manage-content>\n <rolatech-toolbar title=\"Location\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <mat-form-field position=\"left\">\n <input\n type=\"text\"\n placeholder=\"Search for a location\"\n #searchInput\n (input)=\"onInputChange($event)\"\n matInput\n [matAutocomplete]=\"auto\"\n />\n <mat-autocomplete\n class=\"single-autocomplete\"\n #auto=\"matAutocomplete\"\n (optionSelected)=\"onOptionSelected($event)\"\n [displayWith]=\"displayFn\"\n >\n @for (prediction of predictions; track $index) {\n <mat-option [value]=\"prediction\">\n {{ prediction.description }}\n </mat-option>\n }\n </mat-autocomplete>\n </mat-form-field>\n <div class=\"border px-3 rounded-md\">\n <div class=\"flex justify-between items-center py-3 cursor-pointer select-none\" i18n (click)=\"expand = !expand\">\n <span> Enter the address manually </span>\n <mat-icon>{{ expand ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}</mat-icon>\n </div>\n <div [@contentAnimation]=\"expand\" [class.hidden]=\"!expand\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Flat number </mat-label>\n <input matInput [(ngModel)]=\"location().flatNumber\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street number </mat-label>\n <input matInput [(ngModel)]=\"location().streetNumber\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Building name </mat-label>\n <input matInput [(ngModel)]=\"location().name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input matInput [(ngModel)]=\"location().street\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Town </mat-label>\n <input matInput [(ngModel)]=\"location().town\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Postcode </mat-label>\n <input matInput [(ngModel)]=\"location().postCode\" required />\n </mat-form-field>\n </div>\n </div>\n <div class=\"flex justify-end items-center p-3 gap-3\">\n <button mat-flat-button i18n (click)=\"save()\">Save</button>\n </div>\n</rolatech-property-manage-content>\n", styles: ["mat-form-field{width:100%}\n"] }]
|
|
3311
3317
|
}], propDecorators: { autocompleteInput: [{
|
|
3312
3318
|
type: ViewChild,
|
|
3313
3319
|
args: ['autocompleteInput', { static: false }]
|
|
@@ -3344,6 +3350,7 @@ class PropertyManageVideoTourComponent extends BaseComponent {
|
|
|
3344
3350
|
safeURL = this.sanitizer.bypassSecurityTrustResourceUrl('');
|
|
3345
3351
|
thumbnailUrl;
|
|
3346
3352
|
type = PropertyVideoTourType;
|
|
3353
|
+
chunkSize = 5 * 1024 * 1024; // 切片大小
|
|
3347
3354
|
ngOnInit() {
|
|
3348
3355
|
this.id = this.route.parent?.snapshot.paramMap.get('id');
|
|
3349
3356
|
this.getVideoTour();
|
|
@@ -3419,12 +3426,108 @@ class PropertyManageVideoTourComponent extends BaseComponent {
|
|
|
3419
3426
|
},
|
|
3420
3427
|
});
|
|
3421
3428
|
}
|
|
3429
|
+
onUploadToCOS(event) {
|
|
3430
|
+
const file = event.data.target.files[0];
|
|
3431
|
+
if (!file) {
|
|
3432
|
+
return;
|
|
3433
|
+
}
|
|
3434
|
+
const item = {
|
|
3435
|
+
url: URL.createObjectURL(file),
|
|
3436
|
+
};
|
|
3437
|
+
const reader = new FileReader();
|
|
3438
|
+
if (reader.readyState === FileReader.EMPTY) {
|
|
3439
|
+
reader.onload = async (e) => {
|
|
3440
|
+
const fileBuffer = e.target.result;
|
|
3441
|
+
crypto.subtle.digest('SHA-256', fileBuffer).then((res) => {
|
|
3442
|
+
const hashArray = Array.from(new Uint8Array(res));
|
|
3443
|
+
const hashHex = hashArray.map((byte) => byte.toString(16).padStart(2, '0')).join('');
|
|
3444
|
+
const data = { hash: hashHex, filename: file.name, fileType: file.type };
|
|
3445
|
+
this.propertyService.uploadVideoTourInit(this.id, data).subscribe({
|
|
3446
|
+
next: (res) => {
|
|
3447
|
+
this.uploadPart(null, res.data.uploadId, file);
|
|
3448
|
+
},
|
|
3449
|
+
error: (e) => { },
|
|
3450
|
+
});
|
|
3451
|
+
});
|
|
3452
|
+
};
|
|
3453
|
+
reader.onerror = (error) => { };
|
|
3454
|
+
reader.readAsArrayBuffer(file);
|
|
3455
|
+
}
|
|
3456
|
+
}
|
|
3457
|
+
uploadPart(lecture, uploadId, file) {
|
|
3458
|
+
let uploadedCount = 0;
|
|
3459
|
+
const fileChunkList = this.createFileChunk(file);
|
|
3460
|
+
const numberOfChunks = fileChunkList.length;
|
|
3461
|
+
from(fileChunkList)
|
|
3462
|
+
.pipe(concatMap((val, index) => this.uploadFile(lecture, val.file, index, uploadId)), take(numberOfChunks))
|
|
3463
|
+
.subscribe((res) => {
|
|
3464
|
+
uploadedCount++;
|
|
3465
|
+
const p = ((uploadedCount / numberOfChunks) * 100).toFixed(0);
|
|
3466
|
+
lecture.item.progress = parseFloat(p);
|
|
3467
|
+
if (uploadedCount === numberOfChunks) {
|
|
3468
|
+
this.completePartUpload(lecture, { uploadId });
|
|
3469
|
+
}
|
|
3470
|
+
});
|
|
3471
|
+
}
|
|
3472
|
+
completePartUpload(lecture, data) {
|
|
3473
|
+
data.duration = lecture.item.duration;
|
|
3474
|
+
this.propertyService.completePartUpload(lecture.id, data).subscribe({
|
|
3475
|
+
next: (res) => {
|
|
3476
|
+
lecture.isUploading = false;
|
|
3477
|
+
lecture.item.id = res.data.id;
|
|
3478
|
+
},
|
|
3479
|
+
error: (e) => {
|
|
3480
|
+
this.snackBarService.open('Upload failed: ' + e.message);
|
|
3481
|
+
},
|
|
3482
|
+
});
|
|
3483
|
+
}
|
|
3484
|
+
uploadFile(lecture, file, index, uploadId) {
|
|
3485
|
+
const reader = new FileReader();
|
|
3486
|
+
return new Observable((observer) => {
|
|
3487
|
+
reader.readAsArrayBuffer(file);
|
|
3488
|
+
reader.onload = (e) => {
|
|
3489
|
+
const fileBuffer = e.target.result;
|
|
3490
|
+
crypto.subtle.digest('SHA-256', fileBuffer).then((res) => {
|
|
3491
|
+
const hashArray = Array.from(new Uint8Array(res));
|
|
3492
|
+
const hashHex = hashArray.map((byte) => byte.toString(16).padStart(2, '0')).join('');
|
|
3493
|
+
const formData = new FormData();
|
|
3494
|
+
formData.append('file', file);
|
|
3495
|
+
formData.append('uploadId', uploadId);
|
|
3496
|
+
formData.append('number', index + 1);
|
|
3497
|
+
formData.append('hash', hashHex);
|
|
3498
|
+
this.propertyService.uploadVideoTourPartsToProperty(lecture.id, formData).subscribe({
|
|
3499
|
+
next: (res) => {
|
|
3500
|
+
observer.next(res);
|
|
3501
|
+
observer.complete();
|
|
3502
|
+
},
|
|
3503
|
+
error: (e) => {
|
|
3504
|
+
this.snackBarService.open('Upload failed: ' + e.message);
|
|
3505
|
+
},
|
|
3506
|
+
});
|
|
3507
|
+
});
|
|
3508
|
+
};
|
|
3509
|
+
reader.onerror = (error) => {
|
|
3510
|
+
this.snackBarService.open('Upload failed: ' + error);
|
|
3511
|
+
};
|
|
3512
|
+
});
|
|
3513
|
+
}
|
|
3514
|
+
createFileChunk(file, size = this.chunkSize) {
|
|
3515
|
+
const fileChunkList = [];
|
|
3516
|
+
let count = 0;
|
|
3517
|
+
while (count < file.size) {
|
|
3518
|
+
fileChunkList.push({
|
|
3519
|
+
file: file.slice(count, count + size),
|
|
3520
|
+
});
|
|
3521
|
+
count += size;
|
|
3522
|
+
}
|
|
3523
|
+
return fileChunkList;
|
|
3524
|
+
}
|
|
3422
3525
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: PropertyManageVideoTourComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
3423
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: PropertyManageVideoTourComponent, isStandalone: true, selector: "rolatech-property-manage-video-tour", usesInheritance: true, ngImport: i0, template: "<rolatech-property-manage-content>\n <rolatech-toolbar title=\"Video tour\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <!-- <rolatech-property-video-tour-item [property]=\"\"></rolatech-property-video-tour-item> -->\n <div class=\"flex flex-col\">\n <div>\n <div>Youtube</div>\n <div></div>\n </div>\n <div>\n <div>COS</div>\n <div></div>\n </div>\n </div>\n @for (item of propertyVideoTour; track $index) {\n <div>{{ type[item.type] === 'Youtube' }}</div>\n @if (type[item.type] === 'Youtube') {\n <div class=\"relative w-full aspect-video\">\n @if (!iframeLoaded) {\n <div class=\"absolute inset-0 flex items-center justify-center bg-black/10\">\n <span>Loading...</span>\n </div>\n }\n <iframe [src]=\"safeURL\" frameborder=\"0\" allowfullscreen class=\"w-full h-full\" (load)=\"iframeLoaded = true\"></iframe>\n </div>\n <button mat-flat-button (click)=\"updateVideoTour()\" class=\"mt-3\">Update video tour</button>\n }\n @if (type[item.type] === 'COS') {}\n }\n <!-- @if (propertyVideoTour) {\n\n } @else {\n <button mat-flat-button (click)=\"addVideoTour()\">Add video tour</button>\n } -->\n</rolatech-property-manage-content>\n", styles: [""], dependencies: [{ kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: PropertyManageContentComponent, selector: "rolatech-property-manage-content" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$4.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] });
|
|
3526
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: PropertyManageVideoTourComponent, isStandalone: true, selector: "rolatech-property-manage-video-tour", usesInheritance: true, ngImport: i0, template: "<rolatech-property-manage-content>\n <rolatech-toolbar title=\"Video tour\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <!-- <rolatech-property-video-tour-item [property]=\"\"></rolatech-property-video-tour-item> -->\n <div class=\"flex flex-col\">\n <div>\n <div>Youtube</div>\n <div></div>\n </div>\n <div>\n <div>COS</div>\n <div></div>\n </div>\n </div>\n <rolatech-video-upload (upload)=\"onUploadToCOS($event)\"></rolatech-video-upload>\n @for (item of propertyVideoTour; track $index) {\n <div>{{ type[item.type] === 'Youtube' }}</div>\n @if (type[item.type] === 'Youtube') {\n <div class=\"relative w-full aspect-video\">\n @if (!iframeLoaded) {\n <div class=\"absolute inset-0 flex items-center justify-center bg-black/10\">\n <span>Loading...</span>\n </div>\n }\n <iframe [src]=\"safeURL\" frameborder=\"0\" allowfullscreen class=\"w-full h-full\" (load)=\"iframeLoaded = true\"></iframe>\n </div>\n <button mat-flat-button (click)=\"updateVideoTour()\" class=\"mt-3\">Update video tour</button>\n }\n @if (type[item.type] === 'COS') {}\n }\n <!-- @if (propertyVideoTour) {\n\n } @else {\n <button mat-flat-button (click)=\"addVideoTour()\">Add video tour</button>\n } -->\n</rolatech-property-manage-content>\n", styles: [""], dependencies: [{ kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: PropertyManageContentComponent, selector: "rolatech-property-manage-content" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$4.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: VideoUpload, selector: "rolatech-video-upload", inputs: ["item", "uploading", "editing", "progress", "editId", "hasUnsaved"], outputs: ["uploadingChange", "editingChange", "mediaEdit", "thumbnailUpload", "upload", "deleteMedia", "editIdChange"] }] });
|
|
3424
3527
|
}
|
|
3425
3528
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: PropertyManageVideoTourComponent, decorators: [{
|
|
3426
3529
|
type: Component,
|
|
3427
|
-
args: [{ selector: 'rolatech-property-manage-video-tour', imports: [ToolbarComponent, PropertyManageContentComponent, MatButtonModule], template: "<rolatech-property-manage-content>\n <rolatech-toolbar title=\"Video tour\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <!-- <rolatech-property-video-tour-item [property]=\"\"></rolatech-property-video-tour-item> -->\n <div class=\"flex flex-col\">\n <div>\n <div>Youtube</div>\n <div></div>\n </div>\n <div>\n <div>COS</div>\n <div></div>\n </div>\n </div>\n @for (item of propertyVideoTour; track $index) {\n <div>{{ type[item.type] === 'Youtube' }}</div>\n @if (type[item.type] === 'Youtube') {\n <div class=\"relative w-full aspect-video\">\n @if (!iframeLoaded) {\n <div class=\"absolute inset-0 flex items-center justify-center bg-black/10\">\n <span>Loading...</span>\n </div>\n }\n <iframe [src]=\"safeURL\" frameborder=\"0\" allowfullscreen class=\"w-full h-full\" (load)=\"iframeLoaded = true\"></iframe>\n </div>\n <button mat-flat-button (click)=\"updateVideoTour()\" class=\"mt-3\">Update video tour</button>\n }\n @if (type[item.type] === 'COS') {}\n }\n <!-- @if (propertyVideoTour) {\n\n } @else {\n <button mat-flat-button (click)=\"addVideoTour()\">Add video tour</button>\n } -->\n</rolatech-property-manage-content>\n" }]
|
|
3530
|
+
args: [{ selector: 'rolatech-property-manage-video-tour', imports: [ToolbarComponent, PropertyManageContentComponent, MatButtonModule, VideoUpload], template: "<rolatech-property-manage-content>\n <rolatech-toolbar title=\"Video tour\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <!-- <rolatech-property-video-tour-item [property]=\"\"></rolatech-property-video-tour-item> -->\n <div class=\"flex flex-col\">\n <div>\n <div>Youtube</div>\n <div></div>\n </div>\n <div>\n <div>COS</div>\n <div></div>\n </div>\n </div>\n <rolatech-video-upload (upload)=\"onUploadToCOS($event)\"></rolatech-video-upload>\n @for (item of propertyVideoTour; track $index) {\n <div>{{ type[item.type] === 'Youtube' }}</div>\n @if (type[item.type] === 'Youtube') {\n <div class=\"relative w-full aspect-video\">\n @if (!iframeLoaded) {\n <div class=\"absolute inset-0 flex items-center justify-center bg-black/10\">\n <span>Loading...</span>\n </div>\n }\n <iframe [src]=\"safeURL\" frameborder=\"0\" allowfullscreen class=\"w-full h-full\" (load)=\"iframeLoaded = true\"></iframe>\n </div>\n <button mat-flat-button (click)=\"updateVideoTour()\" class=\"mt-3\">Update video tour</button>\n }\n @if (type[item.type] === 'COS') {}\n }\n <!-- @if (propertyVideoTour) {\n\n } @else {\n <button mat-flat-button (click)=\"addVideoTour()\">Add video tour</button>\n } -->\n</rolatech-property-manage-content>\n" }]
|
|
3428
3531
|
}] });
|
|
3429
3532
|
|
|
3430
3533
|
const propertyManageRoutes = [
|
|
@@ -3578,7 +3681,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
3578
3681
|
const propertyManageViewingsRoutes = [
|
|
3579
3682
|
{
|
|
3580
3683
|
path: '',
|
|
3581
|
-
loadComponent: () => import('./rolatech-angular-property-property-manage-viewings-index.component-
|
|
3684
|
+
loadComponent: () => import('./rolatech-angular-property-property-manage-viewings-index.component-CPGJsz-b.mjs').then((x) => x.PropertyManageViewingsIndexComponent),
|
|
3582
3685
|
},
|
|
3583
3686
|
{
|
|
3584
3687
|
path: ':id',
|
|
@@ -4192,4 +4295,4 @@ const tenantManageRoutes = [
|
|
|
4192
4295
|
*/
|
|
4193
4296
|
|
|
4194
4297
|
export { AdverseCreditStatus as A, EmploymentStatus as E, PropertyViewingItemComponent as P, ResidencyStatus as R, ViewingTime as V, propertyManageOffersRoutes as a, propertyRoutes as b, propertyManageRoutes as c, propertyManageViewingsRoutes as d, PropertyActionsComponent as e, featureManageRoutes as f, PropertyItemComponent as g, PropertyPricingComponent as h, PropertyPriceType as i, PropertyVideoTourType as j, PropertyStatus as k, lettingManageRoutes as l, PropertyType as m, PropertyInventoryStatus as n, PropertyScope as o, propertyReviewRoutes as p, PropertyViewingStatus as q, PropertyViewerCategory as r, PropertyOfferTimelineStatus as s, tenantManageRoutes as t, PropertyOfferType as u, PropertyOfferStatus as v, PropertyApplicantType as w };
|
|
4195
|
-
//# sourceMappingURL=rolatech-angular-property-rolatech-angular-property-
|
|
4298
|
+
//# sourceMappingURL=rolatech-angular-property-rolatech-angular-property-BUtExPY1.mjs.map
|