feat: 支持编辑线路图署名并固定 CC BY 4.0
This commit is contained in:
+19
-1
@@ -43,6 +43,8 @@
|
||||
let lineIdxsByCanonical = {};
|
||||
let activeLineIdx = -1;
|
||||
let routeMapUrl = '';
|
||||
let routeMapCredit = '';
|
||||
let routeMapLicense = 'CC BY 4.0';
|
||||
|
||||
const piePath = (cx, cy, r, a0, a1) => {
|
||||
const x0 = cx + r * Math.cos(a0);
|
||||
@@ -84,6 +86,20 @@
|
||||
return `/assets/${encodeURIComponent(name)}?v=${encodeURIComponent(version)}`;
|
||||
};
|
||||
|
||||
const escapeHtml = (value) => String(value || '')
|
||||
.replace(/&/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, ''');
|
||||
|
||||
const buildCreditHtml = (credit, license, linkColor = '') => {
|
||||
const safeCredit = escapeHtml(credit || '未填写');
|
||||
const safeLicense = escapeHtml(license || 'CC BY 4.0');
|
||||
const colorStyle = linkColor ? ` style="color: ${linkColor};"` : '';
|
||||
return `<div class="jr-asset-credit"><span>线路图署名:${safeCredit}</span><span>许可协议:</span><a href="https://creativecommons.org/licenses/by/4.0/" target="_blank" rel="noopener noreferrer"${colorStyle}>${safeLicense}</a></div>`;
|
||||
};
|
||||
|
||||
function renderStationNode(x, y, code, i, forceColor = null) {
|
||||
const canonical = stationCanonicalByCode[code] || code;
|
||||
const codes = stationCodesByCanonical[canonical] || [canonical];
|
||||
@@ -183,7 +199,7 @@
|
||||
const li = lineStops[activeLineIdx];
|
||||
if (!li) {
|
||||
if (routeMapUrl) {
|
||||
container.innerHTML = `<div class="tvm-overview tvm-animate"><div class="tvm-overview-frame"><img src="${routeMapUrl}" alt="线路图总览"><div class="jr-asset-credit">线路图署名:CC-BY 4.0</div></div></div>`;
|
||||
container.innerHTML = `<div class="tvm-overview tvm-animate"><div class="tvm-overview-frame"><img src="${routeMapUrl}" alt="线路图总览">${buildCreditHtml(routeMapCredit, routeMapLicense)}</div></div>`;
|
||||
} else {
|
||||
container.innerHTML = '<div class="tvm-overview-empty">暂未选择线路,且暂无已上传线路图。</div>';
|
||||
}
|
||||
@@ -388,6 +404,8 @@
|
||||
}
|
||||
|
||||
routeMapUrl = (assetsData && assetsData.routeMap) ? buildAssetUrl(assetsData.routeMap, assetsData.updatedAt) : '';
|
||||
routeMapCredit = assetsData ? String(assetsData.routeMapCredit || '') : '';
|
||||
routeMapLicense = assetsData ? String(assetsData.routeMapLicense || 'CC BY 4.0') : 'CC BY 4.0';
|
||||
|
||||
const fadeStyle = `<style>
|
||||
@keyframes tvmFadeIn {
|
||||
|
||||
Reference in New Issue
Block a user