modif css, retrait section test, ajout config.nim
This commit is contained in:
parent
46ca5ca67a
commit
3c0d7eea68
1
build_main.sh
Executable file
1
build_main.sh
Executable file
@ -0,0 +1 @@
|
|||||||
|
nim c -r -d:ssl,release main.nim
|
12
code/joplin_json_utils.nim
Normal file
12
code/joplin_json_utils.nim
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
# Data structure for TAGS
|
||||||
|
type Tag = object
|
||||||
|
id : string
|
||||||
|
parent_id : string
|
||||||
|
title: string
|
||||||
|
|
||||||
|
type Tags = object
|
||||||
|
items: seq[Tag]
|
||||||
|
has_more: string
|
||||||
|
|
||||||
|
|
@ -6,7 +6,7 @@ import jester
|
|||||||
from os import sleep
|
from os import sleep
|
||||||
import httpcore, net, times, strutils
|
import httpcore, net, times, strutils
|
||||||
|
|
||||||
|
# Setup joplin_ping data
|
||||||
type
|
type
|
||||||
joplin_ping* = object
|
joplin_ping* = object
|
||||||
ping_result*: seq[string]
|
ping_result*: seq[string]
|
||||||
@ -17,18 +17,22 @@ type
|
|||||||
type
|
type
|
||||||
joplin_tags* = object
|
joplin_tags* = object
|
||||||
id*, parent_id*, title*: seq[string]
|
id*, parent_id*, title*: seq[string]
|
||||||
|
created_time*, updated_time*, user_created_time*, user_updated_time*, is_shared*: seq[int]
|
||||||
req*: Request
|
req*: Request
|
||||||
|
|
||||||
# Setup joplin_notebooks data
|
# Setup joplin_notebooks data
|
||||||
type
|
type
|
||||||
joplin_notebooks* = object
|
joplin_notebooks* = object
|
||||||
id*, parent_id*, title*: seq[string]
|
id*, parent_id*, title*, share_id*, icon*: seq[string]
|
||||||
|
created_time*, updated_time*, user_created_time*, user_updated_time*, is_shared*: seq[int]
|
||||||
req*: Request
|
req*: Request
|
||||||
|
|
||||||
# Setup joplin_notes data
|
# Setup joplin_notes data
|
||||||
type
|
type
|
||||||
joplin_notes* = object
|
joplin_notes* = object
|
||||||
id*, parent_id*, title*: seq[string]
|
id*, parent_id*, title*, body*, author*, source_url*, source*, source_application*, application_data*, share_id*, conflict_original_id*, body_html*, base_url*: seq[string]
|
||||||
|
created_time*, updated_time*, is_conflict*, is_todo*, todo_due*, todo_completed*, user_created_time*, user_updated_time*, markup_language*, is_shared*: seq[int]
|
||||||
|
latitude*, longitude*, altitude*, order*:seq[float]
|
||||||
req*: Request
|
req*: Request
|
||||||
|
|
||||||
let
|
let
|
||||||
@ -111,6 +115,7 @@ proc get_joplin_notebooks*(token:string): Future[joplin_notebooks] {.async.} =
|
|||||||
|
|
||||||
# request joplin API for notebooks
|
# request joplin API for notebooks
|
||||||
url = fmt"http://localhost:41184/folders?page={page}&token={token}"
|
url = fmt"http://localhost:41184/folders?page={page}&token={token}"
|
||||||
|
echo("URL notebooks : ", url)
|
||||||
var json = await client.getContent(url)
|
var json = await client.getContent(url)
|
||||||
|
|
||||||
# parse jason
|
# parse jason
|
||||||
@ -150,8 +155,9 @@ proc get_joplin_notes*(token:string): Future[joplin_notes] {.async.} =
|
|||||||
# make sure to check all pages
|
# make sure to check all pages
|
||||||
while has_more == true:
|
while has_more == true:
|
||||||
|
|
||||||
# request joplin API for notebooks
|
# request joplin API for Notes
|
||||||
url = fmt"http://localhost:41184/notes?page={page}&token={token}"
|
url = fmt"http://localhost:41184/notes?page={page}&token={token}"
|
||||||
|
echo("URL notes : ", url)
|
||||||
var json = await client.getContent(url)
|
var json = await client.getContent(url)
|
||||||
|
|
||||||
# parse jason
|
# parse jason
|
||||||
@ -194,6 +200,7 @@ proc get_joplin_tags*(token:string): Future[joplin_tags] {.async.} =
|
|||||||
|
|
||||||
# request joplin API for notebooks
|
# request joplin API for notebooks
|
||||||
url = fmt"http://localhost:41184/tags?page={page}&token={token}"
|
url = fmt"http://localhost:41184/tags?page={page}&token={token}"
|
||||||
|
echo("URL tags : ", url)
|
||||||
var json = await client.getContent(url)
|
var json = await client.getContent(url)
|
||||||
|
|
||||||
# parse jason
|
# parse jason
|
||||||
@ -217,3 +224,52 @@ proc get_joplin_tags*(token:string): Future[joplin_tags] {.async.} =
|
|||||||
return j_tags
|
return j_tags
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# proc get_joplin_tags_json*(token:string): Future[] {.async.} =
|
||||||
|
|
||||||
|
# # url = fmt"http://localhost:41184/notes/{id}?fields=id,parent_id,title,body,created_time,updated_time,is_conflict,latitude,longitude,altitude,author,source_url,is_todo,todo_due,todo_completed,source,source_application,application_data,order,user_created_time,user_updated_time,encryption_cipher_text,encryption_applied,markup_language,is_shared,share_id,conflict_original_id,master_key_id&token={token}"
|
||||||
|
|
||||||
|
# # url = fmt"http://localhost:41184/tags/{id}?fields=id,parent_id,title,created_time,updated_time,user_created_time,user_updated_time,is_shared&token={token}"
|
||||||
|
|
||||||
|
# # http://localhost:41184/tags?token=e5f6644fbf6a97ddc55648dae72b11caecda6c6642d8ce0d3b20129b89b196385737eb908923542c3343649ebbf865b55bda031ab4c3a16edc7723ef2ad77d8f
|
||||||
|
|
||||||
|
# # Variables
|
||||||
|
# var j_tags: joplin_tags
|
||||||
|
# var has_more: bool = true
|
||||||
|
# var page: int = 1
|
||||||
|
# var url: string
|
||||||
|
# var client = newAsyncHttpClient()
|
||||||
|
# var pingCheck: joplin_ping
|
||||||
|
# pingCheck = waitFor ping_joplin(token)
|
||||||
|
|
||||||
|
|
||||||
|
# # check the joplin status befor query
|
||||||
|
# if pingCheck.ping_status:
|
||||||
|
|
||||||
|
# # make sure to check all pages
|
||||||
|
# while has_more == true:
|
||||||
|
|
||||||
|
# # request joplin API for notebooks
|
||||||
|
# url = fmt"http://localhost:41184/tags?page={page}&token={token}"
|
||||||
|
# echo("URL tags : ", url)
|
||||||
|
# var json = await client.getContent(url)
|
||||||
|
|
||||||
|
# # parse jason
|
||||||
|
# let joplin_tags_Json = parseJson(json)
|
||||||
|
|
||||||
|
# # valider qu'il n'y a plus de page
|
||||||
|
# if not joplin_tags_Json["has_more"].getBool:
|
||||||
|
# has_more = false
|
||||||
|
|
||||||
|
# # store json info into an object
|
||||||
|
# var count: int = 1
|
||||||
|
# for nb in joplin_tags_Json["items"]:
|
||||||
|
# echo nb["id"].getstr
|
||||||
|
# echo nb["parent_id"].getstr
|
||||||
|
# echo nb["title"].getstr
|
||||||
|
# count += 1
|
||||||
|
|
||||||
|
# # aller à la page suivante
|
||||||
|
# page += 1
|
||||||
|
|
||||||
|
|
||||||
|
5
config.nims
Normal file
5
config.nims
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
switch("d","release")
|
||||||
|
switch("d","ssl")
|
||||||
|
# --threads:on
|
||||||
|
--opt:size
|
||||||
|
switch("passL","-s")
|
9
main.nim
9
main.nim
@ -9,7 +9,7 @@ import parsecfg # Parse CFG (config) files
|
|||||||
import strutils # Basic functions
|
import strutils # Basic functions
|
||||||
import times # Time and date
|
import times # Time and date
|
||||||
import uri # We need to encode urls: encodeUrl()
|
import uri # We need to encode urls: encodeUrl()
|
||||||
|
import std/json
|
||||||
|
|
||||||
import code/database_utils # Utils used in the database
|
import code/database_utils # Utils used in the database
|
||||||
import code/password_utils # Our file with password utils
|
import code/password_utils # Our file with password utils
|
||||||
@ -321,6 +321,13 @@ routes:
|
|||||||
createTFD()
|
createTFD()
|
||||||
resp test_viewtree(c)
|
resp test_viewtree(c)
|
||||||
|
|
||||||
|
get "/test_tags_json":
|
||||||
|
createTFD()
|
||||||
|
var tags: JsonNodeObj
|
||||||
|
|
||||||
|
|
||||||
|
# http://localhost:41184/notes/77ec1bfbaccd4708a9f649f42896f437&token=e5f6644fbf6a97ddc55648dae72b11caecda6c6642d8ce0d3b20129b89b196385737eb908923542c3343649ebbf865b55bda031ab4c3a16edc7723ef2ad77d8f
|
||||||
|
# http://localhost:41184/notes/77ec1bfbaccd4708a9f649f42896f437?fields=id,parent_id,title,body,created_time,updated_time,is_conflict,latitude,longitude,altitude,author,source_url,is_todo,todo_due,todo_completed,source,source_application,application_data,order,user_created_time,user_updated_time,encryption_cipher_text,encryption_applied,markup_language,is_shared,share_id,conflict_original_id,master_key_id&token=e5f6644fbf6a97ddc55648dae72b11caecda6c6642d8ce0d3b20129b89b196385737eb908923542c3343649ebbf865b55bda031ab4c3a16edc7723ef2ad77d8f
|
||||||
|
|
||||||
# # ##
|
# # ##
|
||||||
# # END TESTS SECTION ##
|
# # END TESTS SECTION ##
|
||||||
|
8
nimweb.code-workspace
Normal file
8
nimweb.code-workspace
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"path": "."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {}
|
||||||
|
}
|
@ -22,15 +22,18 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
body {
|
html, body {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-family: Poppins-Regular, sans-serif;
|
font-family: Poppins-Regular, sans-serif;
|
||||||
|
height:100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
*,
|
*,
|
||||||
*::before,
|
*::before,
|
||||||
*::after {
|
*::after {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
@ -51,11 +54,11 @@ a {
|
|||||||
--light-gray: rgb(144, 144, 144);
|
--light-gray: rgb(144, 144, 144);
|
||||||
--medium-gray: rgb(96, 96, 96);
|
--medium-gray: rgb(96, 96, 96);
|
||||||
--dark-gray: rgb(13, 13, 13);
|
--dark-gray: rgb(13, 13, 13);
|
||||||
--header-height: 40px;
|
|
||||||
--animation-duration: 200ms;
|
--animation-duration: 200ms;
|
||||||
--animation-timing-curve: ease-in-out;
|
--animation-timing-curve: ease-in-out;
|
||||||
--blue-joplin-color: #0053b8;
|
--blue-joplin-color: #0053b8;
|
||||||
--light-blue-joplin-color: rgb(237, 241, 243);
|
--light-blue-joplin-color: rgb(237, 241, 243);
|
||||||
|
--header-height: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
@ -85,6 +88,7 @@ a {
|
|||||||
float: left;
|
float: left;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
height: calc(100vh - var(--header-height));
|
height: calc(100vh - var(--header-height));
|
||||||
|
/* height: auto; */
|
||||||
/* flex: 50%; */
|
/* flex: 50%; */
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
@ -92,8 +96,8 @@ a {
|
|||||||
.column .scrollbar {
|
.column .scrollbar {
|
||||||
/* margin-left: 30px; */
|
/* margin-left: 30px; */
|
||||||
/* float: left; */
|
/* float: left; */
|
||||||
height: 950px;
|
/* min-height: 100px; */
|
||||||
/* width: 300px; */
|
height: 800px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
/* margin-bottom: 25px; */
|
/* margin-bottom: 25px; */
|
||||||
@ -202,6 +206,7 @@ a {
|
|||||||
|
|
||||||
.container {
|
.container {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
height: 94%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.vertical-center {
|
.vertical-center {
|
||||||
@ -215,7 +220,16 @@ a {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
margin: 1rem;
|
/* margin: 1rem; */
|
||||||
|
width: 1200px;
|
||||||
|
min-height: 100px;
|
||||||
|
height: auto;
|
||||||
|
margin: 80px auto 0px auto;
|
||||||
|
/* background-color: black; */
|
||||||
|
padding: 10px 10px;
|
||||||
|
display:table;
|
||||||
|
overflow:hidden;
|
||||||
|
height:100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-list {
|
.sidebar-list {
|
||||||
@ -300,7 +314,7 @@ a {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.sidebar.open .top-sidebar {
|
.sidebar.open .top-sidebar {
|
||||||
height: 140px;
|
height: 150px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar .top-sidebar .hidden-sidebar {
|
.sidebar .top-sidebar .hidden-sidebar {
|
||||||
|
BIN
test/oop_example
BIN
test/oop_example
Binary file not shown.
@ -1,33 +0,0 @@
|
|||||||
# type
|
|
||||||
# Notebook = object
|
|
||||||
# id: string
|
|
||||||
# title: string
|
|
||||||
|
|
||||||
# var notebooks = newSeq[Notebook]()
|
|
||||||
# notebooks.add(Notebook(id:"12345", title: "un notebook titre"))
|
|
||||||
|
|
||||||
# echo notebooks
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
type
|
|
||||||
Notebook2 = ref object of RootObj
|
|
||||||
id: seq[string]
|
|
||||||
title: seq[string]
|
|
||||||
Notebooks = ref object of Notebook2
|
|
||||||
nb_list: seq[int]
|
|
||||||
|
|
||||||
var nb: Notebooks
|
|
||||||
|
|
||||||
# nb.add(Notebook2(id:"123456", title: "mon titre"))
|
|
||||||
|
|
||||||
# nb.id.add("toto")
|
|
||||||
# nb.title.add("tata")
|
|
||||||
# nb.nb_list.add(0)
|
|
||||||
|
|
||||||
|
|
||||||
echo nb.id
|
|
||||||
echo nb.title
|
|
||||||
echo nb.nb_list
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
@ -1,26 +0,0 @@
|
|||||||
type
|
|
||||||
Node = ref object of RootObj
|
|
||||||
value: string
|
|
||||||
active: bool
|
|
||||||
|
|
||||||
type
|
|
||||||
NumNode = ref object of Node
|
|
||||||
|
|
||||||
type
|
|
||||||
BinOp = ref object of Node
|
|
||||||
left, op, right: string
|
|
||||||
|
|
||||||
var numnum = NumNode(value: "3", active: true)
|
|
||||||
|
|
||||||
echo numnum[]
|
|
||||||
# > (value: "3", active: true)
|
|
||||||
|
|
||||||
var add = BinOp(
|
|
||||||
left: "7",
|
|
||||||
op: "+",
|
|
||||||
right: "9",
|
|
||||||
active: true
|
|
||||||
)
|
|
||||||
|
|
||||||
echo add[]
|
|
||||||
# > (left: "7", op: "+", right: "9", value: "", active: true))
|
|
BIN
test/testJson
BIN
test/testJson
Binary file not shown.
@ -1,84 +0,0 @@
|
|||||||
import std/[asyncdispatch, httpclient]
|
|
||||||
import std/json
|
|
||||||
import std/options
|
|
||||||
import std/strformat
|
|
||||||
import jester
|
|
||||||
|
|
||||||
# type
|
|
||||||
# joplin_notebooks* = object
|
|
||||||
# id: seq[string]
|
|
||||||
# parent_id: seq[string]
|
|
||||||
# title: seq[string]
|
|
||||||
|
|
||||||
|
|
||||||
# proc get_joplin_notebooks*(): Future[joplin_notebooks] {.async.} =
|
|
||||||
# var j_nb: joplin_notebooks
|
|
||||||
# var count = 0
|
|
||||||
# var client = newAsyncHttpClient()
|
|
||||||
# var json = await client.getContent("http://localhost:41184/folders?token=e5f6644fbf6a97ddc55648dae72b11caecda6c6642d8ce0d3b20129b89b196385737eb908923542c3343649ebbf865b55bda031ab4c3a16edc7723ef2ad77d8f")
|
|
||||||
|
|
||||||
# let joplin_notebooks_Json = parseJson(json)
|
|
||||||
|
|
||||||
# for nb in joplin_notebooks_Json["items"]:
|
|
||||||
# j_nb.id.add(nb["id"].getstr)
|
|
||||||
# j_nb.parent_id.add(nb["parent_id"].getstr)
|
|
||||||
# j_nb.title.add(nb["title"].getstr)
|
|
||||||
# count += 1
|
|
||||||
|
|
||||||
# echo joplin_notebooks_Json["has_more"]
|
|
||||||
|
|
||||||
# return j_nb
|
|
||||||
|
|
||||||
|
|
||||||
# Setup user data
|
|
||||||
type
|
|
||||||
joplin_notebooks* = object
|
|
||||||
id*, parent_id*, title*: seq[string]
|
|
||||||
req*: Request
|
|
||||||
|
|
||||||
proc get_joplin_notebooks*(token:string): Future[joplin_notebooks] {.async.} =
|
|
||||||
|
|
||||||
# Variables
|
|
||||||
var j_nb: joplin_notebooks
|
|
||||||
var has_more: bool = true
|
|
||||||
var page: int = 1
|
|
||||||
var url: string
|
|
||||||
var client = newAsyncHttpClient()
|
|
||||||
|
|
||||||
# make sure to check all pages
|
|
||||||
while has_more == true:
|
|
||||||
|
|
||||||
# request joplin API for notebooks
|
|
||||||
url = fmt"http://localhost:41184/folders?page={page}&token={token}"
|
|
||||||
var json = await client.getContent(url)
|
|
||||||
|
|
||||||
# parse jason
|
|
||||||
let joplin_notebooks_Json = parseJson(json)
|
|
||||||
|
|
||||||
# valider qu'il n'y a plus de page
|
|
||||||
if not joplin_notebooks_Json["has_more"].getBool:
|
|
||||||
has_more = false
|
|
||||||
|
|
||||||
# store json info into an object
|
|
||||||
var count: int = 1
|
|
||||||
for nb in joplin_notebooks_Json["items"]:
|
|
||||||
j_nb.id.add(nb["id"].getstr)
|
|
||||||
j_nb.parent_id.add(nb["parent_id"].getstr)
|
|
||||||
j_nb.title.add(nb["title"].getstr)
|
|
||||||
count += 1
|
|
||||||
|
|
||||||
# aller à la page suivante
|
|
||||||
page += 1
|
|
||||||
|
|
||||||
return j_nb
|
|
||||||
|
|
||||||
|
|
||||||
# var all_notebooks = ""
|
|
||||||
var nb: joplin_notebooks
|
|
||||||
nb = waitFor get_joplin_notebooks("e5f6644fbf6a97ddc55648dae72b11caecda6c6642d8ce0d3b20129b89b196385737eb908923542c3343649ebbf865b55bda031ab4c3a16edc7723ef2ad77d8f")
|
|
||||||
# echo nb.title[1]
|
|
||||||
|
|
||||||
for i in nb.title:
|
|
||||||
echo i
|
|
||||||
|
|
||||||
echo nb.title
|
|
@ -14,6 +14,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>TEST Home Page</h1>
|
<h1>TEST Home Page</h1>
|
||||||
|
<a href="/" class="newJoplinHomePage"><h3>The newJoplin Homepage</h3></a>
|
||||||
<a href="/test_pingjoplin" class="test_ping"><h3>Test ping Joplin</h3></a>
|
<a href="/test_pingjoplin" class="test_ping"><h3>Test ping Joplin</h3></a>
|
||||||
<a href="/test_notebooks" class="test_notebooks"><h3>Test joplin Notebooks</h3></a>
|
<a href="/test_notebooks" class="test_notebooks"><h3>Test joplin Notebooks</h3></a>
|
||||||
<a href="/test_notes" class="test_notes"><h3>Test Joplin Notes</h3></a>
|
<a href="/test_notes" class="test_notes"><h3>Test Joplin Notes</h3></a>
|
||||||
|
Loading…
Reference in New Issue
Block a user