startup screen, register label form

main
Steve Nyemba 2 weeks ago
parent 169077002d
commit 07bcba0b71

@ -22,14 +22,15 @@
}
],
"header": {
"title": "Data Transport",
"title": "Data Wrangler Workbench",
"subtitle": "Open Workbench: Read, write & wrangle data"},
"index": "index.html",
"on": {
"load": {
"pane": [
"www/html/menu.html"
]
],
"studio-intro":["www/html/about.html"]
}
},
"order": {
@ -45,7 +46,7 @@
"apply",
"version"
],
"register":["get","add"],
"register":["get","add","technologies"],
"io": [
"read", "open", "write"
]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 12 KiB

@ -351,6 +351,7 @@ studio.frame = function (_args){
}
})
_pythonCode = ('<div class="border-left" title="Python Code"><div class="active" align="center"><img src="api/disk/read?uri=www/html/_assets/images/python.png" style="width:20px" /></div></div>')
_openFile = $('<div class="border-left"><div class="active" title="Open File"><i class="fa-regular fa-folder-open"></i></div></div>')
$(_openFile).on('click',()=>{
var _id = '.'+_args.label+' .open-file'
@ -391,8 +392,8 @@ studio.frame = function (_args){
spreadsheet.refresh()
})
var _buttons = $('<div style="display:grid; grid-template-columns: auto repeat(5,64px); gap:4px;" align="center"><div>&nbsp;</div></div>')
_buttons.append(_openFile,_saveFile,_wizButton,_xbutton,_expandButton)
var _buttons = $('<div style="display:grid; grid-template-columns: auto repeat(6,64px); gap:4px;" align="center"><div>&nbsp;</div></div>')
_buttons.append(_pythonCode,_openFile,_saveFile,_wizButton,_xbutton,_expandButton)
// _frame = $('<div class="studio :label"></div>'.replace(/:label/,this._args.label))
var _frame = $('<div class="studio"></div>') .addClass(this._args.label)

@ -10,6 +10,7 @@ import numpy as np
import json
import base64
from flask import make_response, send_file
import copy
@cms.Plugin(mimetype="application/json",method="POST")
def read(**_args) :
@ -48,6 +49,9 @@ def open(**_args):
return spreadsheet #{"Workbook":{"sheets":[{"usedRange":{"colIndex":1,"rowIndex":3},"name":"Sheet1","rows":[{"cells":[{"value":"name"},{"value":"age"}]},{"cells":[{"value":"steve"},{"value":"44"}]},{"cells":[{"value":"elon"},{"value":"9"}]},{"cells":[{"value":"nico"},{"value":"33"}]}],"standardHeight":20}]}})
@cms.Plugin(mimetype="application/octet-stream",method="POST")
def write(**_args) :
"""
This functon generates an excel file, by returning the encoded 64bit stream
"""
_request = _args['request']
_object = _request.json
_sheets = None
@ -70,3 +74,8 @@ def write(**_args) :
_excelFile.seek(0)
_stream= _excelFile.read() #send_file(_excelFile,as_attachment=True,download_name=f'{_label}-export.xlsx', mimetype='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
return base64.b64encode(_stream).decode('utf-8')
@cms.Plugin(mimetype="text/plain")
def version (**_args) :
return transport.__edition__+ ' Edition '+transport.__version__

@ -16,7 +16,6 @@ def get (**_args) :
for _key in _data :
if _key not in ['default','email','version'] :
print (_key)
_provider = _data[_key]['provider']
_name = None
if 'table' in _data[_key] :
@ -49,3 +48,7 @@ def add(**_args):
#
# now we can/should get the rest of the list
return get(**_args)
@cms.Plugin(mimetype="application/json",method="GET")
def technologies(**_args):
return transport.supported().to_html(index=0)

@ -1,6 +1,120 @@
<style>
.about ul {margin-left:10px; padding-left:15px; list-style-type:none;}
.about ul li {margin:4px;}
.dataframe {
border-collapse: collapse;
margin: 25px 0;
font-size: 0.9em;
font-family: sans-serif;
width:100%;
border:1px solid #CAD5E0;
attribution
iconfinder.com
freepik.com
iconduck
/* min-width: 400px; */
/* box-shadow: 0 0 20px rgba(0, 0, 0, 0.15); */
}
.dataframe thead tr {
background-color: #4682B4;
color: #ffffff;
text-align: left;
}
.dataframe th,
.dataframe td {
padding: 12px 15px;
}
.dataframe tbody tr {
border-bottom: 1px solid #dddddd;
}
.dataframe tbody tr:nth-of-type(even) {
background-color: #f3f3f3;
}
.dataframe tbody tr:nth-of-type(odd) {
background-color: #FFFFFF;
}
/* .dataframe tbody tr:last-of-type {
border-bottom: 2px solid #009879;
} */
.dataframe tbody tr.active-row {
font-weight: bold;
color: #009879;
}
.warning{display:grid; grid-template-columns: 80px auto; gap:8px;}
</style>
<script>
uri = 'api/register/technologies'
var http = HttpClient.instance()
http.get(uri,(x)=>{
$('#support').html(x.responseText)
$('.powered').html('Powered By data-transport '+sessionStorage.wb_powered)
})
</script>
<div style="align-self:center; display:grid; grid-template-columns: 50% 50%; gap:8px;">
<div>
<h4>Supported Technologies</h4>
<div id="support" class="supported"></div>
<div class="powered small" align="center"></div>
</div>
<div class="about" style="align-self:end; padding:8px;">
<div class="get-started border-round border shadow warning" style="">
<i class="fa-solid fa-triangle-exclamation" style="font-size:64px; color:#ff6500;"> </i>
<div>
Your system is missing a database <b>registry</b>
<br>Click <span class="active" onclick="dialog.show({uri:'www/html/wizard.html',context:'{{system.context}}'})">
<i class="fa-solid fa-plug-circle-plus" style="color:#4682B4;"></i>
here </span> to get started
</div>
</div>
<h4>
Credit
</h4>
<ul class="border-left">
<li>
<i class="fa-solid fa-minus"></i> <span class="active" onclick="window.open('https://hiplab.mc.vanderbilt.edu')">HIPLAB</span> @ Vanderbilt University Medical Center
</li>
<li>
<i class="fa-solid fa-minus"></i> Kidney Transpant Center @ Vanderbilt University Medical Center
</li>
<li>
<i class="fa-solid fa-minus"></i> the#SPHERE lab @ Vanderbilt University Medical Center
</li>
</ul>
<p>
<h4>License</h4>
<ul class="border-left">
<li>
<b>{{layout.header.title}}</b> is licensed under MIT License
</li>
<li>
with most of the components require attribution.
</li>
</ul>
</p>
<p>
<h4>Component Attribution</h4>
</p>
<ul class="border-left">
<li>
<i class="fa-solid fa-minus"></i> Syncfusion,
</li>
<li>
<i class="fa-solid fa-minus"></i> fontawesome,
</li>
<li>
<i class="fa-solid fa-minus"></i> Iconfinder
</li>
<li>
<i class="fa-solid fa-minus"></i> freepik.com | iconfuck
</li>
</ul>
</div>
</div>

@ -45,15 +45,22 @@
var http = HttpClient.instance()
uri = 'api/dbe/version'
http.get(uri,(x)=>{
var _html = ('<div><span style="text-transform:lowercase; color:#4682B4;">data-transport</span> '+x.responseText+'</div>')
var _html = ('<div>Powered By <span style="text-transform:lowercase; color:#4682B4;">data-transport</span> '+x.responseText+'</div>')
$
$('.footer').html(_html)
sessionStorage.wb_powered = x.responseText
})
}
$(document).ready(function (){
$('.studio-pane').css({display:'none'})
Initialize()
$('.footer').css({'grid-template-columns':'100%','font-weight':'bold'})
})
</script>
<div class="studio-pane"></div>
<div >
<div id="studio-intro" class="studio-intro"></div>
<div class="studio-pane"></div>
</div>

@ -41,7 +41,11 @@
$('.search-results .labels').empty()
http.get(uri,function (x){
var labels = JSON.parse(x.responseText)
if (labels.length == 0){
$('.get-started').css({display:'grid'})
}else{
$('.get-started').css({display:'none'})
}
labels.forEach(_data => {
_icon = $('<img/>').attr('src',_data.icon) //'www/html/_assets/images/'+_data.provider+'.png')
@ -55,6 +59,7 @@
// $('.studio').slideUp('fast',()=>{
// })
$('.studio-pane').css({display:'grid'})
if ($(_id).length == 0){
// _object = new studio.frame(this._data)
// _object.render()
@ -64,7 +69,10 @@
}
// var _label = this._data.label
this.work_bench.show()
$('.studio-intro').slideUp(()=>{
this.work_bench.show()
})
}
$('.search-results .labels').append(_div)
@ -146,7 +154,7 @@
<p>
<div class="border" style="padding:16px;">
<div class="active" style="margin:4px;" onclick="dialog.show({uri:'www/html/wizard.html',title:'Create New Connection',context:'{{system.context}}' })">
<i class="fa-solid fa-link"></i> Create a new database connection
<i class="fa-solid fa-screwdriver-wrench"></i> Create a new database connection
</div>
<div class="active" style="margin:4px" onclick='window.open("https://dev.the-phi.com/git/data-transport")'>
@ -157,8 +165,5 @@
</div>
<br>
<b>Credits & Thanks</b>
<br><i class="fa-solid fa-minus"></i> Attributions
</p>
</div>

@ -26,20 +26,6 @@
var form = new ProviderInputForm(_provider)
form.build('.db-form-input')
// $('.db-provider').slideUp('fast',function(){
// $('.db-form').slideDown()
// _title = '.::. '+_provider
// $('.db-form-title').html(_title)
// $('.db-form-title').attr('provider',_provider)
// if (_provider.match(/sqlite|duckdb|databricks|bigquery/)){
// $('.db-form .database').attr('placeholder','Absolute to database')
// if (_provider.match(/databricks|bigquery/)){
// $('.db-form .database').attr('placeholder','Absolute to service account file')
// }
// $('.db-form .server').slideUp()
// $('.db-form .auth').slideUp()
// }
// })
})

Loading…
Cancel
Save