Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- index.html:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Diagram Editor</title>
- <link rel="stylesheet" href="style.css">
- </head>
- <body>
- <div class="geHeaderContainer">
- <div class="geMenubarContainer">
- <img src="./icons/header.png">
- <a class="geIcon"></a>
- <div class="geTextDiv">
- <a class="geItem"></a>
- </div>
- <div class="geMenubar">
- <a class="geItem">Файл
- <div class="geDropdown">
- <div class="geDropdownItem">Открыть</div>
- <div class="geDropdownItem">Сохранить</div>
- <div class="geDropdownItem">Выход</div>
- </div>
- </a>
- <a class="geItem">Правка
- <div class="geDropdown">
- <div class="geDropdownItem">Отменить</div>
- <div class="geDropdownItem">Повторить</div>
- <div class="geDropdownItem">Вырезать</div>
- <div class="geDropdownItem">Копировать</div>
- <div class="geDropdownItem">Вставить</div>
- </div>
- </a>
- <a class="geItem">Вид
- <div class="geDropdown">
- <div class="geDropdownItem">Увеличить</div>
- <div class="geDropdownItem">Уменьшить</div>
- </div>
- </a>
- <a class="geItem">Положение
- <div class="geDropdown">
- <div class="geDropdownItem">Вверх</div>
- <div class="geDropdownItem">Вниз</div>
- <div class="geDropdownItem">Влево</div>
- <div class="geDropdownItem">Вправо</div>
- </div>
- </a>
- <a class="geItem">Дополнительно
- <div class="geDropdown">
- <div class="geDropdownItem">Настройки</div>
- <div class="geDropdownItem">Справка</div>
- </div>
- </a>
- <a class="geItem">Помощь
- <div class="geDropdown">
- <div class="geDropdownItem">О программе</div>
- <div class="geDropdownItem">Поддержка</div>
- </div>
- </a>
- </div>
- </div>
- <div class="geToolbarContainer">
- <div class="geToolbar"></div>
- <a id="zoom-scale" class="geLabel" title="Масштаб (Alt+Mousewheel)">
- 100%
- <img src="icons/arrow.gif">
- </a>
- <div id="scale-dropdown">
- <a class="scale-option" data-scale="0.25">25%</a>
- <a class="scale-option" data-scale="0.5">50%</a>
- <a class="scale-option" data-scale="0.75">75%</a>
- <a class="scale-option" data-scale="1">100%</a>
- <a class="scale-option" data-scale="1.25">125%</a>
- <a class="scale-option" data-scale="1.5">150%</a>
- <a class="scale-option" data-scale="1.75">175%</a>
- </div>
- <div class="geSeparator"></div>
- <a class="geLabel" title="Увеличить">
- <img src="icons/glass1.png"></img>
- </a>
- <a class="geLabel" title="Уменьшить">
- <img src="icons/glass2.png"></img>
- </a>
- <div class="geSeparator"></div>
- <a class="geLabel" title="Отменить (Ctrl+Z)">
- <img src="icons/undo.png"></img>
- </a>
- <a class="geLabel" title="Вернуть (Ctrl+Y)">
- <img src="icons/revert.png"></img>
- </a>
- <div class="geSeparator"></div>
- <a id='delete-button' class="geLabel" title="Удалить (Delete)">
- <img src="icons/delete.png"></img>
- </a>
- <div class="geSeparator"></div>
- <a class="geLabel" title="Цвет линии">
- <img src="icons/pencil.png"></img>
- </a>
- <a class="geLabel" title="Цвет заливки">
- <img src="icons/filling.png"></img>
- </a>
- <input type="color" id="color-pick-input" title="Цвет линии">
- <input type="range" id="line-width-input" title="Размер сетки" min="1" max="100" value="20">
- <span id="range-value"></span>
- <div class="geSeparator"></div>
- <a class="geLabel" title="Тип соединения">
- <img src="icons/lines.png"></img>
- </a>
- <a id="textBox" class="geLabel" title="Добавить текст">
- <img src="icons/text.png"></img>
- </a>
- <div class="geSeparator"></div>
- <a id="clear-button" class="geLabel" title="очистить">
- <img src="icons/clear.png"></img>
- </a>
- <a id="save-button" class="geLabel" title="сохранить">
- <img src="icons/save.png"></img>
- </a>
- <a id="open-button" class="geLabel" title="открыть">
- <img src="icons/open.png"></img>
- </a>
- <div class="geSeparator"></div>
- </div>
- </div>
- <div id="sidebar">
- <img id="btn-toggle-menu" src="icons/next.png"></img>
- <h3>Фигуры</h3>
- <a class="geTitle" >Избранное</a>
- <a class="geTitle" >Общие
- <div class="geSidebar">
- <a class="geItem" title="прямая линия" data-shape="line">
- <img src="mainFigures/line.png" ></img>
- </a>
- <a class="geItem" title="прямоугольник" data-shape="rectangle">
- <img src="mainFigures/rectangle.png" ></img>
- </a>
- <a class="geItem" title="закругленный прямоугольник" data-shape="rounded-rectangle">
- <img src="mainFigures/rounded-rectangle.png" ></img>
- </a>
- <a class="geItem" title="круг" data-shape="circle">
- <img src="mainFigures/circle.png" ></img>
- </a>
- <a class="geItem" title="эллипс" data-shape="ellipse">
- <img src="mainFigures/ellipse.png" ></img>
- </a>
- <a class="geItem" title="треугольник" data-shape="triangle">
- <img src="mainFigures/triangle.png" ></img>
- </a>
- <a class="geItem" title="трапеция" data-shape="trapezium">
- <img src="mainFigures/trapezium.png" ></img>
- </a>
- <a class="geItem" title="комментарий" data-shape="90trapezium">
- <img src="mainFigures/90trapezium.png" ></img>
- </a>
- <a class="geItem" title="ромб" data-shape="rhomb">
- <img src="mainFigures/rhomb.png" ></img>
- </a>
- <a class="geItem" title="параллелограмм" data-shape="parallelogram">
- <img src="mainFigures/parallelogram.png" ></img>
- </a>
- <a class="geItem" title="пятиугольник" data-shape="pentagon">
- <img src="mainFigures/pentagon.png" ></img>
- </a>
- <a class="geItem" title="шестиугольник" data-shape="hexagon">
- <img src="mainFigures/hexagon.png" ></img>
- </a>
- <a class="geItem" title="цилиндр" data-shape="cylinder">
- <img src="mainFigures/cylinder.png" ></img>
- </a>
- <a class="geItem" title="односторонняя стрелка" data-shape="arrow">
- <img src="mainFigures/arrows.png" ></img>
- </a>
- <a class="geItem" title="двусторонняя стрелка" data-shape="double-arrow">
- <img src="mainFigures/double-arrow.png" ></img>
- </a>
- <a class="geItem" title="криволинейная стрелка" data-shape="curved-arrow" >
- <img src="mainFigures/curve-arrow.png" ></img>
- </a>
- </div>
- </a>
- <a class="geTitle" >Блок-схемы
- <div class="geSidebar">
- <a class="geItem" title="прямая линия" data-shape="line">
- <img src="mainFigures/line.png" ></img>
- </a>
- <a class="geItem" title="прямоугольник" data-shape="rectangle">
- <img src="mainFigures/rectangle.png" ></img>
- </a>
- <a class="geItem" title="закругленный прямоугольник" data-shape="rounded-rectangle">
- <img src="mainFigures/rounded-rectangle.png" ></img>
- </a>
- <a class="geItem" title="круг" data-shape="circle">
- <img src="mainFigures/circle.png" ></img>
- </a>
- <a class="geItem" title="эллипс" data-shape="ellipse">
- <img src="mainFigures/ellipse.png" ></img>
- </a>
- <a class="geItem" title="треугольник" data-shape="triangle">
- <img src="mainFigures/triangle.png" ></img>
- </a>
- <a class="geItem" title="трапеция" data-shape="trapezium">
- <img src="mainFigures/trapezium.png" ></img>
- </a>
- <a class="geItem" title="комментарий" data-shape="90trapezium">
- <img src="mainFigures/90trapezium.png" ></img>
- </a>
- <a class="geItem" title="ромб" data-shape="rhomb">
- <img src="mainFigures/rhomb.png" ></img>
- </a>
- <a class="geItem" title="параллелограмм" data-shape="parallelogram">
- <img src="mainFigures/parallelogram.png" ></img>
- </a>
- <a class="geItem" title="пятиугольник" data-shape="pentagon">
- <img src="mainFigures/pentagon.png" ></img>
- </a>
- <a class="geItem" title="шестиугольник" data-shape="hexagon">
- <img src="mainFigures/hexagon.png" ></img>
- </a>
- <a class="geItem" title="цилиндр" data-shape="cylinder">
- <img src="mainFigures/cylinder.png" ></img>
- </a>
- <a class="geItem" title="односторонняя стрелка" data-shape="arrow">
- <img src="mainFigures/arrows.png" ></img>
- </a>
- <a class="geItem" title="двусторонняя стрелка" data-shape="double-arrow">
- <img src="mainFigures/double-arrow.png" ></img>
- </a>
- <a class="geItem" title="криволинейная стрелка" data-shape="curved-arrow" >
- <img src="mainFigures/curve-arrow.png" ></img>
- </a>
- </div>
- </a>
- <a class="geTitle" >UML
- <div class="geSidebar">
- <a class="geItem" title="класс" data-shape="class">
- <img src="mainFigures/line.png" ></img>
- </a>
- <a class="geItem" title="интерфейс" data-shape="interface">
- <img src="mainFigures/rectangle.png" ></img>
- </a>
- <a class="geItem" title="обьект" data-shape="rounded-rectangle">
- <img src="mainFigures/rounded-rectangle.png" ></img>
- </a>
- <a class="geItem" title="круг" data-shape="circle">
- <img src="mainFigures/circle.png" ></img>
- </a>
- <a class="geItem" title="эллипс" data-shape="ellipse">
- <img src="mainFigures/ellipse.png" ></img>
- </a>
- <a class="geItem" title="треугольник" data-shape="triangle">
- <img src="mainFigures/triangle.png" ></img>
- </a>
- <a class="geItem" title="трапеция" data-shape="trapezium">
- <img src="mainFigures/trapezium.png" ></img>
- </a>
- <a class="geItem" title="комментарий" data-shape="90trapezium">
- <img src="mainFigures/90trapezium.png" ></img>
- </a>
- <a class="geItem" title="ромб" data-shape="rhomb">
- <img src="mainFigures/rhomb.png" ></img>
- </a>
- <a class="geItem" title="параллелограмм" data-shape="parallelogram">
- <img src="mainFigures/parallelogram.png" ></img>
- </a>
- <a class="geItem" title="пятиугольник" data-shape="pentagon">
- <img src="mainFigures/pentagon.png" ></img>
- </a>
- <a class="geItem" title="шестиугольник" data-shape="hexagon">
- <img src="mainFigures/hexagon.png" ></img>
- </a>
- <a class="geItem" title="цилиндр" data-shape="cylinder">
- <img src="mainFigures/cylinder.png" ></img>
- </a>
- <a class="geItem" title="односторонняя стрелка" data-shape="arrow">
- <img src="mainFigures/arrows.png" ></img>
- </a>
- <a class="geItem" title="двусторонняя стрелка" data-shape="double-arrow">
- <img src="mainFigures/double-arrow.png" ></img>
- </a>
- <a class="geItem" title="криволинейная стрелка" data-shape="curved-arrow" >
- <img src="mainFigures/curve-arrow.png" ></img>
- </a>
- </div>
- </a>
- </div>
- <div id="diagram-container">
- <div id="canvas" >
- </div>
- </div>
- <div id="properties-panel">
- <h2>Стили элемента</h2>
- <label for="stroke-color">Цвет контура:</label>
- <input type="color" id="stroke-color"><br>
- <label for="fill-color">Цвет заливки:</label>
- <input type="color" id="fill-color"><br>
- <label for="line-width">Толщина линии:</label>
- <input type="number" id="line-width" min="1" max="10" value="1"><br>
- <label for="line-style">Тип линии:</label>
- <select id="line-style">
- <option value="solid">Сплошная</option>
- <option value="dashed">Пунктирная</option>
- <option value="dotted">Точечная</option>
- </select><br>
- <label for="text-content">Текст:</label>
- <input type="text" id="text-content"><br>
- <label for="text-size">Размер текста:</label>
- <input type="number" id="text-size" min="8" max="24" value="12"><br>
- <label for="text-font">Шрифт текста:</label>
- <select id="text-font">
- <option value="Arial">Arial</option>
- <option value="Helvetica">Helvetica</option>
- <option value="Times New Roman">Times New Roman</option>
- <!-- Добавьте другие варианты шрифтов по вашему усмотрению -->
- </select><br>
- <label for="text-weight">Жирность текста:</label>
- <select id="text-weight">
- <option value="normal">Обычный</option>
- <option value="bold">Жирный</option>
- </select><br>
- <button id="apply-styles">Применить стили</button>
- </div>
- <script src="node_modules/@joint/core/dist/joint.js"></script>
- <script src="script.js"></script>
- <script src="index.js"></script>
- </body>
- </html>
- style.css:
- body {
- font-family: Arial, sans-serif;
- display:flex;
- flex-direction: column;
- margin: 0;
- padding: 0;
- background-color: #fbfbfb;
- align-items: center;
- justify-content: center;
- width: 100%;
- height: 100%;
- }
- a:hover {
- color: #FFFF00;
- }
- a {
- text-decoration: none;
- cursor: pointer;
- }
- .geHeaderContainer{
- display: flex;
- position: fixed;
- width: 100%;
- }
- .geMenubarContainer{
- display: flex;
- position: fixed;
- top: 0px;
- left: 0px;
- right: 0px;
- height: 64px;
- background-color: #f1f3f4;
- width: 100%;
- z-index: 0;
- }
- .geMenubarContainer img{
- margin-left: 600px;
- height: 64px;
- width: 300px;
- }
- .geMenubarContainer .geTextDiv{
- right: 120px;
- left: 60px;
- top: 9px;
- height: 26px;
- display: block;
- overflow: hidden;
- text-overflow: ellipsis;
- visibility: visible;
- z-index: 0;
- }
- .geTextDiv .geItem{
- padding: 2px 8px;
- display: inline;
- font-size: 18px;
- transition: all 0.1s ease-in-out;
- cursor: pointer;
- width: 100%;
- position: relative;
- }
- .geItem:hover .geDropdown {
- display: block;
- background-color: #ccc; /* Изменяем цвет фона при наведении */
- }
- .geDropdown {
- display: none;
- position: absolute; /* Используем абсолютное позиционирование */
- top: 100%; /* Отступ от верхнего края родительского элемента */
- background-color: #fff;
- border: 1px solid #ccc;
- z-index: 10;
- }
- .geDropdownItem {
- padding: 10px;
- cursor: pointer;
- z-index: 10;
- }
- .geMenubar{
- display: flex;
- white-space: nowrap;
- align-items: center;
- position: absolute;
- padding-left: 59px;
- box-sizing: border-box;
- top: 34px;
- width: 100%;
- z-index: 0;
- }
- .geMenubarContainer .geItem{
- padding: 6px 6px 6px 9px;
- transition: all 0.1s ease-in-out;
- }
- .geMenubarContainer .geIcon{
- display: block;
- position: absolute;
- top: 12px;
- width: 36px;
- height: 36px;
- margin: 8px 0px 8px 16px;
- opacity: 0.85;
- border-radius: 3px;
- background-position: center center;
- background-size: 90% 90%;
- background-repeat: no-repeat;
- background-image: url('../icons/icon.png')
- }
- .geToolbarContainer{
- border-width: 1px;
- border-style: none none solid none;
- box-shadow: none;
- overflow: hidden;
- position: absolute;
- cursor: default;
- z-index: 0;
- left: 0px;
- right: 0px;
- top: 64px;
- height: 40px;
- background-color: #f1f3f4;
- }
- .geToolbar{
- padding-left: 16px;
- border-top: 1px solid #dadce0;
- box-shadow: inset 0 1px 0 0 #fff;
- padding-bottom: 3px;
- z-index: 0;
- }
- .geSeparator{
- float: left;
- width: 1px;
- height: 20px;
- background: #e5e5e5;
- margin-left: 8px;
- margin-right: 6px;
- margin-top: 4px;
- }
- .geLabel{
- white-space: nowrap;
- position: relative;
- overflow: hidden;
- width: 50px;
- float: left;
- margin: 2px;
- padding: 3px 5px 3px 5px;
- border: 1px solid transparent;
- transition: all 0.1s ease-in-out;
- }
- .geToolbar a {
- color: #000000;
- text-decoration: none;
- }
- .geToolbarContainer img{
- width:20px;
- height:20px;
- }
- .geButton {
- float: left;
- width: 20px;
- height: 20px;
- padding: 0px 2px 4px 2px;
- margin: 2px;
- border: 1px solid transparent;
- cursor: pointer;
- opacity: 0.6;
- transition: all 0.1s ease-in-out;
- }
- #diagram-container {
- position: absolute;
- width: 100%;
- height: 100%; /* Высота экрана за вычетом высоты тулбара и сайдбара */
- top: 120px; /* Высота тулбара */
- left: 59px; /* Ширина тулбара */
- overflow: scroll;
- }
- #canvas {
- width: 1000px;
- height: 1000px;
- top:5%;
- left:10%;
- border: 3px solid #ccc;
- background-color: #FFFFFF;
- }
- svg{
- left: 0px;
- top: 0px;
- width: 100%;
- height: 100%;
- display: block;
- min-width: 3407px;
- min-height: 1691px;
- position: absolute;
- background-image: none;
- }
- #sidebar {
- position: fixed;
- z-index: 1;
- top: 100px;
- bottom: 0px;
- right: 0;
- width: 16%;
- height: 100vh;
- background-color: #f1f3f4;
- padding: 20px;
- box-shadow: -5px 0px 5px rgba(0, 0, 0, 0.1);
- transition: right 0.3s ease;
- top: 18%;
- }
- #sidebar.open {
- right: -17.5%;
- }
- #sidebar h3 {
- position: relative;
- padding-left: 30px; /* Добавляем отступ слева для размещения кнопки */
- text-align: center;
- }
- #btn-toggle-menu {
- position: absolute;
- width: 20px; /* Размер изображения */
- height: 20px;
- left: 0; /* Положение слева */
- top: 0; /* Положение сверху */
- background-color: transparent;
- border: none;
- padding: 0;
- margin: 0;
- cursor: pointer;
- }
- #btn-toggle-menu img {
- width: 20px; /* Размер изображения */
- height: 20px;
- }
- .geTitle{
- display: block;
- background-image: url('../icons/arrow.gif');
- background-repeat: no-repeat;
- background-position: 4px 50%;
- position: relative;
- padding-left: 72px;
- border-top: 1px solid #e5e5e5;
- font-weight: 500;
- font-size: 13px;
- border-color: #e5e5e5;
- }
- .geTitle .geSidebar{
- display: block;
- transform-origin: right top 0px;
- border-bottom: 1px solid #e5e5e5;
- padding: 6px;
- overflow: hidden;
- }
- .geSidebar .geItem{
- display: inline-block;
- background-repeat: no-repeat;
- background-position: 50% 50%;
- border-radius: 8px;
- overflow: hidden;
- width: 34px;
- height: 32px;
- padding: 1px;
- }
- .geItem img{
- right: 1px;
- top: 1px;
- width: 32px;
- height: 30px;
- display: block;
- position: relative;
- overflow: hidden;
- pointer-events: none;
- }
- #properties-panel {
- position: fixed;
- z-index: 1;
- left: -22%;
- top: 18%;
- bottom: 18%;
- width: 20%;
- height: 80%;
- padding: 20px;
- border: 1px solid #ccc;
- border-radius: 5px;
- background-color: #f9f9f9;
- }
- #properties-panel.open {
- left: 0;
- }
- #properties-panel h2 {
- font-size: 18px;
- margin-bottom: 10px;
- }
- #properties-panel label {
- display: block;
- margin-bottom: 5px;
- }
- #properties-panel input[type="color"],
- #properties-panel input[type="number"],
- #properties-panel select,
- #properties-panel input[type="text"] {
- width: 100%;
- margin-bottom: 10px;
- padding: 5px;
- border: 1px solid #ccc;
- border-radius: 3px;
- }
- #apply-styles {
- width: 100%;
- padding: 10px;
- background-color: #007bff;
- color: #fff;
- border: none;
- border-radius: 3px;
- cursor: pointer;
- }
- #apply-styles:hover {
- background-color: #0056b3;
- }
- #scale-dropdown {
- display: none; /* Скрываем выпадающий список по умолчанию */
- }
- #scale-dropdown.open {
- display: flex;
- }
- .scale-option {
- display: block;
- padding: 5px 10px;
- cursor: pointer;
- }
- .scale-option:hover {
- background-color: #f0f0f0; /* Цвет фона при наведении */
- }
- .hidden{
- display: none;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement