extended search
This commit is contained in:
parent
2f07441fb7
commit
70befa7c4d
@ -2,81 +2,81 @@
|
|||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<!-- NOTE: Meta Tags -->
|
<!-- NOTE: Meta Tags -->
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="description" content="Ohm management app">
|
<meta name="description" content="Ohm management app">
|
||||||
<meta name="keywords" content="">
|
<meta name="keywords" content="">
|
||||||
<meta name="author" content="">
|
<meta name="author" content="">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<!--for demonstration:-->
|
<!--for demonstration:-->
|
||||||
<!-- <meta http-equiv="refresh" content="10">
|
<!-- <meta http-equiv="refresh" content="10">
|
||||||
<!-- <meta http-equiv="refresh" content="30"> -->
|
<!-- <meta http-equiv="refresh" content="30"> -->
|
||||||
|
|
||||||
<!-- NOTE: Define Theme Color -->
|
<!-- NOTE: Define Theme Color -->
|
||||||
<!-- Chrome, Firefox OS and Opera -->
|
<!-- Chrome, Firefox OS and Opera -->
|
||||||
<meta name="theme-color" content="#0046a0">
|
<meta name="theme-color" content="#0046a0">
|
||||||
|
|
||||||
<!-- NOTE: Icon for tab recognition -->
|
<!-- NOTE: Icon for tab recognition -->
|
||||||
<!-- highest resolution for Chrome & Opera -->
|
<!-- highest resolution for Chrome & Opera -->
|
||||||
<link rel="icon" sizes="192x192" href="favicon.ico">
|
<link rel="icon" sizes="192x192" href="favicon.ico">
|
||||||
<!-- icons for Safari -> iOS Icons -->
|
<!-- icons for Safari -> iOS Icons -->
|
||||||
<!-- icons for IE & Windows phone -->
|
<!-- icons for IE & Windows phone -->
|
||||||
<meta name="msapplication-square70x70logo" content="icon_smalltile.png">
|
<meta name="msapplication-square70x70logo" content="icon_smalltile.png">
|
||||||
<meta name="msapplication-square150x150logo" content="icon_mediumtile.png">
|
<meta name="msapplication-square150x150logo" content="icon_mediumtile.png">
|
||||||
<meta name="msapplication-square310x310logo" content="icon_largetile.png">
|
<meta name="msapplication-square310x310logo" content="icon_largetile.png">
|
||||||
<meta name="msapplication-wide310x150logo" content="icon_widetile.png">
|
<meta name="msapplication-wide310x150logo" content="icon_widetile.png">
|
||||||
<!-- NOTE: iOS - Add to Homescreen -->
|
<!-- NOTE: iOS - Add to Homescreen -->
|
||||||
<!-- Hide Safari UI Components -->
|
<!-- Hide Safari UI Components -->
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
<!-- iOS Status bar: black or black-translucent -->
|
<!-- iOS Status bar: black or black-translucent -->
|
||||||
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
||||||
<!-- iOS App Name next to Icon -->
|
<!-- iOS App Name next to Icon -->
|
||||||
<meta name="apple-mobile-web-app-title" content="OHM News">
|
<meta name="apple-mobile-web-app-title" content="OHM News">
|
||||||
<!-- Icon: No transparency allowed -->
|
<!-- Icon: No transparency allowed -->
|
||||||
<link rel="apple-touch-icon" href="img/launcher/ios_launcher_app_icon_192.png"> <!-- iphone -->
|
<link rel="apple-touch-icon" href="img/launcher/ios_launcher_app_icon_192.png"> <!-- iphone -->
|
||||||
<link rel="apple-touch-icon" sizes="152x152" href="img/launcher/ios_launcher_app_icon_152.png"><!-- ipad -->
|
<link rel="apple-touch-icon" sizes="152x152" href="img/launcher/ios_launcher_app_icon_152.png"><!-- ipad -->
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="img/launcher/ios_launcher_app_icon_180.png"><!-- iphone-retina -->
|
<link rel="apple-touch-icon" sizes="180x180" href="img/launcher/ios_launcher_app_icon_180.png"><!-- iphone-retina -->
|
||||||
<link rel="apple-touch-icon" sizes="167x167" href="img/launcher/ios_launcher_app_icon_167.png"><!-- ipad-retina -->
|
<link rel="apple-touch-icon" sizes="167x167" href="img/launcher/ios_launcher_app_icon_167.png"><!-- ipad-retina -->
|
||||||
<!-- Splash screen: If not set, will be white screen -->
|
<!-- Splash screen: If not set, will be white screen -->
|
||||||
<link rel="apple-touch-startup-image" sizes="2048x2732" href="ios-splash/apple_splash_2048.png" /><!-- Tablet -->
|
<link rel="apple-touch-startup-image" sizes="2048x2732" href="ios-splash/apple_splash_2048.png" /><!-- Tablet -->
|
||||||
<link rel="apple-touch-startup-image" sizes="1668x2224"href="ios-splash/apple_splash_1668.png" /><!-- Tablet -->
|
<link rel="apple-touch-startup-image" sizes="1668x2224" href="ios-splash/apple_splash_1668.png" /><!-- Tablet -->
|
||||||
<link rel="apple-touch-startup-image" sizes="1536x2048" href="ios-splash/apple_splash_1536.png" /><!-- Tablet -->
|
<link rel="apple-touch-startup-image" sizes="1536x2048" href="ios-splash/apple_splash_1536.png" /><!-- Tablet -->
|
||||||
<link rel="apple-touch-startup-image" sizes="1125x2436" href="ios-splash/apple_splash_1125.png" /><!-- Tablet ? Phone -->
|
<link rel="apple-touch-startup-image" sizes="1125x2436" href="ios-splash/apple_splash_1125.png" /><!-- Tablet ? Phone -->
|
||||||
<link rel="apple-touch-startup-image" sizes="1242x2208" href="ios-splash/apple_splash_1242.png" /><!-- Tablet ? Phone -->
|
<link rel="apple-touch-startup-image" sizes="1242x2208" href="ios-splash/apple_splash_1242.png" /><!-- Tablet ? Phone -->
|
||||||
<link rel="apple-touch-startup-image" sizes="750x1334" href="ios-splash/apple_splash_750.png" /><!-- Phone -->
|
<link rel="apple-touch-startup-image" sizes="750x1334" href="ios-splash/apple_splash_750.png" /><!-- Phone -->
|
||||||
<link rel="apple-touch-startup-image" sizes="640x1136" href="ios-splash/apple_splash_640.png" /><!-- Phone -->
|
<link rel="apple-touch-startup-image" sizes="640x1136" href="ios-splash/apple_splash_640.png" /><!-- Phone -->
|
||||||
|
|
||||||
<!-- NOTE: CSS -->
|
<!-- NOTE: CSS -->
|
||||||
|
|
||||||
<!-- CSS_Material Design for Bootstrap fonts and icons -->
|
<!-- CSS_Material Design for Bootstrap fonts and icons -->
|
||||||
<link rel="stylesheet" href="lib/bootstrap-font-and-icons.css">
|
<link rel="stylesheet" href="lib/bootstrap-font-and-icons.css">
|
||||||
<!-- CSS_Material Design for Bootstrap minified CSS -->
|
<!-- CSS_Material Design for Bootstrap minified CSS -->
|
||||||
<!--<link rel="stylesheet" href="lib/bootstrap-material-design.min.css">-->
|
<!--<link rel="stylesheet" href="lib/bootstrap-material-design.min.css">-->
|
||||||
|
|
||||||
<!-- NOTE: Call manifest.json -->
|
<!-- NOTE: Call manifest.json -->
|
||||||
<link rel="manifest" href="manifest.json">
|
<link rel="manifest" href="manifest.json">
|
||||||
|
|
||||||
<!-- NOTE: Load JQuery, Vue.js, VueRouter, Vuetify -->
|
<!-- NOTE: Load JQuery, Vue.js, VueRouter, Vuetify -->
|
||||||
<script src="lib/jquery-3.3.1.min.js"></script>
|
<script src="lib/jquery-3.3.1.min.js"></script>
|
||||||
<script src="lib/vue-2.6.10.js"></script>
|
<script src="lib/vue-2.6.10.js"></script>
|
||||||
<script src="lib/vue-router-3.0.1.js"></script>
|
<script src="lib/vue-router-3.0.1.js"></script>
|
||||||
|
|
||||||
<!-- Buefy/Vuetify -->
|
<!-- Buefy/Vuetify -->
|
||||||
<script src="lib/buefy-0.7.5.js"></script>
|
<script src="lib/buefy-0.7.5.js"></script>
|
||||||
<!-- <script src="lib/buefy-0.7.5.min.js"></script>-->
|
<!-- <script src="lib/buefy-0.7.5.min.js"></script>-->
|
||||||
<link rel="stylesheet" href="https://cdn.materialdesignicons.com/2.5.94/css/materialdesignicons.min.css">
|
<link rel="stylesheet" href="https://cdn.materialdesignicons.com/2.5.94/css/materialdesignicons.min.css">
|
||||||
<link rel="stylesheet" type="text/css" href="lib/buefy-0.7.5.css">
|
<link rel="stylesheet" type="text/css" href="lib/buefy-0.7.5.css">
|
||||||
<!--<link rel="stylesheet" type="text/css" href="lib/buefy-0.7.5.min.css">-->
|
<!--<link rel="stylesheet" type="text/css" href="lib/buefy-0.7.5.min.css">-->
|
||||||
|
|
||||||
<!-- <script src="lib/vuetify-1.5.14.js"></script>-->
|
<!-- <script src="lib/vuetify-1.5.14.js"></script>-->
|
||||||
<!-- <script src="lib/vuetify-1.5.14.min.js"></script>-->
|
<!-- <script src="lib/vuetify-1.5.14.min.js"></script>-->
|
||||||
<!-- <link rel="stylesheet" type="text/css" href="lib/vuetify-1.5.14.css">-->
|
<!-- <link rel="stylesheet" type="text/css" href="lib/vuetify-1.5.14.css">-->
|
||||||
<!-- <link rel="stylesheet" type="text/css" href="lib/vuetify-1.5.14.min.css">-->
|
<!-- <link rel="stylesheet" type="text/css" href="lib/vuetify-1.5.14.min.css">-->
|
||||||
|
|
||||||
<!-- CSS_Custom Design -->
|
<!-- CSS_Custom Design -->
|
||||||
<link rel="stylesheet" type="text/css" href="style/style.css">
|
<link rel="stylesheet" type="text/css" href="style/style.css">
|
||||||
|
|
||||||
<!-- NOTE: JavaScript Libs & Files -->
|
<!-- NOTE: JavaScript Libs & Files -->
|
||||||
<script src="routes/home.js"></script>
|
<script src="routes/home.js"></script>
|
||||||
<script src="routes/files.js"></script>
|
<script src="routes/files.js"></script>
|
||||||
<script src="routes/createMessage.js"></script>
|
<script src="routes/createMessage.js"></script>
|
||||||
@ -85,12 +85,12 @@
|
|||||||
<script src="routes/msgCard.js"></script>
|
<script src="routes/msgCard.js"></script>
|
||||||
<script src="routes/messageData.js"></script>
|
<script src="routes/messageData.js"></script>
|
||||||
<script src="routes/tagData.js"></script>
|
<script src="routes/tagData.js"></script>
|
||||||
<script src="routes/profilCard.js"></script>
|
<script src="routes/profilCard.js"></script>
|
||||||
<script src="routes/profilData.js"></script>
|
<script src="routes/profilData.js"></script>
|
||||||
<script src="routes/login.js"></script>
|
<script src="routes/login.js"></script>
|
||||||
<script src="routes/navRoutes.js"></script>
|
<script src="routes/navRoutes.js"></script>
|
||||||
|
|
||||||
<title>OHM News</title>
|
<title>OHM News</title>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
@ -100,15 +100,8 @@
|
|||||||
<a class="logo-img" href="index.html"><img src="img/app_icon.png" width=45px height=45px></a>
|
<a class="logo-img" href="index.html"><img src="img/app_icon.png" width=45px height=45px></a>
|
||||||
<form class="om-searchbar" @submit.prevent="search()">
|
<form class="om-searchbar" @submit.prevent="search()">
|
||||||
<b-field>
|
<b-field>
|
||||||
<b-autocomplete
|
<b-autocomplete rounded v-model="searchtext" @keydown.native.enter="search" :data="filteredDataArray" placeholder="suche..." icon="magnify" @select="option => selected = option">
|
||||||
rounded
|
</b-autocomplete>
|
||||||
v-model="searchtext"
|
|
||||||
@keydown.native.enter="search"
|
|
||||||
:data="filteredDataArray"
|
|
||||||
placeholder="suche..."
|
|
||||||
icon="magnify"
|
|
||||||
@select="option => selected = option">
|
|
||||||
</b-autocomplete>
|
|
||||||
|
|
||||||
<!--<b-input
|
<!--<b-input
|
||||||
type="search"
|
type="search"
|
||||||
@ -116,7 +109,7 @@
|
|||||||
icon="magnify"
|
icon="magnify"
|
||||||
placeholder="Suche...">
|
placeholder="Suche...">
|
||||||
</b-input>-->
|
</b-input>-->
|
||||||
<!--<b-taginput
|
<!--<b-taginput
|
||||||
id="search-text"
|
id="search-text"
|
||||||
type="search"
|
type="search"
|
||||||
v-model="selected"
|
v-model="selected"
|
||||||
@ -128,20 +121,20 @@
|
|||||||
@typing="getFilteredTags"
|
@typing="getFilteredTags"
|
||||||
@input="saveTagsToArray">
|
@input="saveTagsToArray">
|
||||||
</b-taginput>-->
|
</b-taginput>-->
|
||||||
<button @click="clear">x</button>
|
<b-button type="is-light" @click="clear">X</b-button>
|
||||||
</b-field>
|
</b-field>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="om-content">
|
<div class="om-content">
|
||||||
<div id=xxx></div>
|
<div id=xxx></div>
|
||||||
<nav-router></nav-router>
|
<nav-router></nav-router>
|
||||||
<router-view></router-view>
|
<router-view></router-view>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--<b-tabs type="is-toggle" expanded>
|
<!--<b-tabs type="is-toggle" expanded>
|
||||||
<b-tab-item><router-link to="/home" >
|
<b-tab-item><router-link to="/home" >
|
||||||
<b-icon
|
<b-icon
|
||||||
pack="fas"
|
pack="fas"
|
||||||
@ -156,7 +149,7 @@
|
|||||||
|
|
||||||
</b-tabs>-->
|
</b-tabs>-->
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
<nav class="navbar is-fixed-bottom is-expanded is-light is-hoverable" role="navigation" aria-label="main navigation">
|
<nav class="navbar is-fixed-bottom is-expanded is-light is-hoverable" role="navigation" aria-label="main navigation">
|
||||||
<div class="navbar-brand is-expanded">
|
<div class="navbar-brand is-expanded">
|
||||||
<router-link to="/home" class="navbar-item is-expanded has-text-centered is-active">
|
<router-link to="/home" class="navbar-item is-expanded has-text-centered is-active">
|
||||||
@ -187,15 +180,17 @@
|
|||||||
</div>
|
</div>
|
||||||
-->
|
-->
|
||||||
<script>
|
<script>
|
||||||
var tagArray = ["lorem"];
|
var isSearchActive = false;
|
||||||
const dat=[
|
var tagArray = ["lorem"];
|
||||||
'th',
|
const dat = [
|
||||||
'efi',
|
'th',
|
||||||
'wichtig',
|
'efi',
|
||||||
];
|
'wichtig',
|
||||||
|
];
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- const routes = [
|
<!-- const routes = [
|
||||||
{ path: "/", component: HomeRouter },
|
{ path: "/", component: HomeRouter },
|
||||||
{ path: "/home", component: HomeRouter },
|
{ path: "/home", component: HomeRouter },
|
||||||
{ path: "/files", component: FileRouter },
|
{ path: "/files", component: FileRouter },
|
||||||
@ -211,15 +206,15 @@
|
|||||||
var app = new Vue({
|
var app = new Vue({
|
||||||
router,
|
router,
|
||||||
el: '#api',
|
el: '#api',
|
||||||
data: function() {
|
data: function() {
|
||||||
return {
|
return {
|
||||||
searchtext: "",
|
searchtext: "",
|
||||||
isSearchActiv: false,
|
//isSearchActiv: false,
|
||||||
selected: [],
|
selected: [],
|
||||||
taglist: dat,
|
taglist: dat,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed:{
|
computed: {
|
||||||
filteredDataArray() {
|
filteredDataArray() {
|
||||||
return this.taglist.filter((option) => {
|
return this.taglist.filter((option) => {
|
||||||
return option
|
return option
|
||||||
@ -230,57 +225,31 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
search: function() {
|
|
||||||
this.isSearchActiv = true;
|
|
||||||
console.log("Searchtext: " +this.searchtext.replace(/#/g,''));
|
|
||||||
$.ajax({
|
|
||||||
url: "api/msg/search/" + this.searchtext.replace(/#/g, ''),
|
|
||||||
method: "GET"
|
|
||||||
}).done(jd => {
|
|
||||||
// NICHT SO wg. Vue: _messagelist = jd;
|
|
||||||
_messagelist.splice(0, _messagelist.length);
|
|
||||||
_messagelist.push.apply(_messagelist, jd);
|
|
||||||
//console.log("jd: "+jd);
|
|
||||||
for (var e in jd) {
|
|
||||||
if (!_messages[jd[e]]) {
|
|
||||||
get_insert_message(jd[e]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).fail(function(e, f, g) {
|
|
||||||
console.log("searching: err: " + e + f + g);
|
|
||||||
})
|
|
||||||
},
|
|
||||||
list_messages: function () {
|
|
||||||
$.ajax({url: "api/msg/ids", method: "GET"})
|
|
||||||
.done(jd => {
|
|
||||||
// NICHT SO wg. Vue: _messagelist = jd;
|
|
||||||
_messagelist.splice(0, _messagelist.length);
|
|
||||||
_messagelist.push.apply(_messagelist, jd);
|
|
||||||
//console.log("jd: "+jd);
|
|
||||||
for (var e in jd) {
|
|
||||||
if (!_messages[jd[e]]) {
|
|
||||||
get_insert_message(jd[e]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).fail(function (e, f, g) {
|
|
||||||
console.log("list_msg: err: " + e + f + g);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
getFilteredTags(text) {
|
getFilteredTags(text) {
|
||||||
this.taglist = dat.filter((option) => {
|
this.taglist = dat.filter((option) => {
|
||||||
return option
|
return option
|
||||||
.toString()
|
.toString()
|
||||||
.toLowerCase()
|
.toLowerCase()
|
||||||
.indexOf(text.toLowerCase()) >= 0
|
.indexOf(text.toLowerCase()) >= 0
|
||||||
})
|
})
|
||||||
this.search();
|
this.search();
|
||||||
},
|
},
|
||||||
saveTagsToArray: function() {
|
saveTagsToArray: function() {
|
||||||
tagArray = this.selected;
|
tagArray = this.selected;
|
||||||
console.info(tagArray);
|
console.info(tagArray);
|
||||||
},
|
},
|
||||||
list_tags: function () {
|
search: function() {
|
||||||
$.ajax({url: "api/tag/ids",method: "GET"})
|
searching(this.searchtext);
|
||||||
|
},
|
||||||
|
list_messages: function() {
|
||||||
|
messages();
|
||||||
|
},
|
||||||
|
list_tags: function() {
|
||||||
|
$.ajax({
|
||||||
|
url: "api/tag/ids",
|
||||||
|
method: "GET"
|
||||||
|
})
|
||||||
.done(jd => {
|
.done(jd => {
|
||||||
// NICHT SO wg. Vue: _messagelist = jd;
|
// NICHT SO wg. Vue: _messagelist = jd;
|
||||||
_taglist.splice(0, _taglist.length);
|
_taglist.splice(0, _taglist.length);
|
||||||
@ -291,85 +260,127 @@
|
|||||||
get_insert_tag(jd[e]);
|
get_insert_tag(jd[e]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).fail(function (e, f, g) {
|
}).fail(function(e, f, g) {
|
||||||
console.log("err: " + e + f + g);
|
console.log("err: " + e + f + g);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
clear: function() {
|
clear: function() {
|
||||||
console.log("clear");
|
console.log("clear");
|
||||||
|
|
||||||
this.isSearchActiv = false;
|
isSearchActiv = false;
|
||||||
this.searchtext = "";
|
this.searchtext = "";
|
||||||
this.list_messages();
|
this.list_messages();
|
||||||
},
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
mounted: function () {
|
mounted: function() {
|
||||||
//this.search();
|
//this.search();
|
||||||
this.list_tags();
|
this.list_tags();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
function get_insert_tag(id){
|
|
||||||
$.ajax({ url: "api/tag/"+id, method: "GET" }).done(function (tag) {
|
|
||||||
dat.push("#"+tag.name);
|
|
||||||
console.log("it worked!");
|
|
||||||
}).fail(function (e, f, g) {
|
|
||||||
console.log("cannot load " + id + ".json: " + e + f + g);
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
function get_insert_tag(id) {
|
||||||
|
$.ajax({
|
||||||
|
url: "api/tag/" + id,
|
||||||
|
method: "GET"
|
||||||
|
}).done(function(tag) {
|
||||||
|
dat.push("#" + tag.name);
|
||||||
|
console.log("it worked!");
|
||||||
|
}).fail(function(e, f, g) {
|
||||||
|
console.log("cannot load " + id + ".json: " + e + f + g);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function searching(searchtext) {
|
||||||
|
isSearchActiv = true;
|
||||||
|
console.log("Searchtext: " + searchtext.replace(/#/g, ''));
|
||||||
|
$.ajax({
|
||||||
|
url: "api/msg/search/" + searchtext.replace(/#/g, ''),
|
||||||
|
method: "GET"
|
||||||
|
}).done(jd => {
|
||||||
|
// NICHT SO wg. Vue: _messagelist = jd;
|
||||||
|
_messagelist.splice(0, _messagelist.length);
|
||||||
|
_messagelist.push.apply(_messagelist, jd);
|
||||||
|
//console.log("jd: "+jd);
|
||||||
|
for (var e in jd) {
|
||||||
|
if (!_messages[jd[e]]) {
|
||||||
|
get_insert_message(jd[e]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).fail(function(e, f, g) {
|
||||||
|
console.log("searching: err: " + e + f + g);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
function messages() {
|
||||||
|
$.ajax({
|
||||||
|
url: "api/msg/ids",
|
||||||
|
method: "GET"
|
||||||
|
})
|
||||||
|
.done(jd => {
|
||||||
|
// NICHT SO wg. Vue: _messagelist = jd;
|
||||||
|
_messagelist.splice(0, _messagelist.length);
|
||||||
|
_messagelist.push.apply(_messagelist, jd);
|
||||||
|
//console.log("jd: "+jd);
|
||||||
|
for (var e in jd) {
|
||||||
|
if (!_messages[jd[e]]) {
|
||||||
|
get_insert_message(jd[e]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).fail(function(e, f, g) {
|
||||||
|
console.log("list_msg: err: " + e + f + g);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
const search_data = [];
|
const search_data = [];
|
||||||
/*
|
/*
|
||||||
export.default {
|
export.default {
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
selected: [],
|
selected: [],
|
||||||
taglist: data,
|
taglist: data,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
filteredTagArray() {
|
filteredTagArray() {
|
||||||
this.taglist = data.filter((option) => {
|
this.taglist = data.filter((option) => {
|
||||||
return option
|
return option
|
||||||
.toString()
|
.toString()
|
||||||
.toLowerCase()
|
.toLowerCase()
|
||||||
.indexOf(this.name.toLowerCase()) >= 0
|
.indexOf(this.name.toLowerCase()) >= 0
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
evaluate(text) {
|
evaluate(text) {
|
||||||
this.taglist = data.filter((option) => {
|
this.taglist = data.filter((option) => {
|
||||||
return option
|
return option
|
||||||
.toString()
|
.toString()
|
||||||
.toLowerCase()
|
.toLowerCase()
|
||||||
.indexOf(text.toLowerCase()) >= 0
|
.indexOf(text.toLowerCase()) >= 0
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
mounted: function () {
|
mounted: function () {
|
||||||
if ($(this).bootstrapMaterialDesign)
|
if ($(this).bootstrapMaterialDesign)
|
||||||
$(this).bootstrapMaterialDesign();
|
$(this).bootstrapMaterialDesign();
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
*/
|
*/
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- CDN_Vue.js minified lib -->
|
<!-- CDN_Vue.js minified lib -->
|
||||||
<!-- <script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.min.js"></script> -->
|
<!-- <script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.min.js"></script> -->
|
||||||
<!-- CDN_jQuery minified lib -->
|
<!-- CDN_jQuery minified lib -->
|
||||||
<!--<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>-->
|
<!--<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>-->
|
||||||
<!-- Load Popper.js -->
|
<!-- Load Popper.js -->
|
||||||
<script src="lib/popper-1.12.6.js"></script>
|
<script src="lib/popper-1.12.6.js"></script>
|
||||||
<!-- Load Bootstrap.js -->
|
<!-- Load Bootstrap.js -->
|
||||||
<script src="lib/bootstrap-material-design.js"></script>
|
<script src="lib/bootstrap-material-design.js"></script>
|
||||||
<!-- NOTE: Call main.js -->
|
<!-- NOTE: Call main.js -->
|
||||||
<script src="main.js"></script>
|
<script src="main.js"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
var tagArray = [];
|
var tagArray = [];
|
||||||
const data=[];
|
|
||||||
|
|
||||||
const FileRouter = {
|
const FileRouter = {
|
||||||
template: `
|
template: `
|
||||||
@ -21,86 +20,95 @@ const FileRouter = {
|
|||||||
<b-input id="freeSe"></b-input>
|
<b-input id="freeSe"></b-input>
|
||||||
</b-field>
|
</b-field>
|
||||||
|
|
||||||
<b-field v-if="selectedOptions=='tags'"">
|
<b-field v-if="selectedOptions=='tags'">
|
||||||
<b-taginput
|
<b-autocomplete rounded v-model="searchtext"
|
||||||
id="tag"
|
:data="filteredDataArray"
|
||||||
v-model="selected"
|
placeholder="suche..." icon="magnify"
|
||||||
:data=taglist
|
@select="option => selected = option">
|
||||||
autocomplete
|
</b-autocomplete>
|
||||||
allow-new:false
|
|
||||||
icon="label"
|
|
||||||
placeholder="#"
|
|
||||||
@typing="getFilteredTags"
|
|
||||||
@input="saveTagsToArray">
|
|
||||||
</b-taginput>
|
|
||||||
</b-field>
|
</b-field>
|
||||||
|
|
||||||
<b-button type="is-primary" @click="">SUCHE</b-button>
|
<b-button type="is-primary" @click="search">SUCHE</b-button>
|
||||||
|
|
||||||
|
<div id="om-msg-cards">
|
||||||
|
<MsgCard
|
||||||
|
v-for="id in messagelist.slice().reverse()"
|
||||||
|
:key="id"
|
||||||
|
:msg="messages[id] || {}"
|
||||||
|
></MsgCard>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
`,
|
`,
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
|
searchtext: "",
|
||||||
selectedOptions: [],
|
selectedOptions: [],
|
||||||
selected: [],
|
selected: [],
|
||||||
taglist: data,
|
taglist: data,
|
||||||
|
messagelist: _messagelist,
|
||||||
|
messages: _messages,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
filteredDataArray() {
|
||||||
|
return this.taglist.filter((option) => {
|
||||||
|
return option
|
||||||
|
.toString()
|
||||||
|
.toLowerCase()
|
||||||
|
.indexOf(this.searchtext.toLowerCase()) >= 0
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
saveTagsToArray: function() {
|
list_messages: function () {
|
||||||
tagArray = this.selected;
|
messages();
|
||||||
|
},
|
||||||
|
saveTagsToArray: function () {
|
||||||
|
tagArray = this.selected;
|
||||||
console.info(tagArray);
|
console.info(tagArray);
|
||||||
},
|
},
|
||||||
createMsg: function () {
|
getFilteredTags(text) {
|
||||||
var _subject = $("#subject").val();
|
this.taglist = data.filter((option) => {
|
||||||
var _message = $("#message").val();
|
return option
|
||||||
var _tag = tagArray;
|
.toString()
|
||||||
var _user = $("#user").val();
|
.toLowerCase()
|
||||||
//console.log("Message Created: " + _tag + " " + _message + " " + _user);
|
.indexOf(text.toLowerCase()) >= 0
|
||||||
$.ajax({
|
})
|
||||||
url: "api/msg",
|
this.search();
|
||||||
data: {
|
|
||||||
subject: _subject,
|
|
||||||
message: _message,
|
|
||||||
user: _user,
|
|
||||||
tag: _tag
|
|
||||||
},
|
|
||||||
method: "POST"
|
|
||||||
}).done(have_result).fail(have_error);
|
|
||||||
|
|
||||||
function have_result(res) {
|
|
||||||
//console.log(res);
|
|
||||||
router.push('/home')
|
|
||||||
}
|
|
||||||
|
|
||||||
function have_error(err) {
|
|
||||||
console.log("error: " + err.responseText);
|
|
||||||
console.log(err);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
getFilteredTags(text) {
|
|
||||||
this.taglist = data.filter((option) => {
|
|
||||||
return option
|
|
||||||
.toString()
|
|
||||||
.toLowerCase()
|
|
||||||
.indexOf(text.toLowerCase()) >= 0
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
list_tags: function () {
|
list_tags: function () {
|
||||||
$.ajax({url: "api/tag/ids",method: "GET"})
|
$.ajax({
|
||||||
.done(jd => {
|
url: "api/tag/ids",
|
||||||
// NICHT SO wg. Vue: _messagelist = jd;
|
method: "GET"
|
||||||
_taglist.splice(0, _taglist.length);
|
})
|
||||||
_taglist.push.apply(_taglist, jd);
|
.done(jd => {
|
||||||
console.log("tag: jd: " + jd);
|
// NICHT SO wg. Vue: _messagelist = jd;
|
||||||
for (var e in jd) {
|
_taglist.splice(0, _taglist.length);
|
||||||
if (!_tags[jd[e]]) {
|
_taglist.push.apply(_taglist, jd);
|
||||||
get_insert_tag(jd[e]);
|
console.log("tag: jd: " + jd);
|
||||||
}
|
for (var e in jd) {
|
||||||
|
if (!_tags[jd[e]]) {
|
||||||
|
get_insert_tag(jd[e]);
|
||||||
}
|
}
|
||||||
}).fail(function (e, f, g) {
|
}
|
||||||
console.log("err: " + e + f + g);
|
}).fail(function (e, f, g) {
|
||||||
});
|
console.log("err: " + e + f + g);
|
||||||
}
|
});
|
||||||
|
},
|
||||||
|
saveTagsToArray: function () {
|
||||||
|
tagArray = this.selected;
|
||||||
|
console.info(tagArray);
|
||||||
|
},
|
||||||
|
search: function () {
|
||||||
|
searching(this.searchtext);
|
||||||
|
},
|
||||||
|
list_messages: function () {
|
||||||
|
messages();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted: function () {
|
||||||
|
//this.search();
|
||||||
|
this.list_tags();
|
||||||
|
//this.list_messages();
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -23,7 +23,10 @@ const HomeRouter = {
|
|||||||
tags: "foo"
|
tags: "foo"
|
||||||
});
|
});
|
||||||
},*/
|
},*/
|
||||||
list_messages: function () {
|
list_messages: function() {
|
||||||
|
messages();
|
||||||
|
}
|
||||||
|
/*list_messages: function () {
|
||||||
$.ajax({url: "api/msg/ids", method: "GET"})
|
$.ajax({url: "api/msg/ids", method: "GET"})
|
||||||
.done(jd => {
|
.done(jd => {
|
||||||
// NICHT SO wg. Vue: _messagelist = jd;
|
// NICHT SO wg. Vue: _messagelist = jd;
|
||||||
@ -35,7 +38,7 @@ const HomeRouter = {
|
|||||||
get_insert_message(jd[e]);
|
get_insert_message(jd[e]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*if(!($".om-searchbar" = "")){
|
if(!($".om-searchbar" = "")){
|
||||||
for (var e in jd) {
|
for (var e in jd) {
|
||||||
if (!_messages[jd[e]]) {
|
if (!_messages[jd[e]]) {
|
||||||
get_insert_message(jd[e]);
|
get_insert_message(jd[e]);
|
||||||
@ -47,11 +50,11 @@ const HomeRouter = {
|
|||||||
get_search_message(jd[e]);
|
get_search_message(jd[e]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
}).fail(function (e, f, g) {
|
}).fail(function (e, f, g) {
|
||||||
console.log("list_msg: err: " + e + f + g);
|
console.log("list_msg: err: " + e + f + g);
|
||||||
});
|
});
|
||||||
}
|
}*/
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted: function () {
|
mounted: function () {
|
||||||
|
@ -5,8 +5,8 @@ Vue.component('MsgCard', {
|
|||||||
<img src="favicon.ico" width=20px height=20px>
|
<img src="favicon.ico" width=20px height=20px>
|
||||||
</h6>
|
</h6>
|
||||||
{{ msg.message }}<br><br>
|
{{ msg.message }}<br><br>
|
||||||
<!--<a v-for="tag in msg.tag" href="#">#{{ tag }} </a>-->
|
<a v-for="tag in msg.tag" @click="filterForTag(tag)">#{{ tag }} </a>
|
||||||
<b-button class="tags" type="is-text" v-for="tag in msg.tag>#{{ tag }} </b-button>
|
<!--<b-button class="tags" type="is-text" v-for="tag in msg.tag">#{{ tag }} </b-button>-->
|
||||||
</p>
|
</p>
|
||||||
<div class="om-card-footer"> <div class="om-user-line">
|
<div class="om-card-footer"> <div class="om-user-line">
|
||||||
<i class="material-icons">account_circle</i>
|
<i class="material-icons">account_circle</i>
|
||||||
@ -26,5 +26,9 @@ Vue.component('MsgCard', {
|
|||||||
myFilter: function() {
|
myFilter: function() {
|
||||||
this.isActive = !this.isActive;
|
this.isActive = !this.isActive;
|
||||||
},
|
},
|
||||||
|
filterForTag: function(tag) {
|
||||||
|
console.log("link: " +tag);
|
||||||
|
searching(tag);
|
||||||
|
},
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -57,7 +57,9 @@ const dbs = {
|
|||||||
* Get a particular message
|
* Get a particular message
|
||||||
*/
|
*/
|
||||||
get: function(req, res) {
|
get: function(req, res) {
|
||||||
model.Messages.find({$text: {$search: req.params.phrase}})
|
model.Messages.find(
|
||||||
|
{$text: {$search: req.params.phrase}})
|
||||||
|
.sort({tag:1, user:1, message:1, subject:1})
|
||||||
.exec().then(results => {
|
.exec().then(results => {
|
||||||
//selects id from message:
|
//selects id from message:
|
||||||
var parsed = [];
|
var parsed = [];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user