Etapp 3 - martinappo/veebirakendus2015 GitHub Wiki

Lisatud võtted

Tehnilised võtted


  • Andmebaasi salvestamine:

    TrainingsController.php failis createTag() funktsioon:

	private function createTag($tagName)
	{
		$created_at = date('Y-m-d H:i:s');
		DB::statement('
				INSERT INTO tags (name, created_at, updated_at) 
				VALUES ("'.$tagName.'", "'.$created_at.'", "'.$created_at.'");
			');
		$id = DB::select('
				SELECT DISTINCT id 
				FROM tags 
				WHERE name = "'.$tagName.'"
			')[0]->id;

		return $id;
	}
  • Andmebaasist andmete küsimine:

    AdminController.php failis getTrainingsWithUsers() funktsioon:

	private function getTrainingsWithUsers() {
		$trainingsWithUser = array();
		$trainingsWithUser = DB::select(
			'SELECT 
				trainings.id as id, 
				trainings.title,
				trainings.confirmed,
				trainings.description,
				trainings.aadress,
				users.id as owner_id, 
				users.name as owner
			FROM users
			INNER JOIN trainings
			ON users.id=trainings.user_id
		');

		return $trainingsWithUser;
	}
  • Andmebaasist agregeeritud andmete küsimine:

    AdminController.php failis funktsioon:

	private function getUsersWithNrOfTrainigs() {
		$usersWithTrainings = array();
		$usersWithTrainings = DB::select(
			'SELECT
				users.id,
				users.name,
				users.email,
				users.fb_id,
				users.g_id,
				users.role,
				COUNT(trainings.id) as training_count
			FROM trainings
			LEFT JOIN users
			ON trainings.user_id=users.id
			GROUP BY id
		');

		return $usersWithTrainings;
	}
  • Javascript-ga lehel muudatuste tegemine vastusena kasutaja tegevustele

    Lehel avaneb javascripti abil sisselogimise kast.

    Treeningu lisamisel/muutmisel on mugavdatud javascripti abil select input'i, et kasutajal oleks võimalikult mugav valida oma treeningule vastavad märksõnad.

Funktsionaalne käideldavus:


  • Autentimine

    Kasutaja saab sisse logida/registreeruda nii facebooki kui google kontoga.

  • AJAX kasutamine

    Sisselogimisaknas käib kasutaja ja serveri vaheline suhtlus AJAX'i abil. Kuna saadame ja võtame vastu infot vähesel määral, siis kasutame selleks JSON'i.

    Kõik ise kirjutatud javascript on resources/js/loginBox.js failis.

  • Päringute arvu ja mahu piiramine

    Lehe optimeerimiseks ja kiiremaks tegemiseks kasutasime järgmiseid võtteid:

  • Pildifailide kompressimine, vähendamine.

  • Javascripti failide vähendamine ja konsentreerimine üheks failiks, et vähendada päringute arvu ja mahtu. Javascripti failid kokku pandud kasutades tööriista gulp.

  • Cssi failide vähendamine ning konsentreerimine üheks failiks, samuti kasutades gulp'i.

  • .htaccess failis määratud failide aegumistähtajad ja tüübid:

    ExpiresActive On
    ExpiresByType image/jpg "access 1 year"
    ExpiresByType image/jpeg "access 1 year"
    ExpiresByType image/gif "access 1 year"
    ExpiresByType image/png "access 1 year"
    ExpiresByType text/css "access 1 month"
    ExpiresByType text/html "access 1 month"
    ExpiresByType application/pdf "access 1 month"
    ExpiresByType text/x-javascript "access 1 month"
    ExpiresByType application/x-shockwave-flash "access 1 month"
    ExpiresByType image/x-icon "access 1 year"
    ExpiresDefault "access 1 month"
  • Google mapsi kaart laadima alles siis kui muu leht on laetud.

Enne muudatusi:

Aeglane google desktop

Aeglane google mobiil

Aeglane pingdom

Pärast muudatusi:

Kiire google desktop

Kiire google mobiil

Kiire pingdom