Skip to content

Commit

Permalink
Update UI with v2 API
Browse files Browse the repository at this point in the history
  • Loading branch information
josephburnett committed Feb 9, 2025
1 parent e80cd9b commit c911d87
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 23 deletions.
5 changes: 0 additions & 5 deletions web/assets/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
<textarea id="a-json"
rows="15"
style="width:97%;border:solid 3px #080"
placeholder='{"foo":"bar"}'
></textarea>
<legend id="a-error"
for="a-json"></legend>
Expand All @@ -31,7 +30,6 @@
<textarea id="b-json"
rows="15"
style="width:97%;border:solid 3px #080"
placeholder='{"foo":"baz"}'
></textarea>
<legend id="b-error"
for="b-json"></legend>
Expand All @@ -43,9 +41,6 @@
<textarea id="diff"
rows="10"
style="width:98.5%;border:solid 3px #ccc"
placeholder='@ ["foo"]
- "bar"
+ "baz"'
></textarea>
<legend id="diff-error"
for="diff"></legend>
Expand Down
60 changes: 42 additions & 18 deletions web/ui/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"sync"
"syscall/js"

jd "github.com/josephburnett/jd/lib"
jd "github.com/josephburnett/jd/v2"
)

const (
Expand Down Expand Up @@ -34,8 +34,8 @@ const (
unfocusStyle = "border:solid 3px #ccc"
halfWidthStyle = "width:97%"
fullWidthStyle = "width:98.5%"
placeholderA = `{"foo":["bar"]}`
placeholderB = `{"foo":["baz"]}`
placeholderA = `{"foo":["bar","baz"]}`
placeholderB = `{"foo":["bar","baz","bam"]}`
)

func main() {
Expand Down Expand Up @@ -199,6 +199,8 @@ var (
jdPlaceholderMset string
patchPlaceholder string
mergePlaceholder string
yamlPlaceholderA string
yamlPlaceholderB string
)

func init() {
Expand All @@ -220,6 +222,8 @@ func init() {
if err != nil {
panic(err)
}
yamlPlaceholderA = a.Yaml()
yamlPlaceholderB = b.Yaml()
}

func (a *app) setPlaceholder() {
Expand All @@ -239,10 +243,20 @@ func (a *app) setPlaceholder() {
case diffFormatMergeId:
d.Set("placeholder", mergePlaceholder)
}
aInput := a.getElementById(aJsonId)
bInput := a.getElementById(bJsonId)
switch a.format {
case formatJsonId:
aInput.Set("placeholder", placeholderA)
bInput.Set("placeholder", placeholderB)
case formatYamlId:
aInput.Set("placeholder", yamlPlaceholderA)
bInput.Set("placeholder", yamlPlaceholderB)
}
}

func (a *app) setCommandLabel() {
command := "jd"
command := "jd -v2"
switch a.mode {
case modePatchId:
command += " -p"
Expand All @@ -268,9 +282,17 @@ func (a *app) setCommandLabel() {
}
switch a.mode {
case modeDiffId:
command += " a.json b.json"
if a.format == formatJsonId {
command += " a.json b.json"
} else {
command += " a.yaml b.yaml"
}
case modePatchId:
command += " diff a.json"
if a.format == formatJsonId {
command += " diff a.json"
} else {
command += " diff a.yaml"
}
default:
}
a.setLabel(commandId, command)
Expand Down Expand Up @@ -323,27 +345,26 @@ func (a *app) setInputsEnabled() {
}
}

func (a *app) getMetadata() []jd.Metadata {
metadata := []jd.Metadata{}
func (a *app) getMetadata() []jd.Option {
options := []jd.Option{}
switch a.array {
case arraySetId:
metadata = append(metadata, jd.SET)
options = append(options, jd.SET)
case arrayMsetId:
metadata = append(metadata, jd.MULTISET)
options = append(options, jd.MULTISET)
default:
}
switch a.diffFormat {
case diffFormatMergeId:
metadata = append(metadata, jd.MERGE)
options = append(options, jd.MERGE)
}
return metadata
return options
}

func (a *app) parseAndTranslate(id string) (jd.JsonNode, error) {
func (a *app) parseAndTranslate(id, formatLast string) (jd.JsonNode, error) {
change := false
if a.format != a.formatLast {
if a.format != formatLast {
change = true
a.formatLast = a.format
}
value := a.getElementById(id)
nodeJson, errJson := jd.ReadJsonString(value.Get("value").String())
Expand Down Expand Up @@ -440,21 +461,23 @@ func (a *app) printDiff() {
metadata := a.getMetadata()
var fail bool
// Read a
aNode, err := a.parseAndTranslate(aJsonId)
aNode, err := a.parseAndTranslate(aJsonId, a.formatLast)
if err != nil {
a.setLabel(aErrorId, err.Error())
fail = true
} else {
a.setLabel(aErrorId, "")
}
// Read b
bNode, err := a.parseAndTranslate(bJsonId)
bNode, err := a.parseAndTranslate(bJsonId, a.formatLast)
if err != nil {
a.setLabel(bErrorId, err.Error())
fail = true
} else {
a.setLabel(bErrorId, "")
}
// Mark clean translation
a.formatLast = a.format
if fail {
a.setTextarea(diffId, "")
return
Expand Down Expand Up @@ -486,13 +509,14 @@ func (a *app) printPatch() {
metadata := a.getMetadata()
var fail bool
// Read a
aNode, err := a.parseAndTranslate(aJsonId)
aNode, err := a.parseAndTranslate(aJsonId, a.formatLast)
if err != nil {
a.setLabel(aErrorId, err.Error())
fail = true
} else {
a.setLabel(aErrorId, "")
}
a.formatLast = a.format
// Read diff
diff, err := a.parseAndTranslateDiff()
if err != nil {
Expand Down

0 comments on commit c911d87

Please sign in to comment.