File size: 18,505 Bytes
530729e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
package example

import (
	"html/template"

	"github.com/GoAdminGroup/go-admin/context"
	"github.com/GoAdminGroup/go-admin/modules/auth"
	"github.com/GoAdminGroup/go-admin/modules/page"
	template2 "github.com/GoAdminGroup/go-admin/template"
	"github.com/GoAdminGroup/go-admin/template/chartjs"
	"github.com/GoAdminGroup/go-admin/template/types"
	"github.com/GoAdminGroup/themes/adminlte/components/chart_legend"
	"github.com/GoAdminGroup/themes/adminlte/components/description"
	"github.com/GoAdminGroup/themes/adminlte/components/infobox"
	"github.com/GoAdminGroup/themes/adminlte/components/productlist"
	"github.com/GoAdminGroup/themes/adminlte/components/progress_group"
	"github.com/GoAdminGroup/themes/adminlte/components/smallbox"
)

func (e *Example) TestHandler(rawCtx *context.Context) {
	page.SetPageContent(rawCtx, auth.Auth(rawCtx), func(ctx interface{}) (types.Panel, error) {

		components := template2.Default(rawCtx)
		colComp := components.Col()

		/**************************
		 * Info Box
		/**************************/

		infobox1 := infobox.New().
			SetText("CPU TRAFFIC").
			SetColor("#3583af").
			SetNumber("100").
			SetIcon(`<svg t="1568904058859" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2216" width="48" height="48"><path d="M864 64l-704 0C142.336 64 128 78.336 128 96l0 832C128 945.664 142.336 960 160 960l704 0c17.664 0 32-14.336 32-32l0-832C896 78.336 881.664 64 864 64zM832 896 192 896 192 128l640 0L832 896z" fill="#e6e6e6" p-id="2217"></path><path d="M353.92 320c17.6 0 32-14.336 32-32S371.584 256 353.92 256L353.28 256C335.616 256 321.6 270.336 321.6 288S336.256 320 353.92 320z" fill="#e6e6e6" p-id="2218"></path><path d="M353.92 512c17.6 0 32-14.336 32-32S371.584 448 353.92 448L353.28 448C335.616 448 321.6 462.336 321.6 480S336.256 512 353.92 512z" fill="#e6e6e6" p-id="2219"></path><path d="M353.92 704c17.6 0 32-14.336 32-32S371.584 640 353.92 640L353.28 640c-17.6 0-31.616 14.336-31.616 32S336.256 704 353.92 704z" fill="#e6e6e6" p-id="2220"></path><path d="M480 320l192 0C689.664 320 704 305.664 704 288S689.664 256 672 256l-192 0C462.336 256 448 270.336 448 288S462.336 320 480 320z" fill="#e6e6e6" p-id="2221"></path><path d="M480 512l192 0C689.664 512 704 497.664 704 480S689.664 448 672 448l-192 0C462.336 448 448 462.336 448 480S462.336 512 480 512z" fill="#e6e6e6" p-id="2222"></path><path d="M480 704l192 0c17.664 0 32-14.336 32-32S689.664 640 672 640l-192 0C462.336 640 448 654.336 448 672S462.336 704 480 704z" fill="#e6e6e6" p-id="2223"></path></svg>`).
			GetContent()

		infobox2 := infobox.New().
			SetText("Likes").
			SetColor("#6a7c86").
			SetNumber("1030.00<small>$</small>").
			SetIcon(`<svg t="1570468923385" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1124" width="48" height="48"><path d="M508.416 104.96c-225.28 0-408.064 182.784-408.064 408.064s182.784 408.064 408.064 408.064 408.064-182.784 408.064-408.064c0-108.032-43.008-211.968-119.808-288.768-76.288-76.288-180.224-119.296-288.256-119.296z m120.32 460.8c16.384 0 30.208 13.312 30.208 30.208 0 16.384-13.312 30.208-30.208 30.208h-90.624V716.8c0 16.384-13.312 30.208-30.208 30.208-16.384 0-30.208-13.312-30.208-30.208v-91.136H387.584c-16.384 0-30.208-13.312-30.208-30.208 0-16.384 13.312-30.208 30.208-30.208h90.624V495.104H387.584c-16.384 0-30.208-13.312-30.208-30.208 0-16.384 13.312-30.208 30.208-30.208h77.312L387.584 356.864c-9.216-11.776-8.192-28.672 2.56-39.424 10.752-10.752 27.648-11.776 39.424-2.56l78.848 78.848 77.312-77.312c11.264-11.264 29.696-11.264 41.472 0 11.264 11.264 11.264 29.696 0 41.472L548.864 435.2h79.36c16.384 0 30.208 13.312 30.208 30.208 0 16.384-13.312 30.208-30.208 30.208h-90.112v70.144h90.624z m0 0" fill="#ffffff" p-id="1125"></path></svg>`).
			GetContent()

		infobox3 := infobox.New().
			SetText("Sales").
			SetColor("#d8cd68").
			SetNumber("760").
			SetIcon(`<svg t="1570469111431" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3801" width="48" height="48"><path d="M298.666667 128v768h426.666666V128H298.666667zM256 85.333333h512v853.333334H256V85.333333zM170.666667 128H85.333333V85.333333h128v853.333334H85.333333v-42.666667h85.333334V128z m768 768v42.666667h-128V85.333333h128v42.666667h-85.333334v768h85.333334z" p-id="3802" fill="#ffffff"></path></svg>`).
			GetContent()

		infobox4 := infobox.New().
			SetText("New Members").
			SetColor("#6cad6e").
			SetNumber("2,349").
			SetIcon(`<svg t="1570469079555" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2965" width="48" height="48"><path d="M702.9 293.4c26.6 48.9 41.8 105 41.8 164.6 0 190.7-155 345.3-346.2 345.3S52.3 648.7 52.3 458s155-345.3 346.2-345.3c127.4 0 238.7 68.7 298.8 170.9-0.5-1.8-0.7-3.6-0.7-5.5 0-12.1 9.8-21.8 21.8-21.8 4.6 0 9.1 0.1 13.6 0.3C663.8 144.1 539.9 69 398.5 69 183.2 69 8.6 243.1 8.6 458c0 188 133.7 344.8 311.3 381.1 25.2-5.8 51.6-8.9 78.6-8.9 27 0 53.4 3.1 78.6 8.9C654.8 802.8 788.4 646 788.4 458c0-55.1-11.5-107.5-32.2-155-12.3-2-24.9-3.1-37.7-3.1-6.1 0-11.6-2.5-15.6-6.5z" p-id="2966" fill="#ffffff"></path><path d="M319.9 839.1c-68.4 15.8-128.2 51.9-167.7 102.3-7.4 9.5-5.8 23.2 3.7 30.7 9.5 7.4 23.2 5.8 30.7-3.7 45.5-58.1 124.6-94.4 211.8-94.4 88.3 0 168.4 37.3 213.5 96.6 7.3 9.6 21 11.5 30.6 4.2 9.6-7.3 11.5-21 4.2-30.6-39.4-51.8-100-88.9-169.7-105-25.2-5.8-51.6-8.9-78.6-8.9-26.9-0.1-53.3 3-78.5 8.8z" p-id="2967" fill="#ffffff"></path><path d="M732.1 256.6c-4.5-0.2-9.1-0.3-13.6-0.3-12.1 0-21.8 9.8-21.8 21.8 0 1.9 0.2 3.7 0.7 5.5 1 3.8 2.9 7.1 5.6 9.8 4 4 9.5 6.5 15.6 6.5 12.8 0 25.4 1.1 37.7 3.1 132 21.6 229.6 153.8 215.3 290.1-15.7 149.4-146.3 258-291.4 242.7-12-1.3-22.8 7.4-24 19.4-0.1 0.5-0.1 1.1-0.1 1.6-0.1 0.5-0.2 1-0.2 1.6-1.3 12 7.4 22.8 19.4 24 66.7 7 124.1 42.3 153.3 91.9 6.1 10.4 19.5 13.9 29.9 7.7 10.4-6.1 13.9-19.5 7.7-29.9-19.5-33.1-48.6-60.8-83.8-80.7 122.3-31.5 218.3-138.3 232.6-273.8 17.8-169.3-112-332.7-282.9-341z" p-id="2968" fill="#ffffff"></path></svg>`).
			GetContent()

		var size = types.Size(6, 3, 0).XS(12)
		infoboxCol1 := colComp.SetSize(size).SetContent(infobox1).GetContent()
		infoboxCol2 := colComp.SetSize(size).SetContent(infobox2).GetContent()
		infoboxCol3 := colComp.SetSize(size).SetContent(infobox3).GetContent()
		infoboxCol4 := colComp.SetSize(size).SetContent(infobox4).GetContent()
		row1 := components.Row().SetContent(infoboxCol1 + infoboxCol2 + infoboxCol3 + infoboxCol4).GetContent()

		/**************************
		 * Box
		/**************************/

		table := components.Table().SetInfoList([]map[string]types.InfoItem{
			{
				"Order ID":   {Content: "OR9842"},
				"Item":       {Content: "Call of Duty IV"},
				"Status":     {Content: "shipped"},
				"Popularity": {Content: "90%"},
			}, {
				"Order ID":   {Content: "OR9842"},
				"Item":       {Content: "Call of Duty IV"},
				"Status":     {Content: "shipped"},
				"Popularity": {Content: "90%"},
			}, {
				"Order ID":   {Content: "OR9842"},
				"Item":       {Content: "Call of Duty IV"},
				"Status":     {Content: "shipped"},
				"Popularity": {Content: "90%"},
			},
		}).SetThead(types.Thead{
			{Head: "Order ID"},
			{Head: "Item"},
			{Head: "Status"},
			{Head: "Popularity"},
		}).GetContent()

		boxInfo := components.Box().
			WithHeadBorder().
			SetHeader("Latest Orders").
			SetHeadColor("#f7f7f7").
			SetBody(table).
			SetFooter(`<div class="clearfix"><a href="javascript:void(0)" class="btn btn-sm btn-info btn-flat pull-left">处理订单</a><a href="javascript:void(0)" class="btn btn-sm btn-default btn-flat pull-right">查看所有新订单</a> </div>`).
			GetContent()

		tableCol := colComp.SetSize(types.SizeMD(8)).SetContent(row1 + boxInfo).GetContent()

		/**************************
		 * Product List
		/**************************/

		productList := productlist.New().SetData([]map[string]string{
			{
				"img":         "http://adminlte.io/themes/AdminLTE/dist/img/default-50x50.gif",
				"title":       "GoAdmin",
				"has_tabel":   "true",
				"labeltype":   "warning",
				"label":       "free",
				"description": `a framework help you build the dataviz system`,
			}, {
				"img":         "http://adminlte.io/themes/AdminLTE/dist/img/default-50x50.gif",
				"title":       "GoAdmin",
				"has_tabel":   "true",
				"labeltype":   "warning",
				"label":       "free",
				"description": `a framework help you build the dataviz system`,
			}, {
				"img":         "http://adminlte.io/themes/AdminLTE/dist/img/default-50x50.gif",
				"title":       "GoAdmin",
				"has_tabel":   "true",
				"labeltype":   "warning",
				"label":       "free",
				"description": `a framework help you build the dataviz system`,
			},
		}).GetContent()

		boxWarning := components.Box().SetTheme("warning").WithHeadBorder().SetHeader("Recently Added Products").
			SetBody(productList).
			SetFooter(`<a href="javascript:void(0)" class="uppercase">View All Products</a>`).
			GetContent()

		newsCol := colComp.SetSize(types.SizeMD(4)).SetContent(boxWarning).GetContent()

		row5 := components.Row().SetContent(tableCol + newsCol).GetContent()

		/**************************
		 * Box
		/**************************/

		lineChart := chartjs.Line().
			SetID("salechart").
			SetHeight(180).
			SetTitle("Sales: 1 Jan, 2019 - 30 Jul, 2019").
			SetLabels([]string{"January", "February", "March", "April", "May", "June", "July"}).
			AddDataSet("Electronics").
			DSData([]float64{65, 59, 80, 81, 56, 55, 40}).
			DSFill(false).
			DSBorderColor("rgb(210, 214, 222)").
			DSLineTension(0.1).
			AddDataSet("Digital Goods").
			DSData([]float64{28, 48, 40, 19, 86, 27, 90}).
			DSFill(false).
			DSBorderColor("rgba(60,141,188,1)").
			DSLineTension(0.1).
			GetContent()

		title := `<p class="text-center"><strong>Goal Completion</strong></p>`
		progressGroup := progress_group.New().
			SetTitle("Add Products to Cart").
			SetColor("#76b2d4").
			SetDenominator(200).
			SetMolecular(160).
			SetPercent(80).
			GetContent()

		progressGroup1 := progress_group.New().
			SetTitle("Complete Purchase").
			SetColor("#f17c6e").
			SetDenominator(400).
			SetMolecular(310).
			SetPercent(80).
			GetContent()

		progressGroup2 := progress_group.New().
			SetTitle("Visit Premium Page").
			SetColor("#ace0ae").
			SetDenominator(800).
			SetMolecular(490).
			SetPercent(80).
			GetContent()

		progressGroup3 := progress_group.New().
			SetTitle("Send Inquiries").
			SetColor("#fdd698").
			SetDenominator(500).
			SetMolecular(250).
			SetPercent(50).
			GetContent()

		boxInternalCol1 := colComp.SetContent(lineChart).SetSize(types.SizeMD(8)).GetContent()
		boxInternalCol2 := colComp.
			SetContent(template.HTML(title) + progressGroup + progressGroup1 + progressGroup2 + progressGroup3).
			SetSize(types.SizeMD(4)).
			GetContent()

		boxInternalRow := components.Row().SetContent(boxInternalCol1 + boxInternalCol2).GetContent()

		description1 := description.New().
			SetPercent("17").
			SetNumber("¥140,100").
			SetTitle("TOTAL REVENUE").
			SetArrow("up").
			SetColor("green").
			SetBorder("right").
			GetContent()

		description2 := description.New().
			SetPercent("2").
			SetNumber("440,560").
			SetTitle("TOTAL REVENUE").
			SetArrow("down").
			SetColor("red").
			SetBorder("right").
			GetContent()

		description3 := description.New().
			SetPercent("12").
			SetNumber("¥140,050").
			SetTitle("TOTAL REVENUE").
			SetArrow("up").
			SetColor("green").
			SetBorder("right").
			GetContent()

		description4 := description.New().
			SetPercent("1").
			SetNumber("30943").
			SetTitle("TOTAL REVENUE").
			SetArrow("up").
			SetColor("green").
			GetContent()

		size2 := types.SizeXS(6).SM(3)
		boxInternalCol3 := colComp.SetContent(description1).SetSize(size2).GetContent()
		boxInternalCol4 := colComp.SetContent(description2).SetSize(size2).GetContent()
		boxInternalCol5 := colComp.SetContent(description3).SetSize(size2).GetContent()
		boxInternalCol6 := colComp.SetContent(description4).SetSize(size2).GetContent()

		boxInternalRow2 := components.Row().SetContent(boxInternalCol3 + boxInternalCol4 + boxInternalCol5 + boxInternalCol6).GetContent()

		box := components.Box().WithHeadBorder().SetHeader("Monthly Recap Report").
			SetBody(boxInternalRow).
			SetFooter(boxInternalRow2).
			GetContent()

		boxcol := colComp.SetContent(box).SetSize(types.SizeMD(12)).GetContent()
		row2 := components.Row().SetContent(boxcol).GetContent()

		/**************************
		 * Small Box
		/**************************/

		smallbox1 := smallbox.New().SetColor("blue").SetIcon("ion-ios-gear-outline").SetUrl("/").SetTitle("new users").SetValue("345¥").GetContent()
		smallbox2 := smallbox.New().SetColor("yellow").SetIcon("ion-ios-cart-outline").SetUrl("/").SetTitle("new users").SetValue("80%").GetContent()
		smallbox3 := smallbox.New().SetColor("red").SetIcon("fa-user").SetUrl("/").SetTitle("new users").SetValue("645¥").GetContent()
		smallbox4 := smallbox.New().SetColor("green").SetIcon("ion-ios-cart-outline").SetUrl("/").SetTitle("new users").SetValue("889¥").GetContent()

		col1 := colComp.SetSize(size).SetContent(smallbox1).GetContent()
		col2 := colComp.SetSize(size).SetContent(smallbox2).GetContent()
		col3 := colComp.SetSize(size).SetContent(smallbox3).GetContent()
		col4 := colComp.SetSize(size).SetContent(smallbox4).GetContent()

		row3 := components.Row().SetContent(col1 + col2 + col3 + col4).GetContent()

		/**************************
		 * Pie Chart
		/**************************/

		pie := chartjs.Pie().
			SetHeight(170).
			SetLabels([]string{"Navigator", "Opera", "Safari", "FireFox", "IE", "Chrome"}).
			SetID("pieChart").
			AddDataSet("Chrome").
			DSData([]float64{100, 300, 600, 400, 500, 700}).
			DSBackgroundColor([]chartjs.Color{
				"rgb(255, 205, 86)", "rgb(54, 162, 235)", "rgb(255, 99, 132)", "rgb(255, 205, 86)", "rgb(54, 162, 235)", "rgb(255, 99, 132)",
			}).
			GetContent()

		legend := chart_legend.New().SetData([]map[string]string{
			{
				"label": " Chrome",
				"color": "red",
			}, {
				"label": " IE",
				"color": "Green",
			}, {
				"label": " FireFox",
				"color": "yellow",
			}, {
				"label": " Sarafri",
				"color": "blue",
			}, {
				"label": " Opera",
				"color": "light-blue",
			}, {
				"label": " Navigator",
				"color": "gray",
			},
		}).GetContent()

		boxDanger := components.Box().SetTheme("danger").WithHeadBorder().SetHeader("Browser Usage").
			SetBody(components.Row().
				SetContent(colComp.SetSize(types.SizeMD(8)).
					SetContent(pie).
					GetContent() + colComp.SetSize(types.SizeMD(4)).
					SetContent(legend).
					GetContent()).GetContent()).
			SetFooter(`<p class="text-center"><a href="javascript:void(0)" class="uppercase">View All Users</a></p>`).
			GetContent()

		tabs := components.Tabs().SetData([]map[string]template.HTML{
			{
				"title": "tabs1",
				"content": template.HTML(`<b>How to use:</b>

                <p>Exactly like the original bootstrap tabs except you should use
                  the custom wrapper <code>.nav-tabs-custom</code> to achieve this style.</p>
                A wonderful serenity has taken possession of my entire soul,
                like these sweet mornings of spring which I enjoy with my whole heart.
                I am alone, and feel the charm of existence in this spot,
                which was created for the bliss of souls like mine. I am so happy,
                my dear friend, so absorbed in the exquisite sense of mere tranquil existence,
                that I neglect my talents. I should be incapable of drawing a single stroke
                at the present moment; and yet I feel that I never was a greater artist than now.`),
			}, {
				"title": "tabs2",
				"content": template.HTML(`
                The European languages are members of the same family. Their separate existence is a myth.
                For science, music, sport, etc, Europe uses the same vocabulary. The languages only differ
                in their grammar, their pronunciation and their most common words. Everyone realizes why a
                new common language would be desirable: one could refuse to pay expensive translators. To
                achieve this, it would be necessary to have uniform grammar, pronunciation and more common
                words. If several languages coalesce, the grammar of the resulting language is more simple
                and regular than that of the individual languages.
              `),
			}, {
				"title": "tabs3",
				"content": template.HTML(`
                Lorem Ipsum is simply dummy text of the printing and typesetting industry.
                Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,
                when an unknown printer took a galley of type and scrambled it to make a type specimen book.
                It has survived not only five centuries, but also the leap into electronic typesetting,
                remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset
                sheets containing Lorem Ipsum passages, and more recently with desktop publishing software
                like Aldus PageMaker including versions of Lorem Ipsum.
              `),
			},
		}).GetContent()

		buttonTest := `<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@mdo">Open modal for @mdo</button>`
		popupForm := `<form>
          <div class="form-group">
            <label for="recipient-name" class="col-form-label">Recipient:</label>
            <input type="text" class="form-control" id="recipient-name">
          </div>
          <div class="form-group">
            <label for="message-text" class="col-form-label">Message:</label>
            <textarea class="form-control" id="message-text"></textarea>
          </div>
        </form>`
		popup := components.Popup().SetID("exampleModal").
			SetFooter("Save Change").
			SetTitle("this is a popup").
			SetBody(template.HTML(popupForm)).
			GetContent()

		col5 := colComp.SetSize(types.SizeMD(8)).SetContent(tabs + template.HTML(buttonTest)).GetContent()
		col6 := colComp.SetSize(types.SizeMD(4)).SetContent(boxDanger + popup).GetContent()

		row4 := components.Row().SetContent(col5 + col6).GetContent()

		return types.Panel{
			Content:     row5 + row2 + row3 + row4,
			Title:       "Dashboard",
			Description: "dashboard example",
		}, nil
	}, e.Conn)
}