github.com/GeniusesGroup/libgo@v0.0.0-20220929090155-5ff932cb408e/protocol/gui-page.go (about)

     1  /* For license and copyright information please see LEGAL file in repository */
     2  
     3  package protocol
     4  
     5  type GUIPages interface {
     6  	RegisterPage(page GUIPage)
     7  	GetPageByPath(path string) (page GUIPage)
     8  	Pages() (pages []GUIPage)
     9  }
    10  
    11  // GUIPage indicate what is a GUI page.
    12  type GUIPage interface {
    13  	Robots() string
    14  	Icon() Image
    15  	Info() GUIInformation // It is locale info
    16  	// think about a page that show a user medical records, doctor need to know user birthday, so /user page must ready to reach by doctor
    17  	// or doctor need to know other doctors visits to know any advice from them for this user.
    18  	RelatedPages() []GUIPage
    19  
    20  	Path() string                                    // To route page by path of HTTP-URI
    21  	AcceptedCondition(key string) (defaultValue any) // HTTP-URI queries
    22  
    23  	ActiveState() GUIPageState
    24  	ActiveStates() []GUIPageState
    25  
    26  	// Below methods are custom methods that must implement in each page not gui library.
    27  
    28  	// CreateState build the page in the requested state or reuse old states with SafeToSilentClose()
    29  	CreateState(url string) GUIPageState
    30  
    31  	// it is raw version of the page DOM. suggest to write HTML in a dedicated html file and have compile-time parser.
    32  	// - Due to multi page state mechanism and separate concern(content vs logic), don't support inline event handlers in HTML files
    33  	// dom() DOM
    34  	// it is raw version of the page SOM
    35  	// som() SOM
    36  	// it is raw version of the page templates DOM e.g. products-template-card.html
    37  	// template(name string) DOM
    38  
    39  	MediaType
    40  }