Browse Source

Image: cache load result

master
parent
commit
4cdc4b0964
  1. 53
      src/image.js

53
src/image.js

@ -1,4 +1,5 @@
var wikidata = require('./wikidata')
var cache = {}
function showImage (url, dom) {
var div = document.createElement('div')
@ -20,38 +21,55 @@ function showWikimediaImage (value, dom) {
function imageLoadAll(data, featureCallback, finalCallback) {
var id
var foundImages = []
var ret = []
var r
var callbackCount = 1
if (data.id in cache) {
cache[data.id].forEach(function (d) {
featureCallback(null, d)
})
return finalCallback(null)
}
if (data.object.tags.image) {
img = data.object.tags.image
if (img.indexOf('File:') === 0) {
id = img.substr(5)
foundImages.push(id)
featureCallback(null, {
r = {
id: id,
type: 'wikimedia'
})
}
ret.push(r)
featureCallback(null, r)
} else if (img.indexOf('http://commons.wikimedia.org/wiki/File:') === 0) {
id = decodeURIComponent(img.substr(39))
foundImages.push(id)
featureCallback(null, {
r = {
id: id,
type: 'wikimedia'
})
}
ret.push(r)
featureCallback(null, r)
} else if (img.indexOf('https://commons.wikimedia.org/wiki/File:') === 0) {
id = decodeURIComponent(img.substr(40))
foundImages.push(id)
featureCallback(null, {
r = {
id: id,
type: 'wikimedia'
})
}
ret.push(r)
featureCallback(null, r)
} else {
foundImages.push(img)
featureCallback(null, {
r = {
id: img,
type: 'url'
})
}
ret.push(r)
featureCallback(null, r)
}
}
@ -62,10 +80,12 @@ function imageLoadAll(data, featureCallback, finalCallback) {
id = d.mainsnak.datavalue.value
if (foundImages.indexOf(id) === -1) {
featureCallback(null, {
r = {
id: id,
type: 'wikimedia'
})
}
ret.push(r)
featureCallback(null, r)
foundImages.push(id)
}
})
@ -86,10 +106,12 @@ function imageLoadAll(data, featureCallback, finalCallback) {
result.images.forEach(function (d) {
if (foundImages.indexOf(d) === -1) {
foundImages.push(d)
featureCallback(null, {
r = {
id: d,
type: 'wikimedia'
})
}
ret.push(r)
featureCallback(null, r)
}
})
}
@ -102,10 +124,12 @@ function imageLoadAll(data, featureCallback, finalCallback) {
var id = value.substr(5)
if (foundImages.indexOf(id) === -1) {
foundImages.push(id)
featureCallback(null, {
r = {
id: id,
type: 'wikimedia'
})
}
ret.push(r)
featureCallback(null, r)
}
}
}
@ -116,6 +140,7 @@ function imageLoadAll(data, featureCallback, finalCallback) {
callbackCount--
if (callbackCount === 0) {
cache[data.id] = ret
finalCallback(null)
}
}

Loading…
Cancel
Save