migration start
238
back_users.sql
|
@ -2,10 +2,10 @@
|
||||||
-- version 5.2.1
|
-- version 5.2.1
|
||||||
-- https://www.phpmyadmin.net/
|
-- https://www.phpmyadmin.net/
|
||||||
--
|
--
|
||||||
-- Хост: db
|
-- Хост: 192.168.2.72
|
||||||
-- Время создания: Июл 01 2023 г., 08:40
|
-- Время создания: Сен 18 2023 г., 11:34
|
||||||
-- Версия сервера: 8.0.33
|
-- Версия сервера: 8.1.0
|
||||||
-- Версия PHP: 8.1.19
|
-- Версия PHP: 8.2.9
|
||||||
|
|
||||||
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
|
@ -21,13 +21,6 @@ SET time_zone = "+00:00";
|
||||||
-- База данных: `users`
|
-- База данных: `users`
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'user';
|
|
||||||
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'user'@'%' WITH GRANT OPTION;
|
|
||||||
|
|
||||||
|
|
||||||
-- CREATE DATABASE IF NOT EXISTS `users` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
|
|
||||||
-- USE `users`;
|
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
--
|
--
|
||||||
|
@ -37,15 +30,61 @@ GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on
|
||||||
CREATE TABLE `admins` (
|
CREATE TABLE `admins` (
|
||||||
`id` int NOT NULL,
|
`id` int NOT NULL,
|
||||||
`login` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
`login` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||||
`uid` int NOT NULL
|
`uid` int NOT NULL,
|
||||||
|
`rights` int NOT NULL DEFAULT '0'
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Дамп данных таблицы `admins`
|
-- Дамп данных таблицы `admins`
|
||||||
--
|
--
|
||||||
|
|
||||||
INSERT INTO `admins` (`id`, `login`, `uid`) VALUES
|
INSERT INTO `admins` (`id`, `login`, `uid`, `rights`) VALUES
|
||||||
(18, 'admin', 34);
|
(58, 'n0rdye', 35, 3),
|
||||||
|
(91, 'admin', 72, 3),
|
||||||
|
(103, 'Stolyarchuk.E', 92, 3),
|
||||||
|
(108, 'andreeva.u', 96, 3);
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Структура таблицы `color_palette`
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE `color_palette` (
|
||||||
|
`id` int NOT NULL,
|
||||||
|
`color` tinytext NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Дамп данных таблицы `color_palette`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `color_palette` (`id`, `color`) VALUES
|
||||||
|
(20, '43368D'),
|
||||||
|
(21, '41AB34'),
|
||||||
|
(22, 'F7EA55'),
|
||||||
|
(23, 'E5231F'),
|
||||||
|
(24, 'F39223'),
|
||||||
|
(25, '009FE3'),
|
||||||
|
(26, 'CEE8EA'),
|
||||||
|
(27, 'B9D585'),
|
||||||
|
(28, 'F4F2C7'),
|
||||||
|
(29, 'E699A7'),
|
||||||
|
(30, 'F9C771'),
|
||||||
|
(31, 'B7A3C7');
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Структура таблицы `logs`
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE `logs` (
|
||||||
|
`id` int NOT NULL,
|
||||||
|
`date` date DEFAULT NULL,
|
||||||
|
`time` time NOT NULL,
|
||||||
|
`log` text NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
@ -55,14 +94,70 @@ INSERT INTO `admins` (`id`, `login`, `uid`) VALUES
|
||||||
|
|
||||||
CREATE TABLE `objects` (
|
CREATE TABLE `objects` (
|
||||||
`id` int NOT NULL,
|
`id` int NOT NULL,
|
||||||
`name` text NOT NULL,
|
`name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||||
`img` text NOT NULL,
|
`img` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||||
`height` smallint NOT NULL,
|
`height` double NOT NULL,
|
||||||
`width` smallint NOT NULL,
|
`width` double NOT NULL,
|
||||||
`description` mediumtext NOT NULL,
|
`cost` float NOT NULL,
|
||||||
`gid` int NOT NULL DEFAULT '0'
|
`gid` int NOT NULL DEFAULT '0',
|
||||||
|
`colors` tinyint(1) NOT NULL DEFAULT '0',
|
||||||
|
`pid` int NOT NULL DEFAULT '0'
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Дамп данных таблицы `objects`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `objects` (`id`, `name`, `img`, `height`, `width`, `cost`, `gid`, `colors`, `pid`) VALUES
|
||||||
|
(81, 'KeyBoard~g~не$основное', '/img/object/KeyBoard~g~не$основное/main.jpg', 45, 100, 200, 24, 0, 1),
|
||||||
|
(98, 'Настенная$панель$домик~g~Настенные$панели~p~Оборудование', '/img/object/Настенная$панель$домик~g~Настенные$панели~p~Оборудование/main.png', 100, 64, 17420, 73, 1, 2),
|
||||||
|
(127, 'Бизиборд$«Лисичка»~g~основное~p~Оборудование', '/img/object/Бизиборд$«Лисичка»~g~основное~p~Оборудование/main.png', 30, 90, 13660, 20, 0, 2);
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Структура таблицы `object_groups`
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE `object_groups` (
|
||||||
|
`id` int NOT NULL,
|
||||||
|
`name` varchar(500) NOT NULL,
|
||||||
|
`count` int NOT NULL,
|
||||||
|
`pid` int NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Дамп данных таблицы `object_groups`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `object_groups` (`id`, `name`, `count`, `pid`) VALUES
|
||||||
|
(20, 'основное', 1, 2),
|
||||||
|
(24, 'не$основное', 7, 1),
|
||||||
|
(73, 'Настенные$панели', 1, 2);
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Структура таблицы `object_partition`
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE `object_partition` (
|
||||||
|
`id` int NOT NULL,
|
||||||
|
`name` varchar(1000) NOT NULL,
|
||||||
|
`groups` longtext NOT NULL,
|
||||||
|
`count` int NOT NULL,
|
||||||
|
`no-cost` tinyint(1) NOT NULL DEFAULT '0'
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Дамп данных таблицы `object_partition`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `object_partition` (`id`, `name`, `groups`, `count`, `no-cost`) VALUES
|
||||||
|
(1, 'Помехи$на$стене', '24', 1, 1),
|
||||||
|
(2, 'Оборудование', '20,73', 2, 0),
|
||||||
|
(9, 'Бизиборды', '', 0, 0);
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
--
|
--
|
||||||
|
@ -74,7 +169,9 @@ CREATE TABLE `projects` (
|
||||||
`name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
`name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||||
`uid` int NOT NULL,
|
`uid` int NOT NULL,
|
||||||
`body` json NOT NULL,
|
`body` json NOT NULL,
|
||||||
`img` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL
|
`img` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||||
|
`creation_date` datetime DEFAULT NULL,
|
||||||
|
`last_change_date` datetime DEFAULT NULL
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
|
@ -89,6 +186,16 @@ CREATE TABLE `sids` (
|
||||||
`uid` int NOT NULL
|
`uid` int NOT NULL
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Дамп данных таблицы `sids`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `sids` (`id`, `sid`, `uid`) VALUES
|
||||||
|
(331, 'c2d58f63-52b2-4678-92f7-fb1bdeb404dc%%/#e621', 96),
|
||||||
|
(342, '468bfba7-cc8d-45b9-822b-ed9359b67942%%/#e621', 72),
|
||||||
|
(350, 'bd21222c-bd8a-460b-b3e9-32b210759720%%/#e621', 92),
|
||||||
|
(354, '5538d163-b71e-4604-aef2-5c000a577eca%%/#e621', 35);
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
--
|
--
|
||||||
|
@ -99,7 +206,7 @@ CREATE TABLE `users` (
|
||||||
`id` int NOT NULL,
|
`id` int NOT NULL,
|
||||||
`login` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
`login` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||||
`pass` varchar(1000) NOT NULL,
|
`pass` varchar(1000) NOT NULL,
|
||||||
`admin` int DEFAULT '0',
|
`admin` tinyint(1) DEFAULT '0',
|
||||||
`uuid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL
|
`uuid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||||
|
|
||||||
|
@ -108,7 +215,12 @@ CREATE TABLE `users` (
|
||||||
--
|
--
|
||||||
|
|
||||||
INSERT INTO `users` (`id`, `login`, `pass`, `admin`, `uuid`) VALUES
|
INSERT INTO `users` (`id`, `login`, `pass`, `admin`, `uuid`) VALUES
|
||||||
(34, 'admin', 'admin', 1, '7a910a34-8b80-4a60-8445-2400920be5d3%admin%%4a576825-deea-403d-bf0b-46bb98bb80fd#621');
|
(35, 'n0rdye', '595', 1, '3bcb0c63-359a-4ec1-b7ad-49aa78a010ec%n0rdye%%bed10840-d365-4980-8b93-c018b5757217#621'),
|
||||||
|
(72, 'admin', 'Gfzkmybr72', 1, '19e70eed-e370-43b3-894f-8192bda656b6%%U2FsdGVkX1+Wwk7/EIIpOOysfRnlDY5Q8TgojbYWxZo=#e621'),
|
||||||
|
(76, 'voloshina.e', 'Volo1508', 0, '9c1fe660-dc56-4a0b-98c2-6eb4d7b3498a%%U2FsdGVkX18N+JSSFfr5TRLFkmGDLwlz7mhATO/pJmU=#e621'),
|
||||||
|
(91, 'sychov.a', 'Sych1808!', 0, 'f921ba23-723c-4cb4-b5a6-e24ffbb9d181%%U2FsdGVkX19C2YLx2D1IZEVNuM/qFZjWoI37vxioL2E=#e621'),
|
||||||
|
(92, 'Stolyarchuk.E', 'Sto2108!', 1, '3e5ac53e-f46e-4f9d-94fd-c761ce17c799%%U2FsdGVkX1/9C2IykLtuoHXA9isJjqBADD3+s1D5cVY=#e621'),
|
||||||
|
(96, 'andreeva.u', 'Andr2908', 1, 'c2e8cb66-5d80-4905-9cc0-4830d448960e%%andreeva.u#e621');
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Индексы сохранённых таблиц
|
-- Индексы сохранённых таблиц
|
||||||
|
@ -121,10 +233,37 @@ ALTER TABLE `admins`
|
||||||
ADD PRIMARY KEY (`id`),
|
ADD PRIMARY KEY (`id`),
|
||||||
ADD UNIQUE KEY `uid` (`uid`) USING BTREE;
|
ADD UNIQUE KEY `uid` (`uid`) USING BTREE;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Индексы таблицы `color_palette`
|
||||||
|
--
|
||||||
|
ALTER TABLE `color_palette`
|
||||||
|
ADD PRIMARY KEY (`id`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Индексы таблицы `logs`
|
||||||
|
--
|
||||||
|
ALTER TABLE `logs`
|
||||||
|
ADD PRIMARY KEY (`id`);
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Индексы таблицы `objects`
|
-- Индексы таблицы `objects`
|
||||||
--
|
--
|
||||||
ALTER TABLE `objects`
|
ALTER TABLE `objects`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
ADD KEY `gid` (`gid`),
|
||||||
|
ADD KEY `pid` (`pid`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Индексы таблицы `object_groups`
|
||||||
|
--
|
||||||
|
ALTER TABLE `object_groups`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
ADD KEY `object_groups_ibfk_1` (`pid`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Индексы таблицы `object_partition`
|
||||||
|
--
|
||||||
|
ALTER TABLE `object_partition`
|
||||||
ADD PRIMARY KEY (`id`);
|
ADD PRIMARY KEY (`id`);
|
||||||
|
|
||||||
--
|
--
|
||||||
|
@ -155,31 +294,55 @@ ALTER TABLE `users`
|
||||||
-- AUTO_INCREMENT для таблицы `admins`
|
-- AUTO_INCREMENT для таблицы `admins`
|
||||||
--
|
--
|
||||||
ALTER TABLE `admins`
|
ALTER TABLE `admins`
|
||||||
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=19;
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=109;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT для таблицы `color_palette`
|
||||||
|
--
|
||||||
|
ALTER TABLE `color_palette`
|
||||||
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=35;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT для таблицы `logs`
|
||||||
|
--
|
||||||
|
ALTER TABLE `logs`
|
||||||
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5417;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- AUTO_INCREMENT для таблицы `objects`
|
-- AUTO_INCREMENT для таблицы `objects`
|
||||||
--
|
--
|
||||||
ALTER TABLE `objects`
|
ALTER TABLE `objects`
|
||||||
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=20;
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=141;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT для таблицы `object_groups`
|
||||||
|
--
|
||||||
|
ALTER TABLE `object_groups`
|
||||||
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=74;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT для таблицы `object_partition`
|
||||||
|
--
|
||||||
|
ALTER TABLE `object_partition`
|
||||||
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- AUTO_INCREMENT для таблицы `projects`
|
-- AUTO_INCREMENT для таблицы `projects`
|
||||||
--
|
--
|
||||||
ALTER TABLE `projects`
|
ALTER TABLE `projects`
|
||||||
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=27;
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=69;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- AUTO_INCREMENT для таблицы `sids`
|
-- AUTO_INCREMENT для таблицы `sids`
|
||||||
--
|
--
|
||||||
ALTER TABLE `sids`
|
ALTER TABLE `sids`
|
||||||
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=72;
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=355;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- AUTO_INCREMENT для таблицы `users`
|
-- AUTO_INCREMENT для таблицы `users`
|
||||||
--
|
--
|
||||||
ALTER TABLE `users`
|
ALTER TABLE `users`
|
||||||
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=35;
|
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=97;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Ограничения внешнего ключа сохраненных таблиц
|
-- Ограничения внешнего ключа сохраненных таблиц
|
||||||
|
@ -189,19 +352,32 @@ ALTER TABLE `users`
|
||||||
-- Ограничения внешнего ключа таблицы `admins`
|
-- Ограничения внешнего ключа таблицы `admins`
|
||||||
--
|
--
|
||||||
ALTER TABLE `admins`
|
ALTER TABLE `admins`
|
||||||
ADD CONSTRAINT `admins_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
|
ADD CONSTRAINT `admins_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Ограничения внешнего ключа таблицы `objects`
|
||||||
|
--
|
||||||
|
ALTER TABLE `objects`
|
||||||
|
ADD CONSTRAINT `objects_ibfk_1` FOREIGN KEY (`gid`) REFERENCES `object_groups` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT,
|
||||||
|
ADD CONSTRAINT `objects_ibfk_2` FOREIGN KEY (`pid`) REFERENCES `object_partition` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Ограничения внешнего ключа таблицы `object_groups`
|
||||||
|
--
|
||||||
|
ALTER TABLE `object_groups`
|
||||||
|
ADD CONSTRAINT `object_groups_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `object_partition` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Ограничения внешнего ключа таблицы `projects`
|
-- Ограничения внешнего ключа таблицы `projects`
|
||||||
--
|
--
|
||||||
ALTER TABLE `projects`
|
ALTER TABLE `projects`
|
||||||
ADD CONSTRAINT `projects_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
|
ADD CONSTRAINT `projects_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Ограничения внешнего ключа таблицы `sids`
|
-- Ограничения внешнего ключа таблицы `sids`
|
||||||
--
|
--
|
||||||
ALTER TABLE `sids`
|
ALTER TABLE `sids`
|
||||||
ADD CONSTRAINT `sids_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
|
ADD CONSTRAINT `sids_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
|
||||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||||
|
|
2
func.js
|
@ -157,7 +157,7 @@ module.exports.img_recolor = (res,image,color) => {
|
||||||
image: image,
|
image: image,
|
||||||
colors: {
|
colors: {
|
||||||
type: 'hex',
|
type: 'hex',
|
||||||
targetColor: "#FFFFFF",
|
targetColor: "#c8c8c8",
|
||||||
replaceColor: `#${color}`
|
replaceColor: `#${color}`
|
||||||
},
|
},
|
||||||
deltaE: 10
|
deltaE: 10
|
||||||
|
|
29
index.js
|
@ -189,6 +189,17 @@ app.post("/object/group/get", (req,res) => {try{
|
||||||
} catch (error) {func.log("router single object getting error - "+error);}
|
} catch (error) {func.log("router single object getting error - "+error);}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// colors
|
||||||
|
app.post("/object/colors/get", (req,res) => {try{
|
||||||
|
let inp = req.body;
|
||||||
|
let cook = req.cookies;
|
||||||
|
// func.log(inp["name"]);
|
||||||
|
func.sid(cook,res,()=>{
|
||||||
|
obj.load_colors(inp,cook,res);
|
||||||
|
})
|
||||||
|
} catch (error) {func.log("router single object getting error - "+error);}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
/// admin
|
/// admin
|
||||||
app.get("/admin", (req,res) =>{try {
|
app.get("/admin", (req,res) =>{try {
|
||||||
|
@ -217,6 +228,24 @@ app.get("/get_logs", (req,res) => {
|
||||||
try{let cook = req.cookies;func.sid(cook,res,()=>{func.logs_file(res);})}
|
try{let cook = req.cookies;func.sid(cook,res,()=>{func.logs_file(res);})}
|
||||||
catch (error) {func.log("router logs download error - "+error);}
|
catch (error) {func.log("router logs download error - "+error);}
|
||||||
})
|
})
|
||||||
|
app.post("/admin/colors/new", (req,res) => {try{
|
||||||
|
let inp = req.body;
|
||||||
|
let cook = req.cookies;
|
||||||
|
// func.log(inp["name"]);
|
||||||
|
func.sid(cook,res,()=>{
|
||||||
|
obj.new_color(inp,cook,res);
|
||||||
|
})
|
||||||
|
} catch (error) {func.log("router single object getting error - "+error);}
|
||||||
|
})
|
||||||
|
app.post("/admin/colors/delete", (req,res) => {try{
|
||||||
|
let inp = req.body;
|
||||||
|
let cook = req.cookies;
|
||||||
|
// func.log(inp["name"]);
|
||||||
|
func.sid(cook,res,()=>{
|
||||||
|
obj.del_color(inp,cook,res);
|
||||||
|
})
|
||||||
|
} catch (error) {func.log("router single object getting error - "+error);}
|
||||||
|
})
|
||||||
app.post("/admin/objects/new", (req,res) => {try{
|
app.post("/admin/objects/new", (req,res) => {try{
|
||||||
let inp = req.body;
|
let inp = req.body;
|
||||||
let cook = req.cookies;
|
let cook = req.cookies;
|
||||||
|
|
50
object.js
|
@ -10,7 +10,7 @@ module.exports.loads = (inp,cook,res)=>{
|
||||||
let gin
|
let gin
|
||||||
if (typeof inp["gid"] == 'undefined' || inp["gid"] == null) gin = "1 OR 1=1"
|
if (typeof inp["gid"] == 'undefined' || inp["gid"] == null) gin = "1 OR 1=1"
|
||||||
else gin = inp["gid"]
|
else gin = inp["gid"]
|
||||||
db.ggv("objects","`name`,`id`,`height`,`width`,`cost`,`gid`,`colors`","gid",`${gin}`,(odata)=>{
|
db.ggv("objects","`name`,`id`,`height`,`width`,`cost`,`gid`,`colors`,`pid`","gid",`${gin}`,(odata)=>{
|
||||||
// func.log(odata);
|
// func.log(odata);
|
||||||
res.send({out:"good",body:odata});
|
res.send({out:"good",body:odata});
|
||||||
})
|
})
|
||||||
|
@ -42,7 +42,7 @@ module.exports.new = (inp,cook,res)=>{
|
||||||
res.send({out:"bad",err:"name"});
|
res.send({out:"bad",err:"name"});
|
||||||
}
|
}
|
||||||
else if (db_name[0] == null){
|
else if (db_name[0] == null){
|
||||||
db.nr("objects","`cost`,`name`,`img`,`height`,`width`,`gid`,`colors`",`'${inp["cost"]}','${inp["name"]}~g~${gname["name"]}~p~${pname["name"]}','${img_path}','${inp["height"]}','${inp["width"]}','${inp["gid"]}','${inp["colors"]}'`,true);
|
db.nr("objects","`cost`,`name`,`img`,`height`,`width`,`gid`,`colors`,`pid`",`'${inp["cost"]}','${inp["name"]}~g~${gname["name"]}~p~${pname["name"]}','${img_path}','${inp["height"]}','${inp["width"]}','${inp["gid"]}','${inp["colors"]}','${gname["pid"]}'`,true);
|
||||||
db.sv("object_groups","count",`(count + 1)`,"id",inp["gid"],()=>{},true,true)
|
db.sv("object_groups","count",`(count + 1)`,"id",inp["gid"],()=>{},true,true)
|
||||||
func.log(`admin object created name:${inp["name"]} group:${gname["name"]}`);
|
func.log(`admin object created name:${inp["name"]} group:${gname["name"]}`);
|
||||||
res.send({out:"good"});
|
res.send({out:"good"});
|
||||||
|
@ -56,7 +56,7 @@ module.exports.new = (inp,cook,res)=>{
|
||||||
})
|
})
|
||||||
function save_img(data,name,callback) {
|
function save_img(data,name,callback) {
|
||||||
let img = imageDataURI.decode(data);
|
let img = imageDataURI.decode(data);
|
||||||
if (!fs.existsSync(`public/img/object/${name}`)){fs.mkdirSync(`public/img/object/${name}`);fs.mkdirSync(`public/img/object/${name}/colored`);}
|
if (!fs.existsSync(`public/img/object/${name}`)){fs.mkdirSync(`public/img/object/${name}`);}
|
||||||
fs.writeFile(`public/img/object/${name}/main.${img.imageType.split("/").at(-1)}`, img.dataBuffer,()=>{
|
fs.writeFile(`public/img/object/${name}/main.${img.imageType.split("/").at(-1)}`, img.dataBuffer,()=>{
|
||||||
if(callback)callback(`/img/object/${name}/main.${img.imageType.split("/").at(-1)}`);
|
if(callback)callback(`/img/object/${name}/main.${img.imageType.split("/").at(-1)}`);
|
||||||
});
|
});
|
||||||
|
@ -66,6 +66,42 @@ module.exports.new = (inp,cook,res)=>{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module.exports.new_color = (inp,cook,res)=>{
|
||||||
|
try {
|
||||||
|
db.fv("color_palette","color",inp["color"],(in_db)=>{in_db = in_db[0];
|
||||||
|
if(typeof in_db == 'undefined'){
|
||||||
|
db.nr("color_palette","color",`'${inp["color"]}'`,true,(db)=>{
|
||||||
|
res.send({out:"good"});
|
||||||
|
func.log(`admin added new color:${inp["color"]}`)
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
res.send({out:"bad"});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} catch (error) {
|
||||||
|
func.log("backend object creating error - "+error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
module.exports.del_color = (inp,cook,res)=>{
|
||||||
|
try {
|
||||||
|
db.dl("color_palette","id",inp["id"],(in_db)=>{
|
||||||
|
res.send({out:"good"});
|
||||||
|
func.log(`admin deleted color:${inp["color"]}`)
|
||||||
|
},true);
|
||||||
|
} catch (error) {
|
||||||
|
func.log("backend object creating error - "+error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
module.exports.load_colors = (inp,cook,res)=>{
|
||||||
|
try {
|
||||||
|
db.gav("color_palette","0",(in_db)=>{
|
||||||
|
res.send({out:"good",body:in_db})
|
||||||
|
})
|
||||||
|
} catch (error) {
|
||||||
|
func.log("backend object creating error - "+error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module.exports.save = (inp,cook,res)=>{
|
module.exports.save = (inp,cook,res)=>{
|
||||||
try {
|
try {
|
||||||
// let changed = [];
|
// let changed = [];
|
||||||
|
@ -96,19 +132,21 @@ module.exports.save = (inp,cook,res)=>{
|
||||||
fs.rm(`public/img/object/${db_data["name"]}`, { recursive: true }, () => {
|
fs.rm(`public/img/object/${db_data["name"]}`, { recursive: true }, () => {
|
||||||
// fs.unlink(db_data["img"],()=>{});
|
// fs.unlink(db_data["img"],()=>{});
|
||||||
save_img(value,db_data["name"],(path)=>{
|
save_img(value,db_data["name"],(path)=>{
|
||||||
|
// console.log(db_data["name"]);
|
||||||
db.sv("objects",key,path,"id",inp["id"],()=>{
|
db.sv("objects",key,path,"id",inp["id"],()=>{
|
||||||
chack_if_last(key)
|
chack_if_last(key)
|
||||||
},true);
|
},true);
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
function save_img(data,name,callback) {
|
function save_img(data,name,callback) {
|
||||||
let img = imageDataURI.decode(data);
|
let img = imageDataURI.decode(data);
|
||||||
if (!fs.existsSync(`public/img/object/${name}`)){fs.mkdirSync(`public/img/object/${name}`);fs.mkdirSync(`public/img/object/${name}/colored`);}}
|
if (!fs.existsSync(`public/img/object/${name}`)){fs.mkdirSync(`public/img/object/${name}`);}
|
||||||
fs.writeFile(`public/img/object/${name}/main.${img.imageType.split("/").at(-1)}`, img.dataBuffer,()=>{
|
fs.writeFile(`public/img/object/${name}/main.${img.imageType.split("/").at(-1)}`, img.dataBuffer,()=>{
|
||||||
if(callback)callback(`/img/object/${name}/main.${img.imageType.split("/").at(-1)}`);
|
if(callback)callback(`/img/object/${name}/main.${img.imageType.split("/").at(-1)}`);
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
|
|
||||||
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
else if (key != "name"){
|
else if (key != "name"){
|
||||||
|
|
|
@ -71,6 +71,8 @@ module.exports.save = (inp,cook,res)=>{
|
||||||
try {
|
try {
|
||||||
db.gv("users","uuid",`'${cook["uuid"]}'`, (udata)=>{ udata = udata[0]
|
db.gv("users","uuid",`'${cook["uuid"]}'`, (udata)=>{ udata = udata[0]
|
||||||
db.gv("projects","uid",udata["id"],(pdata)=>{
|
db.gv("projects","uid",udata["id"],(pdata)=>{
|
||||||
|
var date = moment().format('YYYY-MM-DD');
|
||||||
|
var time = moment().format('hh:mm:ss');
|
||||||
let projin = null;
|
let projin = null;
|
||||||
// func.log(pdata);
|
// func.log(pdata);
|
||||||
pdata.forEach(projt => {
|
pdata.forEach(projt => {
|
||||||
|
@ -82,14 +84,13 @@ module.exports.save = (inp,cook,res)=>{
|
||||||
if(projin == null){
|
if(projin == null){
|
||||||
// func.log("proj not in");
|
// func.log("proj not in");
|
||||||
// func.log(pname,udata["id"],proj);
|
// func.log(pname,udata["id"],proj);
|
||||||
var date = moment().format('YYYY-MM-DD');
|
|
||||||
var time = moment().format('hh:mm:ss');
|
|
||||||
func.log(`good boy ${udata["uuid"]} created project ${inp["name"]} from ${cook["sid"]}`);
|
func.log(`good boy ${udata["uuid"]} created project ${inp["name"]} from ${cook["sid"]}`);
|
||||||
db.nr("projects","`uid`,`name`,`body`,`img`,creation_date",`'${udata["id"]}','${inp["name"]}','${inp["proj"]}','${inp["img"]}','${date+"T"+time}'`);
|
db.nr("projects","`uid`,`name`,`body`,`img`,creation_date",`'${udata["id"]}','${inp["name"]}','${inp["proj"]}','${inp["img"]}','${date+"T"+time}'`);
|
||||||
res.send({out:"good"});
|
res.send({out:"good"});
|
||||||
} else if (projin != null){
|
} else if (projin != null){
|
||||||
db.sv("projects","body",inp["proj"],"id",projin["id"],()=>{});
|
db.sv("projects","body",inp["proj"],"id",projin["id"],()=>{});
|
||||||
if(inp["img"] != "") db.sv("projects","img",inp["img"],"id",projin["id"],()=>{},"user");
|
db.sv("projects","last_change_date",`${date+"T"+time}`,"id",projin["id"],()=>{});
|
||||||
|
if(inp["img"] != "") db.sv("projects","img",inp["img"],"id",projin["id"],()=>{});
|
||||||
func.log(`good boy ${udata["uuid"]} saved project ${projin["name"]} from ${cook["sid"]}`);
|
func.log(`good boy ${udata["uuid"]} saved project ${projin["name"]} from ${cook["sid"]}`);
|
||||||
// func.log("proj in");
|
// func.log("proj in");
|
||||||
res.send({out:"good"});
|
res.send({out:"good"});
|
||||||
|
|
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 96 KiB |
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 95 KiB |
After Width: | Height: | Size: 95 KiB |
After Width: | Height: | Size: 95 KiB |
After Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 90 KiB |
After Width: | Height: | Size: 90 KiB |
After Width: | Height: | Size: 92 KiB |
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 164 KiB |
|
@ -99,6 +99,21 @@ function get_sid(){
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function load_colors(callback){
|
||||||
|
$.post( "/object/colors/get", {})
|
||||||
|
.done(function( res ) {
|
||||||
|
if(res["out"] == "good"){
|
||||||
|
if(callback)callback(res["body"])
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function clear_palette(){
|
||||||
|
Object.values(document.getElementsByClassName("color_palette")).forEach(element => {
|
||||||
|
element.style.border = "0px blue solid";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function load_groups(callback,groups,admin = false){
|
function load_groups(callback,groups,admin = false){
|
||||||
let select = document.getElementById("group");
|
let select = document.getElementById("group");
|
||||||
// let name = select.options[select.selectedIndex].text;
|
// let name = select.options[select.selectedIndex].text;
|
||||||
|
|
|
@ -50,12 +50,14 @@ function create(clas,x,y,color = null,id,size){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function make(img){
|
function make(img){
|
||||||
|
// console.log(db_data);
|
||||||
obj.src = img;
|
obj.src = img;
|
||||||
obj.title = `${db_data["name"].replaceAll("$"," ").split("/g")[0]}\nцена:${db_data["cost"]}\nширина:${db_data["width"]}см высота:${db_data["height"]}см`;
|
obj.title = `${db_data["name"].replaceAll("$"," ").split("~g")[0]}\nцена:${db_data["cost"]}\nширина:${db_data["width"]}см высота:${db_data["height"]}см`;
|
||||||
obj.setAttribute("cost",db_data["cost"])
|
obj.setAttribute("cost",db_data["cost"])
|
||||||
obj.setAttribute("colors",Boolean(db_data["colors"]))
|
obj.setAttribute("colors",Boolean(db_data["colors"]))
|
||||||
obj.setAttribute("img",img)
|
obj.setAttribute("img",img)
|
||||||
obj.setAttribute("gid",db_data["gid"])
|
obj.setAttribute("gid",db_data["gid"])
|
||||||
|
obj.setAttribute("pid",db_data["pid"])
|
||||||
obj.setAttribute("color",color)
|
obj.setAttribute("color",color)
|
||||||
// drag.transform = `translate(${drag.getAttribute("data-y")}px, ${drag.getAttribute("data-y")}px) scale(${db_data["width"] * cm_mod} ${db_data["height"] * cm_mod})`;
|
// drag.transform = `translate(${drag.getAttribute("data-y")}px, ${drag.getAttribute("data-y")}px) scale(${db_data["width"] * cm_mod} ${db_data["height"] * cm_mod})`;
|
||||||
if(size){
|
if(size){
|
||||||
|
@ -78,7 +80,13 @@ function obj_click(id){
|
||||||
let obj = document.getElementById(id);
|
let obj = document.getElementById(id);
|
||||||
cur_obj = id;
|
cur_obj = id;
|
||||||
if (obj.getAttribute("colors") == "true"){
|
if (obj.getAttribute("colors") == "true"){
|
||||||
document.getElementById("obj_color_div").style.display = "flex";
|
clear_palette();
|
||||||
|
obj_colors_load(()=>{
|
||||||
|
document.getElementById("obj_color_div").style.display = "flex";
|
||||||
|
if( document.getElementById(`color_${obj.getAttribute("color")}`) != null){
|
||||||
|
document.getElementById(`color_${obj.getAttribute("color")}`).style.border = "1px blue solid"
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
document.getElementById("obj_color_div").style.display = "none";
|
document.getElementById("obj_color_div").style.display = "none";
|
||||||
|
@ -148,7 +156,7 @@ function calc_total(start = false){
|
||||||
if(key != "height"&&key!="width"&key!="total"){
|
if(key != "height"&&key!="width"&key!="total"){
|
||||||
// console.log(Object.keys(value).length);
|
// console.log(Object.keys(value).length);
|
||||||
// console.log(objs_store[key]);
|
// console.log(objs_store[key]);
|
||||||
if(objs_store[key] != null && objs_store[key]["cost"] > 0){
|
if(objs_store[key] != null && objs_store[key]["cost"] > 0 && JSON.parse(document.getElementById(`group_drop-${objs_store[key]["pid"]}`).getAttribute("no-cost")) == false){
|
||||||
// console.log(key,value);
|
// console.log(key,value);
|
||||||
total += parseInt(parseInt(objs_store[key]["cost"]) * Object.keys(value).length);
|
total += parseInt(parseInt(objs_store[key]["cost"]) * Object.keys(value).length);
|
||||||
let obj_cost_div = document.createElement("li");
|
let obj_cost_div = document.createElement("li");
|
||||||
|
@ -196,9 +204,6 @@ function load(objss){
|
||||||
if (keys == "color"){
|
if (keys == "color"){
|
||||||
document.getElementById("wall").style.backgroundColor = values;
|
document.getElementById("wall").style.backgroundColor = values;
|
||||||
}
|
}
|
||||||
if (keys == "grided"){
|
|
||||||
document.getElementById("wall").style.backgroundColor = values;
|
|
||||||
}
|
|
||||||
if (keys == Object.keys(objs).at(-1)){
|
if (keys == Object.keys(objs).at(-1)){
|
||||||
loaded();
|
loaded();
|
||||||
proj_state = "loaded";
|
proj_state = "loaded";
|
||||||
|
@ -285,7 +290,7 @@ function load_objs(callback,group){
|
||||||
if(res["out"] == "good"){
|
if(res["out"] == "good"){
|
||||||
// console.log(res["body"]);
|
// console.log(res["body"]);
|
||||||
res["body"].forEach(element => {
|
res["body"].forEach(element => {
|
||||||
objs_store[`${element["name"]}`] = {height:element["height"],width:element["width"],id:element["id"],name:element["name"],cost:element["cost"],colors:element["colors"]}
|
objs_store[`${element["name"]}`] = {height:element["height"],width:element["width"],id:element["id"],name:element["name"],cost:element["cost"],colors:element["colors"],gid:element["gid"],pid:element["pid"]}
|
||||||
});
|
});
|
||||||
callback(res["body"]);
|
callback(res["body"]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
<!-- <h1 style="text-align: center;">объект</h1> -->
|
<!-- <h1 style="text-align: center;">объект</h1> -->
|
||||||
<%- include('../admin/objects/object_groups.ejs') %>
|
<%- include('../admin/objects/object_groups.ejs') %>
|
||||||
<%- include('../admin/objects/object_creation.ejs') %>
|
<%- include('../admin/objects/object_creation.ejs') %>
|
||||||
|
<%- include('../admin/objects/object_colors.ejs') %>
|
||||||
<%- include('../admin/objects/object_edit.ejs') %>
|
<%- include('../admin/objects/object_edit.ejs') %>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
63
views/admin/objects/object_colors.ejs
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
<div id="admin_colors" style="display: flex;justify-content: space-between;margin-top: 4vh;">
|
||||||
|
<div id="obj_color_div" style="justify-content: space-between; width: 50vw;display: flex;">
|
||||||
|
<label for="obj_colors" style="min-width: 10vw;float: left;">цвет объекта</label>
|
||||||
|
<div id="obj_colors" style="display: flex; width: 30vw;overflow: auto;"></div>
|
||||||
|
</div>
|
||||||
|
<div id="inp">
|
||||||
|
<input type="color" id="new_color" style="margin: auto;">
|
||||||
|
<button onclick="new_color()" class="btn_blue">добавить цвет</button>
|
||||||
|
<button onclick="del_color()" class="btn_blue">удалить цвет</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
let cur_color = "";
|
||||||
|
obj_colors_load();
|
||||||
|
function obj_colors_load() {
|
||||||
|
let div = document.getElementById("obj_colors");
|
||||||
|
div.innerHTML = "";
|
||||||
|
load_colors((colors)=>{
|
||||||
|
Object.entries(colors).forEach(([key,value]) => {
|
||||||
|
// console.log(value);
|
||||||
|
let color_div = document.createElement("div");
|
||||||
|
color_div.style = `background-color: #${value["color"]}; border-radius: 50%;height: 2vw;min-width: 2vw;margin-inline: 0.5vw;`;
|
||||||
|
color_div.classList.add("color_palette");
|
||||||
|
color_div.id=`color_${value["color"]}`;
|
||||||
|
color_div.setAttribute("color_id",`${value["id"]}`)
|
||||||
|
color_div.setAttribute("onclick",`clear_palette();document.getElementById('color_${value["color"]}').style.border = "1px blue solid";cur_color = 'color_${value["color"]}';`)
|
||||||
|
color_div.title = `#${value["color"]}`;
|
||||||
|
div.append(color_div);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
}
|
||||||
|
function new_color(){
|
||||||
|
let color = document.getElementById("new_color").value.replace("#","");
|
||||||
|
let wait_msg = msg("добавление цвета",{type:"wait"})
|
||||||
|
$.post( "/admin/colors/new", {color:color})
|
||||||
|
.done(function( res ) {
|
||||||
|
if(res["out"] == "good"){
|
||||||
|
msg_del(wait_msg.id);
|
||||||
|
msg("цвет добавлен");
|
||||||
|
obj_colors_load();
|
||||||
|
console.log(res["body"]);
|
||||||
|
}
|
||||||
|
else if (res["out"] == "bad"){
|
||||||
|
msg_del(wait_msg.id);
|
||||||
|
msg("цвет уже добавлен");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function del_color(){
|
||||||
|
let color_id = document.getElementById(cur_color).getAttribute("color_id")
|
||||||
|
let wait_msg = msg("удаление цвета",{type:"wait"})
|
||||||
|
$.post( "/admin/colors/delete", {id:color_id})
|
||||||
|
.done(function( res ) {
|
||||||
|
if(res["out"] == "good"){
|
||||||
|
msg_del(wait_msg.id);
|
||||||
|
msg("цвет удалён");
|
||||||
|
obj_colors_load();
|
||||||
|
console.log(res["body"]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -48,10 +48,11 @@
|
||||||
let color_check = document.getElementById("obj_color_check");
|
let color_check = document.getElementById("obj_color_check");
|
||||||
let old_prev = document.getElementById("img_prev").src;
|
let old_prev = document.getElementById("img_prev").src;
|
||||||
if(color_check.checked == true){
|
if(color_check.checked == true){
|
||||||
|
obj_colors_load();
|
||||||
removeImageBackground(document.getElementById("img_prev").src).then((out)=>{
|
removeImageBackground(document.getElementById("img_prev").src).then((out)=>{
|
||||||
document.getElementById("img_prev").src = out;
|
document.getElementById("img_prev").src = out;
|
||||||
})
|
})
|
||||||
msg("при измении цвета все цвета кроме прозрачного изменятся",{type:"help",time:10});
|
msg("помните что только hex:#c8c8c8 или rgb:200,200,200 цвета будут заменины при смене цвета ",{type:"help",time:10});
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
document.getElementById("img_prev").src = old_prev;
|
document.getElementById("img_prev").src = old_prev;
|
||||||
|
@ -235,9 +236,7 @@
|
||||||
}
|
}
|
||||||
else if(res["out"] == "good"){
|
else if(res["out"] == "good"){
|
||||||
msg("товар добавлен");
|
msg("товар добавлен");
|
||||||
setTimeout(()=>{
|
edit_get_objs();
|
||||||
edit_get_objs();
|
|
||||||
},5000)
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,15 +43,15 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<section id="users_section">
|
<section id="users_section">
|
||||||
<div style="height: 430px;">
|
<div style="height: 360px;">
|
||||||
<li id="first_user"><div>Логин</div><div>Превилегии</div><div>Функции</div></li>
|
<li id="first_user"><div>Логин</div><div>Превилегии</div><div>Функции</div></li>
|
||||||
<ul id="user_list"></ul>
|
<ul id="user_list"></ul>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: flex;justify-content: space-between;margin: auto;">
|
<div style="display: flex;justify-content: space-between;margin: auto;">
|
||||||
<div style="display: flex;"><h1>Всего: </h1> <h1 id="users_count">0</h1></div>
|
<div style="display: flex;"><h1>Всего: </h1> <h1 id="users_count">0</h1></div>
|
||||||
<div style="display: flex;margin: auto 0px;">с <div id="users_from">0</div> по <div id="users_to">10</div></div>
|
<div style="display: flex;margin: auto 0px;">с <div id="users_from">0</div> по <div id="users_to">10</div></div>
|
||||||
<div style="margin: auto 0px;"><button onclick="if(users_from-load_interval>=0){users_from-=load_interval;load_users_data(users_from);}" class="btn_gray">< 10 назад</button></div>
|
<div style="margin: auto 0px;"><button id="back_btn" class="btn_gray">< 10 назад</button></div>
|
||||||
<div style="margin: auto 0px;"><button onclick="users_from+=load_interval;load_users_data(users_from);" class="btn_gray">даллее ></button></div>
|
<div style="margin: auto 0px;"><button id="forw_btn" class="btn_gray">даллее ></button></div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
@ -59,10 +59,32 @@
|
||||||
<script>
|
<script>
|
||||||
let users_from = 0;
|
let users_from = 0;
|
||||||
let load_interval = 5;
|
let load_interval = 5;
|
||||||
|
function user_count_check(){
|
||||||
|
if(parseInt(document.getElementById("users_count").innerText) >= parseInt(document.getElementById("users_to").innerText)){
|
||||||
|
document.getElementById("forw_btn").classList = "btn_blue";
|
||||||
|
document.getElementById("forw_btn").setAttribute("onclick",`users_from+=load_interval;load_users_data(users_from);`);
|
||||||
|
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
document.getElementById("forw_btn").setAttribute("onclick",``);
|
||||||
|
document.getElementById("forw_btn").classList = "btn_gray";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(parseInt(document.getElementById("users_from").innerText) == 0){
|
||||||
|
document.getElementById("back_btn").setAttribute("onclick",``);
|
||||||
|
document.getElementById("back_btn").classList = "btn_gray";
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
document.getElementById("back_btn").setAttribute("onclick",`if(users_from-load_interval>=0){users_from-=load_interval;load_users_data(users_from);};`);
|
||||||
|
document.getElementById("back_btn").classList = "btn_blue";
|
||||||
|
}
|
||||||
|
}
|
||||||
load_users_data(users_from);
|
load_users_data(users_from);
|
||||||
function load_users_data(from,by_name=false){
|
function load_users_data(from,by_name=false){
|
||||||
// if(to == "forward") {users_from+=load_interval;}
|
// if(to == "forward") {users_from+=load_interval;}
|
||||||
// else if(to == "back") {users_from-=load_interval;}
|
// else if(to == "back") {users_from-=load_interval;}
|
||||||
|
document.getElementById("back_btn").setAttribute("onclick",``);
|
||||||
|
document.getElementById("forw_btn").setAttribute("onclick",``);
|
||||||
document.getElementById("user_list").innerHTML = "";
|
document.getElementById("user_list").innerHTML = "";
|
||||||
document.getElementById("users_from").innerText = from;
|
document.getElementById("users_from").innerText = from;
|
||||||
document.getElementById("users_to").innerText = from+load_interval;
|
document.getElementById("users_to").innerText = from+load_interval;
|
||||||
|
@ -80,6 +102,7 @@
|
||||||
|
|
||||||
user_sec.append(user_pass);user_sec.append(user_name);user_sec.append(user_prevs);user_sec.append(user_buttons);
|
user_sec.append(user_pass);user_sec.append(user_name);user_sec.append(user_prevs);user_sec.append(user_buttons);
|
||||||
document.getElementById("user_list").append(user_sec);
|
document.getElementById("user_list").append(user_sec);
|
||||||
|
user_count_check();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (res["out"] == "bad"){
|
else if (res["out"] == "bad"){
|
||||||
|
@ -90,6 +113,7 @@
|
||||||
else{
|
else{
|
||||||
let login = ask("имя");
|
let login = ask("имя");
|
||||||
if (login != ""){
|
if (login != ""){
|
||||||
|
form = 0;
|
||||||
$.post( "/admin/users/find",{login:login,from:from,load_interval:load_interval})
|
$.post( "/admin/users/find",{login:login,from:from,load_interval:load_interval})
|
||||||
.done(function( res ) {
|
.done(function( res ) {
|
||||||
if(res["out"] == "good"){
|
if(res["out"] == "good"){
|
||||||
|
@ -104,6 +128,10 @@
|
||||||
document.getElementById("user_list").append(user_sec);
|
document.getElementById("user_list").append(user_sec);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
else if(res["out"] == "bad"){
|
||||||
|
msg("нет пользователя с таким иминем")
|
||||||
|
load_users_data(users_from);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<input type="text" id="login" name="login" value="" placeholder="Логин" class="btn_white" style="text-align: center; padding-inline: 5vw;">
|
<input type="text" id="login" name="login" value="" placeholder="Логин" class="btn_white" style="text-align: center; padding-inline: 5vw;">
|
||||||
<input type="submit" onclick='reg();' value="Зарегистрировать" class="btn_blue">
|
<input type="submit" onclick='reg();' value="Зарегистрировать" class="btn_blue">
|
||||||
<div>
|
<div>
|
||||||
<label for="admin_check">Админ. привелегии</label>
|
<label for="admin_check" style="margin: auto;">Админ. привелегии</label>
|
||||||
<input type="checkbox" name="admin" value='false' id="admin_check" onchange="admin_ch()">
|
<input type="checkbox" name="admin" value='false' id="admin_check" onchange="admin_ch()">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -60,9 +60,9 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function new_proj(){
|
function new_proj(objs = null){
|
||||||
let name = ask("please enter project name");
|
let name = ask("please enter project name");
|
||||||
let objs = { height:"2",width:"4"};
|
objs = (objs == null)? { height:"2",width:"4"}:objs;
|
||||||
if(name != null && name!= "" && name!=" " && typeof name != "undefined" && name!="undefined"){
|
if(name != null && name!= "" && name!=" " && typeof name != "undefined" && name!="undefined"){
|
||||||
$.post( "/save_proj", {proj:JSON.stringify(objs),name:name,img:"/img/proj_placeholder.webp"})
|
$.post( "/save_proj", {proj:JSON.stringify(objs),name:name,img:"/img/proj_placeholder.webp"})
|
||||||
.done(function( res ) {
|
.done(function( res ) {
|
||||||
|
@ -84,7 +84,7 @@
|
||||||
projs.forEach(proj => {
|
projs.forEach(proj => {
|
||||||
console.log(proj);
|
console.log(proj);
|
||||||
let div = document.getElementById("projs_div");
|
let div = document.getElementById("projs_div");
|
||||||
div.innerHTML += `<button id='proj_${proj["name"]}' class='proj'>
|
div.innerHTML += `<button id='proj_${proj["name"]}' proj_id='${proj["id"]}' class='proj'>
|
||||||
<img src='${proj["img"]}' alt='${proj["name"]}' class="p_img" onclick="goto('/proj/load/${proj["name"]}')">
|
<img src='${proj["img"]}' alt='${proj["name"]}' class="p_img" onclick="goto('/proj/load/${proj["name"]}')">
|
||||||
<div class="p_props">
|
<div class="p_props">
|
||||||
<div class="p_left" style="text-align:left">
|
<div class="p_left" style="text-align:left">
|
||||||
|
@ -93,8 +93,8 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="p_right">
|
<div class="p_right">
|
||||||
<img src="/img/icon/edit.svg" style="width:24px;height:24px" onclick="">
|
<img src="/img/icon/edit.svg" style="width:24px;height:24px" onclick="">
|
||||||
<img src="/img/icon/copy.svg" style="width:24px;height:24px" onclick="">
|
<img src="/img/icon/copy.svg" style="width:24px;height:24px" onclick="copy_proj('${proj["name"]}')">
|
||||||
<img src="/img/icon/download.svg" style="width:24px;height:24px" onclick="download_proj('${proj["id"]}','${proj["name"]}')">
|
<img src="/img/icon/download.svg" style="width:24px;height:24px" onclick="downloadImg('${proj["img"]}','${proj["name"]}');msg('скачивание');">
|
||||||
<img src="/img/icon/trash.svg" style="width:24px;height:24px" onclick="del_proj('${proj["name"]}')">
|
<img src="/img/icon/trash.svg" style="width:24px;height:24px" onclick="del_proj('${proj["name"]}')">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -122,5 +122,14 @@
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function copy_proj(proj){
|
||||||
|
$.post( "/load_proj",{name:proj})
|
||||||
|
.done(function( res ) {
|
||||||
|
if(res["out"] == "good"){
|
||||||
|
new_proj(JSON.parse(res["body"]))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<%- include('./static/end.ejs',{soc:true}) %>
|
<%- include('./static/end.ejs',{soc:true}) %>
|
|
@ -189,22 +189,9 @@
|
||||||
|
|
||||||
<div class="inputs" style="display: flex;justify-content: space-between;height: 5vh;">
|
<div class="inputs" style="display: flex;justify-content: space-between;height: 5vh;">
|
||||||
<div id="obj_color_div" style="justify-content: space-evenly; width: 50vw;display: none;transform: translateX(30%);">
|
<div id="obj_color_div" style="justify-content: space-evenly; width: 50vw;display: none;transform: translateX(30%);">
|
||||||
<label for="obj_color" style="width: 10vw;">цвет объекта</label>
|
<label for="obj_colors" style="min-width: 10vw;">цвет объекта</label>
|
||||||
|
<div id="obj_colors" style="display: flex; width: 30vw;overflow: auto;"></div>
|
||||||
<!-- <input id="obj_color" type="color" onchange="obj_color_change(event)"> -->
|
<!-- <input id="obj_color" type="color" onchange="obj_color_change(event)"> -->
|
||||||
<div style="display: flex;justify-content: space-evenly; width: 30vw;">
|
|
||||||
<div style="background-color: #43368D; border-radius: 50%;height: 2vw;width: 2vw;" color="#43368D" onclick="obj_color_change('43368D')"></div>
|
|
||||||
<div style="background-color: #41AB34; border-radius: 50%;height: 2vw;width: 2vw;" color="#41AB34" onclick="obj_color_change('41AB34')"></div>
|
|
||||||
<div style="background-color: #F7EA55; border-radius: 50%;height: 2vw;width: 2vw;" color="#F7EA55" onclick="obj_color_change('F7EA55')"></div>
|
|
||||||
<div style="background-color: #E5231F; border-radius: 50%;height: 2vw;width: 2vw;" color="#E5231F" onclick="obj_color_change('E5231F')"></div>
|
|
||||||
<div style="background-color: #F39223; border-radius: 50%;height: 2vw;width: 2vw;" color="#F39223" onclick="obj_color_change('F39223')"></div>
|
|
||||||
<div style="background-color: #009FE3; border-radius: 50%;height: 2vw;width: 2vw;" color="#009FE3" onclick="obj_color_change('009FE3')"></div>
|
|
||||||
<div style="background-color: #CEE8EA; border-radius: 50%;height: 2vw;width: 2vw;" color="#CEE8EA" onclick="obj_color_change('CEE8EA')"></div>
|
|
||||||
<div style="background-color: #B9D585; border-radius: 50%;height: 2vw;width: 2vw;" color="#B9D585" onclick="obj_color_change('B9D585')"></div>
|
|
||||||
<div style="background-color: #F4F2C7; border-radius: 50%;height: 2vw;width: 2vw;" color="#F4F2C7" onclick="obj_color_change('F4F2C7')"></div>
|
|
||||||
<div style="background-color: #E699A7; border-radius: 50%;height: 2vw;width: 2vw;" color="#E699A7" onclick="obj_color_change('E699A7')"></div>
|
|
||||||
<div style="background-color: #F9C771; border-radius: 50%;height: 2vw;width: 2vw;" color="#F9C771" onclick="obj_color_change('F9C771')"></div>
|
|
||||||
<div style="background-color: #B7A3C7; border-radius: 50%;height: 2vw;width: 2vw;" color="#B7A3C7" onclick="obj_color_change('B7A3C7')"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="inputs" style="display: flex;justify-content: space-between;">
|
<div class="inputs" style="display: flex;justify-content: space-between;">
|
||||||
|
@ -309,7 +296,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function img_download(){
|
function img_download(){
|
||||||
msg("добавить на фото стоимость ?",{type:"ask",res:(out)=>{
|
msg("добавить на фото стоимость?",{type:"ask",res:(out)=>{
|
||||||
let wait_msg = msg("делаем фото",{type:"wait"})
|
let wait_msg = msg("делаем фото",{type:"wait"})
|
||||||
proj_img((src)=>{
|
proj_img((src)=>{
|
||||||
msg("изображение проекта готово",{time:3})
|
msg("изображение проекта готово",{time:3})
|
||||||
|
@ -331,6 +318,7 @@
|
||||||
}
|
}
|
||||||
html2canvas(document.getElementById("drags"),{
|
html2canvas(document.getElementById("drags"),{
|
||||||
y:7,
|
y:7,
|
||||||
|
x:2,
|
||||||
width:width,
|
width:width,
|
||||||
logging:false,
|
logging:false,
|
||||||
scale:5
|
scale:5
|
||||||
|
@ -348,6 +336,27 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function obj_colors_load(callback) {
|
||||||
|
let div = document.getElementById("obj_colors");
|
||||||
|
div.innerHTML = "";
|
||||||
|
load_colors((colors)=>{
|
||||||
|
Object.entries(colors).forEach(([key,value]) => {
|
||||||
|
// console.log(value);
|
||||||
|
let color_div = document.createElement("div");
|
||||||
|
color_div.style = `background-color: #${value["color"]}; border-radius: 50%;height: 2vw;min-width: 2vw;margin-inline: 0.5vw;`;
|
||||||
|
color_div.classList.add("color_palette");
|
||||||
|
color_div.id=`color_${value["color"]}`;
|
||||||
|
color_div.setAttribute("color",`${value["color"]}`)
|
||||||
|
color_div.setAttribute("onclick",`clear_palette();document.getElementById('color_${value["color"]}').style.border = "1px blue solid";obj_color_change('${value["color"]}')`)
|
||||||
|
color_div.title = `#${value["color"]}`;
|
||||||
|
div.append(color_div);
|
||||||
|
if(key = Object.keys(colors).at(-1)){
|
||||||
|
if(callback)callback();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
function obj_color_change(color,in_obj = null){
|
function obj_color_change(color,in_obj = null){
|
||||||
if(color != "null"){
|
if(color != "null"){
|
||||||
if (proj_state == "loaded"){objs_back.push(JSON.parse(JSON.stringify(objs)));}
|
if (proj_state == "loaded"){objs_back.push(JSON.parse(JSON.stringify(objs)));}
|
||||||
|
@ -355,6 +364,7 @@
|
||||||
// console.log(color);
|
// console.log(color);
|
||||||
color_change(color,obj.getAttribute("img"),(img)=>{
|
color_change(color,obj.getAttribute("img"),(img)=>{
|
||||||
obj.src = img;
|
obj.src = img;
|
||||||
|
obj.setAttribute("color",color)
|
||||||
objs[obj.classList[0]][obj.id]["color"] = color;
|
objs[obj.classList[0]][obj.id]["color"] = color;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,7 +88,4 @@
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<script>
|
|
||||||
let domen = "puzzle.nor.su";
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|