1+ $ ( document ) . ready ( function ( ) {
2+ 3+ function outputProjects ( projects ) {
4+ 5+ projects . forEach ( function ( i ) {
6+ 7+ var col = $ ( '<div>' ) . addClass ( 'col col-12 col-sm-6 col-lg-4' ) ;
8+ var a = $ ( '<a>' ) . attr ( 'target' , '_blank' ) . attr ( 'href' , i . url ) ;
9+ 10+ var card = $ ( '<div>' ) . addClass ( 'project-card' ) ;
11+ card . attr ( 'style' , 'background-image: url("' + i . covers . original + '");' ) ;
12+ 13+ var cover = $ ( '<div>' ) . addClass ( 'cover d-flex' ) . attr ( 'data-aos' , 'fade' ) ;
14+ var info = $ ( '<div>' ) . addClass ( 'info align-self-end' ) ;
15+ 16+ var fields = $ ( '<p>' ) . addClass ( 'fields' ) . attr ( 'data-aos' , 'fade-down' ) . attr ( 'data-aos-duration' , '300' ) ;
17+ var title = $ ( '<p>' ) . addClass ( 'title' ) . attr ( 'data-aos' , 'fade-down' ) . attr ( 'data-aos-duration' , '250' ) ;
18+ var button = $ ( '<div>' ) . addClass ( 'btn-outline' ) . attr ( 'data-aos' , 'fade' ) . attr ( 'data-aos-duration' , '250' ) ;
19+ button . attr ( 'style' , 'padding: 10px 24px;' ) ;
20+ 21+ info . append ( fields , title , button ) ;
22+ cover . append ( info ) ;
23+ 24+ card . append ( cover ) ;
25+ 26+ a . append ( card ) ;
27+ col . append ( a ) ;
28+ $ ( 'section.projects .row' ) . append ( col ) ;
29+ 30+ card . on ( 'mouseover' , function ( e ) {
31+ e . preventDefault ( ) ;
32+ cover . attr ( 'style' , 'background: linear-gradient(0deg, ' + '#186577 32%' + ', transparent);' ) . attr ( 'data-aos' , '' ) ;
33+ fields . text ( '// ' + i . fields . join ( ', ' ) ) . attr ( 'data-aos' , '' ) ;
34+ title . text ( i . name ) . attr ( 'data-aos' , '' ) ;
35+ button . addClass ( 'btn-outline' ) . html ( 'View Project' ) . attr ( 'data-aos' , '' ) ;
36+ button . attr ( 'style' , 'padding: 10px 24px;' ) ;
37+ } ) ;
38+ card . on ( 'mouseout' , function ( ) {
39+ cover . attr ( 'style' , 'background: transparent;' ) . attr ( 'data-aos' , 'fade' ) ;
40+ fields . text ( '' ) . attr ( 'data-aos' , 'fade-down' ) . attr ( 'data-aos-duration' , '300' ) ;
41+ title . text ( '' ) . attr ( 'data-aos' , 'fade-down' ) . attr ( 'data-aos-duration' , '250' ) ;
42+ button . removeClass ( 'btn-outline' ) . html ( '' ) . attr ( 'data-aos' , 'fade' ) . attr ( 'data-aos-duration' , '250' ) ;
43+ button . attr ( 'style' , 'padding: 10px 24px;' ) ;
44+ } ) ;
45+ } ) ;
46+ } ;
47+ 48+ var projects = [ ] ;
49+ 50+ var userID = 'larguar' ;
51+ var apiKey = 'v8SNqxsyD70hgx1EXIQPjmjiQVe9K7HQ' ;
52+ var queryURL = 'https://api.behance.net/v2/users/' + userID + '/projects?api_key=' + apiKey ;
53+ 54+ $ . ajax ( {
55+ url : queryURL ,
56+ method : "GET" ,
57+ dataType : 'jsonp'
58+ } ) . then ( function ( response ) {
59+ 60+ // limit number of projects being pulled
61+ for ( var i = 0 ; i < 30 ; i ++ ) {
62+ projects . push ( response . projects [ i ] ) ;
63+ }
64+ 65+ outputProjects ( projects ) ;
66+ 67+ } ) . catch ( function ( error ) {
68+ 69+ var message404 = $ ( '<div>' ) . addClass ( 'container m-auto' ) ;
70+ $ ( '.projects .row' ) . append ( message404 ) ;
71+ message404 . html ( '<div class="row"><div class="col"><h3>Oops, Behance API isn\'t loading.</h3><p class="lead">Have no fear! You can still view my Portfolio <a href="https://www.behance.net/larguar" target="_blank">here</a>.</p></div></div>' ) ;
72+ $ ( '.projects' ) . addClass ( 'error' ) ;
73+ 74+ } ) ;
75+ 76+ $ ( '.menu-toggle' ) . on ( 'click' , function ( event ) {
77+ event . preventDefault ( ) ;
78+ 79+ if ( $ ( this ) . hasClass ( 'closed' ) ) {
80+ 81+ $ ( this ) . removeClass ( 'closed' ) ;
82+ $ ( this ) . addClass ( 'open' ) ;
83+ $ ( 'header' ) . attr ( 'style' , 'background: rgba(255,255,255,0.9); z-index: 1;' ) . attr ( 'data-aos' , '' ) . attr ( 'data-aos-duration' , '50' ) ;
84+ $ ( 'ul.nav' ) . attr ( 'style' , 'opacity: 1;' ) . attr ( 'data-aos' , '' ) . attr ( 'data-aos-duration' , '1000' ) ;
85+ 86+ } else {
87+ 88+ $ ( this ) . removeClass ( 'open' ) ;
89+ $ ( this ) . addClass ( 'closed' ) ;
90+ $ ( 'header' ) . attr ( 'style' , 'background: rgba(255,255,255,0); z-index: -1;' ) . attr ( 'data-aos' , 'fade' ) ;
91+ $ ( 'ul.nav' ) . attr ( 'style' , 'opacity: 0;' ) . attr ( 'data-aos' , 'fade' ) . attr ( 'data-aos-duration' , '50' ) ;
92+ 93+ }
94+ } ) ;
95+ 96+ } ) ;
0 commit comments