Show last authors
author | version | line-number | content |
---|---|---|---|
1 | {{velocity output="false"}} | ||
2 | #set ($docextras = []) | ||
3 | |||
4 | #set ($videoCards = [{ | ||
5 | 'title': $services.localization.render('1. VB: How to get started VB Script in PIStudio'), | ||
6 | 'topics': [ | ||
7 | $services.localization.render('VB Script(Marco) is mainly designed for user to do some simple logical or calculation.') | ||
8 | ], | ||
9 | 'url': 'https://www.youtube.com/embed/wjYNNvB5r0s', | ||
10 | 'duration': '12 min' | ||
11 | },{ | ||
12 | 'title': $services.localization.render('2. Lua: How to Get Started Lua Script in WECON PIStudio'), | ||
13 | 'topics': [ | ||
14 | $services.localization.render('Lua is a powerful, efficient, lightweight, embeddable scripting language.') | ||
15 | ], | ||
16 | 'url': 'https://www.youtube.com/embed/LEpvjUzNM-8', | ||
17 | 'duration': '12 min' | ||
18 | },{ | ||
19 | 'title': $services.localization.render('3. Lua: MQTT Client'), | ||
20 | 'topics': [ | ||
21 | $services.localization.render('Using the Lua MQTT, the communication device which is connected to HMI can upload the values to MQTT broker(Server end)') | ||
22 | ], | ||
23 | 'url': 'https://www.youtube.com/embed/c6mwvgTGeZc', | ||
24 | 'duration': '29 min' | ||
25 | },{ | ||
26 | 'title': $services.localization.render('4. Lua Tutorial 1st Class: Lua Basic'), | ||
27 | 'topics': [ | ||
28 | $services.localization.render('Chapter NO.0 The pre note of programming'), | ||
29 | $services.localization.render('Chapter NO.1 Preparation Works'), | ||
30 | $services.localization.render('Chapter NO.2 Basic Syntax'), | ||
31 | $services.localization.render('Chapter NO.3 Data Type'), | ||
32 | $services.localization.render('Chapter NO.4 Variable') | ||
33 | ], | ||
34 | 'url': 'https://www.youtube.com/embed/ez5N5LijrZM', | ||
35 | 'duration': '39 min' | ||
36 | },{ | ||
37 | 'title': $services.localization.render('5. Lua Tutorial 2nd Class: Control Structure'), | ||
38 | 'topics': [ | ||
39 | $services.localization.render('Chapter NO.5 Loop'), | ||
40 | $services.localization.render('Chapter NO.6 Control Flow'), | ||
41 | $services.localization.render('Chapter NO.7 Function') | ||
42 | ], | ||
43 | 'url': 'https://www.youtube.com/embed/CpeRBc7JV4k', | ||
44 | 'duration': '41 min' | ||
45 | },{ | ||
46 | 'title': $services.localization.render('6. Lua Tutorial 3rd Class: Operator & String'), | ||
47 | 'topics': [ | ||
48 | $services.localization.render('Chapter NO.8 Operator'), | ||
49 | $services.localization.render('Chapter NO.9 String') | ||
50 | ], | ||
51 | 'url': 'https://www.youtube.com/embed/ymlcZASrUH0', | ||
52 | 'duration': '57 min' | ||
53 | },{ | ||
54 | 'title': $services.localization.render('7. Lua Tutorial 4th Class: Table & Iterator'), | ||
55 | 'topics': [ | ||
56 | $services.localization.render('Chapter NO.10 Array'), | ||
57 | $services.localization.render('Chapter NO.11 Iterator'), | ||
58 | $services.localization.render('Chapter NO.12 Table'), | ||
59 | $services.localization.render('Chapter NO.13 Module') | ||
60 | ], | ||
61 | 'url': 'https://www.youtube.com/embed/Gikg_dUl8Z8', | ||
62 | 'duration': '41 min' | ||
63 | },{ | ||
64 | 'title': $services.localization.render('8. Lua Tutorial 5th Class: Custom Table Drawing'), | ||
65 | 'topics': [ | ||
66 | $services.localization.render('1. Create the customize object and get object ID'), | ||
67 | $services.localization.render('2. Initial the table header and cell number'), | ||
68 | $services.localization.render('3. Constructure the table content') | ||
69 | ], | ||
70 | 'url': 'https://www.youtube.com/embed/UOjBPHJM_H0', | ||
71 | 'duration': '32 min' | ||
72 | },{ | ||
73 | 'title': $services.localization.render('9. Lua Tutorial 6th Class: Custom Curve Drawing'), | ||
74 | 'topics': [ | ||
75 | $services.localization.render('1. Create the customize object and get object ID'), | ||
76 | $services.localization.render('2. Set the line type'), | ||
77 | $services.localization.render('3. Set the curve background'), | ||
78 | $services.localization.render('4. Constructure the curve elements(one dimensional table)') | ||
79 | ], | ||
80 | 'url': 'https://www.youtube.com/embed/FM8PkqrPX9o', | ||
81 | 'duration': '8 min' | ||
82 | },{ | ||
83 | 'title': $services.localization.render('10. Lua Tutorial 7th Class: HTTP & JSON'), | ||
84 | 'topics': [ | ||
85 | $services.localization.render('What is HTTP'), | ||
86 | $services.localization.render('What is JSON'), | ||
87 | $services.localization.render('Take weather api as example to test'), | ||
88 | $services.localization.render('How to parse value into display') | ||
89 | ], | ||
90 | 'url': 'https://www.youtube.com/embed/mw8PvuNpsf4', | ||
91 | 'duration': '35 min' | ||
92 | },{ | ||
93 | 'title': $services.localization.render('11. Lua Tutorial 8th Class: FTP Client'), | ||
94 | 'topics': [ | ||
95 | $services.localization.render('What is FTP'), | ||
96 | $services.localization.render('Build up FTP site on PC'), | ||
97 | $services.localization.render('Core code part of FTP Client') | ||
98 | ], | ||
99 | 'url': 'https://www.youtube.com/embed/I-MyCKih6DA', | ||
100 | 'duration': '9 min' | ||
101 | },{ | ||
102 | 'title': $services.localization.render('12. Lua Tutorial 9th Class: CSV File Read&Write'), | ||
103 | 'topics': [ | ||
104 | $services.localization.render('What is CSV'), | ||
105 | $services.localization.render('How to recognize the seperator'), | ||
106 | $services.localization.render('File read write demonstration') | ||
107 | ], | ||
108 | 'url': 'https://www.youtube.com/embed/DTdXkLCRhLg', | ||
109 | 'duration': '22 min' | ||
110 | },{ | ||
111 | 'title': $services.localization.render('13. Lua Tutorial 10th Class: MQTT & OpenCloud'), | ||
112 | 'topics': [ | ||
113 | $services.localization.render('What is OpenCloud'), | ||
114 | $services.localization.render('Huawei IOTDA Setup'), | ||
115 | $services.localization.render('Product Model Data Create'), | ||
116 | $services.localization.render('OpenCloud Function Demonstration') | ||
117 | ], | ||
118 | 'url': 'https://www.youtube.com/embed/DTdXkLCRhLg', | ||
119 | 'duration': '42 min' | ||
120 | }]) | ||
121 | |||
122 | #macro (helpVideoCard $data) | ||
123 | <div class="videoCard"> | ||
124 | <iframe src="$data.url" allowfullscreen title="$escapetool.xml($data.title)" role="presentation" ></iframe> | ||
125 | <div class="videoCard-body"> | ||
126 | <div class="videoCard-title"> | ||
127 | $escapetool.xml($data.title) | ||
128 | </div> | ||
129 | <ul> | ||
130 | #foreach ($topic in $data.topics) | ||
131 | <li>$topic</li> | ||
132 | #end | ||
133 | </ul> | ||
134 | </div> | ||
135 | <div class="videoCard-footer"> | ||
136 | $services.icon.renderHTML('play') | ||
137 | <a href="$data.url">$services.localization.render('help.videos.watch')</a> | ||
138 | <span class="videoCard-duration"> | ||
139 | $escapetool.xml($data.duration) | ||
140 | </span> | ||
141 | </div> | ||
142 | </div> | ||
143 | #end | ||
144 | {{/velocity}} | ||
145 | |||
146 | {{velocity}} | ||
147 | {{html clean="false"}} | ||
148 | #set ($discard = $xwiki.ssx.use('Help.Videos.WebHome')) | ||
149 | <div class="row"> | ||
150 | #foreach ($card in $videoCards) | ||
151 | ## See http://getbootstrap.com/css/#grid-responsive-resets . | ||
152 | #if ($foreach.index > 0 && $foreach.index % 2 == 0) | ||
153 | <div class="clearfix visible-sm-block "></div> | ||
154 | #end | ||
155 | #if ($foreach.index > 0 && $foreach.index % 3 == 0) | ||
156 | <div class="clearfix visible-md-block visible-lg-block"></div> | ||
157 | #end | ||
158 | <div class="col-xs-12 col-sm-6 col-md-4"> | ||
159 | #helpVideoCard($card) | ||
160 | </div> | ||
161 | #end | ||
162 | </div> | ||
163 | {{/html}} | ||
164 | |||
165 | [[$services.localization.render('help.videos.more')>>https://www.youtube.com/playlist?list=PLhe7KI1rstRQeLSHxcTozZ0HJSk-mIYzt]] | ||
166 | {{/velocity}} |