Skip to content

Commit 0fea4e6

Browse files
committed
🎩 unsplash demo cleanup
unsplash credit
1 parent f62dd55 commit 0fea4e6

File tree

3 files changed

+34
-63
lines changed

3 files changed

+34
-63
lines changed

‎sandbox/js/unsplash.js‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
var container = document.querySelector('.container');
22

3+
var unsplashID = '9ad80b14098bcead9c7de952435e937cc3723ae61084ba8e729adb642daf0251';
4+
35
var infScroll = new InfiniteScroll( '.container', {
4-
path: 'https://api.unsplash.com/photos?client_id=9ad80b14098bcead9c7de952435e937cc3723ae61084ba8e729adb642daf0251&page={{#}}',
6+
path: 'https://api.unsplash.com/photos?page={{#}}&client_id=' + unsplashID,
57
responseType: '',
68
history: false,
79
});
@@ -20,13 +22,13 @@ function getItem( photo ) {
2022

2123
// micro templating, sort-of
2224
function microTemplate( src, data ) {
23-
return src.replace( /\{\{([\w\-\.]+)\}\}/gi, function( match, key ) {
24-
var parts = key.split('.');
25+
// replace {{tags}} in source
26+
return src.replace( /\{\{([\w\-_\.]+)\}\}/gi, function( match, key ) {
27+
// walk through objects to get value
2528
var value = data;
26-
for ( var i=0; i < parts.length; i++ ) {
27-
var part = parts[i];
29+
key.split('.').forEach( function( part ) {
2830
value = value[ part ];
29-
}
31+
});
3032
return value;
3133
});
3234
}

‎sandbox/unsplash-masonry.html‎

Lines changed: 21 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
padding-bottom: 400px;
1717
}
1818

19-
#item-template { display: none; }
20-
2119
.grid-sizer, .grid-item {
2220
width: 25%;
2321
}
@@ -47,6 +45,8 @@
4745

4846
<h1>unsplash masonry</h1>
4947

48+
<p>Loading photos from <a href="https://unsplash.com/developers?utm_source=infinite-scroll-demos&utm_medium=referral&utm_campaign=api-credit">Unsplash API</a></p>
49+
5050
<div class="grid">
5151
<div class="grid-sizer"></div>
5252
</div>
@@ -66,9 +66,9 @@ <h1>unsplash masonry</h1>
6666

6767
<script type="text/html" id="item-template">
6868
<div class="grid-item">
69-
<img src="{{urls.small}}" />
69+
<img src="{{urls.small}}" alt="Photo by {{user.name}}" />
7070
<p class="grid-item__caption">
71-
<a href="{{links.html}}">{{user.name}}</a>
71+
<a href="{{user.links.html}}?utm_source=infinite-scroll-demos&utm_medium=referral&utm_campaign=api-credit">{{user.name}}</a>
7272
</p>
7373
</div>
7474
</script>
@@ -96,14 +96,8 @@ <h1>unsplash masonry</h1>
9696
columnWidth: '.grid-sizer',
9797
percentPosition: true,
9898
stagger: 30,
99-
visibleStyle: {
100-
transform: 'translateY(0)',
101-
opacity: 1,
102-
},
103-
hiddenStyle: {
104-
transform: 'translateY(100px)',
105-
opacity: 0,
106-
},
99+
visibleStyle: { transform: 'translateY(0)', opacity: 1 },
100+
hiddenStyle: { transform: 'translateY(100px)', opacity: 0 },
107101
});
108102

109103
var infScroll = new InfiniteScroll( '.grid', {
@@ -116,48 +110,24 @@ <h1>unsplash masonry</h1>
116110
var proxyDiv = document.createElement('div');
117111

118112
infScroll.on( 'load', function( response ) {
113+
// parse response text as JSON
119114
var data = JSON.parse( response );
120-
var itemsHTML = data.map( getItem );
115+
// convert data into HTML
116+
var itemsHTML = data.map( getItem ).join('');
117+
// get elements from HTML string
121118
proxyDiv.innerHTML = itemsHTML;
122-
123-
masonryLoad2( proxyDiv )
124-
125-
});
126-
127-
function masonryLoad( response ) {
128-
var fragment = document.createDocumentFragment();
129-
var items = response.querySelectorAll('.grid-item');
130-
131-
for ( var i=0; i < items.length; i++ ) {
132-
fragment.appendChild( items[i] );
133-
}
134-
135-
imagesLoaded( items, function() {
136-
grid.appendChild( fragment );
137-
msnry.appended( items );
138-
});
139-
}
140-
141-
142-
function masonryLoad2( response ) {
143-
var items = response.querySelectorAll('.grid-item');
144-
119+
var items = proxyDiv.querySelectorAll('.grid-item');
120+
// append items after imagesLoaded
145121
imagesLoaded( items, function() {
146122
infScroll.appendItems( items );
147123
msnry.appended( items );
148124
});
149-
}
150-
151-
function jQueryLoad( response ) {
152-
var $items = $( response ).find('.grid-item');
153-
$items.imagesLoaded( function() {
154-
$grid.infiniteScroll( 'appendItems', $items )
155-
.masonry( 'appended', $items );
156-
});
157-
}
158-
125+
});
159126

127+
// load first page
128+
infScroll.loadNextPage();
160129

130+
// ----- template ----- //
161131

162132
var itemTemplateSrc = document.querySelector('#item-template').innerHTML;
163133

@@ -167,20 +137,17 @@ <h1>unsplash masonry</h1>
167137

168138
// micro templating, sort-of
169139
function microTemplate( src, data ) {
170-
return src.replace( /\{\{([\w\-\.]+)\}\}/gi, function( match, key ) {
171-
var parts = key.split('.');
140+
// replace {{tags}} in source
141+
return src.replace( /\{\{([\w\-_\.]+)\}\}/gi, function( match, key ) {
142+
// walk through objects to get value
172143
var value = data;
173-
for ( var i=0; i < parts.length; i++ ) {
174-
var part = parts[i];
144+
key.split('.').forEach( function( part ) {
175145
value = value[ part ];
176-
}
146+
});
177147
return value;
178148
});
179149
}
180150

181-
// load first page
182-
infScroll.loadNextPage();
183-
184151
</script>
185152

186153
</body>

‎sandbox/unsplash.html‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,18 @@
1515

1616
<h1>unsplash</h1>
1717

18+
<p>Loading photos from <a href="https://unsplash.com/developers?utm_source=infinite-scroll-demos&utm_medium=referral&utm_campaign=api-credit">Unsplash API</a></p>
19+
1820
<div class="container"></div>
1921

20-
<div id="item-template">
22+
<script type="text/html" id="item-template">
2123
<div class="item">
2224
<img src="{{urls.small}}" />
2325
<p class="caption">
24-
<a href="{{links.html}}">{{user.name}}</a>
26+
<a href="{{user.links.html}}?utm_source=infinite-scroll-demos&utm_medium=referral&utm_campaign=api-credit">{{user.name}}</a>
2527
</p>
2628
</div>
27-
</div>
29+
</script>
2830

2931
<script src="../bower_components/ev-emitter/ev-emitter.js"></script>
3032
<script src="../bower_components/fizzy-ui-utils/utils.js"></script>

0 commit comments

Comments
 (0)