github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/internal/server/service/preview.go (about) 1 package serverService 2 3 import ( 4 "fmt" 5 6 consts "github.com/easysoft/zendata/internal/pkg/const" 7 "github.com/easysoft/zendata/internal/pkg/domain" 8 "github.com/easysoft/zendata/internal/pkg/model" 9 "github.com/easysoft/zendata/internal/pkg/service" 10 serverRepo "github.com/easysoft/zendata/internal/server/repo" 11 fileUtils "github.com/easysoft/zendata/pkg/utils/file" 12 "github.com/easysoft/zendata/pkg/utils/vari" 13 "github.com/jinzhu/copier" 14 "gopkg.in/yaml.v3" 15 ) 16 17 type PreviewService struct { 18 DefRepo *serverRepo.DefRepo `inject:""` 19 FieldRepo *serverRepo.FieldRepo `inject:""` 20 ReferRepo *serverRepo.ReferRepo `inject:""` 21 InstancesRepo *serverRepo.InstancesRepo `inject:""` 22 23 MainService *service.MainService `inject:""` 24 OutputService *service.OutputService `inject:""` 25 RangeService *service.RangeService `inject:""` 26 } 27 28 func (s *PreviewService) PreviewDefData(defId uint) (data string) { 29 def, _ := s.DefRepo.Get(defId) 30 31 vari.GlobalVars.Total = 10 32 33 //lines := action.Generate([]string{def.Path}, "", consts.FormatData, "") 34 s.MainService.GenerateDataByFile([]string{def.Path}) 35 lines := s.OutputService.GenText(false) 36 37 data = s.linesToStr(lines) 38 39 return 40 } 41 func (s *PreviewService) PreviewFieldData(fieldId uint, fieldType string) (data string) { 42 var field model.ZdField 43 44 if fieldType == consts.ResTypeDef { 45 field, _ = s.FieldRepo.Get(fieldId) 46 } else if fieldType == consts.ResTypeInstances { 47 instItem, _ := s.InstancesRepo.GetItem(fieldId) 48 field.From = instItem.From 49 copier.Copy(&field, instItem) 50 } 51 52 ref := model.ZdRefer{} 53 if !field.IsRange { 54 ref, _ = s.ReferRepo.GetByOwnerIdAndType(field.ID, fieldType) 55 } 56 57 fld := domain.DefField{} 58 genFieldFromZdField(field, ref, &fld) 59 60 def := domain.DefData{} 61 def.Fields = append(def.Fields, fld) 62 defContent, _ := yaml.Marshal(def) 63 64 configFile := vari.WorkDir + "tmp" + consts.PthSep + ".temp.yaml" 65 fileUtils.WriteFile(configFile, string(defContent)) 66 67 //lines := action.Generate([]string{configFile}, field.Field, consts.FormatData, "") 68 s.MainService.GenerateDataByFile([]string{configFile}) 69 lines := s.OutputService.GenText(false) 70 71 data = s.linesToStr(lines) 72 73 return 74 } 75 func (s *PreviewService) linesToStr(lines []interface{}) (data string) { 76 for index, line := range lines { 77 if index > 0 { 78 data += "<br/>" 79 } 80 data += fmt.Sprint(line) 81 } 82 83 return 84 }