File

src/app/activitytype/activitytype.component.ts

Implements

OnInit

Metadata

Index

Properties
Methods

Constructor

constructor(route: ActivatedRoute, db: DbConnectionService, router: Router)
Parameters :
Name Type Optional
route ActivatedRoute No
db DbConnectionService No
router Router No

Methods

createActivity
createActivity()
Returns : void
fetchDayByDayView
fetchDayByDayView()
Returns : void
fetchMainActivityTypeDetails
fetchMainActivityTypeDetails()
Returns : void
fetchMainActivityTypePictures
fetchMainActivityTypePictures()
Returns : void
ngOnInit
ngOnInit()
Returns : void

Properties

mainActivityType
Type : object
mainActivityTypeName
Type : string
Default value : ""
mainActivityTypePictures
Type : Object[]
Default value : []
mobile
Type : boolean
Default value : false
onBeforeSlide
Default value : () => {...}
picturesLoaded
Type : boolean
Default value : false
settings
Type : object
Default value : { counter: false, }
trip
Type : Object
Default value : null
tripId
Type : number
tripSummary
Type : Object[]
Default value : []
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { DbConnectionService } from '../db-connection.service';
import { LightgalleryModule } from 'lightgallery/angular/13';
import { BeforeSlideDetail } from 'lightgallery/lg-events';
import { YourtripComponent } from '../yourtrip/yourtrip.component';

@Component({
  selector: 'app-activitytype',
  templateUrl: './activitytype.component.html',
  styleUrls: ['./activitytype.component.scss']
})
export class ActivitytypeComponent implements OnInit {

  trip: Object = null;
  tripId: number;
  mainActivityTypeName = "";
  mobile: boolean = false;
  mainActivityType: object;
  tripSummary: Object[] = [];
  mainActivityTypePictures: Object[] = [];
  picturesLoaded: boolean = false;

  settings = {
    counter: false,
  };
  onBeforeSlide = (detail: BeforeSlideDetail): void => {
    const { index, prevIndex } = detail;
    console.log(index, prevIndex);
  };



  constructor(private route: ActivatedRoute,
    private db: DbConnectionService,
    private router: Router) { }

  ngOnInit(): void {

    if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
      this.mobile = true
    }
    this.route.params.subscribe(r => {

      if (r["tripId"]) {
        this.tripId = Number(r["tripId"]);
        // this.fetchDayByDayView()
      }
      // error handling
      if (!r["activitytype"])
        return alert("Invalid activitytype");


      this.mainActivityTypeName = r['activitytype']

    })
    this.fetchMainActivityTypeDetails();
    this.fetchMainActivityTypePictures()
  }


  fetchMainActivityTypeDetails() {
    this.db.executeQuery(`SELECT * FROM MainActivityType WHERE name="${this.mainActivityTypeName}"`).then(r => {
      this.mainActivityType = r["data"][0];
    })
  }

  fetchMainActivityTypePictures() {
    this.db.executeQuery(`SELECT * FROM MainActivityTypePicture WHERE mainActivityType = "${this.mainActivityTypeName}"`).then(r => {
      this.mainActivityTypePictures = r["data"]
    })
    this.picturesLoaded = true
  }

  fetchDayByDayView() {
    this.db.executeQuery(`SELECT * from DayByDayView WHERE tripID=${this.tripId}`).then(r => {
      this.tripSummary = r["data"];
    })
  }

  createActivity() {
    this.db.executeQuery(`SELECT persons FROM Trip WHERE tripID=${this.tripId}`).then(r1 => {
      let persons = r1["data"][0]["persons"];
      console.log(persons)

      // fetch recommended nights of mainactivity
      // this.db.executeQuery(`SELECT recommendedNights FROM MainActivityType WHERE name="${activity['name']}"`).then(r2 => {
      //    let nights = r2["data"][0]["recommendedNights"];

      // fetch next available date
      this.db.executeQuery(`SELECT endDate FROM ((SELECT tripID, startDate as endDate, 'ARRIVAL' as name FROM Trip) UNION (SELECT tripID, DATE_ADD(startDate, INTERVAL nights DAY) as endDate, mainActivityType as name FROM MainActivity)) AS T WHERE tripID=${this.tripId} ORDER BY endDate DESC LIMIT 1`).then(r3 => {
        let date = r3["data"][0]["endDate"];
        console.log(date)

        // create new Activity with default values
        console.log(`INSERT INTO MainActivity (tripID, mainActivityType, persons, startDate) VALUES (${this.tripId}, '{this.mainActivityTypeName}', ${persons}, '${date}')`)
        this.db.executeQuery(`INSERT INTO MainActivity (tripID, mainActivityType, persons, startDate) VALUES (${this.tripId}, '${this.mainActivityTypeName}', ${persons}, '${date}')`).then(r => {
          // redirect with mainActivityID
          this.router.navigateByUrl(`trip/${this.tripId}/activity/${r["data"].insertId}`);
          // })
        })

        // })
      })
    })
  }



}
<div class="header d-flex justify-content-between">
    <h2>Select Activity</h2>
    <app-wizard [selectedStep]="1" [tripID]=this.tripId></app-wizard>
</div>

<div class="middle-container mobile-container">
    <div class="col">
        <div class="custom-card">
            <div class="d-flex justify-content-between">
                <h3>{{mainActivityType ? mainActivityType['name'] : 'LOADING...'}}</h3>
            </div>
            <hr />
            <div *ngIf="mainActivityType" class="text-justify">{{mainActivityType['description']}}</div>
            <div *ngIf="picturesLoaded">
                <h5 class="cared-title">pictures</h5>
                <div class="gallery-grid" [settings]="settings" (Init)="onInit"> <!-- `(Init)="onInit"` was `[onInit]="onInit"` change not tested (changed to supress error)!!!-->
                    <a *ngFor="let activityPicture of mainActivityTypePictures">
                        <img [src]="activityPicture.picture" />
                    </a>
                </div>
            </div>
            <!-- <h5 class="card-title">description</h5> -->
            <!-- <div *ngIf="mainActivityType" class="text-justify">{{mainActivityType['longDescription']}}</div> -->
            <!-- <button class="btn" (click)="createActivity()" > Add Activity
            </button> -->
        </div>
    </div>
    <!-- <div *ngIf="!mobile  && tripId" class="col-md-3">
        <div class="custom-card">
            <h3>Your Trip</h3>
            <hr />
            <table class="table table-striped">
                <thead>
                    <tr>
                        <th scope="col">Day</th>
                        <th scope="col">Activity</th>
                        <th scope="col">Event</th>
                    </tr>
                </thead>
                <tbody>
                    <tr *ngFor="let trip of tripSummary">
                        <th scope="row">{{trip.day}}</th>
                        <td>{{trip.activity}}</td>
                        <td>{{trip.dayActivity}}</td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div> -->
    <div *ngIf="!mobile  && tripId" class="col-md-3">
        <div class="custom-card">
            <app-yourtrip></app-yourtrip>
        </div>
    </div>
</div>

<div class="footer d-flex justify-content-between">
    <button *ngIf="tripId" type="button" class="btn btn-back" [routerLink]="['/trip', tripId, 'activities']"><i class="bi bi-back"></i> Back</button>
    <button *ngIf="tripId" type="button" class="btn btn-next" (click)="createActivity()"><i class="bi bi-bag-plus-fill"></i> {{ !mobile?
        'Add Activity' : 'Add'}}</button>
</div>

./activitytype.component.scss

@import 'variables';
@import 'footer';
@import 'header';
@import 'custom-checkbox';
@import 'custom-card';
@import 'custom-table';
// @import '~lightgallery/scss/lightgallery';


  @media (max-width: 767px) {
    .gallery-grid {
      .img {
        width: 100%;
        width: 400px;
        margin-bottom: 5px;
        // border: 2px solid $primary-button-color;
        border-radius: 5px;
      };
    }
  }
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""