Додана сторінка "історія служіння"

This commit is contained in:
2025-09-20 20:02:46 +03:00
parent ff393417a1
commit d75fb7ec3d
23 changed files with 3065 additions and 1078 deletions

View File

@@ -1,89 +1,84 @@
<div class="page-editor">
<details id="details-info" open>
<summary>
<div id="part-1" class="part_block">
<h1>
<span>Крок 1.</span> Інформація про будинок, територію, точки на карті
</summary>
</h1>
<form id="info-form">
<div id="details-info-address" class="details-info-input">
<label for="info-address-title">Назва вулиці</label>
<div>
<label for="info-title">Назва вулиці</label>
<input
type="text"
id="info-address-title"
id="info-title"
name="address"
required
value=""
/>
</div>
<div id="details-info-number" class="details-info-input">
<label for="info-number-title">Номер будинку</label>
<input
type="text"
id="info-number-title"
name="number"
required
value=""
/>
<div>
<label for="info-number">Номер будинку / частини</label>
<input type="text" id="info-number" name="number" required value="" />
</div>
<div id="details-info-settlement" class="details-info-input">
<label for="info-settlement-title">Місто</label>
<div>
<label for="info-settlement">Місто</label>
<input
type="text"
id="info-settlement-title"
id="info-settlement"
name="settlement"
required
value=""
value="Тернопіль"
/>
</div>
</form>
</details>
</div>
<details id="details-map" open>
<summary id="details-map-title"><span>Крок 2.</span> Перегляд</summary>
<form id="map-form">
<div
class="editor-buttons"
id="details-map-buttons-homestead"
style="display: none"
>
<div id="part-2" class="part_block">
<h1 id="part-2-title"><span>Крок 2.</span> Створення будинку / ділянки</h1>
<div class="osm-info">
<div>
<label for="info-osm">OSM iD</label>
<div>
<input
id="info-osm"
type="text"
placeholder="123, 345, 678"
onchange="Editor.osm.autoPoligon(this.value)"
/>
<a
href="https://www.openstreetmap.org/#map=19/49.561725/25.604458"
target="_blank"
title="Де знайти OSM iD ?"
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 48 48"
width="100px"
height="100px"
>
<path
d="M 24 4 C 12.972066 4 4 12.972074 4 24 C 4 35.027926 12.972066 44 24 44 C 35.027934 44 44 35.027926 44 24 C 44 12.972074 35.027934 4 24 4 z M 24 7 C 33.406615 7 41 14.593391 41 24 C 41 33.406609 33.406615 41 24 41 C 14.593385 41 7 33.406609 7 24 C 7 14.593391 14.593385 7 24 7 z M 24 14 A 2 2 0 0 0 24 18 A 2 2 0 0 0 24 14 z M 23.976562 20.978516 A 1.50015 1.50015 0 0 0 22.5 22.5 L 22.5 33.5 A 1.50015 1.50015 0 1 0 25.5 33.5 L 25.5 22.5 A 1.50015 1.50015 0 0 0 23.976562 20.978516 z"
></path>
</svg>
</a>
</div>
</div>
<span>або</span>
<button onclick="Editor.osm.newPoligon()">Обрати на карті</button>
</div>
<div class="block-map">
<button
type="button"
onclick="Editor.homestead.editing_mode()"
id="homestead-editing"
style="display: none;"
>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path
d="M 22.828125 3 C 22.316375 3 21.804562 3.1954375 21.414062 3.5859375 L 19 6 L 24 11 L 26.414062 8.5859375 C 27.195062 7.8049375 27.195062 6.5388125 26.414062 5.7578125 L 24.242188 3.5859375 C 23.851688 3.1954375 23.339875 3 22.828125 3 z M 17 8 L 5.2597656 19.740234 C 5.2597656 19.740234 6.1775313 19.658 6.5195312 20 C 6.8615312 20.342 6.58 22.58 7 23 C 7.42 23.42 9.6438906 23.124359 9.9628906 23.443359 C 10.281891 23.762359 10.259766 24.740234 10.259766 24.740234 L 22 13 L 17 8 z M 4 23 L 3.0566406 25.671875 A 1 1 0 0 0 3 26 A 1 1 0 0 0 4 27 A 1 1 0 0 0 4.328125 26.943359 A 1 1 0 0 0 4.3378906 26.939453 L 4.3632812 26.931641 A 1 1 0 0 0 4.3691406 26.927734 L 7 26 L 5.5 24.5 L 4 23 z"
></path>
</svg>
</button>
<div id="map"></div>
</div>
<button id="map-form-button" type="submit" style="display: none">
Далі
</button>
</form>
</details>
<div class="block-map">
<div id="map"></div>
</div>
<details id="details-area" open style="display: none">
<summary>
<span>Крок 3.</span> Конструктор квартир
<input
type="number"
value="1"
id="next-apartment-title"
onchange="Editor.apartments.editNum(this)"
title="Авто-номер наступної квартири"
/>
</summary>
<button type="button" id="part-2-button" onclick="Editor.save()">Зберегти</button>
</div>
<form id="area-form">
<div id="list-area"></div>
</form>
</details>
<div id="part-3" class="part_block" style="display: none">
<h1 id="part-3-title"><span>Крок 3.</span> Створення квартир</h1>
<div id="house"></div>
</div>
</div>

File diff suppressed because it is too large Load Diff

View File

@@ -6,21 +6,11 @@
margin: 20px 20px 0 20px;
}
.page-editor form>button {
border-radius: 6px;
background: var(--PrimaryColor);
color: var(--PrimaryColorText);
width: 100%;
height: 40px;
font-size: var(--FontSize3);
font-weight: 400;
margin: 20px 0;
text-transform: uppercase;
}
.page-editor details {
.page-editor>#part-1,
.page-editor>#part-2,
.page-editor>#part-3 {
border-radius: 10px;
width: 100%;
width: calc(100% - 40px);
display: flex;
flex-direction: column;
align-items: stretch;
@@ -29,36 +19,169 @@
color: var(--ColorThemes3);
border: 1px solid var(--ColorThemes2);
box-shadow: var(--shadow-l1);
padding: 0 20px;
position: relative;
}
.page-editor>details[disabled] summary,
.page-editor>details.disabled summary {
pointer-events: none;
user-select: none;
}
.page-editor>details summary::-webkit-details-marker,
.page-editor>details summary::marker {
display: none;
content: "";
}
.page-editor summary {
.page-editor>#part-1>h1,
.page-editor>#part-2>h1,
.page-editor>#part-3>h1 {
width: calc(100% - 40px);
cursor: pointer;
color: var(--ColorThemes3);
border-radius: var(--border-radius);
font-size: var(--FontSize5);
font-weight: 300;
padding: 20px;
padding: 20px 0;
position: relative;
}
.page-editor summary span {
.page-editor>#part-1>h1>span,
.page-editor>#part-2>h1>span,
.page-editor>#part-3>h1>span {
font-weight: 500;
}
.page-editor summary input {
.page-editor>#part-1>form>div {
width: 100%;
display: flex;
margin: 0 0 20px 0;
align-items: flex-start;
flex-direction: column;
}
.page-editor>#part-1>form>div>label {
display: flex;
justify-content: center;
flex-direction: column;
font-size: var(--FontSize1);
font-weight: 500;
margin-bottom: 5px;
}
.page-editor>#part-1>form>div>input {
width: calc(100% - 10px);
min-width: 140px;
padding: 0 5px;
border-radius: 6px;
height: 30px;
background: var(--ColorThemes0);
color: var(--ColorThemes3);
font-size: var(--FontSize2);
}
.page-editor>#part-1>form>button,
.page-editor>#part-2>button,
.page-editor>#part-3>button {
border-radius: 6px;
background: var(--PrimaryColor);
color: var(--PrimaryColorText);
width: 100%;
height: 40px;
font-size: var(--FontSize3);
font-weight: 400;
margin: 0 0 20px 0;
text-transform: uppercase;
}
.page-editor>#part-2>.osm-info {
padding-bottom: 20px;
display: flex;
flex-direction: column;
align-items: center;
}
.page-editor>#part-2>.osm-info>div {
display: flex;
align-items: center;
width: 100%;
}
.page-editor>#part-2>.osm-info>div {
width: 100%;
display: flex;
align-items: flex-start;
flex-direction: column;
}
.page-editor>#part-2>.osm-info>div>label {
display: flex;
justify-content: center;
flex-direction: column;
font-size: var(--FontSize1);
font-weight: 500;
margin-bottom: 5px;
}
.page-editor>#part-2>.osm-info>div>div {
display: flex;
align-items: center;
width: 100%;
}
.page-editor>#part-2>.osm-info>div>div>input {
width: calc(100% - 10px);
min-width: 140px;
padding: 0 5px;
border-radius: 6px;
height: 30px;
background: var(--ColorThemes0);
color: var(--ColorThemes3);
font-size: var(--FontSize2);
}
.page-editor>#part-2>.osm-info>div>div>a {
height: 26px;
width: 26px;
margin-left: 10px;
}
.page-editor>#part-2>.osm-info>div>div>a>svg {
height: 26px;
width: 26px;
fill: var(--ColorThemes3);
}
.page-editor>#part-2>.osm-info>span {
font-size: var(--FontSize5);
margin: 10px;
color: var(--ColorThemes3);
}
.page-editor>#part-2>.osm-info>button {
display: flex;
align-items: center;
justify-content: center;
height: 30px;
width: 100%;
cursor: pointer;
transition: 0.15s ease-in;
color: var(--PrimaryColorText);
background: var(--PrimaryColor);
border-radius: 6px;
flex-direction: row;
z-index: 2;
font-size: var(--FontSize3);
}
.page-editor>#part-2>.block-map {
width: 100%;
height: 500px;
border-radius: 6px;
overflow: hidden;
position: relative;
background: var(--ColorThemes1);
color: var(--ColorThemes3);
border: 1px solid var(--ColorThemes2);
box-shadow: var(--shadow-l1);
margin-bottom: 20px;
}
.page-editor>#part-2>.block-map>#map {
width: 100%;
height: 100%;
}
.page-editor>#part-3>input {
font-weight: 500;
position: absolute;
right: 0;
@@ -72,177 +195,49 @@
width: 40px;
}
.page-editor #info-form,
.page-editor #map-form,
.page-editor #area-form {
padding: 0 20px;
}
#details-info-type {
display: flex;
align-items: center;
justify-content: center;
}
#details-info-type>.tabs {
display: flex;
position: relative;
background-color: var(--ColorThemes0);
padding: 4px;
border-radius: 6px;
width: calc(100% - 8px);
z-index: 2;
}
#details-info-type>.tabs>input[type="radio"] {
display: none;
}
#details-info-type>.tabs>.tab {
display: flex;
align-items: center;
justify-content: center;
height: 40px;
width: calc(100% / 3);
cursor: pointer;
padding: 0 15px;
transition: 0.15s ease-in;
color: var(--ColorThemes3);
fill: var(--ColorThemes3);
flex-direction: row;
z-index: 2;
}
#details-info-type>.tabs>.tab>svg {
width: 20px;
height: 20px;
}
#details-info-type>.tabs>.tab>span {
margin-left: 6px;
font-size: var(--FontSize1);
font-weight: 400;
}
#details-info-type>.tabs>input[type="radio"]:checked+label {
color: var(--PrimaryColorText);
fill: var(--PrimaryColorText);
}
#details-info-type>.tabs>.glider {
position: absolute;
display: flex;
height: 40px;
width: calc((100% - 8px) / 3);
background-color: var(--PrimaryColor);
z-index: 1;
border-radius: 4px;
transition: 0.25s ease-out;
}
@media (min-width: 601px) {
#details-info-type>.tabs>input[id="info-type-house"]:checked~.glider {
transform: translateX(0);
}
#details-info-type>.tabs>input[id="info-type-homestead"]:checked~.glider {
transform: translateX(100%);
}
#details-info-type>.tabs>input[id="info-type-points"]:checked~.glider {
transform: translateX(200%);
}
}
@media (max-width: 600px) {
#details-info-type>.tabs {
flex-direction: column;
}
#details-info-type>.tabs>.tab {
width: calc(100% - 8px);
padding: 0 4px;
}
#details-info-type>.tabs>.glider {
width: calc(100% - 8px);
}
#details-info-type>.tabs>input[id="info-type-house"]:checked~.glider {
transform: translateY(0);
}
#details-info-type>.tabs>input[id="info-type-homestead"]:checked~.glider {
transform: translateY(100%);
}
#details-info-type>.tabs>input[id="info-type-points"]:checked~.glider {
transform: translateY(200%);
}
}
.page-editor .details-info-input {
width: 100%;
display: flex;
margin: 20px 0;
align-items: flex-start;
flex-direction: column;
}
.page-editor .details-info-input label {
display: flex;
justify-content: center;
flex-direction: column;
font-size: var(--FontSize1);
font-weight: 500;
margin-bottom: 5px;
}
.page-editor .details-info-input input {
width: calc(100% - 10px);
min-width: 140px;
padding: 0 5px;
border-radius: 6px;
height: 30px;
background: var(--ColorThemes0);
color: var(--ColorThemes3);
font-size: var(--FontSize2);
}
.page-editor #details-info-osm div {
display: flex;
align-items: center;
width: 100%;
}
.page-editor #details-info-osm input {
width: calc(100% - 10px);
min-width: 140px;
padding: 0 5px;
border-radius: 6px;
height: 30px;
}
.page-editor .details-info-input a {
height: 26px;
width: 26px;
margin-left: 10px;
}
.page-editor .details-info-input a>svg {
height: 26px;
width: 26px;
fill: var(--ColorThemes3)
}
.page-editor #list-area {
.page-editor>#part-3>#house {
display: flex;
overflow: auto;
margin: 15px 0 20px 0;
}
.page-editor #list-area h3 {
.page-editor>#part-3>#house>button {
display: flex;
position: relative;
width: 34px;
min-width: 34px;
height: calc(100% - 10px);
background: var(--PrimaryColor);
color: var(--PrimaryColorText);
margin: 0 10px;
border-radius: 6px;
align-items: center;
justify-content: center;
font-size: 30px;
cursor: pointer;
}
.page-editor>#part-3>#house>button>svg {
width: 20px;
height: 20px;
fill: var(--PrimaryColorText);
transform: rotate(45deg);
}
.page-editor>#part-3>#house>.entrance {
min-height: 200px;
border: 1px solid var(--ColorThemes3);
border-style: dashed;
border-radius: 6px;
margin: 0 10px 10px 0;
}
.page-editor>#part-3>#house>.entrance>.entrance-info>.entrance-header {
display: flex;
align-items: center;
min-width: 180px;
}
.page-editor>#part-3>#house>.entrance>.entrance-info>.entrance-header>input {
text-align: center;
font-size: var(--FontSize5);
font-weight: 400;
@@ -251,18 +246,29 @@
color: var(--ColorThemes0);
background: var(--ColorThemes3);
border-radius: 4px;
width: calc(100% - 14px - 20px);
}
.block-area {
min-height: 200px;
border: 1px solid var(--ColorThemes3);
border-style: dashed;
border-radius: 6px;
margin: 0 10px 10px 0;
.page-editor>#part-3>#house>.entrance>.entrance-info>.entrance-header>button {
display: flex;
margin: 10px 10px 10px 0px;
border-radius: 4px;
min-width: 33px;
min-height: 33px;
align-items: center;
justify-content: center;
cursor: pointer;
}
.addFloors,
.addApartment {
.page-editor>#part-3>#house>.entrance>.entrance-info>.entrance-header>button>svg {
width: 16px;
height: 16px;
fill: #C14D4D;
}
.page-editor>#part-3>#house>.entrance>.entrance-info>button,
.page-editor>#part-3>#house>.entrance>.floor>.floor-info>button {
display: flex;
position: relative;
width: 34px;
@@ -277,15 +283,15 @@
cursor: pointer;
}
.addFloors>svg,
.addApartment>svg {
.page-editor>#part-3>#house>.entrance>.entrance-info>button>svg,
.page-editor>#part-3>#house>.entrance>.floor>.floor-info>button>svg {
width: 20px;
height: 20px;
fill: var(--PrimaryColorText);
transform: rotate(45deg);
}
.block-apartments-floors {
.page-editor>#part-3>#house>.entrance>.floor {
position: relative;
display: flex;
width: calc(100% - 22px);
@@ -294,7 +300,7 @@
border-radius: 4px;
}
.block-apartments-floors h2 {
.page-editor>#part-3>#house>.entrance>.floor>.floor-info>h2 {
position: absolute;
width: 65px;
right: -1px;
@@ -308,7 +314,7 @@
text-align: center;
}
.block-apartments-number {
.page-editor>#part-3>#house>.entrance>.floor>.apartment {
display: flex;
position: relative;
width: 60px;
@@ -321,7 +327,7 @@
justify-content: center;
}
.block-apartments-number input {
.page-editor>#part-3>#house>.entrance>.floor>.apartment>input {
width: 50px;
height: 50px;
font-size: var(--FontSize5);
@@ -331,7 +337,7 @@
background: 0;
}
.block-apartments-number button {
.page-editor>#part-3>#house>.entrance>.floor>.apartment>button {
position: absolute;
top: 0;
right: 0;
@@ -348,189 +354,45 @@
justify-content: center;
}
.block-apartments-number button>svg {
.page-editor>#part-3>#house>.entrance>.floor>.apartment>button>svg {
width: 16px;
height: 16px;
fill: var(--PrimaryColorText);
}
.page-editor>#part-3>.info {}
.block-map {
width: 100%;
height: 500px;
border-radius: 6px;
overflow: hidden;
margin-bottom: 20px;
position: relative;
background: var(--ColorThemes1);
.page-editor>#part-3>.info>p {
font-size: var(--FontSize2);
color: var(--ColorThemes3);
border: 1px solid var(--ColorThemes2);
box-shadow: var(--shadow-l1);
opacity: 0.8;
font-style: oblique;
}
#homestead-editing {
position: absolute;
height: 40px;
background: var(--PrimaryColor);
font-size: var(--FontSize5);
margin: 10px;
border: 0;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
font-weight: 500;
padding: 10px;
.page-editor>#part-3>.info>button {
border-radius: 6px;
width: 40px;
z-index: 999;
right: 0;
box-shadow: var(--shadow-l1);
}
#homestead-editing>svg {
width: 20px;
height: 20px;
fill: var(--PrimaryColorText);
}
#map {
width: 100%;
height: 100%;
}
.entranse_number {
left: -10px !important;
top: -10px !important;
}
.markerEntranse {
background: hsl(0deg 0% 52.12% / 90%);
font-size: 24px;
border: 2px solid #676767;
border-radius: 2px;
display: flex !important;
justify-content: center;
align-items: center;
color: #fff;
min-width: 30px;
min-height: 30px;
height: 30px;
width: 30px;
}
.editor-buttons {
margin-top: 15px;
}
.editor-buttons>button {
width: 100%;
min-height: 30px;
margin: 5px 0;
border: 0;
color: var(--PrimaryColorText);
display: flex;
align-items: center;
justify-content: center;
background: var(--PrimaryColor);
text-transform: uppercase;
cursor: pointer;
border-radius: 6px;
font-weight: 400;
font-size: var(--FontSize1);
}
.editor-buttons>div {
display: flex;
width: 100%;
margin: 10px 0;
height: 30px;
justify-content: space-between;
}
.editor-buttons>div>button {
background: var(--ColorThemes3);
color: var(--ColorThemes1);
width: 100%;
margin: 0;
border-radius: 6px;
width: fit-content;
height: 40px;
padding: 0 10px;
margin-bottom: 20px;
text-transform: uppercase;
font-weight: 400;
font-size: var(--FontSize1);
}
.page-editor #list-entranse,
.page-editor #list-homestead {
width: 100%;
min-height: 86px;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
overflow-x: initial;
overflow-y: auto;
border: 1px solid var(--ColorThemes3);
background: 0;
border-radius: 6px;
border-style: dashed;
margin: 10px 0;
position: relative;
}
.page-editor #list-entranse>.house,
.page-editor #list-homestead>.house {
display: flex;
position: relative;
width: 60px;
height: 60px;
min-width: 60px;
min-height: 60px;
background: var(--ColorThemes1);
border: 2px solid var(--PrimaryColor);
margin: 10px;
border-radius: 4px;
align-items: center;
justify-content: center;
cursor: pointer;
}
.page-editor #list-entranse>.house>input,
.page-editor #list-homestead>.house>input,
.page-editor #list-entranse>.house>p,
.page-editor #list-homestead>.house>p {
width: 50px;
height: 50px;
font-size: var(--FontSize5);
font-weight: 400;
text-align: center;
color: var(--ColorThemes3);
background: 0;
display: flex;
align-items: center;
justify-content: center;
}
.page-editor #list-entranse>.house>button,
.page-editor #list-homestead>.house>button {
position: absolute;
top: 0;
right: 0;
.page-editor>#part-3>.info>button>svg {
width: 20px;
height: 20px;
border-radius: 0 4px 0 4px;
background: var(--PrimaryColor);
font-size: var(--FontSize5);
margin: -2px;
border: 0;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
fill: var(--ColorThemes0);
margin-right: 10px;
}
.page-editor #list-entranse>.house>button>svg,
.page-editor #list-homestead>.house>button>svg {
width: 16px;
height: 16px;
fill: var(--PrimaryColorText);
.page-editor>#part-3>.info>button>span {
font-size: var(--FontSize3);
font-weight: 400;
color: var(--ColorThemes0);
}