{"id":216,"date":"2021-01-03T12:02:47","date_gmt":"2021-01-03T12:02:47","guid":{"rendered":"https:\/\/www.unleserlich.info\/?p=216"},"modified":"2021-01-03T13:06:59","modified_gmt":"2021-01-03T13:06:59","slug":"scriptable-tutorial-teil-5-tabellen","status":"publish","type":"post","link":"https:\/\/www.unleserlich.info\/?p=216","title":{"rendered":"Scriptable Tutorial Teil 5 &#8211; Tabellen"},"content":{"rendered":"\n<p>In diesem Teil des Tutorials wollen wir in einem Widget eine ordentlich formatierte Tabelle gestalten. Dies ist nicht ganz so einfach wie bei einer Website, weil es kein klassisches Tabellenelement gibt. \u00dcber ein Stack kann jedoch eine tabellen\u00e4hnliche Struktur aufgebaut werden, welche den meisten Anspr\u00fcchen gen\u00fcgen d\u00fcrfte.<\/p>\n\n\n\n<h5>Die Klasse WidgetStack<\/h5>\n\n\n\n<p>Einem Widget k\u00f6nnen beliebig viele Stacks hinzugef\u00fcgt werden. Jeder Stack ist ein in sich geschlossener Bereich, welcher unabh\u00e4ngig von den anderen Stacks des Widgets formatiert werden kann.<\/p>\n\n\n\n<p>Um eine Tabelle abzubilden, wird zun\u00e4chst ein Stack ben\u00f6tigt, welcher dann die Daten einer Tabelle aufnehmen kann. Wie schon bei den anderen Elementen eines Widgets wird auch ein Widgetstack nicht direkt erzeugt, sondern \u00fcber den Aufruf der Methode .addStack auf dem Widget.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var stack = widget.addStack();<\/code><\/pre>\n\n\n\n<p>Mit diesem Code wird unser Widget also um ein Stack erweitert, welches unsere Tabelle aufnehmen wird. <\/p>\n\n\n\n<h5>Spaltendefinition<\/h5>\n\n\n\n<p>Ein Stack ordnet die hinzugef\u00fcgten Elemente automatisch horizontal an. \u00dcber die Methode .addText l\u00e4sst sich einem Stack Text hinzuf\u00fcgen. Rufen wir diese Methode mehrfach auf, werden so automatisch unsere Spalten erzeugt. Folgender Code w\u00fcrde also 3 Spalten erzeugen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>stack.addText(\"Column 1\");\nstack.addText(\"Column 2\");\nstack.addText(\"Column  3\");<\/code><\/pre>\n\n\n\n<p>Alternativ existiert auch die Methode .addImage,  mit welcher wir in dem Stack ein Bild darstellen k\u00f6nnten.<\/p>\n\n\n\n<p>Das frisch erzeugte Stack f\u00fcgt die drei Spalten nun direkt aneinander, es fehlt noch etwas Abstand zwischen den 3 Textelementen. Um Abstand zwischen den Elementen zu schaffen, existiert die Methode .addSpacer, unser Beispiel muss daher wie folgt angepasst werden:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>stack.addText(\"Column 1\");\n<strong>stack.addSpacer();<\/strong>\nstack.addText(\"Column 2\");\n<strong>stack.addSpacer();<\/strong>\nstack.addText(\"Column 3\");<\/code><\/pre>\n\n\n\n<p>Die Methode .addSpacer f\u00fcgt per Default einen flexiblen Abstand ein, die Breite des Spacers wird dynamisch an den verf\u00fcgbaren Platz angepasst. Alternativ kann mittels .addSpacer(length: number) auch eine feste gew\u00fcnschte Breite angegeben werden. <\/p>\n\n\n\n<p>Obiges Codebeispiel f\u00fchrt nun bereits zu einer ersten tabellen\u00e4hnlichen Struktur:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" src=\"https:\/\/www.unleserlich.info\/wp-content\/uploads\/2021\/01\/Bildschirmfoto-2021-01-03-um-12.20.25.png\" alt=\"\" class=\"wp-image-221\" width=\"308\" height=\"145\" srcset=\"https:\/\/www.unleserlich.info\/wp-content\/uploads\/2021\/01\/Bildschirmfoto-2021-01-03-um-12.20.25.png 658w, https:\/\/www.unleserlich.info\/wp-content\/uploads\/2021\/01\/Bildschirmfoto-2021-01-03-um-12.20.25-300x141.png 300w\" sizes=\"(max-width: 308px) 100vw, 308px\" \/><figcaption>Spaltenstruktur<\/figcaption><\/figure><\/div>\n\n\n\n<h5>Zeilen der Tabelle<\/h5>\n\n\n\n<p>Leider gibt es kein explizietes Row-Element, mit dem innerhalb des Stacks eine neue Zeile erzeugt werden k\u00f6nnte. Daher m\u00fcssen wir uns zur Erzeugung einer neuen Zeile mit einem einfachen Zeilenumbruch behelfen, welchen wir innerhalb eines Strings mit \\n erzeugen k\u00f6nnen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>stack.addText(\"Row 1\\nRow 2\\nRow 3\");\nstack.addSpacer();\nstack.addText(\"Row 1\\nRow 2\\nRow 3\");\nstack.addSpacer();\nstack.addText(\"Row 1\\nRow 2\\nRow 3\");\n    <\/code><\/pre>\n\n\n\n<p>Das Vorgehen zur Erzeugung einer neuen Zeile ist auf den ersten Blick etwas ungewohnt. Beispielsweise wird in einer klassischen HTML-Tabelle der Inhalt zeilenweise aufgebaut, in Scriptable haben wir hier nun einen spaltenweisen Aufbau der Tabelle. <\/p>\n\n\n\n<p>Ein kleiner Tipp an dieser Stelle: Liegen die Daten klassisch zeilenweise in einer Array-Objekt-Struktur vor, kann der Inhalt des Arrays wie folgt in den Spaltentext umgewandelt werden (Das Array data enth\u00e4lt exemplarisch ein Objekt mit dem Attribut column1):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>stack.addText(data.reduce((accumulator, currentValue) =&gt; accumulator + currentValue.column1 + \"\\n\", \"\"));<\/code><\/pre>\n\n\n\n<h5>Formatierung der Tabelle<\/h5>\n\n\n\n<p>Zur Formatierung der Tabelle bietet sich haupts\u00e4chlich die Formatierung des enthaltenen Textes an. Das Vorgehen ist hier analog dem im <a href=\"https:\/\/www.unleserlich.info\/?p=81\" data-type=\"post\" data-id=\"81\">ersten Tutorial<\/a> beschriebenen Vorgehen zur Formatierung von Text, welcher mittels widget.addText hinzugef\u00fcgt wurde. <\/p>\n\n\n\n<p>Der Aufruf von stack.addText gibt uns ein Objekt vom Typ WidgetText zur\u00fcck,  \u00fcber welchen wir den jeweiligen Text individuell formatieren k\u00f6nnen. Hierzu stehen uns 3 interessante Optionen zur Verf\u00fcgung:<\/p>\n\n\n\n<ul><li>.font: Die Zuweisung eines Font-Objekts ist m\u00f6glich, um Schriftart und Schriftgr\u00f6\u00dfe zu beinflussen<\/li><li>.textColor: Die Farbe des Textes kann definiert werden<\/li><li>.textOpacity: Der Transparenzgrad des Textes kann definiert werden<\/li><\/ul>\n\n\n\n<p>Beispielsweise k\u00f6nnte so ein fettdruck erzeugt werden:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var text=stack.addText(\"Example\");\ntext.font=Font.semiboldSystemFont(14);<\/code><\/pre>\n\n\n\n<h5>Fazit<\/h5>\n\n\n\n<p>Das Erstellen von Tabellen in einem Widget ist zwar etwas umst\u00e4ndlich, aber grunds\u00e4tzlich m\u00f6glich. Mit den oben gezeigten Methoden sollte es m\u00f6glich sein, auch komplexere Layouts zu realisieren und Daten \u00fcbersichtlich zur Anzeige zu bringen.<\/p>\n\n\n\n<p>F\u00fcr Fragen aller Art bietet sich folgende Seite an:<\/p>\n\n\n\n<p><a href=\"https:\/\/talk.automators.fm\/\">https:\/\/talk.automators.fm\/<\/a><\/p>\n\n\n\n<p>Es lassen sich auch hier hunderte Beispiele finden, die nur darauf warten, ausprobiert zu werden. Auch wird Euch hier gerne bei Problemen weitergeholfen.<\/p>\n\n\n\n<p>Sollte Euch mein kleines Scriptable Tutorial gefallen haben, w\u00fcrde ich mich \u00fcber einen kleinen Einwurf in die Kaffeekasse freuen:<\/p>\n\n\n\n<p><a href=\"https:\/\/www.paypal.com\/paypalme\/markmescher\/2,99\">https:\/\/www.paypal.com\/paypalme\/markmescher\/2,99<\/a><\/p>\n\n\n\n<p>Wie gro\u00df der Kaffee werden soll, d\u00fcrft Ihr nat\u00fcrlich frei entscheiden \ud83d\ude42<\/p>\n\n\n\n<p><a href=\"https:\/\/www.unleserlich.info\/?cat=19\" data-type=\"URL\" data-id=\"https:\/\/www.unleserlich.info\/?cat=19\">Schaut auch gerne einmal in meine anderen Scriptable Tutorials hinein!<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In diesem Teil des Tutorials wollen wir in einem Widget eine ordentlich formatierte Tabelle gestalten. Dies ist nicht ganz so einfach wie bei einer Website, weil es kein klassisches Tabellenelement gibt. \u00dcber ein Stack kann jedoch eine tabellen\u00e4hnliche Struktur aufgebaut werden, welche den meisten Anspr\u00fcchen gen\u00fcgen d\u00fcrfte. Die Klasse WidgetStack Einem Widget k\u00f6nnen beliebig viele\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.unleserlich.info\/?p=216\">Weiterlesen &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":112,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"twitterCardType":"","cardImageID":0,"cardImage":"","cardTitle":"","cardDesc":"","cardImageAlt":"","cardPlayer":"","cardPlayerWidth":0,"cardPlayerHeight":0,"cardPlayerStream":"","cardPlayerCodec":""},"categories":[16,19],"tags":[11,9,14,12,17,21,77],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.unleserlich.info\/index.php?rest_route=\/wp\/v2\/posts\/216"}],"collection":[{"href":"https:\/\/www.unleserlich.info\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unleserlich.info\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unleserlich.info\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unleserlich.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=216"}],"version-history":[{"count":7,"href":"https:\/\/www.unleserlich.info\/index.php?rest_route=\/wp\/v2\/posts\/216\/revisions"}],"predecessor-version":[{"id":242,"href":"https:\/\/www.unleserlich.info\/index.php?rest_route=\/wp\/v2\/posts\/216\/revisions\/242"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.unleserlich.info\/index.php?rest_route=\/wp\/v2\/media\/112"}],"wp:attachment":[{"href":"https:\/\/www.unleserlich.info\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unleserlich.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unleserlich.info\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}