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:
Pärast muudatusi: