import watch can now also add filters instead of clearing existing
This commit is contained in:
parent
baa442104a
commit
be7ca26b19
5 changed files with 43 additions and 2 deletions
28
main.go
28
main.go
|
@ -3,6 +3,7 @@ package main
|
|||
import (
|
||||
"embed"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"flag"
|
||||
"fmt"
|
||||
"html/template"
|
||||
|
@ -690,6 +691,22 @@ func (web *Web) importWatch(c *gin.Context) {
|
|||
c.AbortWithError(http.StatusBadRequest, err)
|
||||
return
|
||||
}
|
||||
importType := c.PostForm("type")
|
||||
if !(importType == "clear" || importType == "add") {
|
||||
c.AbortWithError(http.StatusBadRequest, errors.New("Unknown Import Type"))
|
||||
return
|
||||
}
|
||||
clearFilters := importType == "clear"
|
||||
|
||||
offsetX := 0
|
||||
offsetY := 0
|
||||
|
||||
if !clearFilters {
|
||||
offsetX, _ = strconv.Atoi(c.PostForm("offset_x"))
|
||||
offsetY, _ = strconv.Atoi(c.PostForm("offset_y"))
|
||||
offsetX *= -1
|
||||
offsetY *= -1
|
||||
}
|
||||
|
||||
file, err := c.FormFile("json")
|
||||
|
||||
|
@ -714,7 +731,9 @@ func (web *Web) importWatch(c *gin.Context) {
|
|||
|
||||
// stop/delete cronjobs running for this watch
|
||||
var cronFilters []Filter
|
||||
if !clearFilters {
|
||||
web.db.Model(&Filter{}).Where("watch_id = ? AND type = 'cron'", watchID).Find(&cronFilters)
|
||||
}
|
||||
for _, filter := range cronFilters {
|
||||
entryID, exist := web.cronWatch[filter.ID]
|
||||
if exist {
|
||||
|
@ -728,9 +747,14 @@ func (web *Web) importWatch(c *gin.Context) {
|
|||
filter := &export.Filters[i]
|
||||
filterMap[filter.ID] = filter
|
||||
filter.ID = 0
|
||||
filter.X += offsetX
|
||||
filter.Y += offsetY
|
||||
filter.WatchID = uint(watchID)
|
||||
}
|
||||
|
||||
if clearFilters {
|
||||
web.db.Delete(&Filter{}, "watch_id = ?", watchID)
|
||||
}
|
||||
|
||||
if len(export.Filters) > 0 {
|
||||
tx := web.db.Create(&export.Filters)
|
||||
|
@ -740,7 +764,7 @@ func (web *Web) importWatch(c *gin.Context) {
|
|||
}
|
||||
for i := range export.Filters {
|
||||
filter := &export.Filters[i]
|
||||
if filter.Type == "cron" {
|
||||
if filter.Type == "cron" && filter.Var2 != nil && *filter.Var2 == "yes" {
|
||||
entryID, err := web.cron.AddFunc(filter.Var1, func() { triggerSchedule(filter.WatchID, web, &filter.ID) })
|
||||
if err != nil {
|
||||
log.Println("Could not start job for Watch: ", filter.WatchID)
|
||||
|
@ -752,7 +776,9 @@ func (web *Web) importWatch(c *gin.Context) {
|
|||
}
|
||||
}
|
||||
|
||||
if clearFilters {
|
||||
web.db.Delete(&FilterConnection{}, "watch_id = ?", watchID)
|
||||
}
|
||||
for i := range export.Connections {
|
||||
connection := &export.Connections[i]
|
||||
connection.ID = 0
|
||||
|
|
|
@ -568,6 +568,10 @@ var Diagrams = /** @class */ (function () {
|
|||
if (this.mouseState.panning) {
|
||||
this.mouseState.offset.x += this.mouseState.delta.x;
|
||||
this.mouseState.offset.y += this.mouseState.delta.y;
|
||||
var importOffsetInputX = document.getElementById("offset_x");
|
||||
importOffsetInputX.value = this.mouseState.offset.x.toString();
|
||||
var importOffsetInputY = document.getElementById("offset_y");
|
||||
importOffsetInputY.value = this.mouseState.offset.y.toString();
|
||||
}
|
||||
this.mouseState.world.x = this.mouseState.canvas.x - this.mouseState.offset.x;
|
||||
this.mouseState.world.y = this.mouseState.canvas.y - this.mouseState.offset.y;
|
||||
|
|
|
@ -611,6 +611,12 @@ class Diagrams {
|
|||
if (this.mouseState.panning){
|
||||
this.mouseState.offset.x += this.mouseState.delta.x;
|
||||
this.mouseState.offset.y += this.mouseState.delta.y;
|
||||
|
||||
let importOffsetInputX = document.getElementById("offset_x") as HTMLInputElement;
|
||||
importOffsetInputX.value = this.mouseState.offset.x.toString();
|
||||
|
||||
let importOffsetInputY = document.getElementById("offset_y") as HTMLInputElement;
|
||||
importOffsetInputY.value = this.mouseState.offset.y.toString();
|
||||
}
|
||||
|
||||
this.mouseState.world.x = this.mouseState.canvas.x - this.mouseState.offset.x;
|
||||
|
|
|
@ -169,6 +169,12 @@ GoWatch Edit {{ .Watch.Name }}
|
|||
<div class="mb-3">
|
||||
<label for="json" class="form-label">Upload JSON to import</label>
|
||||
<input class="form-control" type="file" id="json" name="json">
|
||||
<select class="form-select form-select-lg mb-3 mt-2" name="type">
|
||||
<option value="clear" selected>Clear filters</option>
|
||||
<option value="add">Add to filters</option>
|
||||
</select>
|
||||
<input type="hidden" id="offset_x" name="offset_x" value="0">
|
||||
<input type="hidden" id="offset_y" name="offset_y" value="0">
|
||||
<div class="col-auto mt-3">
|
||||
<button type="submit" class="btn btn-primary mb-3">Import</button>
|
||||
</div>
|
||||
|
|
1
todo.md
1
todo.md
|
@ -1,5 +1,4 @@
|
|||
# Todo
|
||||
- import options add/clear
|
||||
- comments
|
||||
- safe escape {{ }} for pages
|
||||
- 'jitter' for cronjobs after first start ?
|
||||
|
|
Loading…
Add table
Reference in a new issue