fix load/moto, add default broker for gapp/moto. gut broken meta app

This commit is contained in:
Stewart Allen 2021-12-27 20:39:07 -05:00
commit b471713917
9 changed files with 35 additions and 3060 deletions

32
app.js
View file

@ -399,36 +399,13 @@ const script = {
"kiri/frame"
],
meta : [
"ext/three",
"main/meta",
"moto/license",
"ext/tween",
"ext/fsave",
"ext/earcut",
"add/array",
"add/three",
"geo/base",
// "geo/render",
"geo/point",
"geo/slope",
"geo/line",
"geo/bounds",
"geo/polygon",
"geo/polygons",
"geo/gyroid",
"moto/kv",
"moto/ajax",
"moto/ctrl",
"moto/space",
"load/obj",
"load/stl",
"moto/idb",
"moto/ui",
"kiri/catalog",
"main/meta"
],
mesh : [
"moto/client",
"moto/license",
"moto/broker",
"ext/three",
"ext/three-bgu",
"ext/three-svg",
@ -444,7 +421,6 @@ const script = {
"load/svg",
"load/url",
"load/file",
"moto/broker",
"moto/idb",
"main/mesh-ui"
],
@ -521,7 +497,7 @@ function handleSetup(req, res, next) {
function handleVersion(req, res, next) {
let vstr = oversion || version;
if (["/kiri/","/mesh/"].indexOf(req.app.path) >= 0 && req.url.indexOf(vstr) < 0) {
if (["/kiri/","/mesh/","/meta/"].indexOf(req.app.path) >= 0 && req.url.indexOf(vstr) < 0) {
if (req.url.indexOf("?") > 0) {
return http.redirect(res, `${req.url},ver:${vstr}`);
} else {
@ -852,7 +828,7 @@ function cookieValue(cookie,key) {
}
function rewriteHtmlVersion(req, res, next) {
if (["/kiri/","/mesh/"].indexOf(req.app.path) >= 0) {
if (["/kiri/","/mesh/","/meta/"].indexOf(req.app.path) >= 0) {
let real_write = res.write;
let real_end = res.end;
res.write = function() {

View file

@ -33,7 +33,7 @@ class Engine {
load(url) {
return new Promise((accept, reject) => {
try {
new moto.STL().load(url, vertices => {
new load.STL().load(url, vertices => {
this.listener({loaded: url, vertices});
this.widget.loadVertices(vertices).center();
accept(this);
@ -47,7 +47,7 @@ class Engine {
parse(data) {
return new Promise((accept, reject) => {
try {
let vertices = new moto.STL().parse(data);
let vertices = new load.STL().parse(data);
this.listener({parsed: data, vertices});
this.widget.loadVertices(vertices).center();
accept(this);

View file

@ -17,7 +17,7 @@
SETUP = parseOpt(LOC.search.substring(1)),
SECURE = isSecure(LOC.protocol),
LOCAL = self.debug && !SETUP.remote,
EVENT = KIRI.broker = new Broker(),
EVENT = KIRI.broker,
SDB = MOTO.KV,
ODB = KIRI.odb = new MOTO.Storage(SETUP.d ? SETUP.d[0] : 'kiri'),
// K3DB = KIRI.wdb = new MOTO.Storage('kiri3', { stores:["file","work"] }).init(),
@ -522,7 +522,7 @@
break;
}
if (data.parse) {
new moto.STL().parse(data.parse, vertices => {
new load.STL().parse(data.parse, vertices => {
let widget = newWidget().loadVertices(vertices);
platform.add(widget);
});

File diff suppressed because it is too large Load diff

View file

@ -72,3 +72,9 @@ class Broker {
}
}
}
// establish default broker when GridApp container present
let gapp = self.gapp;
if (gapp && !gapp.broker) {
gapp.broker = new Broker();
}

View file

@ -5,7 +5,7 @@
(function() {
let gapp = self.gapp = self.gapp || {},
moto = self.moto = self.moto || {},
moto = self.moto = self.moto || gapp,
ccvalue = self.navigator ? navigator.hardwareConcurrency || 1 : 1,
ccmax = ccvalue > 3 ? ccvalue - 1 : 0,
workcc = false, // concurrent or not

View file

@ -5,7 +5,7 @@
(function() {
let gapp = self.gapp = self.gapp || {},
moto = self.moto = self.moto || {},
moto = self.moto = self.moto || gapp,
time = Date.now;
if (moto.worker) return;
@ -44,7 +44,10 @@ const dispatch = moto.worker = {
}
},
error: (data) => {
dispatch.send({ error: data });
if (canSend(data)) {
done = true;
dispatch.send({ error: data });
}
}
},
canSend = (data) => {

View file

@ -1,7 +1,3 @@
/** ******************************************************************
* Element
******************************************************************* */
a, a:hover, a:visited {
border: none;
outline: none;
@ -12,646 +8,9 @@ body {
overflow: hidden;
}
body,div {
margin: 0px;
padding: 0px;
border: 0px;
margin: 0;
padding: 0;
border: 0;
font-weight: normal;
font-family: sans-serif;
}
label {
font-size: 14px;
margin-right: 2px;
}
canvas {
width: 100%;
height: 100%;
overflow: hidden;
}
button {
outline: none;
max-width: 25ex;
border: 1px solid #ccc;
border-radius: 3px;
background-color: #eee;
padding: 2px 7px 3px 7px;
margin-bottom: 2px !important;
}
button:hover {
background-color: #aaa;
color: black;
}
button[load] {
width: 100%;
text-align: left;
}
button[del] {
margin-left: 5px;
}
select {
outline: none;
}
th, tr, td, span, div, label, button {
user-select: none;
}
/** ******************************************************************
* Class
******************************************************************* */
.noselect {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.title {
text-align:center;
border-radius: 4px;
border-bottom: 2px;
color: #222;
padding: 4px 5px 3px 5px;
margin-bottom: 2px;
background-color: rgba(170,221,255,0.75);
border: 1px solid rgba(255,255,255,0.5);
font-size: 12pt !important;
font-weight: bold !important;
}
.tablerow {
-webkit-flex-direction: row;
-webkit-justify-content: center;
-webkit-align-items: center;
display: -webkit-flex;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.tablerow button {
-webkit-flex-basis: auto;
-webkit-flex-grow: 1;
flex-grow: 1;
flex-basis: auto;
width: 33.33%;
}
.grouphead:first-of-type {
margin-top: 0;
}
.dark .grouphead {
background-color: rgba(100,120,150,0.75);
border: 1px solid #555;
color: #eee;
font-weight: normal;
}
.grouphead {
color: black;
background-color: rgba(170,221,255,0.7);
border: 1px solid #ccc;
border-radius: 3px;
margin-top: 5px;
margin-bottom: 3px;
padding: 3px 2px 2px 3px;
font-size: 12px;
font-weight: bold;
text-align: center;
position: relative;
}
.grouphead > a {
text-transform: uppercase;
}
.grouphead:hover {
cursor: default;
}
.ck_catalog {
padding-top: 2px;
}
.ck_catalog div {
-webkit-flex-direction: row;
-webkit-justify-content: center;
-webkit-align-items: center;
display: -webkit-flex;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
margin-bottom: 1px;
}
.ck_catalog button {
margin: 0px 0px 1px 2px !important;
}
.buton {
font-weight: bold;
background-color: #bbb;
}
.flow-row {
position: relative;
-webkit-flex-direction: row;
-webkit-justify-content: flex-end;
display: -webkit-flex;
display: flex;
flex-direction: row;
justify-content: flex-end;
}
.flow-row label {
-webkit-flex-basis: auto;
-webkit-flex-grow: 1;
flex-basis: auto;
flex-grow: 1;
}
.flow-col {
position: relative;
-webkit-flex-direction: column;
-webkit-justify-content: flex-start;
display: -webkit-flex;
display: flex;
flex-direction: column;
justify-content: flex-start;
}
.flow-left {
-webkit-justify-content: flex-start;
justify-content: flex-start;
}
.flow-grow {
-webkit-flex-grow: 1;
flex-grow: 1
}
.flow-space-between {
-webkit-justify-content: space-between;
justify-content: space-between;
}
:-moz-any(#control-left) {
overflow-x: hidden !important;
overflow-y: hidden !important;
}
:-moz-any(#control-right) {
overflow-x: scroll !important;
overflow-y: scroll !important;
margin-right: -14px !important;
margin-bottom: -14px !important;
}
.dark .control {
border: 0 !important;
background-color: rgba(255,255,255,0.5);
}
.dark .control button {
border: 1px solid rgba(128,128,128,0.5);
}
.control {
background-color: rgba(255,255,255,0.75);
}
.control label {
padding: 2px;
}
.control input {
background-color: #eee;
margin-bottom: 1px;
text-align: right;
border: 1px solid #bbb;
}
.control input:focus {
background-color: #fec;
outline: none;
}
.control input[disabled] {
background-color: #ccc;
color: #000;
border-width: 1px;
}
.control input[type="range"] {
width: 85px;
background-color: transparent;
}
.control select {
border: 1px solid #bbb;
background-color: #eee;
margin-bottom: 1px !important;
border-radius: 3px;
}
.control button {
margin: 1px;
}
.control .flow-row {
align-items: center;
justify-content: center;
}
/** ******************************************************************
* ID
******************************************************************* */
.dark #appid span {
border-color: #555;
background-color: rgba(100,120,150,0.75);
color: #eee;
}
.dark #appid a {
color: #eee;
}
.dark #appid a:hover {
color: #eee;
}
.dark #appid span:hover {
background-color: rgba(80,100,230,0.75);
}
.dark #langpop {
color: black;
}
#appid {
text-align: center;
position: fixed;
width: 100%;
top: 3px;
}
#appid span {
border: 1px solid #ccc;
border-radius: 5px;
padding: 5px 8px 3px 8px;
background-color: rgba(170,221,255,0.75);
color: rgba(0,0,0,0.5);
}
#appid span:hover {
background-color: rgba(170,221,255,0.5);
}
#appid a {
color: rgba(0,0,0,0.75);
font-weight: bold;
}
#appid a:hover {
color: rgba(0,50,50,0.75);
}
#apphelp {
margin-left: 5px;
font-weight: bold;
}
#applang {
position: relative;
margin-right: 5px;
font-weight: bold;
}
#langpop {
display: none;
position: absolute;
white-space: nowrap;
top: 105%;
left: 0;
border-radius: 5px;
border: 1px solid #ddd;
background-color: rgba(255,255,255,0.75);
padding: 5px;
}
#langpop > div {
padding: 5px;
}
#langpop > div:hover {
background-color: rgba(255,128,128,0.5);
border-radius: 5px;
}
#applang:hover #langpop {
display: block;
}
#container {
width: 100%;
height: 100%;
}
#control > div:hover label {
text-decoration: underline;
text-decoration-color: #aaa;
}
#control-left {
display: none;
position: fixed;
z-index: 10000;
color: black;
top: 5px;
left: 0px;
padding: 5px;
border-top: 2px solid #ddd;
border-right: 2px solid #ddd;
border-bottom: 2px solid #ddd;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
overflow-x: visible;
overflow-y: scroll;
}
#control-right {
display: none;
position: fixed;
z-index: 10000;
top: 5px;
right: 0px;
bottom: 5px;
padding: 5px;
border-top: 2px solid #ddd;
border-left: 2px solid #ddd;
border-bottom: 2px solid #ddd;
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
color: #222;
overflow-y: scroll;
overflow-x: visible;
}
.dark .compact .grouphead {
background-color: rgba(100,120,150,0.75);
border: 1px solid #555;
color: #eee;
}
.dark .compact .grouphead:hover {
background-color: rgba(80,100,230,0.75);
}
.dark .compact.control {
background-color: rgba(128,128,128,0.2) !important;
}
.compact {
overflow: visible !important;
bottom: auto !important;
border: 0 !important;
background-color: rgba(255,255,255,0.5) !important;
}
.compact .grouphead {
padding: 10px 5px 10px 5px !important;
background-color: rgba(170,221,255,0.25);
}
.compact .grouphead:hover {
background-color: rgba(170,221,255,0.9);
}
.compact .grouphead a {
font-size: larger !important;
margin: 5px !important;
}
.compact .flow-row label {
font-size: 18px !important;
}
.compact .flow-row input {
font-size: 18px !important;
}
.compact .flow-row select {
font-size: 18px !important;
}
.compact .flow-row {
margin: 3px 0 3px 0;
}
.compact .asym {
width: auto !important;
}
.compact button {
font-size: larger !important;
padding: 5px 10px 5px 10px;
}
:-moz-any(#control-left.compact) {
overflow-x: display !important;
overflow-y: display !important;
}
:-moz-any(#control-right.compact) {
overflow-x: display !important;
overflow-y: display !important;
margin-right: auto !important;
margin-bottom: auto !important;
}
#control-left::-webkit-scrollbar, #control-right::-webkit-scrollbar {
display: none;
}
.dark #control-left:hover, .dark #control-right:hover {
background-color: rgba(255,255,255,0.6);
}
#control-left:hover, #control-right:hover {
background-color: #ffffff;
}
#loading {
position: fixed;
top: 5px;
left: 20%;
right: 20%;
border: 1px solid white;
margin: 2px;
background-color: #ddd;
text-align: center;
display: none;
}
#modal {
display: none;
position: fixed;
z-index: 20000;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
background-color: rgba(0,0,0,0);
}
#progress {
position: relative;
width: 1%;
height: 100%;
background-color: #f00;
}
#welcome {
color: white;
padding: 10px;
border: 10px solid white;
background-color: rgba(20,20,20,0.75);
position: fixed;
top: 50px;
left: 0;
right: 0;
bottom: 100px;
margin: 0 auto;
width: 50%;
max-width: 800px;
min-width: 500px;
display: block;
unicode-bidi: embed;
font-family: monospace;
white-space: pre;
overflow-y: scroll
}
.ck_space button {
margin: 2px 0px 1px 2px !important;
}
.ck_spaces {
padding-top: 2px;
}
.ck_spaces div {
-webkit-flex-direction: row;
-webkit-justify-content: flex-start;
-webkit-align-items: center;
display: -webkit-flex;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
margin-bottom: 1px;
}
.ck_spaces button {
margin: 0px 0px 1px 2px !important;
}
.ck_library {
padding-top: 2px;
}
.ck_library div {
-webkit-flex-direction: row;
-webkit-justify-content: flex-start;
-webkit-align-items: center;
display: -webkit-flex;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
margin-bottom: 1px;
}
.ck_library button {
margin: 0px 0px 1px 2px !important;
}
button.load {
-webkit-flex-basis: 1px;
-webkit-flex-grow: 1;
flex-basis: 1px;
flex-grow: 1;
text-align: left;
}
button.del {
}
#dropbutton {
width: 100%;
height: 50px;
background-color: #ccc;
border-width: 1px;
}
.compact {
overflow: visible !important;
bottom: auto !important;
border: 0 !important;
background-color: rgba(255,255,255,0.5) !important;
}
.compact .grouphead {
padding: 10px 5px 10px 5px !important;
background-color: rgba(170,221,255,0.25);
}
.compact .grouphead:hover {
background-color: rgba(170,221,255,0.9);
}
.compact .grouphead a {
font-size: larger !important;
margin: 5px !important;
}
.compact .flow-row label {
font-size: 18px !important;
}
.compact .flow-row input {
font-size: 18px !important;
}
.compact .flow-row select {
font-size: 18px !important;
}
.compact .flow-row {
margin: 3px 0 3px 0;
}
.compact .asym {
width: auto !important;
}
.compact button {
font-size: larger !important;
padding: 5px 10px 5px 10px;
}
:-moz-any(#control-left.compact) {
overflow-x: display !important;
overflow-y: display !important;
}
:-moz-any(#control-right.compact) {
overflow-x: display !important;
overflow-y: display !important;
margin-right: auto !important;
margin-bottom: auto !important;
}
.compact .sel-span .value {
font-size: 16px;
color: #444466 !important;
}
.compact .sel-span label {
font-size: 20px;
}
.compact .sel-span input {
font-size: 18px;
margin: 4px;
}
.popper {
position: absolute;
top: 0;
z-index: 50000;
background-color: white;
border: 1px solid #aaa;
border-radius: 3px;
padding: 5px;
white-space: nowrap;
text-align: left;
}
.popper.left {
left: 105%;
}
.popper.right {
right: 105%;
}
.popper svg {
width: 40px;
height: 40px;
}
.poprow > div {
display: flex;
flex-direction: row;
}
.poptext {
display: none;
position: absolute;
margin-left: 30px;
border: 3px solid #ddd;
border-radius: 3px;
transform: translate(0, -25%);
flex-direction: column;
align-items: stretch;
z-Index: 10000;
}
.poptext label {
text-align: center !important;
border-top: 1px solid #888;
border-left: 1px solid #888;
border-right: 1px solid #888;
background-color: rgba(170,221,255,0.75);
padding: 3px 0 3px 0;
margin: 0;
color: black;
}
.poptext textarea {
flex-grow: 1;
margin: 0;
opacity: 0.95;
outline: none;
overflow-y: scroll !important;
}
.sel-span {
position: relative;
display: inline-block;
}
.sel-pop {
display: none;
position: absolute;
bottom: 100%;
left: 0;
padding-bottom: 5px;
}
.sel-pop div, .sel-pop table {
background-color: white;
border: 1px solid #ddd;
border-radius: 5px;
padding: 5px;
}
.sel-span:hover .sel-pop {
display: block;
}
}

View file

@ -2,7 +2,7 @@
<html>
<head lang="en">
<meta charset="UTF-8">
<meta name="copyright" content="stewart allen [stewart@neuron.com]">
<meta name="copyright" content="stewart allen [sa@grid.space]">
<meta name="description" content="3d block modeler">
<meta name="keywords" content="gridspace,meta,metamoto,3d,block,builder,modeler,modeling">
<meta name="author" content="Stewart Allen">
@ -10,16 +10,10 @@
<link rel="icon" href="/meta/favicon.ico">
<link rel="apple-touch-icon" href="/meta/favicon-mobile.png">
<link rel="stylesheet" type="text/css" href="/meta/index.css">
<script>module={};kiri={};</script>
<link href="/font/css/all.min.css" rel="stylesheet">
<script src="/font/js/all.min.js" crossorigin="anonymous"></script>
<script src="/code/meta.js"></script>
</head>
<body>
<!-- app title home page links -->
<div id="appid"><span><a href="/" id="appname" target="home">Meta:Moto Modeler</a></span></div>
<!-- left control menu -->
<div id="control-left" class="control compact"><div id="assets"></div></div>
<!-- right control menu -->
<div id="control-right" class="control compact"><div id="control"></div></div>
<div id="container"></div>
</body>
</html>
</html>