1873 lines
57 KiB
JavaScript
1873 lines
57 KiB
JavaScript
|
|
var A;
|
|||
|
|
|
|||
|
|
A = {
|
|||
|
|
dropper: false,
|
|||
|
|
init: function() {
|
|||
|
|
A.dropper = !(typeof window.FileReader === 'undefined');
|
|||
|
|
A.FORM.init();
|
|||
|
|
A.P.init();
|
|||
|
|
$.fn.DASHBOARD();
|
|||
|
|
$.fn.WIDGET();
|
|||
|
|
return $(window).on('scroll', A.scroll);
|
|||
|
|
},
|
|||
|
|
scroll: function() {
|
|||
|
|
return A.P.scroll();
|
|||
|
|
},
|
|||
|
|
array_keys: function(arr) {
|
|||
|
|
var i, results;
|
|||
|
|
results = [];
|
|||
|
|
for (i in arr) {
|
|||
|
|
results.push(i);
|
|||
|
|
}
|
|||
|
|
return results;
|
|||
|
|
},
|
|||
|
|
// Работа с формами в этом проекте
|
|||
|
|
FORM: {
|
|||
|
|
globalPrepareValidate: function(i, r) {
|
|||
|
|
$(".error_text", i.$wrap).remove();
|
|||
|
|
return i.$wrap.removeClass('error good');
|
|||
|
|
},
|
|||
|
|
globalGood: function(i, r) {
|
|||
|
|
return i.$wrap.addClass('good');
|
|||
|
|
},
|
|||
|
|
globalBad: function(i, r) {
|
|||
|
|
i.$wrap.addClass('error');
|
|||
|
|
return i.$wrap.append($('<div class="error_text">' + r.errors.join("<br/>") + '</div>'));
|
|||
|
|
},
|
|||
|
|
init: function() {
|
|||
|
|
$.fn.FORM('setGlobalGood', A.FORM.globalGood);
|
|||
|
|
$.fn.FORM('setGlobalBad', A.FORM.globalBad);
|
|||
|
|
$.fn.FORM('setPrepareValidate', A.FORM.globalPrepareValidate);
|
|||
|
|
return $.fn.FORM('setGlobalOptions', {
|
|||
|
|
inputActionWithParent: true
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
reload: function() {
|
|||
|
|
return window.location.reload();
|
|||
|
|
},
|
|||
|
|
display: function(x, y) {
|
|||
|
|
if (y) {
|
|||
|
|
return $(x).show();
|
|||
|
|
} else {
|
|||
|
|
return $(x).hide();
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
notify: function(x, html = '') {
|
|||
|
|
return x.queue(function() {
|
|||
|
|
x.html(html).show(300);
|
|||
|
|
return x.dequeue();
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
setCookie: function(k, v, date) {
|
|||
|
|
var c, cook, domain;
|
|||
|
|
domain = ' domain=*.' + window.location.host + ';';
|
|||
|
|
domain = ' domain=.' + A.domen + ';';
|
|||
|
|
cook = k + "=" + v + '; expires=' + new Date(date ? date : new Date().getTime() + 5184000000).toGMTString() + '; path=/;';
|
|||
|
|
document.cookie = cook + domain;
|
|||
|
|
c = A.getCookie('k');
|
|||
|
|
if (c !== v) {
|
|||
|
|
document.cookie = cook;
|
|||
|
|
}
|
|||
|
|
return cook;
|
|||
|
|
},
|
|||
|
|
getCookie: function(name) {
|
|||
|
|
var pattern, regexp;
|
|||
|
|
pattern = "(?:; )?" + name + "=([^;]*);?";
|
|||
|
|
regexp = new RegExp(pattern);
|
|||
|
|
if (regexp.test(document.cookie)) {
|
|||
|
|
return decodeURIComponent(RegExp["$1"]);
|
|||
|
|
}
|
|||
|
|
return false;
|
|||
|
|
},
|
|||
|
|
createRequestObject: function() {
|
|||
|
|
if (typeof XMLHttpRequest === 'undefined') {
|
|||
|
|
try {
|
|||
|
|
return new ActiveXObject("Msxml2.XMLHTTP.6.0");
|
|||
|
|
} catch (error) {}
|
|||
|
|
try {
|
|||
|
|
return new ActiveXObject("Msxml2.XMLHTTP.3.0");
|
|||
|
|
} catch (error) {}
|
|||
|
|
try {
|
|||
|
|
return new ActiveXObject("Msxml2.XMLHTTP");
|
|||
|
|
} catch (error) {}
|
|||
|
|
try {
|
|||
|
|
return new ActiveXObject("Microsoft.XMLHTTP");
|
|||
|
|
} catch (error) {}
|
|||
|
|
throw new Error("This browser does not support XMLHttpRequest.");
|
|||
|
|
}
|
|||
|
|
return new XMLHttpRequest();
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
$(document).ready(function() {
|
|||
|
|
return A.init();
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
// u - url
|
|||
|
|
// d - data
|
|||
|
|
// c - callback
|
|||
|
|
// cd - callback data
|
|||
|
|
var API;
|
|||
|
|
|
|||
|
|
API = function(u, d = {}, c = null, cd = {}) {
|
|||
|
|
var url;
|
|||
|
|
d['nocache'] = (new Date()).getTime();
|
|||
|
|
url = "/api/" + u + "/";
|
|||
|
|
console.log(url, d);
|
|||
|
|
return $.ajax({
|
|||
|
|
url: url,
|
|||
|
|
type: "POST",
|
|||
|
|
dataType: d.dataType !== void 0 ? d.dataType : "html",
|
|||
|
|
data: d,
|
|||
|
|
success: function(data) {
|
|||
|
|
if (c !== null) {
|
|||
|
|
return typeof c === "function" ? c(data, cd) : void 0;
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
error: function() {
|
|||
|
|
return typeof c === "function" ? c({
|
|||
|
|
error: 1
|
|||
|
|
}, cd) : void 0;
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
A.DROPPER = {
|
|||
|
|
id: 0,
|
|||
|
|
getNextId: function() {
|
|||
|
|
return A.DROPPER.id++;
|
|||
|
|
},
|
|||
|
|
create: function(x, url, data) {
|
|||
|
|
var res;
|
|||
|
|
res = new Array();
|
|||
|
|
if (A.dropper) {
|
|||
|
|
$(x).each(function() {
|
|||
|
|
var c;
|
|||
|
|
c = function(x) {
|
|||
|
|
var isMulti, o;
|
|||
|
|
isMulti = ((data != null ? data.multi : void 0) != null) && data.multi ? true : false;
|
|||
|
|
o = {};
|
|||
|
|
o.logo = $(x);
|
|||
|
|
o.ulogo = $(".over", o.logo);
|
|||
|
|
o.hlogo = $(".drop_help", o.logo);
|
|||
|
|
o.plogo = $(".drop_preview", o.logo);
|
|||
|
|
o.file = $("input[type=file]", o.logo);
|
|||
|
|
if (o.file.length === 0) {
|
|||
|
|
o.file = $('<div class="dib"><input ' + (isMulti ? 'multiple' : '') + ' type="file" value="Выбрать изображение" name="imgs" accept="image/jpeg,image/png,image/gif"/></div>');
|
|||
|
|
o.hlogo.prepend(o.file);
|
|||
|
|
}
|
|||
|
|
//o.hlogo.append($('<span class="choose" onclick="$(this).prev().click()">Выбрать файл'+(if isMulti then 'ы' else '')+'</span>'));
|
|||
|
|
o.file = $("input[type=file]", o.logo);
|
|||
|
|
o.file.attr('id', 'file_dropper_id_' + A.DROPPER.getNextId()).change(function() {
|
|||
|
|
var f;
|
|||
|
|
//console.log('changes')
|
|||
|
|
f = document.getElementById(o.file.attr('id'));
|
|||
|
|
//console.log(f.files)
|
|||
|
|
return o.sendFiles(f.files);
|
|||
|
|
});
|
|||
|
|
//console.log(o.file)
|
|||
|
|
//console.log(data)
|
|||
|
|
|
|||
|
|
//if o.logo.hasClass('have')
|
|||
|
|
//o.hlogo.hide();
|
|||
|
|
o.logo.bind('dragenter', function() {
|
|||
|
|
o.logo.addClass('dopper_hover');
|
|||
|
|
return false;
|
|||
|
|
});
|
|||
|
|
o.sendFiles = function(files) {
|
|||
|
|
var bar, f, file, ref, ref1, ref2, ref3, ref4;
|
|||
|
|
//console.log files
|
|||
|
|
o.loaded = 0;
|
|||
|
|
o.links = new Array();
|
|||
|
|
o.count = files.length;
|
|||
|
|
o.plogo.children().remove();
|
|||
|
|
for (file in files) {
|
|||
|
|
f = files[file];
|
|||
|
|
if (f !== void 0 && f.type !== void 0 && ((f != null ? (ref = f.type) != null ? ref.match(/image.*/) : void 0 : void 0) || (f != null ? (ref1 = f.type) != null ? ref1.match(/audio.*/) : void 0 : void 0) || (f != null ? (ref2 = f.type) != null ? ref2.match(/text.*/) : void 0 : void 0) || (f != null ? (ref3 = f.type) != null ? ref3.match(/application.*/) : void 0 : void 0) || (f != null ? (ref4 = f.type) != null ? ref4.match(/video.*/) : void 0 : void 0))) {
|
|||
|
|
//console.log f
|
|||
|
|
bar = function(f) {
|
|||
|
|
var b;
|
|||
|
|
b = {};
|
|||
|
|
//o.hlogo.hide();
|
|||
|
|
o.plogo.show();
|
|||
|
|
b.$div = $('<div class="block_perc"/>').text(file.name).appendTo(o.plogo);
|
|||
|
|
b.$prog = $('<div/>').addClass('progress').appendTo(b.$div);
|
|||
|
|
b.$bar = $('<div/>').addClass('bar').appendTo(b.$prog);
|
|||
|
|
b.$btxt = $('<div/>').addClass('bartxt').text('0%').appendTo(b.$prog);
|
|||
|
|
b.flogo = file;
|
|||
|
|
b.reader = new FileReader();
|
|||
|
|
b.reader.onloadend = function(e) {
|
|||
|
|
var body, boundary, d, xhr;
|
|||
|
|
//aImg.attr('src', e.target.result);
|
|||
|
|
// ... обновляем инфу о выбранных файлах ...
|
|||
|
|
xhr = A.createRequestObject();
|
|||
|
|
xhr.upload.addEventListener("progress", function(e) {
|
|||
|
|
var pro;
|
|||
|
|
if (e.lengthComputable) {
|
|||
|
|
pro = (e.loaded * 100) / e.total;
|
|||
|
|
b.$bar.css({
|
|||
|
|
width: pro + "%"
|
|||
|
|
});
|
|||
|
|
return b.$btxt.text((pro.toFixed(0)) + "%");
|
|||
|
|
}
|
|||
|
|
//console.log(pro)
|
|||
|
|
}, false);
|
|||
|
|
xhr.onreadystatechange = function() {
|
|||
|
|
if (this.readyState === 4) {
|
|||
|
|
if (this.status === 200) {
|
|||
|
|
//console.log this.responseText
|
|||
|
|
if (((data != null ? data.multi : void 0) != null) && data.multi) {
|
|||
|
|
o.loaded++;
|
|||
|
|
if (this.responseText !== "error") {
|
|||
|
|
o.links.push(this.responseText);
|
|||
|
|
} else {
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
// DOME выдавать какую-нибудь ошибку
|
|||
|
|
//console.log(o.loaded,o.count)
|
|||
|
|
if (((data != null ? data.callback : void 0) != null)) {
|
|||
|
|
data.callback(this.responseText, data.cd);
|
|||
|
|
}
|
|||
|
|
if (o.loaded === o.count) {
|
|||
|
|
if ((data != null ? data.callbackAll : void 0) != null) {
|
|||
|
|
//console.log data, o
|
|||
|
|
data.callbackAll(o.links, data.cd);
|
|||
|
|
}
|
|||
|
|
o.plogo.hide();
|
|||
|
|
return o.hlogo.show();
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
o.logo.css("background-image", 'url("' + this.responseText + '")').addClass('have');
|
|||
|
|
if (((data != null ? data.callback : void 0) != null)) {
|
|||
|
|
data.callback(this.responseText, data.cd);
|
|||
|
|
} else {
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
//o.logo.css("background-image",'url("'+this.responseText+'")').addClass('have');
|
|||
|
|
return o.plogo.hide();
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
//* ... ошибка! ... */
|
|||
|
|
xhr.open("POST", url);
|
|||
|
|
boundary = "xxxxxxxxx";
|
|||
|
|
xhr.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + boundary);
|
|||
|
|
xhr.setRequestHeader("Cache-Control", "no-cache");
|
|||
|
|
body = "--" + boundary + "\r\n";
|
|||
|
|
body += "Content-Disposition: form-data; name='myFile'; filename='" + f.name + "'\r\n";
|
|||
|
|
body += 'Content-Type: ' + f.type + '\r\n\r\n';
|
|||
|
|
body += b.reader.result + "\r\n";
|
|||
|
|
body += "--" + boundary + "\r\n";
|
|||
|
|
for (d in data) {
|
|||
|
|
//console.log('data d',d,data[d])
|
|||
|
|
body += 'Content-Disposition: form-data; name="' + d + '"' + "\r\n\r\n";
|
|||
|
|
body += data[d] + "\r\n";
|
|||
|
|
body += "--" + boundary + "\r\n";
|
|||
|
|
}
|
|||
|
|
if (xhr.sendAsBinary) {
|
|||
|
|
// только для firefox
|
|||
|
|
return xhr.sendAsBinary(body);
|
|||
|
|
} else {
|
|||
|
|
// chrome (так гласит спецификация W3C)
|
|||
|
|
return xhr.send(body);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
return b.reader.readAsDataURL(f);
|
|||
|
|
};
|
|||
|
|
bar(f);
|
|||
|
|
}
|
|||
|
|
if (isMulti) {
|
|||
|
|
continue;
|
|||
|
|
} else {
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return false;
|
|||
|
|
};
|
|||
|
|
o.ulogo.bind({
|
|||
|
|
dragover: function() {
|
|||
|
|
return false;
|
|||
|
|
},
|
|||
|
|
dragleave: function() {
|
|||
|
|
o.logo.removeClass('dopper_hover');
|
|||
|
|
return false;
|
|||
|
|
},
|
|||
|
|
drop: function(e) {
|
|||
|
|
o.logo.removeClass('dopper_hover');
|
|||
|
|
o.files = e.originalEvent.dataTransfer.files;
|
|||
|
|
o.sendFiles(o.files);
|
|||
|
|
//console.log(logo)
|
|||
|
|
//console.log(files)
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
return o;
|
|||
|
|
};
|
|||
|
|
return res.push(c(this));
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
return res;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
var H;
|
|||
|
|
|
|||
|
|
H = {
|
|||
|
|
menu: {},
|
|||
|
|
selected: {},
|
|||
|
|
top_selected: null,
|
|||
|
|
inited: false,
|
|||
|
|
dir: '', // up | down | left | right
|
|||
|
|
title: null,
|
|||
|
|
data: null,
|
|||
|
|
ready: function() {
|
|||
|
|
if (!H.inited) {
|
|||
|
|
$(window).on('popstate', H.switchByWindow);
|
|||
|
|
H.inited = true;
|
|||
|
|
H.body = $("#content");
|
|||
|
|
return H.title = $("title");
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
//H.switch()
|
|||
|
|
reload: function() {
|
|||
|
|
return H.switch({
|
|||
|
|
animate: false
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
formGo: function(form) {
|
|||
|
|
var $f, action, path, s;
|
|||
|
|
s = ($f = $(form)).serialize();
|
|||
|
|
action = $f.attr('action');
|
|||
|
|
if (action === void 0) {
|
|||
|
|
action = window.location.pathname;
|
|||
|
|
}
|
|||
|
|
//console.log action
|
|||
|
|
H.go(path = action + '?' + s);
|
|||
|
|
return false;
|
|||
|
|
},
|
|||
|
|
go: function(x, data = null, title = '', reload = true) {
|
|||
|
|
var y;
|
|||
|
|
if (x.substr(0, 1) === '/') {
|
|||
|
|
x = x.substr(1);
|
|||
|
|
}
|
|||
|
|
y = '/' + x;
|
|||
|
|
H.data = data;
|
|||
|
|
history.pushState(data, title, y);
|
|||
|
|
if (reload) {
|
|||
|
|
return H.switch();
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
setTitle: function(x) {
|
|||
|
|
return H.title.text(x);
|
|||
|
|
},
|
|||
|
|
switchByWindow: function(x) {
|
|||
|
|
return H.switch(x.state);
|
|||
|
|
},
|
|||
|
|
switch: function(o = {
|
|||
|
|
animate: true
|
|||
|
|
}) {
|
|||
|
|
var path, url;
|
|||
|
|
path = H.parse();
|
|||
|
|
url = path.join("/");
|
|||
|
|
if (url === "/" || url === "") {
|
|||
|
|
url = "/?justContent=1";
|
|||
|
|
} else {
|
|||
|
|
url = `/${url}/?justContent=1`;
|
|||
|
|
}
|
|||
|
|
if (window.location.search.length > 0) {
|
|||
|
|
url += '&' + window.location.search.substr(1);
|
|||
|
|
}
|
|||
|
|
//console.log url
|
|||
|
|
return $.ajax({
|
|||
|
|
url: url,
|
|||
|
|
//url:"/#{url}/?mini=1"
|
|||
|
|
dataType: "JSON",
|
|||
|
|
success: function(data) {
|
|||
|
|
var $data, $html, i, j, ref, ref1, results, s;
|
|||
|
|
//console.log data
|
|||
|
|
if (typeof data.location === "string" && data.location !== "") {
|
|||
|
|
return H.go(data.location);
|
|||
|
|
} else {
|
|||
|
|
H.title.text(data.title);
|
|||
|
|
$data = $(data.content);
|
|||
|
|
$html = $($data[0]);
|
|||
|
|
$("#title").text(data.data.title);
|
|||
|
|
H.setTitle(data.data.title);
|
|||
|
|
//$hide = $(".b_content:not(.hide)").addClass('hide')
|
|||
|
|
//$(".b_content").remove()
|
|||
|
|
//$.fn.TABLE('allDestroy')
|
|||
|
|
H.body.html($html);
|
|||
|
|
A.P.initMini($html);
|
|||
|
|
//A.P.scrollToTop()
|
|||
|
|
if ($data.length > 1) {
|
|||
|
|
results = [];
|
|||
|
|
for (i = j = 1, ref = $data.length - 1; (1 <= ref ? j <= ref : j >= ref); i = 1 <= ref ? ++j : --j) {
|
|||
|
|
s = document.createElement('script');
|
|||
|
|
if ((ref1 = $data[i].tagName) === 'SCRIPT' || ref1 === 'script') {
|
|||
|
|
s.innerHTML = $($data[i]).html();
|
|||
|
|
results.push(H.body[0].appendChild(s));
|
|||
|
|
} else {
|
|||
|
|
results.push(void 0);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return results;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
error: function() {
|
|||
|
|
return console.log('history error ');
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
SEARCH: {
|
|||
|
|
set: function(s, reload = false) {
|
|||
|
|
var x;
|
|||
|
|
x = window.location.pathname + '?' + s;
|
|||
|
|
return H.go(x, null, '', reload);
|
|||
|
|
},
|
|||
|
|
parse: function() {
|
|||
|
|
var i, pos, res, v, x;
|
|||
|
|
res = {};
|
|||
|
|
if (window.location.search.length > 0) {
|
|||
|
|
x = window.location.search.substr(1).split('&');
|
|||
|
|
for (i in x) {
|
|||
|
|
v = x[i];
|
|||
|
|
pos = v.indexOf('=');
|
|||
|
|
if (pos >= 0) {
|
|||
|
|
res[v.substr(0, pos)] = v.substr(pos + 1);
|
|||
|
|
} else {
|
|||
|
|
res[v] = null;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return res;
|
|||
|
|
},
|
|||
|
|
setValue: function(key, value, reload = false) {
|
|||
|
|
var s, x;
|
|||
|
|
x = H.SEARCH.parse();
|
|||
|
|
x[key] = value;
|
|||
|
|
s = H.SEARCH.toString(x);
|
|||
|
|
return H.SEARCH.set(s);
|
|||
|
|
},
|
|||
|
|
toString: function(a) {
|
|||
|
|
var i, res, v;
|
|||
|
|
res = [];
|
|||
|
|
for (i in a) {
|
|||
|
|
v = a[i];
|
|||
|
|
res.push(i + '=' + (v != null ? v : ''));
|
|||
|
|
}
|
|||
|
|
return res.join('&');
|
|||
|
|
},
|
|||
|
|
get: function(x) {
|
|||
|
|
var e;
|
|||
|
|
try {
|
|||
|
|
return decodeURI(H.SEARCH.parse()[x]);
|
|||
|
|
} catch (error) {
|
|||
|
|
e = error;
|
|||
|
|
return H.SEARCH.parse()[x];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
//H.SEARCH.parse()[x]
|
|||
|
|
parse: function() {
|
|||
|
|
var a, i, j, len, o;
|
|||
|
|
a = window.location.pathname.split("/");
|
|||
|
|
o = [];
|
|||
|
|
for (j = 0, len = a.length; j < len; j++) {
|
|||
|
|
i = a[j];
|
|||
|
|
if (i !== "") {
|
|||
|
|
o.push(i);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return o;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
$(window).ready(H.ready);
|
|||
|
|
|
|||
|
|
A.P = {
|
|||
|
|
scrollTimeout: null,
|
|||
|
|
getScrollTop: function() {
|
|||
|
|
return Math.max(A.P.body.scrollTop(), A.P.$body.scrollTop(), A.P.$html.scrollTop());
|
|||
|
|
},
|
|||
|
|
init: function() {
|
|||
|
|
A.P.body = $("body");
|
|||
|
|
A.P.$body = $("body");
|
|||
|
|
A.P.$html = $("html");
|
|||
|
|
return A.P.initMini();
|
|||
|
|
},
|
|||
|
|
scroll: function() {},
|
|||
|
|
//console.log 'SCROLL'
|
|||
|
|
//A.P.$html.addClass('scroll')
|
|||
|
|
//if A.P.scrollTimeout!=null
|
|||
|
|
// clearTimeout(A.P.scrollTimeout)
|
|||
|
|
//A.P.scrollTimeout = setTimeout(A.P.aScroll,300)
|
|||
|
|
aScroll: function() {
|
|||
|
|
return A.P.$html.removeClass('scroll');
|
|||
|
|
},
|
|||
|
|
initMini: function($html = A.P.body) {
|
|||
|
|
A.P.initPreventLink($html);
|
|||
|
|
$("._module_table", $html).TABLE();
|
|||
|
|
A.P.initForm($html);
|
|||
|
|
$("._ps", $html).perfectScrollbar();
|
|||
|
|
$("[data-input=image]", $html).IMAGE('init_upload');
|
|||
|
|
$("[data-input=video]", $html).VIDEO('init_upload');
|
|||
|
|
$("[data-input=date] input", $html).datetimepicker({
|
|||
|
|
yearOffset: 0,
|
|||
|
|
lang: 'ru',
|
|||
|
|
timepicker: false,
|
|||
|
|
format: 'Y-m-d',
|
|||
|
|
formatDate: 'Y-m-d'
|
|||
|
|
});
|
|||
|
|
$("[data-input=datetime] input", $html).datetimepicker({
|
|||
|
|
yearOffset: 0,
|
|||
|
|
lang: 'ru',
|
|||
|
|
timepicker: true,
|
|||
|
|
format: 'Y-m-d H:i',
|
|||
|
|
formatDate: 'Y-m-d H:i'
|
|||
|
|
});
|
|||
|
|
$("form", $html).FORM();
|
|||
|
|
return $("._toggle_tinymce", $html).click(function() {
|
|||
|
|
var $p, $t, $txt, id;
|
|||
|
|
$t = $(this);
|
|||
|
|
$p = $t.closest('[data-input]');
|
|||
|
|
$txt = $("textarea", $p);
|
|||
|
|
if ($t.is(":checked")) {
|
|||
|
|
id = 'tiny_' + (new Date()).getTime();
|
|||
|
|
$txt.attr('id', id);
|
|||
|
|
$p.attr('data-input', 'tinymce');
|
|||
|
|
$p.attr('data-input-tinymce', id);
|
|||
|
|
A.P.initTiny('#' + id, {
|
|||
|
|
onChange: function() {
|
|||
|
|
console.log('change');
|
|||
|
|
return $txt.val(tinymce.get($txt.attr('id')).getContent());
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
} else {
|
|||
|
|
$p.attr('data-input', 'textarea');
|
|||
|
|
tinymce.get($txt.attr('id')).remove();
|
|||
|
|
}
|
|||
|
|
return $t.closest('.ps-container').perfectScrollbar('update');
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
initForm: function($html) {
|
|||
|
|
return $("form [type=submit]", $html).click(function() {
|
|||
|
|
var $f, $t;
|
|||
|
|
$f = ($t = $(this)).closest('form');
|
|||
|
|
return $f.data('submit_clicked', $t);
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
initTiny: function(selector, options = {}) {
|
|||
|
|
return tinymce.init({
|
|||
|
|
selector: selector,
|
|||
|
|
plugins: 'image',
|
|||
|
|
height: 350,
|
|||
|
|
images_upload_url: '/api/common.image/uploadAccountTinyMCE/',
|
|||
|
|
images_reuse_filename: true,
|
|||
|
|
images_upload_base_path: window.location.origin,
|
|||
|
|
//images_upload_credentials: true,
|
|||
|
|
language: 'ru',
|
|||
|
|
valid_elements: '*[*]',
|
|||
|
|
relative_urls: false,
|
|||
|
|
remove_script_host: true,
|
|||
|
|
document_base_url: window.location.origin,
|
|||
|
|
setup: function(editor) {
|
|||
|
|
//register callbacks to capture the image's original-src at appropriate times
|
|||
|
|
editor.on('BeforeSetContent', function(e) {});
|
|||
|
|
//F.checkMediaSize.apply($(selector),null)
|
|||
|
|
//setImageData( e.target.contentDocument );
|
|||
|
|
return editor.on('change', function(e) {
|
|||
|
|
return typeof options.onChange === "function" ? options.onChange() : void 0;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
//F.checkMediaSize.apply($(selector),null)
|
|||
|
|
//setImageData( e.target.contentDocument );
|
|||
|
|
initPreventLink: function(x) {
|
|||
|
|
return $("a:not(.prevented)", $(x)).addClass('prevented').click(A.P.preventALink);
|
|||
|
|
},
|
|||
|
|
preventALink: function(e) {
|
|||
|
|
var $t, href;
|
|||
|
|
href = ($t = $(this)).attr('href');
|
|||
|
|
//console.log
|
|||
|
|
if ($t.hasClass('propagation')) {
|
|||
|
|
e.preventDefault();
|
|||
|
|
return e.stopPropagation();
|
|||
|
|
} else if (href === "" || href === "#") {
|
|||
|
|
return e.preventDefault();
|
|||
|
|
} else if (href !== void 0) {
|
|||
|
|
if ($t.hasClass('_to_card')) {
|
|||
|
|
e.preventDefault();
|
|||
|
|
e.stopPropagation();
|
|||
|
|
return $.fn.CARD('openNew', {
|
|||
|
|
api: $t.attr('data-module'),
|
|||
|
|
id: $t.attr('data-id')
|
|||
|
|
});
|
|||
|
|
} else if (href.substr(0, 1) === '/') {
|
|||
|
|
e.preventDefault();
|
|||
|
|
e.stopPropagation();
|
|||
|
|
return H.go($(this).attr('href'));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
(function($) {
|
|||
|
|
var F;
|
|||
|
|
$.fn.SECTION = function(method) {
|
|||
|
|
if (F[method]) {
|
|||
|
|
return F[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
|||
|
|
} else if (typeof method === "object" || !method) {
|
|||
|
|
return F.init.apply(this, arguments);
|
|||
|
|
} else {
|
|||
|
|
return $.error('Метод с именем ' + method + ' не существует для jQuery.SECTION');
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
return F = {
|
|||
|
|
init: function() {},
|
|||
|
|
initChangingTheme: function(data) {
|
|||
|
|
var $input, f;
|
|||
|
|
$input = $('[data-name="msPortalSection_theme"]:not(.inited)').addClass('inited').data('send_data', data);
|
|||
|
|
f = $input.closest('._form').FORM();
|
|||
|
|
return $input.on("input:change", F.changeTheme).trigger('input:change');
|
|||
|
|
},
|
|||
|
|
changeTheme: function() {
|
|||
|
|
var $i, $t;
|
|||
|
|
$t = $(this);
|
|||
|
|
$i = Input.init($(this));
|
|||
|
|
return API('core.site.theme/getForm', {
|
|||
|
|
id: $i.value(),
|
|||
|
|
data: $t.data('send_data')
|
|||
|
|
}, function(resp) {
|
|||
|
|
var $data;
|
|||
|
|
$data = $(resp);
|
|||
|
|
A.P.initMini($data);
|
|||
|
|
$(".loaded_form", $t.closest('._form')).html($data);
|
|||
|
|
return $t = null;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
})(jQuery);
|
|||
|
|
|
|||
|
|
(function($) {
|
|||
|
|
var F;
|
|||
|
|
$.fn.DASHBOARD = function(method) {
|
|||
|
|
if (F[method]) {
|
|||
|
|
return F[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
|||
|
|
} else if (typeof method === "object" || !method) {
|
|||
|
|
return F.init.apply(this, arguments);
|
|||
|
|
} else {
|
|||
|
|
return $.error('Метод с именем ' + method + ' не существует для jQuery.DASHBOARD');
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
return F = {
|
|||
|
|
now: 0,
|
|||
|
|
count: 0,
|
|||
|
|
init: function() {
|
|||
|
|
F.container = $("#dashboards");
|
|||
|
|
F.list_wrap = $("#dash_elements");
|
|||
|
|
F.list = $(".dash_li", F.list_wrap);
|
|||
|
|
F.setDashboard(F.list[0].getAttribute('data-id'));
|
|||
|
|
F.addListeners();
|
|||
|
|
return $(".add_dashboard").click(F.openAddDashboard);
|
|||
|
|
},
|
|||
|
|
addListeners: function() {
|
|||
|
|
$(".edit_dashboard", F.list_wrap).click(F.openEditDashboard);
|
|||
|
|
return $(".delete_dashboard", F.list_wrap).click(F.deleteDashboard);
|
|||
|
|
},
|
|||
|
|
deleteDashboard: function(e) {
|
|||
|
|
var id;
|
|||
|
|
e.stopPropagation();
|
|||
|
|
id = e.target.getAttribute('data-id');
|
|||
|
|
return API('ms.dashboard/deleteByIds', {
|
|||
|
|
ids: [id]
|
|||
|
|
}, function() {
|
|||
|
|
return F.reloadList();
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
openEditDashboard: function(e) {
|
|||
|
|
var id;
|
|||
|
|
e.stopPropagation();
|
|||
|
|
id = e.target.getAttribute('data-id');
|
|||
|
|
return F.openAddDashboard(e, id);
|
|||
|
|
},
|
|||
|
|
openAddDashboard: function(e, id = 0) {
|
|||
|
|
return $.fn.WINDOW('init', {
|
|||
|
|
options: {
|
|||
|
|
x: 'center', //e.clientX - 10
|
|||
|
|
y: 'center', //e.clientY - 10
|
|||
|
|
api: 'ms.dashboard/renderWindowForm'
|
|||
|
|
},
|
|||
|
|
data: {
|
|||
|
|
id: id
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
//next:->F.setPage(F.now+1)
|
|||
|
|
//prev:->F.setPage(F.now-1)
|
|||
|
|
setDashboard: function(x) {
|
|||
|
|
F.now = x;
|
|||
|
|
F.list.removeClass('selected');
|
|||
|
|
$(`[data-id=${x}]`, F.list_wrap).addClass('selected');
|
|||
|
|
return API('ms.dashboard/render', {
|
|||
|
|
id: x
|
|||
|
|
}, function(data) {
|
|||
|
|
var $data;
|
|||
|
|
$data = $(data);
|
|||
|
|
F.container.html($data);
|
|||
|
|
F.initDashboard();
|
|||
|
|
A.P.initMini($data);
|
|||
|
|
return $data.on('scroll', A.P.scroll);
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
reloadList: function() {
|
|||
|
|
return API('ms.dashboard/getMyList', {}, function(data) {
|
|||
|
|
$("#dash_elements").html(data);
|
|||
|
|
return F.addListeners();
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
initIcons: function($html = F.container) {
|
|||
|
|
return $(".icon_td", $html).click(F.iconClick);
|
|||
|
|
},
|
|||
|
|
initDashboard: function() {
|
|||
|
|
$(".test_table_wrap", F.container).perfectScrollbar();
|
|||
|
|
F.initIcons();
|
|||
|
|
$(".grid_dash").sortable({
|
|||
|
|
distance: 5,
|
|||
|
|
handle: '.drag_handle',
|
|||
|
|
stop: function(e, $t, $list) {
|
|||
|
|
var arr, id;
|
|||
|
|
id = $list.parent().attr('data-id');
|
|||
|
|
arr = [];
|
|||
|
|
$list.children().each(function() {
|
|||
|
|
return arr.push(this.getAttribute('data-id'));
|
|||
|
|
});
|
|||
|
|
return API('ms.dashboard/updateWidgetsPos', {
|
|||
|
|
id: id,
|
|||
|
|
pos: arr
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
// Инициализация таблиц
|
|||
|
|
//$(".dash_cell[data-type=2] .module_table").perfectScrollbar()
|
|||
|
|
$(".dash_cell[data-type=2]").perfectScrollbar();
|
|||
|
|
return $(".dash_cell .widget_delete").click(function(e) {
|
|||
|
|
e.stopPropagation();
|
|||
|
|
return $.fn.WIDGET('deleteWidget', $(this).closest('.dash_cell').attr('data-id'));
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
iconClick: function(e) {
|
|||
|
|
var $t, api, id, ref, ref1, ref2, type;
|
|||
|
|
$t = $(this);
|
|||
|
|
api = (ref = $t.attr('data-api')) != null ? ref : 'ms.widget/window';
|
|||
|
|
id = (ref1 = $t.attr('data-id')) != null ? ref1 : 0;
|
|||
|
|
type = (ref2 = $t.attr('data-type')) != null ? ref2 : 0;
|
|||
|
|
return $.fn.WINDOW('init', {
|
|||
|
|
options: {
|
|||
|
|
//x : e.clientX - 10
|
|||
|
|
//y : e.clientY - 10
|
|||
|
|
x: 'center',
|
|||
|
|
y: 'center',
|
|||
|
|
width: 1000,
|
|||
|
|
height: 650,
|
|||
|
|
api: api
|
|||
|
|
},
|
|||
|
|
data: {
|
|||
|
|
id: id,
|
|||
|
|
type: type
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
addWidget: function(data, id) {
|
|||
|
|
data.id = id;
|
|||
|
|
return API('ms.dashboard/addWidget', data, F.reloadDashboard);
|
|||
|
|
},
|
|||
|
|
reloadDashboard: function() {
|
|||
|
|
var id;
|
|||
|
|
id = $(".dashboard").attr('data-id');
|
|||
|
|
return F.setDashboard(id);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
})(jQuery);
|
|||
|
|
|
|||
|
|
(function($) {
|
|||
|
|
var F;
|
|||
|
|
$.fn.ENTITY = function(method) {
|
|||
|
|
if (F[method]) {
|
|||
|
|
return F[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
|||
|
|
} else if (typeof method === "object" || !method) {
|
|||
|
|
return F.init.apply(this, arguments);
|
|||
|
|
} else {
|
|||
|
|
return $.error('Метод с именем ' + method + ' не существует для jQuery.ENTITY');
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
return F = {
|
|||
|
|
init: function() {},
|
|||
|
|
updateUI: function(controller) {
|
|||
|
|
// Дополнительные исключения
|
|||
|
|
switch (controller) {
|
|||
|
|
case 'ms.dashboard':
|
|||
|
|
$.fn.DASHBOARD('reloadList');
|
|||
|
|
}
|
|||
|
|
return $('._module_table[data-controller="' + controller + '"]').each(function() {
|
|||
|
|
return $.fn.TABLE('reloadData', $(this).attr('id'));
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
copy: function(controller, id, event) {
|
|||
|
|
if (event != null) {
|
|||
|
|
if (typeof event.stopPropagation === "function") {
|
|||
|
|
event.stopPropagation();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (event != null) {
|
|||
|
|
if (typeof event.preventDefault === "function") {
|
|||
|
|
event.preventDefault();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return API(controller + '/copy', {
|
|||
|
|
id,
|
|||
|
|
dataType: "JSON"
|
|||
|
|
}, function(data) {
|
|||
|
|
console.log(data);
|
|||
|
|
return F.openForm(controller, data.id);
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
uadd: function(cb) {
|
|||
|
|
var $f, $res, f, submit_button, values;
|
|||
|
|
f = ($f = $(event.target)).FORM();
|
|||
|
|
values = f.json();
|
|||
|
|
$res = $(".res", f.container).hide(300);
|
|||
|
|
submit_button = $f.data('submit_clicked');
|
|||
|
|
f.validate({
|
|||
|
|
success: function() {
|
|||
|
|
var controller;
|
|||
|
|
console.log('formValues', values);
|
|||
|
|
controller = values.controller;
|
|||
|
|
values.dataType = "JSON";
|
|||
|
|
return API(controller + '/uadd', {
|
|||
|
|
values: values,
|
|||
|
|
dataType: "JSON"
|
|||
|
|
}, function(data) {
|
|||
|
|
console.log(data);
|
|||
|
|
A.notify($res, data.m);
|
|||
|
|
F.updateUI(controller);
|
|||
|
|
if (typeof cb === "function") {
|
|||
|
|
cb(data);
|
|||
|
|
}
|
|||
|
|
console.log(submit_button);
|
|||
|
|
if (submit_button != null) {
|
|||
|
|
if (submit_button.hasClass('_save_and_window_close')) {
|
|||
|
|
submit_button.closest('.window').remove();
|
|||
|
|
}
|
|||
|
|
if (submit_button.hasClass('_save')) {
|
|||
|
|
if (parseInt(values._is_new) === 1) {
|
|||
|
|
submit_button.closest('.window').remove();
|
|||
|
|
F.openForm(controller, data.id);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
submit_button = null;
|
|||
|
|
return $res = null;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
return false;
|
|||
|
|
},
|
|||
|
|
openForm: function(controller, id, init_data) {
|
|||
|
|
var api;
|
|||
|
|
api = controller + (id === 0 ? '/renderWindowForm' : '/renderWindowEdit');
|
|||
|
|
return $.fn.WINDOW('init', {
|
|||
|
|
options: {
|
|||
|
|
//x : e.clientX - 10
|
|||
|
|
//y : e.clientY - 10
|
|||
|
|
x: 'center',
|
|||
|
|
y: 'center',
|
|||
|
|
api: api,
|
|||
|
|
width: 1000,
|
|||
|
|
height: 600
|
|||
|
|
},
|
|||
|
|
data: {
|
|||
|
|
id: id,
|
|||
|
|
init_data: init_data
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
})(jQuery);
|
|||
|
|
|
|||
|
|
(function($) {
|
|||
|
|
var F;
|
|||
|
|
$.fn.IMAGE = function(method) {
|
|||
|
|
if (F[method]) {
|
|||
|
|
return F[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
|||
|
|
} else if (typeof method === "object" || !method) {
|
|||
|
|
return F.init.apply(this, arguments);
|
|||
|
|
} else {
|
|||
|
|
return $.error('Метод с именем ' + method + ' не существует для jQuery.IMAGE');
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
return F = {
|
|||
|
|
init: function() {},
|
|||
|
|
init_upload: function() {
|
|||
|
|
return $(this).each(function() {
|
|||
|
|
var $t;
|
|||
|
|
$t = $(this);
|
|||
|
|
if (!$t.data('image_drop_inited')) {
|
|||
|
|
$t.data('image_drop_inited', true);
|
|||
|
|
return A.DROPPER.create($t, '/api/common.image/upload/', {
|
|||
|
|
callback: F.aUpload,
|
|||
|
|
cd: {
|
|||
|
|
$t: $t
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
aUpload: function(data, cd) {
|
|||
|
|
var $i, $t;
|
|||
|
|
data = JSON.parse(data);
|
|||
|
|
$t = cd.$t;
|
|||
|
|
$i = Input.init($t);
|
|||
|
|
if (data.e === 1) {
|
|||
|
|
|
|||
|
|
} else {
|
|||
|
|
$i.value(data.id);
|
|||
|
|
return $("img", $t).attr('src', data.link);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
})(jQuery);
|
|||
|
|
|
|||
|
|
(function($) {
|
|||
|
|
var F;
|
|||
|
|
$.fn.PROFILE = function(method) {
|
|||
|
|
if (F[method]) {
|
|||
|
|
return F[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
|||
|
|
} else if (typeof method === "object" || !method) {
|
|||
|
|
return F.init.apply(this, arguments);
|
|||
|
|
} else {
|
|||
|
|
return $.error('Метод с именем ' + method + ' не существует для jQuery.PROFILE');
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
return F = {
|
|||
|
|
auth: function() {
|
|||
|
|
var $res, f, s;
|
|||
|
|
f = $(event.target).FORM();
|
|||
|
|
s = f.json();
|
|||
|
|
$res = $(".res", f.container).hide(300);
|
|||
|
|
f.validate({
|
|||
|
|
success: function() {
|
|||
|
|
s.dataType = "JSON";
|
|||
|
|
return API('core.user.account/login', s, function(data) {
|
|||
|
|
if (data.e === 1) {
|
|||
|
|
return A.notify($res, data.m);
|
|||
|
|
} else {
|
|||
|
|
return A.reload();
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
//fail:(res)->console.log('failed',res)
|
|||
|
|
return false;
|
|||
|
|
},
|
|||
|
|
reg: function() {
|
|||
|
|
var $res, f, s;
|
|||
|
|
f = $(event.target).FORM();
|
|||
|
|
s = f.json();
|
|||
|
|
$res = $(".res", f.container).hide(300);
|
|||
|
|
f.validate({
|
|||
|
|
success: function() {
|
|||
|
|
s.dataType = "JSON";
|
|||
|
|
return API('core.user.account/reg', s, function(data) {
|
|||
|
|
if (data.e === 1) {
|
|||
|
|
return A.notify($res, data.m);
|
|||
|
|
} else {
|
|||
|
|
A.setCookie('id', data.id);
|
|||
|
|
A.setCookie('h', data.h);
|
|||
|
|
return A.reload();
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
//fail:(res)->
|
|||
|
|
return false;
|
|||
|
|
},
|
|||
|
|
exit: function() {
|
|||
|
|
return API('core.user.account/exit', {}, function() {
|
|||
|
|
return A.reload();
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
})(jQuery);
|
|||
|
|
|
|||
|
|
(function($) {
|
|||
|
|
var F;
|
|||
|
|
$.fn.TABLE = function(method) {
|
|||
|
|
if (F[method]) {
|
|||
|
|
return F[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
|||
|
|
} else if (typeof method === "object" || !method) {
|
|||
|
|
return F.init.apply(this, arguments);
|
|||
|
|
} else {
|
|||
|
|
return $.error('Метод с именем ' + method + ' не существует для jQuery.TABLE');
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
F = {
|
|||
|
|
init: function() {
|
|||
|
|
return $(this).each(function() {
|
|||
|
|
var $actions, $table, $wrap, id;
|
|||
|
|
$table = $(this);
|
|||
|
|
if ($table.hasClass('need_scroll')) {
|
|||
|
|
$table.perfectScrollbar();
|
|||
|
|
}
|
|||
|
|
id = $table.attr('id');
|
|||
|
|
$wrap = $table.closest('.table_wrap');
|
|||
|
|
$actions = $('._actions', $wrap);
|
|||
|
|
$table.data('_wrap', $wrap);
|
|||
|
|
$table.data('_actions', $actions);
|
|||
|
|
F.initThead(id);
|
|||
|
|
F.initTbody(id);
|
|||
|
|
F.resetColumnWidths(id);
|
|||
|
|
F.initPagination(id);
|
|||
|
|
return F.initActions(id);
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
setPage: function(id, page) {
|
|||
|
|
return F.setData(id, {
|
|||
|
|
page: page
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
setCount: function(id, count) {
|
|||
|
|
return F.setData(id, {
|
|||
|
|
7: count,
|
|||
|
|
page: 0
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
setData: function(id, data = {}) {
|
|||
|
|
return API('ms.table/setData', {
|
|||
|
|
name: id,
|
|||
|
|
data: data,
|
|||
|
|
draw_data: F.getDrawData(id),
|
|||
|
|
dataType: "JSON"
|
|||
|
|
}, function(res, cd) {
|
|||
|
|
return F.reloadedData(id, res, cd);
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
getFilterData: function(id) {
|
|||
|
|
var arr, filter;
|
|||
|
|
arr = {};
|
|||
|
|
filter = [];
|
|||
|
|
$(`#${id} .filter input`).each(function() {
|
|||
|
|
var name, v;
|
|||
|
|
v = $.trim($(this).val());
|
|||
|
|
if (v !== '') {
|
|||
|
|
name = $(this).attr('name');
|
|||
|
|
arr[name] = v;
|
|||
|
|
return filter.push([7, name, ' LIKE ', "%" + v + "%"]);
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
return {
|
|||
|
|
data: arr,
|
|||
|
|
filter
|
|||
|
|
};
|
|||
|
|
},
|
|||
|
|
getDrawData: function(id) {
|
|||
|
|
var d, e, filter_info;
|
|||
|
|
d = {};
|
|||
|
|
try {
|
|||
|
|
d = JSON.parse($(`#${id}`).attr('data-data'));
|
|||
|
|
} catch (error) {
|
|||
|
|
e = error;
|
|||
|
|
d = {};
|
|||
|
|
}
|
|||
|
|
filter_info = F.getFilterData(id);
|
|||
|
|
d.__filter_data = filter_info.data;
|
|||
|
|
d.__filter = filter_info.filter;
|
|||
|
|
return d;
|
|||
|
|
},
|
|||
|
|
reloadData: function(id) {
|
|||
|
|
return API('ms.table/getData', {
|
|||
|
|
name: id,
|
|||
|
|
draw_data: F.getDrawData(id),
|
|||
|
|
dataType: "JSON"
|
|||
|
|
}, function(res, cd) {
|
|||
|
|
return F.reloadedData(id, res, cd);
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
reloadedData: function(id, res, cd) {
|
|||
|
|
var $td;
|
|||
|
|
$td = $(res.tbody);
|
|||
|
|
$(`#${id} .cell.td`).remove();
|
|||
|
|
$(`#${id} .table`).append($td);
|
|||
|
|
$('._module_table_pagination[data-id="' + id + '"]').replaceWith($(res.pagination));
|
|||
|
|
F.initPagination(id);
|
|||
|
|
F.initTbody(id);
|
|||
|
|
return $("._ps").perfectScrollbar('update');
|
|||
|
|
},
|
|||
|
|
initPagination: function(id) {
|
|||
|
|
return $('._module_table_pagination[data-id="' + id + '"] a').click(function() {
|
|||
|
|
var page;
|
|||
|
|
page = $(this).attr('data-page');
|
|||
|
|
return F.setPage(id, page);
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
initActions: function(id) {
|
|||
|
|
var $actions, $table;
|
|||
|
|
$table = $(`#${id}`);
|
|||
|
|
$actions = $table.data('_actions');
|
|||
|
|
console.log('initActions', $table, $actions, id);
|
|||
|
|
return $("._delete", $actions).click(function() {
|
|||
|
|
return F.deleteChecked(id);
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
deleteChecked: function(id) {
|
|||
|
|
var api, controller, ids;
|
|||
|
|
if (confirm("Вы уверены что хотите удалить эти элементы?")) {
|
|||
|
|
ids = F.getCheckedIds(id);
|
|||
|
|
if (ids.length > 0) {
|
|||
|
|
controller = $(`#${id}`).attr('data-controller');
|
|||
|
|
api = controller + '/deleteByIds';
|
|||
|
|
return API(api, {
|
|||
|
|
ids: ids
|
|||
|
|
}, function(data) {
|
|||
|
|
return F.reloadData(id);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
resetColumnWidths: function(id) {
|
|||
|
|
var $row2, columns, sum;
|
|||
|
|
$row2 = $(`#${id} .sticky[data-sticky=2]`);
|
|||
|
|
columns = '';
|
|||
|
|
sum = 0;
|
|||
|
|
$row2.each(function(i) {
|
|||
|
|
var $t, w;
|
|||
|
|
$t = $(this);
|
|||
|
|
w = $t.attr('data-width');
|
|||
|
|
if ($t.index() === $row2.length) {
|
|||
|
|
columns += '1fr ';
|
|||
|
|
return sum += 50;
|
|||
|
|
} else {
|
|||
|
|
if (w === 'auto') {
|
|||
|
|
if (i === 0) {
|
|||
|
|
columns += $row2.length === 1 ? '1fr ' : 'min-content ';
|
|||
|
|
} else {
|
|||
|
|
//columns += 'min-content '
|
|||
|
|
columns += 'min-content ';
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
//columns += '1fr '
|
|||
|
|
w = parseFloat(w);
|
|||
|
|
if (isNaN(w)) {
|
|||
|
|
w = $t.outerWidth();
|
|||
|
|
}
|
|||
|
|
columns += w + 'px ';
|
|||
|
|
}
|
|||
|
|
return sum += $t.outerWidth();
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
return $(`#${id} .table`).css({
|
|||
|
|
'grid-template-columns': columns,
|
|||
|
|
width: sum
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
initThead: function(id) {
|
|||
|
|
var $row1, $row2, $row3, $table, h1, h2;
|
|||
|
|
$table = $(`#${id}`);
|
|||
|
|
$row1 = $(".sticky[data-sticky=1]", $table);
|
|||
|
|
$row2 = $(".sticky[data-sticky=2]", $table);
|
|||
|
|
$row3 = $(".sticky[data-sticky=3]", $table);
|
|||
|
|
h1 = $($row1[0]).outerHeight();
|
|||
|
|
h2 = $($row2[0]).outerHeight();
|
|||
|
|
//h3 = $($row3[0]).height()
|
|||
|
|
$(".filter", $table);
|
|||
|
|
$("input", $table).change(function() {
|
|||
|
|
return F.reloadData(id);
|
|||
|
|
});
|
|||
|
|
$("input", $table).keyup(function() {
|
|||
|
|
var $t, int;
|
|||
|
|
$t = $(this);
|
|||
|
|
int = $t.data('_filter_interval');
|
|||
|
|
if (int != null) {
|
|||
|
|
clearTimeout(int);
|
|||
|
|
}
|
|||
|
|
int = setTimeout(function() {
|
|||
|
|
return F.reloadData(id);
|
|||
|
|
}, 500);
|
|||
|
|
return $t.data('_filter_interval', int);
|
|||
|
|
});
|
|||
|
|
$("select", $table).change(function() {
|
|||
|
|
return F.reloadData(id);
|
|||
|
|
});
|
|||
|
|
h1 = 0;
|
|||
|
|
h2 = $($row2[0]).outerHeight();
|
|||
|
|
//h3 = $($row3[0]).height()
|
|||
|
|
$row2.css({
|
|||
|
|
top: h1
|
|||
|
|
});
|
|||
|
|
$row3.css({
|
|||
|
|
top: h2 + h1
|
|||
|
|
});
|
|||
|
|
$("._set_count:not(.inited)", $table).addClass('inited').change(function() {
|
|||
|
|
return F.setCount(id, $(this).val());
|
|||
|
|
});
|
|||
|
|
$(".resizable_th:not(.inited)", $table).addClass('inited').resizable({
|
|||
|
|
directions: ['right'],
|
|||
|
|
start: function(e, $target) {
|
|||
|
|
return $target.addClass('show_resize_bar').css({
|
|||
|
|
zIndex: 100
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
stop: function(e, $target) {
|
|||
|
|
var col_name, w;
|
|||
|
|
$target.removeClass('show_resize_bar').css({
|
|||
|
|
zIndex: 1
|
|||
|
|
}).attr('data-width', w = $target.outerWidth());
|
|||
|
|
F.resetColumnWidths(id);
|
|||
|
|
$target.width('auto');
|
|||
|
|
col_name = $target.attr('data-column');
|
|||
|
|
return API('ms.table/setColumnWidth', {
|
|||
|
|
name: id,
|
|||
|
|
col: col_name,
|
|||
|
|
width: w
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
$("._add:not(.inited)", $table).addClass('inited').click(function(e) {
|
|||
|
|
var $t, c, d, init_data;
|
|||
|
|
$t = $(e.target);
|
|||
|
|
init_data = {};
|
|||
|
|
try {
|
|||
|
|
d = JSON.parse($table.attr('data-data'));
|
|||
|
|
if ((c = d.form_init_data) !== void 0) {
|
|||
|
|
init_data = c;
|
|||
|
|
}
|
|||
|
|
} catch (error) {
|
|||
|
|
e = error;
|
|||
|
|
console.log(e);
|
|||
|
|
}
|
|||
|
|
//console.log d,init_data
|
|||
|
|
return F.openWindowForm(id, 0, init_data);
|
|||
|
|
});
|
|||
|
|
return $("._check_all", $table).click(function() {
|
|||
|
|
$("._check_tr", $table).prop('checked', $(this).is(":checked"));
|
|||
|
|
return F.checkActions(id);
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
getTrID: function($t) {
|
|||
|
|
var $first, $table, c, first, i, id;
|
|||
|
|
$table = $t.closest('._module_table');
|
|||
|
|
id = $table.attr('id');
|
|||
|
|
$first = $(".td:eq(0)", $table);
|
|||
|
|
first = $first.index();
|
|||
|
|
c = F.getColumns(id);
|
|||
|
|
i = Math.floor(($t.index() - first) / c);
|
|||
|
|
return $(`.td:eq(${i * c})`, $table).attr('data-id');
|
|||
|
|
},
|
|||
|
|
openWindowForm: function(table_id = '', id = 0, init_data = {}) {
|
|||
|
|
var controller;
|
|||
|
|
controller = $(`#${table_id}`).attr('data-controller');
|
|||
|
|
return $.fn.ENTITY('openForm', controller, id, init_data);
|
|||
|
|
},
|
|||
|
|
/*
|
|||
|
|
api = controller+(if id==0 then '/renderWindowForm' else '/renderWindowEdit')
|
|||
|
|
$.fn.WINDOW 'init',
|
|||
|
|
options:
|
|||
|
|
#x : e.clientX - 10
|
|||
|
|
#y : e.clientY - 10
|
|||
|
|
x :'center'
|
|||
|
|
y :'center'
|
|||
|
|
api : api
|
|||
|
|
width : 1000
|
|||
|
|
height: 600
|
|||
|
|
data:
|
|||
|
|
id:id
|
|||
|
|
init_data:init_data
|
|||
|
|
*/
|
|||
|
|
getColumns: function(id) {
|
|||
|
|
return $(`#${id} .table`).css('grid-template-columns').split(' ').length;
|
|||
|
|
},
|
|||
|
|
initTbody: function(id) {
|
|||
|
|
var $table, columns, oid, pos;
|
|||
|
|
$table = $(`#${id}`);
|
|||
|
|
$("._check_tr", $table).click(function() {
|
|||
|
|
return F.checkActions(id);
|
|||
|
|
});
|
|||
|
|
if (parseInt($table.attr('data-sortable')) === 1) {
|
|||
|
|
columns = $('[data-sticky=2]', $table).length;
|
|||
|
|
pos = 0;
|
|||
|
|
oid = 0;
|
|||
|
|
return $(".td[data-id]", $table).draggable({
|
|||
|
|
clone: true,
|
|||
|
|
start: function(e, target) {
|
|||
|
|
target.hide();
|
|||
|
|
return target.data('data-id', $(this).attr('data-id'));
|
|||
|
|
},
|
|||
|
|
move: function(e, target) {
|
|||
|
|
var $t, $td, $td2, fi, ni, oid2, p;
|
|||
|
|
$t = $(e.target);
|
|||
|
|
oid = target.attr('data-oid');
|
|||
|
|
if ($t.hasClass('td') && (oid2 = $t.attr('data-oid')) !== oid) {
|
|||
|
|
p = e.offsetY / $t.outerHeight();
|
|||
|
|
$td = $(`.td[data-oid=${oid}]`, $table);
|
|||
|
|
$td2 = $(`.td[data-oid=${oid2}]`, $table);
|
|||
|
|
if (p < 0.5) {
|
|||
|
|
$td.insertBefore($td2.first());
|
|||
|
|
} else {
|
|||
|
|
$td.insertAfter($td2.last());
|
|||
|
|
}
|
|||
|
|
fi = $("[data-id]:eq(0)", $table).index();
|
|||
|
|
ni = $($td[0]).index();
|
|||
|
|
return pos = (ni - fi) / columns;
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
// console.log $table.attr('data-controller'),fi,ni,columns,pos
|
|||
|
|
// updatePosForID
|
|||
|
|
//console.log e.target ,target.attr('data-oid')
|
|||
|
|
stop: function(e, target, $target) {
|
|||
|
|
target.remove();
|
|||
|
|
return API($table.attr('data-controller') + '/updatePosForID', {
|
|||
|
|
id: oid,
|
|||
|
|
pos: pos
|
|||
|
|
}, function(data) {
|
|||
|
|
return console.log(data);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
getCheckedIds: function(id) {
|
|||
|
|
var arr;
|
|||
|
|
arr = [];
|
|||
|
|
$(`#${id} ._check_tr:checked`).each(function() {
|
|||
|
|
return arr.push($(this).val());
|
|||
|
|
});
|
|||
|
|
return arr;
|
|||
|
|
},
|
|||
|
|
checkActions: function(id) {
|
|||
|
|
var $actions, $table, ids;
|
|||
|
|
ids = F.getCheckedIds(id);
|
|||
|
|
$table = $(`#${id}`);
|
|||
|
|
$actions = $table.data('_actions');
|
|||
|
|
if (ids.length > 0) {
|
|||
|
|
return $actions.show();
|
|||
|
|
} else {
|
|||
|
|
return $actions.hide();
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
clickTable: function(e) {
|
|||
|
|
var $d, $t, isOpen, ref, tr_id;
|
|||
|
|
$t = $(e.target);
|
|||
|
|
$d = $t;
|
|||
|
|
isOpen = true;
|
|||
|
|
if ((ref = e.target.tagName) === 'INPUT' || ref === 'A') {
|
|||
|
|
isOpen = false;
|
|||
|
|
}
|
|||
|
|
if (isOpen) {
|
|||
|
|
if ($d.hasClass('td') || ($d = $t.closest('.td')).length > 0) {
|
|||
|
|
e.stopPropagation();
|
|||
|
|
tr_id = F.getTrID($d);
|
|||
|
|
return F.openWindowForm($t.closest('._module_table').attr('id'), tr_id);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
return $(document).on('click', F.clickTable);
|
|||
|
|
})(jQuery);
|
|||
|
|
|
|||
|
|
(function($) {
|
|||
|
|
var F;
|
|||
|
|
$.fn.VIDEO = function(method) {
|
|||
|
|
if (F[method]) {
|
|||
|
|
return F[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
|||
|
|
} else if (typeof method === "object" || !method) {
|
|||
|
|
return F.init.apply(this, arguments);
|
|||
|
|
} else {
|
|||
|
|
return $.error('Метод с именем ' + method + ' не существует для jQuery.IMAGE');
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
return F = {
|
|||
|
|
init: function() {},
|
|||
|
|
init_upload: function() {
|
|||
|
|
var $t;
|
|||
|
|
$t = $(this);
|
|||
|
|
if (!$t.data('video_drop_inited')) {
|
|||
|
|
$t.data('video_drop_inited', true);
|
|||
|
|
return A.DROPPER.create($t, '/api/common.video/upload/', {
|
|||
|
|
callback: F.aUpload,
|
|||
|
|
cd: {
|
|||
|
|
$t: $t
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
aUpload: function(data, cd) {
|
|||
|
|
var $i, $t;
|
|||
|
|
data = JSON.parse(data);
|
|||
|
|
$t = cd.$t;
|
|||
|
|
$i = Input.init($t);
|
|||
|
|
if (data.e === 1) {
|
|||
|
|
|
|||
|
|
} else {
|
|||
|
|
$i.value(data.id);
|
|||
|
|
return $("video", $t).attr('src', data.link);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
})(jQuery);
|
|||
|
|
|
|||
|
|
(function($) {
|
|||
|
|
var F;
|
|||
|
|
$.fn.WIDGET = function(method) {
|
|||
|
|
if (F[method]) {
|
|||
|
|
return F[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
|||
|
|
} else if (typeof method === "object" || !method) {
|
|||
|
|
return F.init.apply(this, arguments);
|
|||
|
|
} else {
|
|||
|
|
return $.error('Метод с именем ' + method + ' не существует для jQuery.WIDGET');
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
return F = {
|
|||
|
|
init: function() {
|
|||
|
|
return $("#start").click(F.openStart);
|
|||
|
|
},
|
|||
|
|
addWidgetToDashboardByEvent: function(e, $drag, $target) {
|
|||
|
|
var id, type;
|
|||
|
|
type = $drag.attr('data-type');
|
|||
|
|
$drag.remove();
|
|||
|
|
id = $target.closest('.dashboard').attr('data-id');
|
|||
|
|
return F.addWidgetToDashboard(type, id);
|
|||
|
|
},
|
|||
|
|
addWidgetToDashboard: function(type, dashboard_id) {
|
|||
|
|
var data;
|
|||
|
|
data = {
|
|||
|
|
type: type
|
|||
|
|
};
|
|||
|
|
return $.fn.DASHBOARD('addWidget', data, dashboard_id);
|
|||
|
|
},
|
|||
|
|
deleteWidget: function(id) {
|
|||
|
|
$(`.dash_cell[data-id=${id}]`).remove();
|
|||
|
|
return API('ms.widget/deleteByIds', {
|
|||
|
|
ids: [id]
|
|||
|
|
}, function(data) {
|
|||
|
|
return console.log(data);
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
//# Работа с "Пуском"
|
|||
|
|
startLoaded: function($html) {
|
|||
|
|
$(".drag_widget", $html).draggable({
|
|||
|
|
clone: true,
|
|||
|
|
distance: 5,
|
|||
|
|
cloneConnect: '.grid_dash',
|
|||
|
|
stop: F.addWidgetToDashboardByEvent
|
|||
|
|
});
|
|||
|
|
return $.fn.DASHBOARD('initIcons', $html);
|
|||
|
|
},
|
|||
|
|
openStart: function() {
|
|||
|
|
return $.fn.WINDOW('init', {
|
|||
|
|
options: {
|
|||
|
|
x: 'center',
|
|||
|
|
y: 'center',
|
|||
|
|
width: 960,
|
|||
|
|
height: 720,
|
|||
|
|
api: 'ms.widget/start',
|
|||
|
|
onLoad: F.startLoaded
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
})(jQuery);
|
|||
|
|
|
|||
|
|
(function($) {
|
|||
|
|
var $window, F, W;
|
|||
|
|
$.fn.WINDOW = function(method) {
|
|||
|
|
if (F[method]) {
|
|||
|
|
return F[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
|||
|
|
} else if (typeof method === "object" || !method) {
|
|||
|
|
return F.init.apply(this, arguments);
|
|||
|
|
} else {
|
|||
|
|
return $.error('Метод с именем ' + method + ' не существует для jQuery.WINDOW');
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
$window = $(window);
|
|||
|
|
W = (function() {
|
|||
|
|
class W {
|
|||
|
|
constructor(data = {}) {
|
|||
|
|
var $w, height, ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, width, x, y;
|
|||
|
|
this.options = (ref = data.options) != null ? ref : {};
|
|||
|
|
this.init_x = (ref1 = this.options.x) != null ? ref1 : 0;
|
|||
|
|
this.init_y = (ref2 = this.options.y) != null ? ref2 : 0;
|
|||
|
|
this.init_width = (ref3 = this.options.width) != null ? ref3 : 640;
|
|||
|
|
this.init_height = (ref4 = this.options.height) != null ? ref4 : 480;
|
|||
|
|
this.api = (ref5 = this.options.api) != null ? ref5 : '';
|
|||
|
|
this.onLoad = (ref6 = this.options.onLoad) != null ? ref6 : null;
|
|||
|
|
this.data = (ref7 = data.data) != null ? ref7 : {};
|
|||
|
|
$w = $('<div class="window"> <div class="window_inner"> <div class="window_header"> <div class="window_title_wrap"> <div class="window_title"></div> </div> <div class="window_tools"> <div class="window_tool window_reload"></div> <div class="window_tool window_minimize"></div> <div class="window_tool window_fullscreen"></div> <div class="window_tool window_close"></div> </div> </div> <div class="window_content_wrap"> <div class="window_content"> </div> </div> </div> </div>');
|
|||
|
|
this.$container = $w;
|
|||
|
|
this.$container.data('window', this);
|
|||
|
|
this.$container.mousedown(this.setActive.bind(this));
|
|||
|
|
$w.draggable({
|
|||
|
|
handle: '.window_title_wrap'
|
|||
|
|
});
|
|||
|
|
$w.resizable({
|
|||
|
|
stop: function(e, $target) {
|
|||
|
|
var ref8;
|
|||
|
|
data = (ref8 = $target.data('data')) != null ? ref8 : {};
|
|||
|
|
data.width = $target.width();
|
|||
|
|
data.height = $target.height();
|
|||
|
|
return API('ms.widget/saveWidthHeight', data);
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
$("body").append($w);
|
|||
|
|
width = 800; //@init_width
|
|||
|
|
height = 400; //@init_height
|
|||
|
|
x = this.init_x;
|
|||
|
|
y = this.init_y;
|
|||
|
|
if (x === 'center') {
|
|||
|
|
x = parseInt(($window.width() - width) / 2);
|
|||
|
|
}
|
|||
|
|
if (y === 'center') {
|
|||
|
|
y = parseInt(($window.height() - height) / 2);
|
|||
|
|
}
|
|||
|
|
if (x < 0) {
|
|||
|
|
x = 0;
|
|||
|
|
}
|
|||
|
|
if (y < 0) {
|
|||
|
|
y = 0;
|
|||
|
|
}
|
|||
|
|
$w.css({
|
|||
|
|
'transform': 'translate(' + x + 'px,' + y + 'px)',
|
|||
|
|
zIndex: $(".window").length,
|
|||
|
|
'width': width,
|
|||
|
|
'height': height
|
|||
|
|
});
|
|||
|
|
$w.on('destroyed', this.destroy.bind(this));
|
|||
|
|
$(".window_close", $w).on('click', this.close.bind(this));
|
|||
|
|
$(".window_reload", $w).on('click', this.reload.bind(this));
|
|||
|
|
$(".window_fullscreen", $w).on('click', this.toggleFullscreen.bind(this));
|
|||
|
|
this.$content_wrap = $(".window_content_wrap", $w);
|
|||
|
|
this.$content_wrap.perfectScrollbar();
|
|||
|
|
this.$content = $(".window_content", $w);
|
|||
|
|
this.$title = $(".window_title", $w);
|
|||
|
|
this.firstLoad = true;
|
|||
|
|
this.reload();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
toggleFullscreen() {
|
|||
|
|
if (this.$container.hasClass('fullscreen')) {
|
|||
|
|
return this.fullscreenReset();
|
|||
|
|
} else {
|
|||
|
|
return this.fullscreen();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
fullscreenReset() {
|
|||
|
|
this.$container.removeClass('fullscreen');
|
|||
|
|
this.$container.resizable('enable');
|
|||
|
|
return this.$content_wrap.perfectScrollbar('update');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
fullscreen() {
|
|||
|
|
this.$container.addClass('fullscreen');
|
|||
|
|
this.$content_wrap.perfectScrollbar('update');
|
|||
|
|
return this.$container.resizable('disable');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
minimize() {}
|
|||
|
|
|
|||
|
|
setTitle(x) {
|
|||
|
|
return this.$title.html(x);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
setActive() {
|
|||
|
|
var $cont, $w, arr, read, write;
|
|||
|
|
arr = {};
|
|||
|
|
$cont = this.$container;
|
|||
|
|
$w = $(".window");
|
|||
|
|
read = fastdom.measure(function() {
|
|||
|
|
return $w.each(function() {
|
|||
|
|
if (this !== $cont[0]) {
|
|||
|
|
return arr[this.style.zIndex] = this;
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
return write = fastdom.mutate(function() {
|
|||
|
|
var a, i;
|
|||
|
|
a = A.array_keys(arr);
|
|||
|
|
a.sort();
|
|||
|
|
for (i in a) {
|
|||
|
|
arr[a[i]].style.zIndex = parseInt(i) + 1;
|
|||
|
|
}
|
|||
|
|
return $cont[0].style.zIndex = $w.length;
|
|||
|
|
}).then(function() {
|
|||
|
|
fastdom.clear(read);
|
|||
|
|
return fastdom.clear(write);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
startLoad() {
|
|||
|
|
this.$container.addClass('loading');
|
|||
|
|
return this.$content.html('Загрузка');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
finishLoad(data, cd) {
|
|||
|
|
var $data, c, css, isEdit, t, x, y;
|
|||
|
|
this.$container.addClass('loaded');
|
|||
|
|
t = this.$container;
|
|||
|
|
setTimeout(function() {
|
|||
|
|
t.removeClass('loading loaded');
|
|||
|
|
return t = null;
|
|||
|
|
}, 500);
|
|||
|
|
$data = $(data);
|
|||
|
|
this.$content.html($data);
|
|||
|
|
A.P.initMini($data);
|
|||
|
|
if (typeof this.onLoad === "function") {
|
|||
|
|
this.onLoad($data);
|
|||
|
|
}
|
|||
|
|
isEdit = $(".edit_panel", $data).length > 0;
|
|||
|
|
this.$container.toggleClass('window_leftmenu', isEdit);
|
|||
|
|
if (isEdit) {
|
|||
|
|
$(".tab_link", $data).click(function() {
|
|||
|
|
var $t;
|
|||
|
|
$t = $(this);
|
|||
|
|
$(".tab_link", $data).removeClass('selected');
|
|||
|
|
$(".edit_tabs .tab", $data).hide();
|
|||
|
|
if ($t.is(":last-child")) {
|
|||
|
|
$(".edit_tabs .tab", $data).show();
|
|||
|
|
$t.removeClass('show');
|
|||
|
|
} else {
|
|||
|
|
$t.addClass('selected');
|
|||
|
|
$(".edit_tabs .tab:eq(" + $t.index() + ")", $data).show();
|
|||
|
|
console.log($(".edit_tabs .tab:last-child", $data));
|
|||
|
|
$(".tab_link:last-child", $data).addClass('show');
|
|||
|
|
}
|
|||
|
|
return $("._ps", $data).perfectScrollbar('update');
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
if (((c = $data.attr('data-data')) != null) && c !== '') {
|
|||
|
|
try {
|
|||
|
|
data = JSON.parse(c);
|
|||
|
|
if (data.no_scroll) {
|
|||
|
|
this.$content_wrap.perfectScrollbar('disable');
|
|||
|
|
this.$container.addClass('window_no_scroll');
|
|||
|
|
}
|
|||
|
|
if (data.table) {
|
|||
|
|
this.$container.addClass('window_table');
|
|||
|
|
}
|
|||
|
|
if (data.data) {
|
|||
|
|
this.$container.data('data', data.data);
|
|||
|
|
}
|
|||
|
|
css = {};
|
|||
|
|
if (data.width != null) {
|
|||
|
|
css.width = Math.min(data.width, $window.width() * 0.9);
|
|||
|
|
}
|
|||
|
|
if (data.height != null) {
|
|||
|
|
css.height = Math.min(data.height, $window.height() * 0.9);
|
|||
|
|
}
|
|||
|
|
x = this.$container.offset().left;
|
|||
|
|
y = this.$container.offset().top;
|
|||
|
|
if (this.firstLoad) {
|
|||
|
|
if (this.init_x === 'center' && (css.width != null)) {
|
|||
|
|
x = parseInt(($window.width() - css.width) / 2);
|
|||
|
|
}
|
|||
|
|
if (this.init_y === 'center' && (css.height != null)) {
|
|||
|
|
y = parseInt(($window.height() - css.height) / 2);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
css.transform = 'translate(' + x + 'px,' + y + 'px)';
|
|||
|
|
this.$container.css(css);
|
|||
|
|
if (data.title != null) {
|
|||
|
|
this.setTitle(data.title);
|
|||
|
|
}
|
|||
|
|
} catch (error) {}
|
|||
|
|
}
|
|||
|
|
return this.firstLoad = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
reload() {
|
|||
|
|
this.startLoad();
|
|||
|
|
API(this.api, this.data, this.finishLoad.bind(this));
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
close() {
|
|||
|
|
$("[data-input=tinymce]", this.$container).each(function() {
|
|||
|
|
var a;
|
|||
|
|
a = tinymce.get($(this).attr('data-input-tinymce'));
|
|||
|
|
console.log('want remove a', a);
|
|||
|
|
if (a !== null && a !== void 0) {
|
|||
|
|
return a.remove();
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
return this.$container.remove();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
destroy() {
|
|||
|
|
this.$content_wrap = null;
|
|||
|
|
this.$container = null;
|
|||
|
|
return this.$content = null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
W.zIndex = 0;
|
|||
|
|
|
|||
|
|
return W;
|
|||
|
|
|
|||
|
|
}).call(this);
|
|||
|
|
return F = {
|
|||
|
|
init: function(data) {
|
|||
|
|
return new W(data);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
})(jQuery);
|
|||
|
|
|
|||
|
|
(function($) {
|
|||
|
|
var F;
|
|||
|
|
$.fn.ITEM = function(method) {
|
|||
|
|
if (F[method]) {
|
|||
|
|
return F[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
|||
|
|
} else if (typeof method === "object" || !method) {
|
|||
|
|
return F.init.apply(this, arguments);
|
|||
|
|
} else {
|
|||
|
|
return $.error('Метод с именем ' + method + ' не существует для jQuery.ITEM');
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
return F = {
|
|||
|
|
init: function() {},
|
|||
|
|
initChangingProperty: function(data) {
|
|||
|
|
var $input, f;
|
|||
|
|
$input = $('[data-name="shopItemValue_property"]:not(.inited)').addClass('inited');
|
|||
|
|
f = $input.closest('._form').FORM();
|
|||
|
|
$input.data('item_id', $('[data-name="shopItemValue_item"]', f.container).val());
|
|||
|
|
return $input.on("input:change", F.changeProperty).trigger('input:change');
|
|||
|
|
},
|
|||
|
|
changeProperty: function() {
|
|||
|
|
var $i, $t;
|
|||
|
|
$t = $(this);
|
|||
|
|
$i = Input.init($(this));
|
|||
|
|
return API('shop.item.value/getValues', {
|
|||
|
|
id: $i.value(),
|
|||
|
|
item_id: $t.data('item_id')
|
|||
|
|
}, function(resp) {
|
|||
|
|
var $data;
|
|||
|
|
$data = $(resp);
|
|||
|
|
A.P.initMini($data);
|
|||
|
|
$(".loaded_values", $t.closest('._form')).html($data);
|
|||
|
|
return $t = null;
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
saveCategories: function(id) {
|
|||
|
|
var $list, $w, arr, w;
|
|||
|
|
arr = [];
|
|||
|
|
$list = $(`[data-item-categories=${id}]`);
|
|||
|
|
$("input:checked", $list).each(function() {
|
|||
|
|
return arr.push($(this).val());
|
|||
|
|
});
|
|||
|
|
$w = $list.closest('.window');
|
|||
|
|
if ($w.length > 0) {
|
|||
|
|
w = $w.data('window');
|
|||
|
|
w.close();
|
|||
|
|
return API('shop.category.item/setCategories', {
|
|||
|
|
id: id,
|
|||
|
|
arr: arr
|
|||
|
|
}, function(data) {
|
|||
|
|
console.log(data);
|
|||
|
|
return $.fn.ENTITY('updateUI', 'shop.category.item');
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
})(jQuery);
|
|||
|
|
|
|||
|
|
(function($) {
|
|||
|
|
var F;
|
|||
|
|
$.fn.SHOP = function(method) {
|
|||
|
|
if (F[method]) {
|
|||
|
|
return F[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
|||
|
|
} else if (typeof method === "object" || !method) {
|
|||
|
|
return F.init.apply(this, arguments);
|
|||
|
|
} else {
|
|||
|
|
return $.error('Метод с именем ' + method + ' не существует для jQuery.SHOP');
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
return F = {
|
|||
|
|
init: function() {},
|
|||
|
|
saveCategories: function(id) {
|
|||
|
|
var $list, $w, arr, w;
|
|||
|
|
console.log('saveCategories', id);
|
|||
|
|
arr = [];
|
|||
|
|
$list = $(`[data-shop-categories=${id}]`);
|
|||
|
|
$("input:checked", $list).each(function() {
|
|||
|
|
return arr.push($(this).val());
|
|||
|
|
});
|
|||
|
|
console.log('want ', arr);
|
|||
|
|
$w = $list.closest('.window');
|
|||
|
|
if ($w.length > 0) {
|
|||
|
|
w = $w.data('window');
|
|||
|
|
w.close();
|
|||
|
|
return API('shop.shop.category/setCategories', {
|
|||
|
|
id: id,
|
|||
|
|
arr: arr
|
|||
|
|
}, function() {
|
|||
|
|
return $.fn.ENTITY('updateUI', 'shop.shop.category');
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
initCategories: function() {
|
|||
|
|
return $(".shop_categories:not(.inited)").addClass('inited').each(function() {
|
|||
|
|
$("input:checked").each(function() {
|
|||
|
|
var $par;
|
|||
|
|
$par = $(this).closest('li');
|
|||
|
|
return $("> ul ", $par).hide();
|
|||
|
|
});
|
|||
|
|
return $("input[type=checkbox]").click(F.checkShopCategories);
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
checkShopCategories: function() {
|
|||
|
|
var $par, $t, checked;
|
|||
|
|
$t = $(this);
|
|||
|
|
$par = $(this).closest('li');
|
|||
|
|
checked = $t.is(":checked");
|
|||
|
|
$("> ul ", $par).toggle(!checked);
|
|||
|
|
$("> ul ul", $par).show(checked);
|
|||
|
|
return $("> ul input[type=checkbox]", $par).prop('checked', false);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
})(jQuery);
|
|||
|
|
|
|||
|
|
(function($) {
|
|||
|
|
var F;
|
|||
|
|
$.fn.PROJECT = function(method) {
|
|||
|
|
console.log('PROJECT method', method);
|
|||
|
|
if (F[method]) {
|
|||
|
|
return F[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
|||
|
|
} else if (typeof method === "object" || !method) {
|
|||
|
|
return F.init.apply(this, arguments);
|
|||
|
|
} else {
|
|||
|
|
return $.error('Метод с именем ' + method + ' не существует для jQuery.PROJECT');
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
return F = {
|
|||
|
|
init: function() {},
|
|||
|
|
changePipeline: function($input, id) {
|
|||
|
|
console.log('changePipeline', $input, id);
|
|||
|
|
return API('pm.pipeline.stage/getListByPipeline', {
|
|||
|
|
pipeline: id,
|
|||
|
|
dataType: "JSON"
|
|||
|
|
}, function(data) {
|
|||
|
|
var i, res;
|
|||
|
|
res = '';
|
|||
|
|
for (i in data) {
|
|||
|
|
res += '<option value="' + i + '">' + data[i] + '</option>';
|
|||
|
|
}
|
|||
|
|
return $input.$input.html(res);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
})(jQuery);
|