This is just an idea and maybe helpful to someone who may want to use this code for viewing on smaller screens. Some code is taken from NB itself.
Note that this is not the optimal way to make form responsive and this code has some flows as some objects such as select2 are not respected. This code should be placed in the header
Code: Select all
function editResp(){
if(nuFormType() == 'edit'){
columns = 1;
$('.nuPortraitTab').remove();
var o = nuSERVERRESPONSE.objects;
var lw = columns == 1 ? 0 : nuPortraitLabelWidth(o);
var t = 10;
var b = -1;
var W = 0;
for(var i = 0 ; i < o.length ; i++){
var I = o[i].id;
var L = $('#label_' + I).length == 0 ? 0 : $('#label_' + I).outerHeight();
var O = $('#' + I).outerHeight();
W= ('85vw');
if(o[i].tab != b){
b = o[i].tab;
var l = $('#nuTab' + o[i].tab).html();
var d = '<div class="nuPortraitTab" id="nuPort' + b + '" style="top:' + t + 'px" >'+ l +'</div>';
$('#nuRECORD').append(d);
var OH = $('#nuPort' + b ).outerHeight();
t = t + OH + 20;
}
if(o[i].read != 2){
$('#label_' + o[i].id).css({'top' : t+2 , 'left' : 7, 'text-align' : 'left', 'font-weight' : 700});
if(columns == 1){
t = t + L + 5;
}
$('#'+o[i].id).css({'top' : t , 'left' : lw + 10, 'width':'90vw'});
if(o[i].type == 'lookup'){
var w = $('#'+o[i].id+'code').outerWidth();
var dis = $('#'+o[i].id+'description').outerWidth();
W = Math.max(W, w + dis + 30);
var wi =$(this).width();
$('#'+o[i].id+'code').css({'top' : t , 'width':wi/2, 'left' : lw + 10});
$('#'+o[i].id+'button').css({'top' : t , 'left' : lw + w + 15});
// t = t + 25;
$('#'+o[i].id+'description').css({'top' : t, 'left' : lw +w+ 35});
}
t = t + O + 5;
}
}
$("[data-nu-tab!='x'][data-nu-form='']:not([data-nu-lookup-id])").show();
$('#nuTabHolder').hide();
t = t + 50;
$('#nuRECORD').append('<div id="nuPortEnd" style="left:0px;position:absolute;top:' + t + 'px" > </div>');
if(columns == 1){
$('label').css('text-align', 'right').css({'width':W,'text-align':'left','left':15,'border':'1px red'});
}else{
$('label').css('text-align', 'left').css('width', lw);
}
var objectWidth = W + lw + 50;
var screenWidth = window.innerWidth;
var scale = screenWidth/(objectWidth);
$('#nubody').css('width', objectWidth)
.css('transform', 'scale(' + scale + ')');
$('html,body').scrollTop(0).scrollLeft(0);
}
}
function nonresp(){
var o = nuSERVERRESPONSE.objects;
var t = 10;
var b = -1;
var W = 0;
for(var i = 0 ; i < o.length ; i++){
var I = o[i].id;
var L = $('#label_' + I).outerHeight();
var LW = $('#label_' + I).outerWidth();
var wi = $('#' + I).outerWidth();
var O = $('#' + I).outerHeight();
var d = $('#'+o[i].id+'button').outerWidth();
var w = Number(o[i].width);
var T = Number(o[i].top);
var lft = Number(o[i].left);
t = t+L+20;
$('#'+o[i].id).css({'top' : T, 'width':w, 'left':lft});
$('#label_'+o[i].id).css({'top' : T , 'left':lft-w-5,'width':w, 'text-align':'right'});
$('#'+o[i].id+'code').css({'top' : T , 'width':w,'left' : lft});
$('#'+o[i].id+'button').css({'top' : T ,'left' : lft+w+5});
$('#'+o[i].id+'description').css({'top' : T, 'left' :lft+w+d+10});
$('#nuTabHolder').show();
$('.nuPortraitTab').remove();
}
}
Code: Select all
$(document).ready(function(){
if(nuFormType() == 'edit'){
if ($(window).width() < 700) {
editResp();
}
$(window).resize(function() {
clearTimeout(window.resizedFinished);
window.resizedFinished = setTimeout(function(){
if ($(this).width() <700){
editResp();
}else {
nonresp();
}
}, 50);
});
}
});