diff --git a/macrovision.css b/macrovision.css
index ccce66ad..92baebfe 100644
--- a/macrovision.css
+++ b/macrovision.css
@@ -489,6 +489,10 @@ a {
text-align: center;
}
+#options-attribution-citations {
+ text-align: center;
+}
+
.no-transition {
transition: 0s !important;
}
diff --git a/macrovision.html b/macrovision.html
index b6310792..b3535615 100644
--- a/macrovision.html
+++ b/macrovision.html
@@ -252,6 +252,11 @@
+
+ Citations
+
+
+
Source
diff --git a/macrovision.js b/macrovision.js
index 9dbc0d73..611563d8 100644
--- a/macrovision.js
+++ b/macrovision.js
@@ -1647,10 +1647,12 @@ function displayAttribution(file) {
document.querySelector("#options-attribution").style.display = "inline";
const authors = authorsOfFull(file);
const owners = ownersOfFull(file);
+ const citations = citationsOf(file);
const source = sourceOf(file);
const authorHolder = document.querySelector("#options-attribution-authors");
const ownerHolder = document.querySelector("#options-attribution-owners");
+ const citationHolder = document.querySelector("#options-attribution-citations");
const sourceHolder = document.querySelector("#options-attribution-source");
if (authors === []) {
@@ -1717,6 +1719,24 @@ function displayAttribution(file) {
}
+ if (citations === [] || citations === undefined) {
+
+ } else {
+ citationHolder.innerHTML = "";
+
+ const list = document.createElement("ul");
+ citationHolder.appendChild(list);
+ citations.forEach(citation => {
+ const citationEntry = document.createElement("li");
+ const link = document.createElement("a");
+ link.style.display = "block";
+ link.href = citation;
+ link.innerText = new URL(citation).host;
+ citationEntry.appendChild(link);
+ list.appendChild(citationEntry);
+ })
+ }
+
if (source === null) {
const div = document.createElement("div");
div.innerText = "No link";
diff --git a/media/attribution.js b/media/attribution.js
index 5e47329f..5f4ccd3c 100644
--- a/media/attribution.js
+++ b/media/attribution.js
@@ -1121,7 +1121,29 @@ const attributionData = {
prefix: "./media/buildings/road-markings/",
files: [
{ name: "compact-parking-space.svg", source: null },
+ ],
+ authors: [
+ "chemicalcrux"
+ ],
+ citations: [
+ "https://www.cityofalbany.net/images/stories/planning/development_code/09-Article%209-On-Site%20Development%20and%20Environmental%20Standards.pdf"
+ ]
+ },
+ {
+ prefix: "./media/buildings/road-markings/",
+ files: [
{ name: "crosswalk.svg", source: null },
+ ],
+ authors: [
+ "chemicalcrux"
+ ],
+ citations: [
+ "https://gis.penndot.gov/BPR_PDF_FILES/Documents/LTAP/TechSheets/TS_193.pdf"
+ ]
+ },
+ {
+ prefix: "./media/buildings/road-markings/",
+ files: [
{ name: "line.svg", source: null },
{ name: "broken-line.svg", source: null },
{ name: "dotted-line.svg", source: null },
@@ -1129,6 +1151,9 @@ const attributionData = {
authors: [
"chemicalcrux"
],
+ citations: [
+ "https://mutcd.fhwa.dot.gov/pdfs/2003/Ch3.pdf"
+ ]
},
{
prefix: "./media/buildings/skyscrapers/",
@@ -21246,6 +21271,7 @@ function prepareAttribution() {
attribution.prefixes[citation.prefix] = {
authors: citation.authors,
owners: citation.owners,
+ citations: citation.citations,
source: citation.all
}
} else {
@@ -21253,6 +21279,7 @@ function prepareAttribution() {
attribution.files[citation.prefix + file.name] = {
authors: citation.authors,
owners: citation.owners,
+ citations: citation.citations,
source: file.source,
nsfw: file.nsfw
}
@@ -21353,6 +21380,23 @@ function ownersOfFull(file) {
}
}
+function citationsOf(file) {
+ if (attribution.files[file])
+ return attribution.files[file].citations;
+ else {
+ const found = attribution.prefixes[Object.keys(attribution.prefixes).find(path => {
+ return (file.indexOf(path) == 0);
+ })];
+
+
+ if (found === undefined) {
+ return undefined;
+ } else {
+ return found.citations;
+ }
+ }
+}
+
function sourceOf(file) {
if (attribution.files[file])
return attribution.files[file].source;