User Tools

Site Tools

Translations of this page?:

en:tutorial:tutorial01

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

<WRAP center round tip 60%> **Troubleshooting** - During the course of this tutorial, it could happen that your template modifications are not updated. First, check your Json code with a tool like [[http://jsonlint.com/|Json Validator]]. Maybe a special character is missing ? This tool will help you find it. It could also be that something is not working good in the software. Remember that it's still in a beta version. Create a [[https://github.com/Gulix/geckos/issues/new|new Issue]] and describe your problem, with the name & verison of your browser, the content of your Javascript console (if you know how to get it), and the code of your template. </WRAP> <WRAP center round important 60%> **Out of date** - Since the release of the beta version of Geckos, some elements of this tutorial are now obsolete. A new version is on its way. </WRAP> ====== Tutorial - A simple template from scratch ====== Welcome to this first tutorial for Geckos, which will explain, step by step, how to create a simple template. The card that we'll create through this process is a card for the Blood Bowl Starplayers. You can then have your own Star Players cards, or have the classic ones with your minis photos on it. {{:tutorial:01_nobbla_original.jpg?500|Nobbla, Classic Chainsaw Player}} ===== A Blank Template ===== Let's start with a "blank" template. We need a simple text file, that will be filled with a json object. Just call it ''myTemplate.json'', and open it (with atom.io, notepad++ or another text editor of your choice). We'll start with the required fields. We need to set a ''styles'' array, that will contain our ''style'' object, with required properties. Our first field will be the one we'll use to store/set the name of our Star Players : <code javascript template-skeleton.json> { "styles": [ { "fields": [ { "name": "name", "label": "Name", "default": "Nobbla " } ], "canvasFields": [ ], "canvasBackground": "#FF0000", "canvasWidth": 536, "canvasHeight": 750 } ] } </code> So, this is our starting point. Let's put that template in the Geckos. Open up the [[http://gulix.github.io/geckos|demo page]], display the **Template** pane, and paste the above code in the template area. Click the button with the cogs (//Apply template to cards//)to validate the changes. {{:en:tutorial:01_ui01.png?200|}} Go back to the **Card** pane, the existing card should be selected. It's been updated but its old name (//Captain Wolf//) has been kept. It's because the default template and the one you created share the same field : ''name''. The existing card has been updated to your new template, but the data has stayed the same. //Create// a new card by clicking on the plus button. Nobbla is now in the list ! It's the default value we set in the field ''name'' for our template. If you set another value to this ''default'' property, any new card you'll add will have that new name. {{:en:tutorial:01_ui02.png?200|}} ===== A Background and a Name ===== Right now, our card is a big red rectangle. That's because our ''canvasFields'' section is empty. Using FabricJS (and its [[http://fabricjs.com/kitchensink|kitchensink]]), we could build the items of the card : stars, boxes, ... But that will be for another card and another tutorial. Instead, I've got a card background set in a png file. We'll set it as background for our card. Here's [[http://tof.canardpc.com/view/2346e727-216f-4841-bff4-8041db9d94e2.jpg|the image file]] we'll use. As the file is hosted on a web server, we could use its url to use it, and get this image field to add to the canvas (the canvas is where the card is drawn) : <code javascript> "canvasFields": [ { "type": "image", "width": 536, "height":750, "src": "http://tof.canardpc.com/view/2346e727-216f-4841-bff4-8041db9d94e2.jpg" } ], </code> That'll work, but what if the webserver is down ? Or if the image on the server is deleted ? Then, our template becomes useless. And that's not good. But there is a way to //embed// images into template. It's called [[https://en.wikipedia.org/wiki/Data_URI_scheme|DataUrl]]. The goal here is to //translate// a file into a string, that the browser will be able to //untranslate//, getting back the original file. To achieve this, you can use the [[http://dataurl.net/#dataurlmaker|DataUrl Maker]] and drop your file on it to get your DataUrl. The string you'll get will replace the url of the file. It will increase the size of your template greatly, but your template will be self-contained : <code javascript> "canvasFields": [ { "type": "image", "width": 536, "height":750, "src": "data:image/png;base64,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" } ], </code> Paste this new code section in place of the old ''canvasFields'' section. Then press the **Set** button, and watch your card being updated. We now have the background of our card, but we want to be able to edit it. We already have an [[..:template:styles#editable_fields|editable field]] with the ''name'' variable. We'll work with it. As this is an [[..:template:input-text|Input Text Field]], it generates a variable with the name ''$name''. Let's add a **textbox** element to the card, between the top stars. Why not a **text** element ? Because the textbox element will allow us more flexibility, with the alignment and the wrapping. Add this code to the ''canvasFields'' section, separated from the background image definition with a comma. <code javascript> { "type": "textbox", "text": "$name", "left": 91, "top": 11, "width": 351, "textAlign": "center" } </code> As you can see, it's pretty simple : we add a ''textbox'', at the position ''{91, 11}'', with a width of 351 pixels, and a text-alignment centered. This render our card name correctly thanks to the variable **$name**, who gets the value set in the corresponding field. But the text is poorly rendered. The [[http://fabricjs.com/docs/fabric.Textbox.html|FabricJS documentation]] lists many properties for the textbox item. <code javascript> { "type": "textbox", "text": "$name", "left": 91, "top": 11, "width": 351, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700 } </code> We've just added three properties : * **fill** sets the color of the text. It accepts any color in the form of a RGB hexadecimal value. * **fontFamily** indicates which font will be used. It looks on the user font, so make sure it's a common font (or [[..:template:custom-fonts|use a Custom Font]]). * **fontWeight** can accept numeric values (400, 600, 800, ...) or text values ("bold", "normal", ...). It defines the boldness of the text. We've not added a property to set the **fontSize**. It exists, and is set by default to 40 (see [[http://fabricjs.com/docs/fabric.Textbox.html#fontSize|FabricJS doc]]), and this size is well suited for our needs. But let's set it to 38 to see it in effect. Our whole ''canvasFields'' section now looks like this (I've reduced the DataUrl for the code to be easier to read, consider to restore it if you're testing it) : <code javascript> "canvasFields": [ { "type": "image", "width": 536, "height":750, "src": ""data:image/png;base64,iVB...." }, { "type": "textbox", "text": "$name", "left": 91, "top": 11, "width": 351, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 38 } ], </code> Our card now displays the name of our Star Player ! If you change it in the left editable field, it changes as well on the card image (as soon as you leave the field). Great ! Let's add some more fields ! {{:tutorial:01_ui_preview.jpg|What it should look like}} ===== Some selection to make ===== Before considering adding some more **editable fields** to our template, let's complete the card. The different boxes which will contain the editable values have no text to describe them. We will add them by adding some **textbox** elements to the ''canvasFields'' section. Those elements will not be linked to a variable, and we could have set them on the background image. But what if we want to make our template accessible to other languages ? We'll just have to change the value of those fields instead of having to edit the image, and get the new //dataurl// for the background image. So, **textbox** elements it is ! <code javascript> { "type": "textbox", "text": "$name", "left": 91, "top": 11, "width": 351, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 38 }, { "type": "textbox", "text": "MOVEMENT", "left": 386, "top": 126, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 }, { "type": "textbox", "text": "STRENGTH", "left": 386, "top": 218, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 }, { "type": "textbox", "text": "AGILITY", "left": 386, "top": 310, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 }, { "type": "textbox", "text": "ARMOUR", "left": 386, "top": 402, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 }, { "type": "textbox", "text": "TEAMS", "left": 386, "top": 494, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 }, { "type": "textbox", "text": "SKILLS", "left": 18, "top": 494, "width": 347, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 } ], </code> I've repeated the **$name** field to show you what part of the template I've modified. Don't repeat it. To know where to put those new fields, open up your background image in an image editor, like [[http://www.getpaint.net/index.html|Paint.NET]], and select the area where you want to put your field. The coordinates of your selection are usually shown on the bottom info bar. No height is set for the TextBoxes, as they auto-adjust their height, depending on how much text they got. Now, let's think of our 4 fields for the player's attributes : Movement, Strength, Agility & Armour. We could use a **text input** field, but the user could then put an Agility value of "XX", which is meaningless. We'll opt instead for a [[..:template:choice-input|dropdown menu]], with only the existing and accepted values proposed. First, we'll go back to the ''fields'' section of the template. We'll add four **options fields**. For each, we define the options that the user will be able to select. Each option has a value and a text. The text is (for now) only used as a way to display the options. <code javascript> "fields": [ { "name": "name", "label": "Name", "default": "Nobbla" }, { "type": "options", "name": "movement", "label": "Movement", "default": "6", "options": [ { "option" : "1", "text": "1" }, { "option" : "2", "text": "2" }, { "option" : "3", "text": "3" }, { "option" : "4", "text": "4" }, { "option" : "5", "text": "5" }, { "option" : "6", "text": "6" }, { "option" : "7", "text": "7" }, { "option" : "8", "text": "8" }, { "option" : "9", "text": "9" }, { "option" : "10", "text": "10" } ] }, { "type": "options", "name": "strength", "label": "Strength", "default": "3", "options": [ { "option" : "1", "text": "1" }, { "option" : "2", "text": "2" }, { "option" : "3", "text": "3" }, { "option" : "4", "text": "4" }, { "option" : "5", "text": "5" }, { "option" : "6", "text": "6" }, { "option" : "7", "text": "7" } ] }, { "type": "options", "name": "agility", "label": "Agility", "default": "3", "options": [ { "option" : "1", "text": "1" }, { "option" : "2", "text": "2" }, { "option" : "3", "text": "3" }, { "option" : "4", "text": "4" }, { "option" : "5", "text": "5" } ] }, { "type": "options", "name": "armour", "label": "Armour", "default": "8", "options": [ { "option" : "5", "text": "5" }, { "option" : "6", "text": "6" }, { "option" : "7", "text": "7" }, { "option" : "8", "text": "8" }, { "option" : "9", "text": "9" }, { "option" : "10", "text": "10" } ] } ], </code> Edit your template code, and click the **Set** button. Under the previous **Name** field, 4 new fields appears : that's our **options** fields ! {{:tutorial:01_new_fields.jpg|Our new fields}} Now, like we did previously, we'll add four new **Textboxes** in our ''canvasFields'' section. Those elements will have a **text** property set with the variables that are generated by our options. Right now, the only variable generated by an option field is the text of the ''value'' property. So, we add four new fields for our canvas, linked to our four new variables. We use again **textboxes**, with an adjustment of the color and the size. Here is the added code, the first line being one already existing for you to know where to paste this code : <code javascript> { "type": "textbox", "text": "SKILLS", "left": 18, "top": 494, "width": 347, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 }, { "type": "textbox", "text": "$movement", "left": 389, "top": 160, "width": 124, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 36 }, { "type": "textbox", "text": "$strength", "left": 389, "top": 252, "width": 124, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 36 }, { "type": "textbox", "text": "$agility", "left": 389, "top": 344, "width": 124, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 36 }, { "type": "textbox", "text": "$armour", "left": 389, "top": 436, "width": 124, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 36 } </code> We've now got an editable card, but some fields are still missing. Let's illustrate our card ! ===== Mug Shot ===== Our Star Player need a photo to be correctly identified. For this purpose, we'll use an [[..:template:image-input|Image field]]. This type of field allows the user to load an image for each card. Right now, the Image input is pretty basic. But it's [[https://github.com/Gulix/geckos/issues/37|planned to evolve]]. For the moment, the user has to ensure his image file corresponds, in ratio, to the image frame on the card. To add the **Image input** field, just add this line to the ''fields'' part of the template : <code javascript> { "type": "image", "name": "portray", "label": "Portray" } </code> This field will generate a **$portray** variable, which will contain the image field in the form of a dataurl (remember ?). Just what we need to add a field image to our canvas : <code javascript> { "type": "image", "left": 15, "top": 124, "width": 354, "height":352, "src": "$portray" } </code> **Set** the template to update your modifications, and a new field appears. {{:tutorial:01_select_your_image.jpg|Select your image file}} Load your image and see it on the card : {{:tutorial:01_nobblamugshot.jpg|Nobbla in person !}} ===== Skills to complete the card ===== Three fields are still missing. Let's start with the easier one. Each Star Player requires a certain amount of Gold Pieces to be recruited. Let's add an input field that will appear in the bottom of the card. The editable field : <code javascript> { "name": "cost", "label": "Cost", "default": "80.000 GP" } </code> And the canvas field : <code javascript> { "type": "textbox", "text": "$cost", "left": 18, "top": 684, "width": 504, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 40, "fontStyle": "italic" } </code> The new thing here is the use of the **fontStyle** property in the canvas field. It sets the text to italic. The next input field will be a new one : the [[..:template:multiline-text-input|Multiline Text Input]] field. It works like the classic **Text input** field, but allows the user to add line-breaks. We'll add two fields : <code javascript> { "name": "skills", "label": "Skills", "default": "", "type": "multiline" }, { "name": "teams", "label": "Teams", "default": "All", "type": "multiline" } </code> We now add two more **textboxes** that will be linked to these two fields : <code javascript> { "type": "textbox", "text": "$skills", "left": 20, "top": 524, "width": 342, "textAlign": "left", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 500, "fontSize": 28 }, { "type": "textbox", "text": "$teams", "left": 388, "top": 524, "width": 128, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 600, "fontSize": 22 } </code> Those fields use an automatic wrapping method : lines that are too long are broken to be displayed on several lines. ===== That's it ? ===== For this tutorial, yes, that's it. You know have a functional template that allows you to get Star Player cards. Of course, with the help of this tutorial, I encourage you to create your own template for your own needs. I will soon open a place to share the templates, and the demo page will host various templates (when [[https://github.com/Gulix/geckos/issues/30|this issue]] is completed). If you have any trouble with this tutorial or the software, feel free to ask me for help, via the creation of an [[https://github.com/Gulix/geckos/issues/new|Issue]], or via a message on a forum in which I'll participate. ===== Full code of the template ===== <code javascript template01-code.json> { "fields": [ { "name": "name", "label": "Name", "default": "Nobbla" }, { "type": "options", "name": "movement", "label": "Movement", "default": "6", "options": [ { "option" : "1", "text": "1" }, { "option" : "2", "text": "2" }, { "option" : "3", "text": "3" }, { "option" : "4", "text": "4" }, { "option" : "5", "text": "5" }, { "option" : "6", "text": "6" }, { "option" : "7", "text": "7" }, { "option" : "8", "text": "8" }, { "option" : "9", "text": "9" }, { "option" : "10", "text": "10" } ] }, { "type": "options", "name": "strength", "label": "Strength", "default": "3", "options": [ { "option" : "1", "text": "1" }, { "option" : "2", "text": "2" }, { "option" : "3", "text": "3" }, { "option" : "4", "text": "4" }, { "option" : "5", "text": "5" }, { "option" : "6", "text": "6" }, { "option" : "7", "text": "7" } ] }, { "type": "options", "name": "agility", "label": "Agility", "default": "3", "options": [ { "option" : "1", "text": "1" }, { "option" : "2", "text": "2" }, { "option" : "3", "text": "3" }, { "option" : "4", "text": "4" }, { "option" : "5", "text": "5" } ] }, { "type": "options", "name": "armour", "label": "Armour", "default": "8", "options": [ { "option" : "5", "text": "5" }, { "option" : "6", "text": "6" }, { "option" : "7", "text": "7" }, { "option" : "8", "text": "8" }, { "option" : "9", "text": "9" }, { "option" : "10", "text": "10" } ] }, { "type": "image", "name": "portray", "label": "Portray" }, { "name": "cost", "label": "Cost", "default": "80.000 GP" }, { "name": "skills", "label": "Skills", "default": "", "type": "multiline" }, { "name": "teams", "label": "Teams", "default": "All", "type": "multiline" } ], "canvasFields": [ { "type": "image", "width": 536, "height":750, "src": "data:image/png;base64,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" }, { "type": "textbox", "text": "$name", "left": 91, "top": 11, "width": 351, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 38 }, { "type": "textbox", "text": "MOVEMENT", "left": 386, "top": 126, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 }, { "type": "textbox", "text": "STRENGTH", "left": 386, "top": 218, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 }, { "type": "textbox", "text": "AGILITY", "left": 386, "top": 310, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 }, { "type": "textbox", "text": "ARMOUR", "left": 386, "top": 402, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 }, { "type": "textbox", "text": "TEAMS", "left": 386, "top": 494, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 }, { "type": "textbox", "text": "SKILLS", "left": 18, "top": 494, "width": 347, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 }, { "type": "textbox", "text": "$movement", "left": 389, "top": 160, "width": 124, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 36 }, { "type": "textbox", "text": "$strength", "left": 389, "top": 252, "width": 124, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 36 }, { "type": "textbox", "text": "$agility", "left": 389, "top": 344, "width": 124, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 36 }, { "type": "textbox", "text": "$armour", "left": 389, "top": 436, "width": 124, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 36 }, { "type": "image", "left": 15, "top": 124, "width": 354, "height":352, "src": "$portray" }, { "type": "textbox", "text": "$cost", "left": 18, "top": 684, "width": 504, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 40, "fontStyle": "italic" }, { "type": "textbox", "text": "$skills", "left": 20, "top": 524, "width": 342, "textAlign": "left", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 500, "fontSize": 28 }, { "type": "textbox", "text": "$teams", "left": 388, "top": 524, "width": 128, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 600, "fontSize": 22 } ], "canvasBackground": "#FF0000", "canvasWidth": 536, "canvasHeight": 750 } </code>

en/tutorial/tutorial01.1471007275.txt.gz · Last modified: 2016/08/12 15:07 by Nicolas Ronvel