|
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