Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SUCE-76]: Sutta view with tools & information (main functionality) #89

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
140 commits
Select commit Hold shift + click to select a range
916b8bc
restore previous url structure for sutta
TrebuhD Oct 2, 2017
184769e
fix backend sutta endpoint
TrebuhD Oct 2, 2017
357e5d6
update SCSegmentedText to polymer 2
TrebuhD Oct 2, 2017
0f14851
update regular page text to Polymer2
TrebuhD Oct 2, 2017
fe8cdc9
fix dispatch event
TrebuhD Oct 2, 2017
47e5887
fix null title
TrebuhD Oct 2, 2017
8fcdab4
fix css naming
TrebuhD Oct 2, 2017
3866b98
update pageSelector to polymer2
TrebuhD Oct 2, 2017
3a98ebd
fix tests
TrebuhD Oct 2, 2017
6810d4a
Merge remote-tracking branch 'origin/development' into SUCE-76]-Integ…
TrebuhD Oct 2, 2017
3b1ec70
add iron-meta dependency
TrebuhD Oct 2, 2017
fcd322b
change frontend endpoints for sutta resource
TrebuhD Oct 2, 2017
48ea12e
add API_ROOT var using iron-meta
TrebuhD Oct 2, 2017
edd8fd0
fix paths in index.html
TrebuhD Oct 3, 2017
970ff96
fix imports
TrebuhD Oct 3, 2017
da9d9fc
fix download sidebar menu
TrebuhD Oct 3, 2017
1787ed6
fix favicon
TrebuhD Oct 3, 2017
4bb7130
refactor segmented-text
TrebuhD Oct 3, 2017
635d41e
get sutta text
TrebuhD Oct 3, 2017
b43f8d0
fix tests
TrebuhD Oct 3, 2017
4e71899
refactor
TrebuhD Oct 3, 2017
60a405a
display non-segmented sutta text
TrebuhD Oct 3, 2017
02d7b3e
fix tests
TrebuhD Oct 3, 2017
0cdb3b6
display suttaplex
TrebuhD Oct 3, 2017
847972d
display parallels
TrebuhD Oct 3, 2017
6ec4cc9
refactor toolbar
TrebuhD Oct 3, 2017
a07a954
refactor toolbar
TrebuhD Oct 3, 2017
d06ea49
center dialog
TrebuhD Oct 3, 2017
11a0861
display segmented text and suttaplex items
TrebuhD Oct 3, 2017
bda4a92
compute sutta author and title and display in toolbar
TrebuhD Oct 3, 2017
6e11023
handle errors
TrebuhD Oct 3, 2017
cba6b42
move page settings to sc-text-node and center page tools popup
TrebuhD Oct 3, 2017
e8e8cd3
add animation to tools dialog
TrebuhD Oct 3, 2017
8b91178
comment
TrebuhD Oct 3, 2017
a67e72b
fix lint errors
TrebuhD Oct 3, 2017
22c179c
disable background scroll on sutta tools dialog
TrebuhD Oct 4, 2017
515cdae
rename sc-text-node to sc-text-options
TrebuhD Oct 4, 2017
1a342d2
fix some sutta urls not working
TrebuhD Oct 4, 2017
09842d8
refactoring
TrebuhD Oct 4, 2017
d3a526b
add info dialog
TrebuhD Oct 4, 2017
ba91293
add redux dependency and frontend-builder container, modify .gitignore
TrebuhD Oct 5, 2017
dec60e1
add polymer-redux dependency
TrebuhD Oct 5, 2017
13fafaa
create the Redux store
TrebuhD Oct 5, 2017
7280b7a
commit package-lock.json
TrebuhD Oct 5, 2017
2b11ce4
store site language in the redux state tree
TrebuhD Oct 5, 2017
e4a5dc8
fix tests
TrebuhD Oct 6, 2017
349c2b8
update web component tester
TrebuhD Oct 6, 2017
168912b
Merge remote-tracking branch 'origin/development' into SUCE-232]-Impl…
TrebuhD Oct 6, 2017
afb2e56
typo
TrebuhD Oct 6, 2017
00b02e7
merge [SUCE-232]: Implement redux
TrebuhD Oct 6, 2017
1d508a5
start moving routing logic to redux
TrebuhD Oct 6, 2017
307b19b
route to static pages
TrebuhD Oct 7, 2017
41184c0
fix api root
TrebuhD Oct 8, 2017
18591c2
route to all static pages
TrebuhD Oct 8, 2017
8a92f8f
add suttaplex list to redux routing
TrebuhD Oct 8, 2017
4a1fa0a
fix toolbar titles
TrebuhD Oct 8, 2017
766f113
implement search
TrebuhD Oct 9, 2017
ac92f0e
bind search to redux
TrebuhD Oct 9, 2017
d017087
fix search
TrebuhD Oct 9, 2017
7cb124d
add 404 page
TrebuhD Oct 9, 2017
e8e9ed6
formatting
TrebuhD Oct 9, 2017
3e3dcbb
fix lint errors
TrebuhD Oct 9, 2017
f52e8b5
Merge branch 'development' into SUCE-76]-Integrate-API-with-Front-End…
TrebuhD Oct 9, 2017
4f0f0b3
fix toolbar search errors
TrebuhD Oct 9, 2017
be1cf37
toolbar improvements
TrebuhD Oct 9, 2017
40f2e85
add routes for texts
TrebuhD Oct 9, 2017
b3704de
change toolbar title from elements
TrebuhD Oct 10, 2017
27a5dfe
Merge branch 'development' into SUCE-76]-Integrate-API-with-Front-End…
TrebuhD Oct 10, 2017
ea9f351
move new static pages to redux routing
TrebuhD Oct 10, 2017
e54969d
fix toolbar title not changing
TrebuhD Oct 10, 2017
702f10f
add iron-lazy-pages for static pages
TrebuhD Oct 10, 2017
a5bb679
fix tests
TrebuhD Oct 10, 2017
80e02a2
Merge branch 'development' into SUCE-76]-Integrate-API-with-Front-End…
TrebuhD Oct 10, 2017
35c1551
refactor
TrebuhD Oct 10, 2017
8b0eba5
PR fixes 1
TrebuhD Oct 11, 2017
0ac1508
pr fixes 2
TrebuhD Oct 11, 2017
d3434e1
final PR fixes
TrebuhD Oct 11, 2017
49f2249
Merge branch 'development' into SUCE-76]-Integrate-API-with-Front-End…
gradam Oct 11, 2017
5ed8ce7
change routes to keep compatibility with old site
TrebuhD Oct 11, 2017
5b8f3f1
create textPageSelector element
TrebuhD Oct 11, 2017
7479829
fix suttaplex list showing up on static sites
TrebuhD Oct 11, 2017
9fe7f84
fix search page
TrebuhD Oct 11, 2017
77fd082
really fix search page
TrebuhD Oct 11, 2017
41a8c85
add comment
TrebuhD Oct 11, 2017
5c27907
Merge branch 'development' into SUCE-76]-Integrate-API-with-Front-End…
TrebuhD Oct 11, 2017
5efad63
Merge branch 'fix-search-routing' into SUCE-76]-Integrate-API-with-Fr…
TrebuhD Oct 11, 2017
0f8a0ee
fix lint errors
TrebuhD Oct 11, 2017
65bc28d
store sutta text params in redux
TrebuhD Oct 11, 2017
4333616
modify URLs
TrebuhD Oct 11, 2017
b21b4b7
store sutta text in redux
TrebuhD Oct 12, 2017
26f58f6
start implementing segmented texts
TrebuhD Oct 12, 2017
f262ef1
fix links to sutta texts
TrebuhD Oct 12, 2017
ad165fc
rename SCPageText -> SCSimpleText
TrebuhD Oct 12, 2017
fd4e8a9
show loading bar
TrebuhD Oct 12, 2017
7e789bf
fix language links in suttaplex menus
TrebuhD Oct 12, 2017
4d58016
move sc-text-options
TrebuhD Oct 12, 2017
228d627
fix info dialog positioning
TrebuhD Oct 12, 2017
a45135c
display simple sutta text
TrebuhD Oct 12, 2017
6ae585b
remove redundant code
TrebuhD Oct 12, 2017
20427ea
display sutta info in toolbar
TrebuhD Oct 12, 2017
97aa41d
add padding to text options
TrebuhD Oct 12, 2017
f10050e
wip
TrebuhD Oct 12, 2017
b104429
add isw-dialog dependency
TrebuhD Oct 13, 2017
5643157
move text dialogs to navbar element to avoid backdrop issue
TrebuhD Oct 13, 2017
6bc7795
remove redundant styles
TrebuhD Oct 13, 2017
5e7c14b
add comment
TrebuhD Oct 13, 2017
432d304
fix lint error
TrebuhD Oct 13, 2017
a337679
display correct data in meta area popup
TrebuhD Oct 13, 2017
435800e
remove console.dir
TrebuhD Oct 13, 2017
f4de95d
modify query
TrebuhD Oct 13, 2017
66a1b80
Merge branch 'development' into SUCE-76]-Integrate-API-with-Front-End…
TrebuhD Oct 13, 2017
013b35b
add segmented var to sutta text aql query
TrebuhD Oct 13, 2017
67ea42f
correctly distinguish segmented texts
TrebuhD Oct 13, 2017
cdacaed
refactor
TrebuhD Oct 13, 2017
e19851a
Merge branch 'development' into SUCE-76]-Integrate-API-with-Front-End…
TrebuhD Oct 13, 2017
b34b6c4
get new sutta object on url change event
TrebuhD Oct 13, 2017
8f285cc
store iso codes in redux
TrebuhD Oct 13, 2017
8844fc9
correctly handle texts without authors
TrebuhD Oct 13, 2017
c785f93
edited comment
TrebuhD Oct 13, 2017
42de745
add error message
TrebuhD Oct 13, 2017
a947669
finalize simple view
TrebuhD Oct 13, 2017
01e0e69
start reworking segmented texts
TrebuhD Oct 13, 2017
4ed7583
show segmented text
TrebuhD Oct 13, 2017
d442716
fix tests by moving the allIsoCodes var outside of iron-meta
TrebuhD Oct 14, 2017
f508e09
correctly initiate allIsoCodes
TrebuhD Oct 14, 2017
b70e15f
fix parallel link
TrebuhD Oct 14, 2017
fc20a73
switch parallels when changing to new text
TrebuhD Oct 14, 2017
d2cf2ea
fix some texts not showing up
TrebuhD Oct 14, 2017
eeb0328
update sutta view and attributes correctly on route changes
TrebuhD Oct 15, 2017
adf3292
hide textview elements if page error
TrebuhD Oct 15, 2017
1f3f324
refactor
TrebuhD Oct 15, 2017
5d0f5d0
refactor
TrebuhD Oct 15, 2017
d374e29
make whole language list paper items clickable instead of just the text
TrebuhD Oct 15, 2017
40dfe85
close suttaplex on route change
TrebuhD Oct 16, 2017
7136b43
modify backend to make sutta author parameter optional
TrebuhD Oct 16, 2017
4aed0cf
display correct sutta if no author
TrebuhD Oct 16, 2017
1221e0e
remove console.logs
TrebuhD Oct 16, 2017
23872bb
Merge branch 'development' into SUCE-76]-Integrate-API-with-Front-End…
TrebuhD Oct 16, 2017
0174827
remove dead code
TrebuhD Oct 17, 2017
2a210cb
add test stubs
TrebuhD Oct 17, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ The page-selector also parses the input-data and loads one of 6 possible page-vi
- static pages: **sc-page-static.html**
- search page: **sc-page-search.html**
- dictionary page: **sc-page-dictionary.html**
- normal html text pages: **sc-page-text.html**
- normal html text pages: **sc-simple-text.html**
- segmented text pages from pootle output: **sc-segmented-text.html**
- suttaplex list: **sc-view-suttaplex.html**

Expand Down Expand Up @@ -272,10 +272,10 @@ Issues that need to be fixed:
- The related items are now loaded straight from a mockup file in `../data/dictionaries/related.json`. This will have to be changed to relevant terms. Check on the live SC site how adjacent and similar terms are calculated and create a function to do this.


### sc-page-text.html
### sc-simple-text.html
This element loads the plain html pages which are at the moment defined as all pages that have an author which is not "sujato" or "pali". It only loads English pages at the moment. Files are loaded from the mockup directory in `../data/texts/en/bodhi`. The paragraph numbers are loaded from `../data/paragraphtitles.json`(this file is complete and correct).

The relevant suttaplex card is shown at the top, hidden behind a dropdown (`addons/sc-text-options.html`).
The relevant suttaplex card is shown at the top, hidden behind a dropdown (`text/sc-text-options.html`).

Via the settings-menu in the toolbar, paragraph numbers can be displayed or hidden as requested.

Expand All @@ -290,7 +290,7 @@ This element loads the segmented text pages that are created in Pootle, which ar

This elements first loads the html markup file from `../data/texts/markup`, then the translation by Sujato from `../data/texts/en/sujato` and the pali from `../data/texts/pi` as well as the file that contains the paragraph numbers from `../data/paragraphtitles.json`.

The relevant suttaplex card is shown at the top, hidden behind a dropdown (`addons/sc-text-options.html`).
The relevant suttaplex card is shown at the top, hidden behind a dropdown (`text/sc-text-options.html`).

Via the settings-menu in the toolbar, paragraph numbers can be displayed or hidden as requested. Via this menu, also the type of view (none, side-by-side, line-by-line or popup) can be chosen to display the english and pali in relation to each other.
The type of script used for the pali can be chosen.
Expand Down
3 changes: 2 additions & 1 deletion client/bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@
"iron-form": "^2.0.1",
"paper-checkbox": "^2.0.1",
"paper-toast": "^2.0.0",
"iron-lazy-pages": "TimvdLippe/iron-lazy-pages#^2.1.0"
"iron-lazy-pages": "TimvdLippe/iron-lazy-pages#^2.1.0",
"isw-dialog": "IswPolymerElements/isw-dialog#^1.0.3"
},
"devDependencies": {
"web-component-tester": "^6.2.0"
Expand Down
36 changes: 36 additions & 0 deletions client/bower_components/isw-dialog/.bower.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"name": "isw-dialog",
"description": "Material Design Polymer 2.0 Dialog, stacking context safe with remote-control.",
"main": [
"isw-dialog.html",
"isw-dialog-remote.html"
],
"dependencies": {
"polymer": "Polymer/polymer#^2.0.0",
"paper-dialog-behavior": "PolymerElements/paper-dialog-behavior#^2.0.0"
},
"devDependencies": {
"iron-demo-helpers": "PolymerElements/iron-demo-helpers#^2.0.0",
"web-component-tester": "Polymer/web-component-tester#^6.0.0",
"webcomponentsjs": "webcomponents/webcomponentsjs#^1.0.0",
"paper-button": "PolymerElements/paper-button#^2.0.0",
"paper-styles": "PolymerElements/paper-styles#^2.0.0",
"paper-input": "PolymerElements/paper-input#^2.0.0",
"app-layout": "PolymerElements/app-layout#^2.0.0",
"paper-dialog": "PolymerElements/paper-dialog#^2.0.0"
},
"resolutions": {
"polymer": "^2.0.0"
},
"homepage": "https://github.com/IswPolymerElements/isw-dialog",
"version": "1.0.3",
"_release": "1.0.3",
"_resolution": {
"type": "version",
"tag": "1.0.3",
"commit": "8f80cde629a08612d6457f300a19fbb9b287efa0"
},
"_source": "https://github.com/IswPolymerElements/isw-dialog.git",
"_target": "^1.0.3",
"_originalSource": "IswPolymerElements/isw-dialog"
}
1 change: 1 addition & 0 deletions client/bower_components/isw-dialog/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
bower_components
21 changes: 21 additions & 0 deletions client/bower_components/isw-dialog/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2017 ISW Polymer Elements

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
38 changes: 38 additions & 0 deletions client/bower_components/isw-dialog/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# \<isw-dialog\>

A stacking-context safe paper-dialog with remote-control.

Place your dialog somewhere save from stacking-context issues, and access it over a remote element in your view.

Designed as a workshift solution till the stacking context issues in paper-dialog are fixed.

```html
<isw-dialog name="myUniqueDialogName" data="{{dataFromRemote}}">
<h2>Header</h2>
<paper-dialog-scrollable>
Lorem ipsum: [[dataFromRemote.someTextProperty]]
</paper-dialog-scrollable>
<div class="buttons">
<paper-button dialog-dismiss>Cancel</paper-button>
<paper-button dialog-confirm autofocus>Accept</paper-button>
</div>
</isw-dialog>
```

```html
<isw-dialog-remote
id="dialogRemote"
dialog="myUniqueDialogName"
data="[[dataForDialog]]"
on-iron-overlay-closed="_closed">
</isw-dialog-remote>
```

```javascript
open() {
this.$.dialogRemote.open();
}
_closed( event ) {
console.log( event );
}
```
25 changes: 25 additions & 0 deletions client/bower_components/isw-dialog/bower.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"name": "isw-dialog",
"description": "Material Design Polymer 2.0 Dialog, stacking context safe with remote-control.",
"main": [
"isw-dialog.html",
"isw-dialog-remote.html"
],
"dependencies": {
"polymer": "Polymer/polymer#^2.0.0",
"paper-dialog-behavior": "PolymerElements/paper-dialog-behavior#^2.0.0"
},
"devDependencies": {
"iron-demo-helpers": "PolymerElements/iron-demo-helpers#^2.0.0",
"web-component-tester": "Polymer/web-component-tester#^6.0.0",
"webcomponentsjs": "webcomponents/webcomponentsjs#^1.0.0",
"paper-button": "PolymerElements/paper-button#^2.0.0",
"paper-styles": "PolymerElements/paper-styles#^2.0.0",
"paper-input": "PolymerElements/paper-input#^2.0.0",
"app-layout": "PolymerElements/app-layout#^2.0.0",
"paper-dialog": "PolymerElements/paper-dialog#^2.0.0"
},
"resolutions": {
"polymer": "^2.0.0"
}
}
168 changes: 168 additions & 0 deletions client/bower_components/isw-dialog/demo/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1, user-scalable=yes">

<title>isw-dialog demo</title>

<script src="../../webcomponentsjs/webcomponents-lite.js"></script>

<link rel="import" href="../../app-layout/app-layout.html">
<link rel="import" href="../../paper-button/paper-button.html">
<link rel="import" href="../../paper-dialog/paper-dialog.html">
<link rel="import" href="../../paper-input/paper-input.html">
<link rel="import" href="../../paper-styles/paper-styles.html">

<link rel="import" href="../isw-dialog.html">
<link rel="import" href="../isw-dialog-remote.html">

<style>
body {
font-family: 'Roboto', 'Noto', sans-serif;
line-height: 1.5;
background-color: #FFFFFF;
}

#drawer {
background-color: #DDDDDD;
height: 100%;
}

app-toolbar {
color: #FFFFFF;
background: #00508C;
}
</style>
</head>
<body>
<dom-module id="demo-element-dialog">
<template>
<isw-dialog id="dialog" name="myTestDialog" data="{{_data}}" modal>
<h2>Test Dialog</h2>
<p>Text from remote: [[_data.text]]</p>
<div class="buttons">
<paper-button dialog-dismiss>Cancel</paper-button>
<paper-button dialog-confirm>Accept</paper-button>
</div>
</isw-dialog>
</template>
<script>
HTMLImports.whenReady( function() {
class DemoElementDialog extends Polymer.Element {
static get is() {
return 'demo-element-dialog';
}

static get properties() {
return {
_data: {
type: Object,
notify: true
}
};
}
}

window.customElements.define( DemoElementDialog.is, DemoElementDialog );
} );
</script>
</dom-module>

<dom-module id="demo-element-view">
<template>
<style>
:host {
display: block;
padding: 32px;
}

paper-button {
color: #FFFFFF;
background: #00508C;
}
</style>

<h3>Dialog Remote Control</h3>
<p>See console for events the remote received.</p>

<paper-input label="Text send to the dialog" value="{{_data.text}}"></paper-input><br>
<paper-button on-tap="openIsw" raised>Open isw-dialog</paper-button>
<paper-button on-tap="openPaper" raised>Open paper-dialog</paper-button>

<paper-dialog id="paperDialog" modal>
<h2>Test Dialog</h2>
<p>Text from remote: [[_data.text]]</p>
<div class="buttons">
<paper-button dialog-dismiss>Cancel</paper-button>
<paper-button dialog-confirm>Accept</paper-button>
</div>
</paper-dialog>

<isw-dialog-remote
id="remote"
dialog="myTestDialog"
data="[[_data]]"
on-iron-overlay-canceled="_canceled"
on-iron-overlay-closed="_closed"
on-iron-overlay-opened="_opened"></isw-dialog-remote>
</template>

<script>
HTMLImports.whenReady( function() {
class DemoElementView extends Polymer.Element {
static get is() {
return 'demo-element-view';
}

static get properties() {
return {
_data: {
type: Object,
value: {
text: 'Some text.'
},
notify: true
}
};
}

openPaper() {
this.$.paperDialog.open();
}

openIsw() {
this.$.remote.open();
}

_canceled( event ) {
console.log( event );
}

_closed( event ) {
console.log( event );
}

_opened( event ) {
console.log( event );
}
}
window.customElements.define( DemoElementView.is, DemoElementView );
} );
</script>
</dom-module>

<demo-element-dialog></demo-element-dialog>
<app-drawer-layout fullbleed>
<app-drawer slot="drawer">
<div id="drawer"></div>
</app-drawer>
<app-header-layout fixed condenses>
<app-header slot="header">
<app-toolbar>isw-dialog demo</app-toolbar>
</app-header>
<demo-element-view></demo-element-view>
</app-header-layout>
</app-drawer-layout>
</body>
</html>
16 changes: 16 additions & 0 deletions client/bower_components/isw-dialog/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1, user-scalable=yes">

<title>isw-dialog</title>

<script src="../webcomponentsjs/webcomponents-loader.js"></script>

<link rel="import" href="../iron-component-page/iron-component-page.html">
</head>
<body>
<iron-component-page src="isw-dialog.html"></iron-component-page>
</body>
</html>
Loading