- Добавлено модальное окно редактирования номера
This commit is contained in:
Alexander Zhirov 2023-06-01 01:10:08 +03:00
parent cf3962d71d
commit c0290cd753
12 changed files with 294 additions and 128 deletions

View file

@ -1,100 +0,0 @@
class Message {
timer;
constructor() {
this.div = $('<div id="div-message"></div>');
this.div.css({
"position": "absolute",
"top": "10px",
"right": "20px",
"z-index": "1000"
});
$('body').append(this.div);
}
success(message, delay = 6000) {
this.print(message, delay, '#52b818', '#bffdc0');
}
warning(message, delay = 6000) {
this.print(message, delay, '#b8ae18', '#f8fdbf');
}
error(message, delay = 6000) {
this.print(message, delay, '#b96161', '#fddede');
}
print = function(message, delay, border, background) {
if (delay < 6000) delay = 6000;
let Timer = function(callback, delay) {
let timerId, start, remaining = delay;
this.pause = function() {
clearTimeout(timerId);
remaining -= new Date() - start;
};
this.resume = function() {
start = new Date();
clearTimeout(timerId);
timerId = setTimeout(callback, remaining);
};
this.dead = function() {
clearTimeout(timerId);
};
this.resume();
}
let newMessage = $(`<div class="message">${message}</div>`);
newMessage.css({
"border": `1px solid ${border}`,
"background-color": `${background}`,
"color": "#333",
"padding": "10px 30px",
"text-align": "center",
"display": "none",
"margin": "10px 0 0 0",
"width": "350px",
"opacity": "1",
"cursor": "pointer"
});
newMessage.hover(function(){
$(this).css({
"opacity": "1"
});
}, function(){
$(this).css({
"opacity": "0.3"
});
});
this.div.append(newMessage);
let opacityTimeout = setTimeout(function() {
newMessage.fadeTo(1000, 0.3);
}, 2500);
newMessage.fadeIn(500).mouseenter(() => {
clearTimeout(opacityTimeout);
this.timer.pause();
}).mouseleave(() => {
this.timer.resume();
}).click(() => {
this.timer.dead();
newMessage.fadeOut(0, function(){
this.remove();
});
});
this.timer = new Timer(() => {
newMessage.fadeOut(500, function(){
this.remove();
});
}, delay);
}
}

4
js/noticer.min.js vendored Normal file
View file

@ -0,0 +1,4 @@
/*! noticer - v0.1.0 - 2023-05-31
* https://git.zhirov.kz/alexander/noticer
* Copyright Alexander Zhirov; Licensed GPL-2.0 */
class Noticer{timer;constructor(){this.div=$('<div id="noticer"></div>'),this.div.css({position:"absolute",top:"10px",right:"20px","z-index":"1000"}),$("body").append(this.div)}success(e,t=6e3){this.print(e,t,"#52b818","#bffdc0")}warning(e,t=6e3){this.print(e,t,"#b8ae18","#f8fdbf")}error(e,t=6e3){this.print(e,t,"#b96161","#fddede")}print=function(e,t,n,s){t<6e3&&(t=6e3);let i=function(e,t){let n,s,o=t;this.pause=function(){clearTimeout(n),o-=new Date-s},this.resume=function(){s=new Date,clearTimeout(n),n=setTimeout(e,o)},this.dead=function(){clearTimeout(n)},this.resume()},o=$(`<div class="notice">${e}</div>`);o.css({border:`1px solid ${n}`,"background-color":`${s}`,color:"#333",padding:"10px 30px","text-align":"center",display:"none",margin:"10px 0 0 0",width:"350px",opacity:"1",cursor:"pointer"}),o.hover(function(){$(this).css({opacity:"1"})},function(){$(this).css({opacity:"0.3"})}),this.div.append(o);let a=setTimeout(function(){o.fadeTo(1e3,.3)},2500);o.fadeIn(500).mouseenter(()=>{clearTimeout(a),this.timer.pause()}).mouseleave(()=>{this.timer.resume()}).click(()=>{this.timer.dead(),o.fadeOut(0,function(){this.remove()})}),this.timer=new i(()=>{o.fadeOut(500,function(){this.remove()})},t)}}

View file

@ -1,7 +1,7 @@
var numbers = [];
$(document).ready(function () {
message = new Message;
noticer = new Noticer;
$("button").button();
$("#tabs").tabs();
@ -59,9 +59,9 @@ function isJSON(str) {
function loadData() {
request('listsgroups', 'text').then(data => {
data.error ? message.error(data.message) : generateListsGroups(data);
data.error ? noticer.error(data.message) : generateListsGroups(data);
}).catch(error => {
message.error(error.message);
noticer.error(error.message);
});
}
@ -78,16 +78,16 @@ function generateListsGroups(data) {
});
}
async function generateGroupNumbers(panel) {
function generateGroupNumbers(panel) {
request('groupnumbers', 'json', { group: panel.data("group-name") }).then(data => {
if (isJSON(data) && JSON.parse(data).error)
message.error(JSON.parse(data).message);
noticer.error(JSON.parse(data).message);
else {
numbers = data;
showNumbers(panel);
}
}).catch(error => {
message.error(error.message);
noticer.error(error.message);
});
}
@ -95,7 +95,7 @@ function showNumbers(panel, data = numbers) {
(new divNotFoundNumbers).remove();
let body = panel.find('.body').html('');
$(data).each((i, j) => {
let row = $(`<tr class="row" data-number="${j.id}"></tr>`);
let row = $(`<tr class="row" data-number="${j.number}"></tr>`);
row.append(`<td>${j.number}</td>`);
row.append(`<td>${j.list}</td>`);
row.append(`<td>${j.all_cc}</td>`);
@ -104,8 +104,8 @@ function showNumbers(panel, data = numbers) {
row.append(`<td>${j.comment}</td>`);
body.append(row);
row.click(function(){
// numberEdit($(this).data('number'));
row.click(function() {
numberEdit($(this).data('number'));
});
});
@ -133,3 +133,75 @@ function divNotFoundNumbers() {
notFound.remove();
}
}
function numberEdit(number) {
request('editnumber', 'text', {number: number}).then(data => {
if (isJSON(data) && JSON.parse(data).error)
noticer.error(JSON.parse(data).message);
else {
showEditNumber(data, [
{
id: "btn-save",
text: "Сохранить",
icon: "ui-icon-check",
click: function() {
actionNumber($(this), 'update');
}
},
{
id: "btn-delete",
text: "Удалить",
icon: "ui-icon-trash",
click: function() {
// removeNumber($(this));
}
}
], `Редактирование номера ${number}`);
}
}).catch(error => {
noticer.error(error.message);
});
}
function showEditNumber(data, actionButton, title) {
let form = $(data);
form.appendTo('body').dialog({
title: title,
height: 'auto',
width: 'auto',
maxHeight: 500,
minHeight: 50,
resizable: false,
modal: true,
show: { effect: "fade", duration: 500 },
close: function(event, ui) {
$(this).dialog('destroy').remove()
},
buttons: [
...actionButton,
{
text: "Отмена",
icon: "ui-icon-cancel",
click: function() {
$(this).dialog("close");
}
}
]
});
$('#number-group, #number-list').selectmenu({
width: 200
});
}
function actionNumber(currentWindow, query) {
let number = $('#number-number').val();
let group = $('#number-group').val();
let list = $('#number-list').val();
let all_cc = $('#number-all-cc').val();
let white_cc = $('#number-white-cc').val();
let black_cc = $('#number-black-cc').val();
let comment = $('#number-comment').val();
}