[couchdb] synchronizacja kart po dodaniu nowych dziala
This commit is contained in:
parent
3497fb022c
commit
7399b45cfb
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"git.ignoreLimitWarning": true
|
||||||
|
}
|
4
documentation/couchdb/corsy_ustawianie.txt
Normal file
4
documentation/couchdb/corsy_ustawianie.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
w linii komend jako admin na Windzie w folderze app
|
||||||
|
C:\Users\dp\Desktop\PracowaniaProgramowania\frontend\app>add-cors-to-couchdb http://127.0.0.1:5984 -u root -p password
|
||||||
|
#powinno wyświetlic:
|
||||||
|
success
|
113
documentation/couchdb/local.ini
Normal file
113
documentation/couchdb/local.ini
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
; CouchDB Configuration Settings
|
||||||
|
|
||||||
|
; Custom settings should be made in this file. They will override settings
|
||||||
|
; in default.ini, but unlike changes made to default.ini, this file won't be
|
||||||
|
; overwritten on server upgrade.
|
||||||
|
|
||||||
|
[couchdb]
|
||||||
|
;max_document_size = 4294967296 ; bytes
|
||||||
|
;os_process_timeout = 5000
|
||||||
|
uuid = aae385165fb06f68a709f782ee764194
|
||||||
|
|
||||||
|
[couch_peruser]
|
||||||
|
; If enabled, couch_peruser ensures that a private per-user database
|
||||||
|
; exists for each document in _users. These databases are writable only
|
||||||
|
; by the corresponding user. Databases are in the following form:
|
||||||
|
; userdb-{hex encoded username}
|
||||||
|
;enable = true
|
||||||
|
; If set to true and a user is deleted, the respective database gets
|
||||||
|
; deleted as well.
|
||||||
|
;delete_dbs = true
|
||||||
|
; Set a default q value for peruser-created databases that is different from
|
||||||
|
; cluster / q
|
||||||
|
;q = 1
|
||||||
|
|
||||||
|
[chttpd]
|
||||||
|
;port = 5984
|
||||||
|
;bind_address = 127.0.0.1
|
||||||
|
; Options for the MochiWeb HTTP server.
|
||||||
|
;server_options = [{backlog, 128}, {acceptor_pool_size, 16}]
|
||||||
|
; For more socket options, consult Erlang's module 'inet' man page.
|
||||||
|
;socket_options = [{sndbuf, 262144}, {nodelay, true}]
|
||||||
|
|
||||||
|
[httpd]
|
||||||
|
enable_cors = true
|
||||||
|
; NOTE that this only configures the "backend" node-local port, not the
|
||||||
|
; "frontend" clustered port. You probably don't want to change anything in
|
||||||
|
; this section.
|
||||||
|
; Uncomment next line to trigger basic-auth popup on unauthorized requests.
|
||||||
|
;WWW-Authenticate = Basic realm="administrator"
|
||||||
|
|
||||||
|
[cors]
|
||||||
|
origins = *
|
||||||
|
credentials = true
|
||||||
|
methods = GET, PUT, POST, HEAD, DELETE
|
||||||
|
headers = accept, authorization, content-type, origin, referer, x-csrf-token
|
||||||
|
|
||||||
|
|
||||||
|
[x-csrf-token]
|
||||||
|
accept, authorization, content-type, origin, referer, x-csrf-token
|
||||||
|
; Uncomment next line to set the configuration modification whitelist. Only
|
||||||
|
; whitelisted values may be changed via the /_config URLs. To allow the admin
|
||||||
|
; to change this value over HTTP, remember to include {httpd,config_whitelist}
|
||||||
|
; itself. Excluding it from the list would require editing this file to update
|
||||||
|
; the whitelist.
|
||||||
|
;config_whitelist = [{httpd,config_whitelist}, {log,level}, {etc,etc}]
|
||||||
|
|
||||||
|
[query_servers]
|
||||||
|
;nodejs = /usr/local/bin/couchjs-node /path/to/couchdb/share/server/main.js
|
||||||
|
|
||||||
|
[couch_httpd_auth]
|
||||||
|
; If you set this to true, you should also uncomment the WWW-Authenticate line
|
||||||
|
; above. If you don't configure a WWW-Authenticate header, CouchDB will send
|
||||||
|
; Basic realm="server" in order to prevent you getting logged out.
|
||||||
|
; require_valid_user = false
|
||||||
|
secret = 067e98c83b3132b81ff0d83bdb97cf10
|
||||||
|
|
||||||
|
[ssl]
|
||||||
|
;enable = true
|
||||||
|
;cert_file = /full/path/to/server_cert.pem
|
||||||
|
;key_file = /full/path/to/server_key.pem
|
||||||
|
;password = somepassword
|
||||||
|
; set to true to validate peer certificates
|
||||||
|
;verify_ssl_certificates = false
|
||||||
|
; Set to true to fail if the client does not send a certificate. Only used if verify_ssl_certificates is true.
|
||||||
|
;fail_if_no_peer_cert = false
|
||||||
|
; Path to file containing PEM encoded CA certificates (trusted
|
||||||
|
; certificates used for verifying a peer certificate). May be omitted if
|
||||||
|
; you do not want to verify the peer.
|
||||||
|
;cacert_file = /full/path/to/cacertf
|
||||||
|
; The verification fun (optional) if not specified, the default
|
||||||
|
; verification fun will be used.
|
||||||
|
;verify_fun = {Module, VerifyFun}
|
||||||
|
; maximum peer certificate depth
|
||||||
|
;ssl_certificate_max_depth = 1
|
||||||
|
;
|
||||||
|
; Reject renegotiations that do not live up to RFC 5746.
|
||||||
|
;secure_renegotiate = true
|
||||||
|
; The cipher suites that should be supported.
|
||||||
|
; Can be specified in erlang format "{ecdhe_ecdsa,aes_128_cbc,sha256}"
|
||||||
|
; or in OpenSSL format "ECDHE-ECDSA-AES128-SHA256".
|
||||||
|
;ciphers = ["ECDHE-ECDSA-AES128-SHA256", "ECDHE-ECDSA-AES128-SHA"]
|
||||||
|
; The SSL/TLS versions to support
|
||||||
|
;tls_versions = [tlsv1, 'tlsv1.1', 'tlsv1.2']
|
||||||
|
|
||||||
|
; To enable Virtual Hosts in CouchDB, add a vhost = path directive. All requests to
|
||||||
|
; the Virual Host will be redirected to the path. In the example below all requests
|
||||||
|
; to http://example.com/ are redirected to /database.
|
||||||
|
; If you run CouchDB on a specific port, include the port number in the vhost:
|
||||||
|
; example.com:5984 = /database
|
||||||
|
[vhosts]
|
||||||
|
;example.com = /database/
|
||||||
|
|
||||||
|
; To create an admin account uncomment the '[admins]' section below and add a
|
||||||
|
; line in the format 'username = password'. When you next start CouchDB, it
|
||||||
|
; will change the password to a hash (so that your passwords don't linger
|
||||||
|
; around in plain-text files). You can add more admin accounts with more
|
||||||
|
; 'username = password' lines. Don't forget to restart CouchDB after
|
||||||
|
; changing this.
|
||||||
|
[admins]
|
||||||
|
;admin = mysecretpassword
|
||||||
|
root = -pbkdf2-09d40af7168b7f20872a8a169b2ec3f4b3d3bb16,43ff5af3359e8ff310934e7c5effbf3d,10
|
||||||
|
root2 = -pbkdf2-cd4319b0a8943f9a8e9f7c86b3093d3b64ecef0f,63e56d6df3cba494997de6dd4bd83027,10
|
||||||
|
superuser = -pbkdf2-310f06740d41aa7f7281737805c9dc6f12aa4301,e0a1e64831746ae5d2b4238197dc119d,10
|
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<!-- pa-3 jest już nie potrzebne w <v-card> lepiej to wyglada jak sa koloery na samym brzegu-->
|
<!-- pa-3 jest już nie potrzebne w <v-card> lepiej to wyglada jak sa koloery na samym brzegu-->
|
||||||
<v-card flat v-for="card in cards" :key="card.text">
|
<v-card flat v-for="card in cards" :key="card.due">
|
||||||
<!-- dynamiczne budowanie stringa bedącego wartością klasy - składnia z $ i ciapki ukosne -->
|
<!-- dynamiczne budowanie stringa bedącego wartością klasy - składnia z $ i ciapki ukosne -->
|
||||||
<v-layout row wrap :class="`pa-3 cardType ${card.type}`">
|
<v-layout row wrap :class="`pa-3 cardType ${card.type}`">
|
||||||
|
|
||||||
@ -53,49 +53,33 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script src="http://localhost:5984/golang_cards/_all_docs?include_docs=true"></script>
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import PouchDB from 'pouchdb'
|
import PouchDB from 'pouchdb'
|
||||||
export default {
|
export default {
|
||||||
data(){
|
data(){
|
||||||
return{
|
return{
|
||||||
cards: [
|
cards: [],
|
||||||
{due: 'data jakas', text: 'jakis tekst karta pytanie1', type:'question'},
|
totalRows: null
|
||||||
{due: 'data jakas', text: 'jakis tekst karta pytanie2', type:'question'},
|
|
||||||
{due: 'data jakas', text: 'jakis tekst karta pytanie3', type:'question'},
|
|
||||||
{due: 'data jakas', text: 'jakis tekst karta pytanie4', type:'question'},
|
|
||||||
{due: 'data jakas', text: 'jakis tekst karta pytanie5', type:'question'},
|
|
||||||
{due: 'data jakas', text: 'jakis tekst karta pytanie6', type:'question'},
|
|
||||||
{due: 'data jakas', text: 'jakis tekst karta pytanie7', type:'question'},
|
|
||||||
{due: 'data jakas', text: 'jakis tekst karta pytanie8', type:'question'},
|
|
||||||
{due: 'data jakas', text: 'jakis tekst karta pytanie9', type:'question'},
|
|
||||||
{due: 'data jakas', text: 'jakis tekst karta pytanie10', type:'question'},
|
|
||||||
{due: 'data jakas', text: 'jakis tekst karta pytanie0', type:'question'},
|
|
||||||
{due: 'data jakas', text: 'karta odpowiedz jakis tekst', type:'answer'}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
sortBy(prop){
|
sortBy(prop){
|
||||||
//sortowanie po typie karty
|
//sortowanie po typie karty
|
||||||
console.log("prop:", prop)
|
|
||||||
this.cards.filter( obj => {
|
this.cards.filter( obj => {
|
||||||
return obj.type === prop
|
return obj.type === prop
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
daneZbazy(){
|
daneZbazy(){
|
||||||
// w linii komend jako admin na Windzie w folderze app
|
// w linii komend jako admin na Windzie w folderze app
|
||||||
// C:\Users\dp\Desktop\PracowaniaProgramowania\frontend\app>add-cors-to-couchdb http://127.0.0.1:5984 -u root -p password success
|
// C:\Users\dp\Desktop\PracowaniaProgramowania\frontend\app>add-cors-to-couchdb http://127.0.0.1:5984 -u root -p password success
|
||||||
|
var mojeVue = this;
|
||||||
var db = new PouchDB('http://localhost:5984/golang_cards');
|
var db = new PouchDB('http://localhost:5984/golang_cards');
|
||||||
console.log("DB: ", db)
|
var cardsTmp = []
|
||||||
var cards = []
|
|
||||||
|
|
||||||
db.allDocs({include_docs : true}).then(function (res) {
|
db.allDocs({include_docs : true}).then(function (res) {
|
||||||
console.log("res: ", res.rows[0].doc)
|
mojeVue.totalRows = res.total_rows; //aktualizacja zmiennej majacej liczbe wierszy
|
||||||
|
|
||||||
res.rows.forEach(function (entry){
|
res.rows.forEach(function (entry){
|
||||||
var tmp = {}
|
var tmp = {}
|
||||||
@ -107,29 +91,62 @@ export default {
|
|||||||
else{
|
else{
|
||||||
tmp.type='answer'
|
tmp.type='answer'
|
||||||
}
|
}
|
||||||
|
cardsTmp.push(tmp)
|
||||||
cards.push(tmp)
|
|
||||||
|
|
||||||
console.log("tmp", tmp)
|
|
||||||
console.log(entry.doc.Text)
|
|
||||||
console.log(entry.doc.Timestamp)
|
|
||||||
console.log(entry.doc.blank)
|
|
||||||
console.log(entry.doc.isquestion)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
this.cards = cards
|
this.cards = cardsTmp
|
||||||
}
|
},
|
||||||
|
checkDiference(){
|
||||||
|
var mojeVue = this;
|
||||||
|
//Sprawdza róznice w bazie danych - czy nie zostały dodane nowe dane
|
||||||
|
var db = new PouchDB('http://localhost:5984/golang_cards');
|
||||||
|
|
||||||
|
//tylko sprawdza liczbe wierszy, bez pobierania dokuemnto - ktore sa prototype tye
|
||||||
|
var promiseRows = new Promise(function(resolve, reject) {
|
||||||
|
//tu sie dzieje magia promisow
|
||||||
|
var rowsCount = db.allDocs({include_docs : true}).then(function (res){
|
||||||
|
return res.total_rows;
|
||||||
|
})
|
||||||
|
|
||||||
|
if (rowsCount){
|
||||||
|
resolve(rowsCount)
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
reject("No nie chcial mi dac wynikow")
|
||||||
|
}
|
||||||
|
//koniec magii
|
||||||
|
})
|
||||||
|
|
||||||
|
//wywolanie magii
|
||||||
|
var proszeDzialaj = promiseRows.then(function(fromResolve){
|
||||||
|
return fromResolve
|
||||||
|
}).catch(function(fromReject){
|
||||||
|
return "Proszę nie :<"
|
||||||
|
})
|
||||||
|
|
||||||
|
proszeDzialaj.then(function(fromResolve){
|
||||||
|
if (fromResolve !== mojeVue.totalRows){ //javascriptowe fantastyczne porownania
|
||||||
|
//aktualizuj dane wyswietlane
|
||||||
|
mojeVue.daneZbazy()
|
||||||
|
console.log("Nowe dane")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
},
|
},
|
||||||
created() {
|
mounted() {
|
||||||
console.log("Pobranie wszsytkich kard z bazy")
|
// console.log("Pobranie wszsytkich kard z bazy")
|
||||||
this.daneZbazy()
|
this.daneZbazy() //wczytuje na poczatku dane
|
||||||
|
|
||||||
|
//cyklicznie ywkonujaca sie funkcja - do sprawdzania zmian w bazie co 10 s - żeby plynnie wyswietlac nowo dodane karty jesli zmiana zostanie zauwaona
|
||||||
|
this.timer = setInterval(this.checkDiference, 10000) //na biezaco aktualizuje dane
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
Loading…
Reference in New Issue
Block a user