| | 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() |
| |
|
| | |
| | |
| | |
| |
|
| | 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() |
| |
|
| | |
| | |
| | |
| |
|
| | 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() |
| |
|
| | |
| | |
| | |
| |
|
| | 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() |
| |
|
| | |
| | |
| | |
| |
|
| | 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() |
| |
|
| | |
| | |
| | |
| |
|
| | 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 := 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) |
| | } |
| |
|