Your IP : 3.135.223.175
/**
* TestCases
* @param {object} window global object
* @param {function} $ jQuery library
* @param {object} EventMgr EventMgr library
* @param {object} App Application
* @return {object} api
*/
App.TestCases = function(window, $, EventMgr, App) {
'use strict';
var formLinkSel = '.testmode__form-link',
contentWrapperSel = '#main-wrapper',
testModeFieldSel = '.i-testmode-field',
inputTextareaSel = '.tab-content_st_testmode input, .tab-content_st_testmode textarea',
iconSelector = '#testmode__list-icon';
function $mainWrapper() {
return App.u.selectorCache('.i-list-wr');
}
function formLinkHandler(e) {
e.preventDefault();
var fieldName = this.getAttribute('data-elid'),
tabId = this.getAttribute('data-tabid'),
func = $('#cont-' + tabId).attr('data-func'),
$self = $(this),
value = $('#cont-' + tabId + ' input[type=hidden][name="' + fieldName + '"],' +
'#cont-' + tabId + ' input[type=text][name="' + fieldName + '"],' +
'#cont-' + tabId + ' textarea[name=' + fieldName + ']').val();
//if it html/textdata
if (value === undefined) {
//textdata
value = $('#' + tabId + '-' + fieldName + '-inner').html();
if (!value) {
value = $('#' + tabId + '-' + fieldName).html();
}
}
var param = {
func: 'test.check',
fieldname: fieldName,
ffunc: func,
value: value
};
if ($self.hasClass('b-elem_style_gracescale')) {
$self.removeClass('b-elem_style_gracescale');
} else {
$self.addClass('b-elem_style_gracescale');
param.cancel = 'yes';
}
EventMgr.trigger('ajaxRequest', {
param: param,
invar: { sourceTab: tabId },
type: 'get',
outtype: 'json',
trfunc: 'DoNothing',
queue: ''
});
}
var field, iconLeftPos;
function $icon() {
return App.Dom.byId('testmode__list-icon');
}
function showIcon() {
var self = $(this),
offset = self.offset(),
left = offset.left,
top = offset.top,
width = this.offsetWidth,
fastFilterIconElem = $icon(),
isEditable = self.hasClass('editable') ||
self.hasClass('i-filter-field') || self.parent().hasClass('i-filter-field'),
marginLeft = 22;
field = self;
if (isEditable) {
marginLeft += 22;
}
if (fastFilterIconElem.className.match('active')) { return; }
iconLeftPos = left + width - marginLeft;
fastFilterIconElem.style.left = iconLeftPos + 'px';
fastFilterIconElem.style.top = top + 'px';
fastFilterIconElem.style.display = 'block';
}
function hideIcon(e) {
var fastFilterIconElem = $icon();
if (!fastFilterIconElem.className.match('active')) {
fastFilterIconElem.style.display = 'none';
}
}
function selfShowIcon() {
var fastFilterIconElem = $icon();
fastFilterIconElem.style.display = 'block';
}
function addFieldFromFormList(e, data) {
var value = field.html(),
$tabCont = field.closest('.tab-content'),
func = $tabCont.attr('data-func'),
$list = field.closest('.b-form-list__table'),
$tr = field.closest('.b-form-list__col'),
keyName = $list.attr('data-key'),
fieldName = $list.attr('data-name'),
tabId = $tabCont.attr('data-tabid'),
elid = $('#' + tabId + '-elid').val(),
colName = $tr.attr('data-colname');
var param = {
func: 'test.check',
colname: colName,
ffunc: func,
elid: elid,
keyname: keyName,
value: value,
fieldname: fieldName
};
checkTestRequest(param, field);
}
function addFieldFromInfoList(e, data) {
var value = field.html(),
$list = field.closest('.block-table'),
func = $list.attr('data-block-func'),
fieldName = field.attr('data-name');
var param = {
func: 'test.check',
ffunc: func,
value: value,
fieldname: fieldName
};
checkTestRequest(param, field);
}
function addField(e, data) {
//check for formlist
if (field.hasClass('b-form-list__data')) {
addFieldFromFormList(e, data);
return;
} else if (field.hasClass('b-infolist__col_type_value')) {
addFieldFromInfoList(e, data);
return;
}
var value = field.find('.b-list__table-col-content').html(),
listRow = field.closest('.b-list__table-row'),
elid = listRow.attr('data-elid'),
keyName = listRow.attr('data-elkeyname'),
index = field.closest('td').index(),
fieldName = field.closest('table').find('th')[index].getAttribute('data-colname'),
$tabCont = field.closest('.tab-content'),
tabId = $tabCont.attr('data-tabid'),
func = $tabCont.attr('data-func'),
rowIndex = listRow.attr('data-index'),
props = field.find('.props'),
propsString = '';
props.each(function() {
if (propsString !== '') {
propsString += ',';
}
propsString += this.getAttribute('data-name');
propsString += '=';
var v = this.getAttribute('data-value');
if (v) {
propsString += this.getAttribute('data-value');
}
});
if (data.__tabs[tabId] && data.__tabs[tabId].__content) {
if (data.__tabs[tabId].__content[rowIndex] &&
data.__tabs[tabId].__content[rowIndex][fieldName] &&
data.__tabs[tabId].__content[rowIndex][fieldName].orig) {
value = data.__tabs[tabId].__content[rowIndex][fieldName].orig;
}
}
var param = {
func: 'test.check',
colname: fieldName,
ffunc: func,
elid: elid,
keyname: keyName,
value: value
};
if (propsString) {
/* jshint camelcase: false */
param.p_value = propsString;
}
checkTestRequest(param, field);
}
function checkTestRequest(param, field) {
if (field.hasClass('bg__green')) {
field.removeClass('bg__green');
param.cancel = 'yes';
} else {
field.addClass('bg__green');
}
//value @orig
//unselect cancel=yes
EventMgr.trigger('ajaxRequest', {
param: param,
invar: {},
type: 'get',
outtype: 'json',
trfunc: 'DoNothing',
queue: ''
});
}
function removeChecker() {
$(this).closest('.l-form__table-control').find('.testmode__form-link').remove();
}
function init() {
EventMgr.on($mainWrapper(), formLinkSel, 'click', formLinkHandler);
EventMgr.on($mainWrapper(), inputTextareaSel, 'change', removeChecker);
$mainWrapper().append('<div class="testmode__list-icon" id="testmode__list-icon" style="display:none;"></div>');
EventMgr.on($mainWrapper(), testModeFieldSel,
'mouseover', showIcon);
EventMgr.on($mainWrapper(), testModeFieldSel,
'mouseout', hideIcon);
EventMgr.obind(iconSelector, 'mouseout', hideIcon);
EventMgr.obind(iconSelector, 'mouseover', selfShowIcon);
//EventMgr.obind(iconSelector, 'click', addField);
EventMgr.onwithdata($mainWrapper(), iconSelector, 'click', 'testColCheck',
addField);
}
var api = {
init: init
};
return api;
} (window, $, EventMgr, App);