generated from VLADIMIR/template
update editor
This commit is contained in:
parent
e1a6be0836
commit
d372104760
@ -197,6 +197,8 @@ message GetGraphRsp {
|
||||
message Node {
|
||||
int32 id = 1;
|
||||
string label = 2;
|
||||
string name = 3;
|
||||
string text = 4;
|
||||
}
|
||||
message Edge {
|
||||
int32 from = 1;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
:root{--vt-c-white: #ffffff;--vt-c-white-soft: #f8f8f8;--vt-c-white-mute: #f2f2f2;--vt-c-black: #181818;--vt-c-black-soft: #222222;--vt-c-black-mute: #282828;--vt-c-indigo: #2c3e50;--vt-c-divider-light-1: rgba(60, 60, 60, .29);--vt-c-divider-light-2: rgba(60, 60, 60, .12);--vt-c-divider-dark-1: rgba(84, 84, 84, .65);--vt-c-divider-dark-2: rgba(84, 84, 84, .48);--vt-c-text-light-1: var(--vt-c-indigo);--vt-c-text-light-2: rgba(60, 60, 60, .66);--vt-c-text-dark-1: var(--vt-c-white);--vt-c-text-dark-2: rgba(235, 235, 235, .64);--main-color: rgba(34, 50, 60, 1);--second-color: rgb(97, 74, 22);--main-back-color: rgba(240, 240, 240, 1);--main-back-item-color: rgba(254, 254, 254, 1)}:root{--color-background: var(--vt-c-white);--color-background-soft: var(--vt-c-white-soft);--color-background-mute: var(--vt-c-white-mute);--color-border: var(--vt-c-divider-light-2);--color-border-hover: var(--vt-c-divider-light-1);--color-heading: var(--vt-c-text-light-1);--color-text: var(--vt-c-text-light-1);--section-gap: 160px}*,*:before,*:after{box-sizing:border-box;margin:0;font-weight:400}body{min-height:100dvh;color:var(--color-text);background:var(--main-back-color);transition:color .5s,background-color .5s;line-height:1.6;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:15px;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.input-custom{width:100%;box-sizing:border-box;margin-bottom:15px}.button-custom{margin-left:auto;background-color:var(--main-color);font-weight:600;color:#fff}.button-custom-inline{margin:10px;background-color:var(--main-color);font-weight:600;color:#fff;padding:6px 8px;border:1px solid #ddd;border-radius:15px;font-size:14px}.button-custom:hover,.button-custom-inline:hover{background-color:var(--second-color)}.input-custom,.button-custom{padding:12px 16px;border:1px solid #ddd;border-radius:15px;font-size:16px}.button-container{display:flex}.center-message{display:flex;justify-content:center;align-items:center;height:calc(100dvh - 100px);text-align:center}.qr[data-v-666b8d35]{position:absolute;top:130px;right:30px;text-align:center;width:120px}.header-block[data-v-5b6894ef]{background-color:var(--main-color);font-size:large;color:#fff;vertical-align:middle;padding:10px 0 10px 16px;font-weight:700}.buttons-block[data-v-27835e5c]{padding-top:5px}.button-menu[data-v-27835e5c]{margin:5px 10px 5px 0}table[data-v-27835e5c]{width:700px;border-collapse:collapse;margin:30px auto;border:1px solid #444444}th[data-v-27835e5c],td[data-v-27835e5c]{padding:12px;text-align:left}th[data-v-27835e5c]{background-color:var(--main-color);color:#fff;font-weight:700}tr[data-v-27835e5c]:nth-child(odd){background-color:#efefef}tr[data-v-27835e5c]:nth-child(2n){background-color:#fff}tr[data-v-27835e5c]:hover{background-color:#cfcfcf}.time[data-v-27835e5c]{white-space:nowrap}.team-name[data-v-27835e5c]{font-weight:600}.link-button[data-v-27835e5c]{display:inline;border:none;background:none;padding:0;margin:0;font:inherit;cursor:pointer;color:var(--main-color);text-decoration:underline;font-weight:600;-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:inherit;text-align:left}.link-button[data-v-27835e5c]:hover{color:var(--second-color);text-decoration:none}.link-button[data-v-27835e5c]:active{color:#036}.link-button[data-v-27835e5c]:focus{outline:none;text-decoration:none;box-shadow:0 0 0 2px #0066cc4d}.form-block[data-v-27835e5c]{width:700px;margin:0 auto}a[data-v-27835e5c]{color:var(--second-color);text-decoration:none;transition:all .2s ease;cursor:pointer}a[data-v-27835e5c]:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}a[data-v-27835e5c]:focus-visible{outline:2px solid #3182ce;outline-offset:2px;border-radius:2px}a[disabled][data-v-27835e5c]{color:#a0aec0;pointer-events:none;cursor:not-allowed}.button-container[data-v-27835e5c]{margin-bottom:30px}.cell-center[data-v-27835e5c]{text-align:center}.graph-container[data-v-b9737d2d]{width:100%;height:calc(100vh - 50px);border:1px solid #e0e0e0;border-radius:8px}
|
||||
:root{--vt-c-white: #ffffff;--vt-c-white-soft: #f8f8f8;--vt-c-white-mute: #f2f2f2;--vt-c-black: #181818;--vt-c-black-soft: #222222;--vt-c-black-mute: #282828;--vt-c-indigo: #2c3e50;--vt-c-divider-light-1: rgba(60, 60, 60, .29);--vt-c-divider-light-2: rgba(60, 60, 60, .12);--vt-c-divider-dark-1: rgba(84, 84, 84, .65);--vt-c-divider-dark-2: rgba(84, 84, 84, .48);--vt-c-text-light-1: var(--vt-c-indigo);--vt-c-text-light-2: rgba(60, 60, 60, .66);--vt-c-text-dark-1: var(--vt-c-white);--vt-c-text-dark-2: rgba(235, 235, 235, .64);--main-color: rgba(34, 50, 60, 1);--second-color: rgb(97, 74, 22);--main-back-color: rgba(240, 240, 240, 1);--main-back-item-color: rgba(254, 254, 254, 1)}:root{--color-background: var(--vt-c-white);--color-background-soft: var(--vt-c-white-soft);--color-background-mute: var(--vt-c-white-mute);--color-border: var(--vt-c-divider-light-2);--color-border-hover: var(--vt-c-divider-light-1);--color-heading: var(--vt-c-text-light-1);--color-text: var(--vt-c-text-light-1);--section-gap: 160px}*,*:before,*:after{box-sizing:border-box;margin:0;font-weight:400}body{min-height:100dvh;color:var(--color-text);background:var(--main-back-color);transition:color .5s,background-color .5s;line-height:1.6;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:15px;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.input-custom{width:100%;box-sizing:border-box;margin-bottom:15px}.button-custom{margin-left:auto;background-color:var(--main-color);font-weight:600;color:#fff}.button-custom-inline{margin:10px;background-color:var(--main-color);font-weight:600;color:#fff;padding:6px 8px;border:1px solid #ddd;border-radius:15px;font-size:14px}.button-custom:hover,.button-custom-inline:hover{background-color:var(--second-color)}.input-custom,.button-custom{padding:12px 16px;border:1px solid #ddd;border-radius:15px;font-size:16px}.button-container{display:flex}.center-message{display:flex;justify-content:center;align-items:center;height:calc(100dvh - 100px);text-align:center}.qr[data-v-666b8d35]{position:absolute;top:130px;right:30px;text-align:center;width:120px}.header-block[data-v-5b6894ef]{background-color:var(--main-color);font-size:large;color:#fff;vertical-align:middle;padding:10px 0 10px 16px;font-weight:700}.buttons-block[data-v-27835e5c]{padding-top:5px}.button-menu[data-v-27835e5c]{margin:5px 10px 5px 0}table[data-v-27835e5c]{width:700px;border-collapse:collapse;margin:30px auto;border:1px solid #444444}th[data-v-27835e5c],td[data-v-27835e5c]{padding:12px;text-align:left}th[data-v-27835e5c]{background-color:var(--main-color);color:#fff;font-weight:700}tr[data-v-27835e5c]:nth-child(odd){background-color:#efefef}tr[data-v-27835e5c]:nth-child(2n){background-color:#fff}tr[data-v-27835e5c]:hover{background-color:#cfcfcf}.time[data-v-27835e5c]{white-space:nowrap}.team-name[data-v-27835e5c]{font-weight:600}.link-button[data-v-27835e5c]{display:inline;border:none;background:none;padding:0;margin:0;font:inherit;cursor:pointer;color:var(--main-color);text-decoration:underline;font-weight:600;-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:inherit;text-align:left}.link-button[data-v-27835e5c]:hover{color:var(--second-color);text-decoration:none}.link-button[data-v-27835e5c]:active{color:#036}.link-button[data-v-27835e5c]:focus{outline:none;text-decoration:none;box-shadow:0 0 0 2px #0066cc4d}.form-block[data-v-27835e5c]{width:700px;margin:0 auto}a[data-v-27835e5c]{color:var(--second-color);text-decoration:none;transition:all .2s ease;cursor:pointer}a[data-v-27835e5c]:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}a[data-v-27835e5c]:focus-visible{outline:2px solid #3182ce;outline-offset:2px;border-radius:2px}a[disabled][data-v-27835e5c]{color:#a0aec0;pointer-events:none;cursor:not-allowed}.button-container[data-v-27835e5c]{margin-bottom:30px}.cell-center[data-v-27835e5c]{text-align:center}.graph-container[data-v-3bf42da3]{width:100%;height:calc(100vh - 50px);border:1px solid #e0e0e0;border-radius:8px}.nodes-container[data-v-3bf42da3]{position:fixed;left:5px;top:55px;height:calc(100vh - 100px);padding:10px 20px}.edit-node-container[data-v-3bf42da3]{position:fixed;right:5px;top:55px;height:calc(100vh - 100px);padding:10px 20px;max-width:300px}.node-select-button[data-v-3bf42da3]:hover{font-weight:700;cursor:pointer}.selected-node[data-v-3bf42da3]{font-weight:700;color:#960000;cursor:pointer}
|
||||
@ -5,8 +5,8 @@
|
||||
<link rel="icon" href="/favicon.ico">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>ВД Админка</title>
|
||||
<script type="module" crossorigin src="/assets/index-BzJgtw31.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-CpjiKclx.css">
|
||||
<script type="module" crossorigin src="/assets/index-B5Qzu2vG.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-DZKvHw51.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
@ -24,7 +24,7 @@
|
||||
{
|
||||
"code": "К-1",
|
||||
"name": "Клуб",
|
||||
"text": "В клубе вас встречает диджей Пётр.\n“Концерт как всегда душевный, все плакали обнимались, вроде все здесь были, хотя награждение “Лучший ребенок” в этот раз Лёха проводил, а не броненосец, вот его то я вчера и не видел”.\nОн рассказывает, что дискотека прошла на ура, танцевали и пели под все самые лучшие песни. Кажется он почти не общался с Лехой и до сих пор не знает, что произошло: «А какие медляки, танцевал весь лагерь, правда Макса и Даши не было. Они у нас главные знаменитости, танцуют медляки каждый вечер, а днем делают вид что противны друг другу, думают что дети верят в их притворство»"
|
||||
"text": "В клубе вас встречает диджей Пётр.\n“Концерт как всегда душевный, все плакали обнимались, вроде все здесь были, хотя награждение “Лучший ребенок” в этот раз Лёха проводил, а не броненосец, вот его то я вчера и не видел”.\nОн рассказывает, что дискотека прошла на ура, танцевали и пели под все самые лучшие песни. Кажется он почти не общался с Лехой и до сих пор не знает, что произошло: «А какие медляки, танцевал весь лагерь, правда Макса([МК]) и Даши([ДО]) не было. Они у нас главные знаменитости, танцуют медляки каждый вечер, а днем делают вид что противны друг другу, думают что дети верят в их притворство»"
|
||||
},
|
||||
{
|
||||
"code": "К-2",
|
||||
@ -110,17 +110,17 @@
|
||||
{
|
||||
"code": "КЛ",
|
||||
"name": "Кирилл Лебедев",
|
||||
"text": "«Леху на втором ужине только видел, да и то он мимо прошел. Мы вчера с Аней, Катей и Темой дежурили на дискотеке. Потом сразу пошли на костер, это могла быть самая лучшая смена. Я рассказывал много историй вчера на костре и про историю лагеря и легенды разные. На свечку мы ушли в отряды — вспоминали смену, делились впечатлениями. На улицу больше не выходили, там похолодало, да и не видно уже ничего было — слишком поздно»."
|
||||
"text": "«Леху на втором ужине только видел, да и то он мимо прошел. Мы вчера с Аней([АС]), Катей([КС]) и Темой([АК]) дежурили на дискотеке. Потом сразу пошли на костер([К-2]), это могла быть самая лучшая смена. Я рассказывал много историй вчера на костре и про историю лагеря и легенды разные. На свечку мы ушли в отряды — вспоминали смену, делились впечатлениями. На улицу больше не выходили, там похолодало, да и не видно уже ничего было — слишком поздно»."
|
||||
},
|
||||
{
|
||||
"code": "АГ",
|
||||
"name": "Артём Глушко",
|
||||
"text": "Артём сидит и читает книгу в своем отряде, попутно помогает ребятам собирать чемоданы. Он интересуется, удалось ли что-то узнать, рассказывает, что они с Лехой как-то застали Макса за кражей денег из кассы, и с тех пор в их отношениях была напряженность. Артем предложил вам печенье и пошел дальше помогать ребятам."
|
||||
"text": "Артём сидит и читает книгу в своем отряде, попутно помогает ребятам собирать чемоданы. Он интересуется, удалось ли что-то узнать, рассказывает, что они с Лехой как-то застали Макса([МК]) за кражей денег из кассы, и с тех пор в их отношениях была напряженность. Артем предложил вам печенье и пошел дальше помогать ребятам."
|
||||
},
|
||||
{
|
||||
"code": "АС",
|
||||
"name": "Анна Соколова",
|
||||
"text": "«Лёха был ответственным человеком и всегда помогал, иногда он делал больше чем от него требовалось. Он мог и веселые старты провести, когда физрук ленится, вёл все мероприятия лагеря со сцены, встречал проверки. Мне кажется, он некоторые проверки даже устраивал сам, чтобы лагерь лучше делать. Директор даже на него скидывал какие-то бумажные дела. Лёха был очень начитанный хоть и учился на математика, любила с ним поболтать»."
|
||||
"text": "«Лёха был ответственным человеком и всегда помогал, иногда он делал больше чем от него требовалось. Он мог и веселые старты провести, когда физрук([СС]) ленится, вёл все мероприятия лагеря со сцены, встречал проверки. Мне кажется, он некоторые проверки даже устраивал сам, чтобы лагерь лучше делать. Директор([ВСГ]) даже на него скидывал какие-то бумажные дела. Лёха был очень начитанный хоть и учился на математика, любила с ним поболтать»."
|
||||
},
|
||||
{
|
||||
"code": "КС",
|
||||
@ -146,18 +146,13 @@
|
||||
{
|
||||
"code": "СС",
|
||||
"name": "Сергей Смирнов",
|
||||
"text": "Вы подошли к мужчине среднего роста в спортивном костюме: «Вечером телевизор смотрел, музыка долбила спать не давала. Петрович заходил, мы досмотрели “музыкальный ринг” да и побёг он. На дискотеки я не ходок, да и Лёха сказал помощь не нужна. За день набегался, дел много и не только своих, там помоги, сям помоги, никто ничего не может, вот и помогаю. Устаю, возраст как никак. Петрович попросил, вчера помочь с вывозом мусора, с тех пор в коморке и сидел. Лёху видел последний раз в воскресенье, он сказал зарядку не проводить пущай дети поспят»."
|
||||
"text": "Вы подошли к мужчине среднего роста в спортивном костюме: «Вечером телевизор смотрел, музыка долбила спать не давала. Петрович([ВПБ]) заходил, мы досмотрели “музыкальный ринг” да и побёг он. На дискотеки я не ходок, да и Лёха сказал помощь не нужна. За день набегался, дел много и не только своих, там помоги, сям помоги, никто ничего не может, вот и помогаю. Устаю, возраст как никак. Петрович попросил, вчера помочь с вывозом мусора, с тех пор в коморке и сидел. Лёху видел последний раз в воскресенье, он сказал зарядку не проводить пущай дети поспят»."
|
||||
},
|
||||
{
|
||||
"code": "ВПБ",
|
||||
"name": "Виктор Петрович Белов",
|
||||
"text": "«У меня свой режим: завтрак в 9 утра, вынос мусора в 9 вечера, в 11 вечера обход. Всю дискотеку Лёха сидел в администрации, как с концерта пришел, так и не выходил. В пол десятого я до клуба отходил проверить все ли спокойно во время дискотеки, проверил все и за клубом, площадь посмотрел — минут 30 заняло. Фонари давно у клуба не работают, пришлось с фонариком везде лазить. Тело обнаружил уже на обходе — очень перепугался и сразу в администрацию побежал».",
|
||||
"applications": [{ "name": "Карта лагеря" }]
|
||||
},
|
||||
{
|
||||
"code": "ВД",
|
||||
"name": "Вечерний детектив",
|
||||
"text": "Дело №1 “Последний костёр”\n\nАвтор сценария: \nВладимир Фёдоров\n\nРедакторы:\nДарья Лисовая\nЕкатерина Бокова\nЕкатерина Бутина\nАнастасия Пушкарёва\n\nОзвучка:\nАлексей Демченко\n\nХудожники:\nВладимир Фёдоров\nАлина Заугольникова\n\nРазработчик:\nВладимир Фёдоров\n\nМы желаем вам приятной игры!"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -207,6 +207,8 @@ func (s *Services) GetGraph(ctx context.Context, req *proto.GetGraphReq) (*proto
|
||||
nodes = append(nodes, &proto.GetGraphRsp_Node{
|
||||
Id: node.ID,
|
||||
Label: node.Label,
|
||||
Name: node.Name,
|
||||
Text: node.Text,
|
||||
})
|
||||
}
|
||||
edges := make([]*proto.GetGraphRsp_Edge, 0, len(graph.Edges))
|
||||
|
||||
@ -47,6 +47,8 @@ type Graph struct {
|
||||
type Node struct {
|
||||
ID int32
|
||||
Label string
|
||||
Name string
|
||||
Text string
|
||||
}
|
||||
|
||||
type Edge struct {
|
||||
@ -108,7 +110,14 @@ func (s *StoryService) GetGraph(ctx context.Context) *Graph {
|
||||
nodes := make([]*Node, 0, len(s.story.Places))
|
||||
for i, place := range s.story.Places {
|
||||
m[clearCode(place.Code)] = int32(i)
|
||||
nodes = append(nodes, &Node{ID: int32(i), Label: place.Code})
|
||||
nodes = append(
|
||||
nodes, &Node{
|
||||
ID: int32(i),
|
||||
Label: place.Code,
|
||||
Name: place.Name,
|
||||
Text: place.Text,
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
edges := make([]*Edge, 0, len(s.story.Places)*3)
|
||||
|
||||
@ -1358,6 +1358,8 @@ type GetGraphRsp_Node struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
|
||||
Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
|
||||
Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
|
||||
Text string `protobuf:"bytes,4,opt,name=text,proto3" json:"text,omitempty"`
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
@ -1406,6 +1408,20 @@ func (x *GetGraphRsp_Node) GetLabel() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *GetGraphRsp_Node) GetName() string {
|
||||
if x != nil {
|
||||
return x.Name
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *GetGraphRsp_Node) GetText() string {
|
||||
if x != nil {
|
||||
return x.Text
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type GetGraphRsp_Edge struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
From int32 `protobuf:"varint,1,opt,name=from,proto3" json:"from,omitempty"`
|
||||
@ -1535,7 +1551,7 @@ const file_main_proto_rawDesc = "" +
|
||||
"\x1bDownloadTeamsQrCodesFileReq\"5\n" +
|
||||
"\x1bDownloadTeamsQrCodesFileRsp\x12\x16\n" +
|
||||
"\x06result\x18\x01 \x01(\fR\x06result\"\r\n" +
|
||||
"\vGetGraphReq\"\xc1\x02\n" +
|
||||
"\vGetGraphReq\"\xe9\x02\n" +
|
||||
"\vGetGraphRsp\x12?\n" +
|
||||
"\x05nodes\x18\x01 \x03(\v2).crabs.evening_detective.GetGraphRsp.NodeR\x05nodes\x12?\n" +
|
||||
"\x05edges\x18\x02 \x03(\v2).crabs.evening_detective.GetGraphRsp.EdgeR\x05edges\x12\x1e\n" +
|
||||
@ -1544,10 +1560,12 @@ const file_main_proto_rawDesc = "" +
|
||||
"countNodes\x12\x1e\n" +
|
||||
"\n" +
|
||||
"countEdges\x18\x04 \x01(\x05R\n" +
|
||||
"countEdges\x1a,\n" +
|
||||
"countEdges\x1aT\n" +
|
||||
"\x04Node\x12\x0e\n" +
|
||||
"\x02id\x18\x01 \x01(\x05R\x02id\x12\x14\n" +
|
||||
"\x05label\x18\x02 \x01(\tR\x05label\x1aB\n" +
|
||||
"\x05label\x18\x02 \x01(\tR\x05label\x12\x12\n" +
|
||||
"\x04name\x18\x03 \x01(\tR\x04name\x12\x12\n" +
|
||||
"\x04text\x18\x04 \x01(\tR\x04text\x1aB\n" +
|
||||
"\x04Edge\x12\x12\n" +
|
||||
"\x04from\x18\x01 \x01(\x05R\x04from\x12\x0e\n" +
|
||||
"\x02to\x18\x02 \x01(\x05R\x02to\x12\x16\n" +
|
||||
|
||||
@ -357,6 +357,12 @@
|
||||
},
|
||||
"label": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"text": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user