Skip to content

Commit ffca0ab

Browse files
committed
update examples
1 parent 8972ec5 commit ffca0ab

File tree

4 files changed

+145
-140
lines changed

4 files changed

+145
-140
lines changed

src/crdt.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
//CRDT Implementatiom
2+
import crdt from "@cocreate/crdt"
3+
import crud from "@cocreate/crud-client"
4+
import util from "@cocreate/utils"
5+
6+
// CRDT Implementaion
7+
const {collection, document_id, name} = crud.GetAttr()
8+
9+
crdt.init({ collection, document_id, name, element/* DOM element */ })
10+
crdt.getText({ collection, document_id, name })
11+
crdt.insertText({ collection, document_id, name, value, position })
12+
crdt.deleteText({ collection, document_id, name, position, length })
13+
crdt.replaceText({ collection, document_id, name, value })
14+
15+
//. crdt listen and binding
16+
/**
17+
* event: {
18+
* detail: [{
19+
* retain, //. position for insert and delete case
20+
* insert, //. insert string
21+
* delete, //. delete length
22+
}]
23+
* }
24+
*
25+
* ex: {insert: "testing", retain: 8}
26+
* {delete: 10, reatin: 7}
27+
*/
28+
29+
// example of binding the input to sync with crdt and maintain cursour positions
30+
input_element.addEventListener('cocreate-crdt-update', function(event) {
31+
var info = event.detail;
32+
33+
var pos = 0;
34+
var flag = true;
35+
36+
info.forEach(item => {
37+
if (item.retain) {
38+
flag = true;
39+
pos = item.retain;
40+
}
41+
42+
if (item.insert || item.delete) {
43+
if (flag == false) pos = 0;
44+
flag = false;
45+
if (item.insert) {
46+
//. element's insert process
47+
// self.updateChangeData(this, item.insert, pos, pos)
48+
} else if (item.delete) {
49+
//. element's delete process
50+
// self.updateChangeData(this, "", pos, pos + item.delete);
51+
}
52+
}
53+
})
54+
})

src/crud.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Crud implementation
2+
import observer from "@cocreate/observer"
3+
import crud from "@cocreate/crud-client"
4+
import form from "@cocreate/form"
5+
6+
7+
crud.listen('createDocuemnt' )
8+
9+
// CRUD Implementation
10+
const el = document.querySelector('xxx') // el is dom element
11+
const {collection, document_id, name} = crud.GetAttr(el) //namespace, room, broadcast, broadcat_sender
12+
const {is_realtime, is_read, is_save, is_update} = crud.getFlagAttr(el)
13+
const is_crdt = crud.isCrdt(el) // used by crud only to dertimine if crdt exists...
14+
15+
crud.createDocument({collection, uid: "unique string"}) // {namespace, room, broadcast, broadcat_sender, ...}
16+
17+
crud.readDocument({collection, document_id, name, element: "unique string"}) // {async, event, ...}
18+
let async = await crud.listenAsync(event)
19+
20+
crud.updateDocument({collection, document_id, name, element: "unique string"}) // {namespace, room, broadcast, broadcat_sender, async, event, delete_fields ...}
21+
crud.deleteDocument({collection, document_id, element: "unique string"}) // {namespace, room, broadcast, broadcat_sender, async, event, ...}
22+
crud.readDocumentList({collection, element: "unique string"}) // {operator: {fetch, filter, order, search, startIndex}, is_collection, async, event, ...}

src/example-functions.js

Lines changed: 0 additions & 140 deletions
This file was deleted.

src/list.js

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
//Read list Implementation
2+
import observer from '@cocreate/observer'
3+
import ccfilter from '@cocreate/filter'
4+
import crud from '@cocreate/crud-client';
5+
import logic from '@cocreate/logic';
6+
import render from '@cocreate/render';
7+
8+
9+
const {fetch_collection, is_collection_fetch, fetch_count} = crud.GetFetchAttr(el) //namespace, room, broadcast, broadcat_sender,
10+
11+
12+
var filter = CoCreateFilter.setFilter(
13+
el,
14+
attrName, /* default value = data-template_id*/
15+
type, /* default value = template*/
16+
)
17+
18+
/** filter object structure */
19+
filter = {
20+
id, /* element id */
21+
el, /* element */
22+
type, /* type in input parameter */
23+
collection, /* data-fetch_collection */
24+
is_collection, /* data-fetch_value_type == collection ? true : false */
25+
startIndex, /* init value = 0 */
26+
search: {
27+
type: 'or', /* or */
28+
value:[], /* Array:data-filter_value without data-filter_name */
29+
},
30+
orders: [{
31+
name, /* data-order_by */
32+
type, /* data-order_type == 'asc' ? 1 : -1 */
33+
}],
34+
filters: [{
35+
name, /* data-filter_name */
36+
value:[], /* data-filter_value by data-filter_value_type(string|raw|number) : Array */
37+
operator, /* data-filter_operator */
38+
type /* data-filter_type */
39+
}],
40+
count, /* data-fetch_count */
41+
}
42+
43+
crud.readDocumentList({
44+
"collection": filter.collection,
45+
"element": uuid,
46+
"metadata": {
47+
isRefresh: filter.isRefresh
48+
},
49+
"operator" : {
50+
"filters": filter.filters,
51+
"orders": filter.orders,
52+
"search": filter.search,
53+
"startIndex": filter.startIndex,
54+
"count": filter.count
55+
},
56+
"is_collection": filter.is_collection
57+
});
58+
59+
60+
61+
62+
63+
// let f_el = filter_objs[i];
64+
// let filter_name = f_el.getAttribute('data-filter_name');
65+
// let filter_operator = f_el.getAttribute('data-filter_operator') ? f_el.getAttribute('data-filter_operator') : '$contain';
66+
// let value_type = f_el.getAttribute('data-filter_value_type') ? f_el.getAttribute('data-filter_value_type') : 'string';
67+
// let filter_type = f_el.getAttribute('data-filter_type');
68+
// let filter_value = f_el.getAttribute('data-filter_value');
69+
// let value = this.getAttribute('data-toggle_order') || '';

0 commit comments

Comments
 (0)