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  }