74 lines
2.1 KiB
JavaScript
74 lines
2.1 KiB
JavaScript
|
async function api(action, data) {
|
||
|
var url = prefix + '/api/'
|
||
|
var key = JSON.stringify([action, data])
|
||
|
if (!cache[key]) {
|
||
|
var response = await fetch(url, {
|
||
|
method: 'POST',
|
||
|
headers: {'Content-Type': 'application/json'},
|
||
|
body: JSON.stringify({
|
||
|
action: action,
|
||
|
data: data
|
||
|
})
|
||
|
})
|
||
|
cache[key] = await response.json()
|
||
|
}
|
||
|
return cache[key]
|
||
|
}
|
||
|
|
||
|
async function getCase(value) {
|
||
|
var conditions = [
|
||
|
{'key': 'case', 'operator': '==', 'value': value}
|
||
|
]
|
||
|
return await api('findDocuments', {
|
||
|
"query":{
|
||
|
"conditions":conditions,
|
||
|
"operator":"&"
|
||
|
},
|
||
|
"range":[0, 10000],
|
||
|
"keys": ["title", "date", "case", "id"]
|
||
|
}).then(response => {
|
||
|
var documents = response.data.items
|
||
|
var events = documents.map(data => {
|
||
|
var date = data.date.split('-')
|
||
|
var event = {
|
||
|
"start_date": {
|
||
|
"year": date[0],
|
||
|
"month": date[1],
|
||
|
"day": date[2],
|
||
|
"hour": "",
|
||
|
"minute": "",
|
||
|
"second": "",
|
||
|
"millisecond": "",
|
||
|
"format": ""
|
||
|
},
|
||
|
"end_date": {
|
||
|
"year": date[0],
|
||
|
"month": date[1],
|
||
|
"day": date[2],
|
||
|
"hour": "",
|
||
|
"minute": "",
|
||
|
"second": "",
|
||
|
"millisecond": "",
|
||
|
"format": ""
|
||
|
},
|
||
|
"media": {
|
||
|
"caption": data['title'],
|
||
|
"credit": "",
|
||
|
"url": mediaPrefix + "/documents/" + data.id + "/512p.jpg"
|
||
|
},
|
||
|
"text": {
|
||
|
"headline": data.title,
|
||
|
"text": data.description || data.title
|
||
|
},
|
||
|
"unique_id": data.id
|
||
|
};
|
||
|
return event
|
||
|
})
|
||
|
return {'events': events}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
async function loadData(value) {
|
||
|
return await getCase(value)
|
||
|
}
|