Alien-Web-ExtJS-V3
view release on metacpan or search on metacpan
share/examples/image-organizer/imgorg/AlbumsPanel.js view on Meta::CPAN
afterRender: function() {
Imgorg.AlbumsPanel.superclass.afterRender.call(this);
this.body.on('click', this.onClick, this, {delegate: 'div.album-wrap'});
},
loadAlbums: function() {
Imgorg.ss.Albums.getAllInfo({}, this.setupAlbums, this);
},
setupAlbums: function(data, resp) {
var cols = [[],[],[]];
var idx = 0;
for (var i = 0;i < data.length;i++) {
var a = data[i];
cols[idx].push(a);
if (++idx >= 3) {
idx = 0;
}
}
for (var i = 0; i < 3; i++) {
this.items.get(i).generateAlbums(cols[i]);
}
},
onClick: function(e, n) {
var album = n.attributes.album_id.value;
var album_name = n.attributes.album_name.value;
this.fireEvent('openalbum', this, album, album_name);
}
});
Ext.reg('img-albumspanel', Imgorg.AlbumsPanel);
Imgorg.Album = Ext.extend(Ext.Panel,{
maxWidth: 150,
maxHeight: 100,
tpl: new Ext.XTemplate(
'<tpl for=".">',
'<div class="album-wrap" album_id="{id}" album_name="{text}">',
'<div class="album-wrap-inner">',
'{filename:this.imageFormat}',
'<h3>Album: {text}</h3>',
'<div class="album-details">',
'<p>Date: {date}</p>',
'<p>Size: {size} images</p>',
'</div>',
'</div>',
'</div>',
'</tpl>',{
imageFormat: function(filename, data) {
if (filename) {
return String.format('<img src="images/thumbs/{0}" height="{1}" width="{2}" />',filename, data.height, data.width);
} else {
return '<p>No Images in Album</p>';
}
}
}
),
generateAlbums: function(albums) {
for(var i = 0; i < albums.length;i++) {
if (albums[i].exif) {
albums[i].height = Math.min(this.maxHeight, albums[i].exif.COMPUTED.Height);
albums[i].width = Math.min(this.maxWidth, albums[i].exif.COMPUTED.Width);
}
}
this.tpl.overwrite(this.body, albums);
}
});
Ext.reg('img-album', Imgorg.Album);
( run in 0.547 second using v1.01-cache-2.11-cpan-5b529ec07f3 )