 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
- type AppInfoResponse
- type ClientTokenResponse
- type DrivingLicense
- type EvaluationResponse
- type EvaluationValue
- type GeoJSON
- type GeoJSONFeature
- type GeoJSONGeometry
- type GeoJSONLocation
- type GeoJSONMetadata
- type GeoJSONType
- type GitResponse
- type LoginResponse
- type LoginTokenRequest
- type LogoutRequest
- type MapResponse
- type Pagination
- type PluginAuth
- type PluginListResponse
- type PluginRegisterRequest
- type PluginRegisterResponse
- type PluginResponse
- type RefreshTokenRequest
- type RegionEvaluationResponse
- type RegionListResponse
- type RegionResponse
- type RouteRequest
- type SensorDataListResponse
- type SensorDataResponse
- type SensorListResponse
- type SensorResponse
- type SensorStatus
- type ServerResponse
- type TreeAddSensorRequest
- type TreeClusterAddTreesRequest
- type TreeClusterCreateRequest
- type TreeClusterInListResponse
- type TreeClusterListResponse
- type TreeClusterResponse
- type TreeClusterUpdateRequest
- type TreeCreateRequest
- type TreeListResponse
- type TreeResponse
- type TreeSoilCondition
- type TreeUpdateRequest
- type UserListResponse
- type UserRegisterRequest
- type UserResponse
- type UserRole
- type UserStatus
- type UserUpdateRequest
- type VehicleCreateRequest
- type VehicleEvaluationResponse
- type VehicleListResponse
- type VehicleResponse
- type VehicleStatus
- type VehicleType
- type VehicleUpdateRequest
- type WateringPlanCreateRequest
- type WateringPlanInListResponse
- type WateringPlanListResponse
- type WateringPlanResponse
- type WateringPlanStatus
- type WateringPlanUpdateRequest
- type WateringStatus
- type WatermarkResponse
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AppInfoResponse ¶
type AppInfoResponse struct {
	Version   string         `json:"version"`
	BuildTime string         `json:"buildTime"`
	GoVersion string         `json:"goVersion"`
	Git       GitResponse    `json:"git"`
	Server    ServerResponse `json:"server"`
	Map       MapResponse    `json:"map"`
} //	@Name	AppInfo
    type ClientTokenResponse ¶
type ClientTokenResponse struct {
	AccessToken      string    `json:"access_token"`
	IDToken          string    `json:"id_token"`
	ExpiresIn        int       `json:"expires_in"`
	Expiry           time.Time `json:"expiry"`
	RefreshExpiresIn int       `json:"refresh_expires_in"`
	RefreshToken     string    `json:"refresh_token"`
	TokenType        string    `json:"token_type"`
	NotBeforePolicy  int       `json:"not_before_policy"`
	SessionState     string    `json:"session_state"`
	Scope            string    `json:"scope"`
} //	@Name	ClientToken
    type DrivingLicense ¶
type DrivingLicense string // @Name DrivingLicense
const ( DrivingLicenseB DrivingLicense = "B" DrivingLicenseBE DrivingLicense = "BE" DrivingLicenseC DrivingLicense = "C" DrivingLicenseCE DrivingLicense = "CE" )
type EvaluationResponse ¶
type EvaluationResponse struct {
	TreeCount             int64                        `json:"tree_count"`
	TreeClusterCount      int64                        `json:"treecluster_count"`
	SensorCount           int64                        `json:"sensor_count"`
	WateringPlanCount     int64                        `json:"watering_plan_count"`
	TotalWaterConsumption int64                        `json:"total_water_consumption"`
	UserWateringPlanCount int64                        `json:"user_watering_plan_count"`
	VehicleEvaluation     []*VehicleEvaluationResponse `json:"vehicle_evaluation"`
	RegionEvaluation      []*RegionEvaluationResponse  `json:"region_evaluation"`
} //	@Name	Evaluation
    type EvaluationValue ¶
type GeoJSON ¶
type GeoJSON struct {
	Type     GeoJSONType      `json:"type"`
	Bbox     []float64        `json:"bbox"`
	Features []GeoJSONFeature `json:"features"`
	Metadata GeoJSONMetadata  `json:"metadata"`
} //	@Name	GeoJson
    type GeoJSONFeature ¶
type GeoJSONFeature struct {
	Type       GeoJSONType     `json:"type"`
	Bbox       []float64       `json:"bbox"`
	Properties map[string]any  `json:"properties"`
	Geometry   GeoJSONGeometry `json:"geometry"`
} //	@Name	GeoJsonFeature
    type GeoJSONGeometry ¶
type GeoJSONGeometry struct {
	Type        GeoJSONType `json:"type"`
	Coordinates [][]float64 `json:"coordinates"`
} //	@Name	GeoJsonGeometry
    type GeoJSONLocation ¶
type GeoJSONMetadata ¶
type GeoJSONMetadata struct {
	StartPoint    GeoJSONLocation `json:"start_point"`
	EndPoint      GeoJSONLocation `json:"end_point"`
	WateringPoint GeoJSONLocation `json:"watering_point"`
} //	@Name	GeoJSONMetadata
    type GeoJSONType ¶
type GeoJSONType string // @Name GeoJsonType
const (
	FeatureCollection GeoJSONType = "FeatureCollection"
)
    type GitResponse ¶
type LoginResponse ¶
type LoginResponse struct {
	LoginURL string `json:"login_url"`
} //	@Name	LoginResponse
    type LoginTokenRequest ¶
type LoginTokenRequest struct {
	Code string `json:"code"`
} //	@Name	LoginTokenRequest
    type LogoutRequest ¶
type LogoutRequest struct {
	RefreshToken string `json:"refresh_token"`
} //	@Name	LogoutRequest
    type MapResponse ¶
type Pagination ¶
type PluginAuth ¶
type PluginListResponse ¶
type PluginListResponse struct {
	Plugins []PluginResponse `json:"plugins"`
} //	@name	PluginListResponse
    type PluginRegisterRequest ¶
type PluginRegisterResponse ¶
type PluginRegisterResponse struct {
	Success bool                `json:"success"`
	Token   ClientTokenResponse `json:"token"`
} //	@name	PluginRegister
    type PluginResponse ¶
type RefreshTokenRequest ¶
type RefreshTokenRequest struct {
	RefreshToken string `json:"refresh_token"`
} //	@Name	RefreshTokenRequest
    type RegionListResponse ¶
type RegionListResponse struct {
	Data       []*RegionResponse `json:"data"`
	Pagination *Pagination       `json:"pagination,omitempty" validate:"optional"`
} //	@Name	RegionList
    type RegionResponse ¶
type RouteRequest ¶
type SensorDataListResponse ¶
type SensorDataListResponse struct {
	Data []*SensorDataResponse `json:"data"`
} //	@Name	SensorDataList
    type SensorDataResponse ¶
type SensorListResponse ¶
type SensorListResponse struct {
	Data       []*SensorResponse `json:"data"`
	Pagination *Pagination       `json:"pagination,omitempty" validate:"optional"`
} //	@Name	SensorList
    type SensorResponse ¶
type SensorResponse struct {
	ID             string                 `json:"id"`
	CreatedAt      time.Time              `json:"created_at"`
	UpdatedAt      time.Time              `json:"updated_at"`
	Status         SensorStatus           `json:"status"`
	LatestData     *SensorDataResponse    `json:"latest_data"`
	Latitude       float64                `json:"latitude"`
	Longitude      float64                `json:"longitude"`
	Provider       string                 `json:"provider,omitempty"`
	AdditionalInfo map[string]interface{} `json:"additional_information,omitempty" validate:"optional"`
} //	@Name	Sensor
    type SensorStatus ¶
type SensorStatus string // @Name SensorStatus
const ( SensorStatusOnline SensorStatus = "online" SensorStatusOffline SensorStatus = "offline" SensorStatusUnknown SensorStatus = "unknown" )
type ServerResponse ¶
type TreeAddSensorRequest ¶
type TreeAddSensorRequest struct {
	SensorID *string `json:"sensor_id"`
} //	@Name	TreeAddSensor
    type TreeClusterAddTreesRequest ¶
type TreeClusterAddTreesRequest struct {
	TreeIDs []*int32 `json:"tree_ids"`
} //	@Name	TreeClusterAddTrees
    type TreeClusterCreateRequest ¶
type TreeClusterCreateRequest struct {
	Address        string                 `json:"address"`
	Description    string                 `json:"description"`
	TreeIDs        []*int32               `json:"tree_ids"`
	SoilCondition  TreeSoilCondition      `json:"soil_condition"`
	Name           string                 `json:"name"`
	Provider       string                 `json:"provider" validate:"optional"`
	AdditionalInfo map[string]interface{} `json:"additional_information" validate:"optional"`
} //	@Name	TreeClusterCreate
    type TreeClusterInListResponse ¶
type TreeClusterInListResponse struct {
	ID             int32                  `json:"id"`
	CreatedAt      time.Time              `json:"created_at"`
	UpdatedAt      time.Time              `json:"updated_at"`
	WateringStatus WateringStatus         `json:"watering_status"`
	LastWatered    *time.Time             `json:"last_watered,omitempty" validate:"optional"`
	MoistureLevel  float64                `json:"moisture_level"`
	Region         *RegionResponse        `json:"region,omitempty" validate:"optional"`
	Address        string                 `json:"address"`
	Description    string                 `json:"description"`
	Archived       bool                   `json:"archived"`
	Latitude       *float64               `json:"latitude"`
	Longitude      *float64               `json:"longitude"`
	TreeIDs        []*int32               `json:"tree_ids" validate:"optional"`
	SoilCondition  TreeSoilCondition      `json:"soil_condition"`
	Name           string                 `json:"name"`
	Provider       string                 `json:"provider,omitempty"`
	AdditionalInfo map[string]interface{} `json:"additional_information,omitempty" validate:"optional"`
} //	@Name	TreeClusterInList
    type TreeClusterListResponse ¶
type TreeClusterListResponse struct {
	Data       []*TreeClusterInListResponse `json:"data"`
	Pagination *Pagination                  `json:"pagination,omitempty" validate:"optional"`
} //	@Name	TreeClusterList
    type TreeClusterResponse ¶
type TreeClusterResponse struct {
	ID             int32                  `json:"id"`
	CreatedAt      time.Time              `json:"created_at"`
	UpdatedAt      time.Time              `json:"updated_at"`
	WateringStatus WateringStatus         `json:"watering_status"`
	LastWatered    *time.Time             `json:"last_watered,omitempty" validate:"optional"`
	MoistureLevel  float64                `json:"moisture_level"`
	Region         *RegionResponse        `json:"region,omitempty" validate:"optional"`
	Address        string                 `json:"address"`
	Description    string                 `json:"description"`
	Archived       bool                   `json:"archived"`
	Latitude       *float64               `json:"latitude"`
	Longitude      *float64               `json:"longitude"`
	Trees          []*TreeResponse        `json:"trees" validate:"optional"`
	SoilCondition  TreeSoilCondition      `json:"soil_condition"`
	Name           string                 `json:"name"`
	Provider       string                 `json:"provider,omitempty"`
	AdditionalInfo map[string]interface{} `json:"additional_information,omitempty" validate:"optional"`
} //	@Name	TreeCluster
    type TreeClusterUpdateRequest ¶
type TreeClusterUpdateRequest struct {
	Address        string                 `json:"address"`
	Description    string                 `json:"description"`
	TreeIDs        []*int32               `json:"tree_ids"`
	SoilCondition  TreeSoilCondition      `json:"soil_condition"`
	Name           string                 `json:"name"`
	Provider       string                 `json:"provider" validate:"optional"`
	AdditionalInfo map[string]interface{} `json:"additional_information" validate:"optional"`
} //	@Name	TreeClusterUpdate
    type TreeCreateRequest ¶
type TreeCreateRequest struct {
	TreeClusterID  *int32                 `json:"tree_cluster_id" validate:"optional"`
	PlantingYear   int32                  `json:"planting_year"`
	Species        string                 `json:"species"`
	Number         string                 `json:"number"`
	Latitude       float64                `json:"latitude"`
	Longitude      float64                `json:"longitude"`
	SensorID       *string                `json:"sensor_id" validate:"optional"`
	Description    string                 `json:"description"`
	Provider       string                 `json:"provider" validate:"optional"`
	AdditionalInfo map[string]interface{} `json:"additional_information" validate:"optional"`
} //	@Name	TreeCreate
    type TreeListResponse ¶
type TreeListResponse struct {
	Data       []*TreeResponse `json:"data"`
	Pagination *Pagination     `json:"pagination,omitempty" validate:"optional"`
} //	@Name	TreeList
    type TreeResponse ¶
type TreeResponse struct {
	ID             int32                  `json:"id"`
	CreatedAt      time.Time              `json:"created_at"`
	UpdatedAt      time.Time              `json:"updated_at"`
	TreeClusterID  *int32                 `json:"tree_cluster_id" validate:"optional"`
	Sensor         *SensorResponse        `json:"sensor" validate:"optional"`
	LastWatered    *time.Time             `json:"last_watered,omitempty" validate:"optional"`
	PlantingYear   int32                  `json:"planting_year"`
	Species        string                 `json:"species"`
	Number         string                 `json:"number"`
	Latitude       float64                `json:"latitude"`
	Longitude      float64                `json:"longitude"`
	WateringStatus WateringStatus         `json:"watering_status"`
	Description    string                 `json:"description"`
	Provider       string                 `json:"provider,omitempty"`
	AdditionalInfo map[string]interface{} `json:"additional_information,omitempty" validate:"optional"`
} //	@Name	Tree
    type TreeSoilCondition ¶
type TreeSoilCondition string // @Name SoilCondition
const ( TreeSoilConditionSchluffig TreeSoilCondition = "schluffig" TreeSoilConditionSandig TreeSoilCondition = "sandig" TreeSoilConditionLehmig TreeSoilCondition = "lehmig" TreeSoilConditionTonig TreeSoilCondition = "tonig" TreeSoilConditionUnknown TreeSoilCondition = "unknown" )
type TreeUpdateRequest ¶
type TreeUpdateRequest struct {
	TreeClusterID  *int32                 `json:"tree_cluster_id" validate:"optional"`
	PlantingYear   int32                  `json:"planting_year"`
	Species        string                 `json:"species"`
	Number         string                 `json:"number"`
	Latitude       float64                `json:"latitude"`
	Longitude      float64                `json:"longitude"`
	SensorID       *string                `json:"sensor_id" validate:"optional"`
	Description    string                 `json:"description"`
	Provider       string                 `json:"provider" validate:"optional"`
	AdditionalInfo map[string]interface{} `json:"additional_information" validate:"optional"`
} //	@Name	TreeUpdate
    type UserListResponse ¶
type UserListResponse struct {
	Data []*UserResponse `json:"data"`
} //	@Name	UserList
    type UserRegisterRequest ¶
type UserRegisterRequest struct {
	Username    string   `json:"username"`
	FirstName   string   `json:"first_name"`
	LastName    string   `json:"last_name"`
	Email       string   `json:"email"`
	EmployeeID  string   `json:"employee_id,omitempty"`
	PhoneNumber string   `json:"phone_number,omitempty"`
	Password    string   `json:"password"`
	Roles       []string `json:"roles"`
	Avatar      string   `json:"avatar_url,omitempty"`
} //	@Name	UserRegister
    type UserResponse ¶
type UserResponse struct {
	ID              string           `json:"id"`
	CreatedAt       time.Time        `json:"created_at"`
	Username        string           `json:"username"`
	FirstName       string           `json:"first_name"`
	LastName        string           `json:"last_name"`
	Email           string           `json:"email"`
	EmployeeID      string           `json:"employee_id"`
	PhoneNumber     string           `json:"phone_number"`
	EmailVerified   bool             `json:"email_verified"`
	Avatar          string           `json:"avatar_url"`
	Roles           []UserRole       `json:"roles"`
	DrivingLicenses []DrivingLicense `json:"driving_licenses"`
	Status          UserStatus       `json:"status"`
} //	@Name	User
    type UserStatus ¶
type UserStatus string // @Name UserStatus
const ( UserStatusAvailable UserStatus = "available" UserStatusAbsent UserStatus = "absent" UserStatusUnknown UserStatus = "unknown" )
type UserUpdateRequest ¶
type UserUpdateRequest struct {
	Username    string `json:"username,omitempty"`
	FirstName   string `json:"first_name,omitempty"`
	LastName    string `json:"last_name,omitempty"`
	Email       string `json:"email,omitempty"`
	EmployeeID  string `json:"employee_id,omitempty"`
	PhoneNumber string `json:"phone_number,omitempty"`
	Avatar      string `json:"avatar_url,omitempty"`
} //	@Name	UserUpdate
    type VehicleCreateRequest ¶
type VehicleCreateRequest struct {
	NumberPlate    string                 `json:"number_plate"`
	Description    string                 `json:"description"`
	WaterCapacity  float64                `json:"water_capacity"`
	Status         VehicleStatus          `json:"status"`
	Type           VehicleType            `json:"type"`
	Model          string                 `json:"model"`
	DrivingLicense DrivingLicense         `json:"driving_license"`
	Height         float64                `json:"height"`
	Width          float64                `json:"width"`
	Length         float64                `json:"length"`
	Weight         float64                `json:"weight"`
	Provider       string                 `json:"provider" validate:"optional"`
	AdditionalInfo map[string]interface{} `json:"additional_information" validate:"optional"`
} //	@Name	VehicleCreate
    type VehicleListResponse ¶
type VehicleListResponse struct {
	Data       []*VehicleResponse `json:"data"`
	Pagination *Pagination        `json:"pagination,omitempty" validate:"optional"`
} //	@Name	VehicleList
    type VehicleResponse ¶
type VehicleResponse struct {
	ID             int32                  `json:"id"`
	CreatedAt      time.Time              `json:"created_at"`
	UpdatedAt      time.Time              `json:"updated_at"`
	ArchivedAt     *time.Time             `json:"archived_at,omitempty"`
	NumberPlate    string                 `json:"number_plate"`
	Description    string                 `json:"description"`
	WaterCapacity  float64                `json:"water_capacity"`
	Status         VehicleStatus          `json:"status"`
	Type           VehicleType            `json:"type"`
	Model          string                 `json:"model"`
	DrivingLicense DrivingLicense         `json:"driving_license"`
	Height         float64                `json:"height"`
	Width          float64                `json:"width"`
	Length         float64                `json:"length"`
	Weight         float64                `json:"weight"`
	Provider       string                 `json:"provider,omitempty"`
	AdditionalInfo map[string]interface{} `json:"additional_information,omitempty" validate:"optional"`
} //	@Name	Vehicle
    type VehicleStatus ¶
type VehicleStatus string // @Name VehicleStatus
const ( VehicleStatusActive VehicleStatus = "active" VehicleStatusAvailable VehicleStatus = "available" VehicleStatusNotAvailable VehicleStatus = "not available" VehicleStatusUnknown VehicleStatus = "unknown" )
type VehicleType ¶
type VehicleType string // @Name VehicleType
const ( VehicleTypeTransporter VehicleType = "transporter" VehicleTypeTrailer VehicleType = "trailer" VehicleTypeUnknown VehicleType = "unknown" )
type VehicleUpdateRequest ¶
type VehicleUpdateRequest struct {
	NumberPlate    string                 `json:"number_plate"`
	Description    string                 `json:"description"`
	WaterCapacity  float64                `json:"water_capacity"`
	Status         VehicleStatus          `json:"status"`
	Type           VehicleType            `json:"type"`
	Model          string                 `json:"model"`
	DrivingLicense DrivingLicense         `json:"driving_license"`
	Height         float64                `json:"height"`
	Width          float64                `json:"width"`
	Length         float64                `json:"length"`
	Weight         float64                `json:"weight"`
	Provider       string                 `json:"provider" validate:"optional"`
	AdditionalInfo map[string]interface{} `json:"additional_information" validate:"optional"`
} //	@Name	VehicleUpdate
    type WateringPlanCreateRequest ¶
type WateringPlanCreateRequest struct {
	Date           time.Time              `json:"date"`
	Description    string                 `json:"description"`
	TreeClusterIDs []*int32               `json:"tree_cluster_ids"`
	TransporterID  *int32                 `json:"transporter_id"`
	TrailerID      *int32                 `json:"trailer_id" validate:"optional"`
	UserIDs        []string               `json:"user_ids"`
	Provider       string                 `json:"provider" validate:"optional"`
	AdditionalInfo map[string]interface{} `json:"additional_information" validate:"optional"`
} //	@Name	WateringPlanCreate
    type WateringPlanInListResponse ¶
type WateringPlanInListResponse struct {
	ID                 int32                        `json:"id"`
	CreatedAt          time.Time                    `json:"created_at"`
	UpdatedAt          time.Time                    `json:"updated_at"`
	Date               time.Time                    `json:"date"`
	Description        string                       `json:"description"`
	Status             WateringPlanStatus           `json:"status"`
	Distance           *float64                     `json:"distance"`
	TotalWaterRequired *float64                     `json:"total_water_required"`
	UserIDs            []*uuid.UUID                 `json:"user_ids"`
	TreeClusters       []*TreeClusterInListResponse `json:"treeclusters"`
	Transporter        *VehicleResponse             `json:"transporter"`
	Trailer            *VehicleResponse             `json:"trailer" validate:"optional"`
	CancellationNote   string                       `json:"cancellation_note"`
	Provider           string                       `json:"provider,omitempty"`
	AdditionalInfo     map[string]interface{}       `json:"additional_information,omitempty" validate:"optional"`
} //	@Name	WateringPlanInList
    type WateringPlanListResponse ¶
type WateringPlanListResponse struct {
	Data       []*WateringPlanInListResponse `json:"data"`
	Pagination *Pagination                   `json:"pagination,omitempty" validate:"optional"`
} //	@Name	WateringPlanList
    type WateringPlanResponse ¶
type WateringPlanResponse struct {
	ID                 int32                        `json:"id"`
	CreatedAt          time.Time                    `json:"created_at"`
	UpdatedAt          time.Time                    `json:"updated_at"`
	Date               time.Time                    `json:"date"`
	Description        string                       `json:"description"`
	Status             WateringPlanStatus           `json:"status"`
	Distance           *float64                     `json:"distance"`
	TotalWaterRequired *float64                     `json:"total_water_required"`
	UserIDs            []*uuid.UUID                 `json:"user_ids"`
	TreeClusters       []*TreeClusterInListResponse `json:"treeclusters"`
	Transporter        *VehicleResponse             `json:"transporter"`
	Trailer            *VehicleResponse             `json:"trailer" validate:"optional"`
	CancellationNote   string                       `json:"cancellation_note"`
	Evaluation         []*EvaluationValue           `json:"evaluation"`
	GpxURL             string                       `json:"gpx_url"`
	Duration           *float64                     `json:"duration"`
	RefillCount        int32                        `json:"refill_count"`
	Provider           string                       `json:"provider,omitempty"`
	AdditionalInfo     map[string]interface{}       `json:"additional_information,omitempty" validate:"optional"`
} //	@Name	WateringPlan
    type WateringPlanStatus ¶
type WateringPlanStatus string // @Name WateringPlanStatus
const ( WateringPlanStatusPlanned WateringPlanStatus = "planned" WateringPlanStatusActive WateringPlanStatus = "active" WateringPlanStatusCanceled WateringPlanStatus = "canceled" WateringPlanStatusFinished WateringPlanStatus = "finished" WateringPlanStatusNotCompeted WateringPlanStatus = "not competed" WateringPlanStatusUnknown WateringPlanStatus = "unknown" )
type WateringPlanUpdateRequest ¶
type WateringPlanUpdateRequest struct {
	Date             time.Time              `json:"date"`
	Description      string                 `json:"description"`
	TreeClusterIDs   []*int32               `json:"tree_cluster_ids"`
	TransporterID    *int32                 `json:"transporter_id"`
	TrailerID        *int32                 `json:"trailer_id" validate:"optional"`
	UserIDs          []string               `json:"user_ids"`
	CancellationNote string                 `json:"cancellation_note"`
	Status           WateringPlanStatus     `json:"status"`
	Evaluation       []*EvaluationValue     `json:"evaluation" validate:"optional"`
	Provider         string                 `json:"provider" validate:"optional"`
	AdditionalInfo   map[string]interface{} `json:"additional_information" validate:"optional"`
} //	@Name	WateringPlanUpdate
    type WateringStatus ¶
type WateringStatus string // @Name WateringStatus
const ( WateringStatusGood WateringStatus = "good" WateringStatusModerate WateringStatus = "moderate" WateringStatusBad WateringStatus = "bad" WateringStatusJustWatered WateringStatus = "just watered" WateringStatusUnknown WateringStatus = "unknown" )
type WatermarkResponse ¶
       Source Files
      ¶
      Source Files
      ¶
    
   Click to show internal directories. 
   Click to hide internal directories.