mirror of
https://github.com/nkanaev/yarr.git
synced 2025-05-24 00:33:14 +00:00
basic entry view ui
This commit is contained in:
parent
d7a7e5747c
commit
0f9214ffeb
@ -8,7 +8,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="wrapper d-flex vh-100" id="app" v-cloak>
|
<div class="wrapper d-flex vh-100" id="app" v-cloak>
|
||||||
<div class="vh-100 overflow-auto border-right" style="width: 300px;">
|
<div class="vh-100 overflow-auto border-right flex-shrink-0" style="width: 300px">
|
||||||
<div class="mx-2 my-2">
|
<div class="mx-2 my-2">
|
||||||
<div class="mb-4">
|
<div class="mb-4">
|
||||||
<label class="nav-select d-block mb-1" v-for="filter in filters">
|
<label class="nav-select d-block mb-1" v-for="filter in filters">
|
||||||
@ -48,7 +48,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="vh-100 overflow-auto border-right" style="width: 300px;">
|
<div class="vh-100 overflow-auto border-right flex-shrink-0" style="width: 300px">
|
||||||
<div class="my-2 mx-2">
|
<div class="my-2 mx-2">
|
||||||
<label class="nav-select mb-1" v-for="entry in entries" :class="{'text-muted': entry.status === 'read'}">
|
<label class="nav-select mb-1" v-for="entry in entries" :class="{'text-muted': entry.status === 'read'}">
|
||||||
<input type="radio" name="entry" :value="entry.id" v-model="entrySelected">
|
<input type="radio" name="entry" :value="entry.id" v-model="entrySelected">
|
||||||
@ -62,14 +62,26 @@
|
|||||||
<small class="">{{formatDate(entry.date)}}</small>
|
<small class="">{{formatDate(entry.date)}}</small>
|
||||||
</div>
|
</div>
|
||||||
<span class="font-weight-bold">
|
<span class="font-weight-bold">
|
||||||
Police confiscates illegal Antimatter from scientists
|
{{entry.title}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="m-3">three</div>
|
<div class="vh-100 overflow-auto w-100">
|
||||||
|
<div v-if="entrySelected" class="mx-3 my-2">
|
||||||
|
<h3>{{entrySelectedDetails.title}}</h3>
|
||||||
|
<div class="text-muted">
|
||||||
|
<div>{{ feedsById[entrySelectedDetails.feed_id].title }}</div>
|
||||||
|
<time>{{ formatDate(entrySelectedDetails.date) }}</time>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div>
|
||||||
|
content goes here
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script src="./static/javascripts/vue.min.js"></script>
|
<script src="./static/javascripts/vue.min.js"></script>
|
||||||
<script src="./static/javascripts/app.js"></script>
|
<script src="./static/javascripts/app.js"></script>
|
||||||
|
@ -31,12 +31,10 @@ new Vue({
|
|||||||
{'id': '789', 'title': 'Marques Brownlee: ‘Reflecting on the Color of My Skin’', 'status': 'read', 'feed_id': 2, 'date': 1592250298},
|
{'id': '789', 'title': 'Marques Brownlee: ‘Reflecting on the Color of My Skin’', 'status': 'read', 'feed_id': 2, 'date': 1592250298},
|
||||||
],
|
],
|
||||||
'entrySelected': null,
|
'entrySelected': null,
|
||||||
|
'entrySelectedDetails': {},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
feedsById: function() {
|
|
||||||
return this.feeds.reduce(function(acc, feed) { acc[feed.id] = feed; return acc }, {})
|
|
||||||
},
|
|
||||||
foldersWithFeeds: function() {
|
foldersWithFeeds: function() {
|
||||||
var feedsByFolders = this.feeds.reduce(function(folders, feed) {
|
var feedsByFolders = this.feeds.reduce(function(folders, feed) {
|
||||||
if (!folders[feed.folder_id])
|
if (!folders[feed.folder_id])
|
||||||
@ -52,6 +50,12 @@ new Vue({
|
|||||||
folders.push({id: null, feeds: feedsByFolders[null]})
|
folders.push({id: null, feeds: feedsByFolders[null]})
|
||||||
return folders
|
return folders
|
||||||
},
|
},
|
||||||
|
feedsById: function() {
|
||||||
|
return this.feeds.reduce(function(acc, feed) { acc[feed.id] = feed; return acc }, {})
|
||||||
|
},
|
||||||
|
entriesById: function() {
|
||||||
|
return this.entries.reduce(function(acc, entry) { acc[entry.id] = entry; return acc }, {})
|
||||||
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
'feedSelected': function(newVal, oldVal) {
|
'feedSelected': function(newVal, oldVal) {
|
||||||
@ -59,6 +63,9 @@ new Vue({
|
|||||||
var type = parts[0]
|
var type = parts[0]
|
||||||
var guid = parts[1]
|
var guid = parts[1]
|
||||||
},
|
},
|
||||||
|
'entrySelected': function(newVal, oldVal) {
|
||||||
|
this.entrySelectedDetails = this.entriesById[newVal]
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
toggleFolderExpanded: function(folder) {
|
toggleFolderExpanded: function(folder) {
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
.wrapper {
|
.wrapper {
|
||||||
max-width: 1368px;
|
max-width: 1368px;
|
||||||
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-icon {
|
.nav-icon {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user