crossbrowser userscript
// ==UserScript==
// @name userTaskQSOFTJS
// @description crossbrowser userscript
// @author spaik713
// @license MIT
// @version 2.0
// @include http://www.corp.qsoft.ru/bitrix/admin/oper_day.php*
// @resource jqueryJS https://code.jquery.com/jquery-3.2.1.js
// @resource bootstrapJS https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js
// @resource buttonCSS https://raw.githubusercontent.com/necolas/css3-github-buttons/master/gh-buttons.css
// @resource bootstrapCSS https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css
// @grant GM_addStyle
// @grant GM_getResourceText
// @grant GM_getResourceURL
// @namespace https://greasyfork.org/ru/scripts/372565-usertaskqsoftjs
// ==/UserScript==
(function (window, undefined) {
var w;
if (typeof unsafeWindow !== undefined) {
w = unsafeWindow;
} else {
w = window;
}
if (w.self != w.top) {
return;
}
$("head").append("<script>" + GM_getResourceText("jqueryJS") + "</script>");
$("head").append("<script>" + GM_getResourceText("bootstrapJS") + "</script>");
$("head").append("<style>" + GM_getResourceText("bootstrapCSS") + "</style>");
$('table').addClass('table');
$('.stars').css({'font-weight': 'bold'});
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
if (inputs[i].getAttribute('type') === 'button' || inputs[i].getAttribute('type') === 'submit') {
$(inputs[i]).addClass('btn');
$(inputs[i]).css( 'cursor', 'pointer' );
}
}
$(function () {
var start, dinner, end;
var date = new Date();
var tasks = $('.curDayTable_input_box nobr');
var additional = $(document.querySelectorAll('input[name^="additional_hour"]')).parent();
$.each($('.curDayTable'), function ()
{
var input = $(this).children().children();
if (input.attr('name') === 'start_hour') {
start = $(input.parent()[0]);
}
if (input.attr('name') === 'dinner_hour') {
dinner = $(input.parent()[0]);
}
if (input.attr('name') === 'end_hour') {
end = $(input.parent()[0]);
}
});
w.endTimeCalculation = function endTimeCalculation()
{
var additional = $(document.querySelectorAll('input[name^="additional_hour"]')).parent();
date.setHours(0);
date.setMinutes(0);
date.setHours(
isNaN(
parseInt($(start.children()[0]).val())
)? 0 : parseInt($(start.children()[0]).val())
);
date.setMinutes(
isNaN(
parseInt($(start.children()[1]).val())
)? 0 : parseInt($(start.children()[1]).val())
);
$.each(additional, function () {
var additionalHours = isNaN(
parseInt($($(this).children()[0]).val())
)? 0 : parseInt($($(this).children()[0]).val());
var additionalMinutes = isNaN(
parseInt($($(this).children()[1]).val())
)? 0 : parseInt($($(this).children()[1]).val());
date.setHours(
date.getHours() + additionalHours
);
date.setMinutes(
date.getMinutes() + additionalMinutes
);
});
$.each(tasks, function () {
var taskHours = isNaN(
parseInt($($(this).children()[0]).val())
)? 0 : parseInt($($(this).children()[0]).val());
var taskMinutes = isNaN(
parseInt($($(this).children()[1]).val())
)? 0 : parseInt($($(this).children()[1]).val());
date.setHours(
date.getHours() + taskHours
);
date.setMinutes(
date.getMinutes() + taskMinutes
);
});
var dinnerHours = isNaN(
parseInt($(dinner.children()[0]).val())
)? 0 : parseInt($(dinner.children()[0]).val());
var dinnerMinutes = isNaN(
parseInt($(dinner.children()[1]).val())
)? 0 : parseInt($(dinner.children()[1]).val());
var startTime = new Date();
startTime.setHours(date.getHours() - $(document.querySelectorAll('input[name^="start_hour"]')).val() * 1);
startTime.setMinutes(date.getMinutes() - $(document.querySelectorAll('input[name^="start_minute"]')).val() * 1);
startTime.setSeconds(0);
var end_day = $('.qsoft_row_itog .end_day_curDay');
end_day.text(startTime.getHours() + ':' + ((startTime.getMinutes() < 10) ? 0 : '') + startTime.getMinutes());
date.setHours(
date.getHours() + dinnerHours
);
date.setMinutes(
date.getMinutes() + dinnerMinutes
);
$(end.children()[0]).attr('placeholder', date.getHours());
var minutesStr = (date.getMinutes().toString().length === 1)? '0'+date.getMinutes() : date.getMinutes();
$(end.children()[1]).attr('placeholder', minutesStr);
$($('.end_day_curDay').next()[$('.end_day_curDay').next().length -1]).html();
};
function setOnChange()
{
$.each(start.children(), function(){
$(this).attr('onkeyup', 'endTimeCalculation()');
});
$.each(dinner.children(), function(){
$(this).attr('onkeyup', 'endTimeCalculation()');
});
$.each(tasks, function(){
$.each($(this).children(), function() {
$(this).attr('onkeyup', 'endTimeCalculation()');
});
});
$.each(additional, function(){
$.each($(this).children(), function() {
$(this).attr('onkeyup', 'endTimeCalculation()');
});
});
$('.additionTable.addNewRow input').attr('onmouseup', 'endTimeCalculation()');
}
endTimeCalculation();
setOnChange();
if(location.href.indexOf('group_by_sla') !== -1) {
$('.qsoft_tmpl_work_area_oper_day form').attr('action', '/bitrix/admin/oper_day.php?group_by_sla');
}
//if ($('.qsoft_operday_error_box.qsoft_cmp_base_mr form').length === 0){
// $('.qsoft_cmp_base_mr.table').after('<div class="qsoft_operday_error_box qsoft_cmp_base_mr"><form action="/bitrix/admin/oper_day.php" method="POST"> Для продолжения работы с технической поддержкой необходимо открыть текущий операционный день, закрыв предыдущий открытый <input type="hidden" value="continue_work" name="action"><input type="submit" name="continue_work" value="Открыть доступ на 15 минут" class="btn" style="cursor: pointer;"></form></div>');
//}
$('#TASK_TABLE').parent('form').submit(function(e){
var status = $('.qsoft_status_selector');
status.each(function(id, el){
if($(el).text().trim() == 'Не установлен'){
if($('#qsoft_error_status').length <= 0){
$(document.querySelectorAll('input[name^="action"]')).parent().append('<p id="qsoft_error_status" class="qsoft_operday_error_box">Установите все статусы</p>');
}
e.preventDefault();
return;
}
});
});
});
})(window);;