far disks

main
parent 1dae2f7211
commit a0406e5c71

@ -24,6 +24,7 @@ type Server struct {
Run string `json:"run"` Run string `json:"run"`
} }
// Запускает web-сервер (локальный)
func (s *Server) Start() { func (s *Server) Start() {
os.Chdir(s.Dir) os.Chdir(s.Dir)
//s := subprocess.New(".\\"+name+".exe") //s := subprocess.New(".\\"+name+".exe")
@ -31,18 +32,9 @@ func (s *Server) Start() {
p.ExecAsync() p.ExecAsync()
} }
// WindowConfig хранит настройки окна
type WindowConfig struct {
Width int `json:"width"`
Height int `json:"height"`
X int `json:"x"`
Y int `json:"y"`
}
// App struct // App struct
type App struct { type App struct {
ctx context.Context ctx context.Context
windowConfig WindowConfig
} }
// NewApp создает новый экземпляр App // NewApp создает новый экземпляр App
@ -104,11 +96,28 @@ func (a *App) GetDownloads() string {
func (a *App) StartFarDownloads() string { func (a *App) StartFarDownloads() string {
cmd := `far "D:\soft" "C:\Users\admin\Downloads"` cmd := `far "D:\soft" "C:\Users\admin\Downloads"`
far := subprocess.New(cmd) far := subprocess.New(cmd)
err := far.Exec() far.ExecAsync()
if err != nil { // runtime.LogInfo(a.ctx, "команда выполнена успешно")
runtime.LogError(a.ctx, err.Error()) return "ok"
} }
runtime.LogInfo(a.ctx, "команда выполнена успешно")
// StartFarBooks - запускает far для fb2
func (a *App) StartFarBooks() string {
cmd := `far "D:\books\2\fb2" "D:\books\2\fb2\images"`
far := subprocess.New(cmd)
far.ExecAsync()
alacritty := subprocess.New("alacritty --working-directory D:/books/2/fb2")
alacritty.ExecAsync()
// runtime.LogInfo(a.ctx, "команда выполнена успешно")
return "ok"
}
// StartFarDisks - запускает far для работы с дисками
func (a *App) StartFarDisks() string {
cmd := `far "D:\" "C:\"`
far := subprocess.New(cmd)
far.ExecAsync()
// runtime.LogInfo(a.ctx, "команда выполнена успешно")
return "ok" return "ok"
} }

@ -1,110 +1,103 @@
<script> <script>
import logo from "./assets/images/logo-universal.png"; import logo from "./assets/images/logo-universal.png";
import { import { GetStatus, Weed, GetProjects,
GetStatus, StartFar, GetDisks, GetDownloads,
Weed, StartFarDownloads, StartFarBooks,
GetProjects, StartFarDisks } from "../wailsjs/go/main/App.js";
StartFar,
GetDisks, import { StartServer } from "../wailsjs/go/main/App.js";
GetDownloads, import TailwindCss from "./TailwindCSS.svelte";
StartFarDownloads} from "../wailsjs/go/main/App.js"; import servers from "./servers.js";
// import {BrowserOpenURL} from '../wailsjs/runtime/runtime.js'
import { StartServer } from "../wailsjs/go/main/App.js";
import TailwindCss from "./TailwindCSS.svelte"; let resultText = "Ваше имя 👇";
import servers from "./servers.js"; let local = servers;
// import {BrowserOpenURL} from '../wailsjs/runtime/runtime.js' let projects = [];
let disks = [];
let resultText = "Ваше имя 👇"; let downloads = "";
let local = servers; let cnt_pic = "0";
let projects = []; let pics = true;
let disks = [];
let downloads = ""; function get_disks() {
let cnt_pic = "0"; console.log("get disks");
let normal = true; GetDisks().then((result) => {
let pics = true; console.log("получена информация о дисках:", result);
disks = result;
function get_disks() { disks[0].normal = disks[0].Free > 20;
console.log("get disks") disks[1].normal = disks[1].Free > 50;
GetDisks().then((result) => { });
console.log("получена информация о дисках:", result) }
disks = result
disks[0].normal = disks[0].Free > 20; function get_downloads() {
disks[1].normal = disks[1].Free > 50; console.log("get downloads");
}) GetDownloads().then((result) => {
} console.log("получена информация о downloads:", result);
downloads = result;
function get_downloads() { });
console.log("get downloads") }
GetDownloads().then((result) => {
console.log("получена информация о downloads:", result) function start_far(project) {
downloads = result StartFar(project.last_directory_path);
}) }
}
function start_server(server) {
function start_far(project) { const s = JSON.stringify(server);
StartFar(project.last_directory_path) console.log(s);
} StartServer(s).then((result) => {
resultText = result;
function far_downloads() { console.log(resultText);
StartFarDownloads() server.run = "running";
} local = local;
});
function start_server(server) { }
let s = JSON.stringify(server);
console.log(s); function weed() {
StartServer(s).then((result) => { // console.log("weed");
resultText = result; Weed().then(() => {
console.log(resultText); get_status();
server.run = "running"; });
local = local; }
});
} function get_status() {
console.log("запрос downloads");
function weed() { get_downloads();
// console.log("weed");
Weed().then(() => { console.log("запрос дисков");
get_status(); get_disks();
});
} console.log("запрос статуса");
GetStatus().then((result) => {
function get_status() { console.log("result:", result);
console.log("запрос downloads"); cnt_pic = result;
get_downloads() // сразу сбросим признак работающего сервера
local = local.map((server) => {
console.log("запрос дисков"); server.run = "idle";
get_disks() return server;
});
console.log("запрос статуса"); });
GetStatus().then((result) => {
console.log("result:", result); console.log("запрос проектов");
cnt_pic = result; GetProjects().then((result) => {
// сразу сбросим признак работающего сервера console.log("projects:", result);
local = local.map((server) => { projects = result;
server.run = "idle"; });
return server; }
});
}); get_status();
console.log("запрос проектов");
GetProjects().then((result) => {
console.log("projects:", result);
projects = result;
});
}
get_status();
</script> </script>
<TailwindCss /> <TailwindCss />
<div class="container mx-auto pt-4 mb-4"> <div class="container mx-auto pt-4 mb-4">
<div class="disk-panel text-neutral-300"> <div class="disk-panel text-neutral-300">
{#each disks as disk} {#each disks as disk}
<div> <div>
{disk.Name} {disk.Name}
<span class={disk.normal ? 'info' : 'danger'}>{disk.Free} Gb</span> <a href="#" on:click={StartFarDisks} class={disk.normal ? "info" : "danger"}>
</div> {disk.Free} Gb
{/each} </a>
</div>
{/each}
</div> </div>
</div> </div>
@ -112,108 +105,88 @@ get_status();
<h1 class="text-blue-200 text-2xl">СЕРВЕРА</h1> <h1 class="text-blue-200 text-2xl">СЕРВЕРА</h1>
{#each local as server} {#each local as server}
<div class="flex justify-between px-4"> <div class="flex justify-between px-4">
<button <button class="text-teal-600 hover:text-teal-200 hover:font-normal hover:underline hover:underline-offset-2 cursor-pointer" on:click={() => start_server(server)}>
class="text-teal-600 hover:text-teal-200 hover:font-normal hover:underline hover:underline-offset-2 cursor-pointer"
on:click={ () => start_server(server)}
>
{server.name} {server.name}
</button> </button>
<button class="text-neutral-300"> <button class="text-neutral-300">
<span class:text-red-300={server.run === "running"}> <span class:text-red-300={server.run === "running"}>
{server.run} {server.run}
</span> </span>
</button> </button>
</div> </div>
{/each} {/each}
</div> </div>
<hr class="mb-2 mx-4 text-slate-600"/> <hr class="mb-2 mx-4 text-slate-600" />
<div class="container mx-auto pt-4 mb-8"> <div class="container mx-auto pt-4 mb-8">
<h1 class="text-blue-200 text-2xl">УТИЛИТЫ</h1> <h1 class="text-blue-200 text-2xl">УТИЛИТЫ</h1>
<div class="flex flex-col h-full justify-between"> <div class="flex flex-col h-full justify-between">
<div class="h-24"> <div class="h-24">
<div class="flex justify-between px-4"> <div class="flex justify-between px-4">
<button <button class="text-teal-600 hover:text-teal-200 hover:font-normal hover:underline hover:underline-offset-2 cursor-pointer" on:click={weed}> Weed (python) </button>
class="text-teal-600 hover:text-teal-200 hover:font-normal hover:underline hover:underline-offset-2 cursor-pointer"
on:click={weed}
>
Weed (python)
</button>
<div class="text-neutral-300"> <div class="text-neutral-300">
<span class={pics ? 'warning' : 'info'}>{cnt_pic}</span> <span class={pics ? "warning" : "info"}>{cnt_pic}</span>
</div> </div>
</div> </div>
<div class="flex justify-between px-4"> <div class="flex justify-between px-4">
<button <button class="text-teal-600 hover:text-teal-200 hover:font-normal hover:underline hover:underline-offset-2 cursor-pointer"
class="text-teal-600 hover:text-teal-200 hover:font-normal hover:underline hover:underline-offset-2 cursor-pointer" on:click={StartFarDownloads}> Download </button>
on:click={far_downloads}
>
Download
</button>
<div class="text-neutral-300"> <div class="text-neutral-300">
<span class="info">{downloads}</span> <span class="info">{downloads}</span>
</div> </div>
</div> </div>
</div> <div class="flex justify-between px-4">
<button class="text-teal-600 hover:text-teal-200 hover:font-normal hover:underline hover:underline-offset-2 cursor-pointer"
on:click={StartFarBooks}> Books </button>
</div>
</div>
</div> </div>
</div> </div>
<hr class="mb-2 mx-4 text-slate-600"/> <hr class="mb-2 mx-4 text-slate-600" />
<div class="container mx-auto pt-4 mb-8"> <div class="container mx-auto pt-4 mb-8">
<h1 class="text-blue-200 text-2xl">ПРОЕКТЫ</h1> <h1 class="text-blue-200 text-2xl">ПРОЕКТЫ</h1>
{#each projects as project} {#each projects as project}
<div class="flex justify-between px-4"> <div class="flex justify-between px-4">
<button <button class="text-teal-600 hover:text-teal-200 hover:font-normal hover:underline hover:underline-offset-2 cursor-pointer" on:click={() => start_far(project)}>
class="text-teal-600 hover:text-teal-200 hover:font-normal hover:underline hover:underline-offset-2 cursor-pointer"
on:click={ () => start_far(project) }
>
{project.last_directory} {project.last_directory}
</button> </button>
<div class="text-neutral-300"> <div class="text-neutral-300">
<span class="info"> {project.name} </span> <span class="info"> {project.name} </span>
</div> </div>
</div> </div>
{/each} {/each}
</div> </div>
<!-- панель кнопок --> <!-- панель кнопок -->
<button <button
on:click={get_status} on:click={get_status}
class="absolute right-4 bottom-4 class="absolute right-4 bottom-4
bg-slate-700 hover:bg-slate-500 bg-slate-700 hover:bg-slate-500
p-2 rounded-full"> p-2 rounded-full"
<svg >
xmlns="http://www.w3.org/2000/svg" <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="feather feather-refresh-ccw cursor-pointer">
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="3"
stroke-linecap="round"
stroke-linejoin="round"
class="feather feather-refresh-ccw cursor-pointer">
<polyline points="1 4 1 10 7 10"></polyline><polyline points="23 20 23 14 17 14"></polyline><path d="M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15"></path> <polyline points="1 4 1 10 7 10"></polyline><polyline points="23 20 23 14 17 14"></polyline><path d="M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15"></path>
</svg> </svg>
</button> </button>
<style> <style>
.disk-panel { .disk-panel {
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
} }
.info { .info {
color: lightgreen; color: lightgreen;
} }
.danger { .danger {
color: red; color: red;
} }
.warning { .warning {
color: orange; color: orange;
} }
</style> </style>

@ -14,6 +14,10 @@ export function Greet(arg1:string):Promise<string>;
export function StartFar(arg1:string):Promise<string>; export function StartFar(arg1:string):Promise<string>;
export function StartFarBooks():Promise<string>;
export function StartFarDisks():Promise<string>;
export function StartFarDownloads():Promise<string>; export function StartFarDownloads():Promise<string>;
export function StartServer(arg1:string):Promise<string>; export function StartServer(arg1:string):Promise<string>;

@ -26,6 +26,14 @@ export function StartFar(arg1) {
return window['go']['main']['App']['StartFar'](arg1); return window['go']['main']['App']['StartFar'](arg1);
} }
export function StartFarBooks() {
return window['go']['main']['App']['StartFarBooks']();
}
export function StartFarDisks() {
return window['go']['main']['App']['StartFarDisks']();
}
export function StartFarDownloads() { export function StartFarDownloads() {
return window['go']['main']['App']['StartFarDownloads'](); return window['go']['main']['App']['StartFarDownloads']();
} }

Loading…
Cancel
Save