mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update cards
This commit is contained in:
parent
1b57622dd0
commit
663564f766
12 changed files with 133 additions and 65 deletions
|
@ -14,12 +14,12 @@
|
||||||
},
|
},
|
||||||
"devDependencies": {},
|
"devDependencies": {},
|
||||||
"ignore": [],
|
"ignore": [],
|
||||||
"version": "1.4.183",
|
"version": "1.4.184",
|
||||||
"_release": "1.4.183",
|
"_release": "1.4.184",
|
||||||
"_resolution": {
|
"_resolution": {
|
||||||
"type": "version",
|
"type": "version",
|
||||||
"tag": "1.4.183",
|
"tag": "1.4.184",
|
||||||
"commit": "0548902d94131fb45ba17c421186014b0bed5e18"
|
"commit": "78fbf509947ae091e7f023d11cd2cb1f7f902bf2"
|
||||||
},
|
},
|
||||||
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
|
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
|
||||||
"_target": "^1.2.1",
|
"_target": "^1.2.1",
|
||||||
|
|
|
@ -706,7 +706,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
|
||||||
|
|
||||||
var html = '';
|
var html = '';
|
||||||
|
|
||||||
var showOtherText = isOuterFooter ? !options.overlayText : options.overlayText;
|
var showOtherText = isOuterFooter ? !overlayText : overlayText;
|
||||||
|
|
||||||
if (isOuterFooter && options.cardLayout && !layoutManager.tv) {
|
if (isOuterFooter && options.cardLayout && !layoutManager.tv) {
|
||||||
var moreIcon = appHost.moreIcon == 'dots-horiz' ? '' : '';
|
var moreIcon = appHost.moreIcon == 'dots-horiz' ? '' : '';
|
||||||
|
@ -719,7 +719,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
|
||||||
|
|
||||||
if (showOtherText) {
|
if (showOtherText) {
|
||||||
var parentTitleUnderneath = item.Type == 'MusicAlbum' || item.Type == 'Audio' || item.Type == 'MusicVideo';
|
var parentTitleUnderneath = item.Type == 'MusicAlbum' || item.Type == 'Audio' || item.Type == 'MusicVideo';
|
||||||
if (options.showParentTitle && !parentTitleUnderneath) {
|
if ((options.showParentTitle || options.showParentTitleOrTitle) && !parentTitleUnderneath) {
|
||||||
|
|
||||||
if (isOuterFooter && item.Type == 'Episode' && item.SeriesName && item.SeriesId) {
|
if (isOuterFooter && item.Type == 'Episode' && item.SeriesName && item.SeriesId) {
|
||||||
|
|
||||||
|
@ -732,12 +732,16 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
lines.push(item.EpisodeTitle ? item.Name : (item.SeriesName || item.Album || item.AlbumArtist || item.GameSystem || ""));
|
var parentTitle = item.EpisodeTitle ? item.Name : (item.SeriesName || item.Album || item.AlbumArtist || item.GameSystem || "");
|
||||||
|
|
||||||
|
if (parentTitle || options.showParentTitle) {
|
||||||
|
lines.push(parentTitle);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (showTitle || forceName) {
|
if (showTitle || forceName || (options.showParentTitleOrTitle && !lines.length)) {
|
||||||
|
|
||||||
var name = options.showTitle == 'auto' && !item.IsFolder && item.MediaType == 'Photo' ? '' : itemHelper.getDisplayName(item);
|
var name = options.showTitle == 'auto' && !item.IsFolder && item.MediaType == 'Photo' ? '' : itemHelper.getDisplayName(item);
|
||||||
|
|
||||||
|
@ -834,7 +838,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
|
||||||
lines.push(airTimeText || '');
|
lines.push(airTimeText || '');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.Type == 'TvChannel') {
|
if (options.showCurrentProgram && item.Type == 'TvChannel') {
|
||||||
|
|
||||||
if (item.CurrentProgram) {
|
if (item.CurrentProgram) {
|
||||||
lines.push(itemHelper.getDisplayName(item.CurrentProgram));
|
lines.push(itemHelper.getDisplayName(item.CurrentProgram));
|
||||||
|
|
|
@ -251,7 +251,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.channelPrograms, .channelHeaderCell {
|
.channelPrograms, .channelHeaderCell {
|
||||||
height: 4em;
|
height: 3.8em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.channelTimeslotHeader {
|
.channelTimeslotHeader {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "iron-meta",
|
"name": "iron-meta",
|
||||||
"version": "1.1.1",
|
"version": "1.1.2",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"web-components",
|
"web-components",
|
||||||
"polymer"
|
"polymer"
|
||||||
|
@ -22,16 +22,17 @@
|
||||||
"paper-styles": "polymerelements/paper-styles#^1.0.4",
|
"paper-styles": "polymerelements/paper-styles#^1.0.4",
|
||||||
"iron-component-page": "polymerelements/iron-component-page#^1.0.0",
|
"iron-component-page": "polymerelements/iron-component-page#^1.0.0",
|
||||||
"test-fixture": "polymerelements/test-fixture#^1.0.0",
|
"test-fixture": "polymerelements/test-fixture#^1.0.0",
|
||||||
"web-component-tester": "*",
|
"web-component-tester": "^4.0.0",
|
||||||
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
||||||
},
|
},
|
||||||
"main": "iron-meta.html",
|
"main": "iron-meta.html",
|
||||||
|
"ignore": [],
|
||||||
"homepage": "https://github.com/PolymerElements/iron-meta",
|
"homepage": "https://github.com/PolymerElements/iron-meta",
|
||||||
"_release": "1.1.1",
|
"_release": "1.1.2",
|
||||||
"_resolution": {
|
"_resolution": {
|
||||||
"type": "version",
|
"type": "version",
|
||||||
"tag": "v1.1.1",
|
"tag": "v1.1.2",
|
||||||
"commit": "e171ee234b482219c9514e6f9551df48ef48bd9f"
|
"commit": "bae96531b63ea6d4ce982f5592248aea849c0f5a"
|
||||||
},
|
},
|
||||||
"_source": "git://github.com/PolymerElements/iron-meta.git",
|
"_source": "git://github.com/PolymerElements/iron-meta.git",
|
||||||
"_target": "^1.0.0",
|
"_target": "^1.0.0",
|
||||||
|
|
33
dashboard-ui/bower_components/iron-meta/.github/ISSUE_TEMPLATE.md
vendored
Normal file
33
dashboard-ui/bower_components/iron-meta/.github/ISSUE_TEMPLATE.md
vendored
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
<!-- Instructions: https://github.com/PolymerElements/iron-meta/CONTRIBUTING.md#filing-issues -->
|
||||||
|
### Description
|
||||||
|
<!-- Example: The `paper-foo` element causes the page to turn pink when clicked. -->
|
||||||
|
|
||||||
|
### Expected outcome
|
||||||
|
|
||||||
|
<!-- Example: The page stays the same color. -->
|
||||||
|
|
||||||
|
### Actual outcome
|
||||||
|
|
||||||
|
<!-- Example: The page turns pink. -->
|
||||||
|
|
||||||
|
### Live Demo
|
||||||
|
<!-- Example: https://jsbin.com/cagaye/edit?html,output -->
|
||||||
|
|
||||||
|
### Steps to reproduce
|
||||||
|
|
||||||
|
<!-- Example
|
||||||
|
1. Put a `paper-foo` element in the page.
|
||||||
|
2. Open the page in a web browser.
|
||||||
|
3. Click the `paper-foo` element.
|
||||||
|
-->
|
||||||
|
|
||||||
|
### Browsers Affected
|
||||||
|
<!-- Check all that apply -->
|
||||||
|
- [ ] Chrome
|
||||||
|
- [ ] Firefox
|
||||||
|
- [ ] Safari 9
|
||||||
|
- [ ] Safari 8
|
||||||
|
- [ ] Safari 7
|
||||||
|
- [ ] Edge
|
||||||
|
- [ ] IE 11
|
||||||
|
- [ ] IE 10
|
|
@ -1,28 +1,23 @@
|
||||||
language: node_js
|
language: node_js
|
||||||
sudo: false
|
sudo: required
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- node_js: stable
|
|
||||||
script: xvfb-run wct
|
|
||||||
addons:
|
|
||||||
firefox: latest
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- google-chrome
|
|
||||||
packages:
|
|
||||||
- google-chrome-stable
|
|
||||||
- node_js: node
|
|
||||||
script:
|
|
||||||
- |
|
|
||||||
if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then
|
|
||||||
wct -s 'default'
|
|
||||||
fi
|
|
||||||
before_script:
|
before_script:
|
||||||
- npm install web-component-tester
|
- npm install -g bower polylint web-component-tester
|
||||||
- npm install bower
|
|
||||||
- export PATH=$PWD/node_modules/.bin:$PATH
|
|
||||||
- bower install
|
- bower install
|
||||||
|
- polylint
|
||||||
env:
|
env:
|
||||||
global:
|
global:
|
||||||
- secure: eGcuDAJt+1GPrC6u95vHufjnSXWbVBZpW7oKQhZjcHrN19l9COdOb7RVkTPsZzEanHaH/D6Psr4WJKyd72Wx5wj+bqGh4nPHTFSnK3+gNT4eJAgLvsxLwHxW8QkYYHEdZe8Wd6sOdal9geeLZ8fG9xELYEtuJR6lww5uLvFv/cw=
|
- secure: mjikUCoN+UpTbFHwbGXUoKp4vtZ2qNN1JYW79WcOik7fCFmvdFzfYQPDa6y9aJvU3kgkDndGdR/ynLG4kejZjmqTS5fYtdHEwpPVPapbVYnquJvCJKbMN4S2QpGCoq51pjKQ8U3Ys6G5HkmdcDfw3SKk1uMgVzKV7fEI+6WnZ/M=
|
||||||
- secure: DoBz8LDaS4/lQ9sTXE5pnp8fqEvG47mmdQaQ14EnHQ+wLbajIaLk59vRfau5c7mIef8dEgaT40r/kVP5QRr3OiH5UJY3jLnCMVIxWJ3ZTkuGGuU6QDQvoGSSBhdA+b+G94bbK6LtHQxRBrkiyT9d0IzT5ZiHlDlteGbjdDWAgw0=
|
- secure: LHDnBtwK7yO2X4GNmIaAl7t85WWc1U189OiPqemD27+jTcKml0by1n9Mu/yrg94jYgeXab9mHgU3uMtIdQstNNwTDu8CgmmIP4H2EWopHrTi3KM7Z7aeofPgMJsVFXwg+WhNlcCfhEsygHZWTxjJXM4fcGOrFPDa4+BTgRa2hEE=
|
||||||
|
node_js: stable
|
||||||
|
addons:
|
||||||
|
firefox: '46.0'
|
||||||
|
apt:
|
||||||
|
sources:
|
||||||
|
- google-chrome
|
||||||
|
packages:
|
||||||
|
- google-chrome-stable
|
||||||
|
sauce_connect: true
|
||||||
|
script:
|
||||||
|
- xvfb-run wct
|
||||||
|
- if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then wct -s 'default'; fi
|
||||||
|
dist: trusty
|
||||||
|
|
|
@ -1,11 +1,16 @@
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
This file is autogenerated based on
|
This file is autogenerated based on
|
||||||
https://github.com/PolymerElements/ContributionGuide/blob/master/CONTRIBUTING.md
|
https://github.com/PolymerElements/ContributionGuide/blob/master/CONTRIBUTING.md
|
||||||
|
|
||||||
If you edit that file, it will get updated everywhere else.
|
If you edit that file, it will get updated everywhere else.
|
||||||
If you edit this file, your changes will get overridden :)
|
If you edit this file, your changes will get overridden :)
|
||||||
|
|
||||||
|
You can however override the jsbin link with one that's customized to this
|
||||||
|
specific element:
|
||||||
|
|
||||||
|
jsbin=https://jsbin.com/cagaye/edit?html,output
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Polymer Elements
|
# Polymer Elements
|
||||||
## Guide for Contributors
|
## Guide for Contributors
|
||||||
|
|
||||||
|
@ -41,7 +46,7 @@ Polymer Elements are built in the open, and the Polymer authors eagerly encourag
|
||||||
3. Click the `paper-foo` element.
|
3. Click the `paper-foo` element.
|
||||||
```
|
```
|
||||||
|
|
||||||
2. **A reduced test case that demonstrates the problem.** If possible, please include the test case as a JSBin. Start with this template to easily import and use relevant Polymer Elements: [http://jsbin.com/cagaye](http://jsbin.com/cagaye/edit?html,output).
|
2. **A reduced test case that demonstrates the problem.** If possible, please include the test case as a JSBin. Start with this template to easily import and use relevant Polymer Elements: [https://jsbin.com/cagaye/edit?html,output](https://jsbin.com/cagaye/edit?html,output).
|
||||||
|
|
||||||
3. **A list of browsers where the problem occurs.** This can be skipped if the problem is the same across all browsers.
|
3. **A list of browsers where the problem occurs.** This can be skipped if the problem is the same across all browsers.
|
||||||
|
|
||||||
|
@ -51,14 +56,14 @@ Polymer Elements are built in the open, and the Polymer authors eagerly encourag
|
||||||
|
|
||||||
When submitting pull requests, please provide:
|
When submitting pull requests, please provide:
|
||||||
|
|
||||||
1. **A reference to the corresponding issue** or issues that will be closed by the pull request. Please refer to these issues using the following syntax:
|
1. **A reference to the corresponding issue** or issues that will be closed by the pull request. Please refer to these issues in the pull request description using the following syntax:
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
(For a single issue)
|
(For a single issue)
|
||||||
Fixes #20
|
Fixes #20
|
||||||
|
|
||||||
(For multiple issues)
|
(For multiple issues)
|
||||||
Fixes #32, #40
|
Fixes #32, fixes #40
|
||||||
```
|
```
|
||||||
|
|
||||||
2. **A succinct description of the design** used to fix any related issues. For example:
|
2. **A succinct description of the design** used to fix any related issues. For example:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "iron-meta",
|
"name": "iron-meta",
|
||||||
"version": "1.1.1",
|
"version": "1.1.2",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"web-components",
|
"web-components",
|
||||||
"polymer"
|
"polymer"
|
||||||
|
@ -22,8 +22,9 @@
|
||||||
"paper-styles": "polymerelements/paper-styles#^1.0.4",
|
"paper-styles": "polymerelements/paper-styles#^1.0.4",
|
||||||
"iron-component-page": "polymerelements/iron-component-page#^1.0.0",
|
"iron-component-page": "polymerelements/iron-component-page#^1.0.0",
|
||||||
"test-fixture": "polymerelements/test-fixture#^1.0.0",
|
"test-fixture": "polymerelements/test-fixture#^1.0.0",
|
||||||
"web-component-tester": "*",
|
"web-component-tester": "^4.0.0",
|
||||||
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
||||||
},
|
},
|
||||||
"main": "iron-meta.html"
|
"main": "iron-meta.html",
|
||||||
|
"ignore": []
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,22 +22,52 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<div class="vertical-section vertical-section-container centered">
|
<div class="vertical-section centered">
|
||||||
<h1><iron-meta></h1>
|
<h1><iron-meta></h1>
|
||||||
|
<h2>Key Query</h2>
|
||||||
|
|
||||||
<iron-meta key="info" value="foo/bar"></iron-meta>
|
<iron-meta key="info" value="foo/bar"></iron-meta>
|
||||||
|
|
||||||
The <code>value</code> stored at <code>key="info"</code> is <code><meta-test></meta-test></code>.
|
The <code>value</code> stored at <code>key="info"</code> is <code><meta-test></meta-test></code>.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="vertical-section centered">
|
||||||
|
<h2>Type Query</h2>
|
||||||
|
|
||||||
|
<iron-meta type="type1" key="a" value="Polymer"></iron-meta>
|
||||||
|
<iron-meta type="type1" key="b" value="is"></iron-meta>
|
||||||
|
<iron-meta type="type2" key="a" value="wonderful"></iron-meta>
|
||||||
|
<iron-meta type="type2" key="b" value="<3"></iron-meta>
|
||||||
|
|
||||||
|
The <code>value(s)</code> stored at <code>type="type1"</code> are:<br><code><type-one></type-one></code>.<br><br>The <code>value(s)</code> stored at <code>type="type2"</code> are:<br><code><type-two></type-two></code>.
|
||||||
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
document.addEventListener('WebComponentsReady', function() {
|
||||||
|
Polymer({
|
||||||
|
is: 'meta-test',
|
||||||
|
ready: function() {
|
||||||
|
this.textContent = new Polymer.IronMetaQuery({key: 'info'}).value;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
Polymer({
|
Polymer({
|
||||||
|
is: 'type-one',
|
||||||
is: 'meta-test',
|
|
||||||
|
|
||||||
ready: function() {
|
ready: function() {
|
||||||
this.textContent = new Polymer.IronMetaQuery({key: 'info'}).value;
|
var resultList = new Polymer.IronMetaQuery({type: "type1"}).list;
|
||||||
|
this.textContent = JSON.stringify(resultList);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Polymer({
|
||||||
|
is: 'type-two',
|
||||||
|
|
||||||
|
ready: function() {
|
||||||
|
var resultList = new Polymer.IronMetaQuery({type: "type2"}).list;
|
||||||
|
this.textContent = JSON.stringify(resultList);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
<!--
|
<!--
|
||||||
@license
|
@license
|
||||||
Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
|
Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
|
||||||
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE
|
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
||||||
The complete set of authors may be found at http://polymer.github.io/AUTHORS
|
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
||||||
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS
|
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
||||||
Code distributed by Google as part of the polymer project is also
|
Code distributed by Google as part of the polymer project is also
|
||||||
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS
|
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
||||||
-->
|
-->
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
|
|
|
@ -33,17 +33,17 @@ attributes or use child nodes to define additional metadata.
|
||||||
Now I can access that element (and it's metadata) from any iron-meta instance
|
Now I can access that element (and it's metadata) from any iron-meta instance
|
||||||
via the byKey method, e.g.
|
via the byKey method, e.g.
|
||||||
|
|
||||||
meta.byKey('info').getAttribute('value');
|
meta.byKey('info');
|
||||||
|
|
||||||
Pure imperative form would be like:
|
Pure imperative form would be like:
|
||||||
|
|
||||||
document.createElement('iron-meta').byKey('info').getAttribute('value');
|
document.createElement('iron-meta').byKey('info');
|
||||||
|
|
||||||
Or, in a Polymer element, you can include a meta in your template:
|
Or, in a Polymer element, you can include a meta in your template:
|
||||||
|
|
||||||
<iron-meta id="meta"></iron-meta>
|
<iron-meta id="meta"></iron-meta>
|
||||||
...
|
...
|
||||||
this.$.meta.byKey('info').getAttribute('value');
|
this.$.meta.byKey('info');
|
||||||
|
|
||||||
@group Iron Elements
|
@group Iron Elements
|
||||||
@demo demo/index.html
|
@demo demo/index.html
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<!doctype html>
|
<!DOCTYPE html><!--
|
||||||
<!--
|
|
||||||
@license
|
@license
|
||||||
Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
|
Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
|
||||||
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
||||||
|
@ -7,10 +6,7 @@ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
||||||
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
||||||
Code distributed by Google as part of the polymer project is also
|
Code distributed by Google as part of the polymer project is also
|
||||||
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
||||||
-->
|
--><html><head>
|
||||||
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
|
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>Tests</title>
|
<title>Tests</title>
|
||||||
|
@ -22,9 +18,12 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
|
||||||
<script>
|
<script>
|
||||||
WCT.loadSuites([
|
WCT.loadSuites([
|
||||||
'basic.html',
|
'basic.html',
|
||||||
'iron-meta.html'
|
'iron-meta.html',
|
||||||
|
'basic.html?dom=shadow',
|
||||||
|
'iron-meta.html?dom=shadow'
|
||||||
]);
|
]);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
</body></html>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue