Tweaked display of note cards, again
* Added an option to pin notes, on the main screen
This commit is contained in:
parent
984ac6ccff
commit
98f4695739
@ -198,7 +198,7 @@
|
|||||||
|
|
||||||
<div class="menu-section" v-if="loggedIn" data-tooltip="Click to log out" data-inverted="" data-position="right center">
|
<div class="menu-section" v-if="loggedIn" data-tooltip="Click to log out" data-inverted="" data-position="right center">
|
||||||
<div v-if="loggedIn" v-on:click="destroyLoginToken" class="menu-item menu-button">
|
<div v-if="loggedIn" v-on:click="destroyLoginToken" class="menu-item menu-button">
|
||||||
<i class="user outline icon"></i>{{ucWords($store.getters.getUsername)}}
|
<i v-if="userIcon" class="user outline icon"></i>{{ usernameDisplay }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -225,6 +225,7 @@
|
|||||||
mobile: false,
|
mobile: false,
|
||||||
disableNewNote: false,
|
disableNewNote: false,
|
||||||
menuOpen: true,
|
menuOpen: true,
|
||||||
|
userIcon: true,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
beforeCreate: function(){
|
beforeCreate: function(){
|
||||||
@ -246,7 +247,19 @@
|
|||||||
loggedIn () {
|
loggedIn () {
|
||||||
//Map logged in from state
|
//Map logged in from state
|
||||||
return this.$store.getters.getLoggedIn
|
return this.$store.getters.getLoggedIn
|
||||||
|
},
|
||||||
|
usernameDisplay() {
|
||||||
|
|
||||||
|
//Remove Emails from username, limit length to 16 chars
|
||||||
|
let name = this.$store.getters.getUsername
|
||||||
|
let splitName = name.split('@')
|
||||||
|
if(splitName.length > 1){
|
||||||
|
name = splitName.shift()
|
||||||
|
this.userIcon = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return this.ucWords(name.substring(0, 16))
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
menuClicked(){
|
menuClicked(){
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<span>
|
<span>
|
||||||
<span class="clickable" @click="confirmDelete()" v-if="click == 0" data-tooltip="Delete" data-inverted="" data-position="top right">
|
<span class="clickable" @click="confirmDelete()" v-if="click == 0" data-tooltip="Delete" data-inverted="" data-position="top right">
|
||||||
<i class="grey trash alternate icon"></i>
|
<i class="trash alternate icon"></i>
|
||||||
</span>
|
</span>
|
||||||
<span class="clickable" @click="actuallyDelete()" @mouseleave="reset" v-if="click == 1" data-tooltip="Click again to delete." data-position="top right" data-inverted="">
|
<span class="clickable" @click="actuallyDelete()" @mouseleave="reset" v-if="click == 1" data-tooltip="Click again to delete." data-position="top right" data-inverted="">
|
||||||
<i class="red trash alternate icon"></i>
|
<i class="red trash alternate icon"></i>
|
||||||
|
@ -62,11 +62,13 @@
|
|||||||
<!-- Toolbar on the bottom -->
|
<!-- Toolbar on the bottom -->
|
||||||
<div class="tool-bar" @click.self="cardClicked">
|
<div class="tool-bar" @click.self="cardClicked">
|
||||||
|
|
||||||
<div class="icon-bar" @click="cardClicked">
|
<div class="icon-bar">
|
||||||
<!-- {{$helpers.timeAgo(note.updated)}} -->
|
<!-- {{$helpers.timeAgo(note.updated)}} -->
|
||||||
|
|
||||||
<span v-if="note.tags">
|
<span v-if="note.tags">
|
||||||
<span v-for="tag in (note.tags.split(','))" class="little-tag">{{ tag }}</span>
|
<span v-for="tag in (note.tags.split(','))" class="little-tag">{{ tag }}</span>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span v-if="note.pinned == 1" data-position="top right" data-tooltip="Pinned" data-inverted="">
|
<span v-if="note.pinned == 1" data-position="top right" data-tooltip="Pinned" data-inverted="">
|
||||||
<i class="green pin icon"></i>
|
<i class="green pin icon"></i>
|
||||||
</span>
|
</span>
|
||||||
@ -74,7 +76,23 @@
|
|||||||
<i class="green archive icon"></i>
|
<i class="green archive icon"></i>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<delete-button class="float-right" :class="{ 'hover-hide':(!$store.getters.getIsUserOnMobile) }" :note-id="note.id" />
|
<!-- :class="{ 'hover-hide':(!$store.getters.getIsUserOnMobile) }" -->
|
||||||
|
<span class="float-right" :class="{ 'hover-hide':(!$store.getters.getIsUserOnMobile) }">
|
||||||
|
|
||||||
|
<!-- <span class="teeny-button" data-tooltip="Archive" data-inverted>
|
||||||
|
<i class="archive icon"></i>
|
||||||
|
</span> -->
|
||||||
|
|
||||||
|
<i class="teeny-button" data-tooltip="Pin" data-inverted v-on:click="pinNote">
|
||||||
|
<i class="pin icon"></i>
|
||||||
|
</i>
|
||||||
|
|
||||||
|
<delete-button class="teeny-button" :note-id="note.id" />
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="getThumbs.length > 0">
|
<div v-if="getThumbs.length > 0">
|
||||||
@ -92,6 +110,8 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
|
import axios from 'axios'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'NoteTitleDisplayCard',
|
name: 'NoteTitleDisplayCard',
|
||||||
props: [ 'onClick', 'data', 'currentlyOpen', 'textResults', 'attachmentResults', 'tagResults' ],
|
props: [ 'onClick', 'data', 'currentlyOpen', 'textResults', 'attachmentResults', 'tagResults' ],
|
||||||
@ -123,6 +143,14 @@
|
|||||||
openEditAttachment(){
|
openEditAttachment(){
|
||||||
this.$router.push('/attachments/note/'+this.note.id)
|
this.$router.push('/attachments/note/'+this.note.id)
|
||||||
},
|
},
|
||||||
|
pinNote(){
|
||||||
|
let postData = {'pinned': !this.note.pinned, 'noteId':this.note.id}
|
||||||
|
axios.post('/api/note/setpinned', postData)
|
||||||
|
.then(data => {
|
||||||
|
this.$bus.$emit('update_single_note', this.note.id)
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
@ -190,6 +218,18 @@
|
|||||||
</script>
|
</script>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
|
|
||||||
|
.teeny-button {
|
||||||
|
border: 1px solid var(--border_color);
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 0px 0px 0px 4px;
|
||||||
|
text-align: center;
|
||||||
|
margin: 0 0 0 5px;
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 30px;
|
||||||
|
color: var(--text_color);
|
||||||
|
background-color: var(--background_color);
|
||||||
|
}
|
||||||
|
|
||||||
/*Strict font sizes for card display*/
|
/*Strict font sizes for card display*/
|
||||||
.small-text, .small-text > p, .small-text > h1, .small-text > h2 {
|
.small-text, .small-text > p, .small-text > h1, .small-text > h2 {
|
||||||
/*font-size: 1.0em !important;*/
|
/*font-size: 1.0em !important;*/
|
||||||
@ -198,10 +238,12 @@
|
|||||||
.small-text > p, , .small-text > h1, .small-text > h2 {
|
.small-text > p, , .small-text > h1, .small-text > h2 {
|
||||||
margin-bottom: 0.5em;
|
margin-bottom: 0.5em;
|
||||||
}
|
}
|
||||||
.big-text, .big-text > p, .big-text > h1, .big-text > h2 {
|
.big-text > p:first-child,
|
||||||
|
.big-text > h1, .big-text > h2 {
|
||||||
/*font-size: 1.3em !important;*/
|
/*font-size: 1.3em !important;*/
|
||||||
font-size: 17px !important;
|
font-size: 17px !important;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
}
|
}
|
||||||
.big-text > p, .big-text > h1, .big-text > h2 {
|
.big-text > p, .big-text > h1, .big-text > h2 {
|
||||||
margin-bottom: 0.3em;
|
margin-bottom: 0.3em;
|
||||||
@ -269,14 +311,15 @@
|
|||||||
font-size: 0.7em;
|
font-size: 0.7em;
|
||||||
padding: 5px 5px;
|
padding: 5px 5px;
|
||||||
border: 1px solid var(--border_color);
|
border: 1px solid var(--border_color);
|
||||||
margin: 5px 3px 0 0;
|
margin: 0 3px 5px 0;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
max-width: 100px;
|
max-width: 175px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
line-height: 0.8em;
|
line-height: 0.8em;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
float: left;
|
||||||
}
|
}
|
||||||
.tiny-thumb-box {
|
.tiny-thumb-box {
|
||||||
max-height: 70px;
|
max-height: 70px;
|
||||||
|
@ -69,7 +69,7 @@
|
|||||||
<div class="sixteen wide column">
|
<div class="sixteen wide column">
|
||||||
|
|
||||||
<h3 v-if="$store.getters.totals && $store.getters.totals['totalNotes'] == 0">
|
<h3 v-if="$store.getters.totals && $store.getters.totals['totalNotes'] == 0">
|
||||||
No Notes Yet. Create one when you feel ready.
|
No Notes Yet. Thats ok. Create one when you feel ready.
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<!-- Go to one wide column, do not do this on mobile interface -->
|
<!-- Go to one wide column, do not do this on mobile interface -->
|
||||||
@ -205,7 +205,10 @@
|
|||||||
if(modified){
|
if(modified){
|
||||||
this.updateSingleNote(noteId)
|
this.updateSingleNote(noteId)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
this.$bus.$on('update_single_note', (noteId) => {
|
||||||
|
this.updateSingleNote(noteId)
|
||||||
})
|
})
|
||||||
|
|
||||||
this.$bus.$on('note_deleted', (noteId) => {
|
this.$bus.$on('note_deleted', (noteId) => {
|
||||||
@ -460,7 +463,7 @@
|
|||||||
|
|
||||||
//Don't move notes that were not changed
|
//Don't move notes that were not changed
|
||||||
if(note.updated == newNote.updated){
|
if(note.updated == newNote.updated){
|
||||||
return
|
// return
|
||||||
}
|
}
|
||||||
|
|
||||||
//Compare note tags, if they changed, reload tags
|
//Compare note tags, if they changed, reload tags
|
||||||
|
@ -202,6 +202,21 @@ Note.update = (io, userId, noteId, noteText, color, pinned, archived) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Note.setPinned = (userId, noteId, pinnedBoolean) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
|
||||||
|
const pinned = pinnedBoolean ? 1:0
|
||||||
|
|
||||||
|
//Update other note attributes
|
||||||
|
return db.promise()
|
||||||
|
.query('UPDATE note SET pinned = ? WHERE id = ? AND user_id = ? LIMIT 1',
|
||||||
|
[pinned, noteId, userId])
|
||||||
|
.then((rows, fields) => {
|
||||||
|
resolve(true)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Delete a note and all its remaining parts
|
// Delete a note and all its remaining parts
|
||||||
//
|
//
|
||||||
|
@ -62,6 +62,16 @@ router.post('/difftext', function (req, res) {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
//
|
||||||
|
// Update single note attributes
|
||||||
|
//
|
||||||
|
router.post('/setpinned', function (req, res) {
|
||||||
|
Notes.setPinned(userId, req.body.noteId, req.body.pinned)
|
||||||
|
.then( results => {
|
||||||
|
res.send(results)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
//
|
//
|
||||||
// Share Note Actions
|
// Share Note Actions
|
||||||
//
|
//
|
||||||
|
Loading…
Reference in New Issue
Block a user