def zAxis(self, row, zStructuralNode, clearZchoices):
        if zStructuralNode is not None:
            label = zStructuralNode.header(lang=self.lang)
            xValue = self.dataFirstCol-1
            yValue = row-1
            self.table.initHeaderCellValue(label,
                                           xValue, yValue,
                                           0, 0,
                                           XbrlTable.TG_LEFT_JUSTIFIED,
                                           objectId=zStructuralNode.objectId())
    
            if zStructuralNode.choiceStructuralNodes is not None: # combo box
                valueHeaders = [''.ljust(zChoiceStructuralNode.indent * 4) + # indent if nested choices 
                                (zChoiceStructuralNode.header(lang=self.lang) or '')
                                for zChoiceStructuralNode in zStructuralNode.choiceStructuralNodes]
                zAxisIsOpenExplicitDimension = False
                zAxisTypedDimension = None
                i = zStructuralNode.choiceNodeIndex # for aspect entry, use header selected
                comboBoxValue = None if i >= 0 else zStructuralNode.aspects.get('aspectValueLabel')
                chosenStructuralNode = zStructuralNode.choiceStructuralNodes[i]    
                aspect = None
                for aspect in chosenStructuralNode.aspectsCovered():
                    if aspect != Aspect.DIMENSIONS:
                        break
                # for open filter nodes of explicit dimension allow selection of all values
                zAxisAspectEntryMode = False
                if isinstance(chosenStructuralNode.definitionNode, ModelFilterDefinitionNode):
                    if isinstance(aspect, QName):
                        dimConcept = self.modelXbrl.qnameConcepts[aspect]
                        if dimConcept.isExplicitDimension:
                            if len(valueHeaders) != 1 or valueHeaders[0]: # not just a blank initial entry
                                valueHeaders.append("(all members)")
                            else:
                                valueHeaders.extend(
                                   self.explicitDimensionFilterMembers(zStructuralNode, chosenStructuralNode))
                                zAxisAspectEntryMode = True
                            zAxisIsOpenExplicitDimension = True
                        elif dimConcept.isTypedDimension:
                            if (zStructuralNode.choiceStructuralNodes[0].contextItemBinding is None and
                                not valueHeaders[0]): # remove filterNode from the list
                                ''' this isn't reliable
                                if i > 0:
                                    del zStructuralNode.choiceStructuralNodes[0]
                                    del valueHeaders[0]
                                    zStructuralNode.choiceNodeIndex = i = i-1
                                '''
                                if i >= 0:
                                    chosenStructuralNode = zStructuralNode.choiceStructuralNodes[i]
                                else:
                                    chosenStructuralNode = zStructuralNode # use aspects of structural node (for entered typed value)
                            if not comboBoxValue and not valueHeaders:
                                comboBoxValue = "--please select--"
                                i = -1
                            valueHeaders.append("(enter typed member)")
                            zAxisTypedDimension = dimConcept
                combobox = self.table.initHeaderCombobox(self.dataFirstCol,
                                                         row-1,
                                                         colspan=0,
                                                         values=valueHeaders,
                                                         value=comboBoxValue,
                                                         selectindex=zStructuralNode.choiceNodeIndex if 0 >= i else None,
                                                         comboboxselected=self.onZComboBoxSelected)
                combobox.zStructuralNode = zStructuralNode
                combobox.zAxisIsOpenExplicitDimension = zAxisIsOpenExplicitDimension
                combobox.zAxisTypedDimension = zAxisTypedDimension
                combobox.zAxisAspectEntryMode = zAxisAspectEntryMode
                combobox.zAxisAspect = aspect
                combobox.zChoiceOrdIndex = row - 1
                combobox.objectId = zStructuralNode.objectId()
                # add aspect for chosen node
                self.setZStructuralNodeAspects(chosenStructuralNode)
            else:
                #process aspect on this node before child nodes in case it is overridden
                self.setZStructuralNodeAspects(zStructuralNode)
            # nested nodes override parent nodes
            for zStructuralNode in zStructuralNode.childStructuralNodes:
                self.zAxis(row + 1, zStructuralNode, clearZchoices)
dataset/ETHPy150Open Arelle/Arelle/arelle/ViewWinRenderedGrid.py/ViewRenderedGrid.zAxis/swapped operands of `>=`