Problem with switching tabs

When we create a Layout with tree tabs or more we can find a problem with this.

Layout with tabs

Layout in the first tab

All it’s ok but when we change to the second tab this happens

Second tab

Second tab

If we rejoin and press fourth or more tab (here we press the 6 tab)

If we rejoin and press the 2… 3… 4… 5… tab, is broken and show diferents tabs, but then if we press second tab, the layout seems go fine…

The problem with the Array index out of bounds should be fixed in 6.1.2, see this case: SVY-2955.

The problem with the “DUMMY” form seems to be related to a change in the way tabs are handled. This case is created for that SVY-3163.

As a workaround for that last problem, you can replace the method loadTabsOnPanel of the form svy_nav_fr_template_base with this one:

function loadTabsOnPanel(_panelNr, _selectedTab, _layoutObj) {
	globals.svy_nav_panel_nr = _panelNr;
	var _tabFS = _to_nav_layout.nav_layout_to_nav_tab$panel;
	var _panelProps, _programName, _programFormObj, _tempFormName, _tabFormName;
	/** @type {String} */
	var _formName;

	var _panelFormName = "ly_" + _to_nav_layout.name + "_p" + _panelNr;
	var _jsPanelForm = solutionModel.getForm(_panelFormName);
	var _jsTabpanel = _jsPanelForm.getTabPanel("tab");
	
	if(!databaseManager.hasRecords(_tabFS))
	{
		application.output('Trying to start layout without tabs. This is not possible. Please open the configurator and create tabs for this layout: '+ _to_nav_layout.name ,LOGGINGLEVEL.DEBUG)
		return
	}
	
	var _showTabs = true;
	if (_tabFS.getSize() == 1 && _panelNr == 1) {
		_showTabs = setTabPanelOrientation(_jsTabpanel,_panelNr)
	}
	if (_showTabs && forms[_panelFormName].hasCustomTabs()) {
		createCustomTabs(_jsPanelForm, _tabFS, _panelNr);
		_jsTabpanel.tabOrientation = SM_DEFAULTS.NONE;
	}
	//set Title
	setTitle(_jsPanelForm, _tabFS);
	
	forms[_panelFormName].controller.recreateUI();	
	
	for (var i = 1; i <= _tabFS.getSize(); i++) {
		_tabFS.setSelectedIndex(i);
		_panelProps = getPanelProperties(_panelNr);
		_programName = _tabFS.nav_tab_to_nav_program.program_name;

		if (globals.nav.program[_programName]) {
			/** @type {{	view:Number,
			 * 				foundset:JSFoundset,
			 * 				divider_height:Number,
			 * 				base_form_name:String,
			 * 				path:Array,
			 * 				filter:Array,
			 * 				form:Array,
			 * 				toolbar_main:String,
			 * 				toolbar_tab:String,
			 * 				empty_foundset:Boolean,
			 * 				table_name:String}}*/
			var _progObj = globals.nav.program[_programName]
			_programFormObj = _progObj.form;
			_formName = _programFormObj[_tabFS.form_type][2];
			
			//set selected view entered in the layout object
			if(_layoutObj && _layoutObj.panels && _layoutObj.panels[_panelNr-1] && _layoutObj.panels[_panelNr-1].view != undefined)
			{
				_formName = _programFormObj[_layoutObj.panels[_panelNr-1].view][2];
			}
			var _toolbar;
			if (_panelNr == 1) {
				_toolbar = _progObj.toolbar_main
				if (!_toolbar) {
					_toolbar = globals.svy_nav_getProperty('program_toolbar_main')[0]
				}
			} else {
				_toolbar = _progObj.toolbar_tab
				if (!_toolbar) {
					_toolbar = globals.svy_nav_getProperty('program_toolbar_tab')[0]
				}
			}

//TODO: this if is commented out because of a bug in 6.1.2, it should be enabled again when this case is fixed: https://support.servoy.com/browse/SVY-3163
//			if (i == _selectedTab) {
				var _dataSource;
				if (databaseManager.hasRecords(_tabFS.nav_tab$to_parent)) {
					_dataSource = "db:/" + globals.nav.program[_tabFS.nav_tab$to_parent.nav_tab_to_nav_program.program_name].server_name + "/" + globals.nav.program[_tabFS.nav_tab$to_parent.nav_tab_to_nav_program.program_name].table_name;
				}
				_tabFormName = generateTabForm(_to_nav_layout.name, _tabFS.nav_tab_to_nav_program.program_name, _tabFS.orientation_toolbar, _tabFS.tab_relation, _tabFS.edit_on_tab, _formName, _toolbar, _panelNr, i, _dataSource, _tabFS.tab_id, _tabFS.parent_tab_id, _tabFS.form_type);
				_tempFormName =_tabFormName
//			} else {
//				_tabFormName = _formName;
//				_tempFormName = "svy_nav_fr_dummy";
//			}

			setTabOnPanel(_panelNr, _panelProps, _tabFormName, _tempFormName, _tabFS.getSelectedRecord(), _to_nav_layout.name, _toolbar, i, _dataSource, _tabFS.form_type);
		}
	}
}

Hi! And thanks for the help.

All works fine.