show provider of exchange rates data and map in about page
This commit is contained in:
@@ -5,6 +5,7 @@ const leafletTileSources = {
|
|||||||
minZoom: 1,
|
minZoom: 1,
|
||||||
maxZoom: 19,
|
maxZoom: 19,
|
||||||
defaultZoomLevel: 14,
|
defaultZoomLevel: 14,
|
||||||
|
website: 'https://www.openstreetmap.org',
|
||||||
attribution : '© <a href="https://www.openstreetmap.org/copyright" class="external" target="_blank">OpenStreetMap</a> contributors'
|
attribution : '© <a href="https://www.openstreetmap.org/copyright" class="external" target="_blank">OpenStreetMap</a> contributors'
|
||||||
},
|
},
|
||||||
'openstreetmap-humanitarian': {
|
'openstreetmap-humanitarian': {
|
||||||
@@ -13,6 +14,7 @@ const leafletTileSources = {
|
|||||||
minZoom: 1,
|
minZoom: 1,
|
||||||
maxZoom: 19,
|
maxZoom: 19,
|
||||||
defaultZoomLevel: 14,
|
defaultZoomLevel: 14,
|
||||||
|
website: 'https://www.hotosm.org',
|
||||||
attribution : '© <a href="https://www.openstreetmap.org/copyright" class="external" target="_blank">OpenStreetMap</a> contributors, Tiles style by <a href="https://www.hotosm.org/" class="external" target="_blank">Humanitarian OpenStreetMap Team</a> hosted by <a href="https://openstreetmap.fr/" class="external" target="_blank">OpenStreetMap France</a>'
|
attribution : '© <a href="https://www.openstreetmap.org/copyright" class="external" target="_blank">OpenStreetMap</a> contributors, Tiles style by <a href="https://www.hotosm.org/" class="external" target="_blank">Humanitarian OpenStreetMap Team</a> hosted by <a href="https://openstreetmap.fr/" class="external" target="_blank">OpenStreetMap France</a>'
|
||||||
},
|
},
|
||||||
'opentopomap': {
|
'opentopomap': {
|
||||||
@@ -21,6 +23,7 @@ const leafletTileSources = {
|
|||||||
minZoom: 1,
|
minZoom: 1,
|
||||||
maxZoom: 17,
|
maxZoom: 17,
|
||||||
defaultZoomLevel: 14,
|
defaultZoomLevel: 14,
|
||||||
|
website: 'https://opentopomap.org',
|
||||||
attribution : 'Map data: © <a href="https://www.openstreetmap.org/copyright" class="external" target="_blank">OpenStreetMap</a> contributors, <a href="http://viewfinderpanoramas.org" class="external" target="_blank">SRTM</a> | Map style: © <a href="https://opentopomap.org" class="external" target="_blank">OpenTopoMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/" class="external" target="_blank">CC-BY-SA</a>)'
|
attribution : 'Map data: © <a href="https://www.openstreetmap.org/copyright" class="external" target="_blank">OpenStreetMap</a> contributors, <a href="http://viewfinderpanoramas.org" class="external" target="_blank">SRTM</a> | Map style: © <a href="https://opentopomap.org" class="external" target="_blank">OpenTopoMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/" class="external" target="_blank">CC-BY-SA</a>)'
|
||||||
},
|
},
|
||||||
'opnvkarte': {
|
'opnvkarte': {
|
||||||
@@ -29,6 +32,7 @@ const leafletTileSources = {
|
|||||||
minZoom: 1,
|
minZoom: 1,
|
||||||
maxZoom: 17,
|
maxZoom: 17,
|
||||||
defaultZoomLevel: 14,
|
defaultZoomLevel: 14,
|
||||||
|
website: 'https://memomaps.de',
|
||||||
attribution : 'Map <a href="https://memomaps.de/" class="external" target="_blank">memomaps.de</a> <a href="http://creativecommons.org/licenses/by-sa/2.0/" class="external" target="_blank">CC-BY-SA</a>, map data © <a href="https://www.openstreetmap.org/copyright" class="external" target="_blank">OpenStreetMap</a> contributors'
|
attribution : 'Map <a href="https://memomaps.de/" class="external" target="_blank">memomaps.de</a> <a href="http://creativecommons.org/licenses/by-sa/2.0/" class="external" target="_blank">CC-BY-SA</a>, map data © <a href="https://www.openstreetmap.org/copyright" class="external" target="_blank">OpenStreetMap</a> contributors'
|
||||||
},
|
},
|
||||||
'cyclosm': {
|
'cyclosm': {
|
||||||
@@ -37,6 +41,7 @@ const leafletTileSources = {
|
|||||||
minZoom: 1,
|
minZoom: 1,
|
||||||
maxZoom: 19,
|
maxZoom: 19,
|
||||||
defaultZoomLevel: 14,
|
defaultZoomLevel: 14,
|
||||||
|
website: 'https://github.com/cyclosm/cyclosm-cartocss-style',
|
||||||
attribution : '<a href="https://github.com/cyclosm/cyclosm-cartocss-style/releases" title="CyclOSM - Open Bicycle render" class="external" target="_blank">CyclOSM</a> | Map data: © <a href="https://www.openstreetmap.org/copyright" class="external" target="_blank">OpenStreetMap</a> contributors'
|
attribution : '<a href="https://github.com/cyclosm/cyclosm-cartocss-style/releases" title="CyclOSM - Open Bicycle render" class="external" target="_blank">CyclOSM</a> | Map data: © <a href="https://www.openstreetmap.org/copyright" class="external" target="_blank">OpenStreetMap</a> contributors'
|
||||||
},
|
},
|
||||||
'cartodb': {
|
'cartodb': {
|
||||||
@@ -45,6 +50,7 @@ const leafletTileSources = {
|
|||||||
minZoom: 1,
|
minZoom: 1,
|
||||||
maxZoom: 20,
|
maxZoom: 20,
|
||||||
defaultZoomLevel: 14,
|
defaultZoomLevel: 14,
|
||||||
|
website: 'https://carto.com',
|
||||||
attribution : '© <a href="http://www.openstreetmap.org/copyright" class="external" target="_blank">OpenStreetMap</a>, © <a href="https://carto.com/attributions" class="external" target="_blank">CARTO</a>'
|
attribution : '© <a href="http://www.openstreetmap.org/copyright" class="external" target="_blank">OpenStreetMap</a>, © <a href="https://carto.com/attributions" class="external" target="_blank">CARTO</a>'
|
||||||
},
|
},
|
||||||
'tomtom': {
|
'tomtom': {
|
||||||
@@ -63,6 +69,7 @@ const leafletTileSources = {
|
|||||||
minZoom: 1,
|
minZoom: 1,
|
||||||
maxZoom: 19,
|
maxZoom: 19,
|
||||||
defaultZoomLevel: 14,
|
defaultZoomLevel: 14,
|
||||||
|
website: 'https://tomtom.com',
|
||||||
attribution : '<a href="https://tomtom.com" class="external" target="_blank">© 1992 - 2023 TomTom.</a>'
|
attribution : '<a href="https://tomtom.com" class="external" target="_blank">© 1992 - 2023 TomTom.</a>'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ const amapHolder = {
|
|||||||
AMap: null
|
AMap: null
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export function getAmapWebsite() {
|
||||||
|
return 'https://www.amap.com';
|
||||||
|
}
|
||||||
|
|
||||||
export function loadAmapAssets() {
|
export function loadAmapAssets() {
|
||||||
if (amapHolder.AMap) {
|
if (amapHolder.AMap) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -10,6 +10,10 @@ const baiduMapHolder = {
|
|||||||
COORDINATES_BD09: window.COORDINATES_BD09 || 5
|
COORDINATES_BD09: window.COORDINATES_BD09 || 5
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export function getBaiduMapWebsite() {
|
||||||
|
return 'https://map.baidu.com';
|
||||||
|
}
|
||||||
|
|
||||||
export function loadBaiduMapAssets() {
|
export function loadBaiduMapAssets() {
|
||||||
if (baiduMapHolder.BMap) {
|
if (baiduMapHolder.BMap) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -8,6 +8,10 @@ const googleMapHolder = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export function getGoogleMapWebsite() {
|
||||||
|
return 'https://maps.google.com';
|
||||||
|
}
|
||||||
|
|
||||||
export function loadGoogleMapAssets(language) {
|
export function loadGoogleMapAssets(language) {
|
||||||
if (googleMapHolder.googleMap) {
|
if (googleMapHolder.googleMap) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import {
|
|||||||
} from './leaflet.js';
|
} from './leaflet.js';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
getGoogleMapWebsite,
|
||||||
loadGoogleMapAssets,
|
loadGoogleMapAssets,
|
||||||
createGoogleMapHolder,
|
createGoogleMapHolder,
|
||||||
createGoogleMapInstance,
|
createGoogleMapInstance,
|
||||||
@@ -22,6 +23,7 @@ import {
|
|||||||
} from './googlemap.js';
|
} from './googlemap.js';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
getBaiduMapWebsite,
|
||||||
loadBaiduMapAssets,
|
loadBaiduMapAssets,
|
||||||
createBaiduMapHolder,
|
createBaiduMapHolder,
|
||||||
createBaiduMapInstance,
|
createBaiduMapInstance,
|
||||||
@@ -31,6 +33,7 @@ import {
|
|||||||
} from './baidumap.js';
|
} from './baidumap.js';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
getAmapWebsite,
|
||||||
loadAmapAssets,
|
loadAmapAssets,
|
||||||
createAmapHolder,
|
createAmapHolder,
|
||||||
createAmapInstance,
|
createAmapInstance,
|
||||||
@@ -39,6 +42,20 @@ import {
|
|||||||
removeAmapCenterMaker
|
removeAmapCenterMaker
|
||||||
} from './amap.js';
|
} from './amap.js';
|
||||||
|
|
||||||
|
export function getMapWebsite() {
|
||||||
|
if (getMapProvider() === 'custom') {
|
||||||
|
return '';
|
||||||
|
} else if (mapConstants.leafletTileSources[getMapProvider()]) {
|
||||||
|
return mapConstants.leafletTileSources[getMapProvider()].website;
|
||||||
|
} else if (getMapProvider() === 'googlemap') {
|
||||||
|
return getGoogleMapWebsite();
|
||||||
|
} else if (getMapProvider() === 'baidumap') {
|
||||||
|
return getBaiduMapWebsite();
|
||||||
|
} else if (getMapProvider() === 'amap') {
|
||||||
|
return getAmapWebsite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function loadMapAssets(language) {
|
export function loadMapAssets(language) {
|
||||||
if (mapConstants.leafletTileSources[getMapProvider()] || getMapProvider() === 'custom') {
|
if (mapConstants.leafletTileSources[getMapProvider()] || getMapProvider() === 'custom') {
|
||||||
return loadLeafletMapAssets(language);
|
return loadLeafletMapAssets(language);
|
||||||
|
|||||||
@@ -555,6 +555,19 @@ export default {
|
|||||||
'Reimbursement': 'Reimbursement',
|
'Reimbursement': 'Reimbursement',
|
||||||
'Other Transfer': 'Other Transfer',
|
'Other Transfer': 'Other Transfer',
|
||||||
},
|
},
|
||||||
|
'mapprovider': {
|
||||||
|
'openstreetmap': 'OpenStreetMap',
|
||||||
|
'openstreetmap-humanitarian': 'Humanitarian OpenStreetMap Team',
|
||||||
|
'opentopomap': 'OpenTopoMap',
|
||||||
|
'opnvkarte': 'MeMoMaps',
|
||||||
|
'cyclosm': 'CyclOSM',
|
||||||
|
'cartodb': 'CARTO',
|
||||||
|
'tomtom': 'TomTom',
|
||||||
|
'googlemap': 'Google Map',
|
||||||
|
'baidumap': 'Baidu Map',
|
||||||
|
'amap': 'Amap',
|
||||||
|
'custom': 'User Custom',
|
||||||
|
},
|
||||||
'error': {
|
'error': {
|
||||||
'system error': 'System Error',
|
'system error': 'System Error',
|
||||||
'api not found': 'Failed to request api',
|
'api not found': 'Failed to request api',
|
||||||
@@ -781,6 +794,8 @@ export default {
|
|||||||
'Area Chart': 'Area Chart',
|
'Area Chart': 'Area Chart',
|
||||||
'Column Chart': 'Column Chart',
|
'Column Chart': 'Column Chart',
|
||||||
'Sort by': 'Sort by',
|
'Sort by': 'Sort by',
|
||||||
|
'Map': 'Map',
|
||||||
|
'Provider': 'Provider',
|
||||||
'User': 'User',
|
'User': 'User',
|
||||||
'Application': 'Application',
|
'Application': 'Application',
|
||||||
'Danger Zone': 'Danger Zone',
|
'Danger Zone': 'Danger Zone',
|
||||||
@@ -1250,6 +1265,7 @@ export default {
|
|||||||
'About': 'About',
|
'About': 'About',
|
||||||
'Build Time': 'Build Time',
|
'Build Time': 'Build Time',
|
||||||
'Official Website': 'Official Website',
|
'Official Website': 'Official Website',
|
||||||
|
'Report Issue': 'Report Issue',
|
||||||
'License': 'License',
|
'License': 'License',
|
||||||
'An error occurred': 'An error occurred',
|
'An error occurred': 'An error occurred',
|
||||||
'Parameter Invalid': 'Parameter Invalid',
|
'Parameter Invalid': 'Parameter Invalid',
|
||||||
|
|||||||
@@ -555,6 +555,19 @@ export default {
|
|||||||
'Reimbursement': '报销',
|
'Reimbursement': '报销',
|
||||||
'Other Transfer': '其他转账',
|
'Other Transfer': '其他转账',
|
||||||
},
|
},
|
||||||
|
'mapprovider': {
|
||||||
|
'openstreetmap': 'OpenStreetMap',
|
||||||
|
'openstreetmap-humanitarian': 'Humanitarian OpenStreetMap Team',
|
||||||
|
'opentopomap': 'OpenTopoMap',
|
||||||
|
'opnvkarte': 'MeMoMaps',
|
||||||
|
'cyclosm': 'CyclOSM',
|
||||||
|
'cartodb': 'CARTO',
|
||||||
|
'tomtom': 'TomTom',
|
||||||
|
'googlemap': 'Google 地图',
|
||||||
|
'baidumap': '百度地图',
|
||||||
|
'amap': '高德地图',
|
||||||
|
'custom': '用户自定义',
|
||||||
|
},
|
||||||
'error': {
|
'error': {
|
||||||
'system error': '系统错误',
|
'system error': '系统错误',
|
||||||
'api not found': '接口调用失败',
|
'api not found': '接口调用失败',
|
||||||
@@ -781,6 +794,8 @@ export default {
|
|||||||
'Area Chart': '面积图',
|
'Area Chart': '面积图',
|
||||||
'Column Chart': '柱状图',
|
'Column Chart': '柱状图',
|
||||||
'Sort by': '排序方式',
|
'Sort by': '排序方式',
|
||||||
|
'Map': '地图',
|
||||||
|
'Provider': '提供者',
|
||||||
'User': '用户',
|
'User': '用户',
|
||||||
'Application': '应用',
|
'Application': '应用',
|
||||||
'Danger Zone': '危险区域',
|
'Danger Zone': '危险区域',
|
||||||
@@ -1250,6 +1265,7 @@ export default {
|
|||||||
'About': '关于',
|
'About': '关于',
|
||||||
'Build Time': '编译时间',
|
'Build Time': '编译时间',
|
||||||
'Official Website': '官方网站',
|
'Official Website': '官方网站',
|
||||||
|
'Report Issue': '报告问题',
|
||||||
'License': '许可协议',
|
'License': '许可协议',
|
||||||
'An error occurred': '发生错误',
|
'An error occurred': '发生错误',
|
||||||
'Parameter Invalid': '参数错误',
|
'Parameter Invalid': '参数错误',
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-row class="match-height">
|
<v-row class="match-height">
|
||||||
<v-col cols="12">
|
<v-col cols="12">
|
||||||
<v-card :title="$t('About')">
|
<v-card :title="$t('global.app.title')">
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
<v-row no-gutters>
|
<v-row no-gutters>
|
||||||
<v-col cols="12" md="2">
|
<v-col cols="12" md="2">
|
||||||
@@ -29,6 +29,50 @@
|
|||||||
</a>
|
</a>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
|
<v-row no-gutters>
|
||||||
|
<v-col cols="12" md="2">
|
||||||
|
<span class="text-body-1">{{ $t('Report Issue') }}</span>
|
||||||
|
</v-col>
|
||||||
|
<v-col cols="12" md="10">
|
||||||
|
<a class="text-body-1" href="https://github.com/mayswind/ezbookkeeping/issues" target="_blank">
|
||||||
|
https://github.com/mayswind/ezbookkeeping/issues
|
||||||
|
</a>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
</v-col>
|
||||||
|
|
||||||
|
<v-col cols="12" v-if="exchangeRatesData">
|
||||||
|
<v-card :title="$t('Exchange Rates Data')">
|
||||||
|
<v-card-text>
|
||||||
|
<v-row no-gutters>
|
||||||
|
<v-col cols="12" md="2">
|
||||||
|
<span class="text-body-1">{{ $t('Provider') }}</span>
|
||||||
|
</v-col>
|
||||||
|
<v-col cols="12" md="10">
|
||||||
|
<a class="text-body-1" :href="exchangeRatesData.referenceUrl" target="_blank"
|
||||||
|
v-if="exchangeRatesData.referenceUrl">{{ exchangeRatesData.dataSource }}</a>
|
||||||
|
<span class="text-body-1" v-if="!exchangeRatesData.referenceUrl">{{ exchangeRatesData.dataSource }}</span>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
</v-col>
|
||||||
|
|
||||||
|
<v-col cols="12" v-if="mapProviderName">
|
||||||
|
<v-card :title="$t('Map')">
|
||||||
|
<v-card-text>
|
||||||
|
<v-row no-gutters>
|
||||||
|
<v-col cols="12" md="2">
|
||||||
|
<span class="text-body-1">{{ $t('Provider') }}</span>
|
||||||
|
</v-col>
|
||||||
|
<v-col cols="12" md="10">
|
||||||
|
<a class="text-body-1" :href="mapProviderWebsite" target="_blank"
|
||||||
|
v-if="mapProviderWebsite">{{ mapProviderName }}</a>
|
||||||
|
<span class="text-body-1" v-if="!mapProviderWebsite">{{ mapProviderName }}</span>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
</v-card-text>
|
</v-card-text>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
@@ -68,12 +112,15 @@
|
|||||||
<script>
|
<script>
|
||||||
import { mapStores } from 'pinia';
|
import { mapStores } from 'pinia';
|
||||||
import { useUserStore } from '@/stores/user.js';
|
import { useUserStore } from '@/stores/user.js';
|
||||||
|
import { useExchangeRatesStore } from '@/stores/exchangeRates.js';
|
||||||
|
|
||||||
|
import { getMapProvider } from '@/lib/server_settings.js';
|
||||||
|
import { getMapWebsite } from '@/lib/map/index.js';
|
||||||
import licenses from '@/lib/licenses.js';
|
import licenses from '@/lib/licenses.js';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
computed: {
|
computed: {
|
||||||
...mapStores(useUserStore),
|
...mapStores(useUserStore, useExchangeRatesStore),
|
||||||
version() {
|
version() {
|
||||||
return 'v' + this.$version;
|
return 'v' + this.$version;
|
||||||
},
|
},
|
||||||
@@ -84,6 +131,16 @@ export default {
|
|||||||
|
|
||||||
return this.$locale.formatUnixTimeToLongDateTime(this.userStore, this.$buildTime);
|
return this.$locale.formatUnixTimeToLongDateTime(this.userStore, this.$buildTime);
|
||||||
},
|
},
|
||||||
|
exchangeRatesData() {
|
||||||
|
return this.exchangeRatesStore.latestExchangeRates.data;
|
||||||
|
},
|
||||||
|
mapProviderName() {
|
||||||
|
const provider = getMapProvider();
|
||||||
|
return provider ? this.$t(`mapprovider.${provider}`) : '';
|
||||||
|
},
|
||||||
|
mapProviderWebsite() {
|
||||||
|
return getMapWebsite();
|
||||||
|
},
|
||||||
licenseLines() {
|
licenseLines() {
|
||||||
return licenses.getLicense().replaceAll(/\r/g, '').split('\n');
|
return licenses.getLicense().replaceAll(/\r/g, '').split('\n');
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2,13 +2,29 @@
|
|||||||
<f7-page>
|
<f7-page>
|
||||||
<f7-navbar :title="$t('About')" :back-link="$t('Back')"></f7-navbar>
|
<f7-navbar :title="$t('About')" :back-link="$t('Back')"></f7-navbar>
|
||||||
|
|
||||||
<f7-list strong inset dividers class="margin-top">
|
<f7-block-title class="margin-top">{{ $t('global.app.title') }}</f7-block-title>
|
||||||
|
<f7-list strong inset dividers>
|
||||||
<f7-list-item :title="$t('Version')" :after="version"></f7-list-item>
|
<f7-list-item :title="$t('Version')" :after="version"></f7-list-item>
|
||||||
<f7-list-item :title="$t('Build Time')" :after="buildTime" v-if="buildTime"></f7-list-item>
|
<f7-list-item :title="$t('Build Time')" :after="buildTime" v-if="buildTime"></f7-list-item>
|
||||||
<f7-list-item external :title="$t('Official Website')" link="https://github.com/mayswind/ezbookkeeping" target="_blank"></f7-list-item>
|
<f7-list-item external :title="$t('Official Website')" link="https://github.com/mayswind/ezbookkeeping" target="_blank"></f7-list-item>
|
||||||
|
<f7-list-item external :title="$t('Report Issue')" link="https://github.com/mayswind/ezbookkeeping/issues" target="_blank"></f7-list-item>
|
||||||
<f7-list-item :title="$t('License')" link="#" popup-open=".license-popup"></f7-list-item>
|
<f7-list-item :title="$t('License')" link="#" popup-open=".license-popup"></f7-list-item>
|
||||||
</f7-list>
|
</f7-list>
|
||||||
|
|
||||||
|
<f7-block-title class="margin-top" v-if="exchangeRatesData">{{ $t('Exchange Rates Data') }}</f7-block-title>
|
||||||
|
<f7-list strong inset dividers v-if="exchangeRatesData">
|
||||||
|
<f7-list-item external :title="$t('Provider')" :after="exchangeRatesData.dataSource"
|
||||||
|
:link="exchangeRatesData.referenceUrl" target="_blank" v-if="exchangeRatesData.referenceUrl"></f7-list-item>
|
||||||
|
<f7-list-item :title="$t('Provider')" :after="exchangeRatesData.dataSource" v-if="!exchangeRatesData.referenceUrl"></f7-list-item>
|
||||||
|
</f7-list>
|
||||||
|
|
||||||
|
<f7-block-title class="margin-top" v-if="mapProviderName">{{ $t('Map') }}</f7-block-title>
|
||||||
|
<f7-list strong inset dividers v-if="mapProviderName">
|
||||||
|
<f7-list-item external :title="$t('Provider')" :after="mapProviderName"
|
||||||
|
:link="mapProviderWebsite" target="_blank" v-if="mapProviderWebsite"></f7-list-item>
|
||||||
|
<f7-list-item :title="$t('Provider')" :after="mapProviderName" v-if="!mapProviderWebsite"></f7-list-item>
|
||||||
|
</f7-list>
|
||||||
|
|
||||||
<f7-popup push with-subnavbar swipe-to-close swipe-handler=".swipe-handler" class="license-popup">
|
<f7-popup push with-subnavbar swipe-to-close swipe-handler=".swipe-handler" class="license-popup">
|
||||||
<f7-page>
|
<f7-page>
|
||||||
<f7-navbar>
|
<f7-navbar>
|
||||||
@@ -43,12 +59,15 @@
|
|||||||
<script>
|
<script>
|
||||||
import { mapStores } from 'pinia';
|
import { mapStores } from 'pinia';
|
||||||
import { useUserStore } from '@/stores/user.js';
|
import { useUserStore } from '@/stores/user.js';
|
||||||
|
import { useExchangeRatesStore } from '@/stores/exchangeRates.js';
|
||||||
|
|
||||||
|
import { getMapProvider } from '@/lib/server_settings.js';
|
||||||
|
import { getMapWebsite } from '@/lib/map/index.js';
|
||||||
import licenses from '@/lib/licenses.js';
|
import licenses from '@/lib/licenses.js';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
computed: {
|
computed: {
|
||||||
...mapStores(useUserStore),
|
...mapStores(useUserStore, useExchangeRatesStore),
|
||||||
version() {
|
version() {
|
||||||
return 'v' + this.$version;
|
return 'v' + this.$version;
|
||||||
},
|
},
|
||||||
@@ -59,6 +78,16 @@ export default {
|
|||||||
|
|
||||||
return this.$locale.formatUnixTimeToLongDateTime(this.userStore, this.$buildTime);
|
return this.$locale.formatUnixTimeToLongDateTime(this.userStore, this.$buildTime);
|
||||||
},
|
},
|
||||||
|
exchangeRatesData() {
|
||||||
|
return this.exchangeRatesStore.latestExchangeRates.data;
|
||||||
|
},
|
||||||
|
mapProviderName() {
|
||||||
|
const provider = getMapProvider();
|
||||||
|
return provider ? this.$t(`mapprovider.${provider}`) : '';
|
||||||
|
},
|
||||||
|
mapProviderWebsite() {
|
||||||
|
return getMapWebsite();
|
||||||
|
},
|
||||||
licenseLines() {
|
licenseLines() {
|
||||||
return licenses.getLicense().replaceAll(/\r/g, '').split('\n');
|
return licenses.getLicense().replaceAll(/\r/g, '').split('\n');
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user