|
69 | 69 | "metadata": {},
|
70 | 70 | "outputs": [],
|
71 | 71 | "source": [
|
72 |
| - "from idom.server import multiview_server\n", |
| 72 | + "from idom.server import multiview_server, find_available_port\n", |
73 | 73 | "from idom.server.sanic import PerClientState\n",
|
74 | 74 | "from example_utils import display_href, example_server_url, pretty_dict_string\n",
|
75 | 75 | "\n",
|
76 |
| - "host, port = \"127.0.0.1\", 8765\n", |
| 76 | + "host = \"127.0.0.1\"\n", |
| 77 | + "port = find_available_port(host)\n", |
77 | 78 | "mount, server = multiview_server(PerClientState, host, port, {\"cors\": True}, {\"access_log\": False})\n",
|
78 | 79 | "server_url = example_server_url(host, port)\n",
|
79 | 80 | "\n",
|
|
229 | 230 | " task_input = idom.html.input({\"onKeyDown\": add_new_task})\n",
|
230 | 231 | " task_list = TaskList(items)\n",
|
231 | 232 | "\n",
|
232 |
| - " return idom.html.div([task_input, task_list])\n", |
| 233 | + " return idom.html.div(task_input, task_list)\n", |
233 | 234 | "\n",
|
234 | 235 | "\n",
|
235 | 236 | "@idom.element\n",
|
|
242 | 243 | " del items[index]\n",
|
243 | 244 | " self.update(items)\n",
|
244 | 245 | "\n",
|
245 |
| - " task_text = idom.html.td([idom.html.p([text])])\n", |
246 |
| - " delete_button = idom.html.td({\"onClick\": remove}, [idom.html.button([\"x\"])])\n", |
247 |
| - " tasks.append(idom.html.tr([task_text, delete_button]))\n", |
| 246 | + " task_text = idom.html.td(idom.html.p(text))\n", |
| 247 | + " delete_button = idom.html.td({\"onClick\": remove}, idom.html.button(\"x\"))\n", |
| 248 | + " tasks.append(idom.html.tr(task_text, delete_button))\n", |
248 | 249 | "\n",
|
249 | 250 | " return idom.html.table(tasks)\n",
|
250 | 251 | "\n",
|
|
327 | 328 | " diff = random.gauss(float(mu_var.get()), float(sigma_var.get()))\n",
|
328 | 329 | " y.append(y[-1] + diff)\n",
|
329 | 330 | " plot.update(x, y)\n",
|
330 |
| - " \n", |
331 |
| - " style = idom.html.style([\"\"\"\n", |
332 |
| - " .linked-inputs {margin-bottom: 20px}\n", |
333 |
| - " .linked-inputs input {width: 48%;float: left}\n", |
334 |
| - " .linked-inputs input + input {margin-left: 4%}\n", |
335 |
| - " \"\"\"])\n", |
336 | 331 | "\n",
|
337 |
| - " return idom.html.div({\"style\": {\"width\": \"60%\"}}, [style, plot, mu_inputs, sigma_inputs])\n", |
| 332 | + " style = idom.html.style(\n", |
| 333 | + " \"\"\"\n", |
| 334 | + " .linked-inputs {margin-bottom: 20px}\n", |
| 335 | + " .linked-inputs input {width: 48%;float: left}\n", |
| 336 | + " .linked-inputs input + input {margin-left: 4%}\n", |
| 337 | + " \"\"\"\n", |
| 338 | + " )\n", |
| 339 | + "\n", |
| 340 | + " return idom.html.div(\n", |
| 341 | + " {\"style\": {\"width\": \"60%\"}}, style, plot, mu_inputs, sigma_inputs\n", |
| 342 | + " )\n", |
338 | 343 | "\n",
|
339 | 344 | "\n",
|
340 | 345 | "@idom.element(run_in_executor=True)\n",
|
|
362 | 367 | "\n",
|
363 | 368 | " inputs.append(inp)\n",
|
364 | 369 | "\n",
|
365 |
| - " fs = idom.html.fieldset({\"class\": \"linked-inputs\"}, [idom.html.legend(label)], inputs)\n", |
| 370 | + " fs = idom.html.fieldset({\"class\": \"linked-inputs\"}, idom.html.legend(label), inputs)\n", |
366 | 371 | "\n",
|
367 | 372 | " return var, fs\n",
|
368 | 373 | "\n",
|
|
404 | 409 | "source": [
|
405 | 410 | "@idom.element\n",
|
406 | 411 | "async def DragDropBoxes(self):\n",
|
407 |
| - " last_owner =idom.Var(None)\n", |
| 412 | + " last_owner = idom.Var(None)\n", |
408 | 413 | " last_hover = idom.Var(None)\n",
|
409 | 414 | "\n",
|
410 | 415 | " h1 = Holder(\"filled\", last_owner, last_hover)\n",
|
|
413 | 418 | "\n",
|
414 | 419 | " last_owner.set(h1)\n",
|
415 | 420 | "\n",
|
416 |
| - " style = idom.html.style([\"\"\"\n", |
417 |
| - " .holder {\n", |
418 |
| - " height: 150px;\n", |
419 |
| - " width: 150px;\n", |
420 |
| - " margin: 20px;\n", |
421 |
| - " display: inline-block;\n", |
422 |
| - " }\n", |
423 |
| - " .holder-filled {\n", |
424 |
| - " border: solid 10px black;\n", |
425 |
| - " background-color: black;\n", |
426 |
| - " }\n", |
427 |
| - " .holder-hover {\n", |
428 |
| - " border: dotted 5px black;\n", |
429 |
| - " }\n", |
430 |
| - " .holder-empty {\n", |
431 |
| - " border: solid 5px black;\n", |
432 |
| - " background-color: white;\n", |
433 |
| - " }\n", |
434 |
| - " \"\"\"])\n", |
435 |
| - "\n", |
436 |
| - " return idom.html.div([style, h1, h2, h3])\n", |
| 421 | + " style = idom.html.style(\n", |
| 422 | + " \"\"\"\n", |
| 423 | + " .holder {\n", |
| 424 | + " height: 150px;\n", |
| 425 | + " width: 150px;\n", |
| 426 | + " margin: 20px;\n", |
| 427 | + " display: inline-block;\n", |
| 428 | + " }\n", |
| 429 | + " .holder-filled {\n", |
| 430 | + " border: solid 10px black;\n", |
| 431 | + " background-color: black;\n", |
| 432 | + " }\n", |
| 433 | + " .holder-hover {\n", |
| 434 | + " border: dotted 5px black;\n", |
| 435 | + " }\n", |
| 436 | + " .holder-empty {\n", |
| 437 | + " border: solid 5px black;\n", |
| 438 | + " background-color: white;\n", |
| 439 | + " }\n", |
| 440 | + " \"\"\"\n", |
| 441 | + " )\n", |
| 442 | + "\n", |
| 443 | + " return idom.html.div(style, h1, h2, h3)\n", |
437 | 444 | "\n",
|
438 | 445 | "\n",
|
439 | 446 | "@idom.element(state=\"last_owner, last_hover\")\n",
|
440 | 447 | "async def Holder(self, kind, last_owner, last_hover):\n",
|
441 |
| - "\n", |
442 | 448 | " @idom.event(prevent_default=True, stop_propagation=True)\n",
|
443 | 449 | " async def hover(event):\n",
|
444 | 450 | " if kind != \"hover\":\n",
|
445 | 451 | " self.update(\"hover\")\n",
|
446 | 452 | " old = last_hover.set(self)\n",
|
447 | 453 | " if old is not None and old is not self:\n",
|
448 | 454 | " old.update(\"empty\")\n",
|
449 |
| - " \n", |
| 455 | + "\n", |
450 | 456 | " async def start(event):\n",
|
451 | 457 | " last_hover.set(self)\n",
|
452 | 458 | " self.update(\"hover\")\n",
|
453 |
| - " \n", |
| 459 | + "\n", |
454 | 460 | " async def end(event):\n",
|
455 | 461 | " last_owner.get().update(\"filled\")\n",
|
456 | 462 | "\n",
|
|
463 | 469 | " old.update(\"empty\")\n",
|
464 | 470 | " self.update(\"filled\")\n",
|
465 | 471 | "\n",
|
466 |
| - " return idom.html.div({\n", |
467 |
| - " \"draggable\": (kind == \"filled\"),\n", |
468 |
| - " \"onDragStart\": start,\n", |
469 |
| - " \"onDragOver\": hover,\n", |
470 |
| - " \"onDragEnd\": end,\n", |
471 |
| - " \"onDragLeave\": leave,\n", |
472 |
| - " \"onDrop\": dropped,\n", |
473 |
| - " \"class\": f\"holder-{kind} holder\",\n", |
474 |
| - " })\n", |
| 472 | + " return idom.html.div(\n", |
| 473 | + " {\n", |
| 474 | + " \"draggable\": (kind == \"filled\"),\n", |
| 475 | + " \"onDragStart\": start,\n", |
| 476 | + " \"onDragOver\": hover,\n", |
| 477 | + " \"onDragEnd\": end,\n", |
| 478 | + " \"onDragLeave\": leave,\n", |
| 479 | + " \"onDrop\": dropped,\n", |
| 480 | + " \"class\": f\"holder-{kind} holder\",\n", |
| 481 | + " }\n", |
| 482 | + " )\n", |
475 | 483 | "\n",
|
476 | 484 | "\n",
|
477 | 485 | "print(\"Click and drag the black box onto the white one! 👆\")\n",
|
|
628 | 636 | " \n",
|
629 | 637 | " )\n",
|
630 | 638 | "\n",
|
631 |
| - "\n", |
| 639 | + "first_view_mounted\n", |
632 | 640 | "@idom.element(state=\"block_size\")\n",
|
633 | 641 | "async def Block(self, color, block_size):\n",
|
634 | 642 | " return idom.html.div(\n",
|
|
776 | 784 | "from idom.server.sanic import SharedClientState\n",
|
777 | 785 | "from example_utils import display_href, example_server_url, pretty_dict_string\n",
|
778 | 786 | "\n",
|
779 |
| - "shared_server_url = example_server_url(\"127.0.0.1\", 5678)\n", |
| 787 | + "host = \"127.0.0.1\"\n", |
| 788 | + "port = find_available_port(host)\n", |
| 789 | + "shared_server_url = example_server_url(host, port)\n", |
780 | 790 | "mount_shared, shared_server = hotswap_server(\n",
|
781 |
| - " SharedClientState, \"127.0.0.1\", 5678, {\"cors\": True}, {\"access_log\": False}\n", |
| 791 | + " SharedClientState, host, port, {\"cors\": True}, {\"access_log\": False}\n", |
782 | 792 | ")\n",
|
783 | 793 | "\n",
|
784 | 794 | "def display_shared(element, *args, **kwargs):\n",
|
|
0 commit comments