|
|
|
@ -1,8 +1,9 @@ |
|
|
|
|
|
|
|
|
|
|
|
// TODO: could get path constants from DOM in jinja template
|
|
|
|
// TODO: could get path constants from DOM in jinja template
|
|
|
|
const FOLDER_CONTENTS_PATH = '/pvdb/file_listing/folder_contents_json/'; |
|
|
|
const FOLDER_CONTENTS_PATH = '/pvdb/file_listing/folder_contents_json/'; |
|
|
|
const QUERY_PATH = '/pvdb/tmdb/query_movie_json' |
|
|
|
const QUERY_PATH = '/pvdb/tmdb/query_movie_json'; |
|
|
|
const CREATE_MAPPING_PATH = '/pvdb/tmdb/create_mapping' |
|
|
|
const CREATE_MAPPING_PATH = '/pvdb/tmdb/create_mapping'; |
|
|
|
|
|
|
|
const PATH_PATH = '/pvdb/tmdb/query_path_json'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// NOTE: create links for folder contents
|
|
|
|
// NOTE: create links for folder contents
|
|
|
|
@ -34,10 +35,31 @@ function addContents(node, json) { |
|
|
|
if (element.querySelector('ul')) { |
|
|
|
if (element.querySelector('ul')) { |
|
|
|
element.removeChild(element.querySelector('ul')); |
|
|
|
element.removeChild(element.querySelector('ul')); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
if (a.dataset.is_dir == 'true') |
|
|
|
if (a.dataset.is_dir == 'true') { |
|
|
|
fetchJSON(FOLDER_CONTENTS_PATH + a.dataset.rel_path, parseResponse, element); |
|
|
|
fetchJSON(FOLDER_CONTENTS_PATH + a.dataset.rel_path, parseResponse, element); |
|
|
|
else |
|
|
|
} else { |
|
|
|
openQueryDialog(a.dataset, e.target); |
|
|
|
if (a.className == 'file_stored') |
|
|
|
|
|
|
|
openInfoCard(a.dataset, e.target); |
|
|
|
|
|
|
|
else // 'file'
|
|
|
|
|
|
|
|
openQueryDialog(a.dataset, e.target); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// NOTE: display an 'info card' for a path that has already been stored
|
|
|
|
|
|
|
|
function openInfoCard(dataset, element) { |
|
|
|
|
|
|
|
query_str = PATH_PATH + '?rel_path=' + dataset.rel_path; |
|
|
|
|
|
|
|
fetchJSON(query_str, function(json) { |
|
|
|
|
|
|
|
if (json.errors) { |
|
|
|
|
|
|
|
for (let e of json.errors) |
|
|
|
|
|
|
|
logError(e) |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
blurb = createBlurb(json); |
|
|
|
|
|
|
|
// NOTE: don't need the mapping link here
|
|
|
|
|
|
|
|
let p = blurb.querySelector('.mapping_link').parentNode; |
|
|
|
|
|
|
|
p.parentNode.removeChild(p); |
|
|
|
|
|
|
|
element.parentNode.appendChild(blurb); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -61,25 +83,11 @@ function openQueryDialog(dataset, element) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
for (let result of json) { |
|
|
|
for (let result of json) { |
|
|
|
let qt = document.querySelector('#query_result'); |
|
|
|
blurb = createBlurb(result); |
|
|
|
let qtclone = document.importNode(qt.content, true); |
|
|
|
blurb.querySelector('.mapping_link').addEventListener('click', function(e) { |
|
|
|
|
|
|
|
|
|
|
|
let title_link = qtclone.querySelector('h3 > a'); |
|
|
|
|
|
|
|
title_link.href = result.tmdb_link; |
|
|
|
|
|
|
|
title_link.appendChild(document.createTextNode(result.title)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let date = qtclone.querySelector('.query_release_date'); |
|
|
|
|
|
|
|
date.appendChild(document.createTextNode(result.release_date)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let description = qtclone.querySelector('.query_description'); |
|
|
|
|
|
|
|
description.appendChild(document.createTextNode(result.overview)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let map_link = qtclone.querySelector('.mapping_link'); |
|
|
|
|
|
|
|
map_link.addEventListener('click', function(e) { |
|
|
|
|
|
|
|
submitFileMapping(e, result.id, dataset.rel_path, element); |
|
|
|
submitFileMapping(e, result.id, dataset.rel_path, element); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
tclone.querySelector('#query_result_container').appendChild(blurb); |
|
|
|
tclone.querySelector('#query_result_container').appendChild(qtclone); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
document.querySelector('body').appendChild(tclone); |
|
|
|
document.querySelector('body').appendChild(tclone); |
|
|
|
@ -87,10 +95,28 @@ function openQueryDialog(dataset, element) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function createBlurb(details) { |
|
|
|
|
|
|
|
console.log(details); |
|
|
|
|
|
|
|
let qt = document.querySelector('#query_result'); |
|
|
|
|
|
|
|
let qtclone = document.importNode(qt.content, true); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let title_link = qtclone.querySelector('h3 > a'); |
|
|
|
|
|
|
|
title_link.href = details.tmdb_link; |
|
|
|
|
|
|
|
title_link.appendChild(document.createTextNode(details.title)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let date = qtclone.querySelector('.query_release_date'); |
|
|
|
|
|
|
|
date.appendChild(document.createTextNode(details.release_date)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let description = qtclone.querySelector('.query_description'); |
|
|
|
|
|
|
|
description.appendChild(document.createTextNode(details.overview)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return qtclone; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
async function submitFileMapping(click_event, movie_id, rel_path, element) { |
|
|
|
async function submitFileMapping(click_event, movie_id, rel_path, element) { |
|
|
|
|
|
|
|
click_event.preventDefault(); |
|
|
|
// NOTE: remove the query box
|
|
|
|
// NOTE: remove the query box
|
|
|
|
document.querySelector('body').removeChild(document.querySelector('#query_result_container')); |
|
|
|
document.querySelector('body').removeChild(document.querySelector('#query_result_container')); |
|
|
|
click_event.preventDefault(); |
|
|
|
|
|
|
|
query_str = CREATE_MAPPING_PATH; |
|
|
|
query_str = CREATE_MAPPING_PATH; |
|
|
|
params = new FormData(); |
|
|
|
params = new FormData(); |
|
|
|
params.append('movie_id', movie_id); |
|
|
|
params.append('movie_id', movie_id); |
|
|
|
|