styles
This commit is contained in:
parent
e136b2f8e6
commit
10a9024b08
|
@ -2,7 +2,6 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"embed"
|
"embed"
|
||||||
"encoding/json"
|
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"html/template"
|
"html/template"
|
||||||
|
@ -13,7 +12,6 @@ import (
|
||||||
"runtime"
|
"runtime"
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"github.com/pkg/profile"
|
"github.com/pkg/profile"
|
||||||
|
@ -35,33 +33,14 @@ func main() {
|
||||||
router := mux.NewRouter().StrictSlash(true)
|
router := mux.NewRouter().StrictSlash(true)
|
||||||
|
|
||||||
functions := template.FuncMap{
|
functions := template.FuncMap{
|
||||||
"json": func(obj any) string {
|
"json": util.Json,
|
||||||
b, err := json.MarshalIndent(obj, "", " ")
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
return string(b)
|
|
||||||
},
|
|
||||||
"check": func(condition bool, v any) any {
|
"check": func(condition bool, v any) any {
|
||||||
if condition {
|
if condition {
|
||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
"title": func(input string) string {
|
"title": util.Title,
|
||||||
words := strings.Split(input, " ")
|
|
||||||
smallwords := " a an on the to of "
|
|
||||||
|
|
||||||
for index, word := range words {
|
|
||||||
if strings.Contains(smallwords, " "+word+" ") && index > 0 {
|
|
||||||
words[index] = word
|
|
||||||
} else {
|
|
||||||
words[index] = strings.Title(word)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return strings.Join(words, " ")
|
|
||||||
},
|
|
||||||
"getHf": func(id int) *model.HistoricalFigure { return world.HistoricalFigures[id] },
|
"getHf": func(id int) *model.HistoricalFigure { return world.HistoricalFigures[id] },
|
||||||
"getEntity": func(id int) *model.Entity { return world.Entities[id] },
|
"getEntity": func(id int) *model.Entity { return world.Entities[id] },
|
||||||
"events": func(obj model.Identifiable) []*model.HistoricalEvent {
|
"events": func(obj model.Identifiable) []*model.HistoricalEvent {
|
||||||
|
|
|
@ -277,7 +277,16 @@ func (x *HistoricalEventArtifactTransformed) Html() string {
|
||||||
return fmt.Sprintf("%s was made from %s by %s in %s", artifact(x.NewArtifactId), artifact(x.OldArtifactId), hf(x.HistFigureId), site(x.SiteId, "")) // TODO wording
|
return fmt.Sprintf("%s was made from %s by %s in %s", artifact(x.NewArtifactId), artifact(x.OldArtifactId), hf(x.HistFigureId), site(x.SiteId, "")) // TODO wording
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *HistoricalEventAssumeIdentity) Html() string { return "UNKNWON HistoricalEventAssumeIdentity" }
|
func (x *HistoricalEventAssumeIdentity) Html() string {
|
||||||
|
h := hf(x.TricksterHfid)
|
||||||
|
i := identity(x.IdentityId)
|
||||||
|
if x.TargetEnid == -1 {
|
||||||
|
return fmt.Sprintf(`%s assumed the identity "%s"`, h, i)
|
||||||
|
} else {
|
||||||
|
return fmt.Sprintf(`%s fooled %s into believing %s was "%s"`, h, entity(x.TargetEnid), pronoun(x.TricksterHfid), i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (x *HistoricalEventAttackedSite) Html() string { return "UNKNWON HistoricalEventAttackedSite" }
|
func (x *HistoricalEventAttackedSite) Html() string { return "UNKNWON HistoricalEventAttackedSite" }
|
||||||
func (x *HistoricalEventBodyAbused) Html() string { return "UNKNWON HistoricalEventBodyAbused" }
|
func (x *HistoricalEventBodyAbused) Html() string { return "UNKNWON HistoricalEventBodyAbused" }
|
||||||
func (x *HistoricalEventBuildingProfileAcquired) Html() string {
|
func (x *HistoricalEventBuildingProfileAcquired) Html() string {
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
package model
|
package model
|
||||||
|
|
||||||
import "fmt"
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/robertjanetzko/LegendsBrowser2/backend/util"
|
||||||
|
)
|
||||||
|
|
||||||
func (e *Entity) Position(id int) *EntityPosition {
|
func (e *Entity) Position(id int) *EntityPosition {
|
||||||
for _, p := range e.EntityPosition {
|
for _, p := range e.EntityPosition {
|
||||||
|
@ -52,28 +56,37 @@ var world *DfWorld
|
||||||
|
|
||||||
func artifact(id int) string {
|
func artifact(id int) string {
|
||||||
if x, ok := world.Artifacts[id]; ok {
|
if x, ok := world.Artifacts[id]; ok {
|
||||||
return fmt.Sprintf(`<a href="/artifact/%d">%s</a>`, x.Id(), x.Name())
|
return fmt.Sprintf(`<a class="artifact" href="/artifact/%d">%s</a>`, x.Id(), util.Title(x.Name()))
|
||||||
}
|
}
|
||||||
return "UNKNOWN ARTIFACT"
|
return "UNKNOWN ARTIFACT"
|
||||||
}
|
}
|
||||||
|
|
||||||
func entity(id int) string {
|
func entity(id int) string {
|
||||||
if x, ok := world.Entities[id]; ok {
|
if x, ok := world.Entities[id]; ok {
|
||||||
return fmt.Sprintf(`<a href="/entity/%d">%s</a>`, x.Id(), x.Name())
|
return fmt.Sprintf(`<a class="entity" href="/entity/%d">%s</a>`, x.Id(), util.Title(x.Name()))
|
||||||
}
|
}
|
||||||
return "UNKNOWN ENTITY"
|
return "UNKNOWN ENTITY"
|
||||||
}
|
}
|
||||||
|
|
||||||
func hf(id int) string {
|
func hf(id int) string {
|
||||||
if x, ok := world.HistoricalFigures[id]; ok {
|
if x, ok := world.HistoricalFigures[id]; ok {
|
||||||
return fmt.Sprintf(`<a href="/hf/%d">%s</a>`, x.Id(), x.Name())
|
return fmt.Sprintf(`the %s <a class="hf" href="/hf/%d">%s</a>`, x.Race, x.Id(), util.Title(x.Name()))
|
||||||
}
|
}
|
||||||
return "UNKNOWN HISTORICAL FIGURE"
|
return "UNKNOWN HISTORICAL FIGURE"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func pronoun(id int) string {
|
||||||
|
if x, ok := world.HistoricalFigures[id]; ok {
|
||||||
|
if x.Female() {
|
||||||
|
return "she"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "he"
|
||||||
|
}
|
||||||
|
|
||||||
func site(id int, prefix string) string {
|
func site(id int, prefix string) string {
|
||||||
if x, ok := world.Sites[id]; ok {
|
if x, ok := world.Sites[id]; ok {
|
||||||
return fmt.Sprintf(`%s <a href="/site/%d">%s</a>`, prefix, x.Id(), x.Name())
|
return fmt.Sprintf(`%s <a class="site" href="/site/%d">%s</a>`, prefix, x.Id(), util.Title(x.Name()))
|
||||||
}
|
}
|
||||||
return "UNKNOWN SITE"
|
return "UNKNOWN SITE"
|
||||||
}
|
}
|
||||||
|
@ -81,7 +94,7 @@ func site(id int, prefix string) string {
|
||||||
func structure(siteId, structureId int) string {
|
func structure(siteId, structureId int) string {
|
||||||
if x, ok := world.Sites[siteId]; ok {
|
if x, ok := world.Sites[siteId]; ok {
|
||||||
if y, ok := x.Structures[structureId]; ok {
|
if y, ok := x.Structures[structureId]; ok {
|
||||||
return fmt.Sprintf(`<a href="/site/%d/structure/%d">%s</a>`, siteId, structureId, y.Name())
|
return fmt.Sprintf(`<a class="structure" href="/site/%d/structure/%d">%s</a>`, siteId, structureId, util.Title(y.Name()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return "UNKNOWN STRUCTURE"
|
return "UNKNOWN STRUCTURE"
|
||||||
|
@ -89,7 +102,14 @@ func structure(siteId, structureId int) string {
|
||||||
|
|
||||||
func region(id int) string {
|
func region(id int) string {
|
||||||
if x, ok := world.Regions[id]; ok {
|
if x, ok := world.Regions[id]; ok {
|
||||||
return fmt.Sprintf(`<a href="/region/%d">%s</a>`, x.Id(), x.Name())
|
return fmt.Sprintf(`<a class="region" href="/region/%d">%s</a>`, x.Id(), util.Title(x.Name()))
|
||||||
}
|
}
|
||||||
return "UNKNOWN REGION"
|
return "UNKNOWN REGION"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func identity(id int) string {
|
||||||
|
if x, ok := world.Identities[id]; ok {
|
||||||
|
return fmt.Sprintf(`<a class="identity" href="/region/%d">%s</a>`, x.Id(), util.Title(x.Name()))
|
||||||
|
}
|
||||||
|
return "UNKNOWN IDENTITY"
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hf {
|
||||||
|
color: #3366CC;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entity {
|
||||||
|
color: #CC33FF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.site {
|
||||||
|
color: #FFCC00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.structure {
|
||||||
|
color: #FFAA00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ruin {
|
||||||
|
color: #bbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
.worldconstruction {
|
||||||
|
color: #777777;
|
||||||
|
}
|
||||||
|
|
||||||
|
.region {
|
||||||
|
color: #009933;
|
||||||
|
}
|
||||||
|
|
||||||
|
.artifact {
|
||||||
|
color: #993300;
|
||||||
|
}
|
||||||
|
|
||||||
|
.writtencontent {
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.artform {
|
||||||
|
color: #993399;
|
||||||
|
}
|
||||||
|
|
||||||
|
.occasion {
|
||||||
|
color: #993399;
|
||||||
|
}
|
||||||
|
|
||||||
|
.war {
|
||||||
|
color: #600000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.battle {
|
||||||
|
color: #900000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.json {
|
||||||
|
color: #ddd;
|
||||||
|
font-size: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
a {
|
||||||
|
color: #337ab7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.artifact {
|
||||||
|
color: #ea4e00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.historical-figure {
|
||||||
|
color: #5c93ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.war {
|
||||||
|
color: #a00000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.battle {
|
||||||
|
color: #c70303;
|
||||||
|
}
|
||||||
|
|
||||||
|
.art-form {
|
||||||
|
color: #cc45cc;
|
||||||
|
}
|
||||||
|
} */
|
|
@ -7,6 +7,7 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>{{block "title" .}}{{end}}</title>
|
<title>{{block "title" .}}{{end}}</title>
|
||||||
<link href="/css/bootstrap.min.css" rel="stylesheet">
|
<link href="/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<link href="/css/legends.css" rel="stylesheet">
|
||||||
<script src="/js/bootstrap.min.js"></script>
|
<script src="/js/bootstrap.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
package util
|
package util
|
||||||
|
|
||||||
import "strings"
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"html/template"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
func Keys[K comparable, V any](input map[K]V) []K {
|
func Keys[K comparable, V any](input map[K]V) []K {
|
||||||
keys := make([]K, 0, len(input))
|
keys := make([]K, 0, len(input))
|
||||||
|
@ -26,3 +31,26 @@ func ContainsAny(s string, substrings ...string) bool {
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Title(input string) string {
|
||||||
|
words := strings.Split(input, " ")
|
||||||
|
smallwords := " a an on the to of "
|
||||||
|
|
||||||
|
for index, word := range words {
|
||||||
|
if strings.Contains(smallwords, " "+word+" ") && index > 0 {
|
||||||
|
words[index] = word
|
||||||
|
} else {
|
||||||
|
words[index] = strings.Title(word)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return strings.Join(words, " ")
|
||||||
|
}
|
||||||
|
|
||||||
|
func Json(obj any) template.HTML {
|
||||||
|
b, err := json.MarshalIndent(obj, "", " ")
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return template.HTML(`<span class="json">` + string(b) + `</span>`)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue