├── scripts ├── pages │ ├── photographer.js │ └── index.js ├── utils │ └── contactForm.js └── templates │ └── photographer.js ├── assets ├── favicon.png ├── images │ └── logo.png ├── photographers │ └── account.png └── icons │ └── close.svg ├── README.md ├── index.html ├── css ├── style.css └── photographer.css ├── photographer.html └── data └── photographers.json /scripts/pages/photographer.js: -------------------------------------------------------------------------------- 1 | //Mettre le code JavaScript lié à la page photographer.html -------------------------------------------------------------------------------- /assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenClassrooms-Student-Center/Front-End-Fisheye/HEAD/assets/favicon.png -------------------------------------------------------------------------------- /assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenClassrooms-Student-Center/Front-End-Fisheye/HEAD/assets/images/logo.png -------------------------------------------------------------------------------- /assets/photographers/account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenClassrooms-Student-Center/Front-End-Fisheye/HEAD/assets/photographers/account.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Base de code du projet P6 - Parcours Front-end 2 | 3 | ## Démarrer le projet 4 | 5 | Rien à installer ici, il suffit d'ouvrir le fichier `index.html`. 6 | 7 | -------------------------------------------------------------------------------- /assets/icons/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /scripts/utils/contactForm.js: -------------------------------------------------------------------------------- 1 | function displayModal() { 2 | const modal = document.getElementById("contact_modal"); 3 | modal.style.display = "block"; 4 | } 5 | 6 | function closeModal() { 7 | const modal = document.getElementById("contact_modal"); 8 | modal.style.display = "none"; 9 | } 10 | -------------------------------------------------------------------------------- /scripts/templates/photographer.js: -------------------------------------------------------------------------------- 1 | function photographerTemplate(data) { 2 | const { name, portrait } = data; 3 | 4 | const picture = `assets/photographers/${portrait}`; 5 | 6 | function getUserCardDOM() { 7 | const article = document.createElement( 'article' ); 8 | const img = document.createElement( 'img' ); 9 | img.setAttribute("src", picture) 10 | const h2 = document.createElement( 'h2' ); 11 | h2.textContent = name; 12 | article.appendChild(img); 13 | article.appendChild(h2); 14 | return (article); 15 | } 16 | return { name, picture, getUserCardDOM } 17 | } -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Fisheye 9 | 10 | 11 |
12 | 13 |

Nos photographes

14 |
15 |
16 |
17 |
18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /css/style.css: -------------------------------------------------------------------------------- 1 | @import url("photographer.css"); 2 | 3 | body { 4 | font-family: "DM Sans", sans-serif; 5 | margin: 0; 6 | } 7 | 8 | 9 | header { 10 | display: flex; 11 | flex-direction: row; 12 | justify-content: space-between; 13 | align-items: center; 14 | height: 90px; 15 | } 16 | 17 | h1 { 18 | color: #901C1C; 19 | margin-right: 100px; 20 | } 21 | 22 | .logo { 23 | height: 50px; 24 | margin-left: 100px; 25 | } 26 | 27 | .photographer_section { 28 | display: grid; 29 | grid-template-columns: 1fr 1fr 1fr; 30 | gap: 70px; 31 | margin-top: 100px; 32 | } 33 | 34 | .photographer_section article { 35 | justify-self: center; 36 | display: flex; 37 | justify-content: center; 38 | align-items: center; 39 | flex-direction: column; 40 | } 41 | 42 | .photographer_section article h2 { 43 | color: #D3573C; 44 | font-size: 36px; 45 | } 46 | 47 | .photographer_section article img { 48 | height: 200px; 49 | width: 200px; 50 | } -------------------------------------------------------------------------------- /photographer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Fisheye - photographe 9 | 10 | 11 |
12 | 13 |
14 |
15 |
16 | 17 |
18 |
19 |
20 | 33 |
34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /css/photographer.css: -------------------------------------------------------------------------------- 1 | #contact_modal { 2 | display: none; 3 | } 4 | 5 | .photograph-header { 6 | background-color: #FAFAFA; 7 | height: 300px; 8 | margin: 0 100px; 9 | } 10 | 11 | .contact_button { 12 | font-size: 20px; 13 | font-weight: bold; 14 | color: white; 15 | padding: 11px; 16 | width: 170px; 17 | height: 70px; 18 | border: none; 19 | background-color: #901C1C; 20 | border-radius: 5px; 21 | cursor: pointer; 22 | } 23 | 24 | .modal { 25 | border-radius: 5px; 26 | background-color: #DB8876; 27 | width: 50%; 28 | display: flex; 29 | flex-direction: column; 30 | align-items: center; 31 | justify-content: space-between; 32 | padding: 35px; 33 | margin: auto; 34 | } 35 | 36 | .modal header { 37 | justify-content: space-between; 38 | width: 100%; 39 | } 40 | 41 | .modal header img { 42 | cursor: pointer; 43 | } 44 | 45 | .modal header h2 { 46 | font-size: 64px; 47 | font-weight: normal; 48 | text-align: center; 49 | } 50 | 51 | form { 52 | display: flex; 53 | width: 100%; 54 | flex-direction: column; 55 | align-items: flex-start; 56 | } 57 | 58 | form label { 59 | color: #312E2E; 60 | font-size: 36px; 61 | } 62 | 63 | form div { 64 | display: flex; 65 | flex-direction: column; 66 | width: 100%; 67 | align-items: self-start; 68 | margin-bottom: 26px; 69 | } 70 | 71 | form input { 72 | width: 100%; 73 | height: 68px; 74 | border: none; 75 | border-radius: 5px; 76 | } -------------------------------------------------------------------------------- /scripts/pages/index.js: -------------------------------------------------------------------------------- 1 | async function getPhotographers() { 2 | // Ceci est un exemple de données pour avoir un affichage de photographes de test dès le démarrage du projet, 3 | // mais il sera à remplacer avec une requête sur le fichier JSON en utilisant "fetch". 4 | let photographers = [ 5 | { 6 | "name": "Ma data test", 7 | "id": 1, 8 | "city": "Paris", 9 | "country": "France", 10 | "tagline": "Ceci est ma data test", 11 | "price": 400, 12 | "portrait": "account.png" 13 | }, 14 | { 15 | "name": "Autre data test", 16 | "id": 2, 17 | "city": "Londres", 18 | "country": "UK", 19 | "tagline": "Ceci est ma data test 2", 20 | "price": 500, 21 | "portrait": "account.png" 22 | }, 23 | ] 24 | // et bien retourner le tableau photographers seulement une fois récupéré 25 | return ({ 26 | photographers: [...photographers, ...photographers, ...photographers]}) 27 | } 28 | 29 | async function displayData(photographers) { 30 | const photographersSection = document.querySelector(".photographer_section"); 31 | 32 | photographers.forEach((photographer) => { 33 | const photographerModel = photographerTemplate(photographer); 34 | const userCardDOM = photographerModel.getUserCardDOM(); 35 | photographersSection.appendChild(userCardDOM); 36 | }); 37 | } 38 | 39 | async function init() { 40 | // Récupère les datas des photographes 41 | const { photographers } = await getPhotographers(); 42 | displayData(photographers); 43 | } 44 | 45 | init(); 46 | 47 | -------------------------------------------------------------------------------- /data/photographers.json: -------------------------------------------------------------------------------- 1 | { 2 | "photographers": [ 3 | { 4 | "name": "Mimi Keel", 5 | "id": 243, 6 | "city": "London", 7 | "country": "UK", 8 | "tagline": "Voir le beau dans le quotidien", 9 | "price": 400, 10 | "portrait": "MimiKeel.jpg" 11 | }, 12 | { 13 | "name": "Ellie-Rose Wilkens", 14 | "id": 930, 15 | "city": "Paris", 16 | "country": "France", 17 | "tagline": "Capturer des compositions complexes", 18 | "price": 250, 19 | "portrait": "EllieRoseWilkens.jpg" 20 | }, 21 | { 22 | "name": "Tracy Galindo", 23 | "id": 82, 24 | "city": "Montreal", 25 | "country": "Canada", 26 | "tagline": "Photographe freelance", 27 | "price": 500, 28 | "portrait": "TracyGalindo.jpg" 29 | }, 30 | { 31 | "name": "Nabeel Bradford", 32 | "id": 527, 33 | "city": "Mexico City", 34 | "country": "Mexico", 35 | "tagline": "Toujours aller de l'avant", 36 | "price": 350, 37 | "portrait": "NabeelBradford.jpg" 38 | }, 39 | { 40 | "name": "Rhode Dubois", 41 | "id": 925, 42 | "city": "Barcelona", 43 | "country": "Spain", 44 | "tagline": "Je crée des souvenirs", 45 | "price": 275, 46 | "portrait": "RhodeDubois.jpg" 47 | }, 48 | { 49 | "name": "Marcel Nikolic", 50 | "id": 195, 51 | "city": "Berlin", 52 | "country": "Germany", 53 | "tagline": "Toujours à la recherche de LA photo", 54 | "price": 300, 55 | "portrait": "MarcelNikolic.jpg" 56 | } 57 | ], 58 | "media": [ 59 | { 60 | "id": 342550, 61 | "photographerId": 82, 62 | "title": "Fashion Yellow Beach", 63 | "image": "Fashion_Yellow_Beach.jpg", 64 | "likes": 62, 65 | "date": "2011-12-08", 66 | "price": 55 67 | }, 68 | { 69 | "id": 8520927, 70 | "photographerId": 82, 71 | "title": "Fashion Urban Jungle", 72 | "image": "Fashion_Urban_Jungle.jpg", 73 | "likes": 11, 74 | "date": "2011-11-06", 75 | "price": 55 76 | }, 77 | { 78 | "id": 9025895, 79 | "photographerId": 82, 80 | "title": "Fashion Pattern on a Pattern", 81 | "image": "Fashion_Pattern_on_Pattern.jpg", 82 | "likes": 72, 83 | "date": "2013-08-12", 84 | "price": 55 85 | }, 86 | { 87 | "id": 9275938, 88 | "photographerId": 82, 89 | "title": "Wedding Gazebo", 90 | "image": "Event_WeddingGazebo.jpg", 91 | "likes": 69, 92 | "date": "2018-02-22", 93 | "price": 55 94 | }, 95 | { 96 | "id": 2053494, 97 | "photographerId": 82, 98 | "title": "Sparkles", 99 | "image": "Event_Sparklers.jpg", 100 | "likes": 2, 101 | "date": "2020-05-25", 102 | "price": 55 103 | }, 104 | { 105 | "id": 7324238, 106 | "photographerId": 82, 107 | "title": "18th Anniversary", 108 | "image": "Event_18thAnniversary.jpg", 109 | "likes": 33, 110 | "date": "2019-06-12", 111 | "price": 55 112 | }, 113 | { 114 | "id": 8328953, 115 | "photographerId": 82, 116 | "title": "Wooden sculpture of a horse", 117 | "video": "Art_Wooden_Horse_Sculpture.mp4", 118 | "likes": 24, 119 | "date": "2011-12-08", 120 | "price": 100 121 | }, 122 | { 123 | "id": 7502053, 124 | "photographerId": 82, 125 | "title": "Triangle Man", 126 | "image": "Art_Triangle_Man.jpg", 127 | "likes": 88, 128 | "date": "2007-05-07", 129 | "price": 55 130 | }, 131 | { 132 | "id": 8523492, 133 | "photographerId": 82, 134 | "title": "Purple Tunnel", 135 | "image": "Art_Purple_light.jpg", 136 | "likes": 24, 137 | "date": "2018-05-05", 138 | "price": 55 139 | }, 140 | { 141 | "id": 75902334, 142 | "photographerId": 82, 143 | "title": "Art Mine", 144 | "image": "Art_Mine.jpg", 145 | "likes": 75, 146 | "date": "2019-11-25", 147 | "price": 55 148 | }, 149 | 150 | { 151 | "id": 73852953, 152 | "photographerId": 925, 153 | "title": "8 Rows", 154 | "image": "Sport_2000_with_8.jpg", 155 | "likes": 52, 156 | "date": "2013-02-30", 157 | "price": 70 158 | }, 159 | { 160 | "id": 92758372, 161 | "photographerId": 925, 162 | "title": "Fashion Wings", 163 | "image": "Fashion_Wings.jpg", 164 | "likes": 58, 165 | "date": "2018-07-17", 166 | "price": 70 167 | }, 168 | { 169 | "id": 32958383, 170 | "photographerId": 925, 171 | "title": "Melody Red on Stripes", 172 | "image": "Fashion_Melody_Red_on_Stripes.jpg", 173 | "likes": 11, 174 | "date": "2019-08-12", 175 | "price": 70 176 | }, 177 | { 178 | "id": 928587383, 179 | "photographerId": 925, 180 | "title": "Venture Conference", 181 | "image": "Event_VentureConference.jpg", 182 | "likes": 2, 183 | "date": "2019-01-02", 184 | "price": 70 185 | }, 186 | { 187 | "id": 725639493, 188 | "photographerId": 925, 189 | "title": "Product Pitch", 190 | "image": "Event_ProductPitch.jpg", 191 | "likes": 3, 192 | "date": "2019-05-20", 193 | "price": 70 194 | }, 195 | { 196 | "id": 23394384, 197 | "photographerId": 925, 198 | "title": "Musical Festival Keyboard", 199 | "image": "Event_KeyboardCheck.jpg", 200 | "likes": 52, 201 | "date": "2019-07-18", 202 | "price": 70 203 | }, 204 | { 205 | "id": 87367293, 206 | "photographerId": 925, 207 | "title": "Musical Festival Singer", 208 | "image": "Event_Emcee.jpg", 209 | "likes": 23, 210 | "date": "2018-02-22", 211 | "price": 70 212 | }, 213 | { 214 | "id": 593834784, 215 | "photographerId": 925, 216 | "title": "Animal Majesty", 217 | "image": "Animals_Majesty.jpg", 218 | "likes": 52, 219 | "date": "2017-03-13", 220 | "price": 70 221 | }, 222 | { 223 | "id": 83958935, 224 | "photographerId": 925, 225 | "title": "Cute puppy on sunset", 226 | "video": "Animals_Puppiness.mp4", 227 | "likes": 52, 228 | "date": "2016-06-12", 229 | "price": 70 230 | }, 231 | { 232 | "id": 394583434, 233 | "photographerId": 527, 234 | "title": "Rocky mountains from the air", 235 | "video": "Travel_Rock_Mountains.mp4", 236 | "likes": 23, 237 | "date": "2017-03-18", 238 | "price": 45 239 | }, 240 | { 241 | "id": 343423425, 242 | "photographerId": 527, 243 | "title": "Outdoor Baths", 244 | "image": "Travel_Outdoor_Baths.jpg", 245 | "likes": 101, 246 | "date": "2017-04-03", 247 | "price": 45 248 | }, 249 | { 250 | "id": 73434243, 251 | "photographerId": 527, 252 | "title": "Road into the Hill", 253 | "image": "Travel_Road_into_Hill.jpg", 254 | "likes": 99, 255 | "date": "2018-04-30", 256 | "price": 45 257 | }, 258 | { 259 | "id": 23425523, 260 | "photographerId": 527, 261 | "title": "Bridge into the Forest", 262 | "image": "Travel_Bridge_into_Forest.jpg", 263 | "likes": 34, 264 | "date": "2016-04-05", 265 | "price": 45 266 | }, 267 | { 268 | "id": 23134513, 269 | "photographerId": 527, 270 | "title": "Boat Wonderer", 271 | "image": "Travel_Boat_Wanderer.jpg", 272 | "likes": 23, 273 | "date": "2017-03-18", 274 | "price": 45 275 | }, 276 | { 277 | "id": 92352352, 278 | "photographerId": 527, 279 | "title": "Portrait Sunkiss", 280 | "image": "Portrait_Sunkissed.jpg", 281 | "likes": 66, 282 | "date": "2018-05-24", 283 | "price": 45 284 | }, 285 | { 286 | "id": 34513453, 287 | "photographerId": 527, 288 | "title": "Shaw Potrait", 289 | "image": "Portrait_Shaw.jpg", 290 | "likes": 52, 291 | "date": "2017-04-21", 292 | "price": 45 293 | }, 294 | { 295 | "id": 23523533, 296 | "photographerId": 527, 297 | "title": "Alexandra", 298 | "image": "Portrait_Alexandra.jpg", 299 | "likes": 95, 300 | "date": "2018-11-02", 301 | "price": 45 302 | }, 303 | { 304 | "id": 525834234, 305 | "photographerId": 527, 306 | "title": "Afternoon Break", 307 | "image": "Portrait_AfternoonBreak.jpg", 308 | "likes": 25, 309 | "date": "2019-01-02", 310 | "price": 45 311 | }, 312 | 313 | { 314 | "id": 623534343, 315 | "photographerId": 243, 316 | "title": "Lonesome", 317 | "image": "Travel_Lonesome.jpg", 318 | "likes": 88, 319 | "date": "2019-02-03", 320 | "price": 45 321 | }, 322 | { 323 | "id": 625025343, 324 | "photographerId": 243, 325 | "title": "Hillside Color", 326 | "image": "Travel_HillsideColor.jpg", 327 | "likes": 85, 328 | "date": "2019-04-03", 329 | "price": 45 330 | }, 331 | { 332 | "id": 2525345343, 333 | "photographerId": 243, 334 | "title": "Wednesday Potrait", 335 | "image": "Portrait_Wednesday.jpg", 336 | "likes": 34, 337 | "date": "2019-04-07", 338 | "price": 45 339 | }, 340 | { 341 | "id": 2523434634, 342 | "photographerId": 243, 343 | "title": "Nora Portrait", 344 | "image": "Portrait_Nora.jpg", 345 | "likes": 63, 346 | "date": "2019-04-07", 347 | "price": 45 348 | }, 349 | { 350 | "id": 398847109, 351 | "photographerId": 243, 352 | "title": "Raw Black Portrait", 353 | "image": "Portrait_Background.jpg", 354 | "likes": 55, 355 | "date": "2019-06-20", 356 | "price": 45 357 | }, 358 | { 359 | "id": 2534342, 360 | "photographerId": 243, 361 | "title": "Seaside Wedding", 362 | "image": "Event_SeasideWedding.jpg", 363 | "likes": 25, 364 | "date": "2019-06-21", 365 | "price": 45 366 | }, 367 | { 368 | "id": 65235234, 369 | "photographerId": 243, 370 | "title": "Boulder Wedding", 371 | "image": "Event_PintoWedding.jpg", 372 | "likes": 52, 373 | "date": "2019-06-25", 374 | "price": 45 375 | }, 376 | { 377 | "id": 23523434, 378 | "photographerId": 243, 379 | "title": "Benevides Wedding", 380 | "image": "Event_BenevidesWedding.jpg", 381 | "likes": 77, 382 | "date": "2019-06-28", 383 | "price": 45 384 | }, 385 | { 386 | "id": 5234343, 387 | "photographerId": 243, 388 | "title": "Wild horses in the mountains", 389 | "video": "Animals_Wild_Horses_in_the_mountains.mp4", 390 | "likes": 142, 391 | "date": "2019-08-23", 392 | "price": 60 393 | }, 394 | { 395 | "id": 95234343, 396 | "photographerId": 243, 397 | "title": "Rainbow Bird", 398 | "image": "Animals_Rainbow.jpg", 399 | "likes": 59, 400 | "date": "2019-07-02", 401 | "price": 60 402 | }, 403 | 404 | { 405 | "id": 52343416, 406 | "photographerId": 195, 407 | "title": "Japanese Tower, Kyoto", 408 | "image": "Travel_Tower.jpg", 409 | "likes": 25, 410 | "date": "2019-04-03", 411 | "price": 60 412 | }, 413 | { 414 | "id": 2523434, 415 | "photographerId": 195, 416 | "title": "Senset on Canals, Venice", 417 | "image": "Travel_SunsetonCanals.jpg", 418 | "likes": 53, 419 | "date": "2019-05-06", 420 | "price": 60 421 | }, 422 | { 423 | "id": 95293534, 424 | "photographerId": 195, 425 | "title": "Mountain and Lake", 426 | "image": "Travel_OpenMountain.jpg", 427 | "likes": 33, 428 | "date": "2019-05-12", 429 | "price": 60 430 | }, 431 | { 432 | "id": 356234343, 433 | "photographerId": 195, 434 | "title": "City Bike and Stair, Paris", 435 | "image": "Travel_Bike_and_Stair.jpg", 436 | "likes": 53, 437 | "date": "2019-06-20", 438 | "price": 60 439 | }, 440 | { 441 | "id": 235234343, 442 | "photographerId": 195, 443 | "title": "Adventure Door, India", 444 | "image": "Travel_Adventure_Door.jpg", 445 | "likes": 63, 446 | "date": "2019-06-26", 447 | "price": 60 448 | }, 449 | { 450 | "id": 6234234343, 451 | "photographerId": 195, 452 | "title": "Contrast, St Petersburg", 453 | "image": "Architecture_Contrast.jpg", 454 | "likes": 52, 455 | "date": "2019-06-30", 456 | "price": 60 457 | }, 458 | { 459 | "id": 6525666253, 460 | "photographerId": 195, 461 | "title": "On a Hill, Tibet", 462 | "image": "Architecture_On_a_hill.jpg", 463 | "likes": 63, 464 | "date": "2019-07-20", 465 | "price": 60 466 | }, 467 | { 468 | "id": 98252523433, 469 | "photographerId": 195, 470 | "title": "Leaning Tower, Pisa", 471 | "image": "Architecture_Dome.jpg", 472 | "likes": 88, 473 | "date": "2020-01-05", 474 | "price": 60 475 | }, 476 | { 477 | "id": 9259398453, 478 | "photographerId": 195, 479 | "title": "Drone shot of Buenos Aires highways", 480 | "video": "Architecture_coverr_circle_empty_highway_in_buenos_aires_587740985637.mp4", 481 | "likes": 57, 482 | "date": "2020-01-20", 483 | "price": 65 484 | }, 485 | { 486 | "id": 3523523534, 487 | "photographerId": 195, 488 | "title": "Corner Building and Blue Sky", 489 | "image": "Architecture_Corner_Room.jpg", 490 | "likes": 54, 491 | "date": "2020-05-05", 492 | "price": 60 493 | }, 494 | { 495 | "id": 952343423, 496 | "photographerId": 930, 497 | "title": "Tricks in te air", 498 | "video": "Sport_Tricks_in_the_air.mp4", 499 | "likes": 150, 500 | "date": "2018-02-30", 501 | "price": 70 502 | }, 503 | { 504 | "id": 235234343, 505 | "photographerId": 930, 506 | "title": "Climber", 507 | "image": "Sport_Next_Hold.jpg", 508 | "likes": 101, 509 | "date": "2018-03-05", 510 | "price": 65 511 | }, 512 | { 513 | "id": 235343222, 514 | "photographerId": 930, 515 | "title": "Surfer", 516 | "image": "sport_water_tunnel.jpg", 517 | "likes": 103, 518 | "date": "2018-03-10", 519 | "price": 70 520 | }, 521 | { 522 | "id": 7775342343, 523 | "photographerId": 930, 524 | "title": "Skier", 525 | "image": "Sport_Sky_Cross.jpg", 526 | "likes": 77, 527 | "date": "2018-04-16", 528 | "price": 50 529 | }, 530 | { 531 | "id": 9253445784, 532 | "photographerId": 930, 533 | "title": "Race End", 534 | "image": "Sport_Race_End.jpg", 535 | "likes": 88, 536 | "date": "2018-04-22", 537 | "price": 65 538 | }, 539 | { 540 | "id": 22299394, 541 | "photographerId": 930, 542 | "title": "Jump!", 543 | "image": "Sport_Jump.jpg", 544 | "likes": 95, 545 | "date": "2018-04-27", 546 | "price": 70 547 | }, 548 | { 549 | "id": 3452342633, 550 | "photographerId": 930, 551 | "title": "White Light", 552 | "image": "Architecture_White_Light.jpg", 553 | "likes": 52, 554 | "date": "2018-05-03", 555 | "price": 75 556 | }, 557 | { 558 | "id": 939234243, 559 | "photographerId": 930, 560 | "title": "Water on Modern Building", 561 | "image": "Architecture_Water_on_Modern.jpg", 562 | "likes": 55, 563 | "date": "2018-05-10", 564 | "price": 72 565 | }, 566 | { 567 | "id": 222959233, 568 | "photographerId": 930, 569 | "title": "Horseshoe", 570 | "image": "Architecture_Horseshoe.jpg", 571 | "likes": 85, 572 | "date": "2018-05-15", 573 | "price": 71 574 | }, 575 | { 576 | "id": 965933434, 577 | "photographerId": 930, 578 | "title": "Cross Bar", 579 | "image": "Architecture_Cross_Bar.jpg", 580 | "likes": 66, 581 | "date": "2018-05-20", 582 | "price": 58 583 | }, 584 | { 585 | "id": 777723343, 586 | "photographerId": 930, 587 | "title": "Connected Curves", 588 | "image": "Architecture_Connected_Curves.jpg", 589 | "likes": 79, 590 | "date": "2018-05-21", 591 | "price": 80 592 | } 593 | ] 594 | } 595 | --------------------------------------------------------------------------------