Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

example_test.gno

2.82 Kb · 100 lines
  1package pager
  2
  3import (
  4	"gno.land/p/nt/bptree/v0"
  5	"gno.land/p/nt/seqid/v0"
  6	"gno.land/p/nt/ufmt/v0"
  7)
  8
  9func ExamplePager() {
 10	// Create a new tree and populate it with some key-value pairs.
 11	var id seqid.ID
 12	tree := bptree.NewBPTree32()
 13	for i := 0; i < 42; i++ {
 14		tree.Set(id.Next().String(), i)
 15	}
 16
 17	// Create a new pager.
 18	pager1 := NewPager(tree, 7, false)
 19
 20	for pn := -1; pn < 8; pn++ {
 21		page := pager1.GetPage(pn)
 22
 23		println(ufmt.Sprintf("## Page %d of %d", page.PageNumber, page.TotalPages))
 24		for idx, item := range page.Items {
 25			println(ufmt.Sprintf("- idx=%d key=%s value=%d", idx, item.Key, item.Value))
 26		}
 27		println(page.Picker("/"))
 28		println()
 29	}
 30
 31	// Output:
 32	// ## Page 0 of 6
 33	// _0_ | [1](?page=1) | [2](?page=2) | … | [6](?page=6)
 34	//
 35	// ## Page 0 of 6
 36	// _0_ | [1](?page=1) | [2](?page=2) | … | [6](?page=6)
 37	//
 38	// ## Page 1 of 6
 39	// - idx=0 key=0000001 value=0
 40	// - idx=1 key=0000002 value=1
 41	// - idx=2 key=0000003 value=2
 42	// - idx=3 key=0000004 value=3
 43	// - idx=4 key=0000005 value=4
 44	// - idx=5 key=0000006 value=5
 45	// - idx=6 key=0000007 value=6
 46	// **1** | [2](?page=2) | [3](?page=3) | … | [6](?page=6)
 47	//
 48	// ## Page 2 of 6
 49	// - idx=0 key=0000008 value=7
 50	// - idx=1 key=0000009 value=8
 51	// - idx=2 key=000000a value=9
 52	// - idx=3 key=000000b value=10
 53	// - idx=4 key=000000c value=11
 54	// - idx=5 key=000000d value=12
 55	// - idx=6 key=000000e value=13
 56	// [1](?page=1) | **2** | [3](?page=3) | [4](?page=4) | … | [6](?page=6)
 57	//
 58	// ## Page 3 of 6
 59	// - idx=0 key=000000f value=14
 60	// - idx=1 key=000000g value=15
 61	// - idx=2 key=000000h value=16
 62	// - idx=3 key=000000j value=17
 63	// - idx=4 key=000000k value=18
 64	// - idx=5 key=000000m value=19
 65	// - idx=6 key=000000n value=20
 66	// [1](?page=1) | [2](?page=2) | **3** | [4](?page=4) | [5](?page=5) | [6](?page=6)
 67	//
 68	// ## Page 4 of 6
 69	// - idx=0 key=000000p value=21
 70	// - idx=1 key=000000q value=22
 71	// - idx=2 key=000000r value=23
 72	// - idx=3 key=000000s value=24
 73	// - idx=4 key=000000t value=25
 74	// - idx=5 key=000000v value=26
 75	// - idx=6 key=000000w value=27
 76	// [1](?page=1) | [2](?page=2) | [3](?page=3) | **4** | [5](?page=5) | [6](?page=6)
 77	//
 78	// ## Page 5 of 6
 79	// - idx=0 key=000000x value=28
 80	// - idx=1 key=000000y value=29
 81	// - idx=2 key=000000z value=30
 82	// - idx=3 key=0000010 value=31
 83	// - idx=4 key=0000011 value=32
 84	// - idx=5 key=0000012 value=33
 85	// - idx=6 key=0000013 value=34
 86	// [1](?page=1) | … | [3](?page=3) | [4](?page=4) | **5** | [6](?page=6)
 87	//
 88	// ## Page 6 of 6
 89	// - idx=0 key=0000014 value=35
 90	// - idx=1 key=0000015 value=36
 91	// - idx=2 key=0000016 value=37
 92	// - idx=3 key=0000017 value=38
 93	// - idx=4 key=0000018 value=39
 94	// - idx=5 key=0000019 value=40
 95	// - idx=6 key=000001a value=41
 96	// [1](?page=1) | … | [4](?page=4) | [5](?page=5) | **6**
 97	//
 98	// ## Page 7 of 6
 99	// [1](?page=1) | … | [5](?page=5) | [6](?page=6) | _7_
100}