コード例 #1
0
        public override void update()
        {
            CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.ChemicalClass);

            foreach (CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes())
            {
                CswNbtMetaDataNodeTypeProp GHSNTP = ChemicalNT.getNodeTypePropByObjectClassProp(CswNbtObjClassChemical.PropertyName.Jurisdiction);
                if (null != GHSNTP)
                {
                    GHSNTP.updateLayout(CswEnumNbtLayoutType.Preview, true);
                }
            }
            CswNbtMetaDataObjectClass GHSOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.GHSClass);

            foreach (CswNbtMetaDataNodeType GHSNT in GHSOC.getNodeTypes())
            {
                CswNbtMetaDataNodeTypeProp PictosNTP = GHSNT.getNodeTypePropByObjectClassProp(CswNbtObjClassGHS.PropertyName.Pictograms);
                foreach (CswNbtMetaDataNodeTypeProp GHSNTP in GHSNT.getNodeTypeProps())
                {
                    if (null != PictosNTP && GHSNTP.PropId == PictosNTP.PropId)
                    {
                        GHSNTP.updateLayout(CswEnumNbtLayoutType.Preview, true);
                    }
                    else
                    {
                        GHSNTP.removeFromLayout(CswEnumNbtLayoutType.Preview);
                    }
                }
            }
        }
コード例 #2
0
        public override void update()
        {
            // add active to constituent grid
            CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass );
            CswNbtMetaDataObjectClass ComponentOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.MaterialComponentClass );
            foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes() )
            {
                CswNbtMetaDataNodeTypeProp ChemicalComponentsNTP = ChemicalNT.getNodeTypeProp( "Components" );
                if( null != ChemicalComponentsNTP )
                {
                    CswNbtView ComponentsView = _CswNbtSchemaModTrnsctn.restoreView( ChemicalComponentsNTP.ViewId );
                    if( ComponentsView.Root.ChildRelationships.Count > 0 )
                    {
                        CswNbtViewRelationship ChemRel = ComponentsView.Root.ChildRelationships[0];
                        if( ChemRel.ChildRelationships.Count > 0 )
                        {
                            CswNbtViewRelationship CompRel = ChemRel.ChildRelationships[0];
                            Int32 order = 1;
                            foreach( CswNbtViewProperty vp in CompRel.Properties )
                            {
                                vp.Order = order;
                                order++;
                            }
                            ComponentsView.AddViewProperty( CompRel, ComponentOC.getObjectClassProp( CswNbtObjClassMaterialComponent.PropertyName.Active ), order );
                        }
                    }
                    ComponentsView.save();

                } // if( null != ChemicalComponentsNTP )
            } // foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes() )
        } // update()
コード例 #3
0
        public override void update()
        {

            CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass );
            foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes() )
            {
                CswNbtMetaDataNodeTypeProp HazardInfoNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.HazardInfo );
                HazardInfoNTP.removeFromAllLayouts();

                CswNbtMetaDataNodeTypeProp DisposalNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.DisposalInstructions );
                DisposalNTP.removeFromAllLayouts();

                CswNbtMetaDataNodeTypeProp SMILESNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.SMILES );
                SMILESNTP.removeFromAllLayouts();

                CswNbtMetaDataNodeTypeProp CompGasNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.CompressedGas );
                CompGasNTP.removeFromAllLayouts();

                CswNbtMetaDataNodeTypeProp DOTCodeNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.DOTCode );
                DOTCodeNTP.removeFromAllLayouts();
                DOTCodeNTP.MaxValue = 999; //DOT codes are 3 numbers
                DOTCodeNTP.MinValue = 0;

                CswNbtMetaDataNodeTypeProp OpenExpireIntervalNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.OpenExpireInterval );
                OpenExpireIntervalNTP.removeFromAllLayouts();


                CswNbtMetaDataNodeTypeProp EINECSNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.EINECS );
                EINECSNTP.removeFromAllLayouts();

                CswNbtMetaDataNodeTypeProp SubclassNameNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.SubclassName );
                SubclassNameNTP.removeFromAllLayouts();
            }

        } // update()
コード例 #4
0
 public override void update()
 {
     CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass );
     foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes() )
     {
         CswNbtMetaDataNodeTypeProp LQNoNTP = ChemicalNT.getNodeTypePropByObjectClassProp(CswNbtObjClassChemical.PropertyName.LQNo);
         LQNoNTP.removeFromAllLayouts();
         CswNbtMetaDataNodeTypeProp UNCodeNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.UNCode );
         UNCodeNTP.removeFromAllLayouts();
     }
 } // update()
コード例 #5
0
        public override void update()
        {

            CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass );
            foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes() )
            {
                CswNbtMetaDataNodeTypeProp AssignedSDSNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.AssignedSDS );
                CswNbtMetaDataNodeTypeProp LinkChemWatchNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.LinkChemWatch );
                LinkChemWatchNTP.removeFromAllLayouts();
                LinkChemWatchNTP.updateLayout( CswEnumNbtLayoutType.Edit, AssignedSDSNTP, true );
            }

        } // update()
コード例 #6
0
        public override void update()
        {

            CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass );
            foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes() )
            {
                CswNbtMetaDataNodeTypeProp LegacyMaterialIdNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.LegacyMaterialId );
                LegacyMaterialIdNTP.removeFromAllLayouts();

                CswNbtMetaDataNodeTypeProp ProductDescriptionNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.ProductDescription );
                ProductDescriptionNTP.removeFromAllLayouts();
            }

        } // update()
コード例 #7
0
 public override void update()
 {
     // Set Material Tradename to be unique for Constituents
     CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass );
     foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes() )
     {
         CswNbtMetaDataNodeTypeProp IsConstituentNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.IsConstituent );
         if( CswEnumTristate.True == IsConstituentNTP.DefaultValue.AsLogical.Checked )
         {
             CswNbtMetaDataNodeTypeProp TradenameNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.TradeName );
             TradenameNTP.setIsUnique( true );
         }
     }
 }
コード例 #8
0
        public override void update()
        {
            CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass );
            if( null != ChemicalOC )
            {
                foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes() )
                {
                    // Remove Regulatory Lists Grid header on Chemical
                    CswNbtMetaDataNodeTypeProp RegListsGridNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.RegulatoryListsGrid );
                    RegListsGridNTP.Attribute1 = false.ToString();

                    // case 28303 - Hide Suppressed Regulatory Lists prop
                    CswNbtMetaDataNodeTypeProp SuppressedRegListsNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.SuppressedRegulatoryLists );
                    SuppressedRegListsNTP.removeFromAllLayouts();
                }
            }


            CswNbtMetaDataObjectClass RegListOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.RegulatoryListClass );
            CswNbtMetaDataObjectClass RegListMemberOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.RegulatoryListMemberClass );
            if( null != RegListOC && null != RegListMemberOC )
            {
                foreach( CswNbtMetaDataNodeType RegListNT in RegListOC.getNodeTypes() )
                {
                    // Fix help text on Regulatory List 'Add CAS Numbers' property
                    CswNbtMetaDataNodeTypeProp AddCasNosNTP = RegListNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRegulatoryList.PropertyName.AddCASNumbers );
                    AddCasNosNTP.HelpText = @"Enter a list of CAS numbers to add to this regulatory list, delimited by commas or newlines.";

                    // Add help text to Regulatory List 'Exclusive' property
                    CswNbtMetaDataNodeTypeProp ExclusiveNTP = RegListNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRegulatoryList.PropertyName.Exclusive );
                    ExclusiveNTP.HelpText = @"If checked, the normal behavior of the regulatory list is reversed; a chemical is only considered a member of the list if it does not match any CAS number on the list.";

                    // Fix property name of CASNosGrid
                    CswNbtMetaDataNodeTypeProp CASNosGridNTP = RegListNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRegulatoryList.PropertyName.CASNosGrid );
                    CASNosGridNTP.PropName = CswNbtObjClassRegulatoryList.PropertyName.CASNosGrid;

                    // Add Chemical grid on Regulatory List
                    CswNbtMetaDataNodeTypeTab ChemTab = _CswNbtSchemaModTrnsctn.MetaData.makeNewTabDeprecated( RegListNT, "Chemicals", 2 );
                    CswNbtMetaDataNodeTypeProp ChemGrid = _CswNbtSchemaModTrnsctn.MetaData.makeNewPropDeprecated( RegListNT, CswEnumNbtFieldType.Grid, "Chemicals", ChemTab.TabId );
                    CswNbtView ChemView = _CswNbtSchemaModTrnsctn.restoreView( ChemGrid.ViewId );
                    ChemView.Root.ChildRelationships.Clear();
                    CswNbtViewRelationship regListRel = ChemView.AddViewRelationship( RegListOC, false );
                    CswNbtViewRelationship memberRel = ChemView.AddViewRelationship( regListRel, CswEnumNbtViewPropOwnerType.Second, RegListMemberOC.getObjectClassProp( CswNbtObjClassRegulatoryListMember.PropertyName.RegulatoryList ), false );
                    CswNbtViewRelationship chemRel = ChemView.AddViewRelationship( memberRel, CswEnumNbtViewPropOwnerType.First, RegListMemberOC.getObjectClassProp( CswNbtObjClassRegulatoryListMember.PropertyName.Chemical ), false );
                    ChemView.AddViewProperty( chemRel, ChemicalOC.getObjectClassProp( CswNbtObjClassChemical.PropertyName.TradeName ) );
                    ChemView.AddViewProperty( chemRel, ChemicalOC.getObjectClassProp( CswNbtObjClassChemical.PropertyName.CasNo ) );
                    ChemView.save();
                }
            }
        } // update()
コード例 #9
0
        public override void update()
        {
            // Update the PPE list options on all Chemical NTs
            const string UpdatedPPEOptions = "Goggles,Gloves,Clothing,Fume Hood,Respirator,Dust Mask,Face Shield,Isolation Lab,Lab Coat,Safety Cabinet";

            CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass );
            foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes() )
            {
                CswNbtMetaDataNodeTypeProp PPENTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.PPE );
                if( null != PPENTP )
                {
                    PPENTP._DataRow["listoptions"] = UpdatedPPEOptions;
                }
            }
        } // update()
コード例 #10
0
        public override void update()
        {
            // Remove default value from Specific Gravity and Physical State
            CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass );
            foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes() )
            {
                CswNbtMetaDataNodeTypeProp SpecificGravityNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.SpecificGravity );
                SpecificGravityNTP.getDefaultValue( false ).ClearValue();
                SpecificGravityNTP.updateLayout( CswEnumNbtLayoutType.Add, true, Int32.MinValue, 5, 1 );

                CswNbtMetaDataNodeTypeProp PhysicalStateNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.PhysicalState );
                PhysicalStateNTP.getDefaultValue( false ).ClearValue();
                PhysicalStateNTP.updateLayout( CswEnumNbtLayoutType.Add, true, Int32.MinValue, 3, 1 );
            }

        } // update()
コード例 #11
0
        }// OnEnable()

        protected override void OnDisable()
        {
            CswNbtMetaDataObjectClass ChemicalOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ChemicalClass);

            foreach (CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes())
            {
                CswNbtMetaDataNodeTypeProp PictogramsNTP = ChemicalNT.getNodeTypePropByObjectClassProp(CswNbtObjClassChemical.PropertyName.Pictograms);
                _CswNbtResources.Modules.HideProp(PictogramsNTP);

                CswNbtMetaDataNodeTypeProp LabelCodesNTP = ChemicalNT.getNodeTypePropByObjectClassProp(CswNbtObjClassChemical.PropertyName.LabelCodes);
                _CswNbtResources.Modules.HideProp(LabelCodesNTP);

                CswNbtMetaDataNodeTypeProp LabelCodesGridNTP = ChemicalNT.getNodeTypePropByObjectClassProp(CswNbtObjClassChemical.PropertyName.LabelCodesGrid);
                _CswNbtResources.Modules.HideProp(LabelCodesGridNTP);
            }
        } // OnDisable()
コード例 #12
0
        } // OnDisable()

        private void _toggleChemWatchBtn(bool Hidden)
        {
            CswNbtMetaDataObjectClass ChemicalOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ChemicalClass);

            foreach (CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes())
            {
                CswNbtMetaDataNodeTypeProp LinkChemWatchNTP = ChemicalNT.getNodeTypePropByObjectClassProp(CswNbtObjClassChemical.PropertyName.LinkChemWatch);
                if (Hidden)
                {
                    _CswNbtResources.Modules.HideProp(LinkChemWatchNTP);
                }
                else
                {
                    _CswNbtResources.Modules.ShowProp(LinkChemWatchNTP);
                }
            }
        }
コード例 #13
0
        public override void update()
        {
            HashSet<CswNbtViewId> SeenViewIds = new HashSet<CswNbtViewId>();

            CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass );
            CswNbtMetaDataObjectClass MaterialComponentOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.MaterialComponentClass );
            CswNbtMetaDataObjectClassProp ConstituentOCP = MaterialComponentOC.getObjectClassProp( CswNbtObjClassMaterialComponent.PropertyName.Constituent );
            CswNbtMetaDataObjectClassProp MixtureOCP = MaterialComponentOC.getObjectClassProp( CswNbtObjClassMaterialComponent.PropertyName.Mixture );
            CswNbtMetaDataObjectClassProp PercentageOCP = MaterialComponentOC.getObjectClassProp( CswNbtObjClassMaterialComponent.PropertyName.Percentage );

            CswNbtMetaDataNodeType ConstituentNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Constituent" );
            if( null != ConstituentNT )
            {
                CswNbtMetaDataNodeTypeProp ConstituentCASNoNTP = ConstituentNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.CasNo );

                foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes() )
                {
                    CswNbtMetaDataNodeTypeProp ConstituentNTP = ChemicalNT.getNodeTypeProp( "Components" );
                    if( null != ConstituentNTP )
                    {
                        if( false == SeenViewIds.Contains( ConstituentNTP.ViewId ) )
                        {
                            CswNbtView ConstituentsPropView = _CswNbtSchemaModTrnsctn.ViewSelect.restoreView( ConstituentNTP.ViewId );
                            ConstituentsPropView.Root.ChildRelationships.Clear();

                            CswNbtViewRelationship ChemicalParent = ConstituentsPropView.AddViewRelationship( ChemicalOC, false );
                            CswNbtViewRelationship MaterialComponentRelationship = ConstituentsPropView.AddViewRelationship( ChemicalParent, CswEnumNbtViewPropOwnerType.Second, MixtureOCP, true );
                            ConstituentsPropView.AddViewProperty( MaterialComponentRelationship, ConstituentOCP, 1 );

                            CswNbtViewRelationship ConstituentRelationship = ConstituentsPropView.AddViewRelationship( MaterialComponentRelationship, CswEnumNbtViewPropOwnerType.First, ConstituentOCP, false );
                            ConstituentsPropView.AddViewProperty( ConstituentRelationship, ConstituentCASNoNTP, 2 );

                            ConstituentsPropView.AddViewProperty( MaterialComponentRelationship, PercentageOCP, 3 );

                            ConstituentsPropView.save();
                            SeenViewIds.Add( ConstituentNTP.ViewId );
                        }
                    }
                }
            }


        } // update()
コード例 #14
0
        public override void update()
        {
            CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass );
            foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes() )
            {
                CswNbtMetaDataNodeTypeProp NodetypeProp = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.AddLabelCodes );
                //NodetypeProp.Hidden = true;
                NodetypeProp.removeFromAllLayouts();
            }

            // Add material to name template for ghs nodetypes
            CswNbtMetaDataObjectClass GHSOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.GHSClass );
            foreach( CswNbtMetaDataNodeType GHSNT in GHSOC.getNodeTypes() )
            {
                CswNbtMetaDataNodeTypeProp JurisdictionNTP = GHSNT.getNodeTypePropByObjectClassProp( CswNbtObjClassGHS.PropertyName.Jurisdiction );
                CswNbtMetaDataNodeTypeProp MaterialNTP = GHSNT.getNodeTypePropByObjectClassProp( CswNbtObjClassGHS.PropertyName.Material );
                GHSNT.setNameTemplateText( CswNbtMetaData.MakeTemplateEntry( JurisdictionNTP.PropName ) + " " + CswNbtMetaData.MakeTemplateEntry( MaterialNTP.PropName ) );
            }

        } // update()
コード例 #15
0
        protected override void OnEnable()
        {
            CswNbtMetaDataObjectClass ChemicalOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ChemicalClass);

            foreach (CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes())
            {
                CswNbtMetaDataNodeTypeProp PictogramsNTP = ChemicalNT.getNodeTypePropByObjectClassProp(CswNbtObjClassChemical.PropertyName.Pictograms);
                _CswNbtResources.Modules.ShowProp(PictogramsNTP);

                CswNbtMetaDataNodeTypeProp LabelCodesNTP = ChemicalNT.getNodeTypePropByObjectClassProp(CswNbtObjClassChemical.PropertyName.LabelCodes);
                _CswNbtResources.Modules.ShowProp(LabelCodesNTP);

                CswNbtMetaDataNodeTypeProp LabelCodesGridNTP = ChemicalNT.getNodeTypePropByObjectClassProp(CswNbtObjClassChemical.PropertyName.LabelCodesGrid);
                _CswNbtResources.Modules.ShowProp(LabelCodesGridNTP);

                CswNbtMetaDataNodeTypeTab DSDTab = ChemicalNT.getNodeTypeTab("DSD");
                if (null == DSDTab)
                {
                    CswNbtMetaDataNodeTypeTab GHSTab = ChemicalNT.getNodeTypeTab("GHS");

                    //Move all tabs over
                    foreach (CswNbtMetaDataNodeTypeTab tab in ChemicalNT.getNodeTypeTabs().Where(Tab => Tab.TabOrder > GHSTab.TabOrder))
                    {
                        //tab.TabOrder++;
                        tab.DesignNode.Order.Value += 1;
                    }

                    //Create the DSD tab and put it next to the GHS tab
                    DSDTab = _CswNbtResources.MetaData.makeNewTab(ChemicalNT, "DSD", GHSTab.TabOrder + 1);
                }

                if (false == DSDTab.HasProps)
                {
                    //Put the DSD props on the tab
                    PictogramsNTP.updateLayout(CswEnumNbtLayoutType.Edit, true, DSDTab.TabId);
                    LabelCodesNTP.updateLayout(CswEnumNbtLayoutType.Edit, PictogramsNTP, true);
                    LabelCodesGridNTP.updateLayout(CswEnumNbtLayoutType.Edit, LabelCodesNTP, true);
                }
            }
        }// OnEnable()
コード例 #16
0
        public override void update()
        {
            #region Create DSD NodeType

            CswNbtMetaDataNodeType DSD_NT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( CswEnumNbtObjectClass.DSDPhraseClass, "DSD Phrase", "System" );
            DSD_NT.setNameTemplateText( CswNbtMetaData.MakeTemplateEntry( CswNbtPropertySetPhrase.PropertyName.Code ) );
            foreach( CswNbtMetaDataNodeTypeProp NTP in DSD_NT.getNodeTypeProps() )
            {
                if( CswNbtPropertySetPhrase.PropertyName.English != NTP.PropName &&
                    CswNbtPropertySetPhrase.PropertyName.Code != NTP.PropName &&
                    CswNbtObjClassDSDPhrase.PropertyName.Category != NTP.PropName )
                {
                    NTP.removeFromAllLayouts();
                }
            }

            #endregion

            #region Create SD Phrases

            #region Risk Phrases
            Dictionary<string, string> RiskPhrases = new Dictionary<string, string>()
                {
                    {"R0",	"no code"},
                    {"R1",	"Explosive when dry."},
                    {"R10",	"Flammable."},
                    {"R11",	"Highly flammable."},
                    {"R12",	"Extremely flammable."},
                    {"R14",	"Reacts violently with water."},
                    {"R14/15",	"Reacts violently with water, liberating extremely flammable gases."},
                    {"R15",	"Contact with water liberates extremely flammable gases."},
                    {"R15/29",	"Contact with water liberates toxic, extremely flammable gas."},
                    {"R16",	"Explosive when mixed with oxidising substances."},
                    {"R17",	"Spontaneously flammable in air."},
                    {"R18",	"In use, may form flammable/explosive vapour-air mixture."},
                    {"R19",	"May form explosive peroxides."},
                    {"R2",	"Risk of explosion by shock, friction, fire or other sources of ignition."},
                    {"R20",	"Harmful by inhalation."},
                    {"R20/21",	"Harmful by inhalation and in contact with skin."},
                    {"R20/21/22",	"Harmful by inhalation, in contact with skin and if swallowed."},
                    {"R20/22",	"Harmful by inhalation and if swallowed."},
                    {"R21",	"Harmful in contact with skin."},
                    {"R21/22",	"Harmful in contact with skin and if swallowed."},
                    {"R22",	"Harmful if swallowed."},
                    {"R23",	"Toxic by inhalation."},
                    {"R23/24",	"Toxic by inhalation and in contact with skin."},
                    {"R23/24/25",	"Toxic by inhalation, in contact with skin and if swallowed."},
                    {"R23/25",	"Toxic by inhalation and if swallowed."},
                    {"R24",	"Toxic in contact with skin."},
                    {"R24/25",	"Toxic in contact with skin and if swallowed."},
                    {"R25",	"Toxic if swallowed."},
                    {"R26",	"Very toxic by inhalation."},
                    {"R26/27",	"Very toxic by inhalation and in contact with skin."},
                    {"R26/27/28",	"Very toxic by inhalation, in contact with skin and if swallowed."},
                    {"R26/28",	"Very toxic by inhalation and if swallowed."},
                    {"R27",	"Very toxic in contact with skin."},
                    {"R27/28",	"Very toxic in contact with skin and if swallowed."},
                    {"R28",	"Very toxic if swallowed."},
                    {"R29",	"Contact with water liberates toxic gas."},
                    {"R3",	"Extreme risk of explosion by shock, friction, fire or other sources of ignition."},
                    {"R30",	"Can become highly flammable in use."},
                    {"R31",	"Contact with acids liberates toxic gas."},
                    {"R32",	"Contact with acids liberates very toxic gas."},
                    {"R33",	"Danger of cumulative effects."},
                    {"R34",	"Causes burns."},
                    {"R35",	"Causes severe burns."},
                    {"R36",	"Irritating to eyes."},
                    {"R36/37",	"Irritating to eyes and respiratory system."},
                    {"R36/37/38",	"Irritating to eyes, respiratory system and skin."},
                    {"R36/38",	"Irritating to eyes and skin."},
                    {"R37",	"Irritating to respiratory system."},
                    {"R37/38",	"Irritating to respiratory system and skin."},
                    {"R38",	"Irritating to skin."},
                    {"R39",	"Danger of very serious irreversible effects."},
                    {"R39/23",	"Toxic: danger of very serious irreversible effects through inhalation."},
                    {"R39/23/24",	"Toxic: danger of very serious irreversible effects through inhalation and in contact with skin."},
                    {"R39/23/24/25",	"Toxic: danger of very serious irreversible effects through inhalation, in contact with skin and if swallowed."},
                    {"R39/23/25",	"Toxic: danger of very serious irreversible effects through inhalation and if swallowed."},
                    {"R39/24",	"Toxic: danger of very serious irreversible effects in contact with skin."},
                    {"R39/24/25",	"Toxic: danger of very serious irreversible effects in contact with skin and if swallowed."},
                    {"R39/25",	"Toxic: danger of very serious irreversible effects if swallowed."},
                    {"R39/26",	"Very toxic: danger of very serious irreversible effects through inhalation."},
                    {"R39/26/27",	"Very toxic: danger of very serious irreversible effects through inhalation and in contact with skin."},
                    {"R39/26/27/28",	"Very toxic: danger of very serious irreversible effects through inhalation, in contact with skin and if swallowed."},
                    {"R39/26/28",	"Very toxic: danger of very serious irreversible effects through inhalation and if swallowed."},
                    {"R39/27",	"Very toxic: danger of very serious irreversible effects in contact with skin."},
                    {"R39/27/28",	"Very toxic: danger of very serious irreversible effects in contact with skin and if swallowed."},
                    {"R39/28",	"Very toxic: danger of very serious irreversible effects if swallowed."},
                    {"R4",	"Forms very sensitive explosive metallic compounds."},
                    {"R40",	"Limited evidence of a carcinogenic effect."},
                    {"R41",	"Risk of serious damage to eyes."},
                    {"R42",	"May cause sensitisation by inhalation."},
                    {"R42/43",	"May cause sensitisation by inhalation and skin contact."},
                    {"R43",	"May cause sensitisation by skin contact."},
                    {"R44",	"Risk of explosion if heated under confinement."},
                    {"R45",	"May cause cancer."},
                    {"R46",	"May cause heritable genetic damage."},
                    {"R48",	"Danger of serious damage to health by prolonged exposure."},
                    {"R48/20",	"Harmful: danger of serious damage to health by prolonged exposure through inhalation."},
                    {"R48/20/21",	"Harmful: danger of serious damage to health by prolonged exposure through inhalation and in contact with skin."},
                    {"R48/20/21/22",	"Harmful: danger of serious damage to health by prolonged exposure through inhalation, in contact with skin and if swallowed."},
                    {"R48/20/22",	"Harmful: danger of serious damage to health by prolonged exposure through inhalation and if swallowed."},
                    {"R48/21",	"Harmful: danger of serious damage to health by prolonged exposure in contact with skin."},
                    {"R48/21/22",	"Harmful: danger of serious damage to health by prolonged exposure in contact with skin and if swallowed."},
                    {"R48/22",	"Harmful: danger of serious damage to health by prolonged exposure if swallowed."},
                    {"R48/23",	"Toxic: danger of serious damage to health by prolonged exposure through inhalation."},
                    {"R48/23/24",	"Toxic: danger of serious damage to health by prolonged exposure through inhalation and in contact with skin."},
                    {"R48/23/24/25",	"Toxic: danger of serious damage to health by prolonged exposure through inhalation, in contact with skin and if swallowed."},
                    {"R48/23/25",	"Toxic: danger of serious damage to health by prolonged exposure through inhalation and if swallowed."},
                    {"R48/24",	"Toxic: danger of serious damage to health by prolonged exposure in contact with skin."},
                    {"R48/24/25",	"Toxic: danger of serious damage to health by prolonged exposure in contact with skin and if swallowed."},
                    {"R48/25",	"Toxic: danger of serious damage to health by prolonged exposure if swallowed."},
                    {"R49",	"May cause cancer by inhalation."},
                    {"R5",	"Heating may cause an explosion."},
                    {"R50",	"Very toxic to aquatic organisms."},
                    {"R50/53",	"Very toxic to aquatic organisms, may cause long-term adverse effects in the aquatic environment."},
                    {"R51",	"Toxic to aquatic organisms."},
                    {"R51/53",	"Toxic to aquatic organisms, may cause long-term adverse effects in the aquatic environment."},
                    {"R52",	"Harmful to aquatic organisms."},
                    {"R52/53",	"Harmful to aquatic organisms, may cause long-term adverse effects in the aquatic environment."},
                    {"R53",	"May cause long-term adverse effects in the aquatic environment."},
                    {"R54",	"Toxic to flora."},
                    {"R55",	"Toxic to fauna."},
                    {"R56",	"Toxic to soil organisms."},
                    {"R57",	"Toxic to bees."},
                    {"R58",	"May cause long-term adverse effects in the environment."},
                    {"R59",	"Dangerous for the ozone layer."},
                    {"R6",	"Explosive with or without contact with air."},
                    {"R60",	"May impair fertility."},
                    {"R61",	"May cause harm to the unborn child."},
                    {"R62",	"Possible risk of impaired fertility."},
                    {"R63",	"Possible risk of harm to the unborn child."},
                    {"R64",	"May cause harm to breastfed babies."},
                    {"R65",	"Harmful: may cause lung damage if swallowed."},
                    {"R66",	"Repeated exposure may cause skin dryness or cracking."},
                    {"R67",	"Vapours may cause drowsiness and dizziness."},
                    {"R68",	"Possible risk of irreversible effects."},
                    {"R68/20",	"Harmful: possible risk of irreversible effects through inhalation."},
                    {"R68/20/21",	"Harmful: possible risk of irreversible effects through inhalation and in contact with skin."},
                    {"R68/20/21/22",	"Harmful: possible risk of irreversible effects through inhalation, in contact with skin and if swallowed."},
                    {"R68/20/22",	"Harmful: possible risk of irreversible effects through inhalation and if swallowed."},
                    {"R68/21",	"Harmful: possible risk of irreversible effects in contact with skin."},
                    {"R68/21/22",	"Harmful: possible risk of irreversible effects in contact with skin and if swallowed."},
                    {"R68/22",	"Harmful: possible risk of irreversible effects if swallowed."},
                    {"R7",	"May cause fire."},
                    {"R8",	"Contact with combustible material may cause fire."},
                    {"R9",	"Explosive when mixed with combustible material."}
                };
            #endregion

            #region Safety Phrases

            Dictionary<string, string> SafetyPhrases = new Dictionary<string, string>()
                {
                    {"S1",	"Keep locked up."},
                    {"S1/2",	"Keep locked up and out of the reach of children."},
                    {"S12",	"Do not keep the container sealed."},
                    {"S13",	"Keep away from food, drink and animal feedingstuffs."},
                    {"S14",	"Keep away from . (incompatible materials to be indicated by the manufacturer)."},
                    {"S15",	"Keep away from heat."},
                    {"S16",	"Keep away from sources of ignition . No smoking."},
                    {"S17",	"Keep away from combustible material."},
                    {"S18",	"Handle and open container with care."},
                    {"S2",	"Keep out of the reach of children."},
                    {"S20",	"When using do not eat or drink."},
                    {"S20/21",	"When using do not eat, drink or smoke."},
                    {"S21",	"When using do not smoke."},
                    {"S22",	"Do not breathe dust."},
                    {"S23",	"Do not breathe gas/fumes/vapour/spray (appropriate wording to be specified by the manufacturer)."},
                    {"S24",	"Avoid contact with skin."},
                    {"S24/25",	"Avoid contact with skin and eyes."},
                    {"S25",	"Avoid contact with eyes."},
                    {"S26",	"In case of contact with eyes, rinse immediately with plenty of water and seek medical advice."},
                    {"S27",	"Take off immediately all contaminated clothing."},
                    {"S27/28",	"After contact with skin, take off immediately all contaminated clothing, and wash immediately with plenty of (to be specified by the manufacturer)."},
                    {"S28",	"After contact with skin, wash immediately with plenty of . (to be specified by the manufacturer)."},
                    {"S29",	"Do not empty into drains."},
                    {"S29/35",	"Do not empty into drains; dispose of this material and its container in a safe way."},
                    {"S29/56",	"Do not empty into drains, dispose of this material and its container at hazardous or special waste collection point."},
                    {"S3",	"Keep in a cool place."},
                    {"S3/14",	"Keep in a cool place away from . (incompatible materials to be indicated by the manufacturer)."},
                    {"S3/7",	"Keep container tightly closed in a cool place."},
                    {"S3/9/14",	"Keep in a cool, well-ventilated place away from . (incompatible materials to be indicated by the manufacturer)."},
                    {"S3/9/14/49",	"Keep only in the original container in a cool, well-ventilated place away from . (incompatible materials to be indicated by the manufacturer)."},
                    {"S3/9/49",	"Keep only in the original container in a cool, well-ventilated place."},
                    {"S30",	"Never add water to this product."},
                    {"S33",	"Take precautionary measures against static discharges."},
                    {"S35",	"This material and its container must be disposed of in a safe way."},
                    {"S36",	"Wear suitable protective clothing."},
                    {"S36/37",	"Wear suitable protective clothing and gloves."},
                    {"S36/37/39",	"Wear suitable protective clothing, gloves and eye/face protection."},
                    {"S36/39",	"Wear suitable protective clothing and eye/face protection."},
                    {"S37",	"Wear suitable gloves."},
                    {"S37/39",	"Wear suitable gloves and eye/face protection."},
                    {"S38",	"In case of insufficient ventilation, wear suitable respiratory equipment."},
                    {"S39",	"Wear eye/face protection."},
                    {"S4",	"Keep away from living quarters."},
                    {"S40",	"To clean the floor and all objects contaminated by this material, use . (to be specified by the manufacturer)."},
                    {"S41",	"In case of fire and/or explosion do not breathe fumes."},
                    {"S42",	"During fumigation/spraying wear suitable respiratory equipment (appropriate wording to be specified by the manufacturer)."},
                    {"S43",	"In case of fire, use . (indicate in the space the precise type of fire-fighting equipment. If water increases risk, add .Never use water.)."},
                    {"S45",	"In case of accident or if you feel unwell, seek medical advice immediately (show the label where possible)."},
                    {"S46",	"If swallowed, seek medical advice immediately and show this container or label."},
                    {"S47",	"Keep at temperature not exceeding . °C (to be specified by the manufacturer)."},
                    {"S47/49",	"Keep only in the original container at a temperature not exceeding . °C (to be specified by the manufacturer)."},
                    {"S48",	"Keep wet with . (appropriate material to be specified by the manufacturer)."},
                    {"S49",	"Keep only in the original container."},
                    {"S5",	"Keep contents under . (appropriate liquid to be specified by the manufacturer)."},
                    {"S50",	"Do not mix with . (to be specified by the manufacturer)."},
                    {"S51",	"Use only in well-ventilated areas."},
                    {"S52",	"Not recommended for interior use on large surface areas."},
                    {"S53",	"Avoid exposure . obtain special instructions before use."},
                    {"S56",	"Dispose of this material and its container to hazardous or special waste collection point."},
                    {"S57",	"Use appropriate container to avoid environmental contamination."},
                    {"S59",	"Refer to manufacturer/supplier for information on recovery/recycling."},
                    {"S6",	"Keep under . (inert gas to be specified by the manufacturer)."},
                    {"S60",	"This material and its container must be disposed of as hazardous waste."},
                    {"S61",	"Avoid release to the environment. Refer to special instructions/safety data sheets."},
                    {"S62",	"If swallowed, do not induce vomiting: seek medical advice immediately and show this container or label."},
                    {"S63",	"In case of accident by inhalation: remove casualty to fresh air and keep at rest."},
                    {"S64",	"If swallowed, rinse mouth with water (only if the person is conscious)."},
                    {"S7",	"Keep container tightly closed."},
                    {"S7/47",	"Keep container tightly closed and at a temperature not exceeding . °C (to be specified by the manufacturer)."},
                    {"S7/8",	"Keep container tightly closed and dry."},
                    {"S7/9",	"Keep container tightly closed and in a well-ventilated place."},
                    {"S8",	"Keep container dry."},
                    {"S9",	"Keep container in a well-ventilated place."}
                };

            #endregion

            CswNbtMetaDataObjectClass DSDPhraseOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.DSDPhraseClass );
            foreach( KeyValuePair<string, string> Phrase in RiskPhrases )
            {
                _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( DSDPhraseOC.getNodeTypeIds().FirstOrDefault(), OnAfterMakeNode: delegate( CswNbtNode NewNode )
                    {
                        CswNbtObjClassDSDPhrase NewPhrase = NewNode;
                        NewPhrase.Code.Text = Phrase.Key;
                        NewPhrase.English.Text = Phrase.Value;
                        NewPhrase.Category.Value = "Risk";
                    } );
            }

            foreach( KeyValuePair<string, string> Phrase in SafetyPhrases )
            {
                _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( DSDPhraseOC.getNodeTypeIds().FirstOrDefault(), OnAfterMakeNode: delegate( CswNbtNode NewNode )
                {
                    CswNbtObjClassDSDPhrase NewPhrase = NewNode;
                    NewPhrase.Code.Text = Phrase.Key;
                    NewPhrase.English.Text = Phrase.Value;
                    NewPhrase.Category.Value = "Safety";
                } );
            }

            #endregion

            #region DSD Tab

            CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass );
            foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes() )
            {
                CswNbtMetaDataNodeTypeTab GHSTab = ChemicalNT.getNodeTypeTab( "GHS" );
                int DSDTabOrder = ( null != GHSTab ? GHSTab.TabOrder : ChemicalNT.getMaximumTabOrder() ) + 1;

                CswNbtMetaDataNodeTypeTab DSDTab = ChemicalNT.getNodeTypeTab( "DSD" ) ??
                    _CswNbtSchemaModTrnsctn.MetaData.makeNewTab( ChemicalNT, "DSD", DSDTabOrder );

                CswNbtMetaDataNodeTypeProp PictogramsNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.Pictograms );
                PictogramsNTP.removeFromAllLayouts();
                PictogramsNTP.updateLayout( CswEnumNbtLayoutType.Edit, true, DSDTab.TabId );

                CswNbtMetaDataNodeTypeProp LabelCodesNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.LabelCodes );
                LabelCodesNTP.Extended = ",";
                LabelCodesNTP.removeFromAllLayouts();
                LabelCodesNTP.updateLayout( CswEnumNbtLayoutType.Edit, true, DSDTab.TabId );

                CswNbtView LabelCodesView = _CswNbtSchemaModTrnsctn.ViewSelect.restoreView( "DSD Label Codes Property Grid", CswEnumNbtViewVisibility.Property );

                CswNbtMetaDataNodeTypeProp LabelCodesGridNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.LabelCodesGrid );
                LabelCodesGridNTP.ViewId = LabelCodesView.ViewId;
                LabelCodesGridNTP.Extended = "Small";
                LabelCodesGridNTP.removeFromAllLayouts();
                LabelCodesGridNTP.updateLayout( CswEnumNbtLayoutType.Edit, true, DSDTab.TabId );
            }

            #endregion

            #region DSD Module

            int dsdModuleId = _CswNbtSchemaModTrnsctn.createModule( "Dangerous Substances Directive", CswEnumNbtModuleName.DSD, false );
            _CswNbtSchemaModTrnsctn.Modules.CreateModuleDependency( CswEnumNbtModuleName.CISPro, CswEnumNbtModuleName.DSD );
            _CswNbtSchemaModTrnsctn.createModuleObjectClassJunction( dsdModuleId, DSDPhraseOC.ObjectClassId );

            #endregion

        } // update()
コード例 #17
0
        public override void update()
        {

            #region Update all NTPs "Hidden" column to "false"

            _CswNbtSchemaModTrnsctn.execArbitraryPlatformNeutralSql( "update nodetype_props set hidden = " + CswConvert.ToDbVal( false ) );

            #endregion

            #region CISPro

            CswNbtMetaDataObjectClass UserOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.UserClass );
            foreach( CswNbtMetaDataNodeType UserNT in UserOC.getNodeTypes() )
            {
                CswNbtMetaDataNodeTypeProp UserJurisdictionNTP = UserNT.getNodeTypePropByObjectClassProp( CswNbtObjClassUser.PropertyName.Jurisdiction );
                if( null != UserJurisdictionNTP )
                {
                    UserJurisdictionNTP.updateLayout( CswEnumNbtLayoutType.Add, false );
                    UserJurisdictionNTP.updateLayout( CswEnumNbtLayoutType.Edit, DoMove: false, TabId: UserNT.getFirstNodeTypeTab().TabId );
                }
            }

            #endregion

            #region Containers

            CswNbtMetaDataObjectClass locationOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.LocationClass );
            foreach( int NodeTypeId in locationOC.getNodeTypeIds() )
            {
                _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( NodeTypeId, CswNbtObjClassLocation.PropertyName.Containers, "Containers" );
                _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( NodeTypeId, "Inventory Levels", "Inventory Levels", 2 );
                _CswNbtSchemaModTrnsctn.Modules.AddPropToFirstTab( NodeTypeId, CswNbtObjClassLocation.PropertyName.AllowInventory );
                _CswNbtSchemaModTrnsctn.Modules.AddPropToFirstTab( NodeTypeId, CswNbtObjClassLocation.PropertyName.InventoryGroup );
                _CswNbtSchemaModTrnsctn.Modules.AddPropToFirstTab( NodeTypeId, CswNbtObjClassLocation.PropertyName.StorageCompatibility );

                CswNbtMetaDataNodeTypeProp AllowInvNTP = _CswNbtSchemaModTrnsctn.MetaData.getNodeTypeProp( NodeTypeId, CswNbtObjClassLocation.PropertyName.AllowInventory );
                _CswNbtSchemaModTrnsctn.MetaData.NodeTypeLayout.updatePropLayout( CswEnumNbtLayoutType.Add, NodeTypeId, AllowInvNTP, false );

                CswNbtMetaDataNodeTypeProp InvGrpNTP = _CswNbtSchemaModTrnsctn.MetaData.getNodeTypeProp( NodeTypeId, CswNbtObjClassLocation.PropertyName.InventoryGroup );
                _CswNbtSchemaModTrnsctn.MetaData.NodeTypeLayout.updatePropLayout( CswEnumNbtLayoutType.Add, NodeTypeId, InvGrpNTP, false );

                CswNbtMetaDataNodeTypeProp StorageCompatNTP = _CswNbtSchemaModTrnsctn.MetaData.getNodeTypeProp( NodeTypeId, CswNbtObjClassLocation.PropertyName.StorageCompatibility );
                _CswNbtSchemaModTrnsctn.MetaData.NodeTypeLayout.updatePropLayout( CswEnumNbtLayoutType.Add, NodeTypeId, StorageCompatNTP, false );
            }

            CswNbtMetaDataPropertySet MaterialSet = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet );
            foreach( CswNbtMetaDataObjectClass materialOC in MaterialSet.getObjectClasses() )
            {
                foreach( CswNbtMetaDataNodeType materialNT in _CswNbtSchemaModTrnsctn.MetaData.getNodeTypes( materialOC.ObjectClassId ) )
                {
                    string sizesNTPName = materialNT.NodeTypeName + " Sizes";
                    _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( materialNT.NodeTypeId, sizesNTPName, "Containers", 99 );

                    _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( materialNT.NodeTypeId, "Inventory Levels", "Containers", 99 );

                    string containersNTPName = materialNT.NodeTypeName + " Containers";
                    _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( materialNT.NodeTypeId, containersNTPName, "Containers", 99 );

                    CswNbtMetaDataNodeTypeTab materialNTT = materialNT.getFirstNodeTypeTab();
                    _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( materialNT.NodeTypeId, CswNbtObjClassChemical.PropertyName.ApprovedForReceiving, materialNTT );

                    CswNbtMetaDataNodeTypeTab materialIdentityNTT = materialNT.getIdentityTab();
                    _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( materialNT.NodeTypeId, CswNbtObjClassChemical.PropertyName.Receive, materialIdentityNTT, 2, 2 );
                    _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( materialNT.NodeTypeId, CswNbtObjClassChemical.PropertyName.Request, materialIdentityNTT, 1, 2 );

                    _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( materialNT.NodeTypeId, CswNbtObjClassChemical.PropertyName.StorageCompatibility, "Hazards" );
                }
            }

            #endregion

            #region Fire Code

            CswNbtMetaDataObjectClass LocationOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.LocationClass );
            foreach( int LocationNTId in LocationOC.getNodeTypeIds() )
            {
                _CswNbtSchemaModTrnsctn.Modules.AddPropToFirstTab( LocationNTId, CswNbtObjClassLocation.PropertyName.ControlZone );

                CswNbtMetaDataNodeTypeProp CtrlZoneNTP = _CswNbtSchemaModTrnsctn.MetaData.getNodeTypeProp( LocationNTId, CswNbtObjClassLocation.PropertyName.ControlZone );
                _CswNbtSchemaModTrnsctn.MetaData.NodeTypeLayout.updatePropLayout( CswEnumNbtLayoutType.Add, LocationNTId, CtrlZoneNTP, false );
            }

            CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass );
            foreach( CswNbtMetaDataNodeType ChemicalNT in _CswNbtSchemaModTrnsctn.MetaData.getNodeTypes( ChemicalOC.ObjectClassId ) )
            {
                foreach( CswNbtMetaDataNodeTypeTab Tab in ChemicalNT.getNodeTypeTabs() )
                {
                    if( Tab.TabOrder >= 4 )
                        Tab.TabOrder += 1;
                }
                CswNbtMetaDataNodeTypeTab HazardsTab = ChemicalNT.getNodeTypeTab( "Hazards" );
                if( null == HazardsTab )
                {
                    HazardsTab = _CswNbtSchemaModTrnsctn.MetaData.makeNewTab( ChemicalNT, "Hazards", 4 );
                }
                _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( ChemicalNT.NodeTypeId, "Material Type", HazardsTab, 4, 2, "Fire Reporting" );
                _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( ChemicalNT.NodeTypeId, "Special Flags", HazardsTab, 5, 2, "Fire Reporting" );
                _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( ChemicalNT.NodeTypeId, "Hazard Categories", HazardsTab, 6, 2, "Fire Reporting" );
                _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( ChemicalNT.NodeTypeId, "Hazard Classes", HazardsTab, 7, 2, "Fire Reporting" );
            }

            CswNbtMetaDataObjectClass ContainerOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ContainerClass );
            foreach( int ContainerNTId in ContainerOC.getNodeTypeIds() )
            {
                _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( ContainerNTId, "Storage Pressure", "Fire Code" );
                _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( ContainerNTId, "Storage Temperature", "Fire Code" );
                _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( ContainerNTId, "Use Type", "Fire Code" );
            }

            #endregion

            #region Manufacturer Lot Info

            CswNbtMetaDataObjectClass ReceiptLotOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ReceiptLotClass );
            foreach( CswNbtMetaDataNodeType ReceiptLotNT in ReceiptLotOC.getNodeTypes() )
            {
                CswNbtMetaDataNodeTypeProp ManufacturerNTP = _CswNbtSchemaModTrnsctn.MetaData.getNodeTypeProp( ReceiptLotNT.NodeTypeId, CswNbtObjClassReceiptLot.PropertyName.Manufacturer );
                _CswNbtSchemaModTrnsctn.MetaData.NodeTypeLayout.updatePropLayout( CswEnumNbtLayoutType.Edit, ReceiptLotNT.NodeTypeId, ManufacturerNTP, true, ReceiptLotNT.getFirstNodeTypeTab().TabId, 7, 1 );
                _CswNbtSchemaModTrnsctn.MetaData.NodeTypeLayout.updatePropLayout( CswEnumNbtLayoutType.Add, ReceiptLotNT.NodeTypeId, ManufacturerNTP, true );
                CswNbtMetaDataNodeTypeProp ManufacturerLotNoNTP = _CswNbtSchemaModTrnsctn.MetaData.getNodeTypeProp( ReceiptLotNT.NodeTypeId, CswNbtObjClassReceiptLot.PropertyName.ManufacturerLotNo );
                _CswNbtSchemaModTrnsctn.MetaData.NodeTypeLayout.updatePropLayout( CswEnumNbtLayoutType.Edit, ReceiptLotNT.NodeTypeId, ManufacturerLotNoNTP, true, ReceiptLotNT.getFirstNodeTypeTab().TabId, 8, 1 );
                _CswNbtSchemaModTrnsctn.MetaData.NodeTypeLayout.updatePropLayout( CswEnumNbtLayoutType.Add, ReceiptLotNT.NodeTypeId, ManufacturerLotNoNTP, true );
                CswNbtMetaDataNodeTypeProp ManufacturedDateNTP = _CswNbtSchemaModTrnsctn.MetaData.getNodeTypeProp( ReceiptLotNT.NodeTypeId, CswNbtObjClassReceiptLot.PropertyName.ManufacturedDate );
                _CswNbtSchemaModTrnsctn.MetaData.NodeTypeLayout.updatePropLayout( CswEnumNbtLayoutType.Edit, ReceiptLotNT.NodeTypeId, ManufacturedDateNTP, true, ReceiptLotNT.getFirstNodeTypeTab().TabId, 9, 1 );
                _CswNbtSchemaModTrnsctn.MetaData.NodeTypeLayout.updatePropLayout( CswEnumNbtLayoutType.Add, ReceiptLotNT.NodeTypeId, ManufacturedDateNTP, true );
                _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( ReceiptLotNT.NodeTypeId, CswNbtObjClassReceiptLot.PropertyName.AssignedCofA, ReceiptLotNT.getFirstNodeTypeTab(), 10, 1 );
                _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( ReceiptLotNT.NodeTypeId, CswNbtObjClassReceiptLot.PropertyName.ViewCofA, ReceiptLotNT.getIdentityTab(), 1, 1 );
            }

            foreach( CswNbtMetaDataNodeType ContainerNT in ContainerOC.getNodeTypes() )
            {
                _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( ContainerNT.NodeTypeId, "View C of A", ContainerNT.getIdentityTab(), 1, 3 );
            }

            #endregion

            #region MLM

            CswNbtMetaDataObjectClass containerOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ContainerClass );
            foreach( CswNbtMetaDataNodeType containerNT in containerOC.getNodeTypes() )
            {
                CswNbtMetaDataNodeTypeTab cmgTab = containerNT.getNodeTypeTab( "Central Material Group" );
                if( null == cmgTab )
                {
                    cmgTab = _CswNbtSchemaModTrnsctn.MetaData.makeNewTab( containerNT, "Central Material Group", containerNT.getMaximumTabOrder() + 1 );
                }
                CswNbtMetaDataNodeTypeProp lotControlledNTP = containerNT.getNodeTypePropByObjectClassProp( CswNbtObjClassContainer.PropertyName.LotControlled );
                lotControlledNTP.updateLayout( CswEnumNbtLayoutType.Edit, false, TabId: cmgTab.TabId );

                CswNbtMetaDataNodeTypeProp requisitionableNTP = containerNT.getNodeTypePropByObjectClassProp( CswNbtObjClassContainer.PropertyName.Requisitionable );
                requisitionableNTP.updateLayout( CswEnumNbtLayoutType.Edit, false, TabId: cmgTab.TabId );

                CswNbtMetaDataNodeTypeProp reservedForNTP = containerNT.getNodeTypePropByObjectClassProp( CswNbtObjClassContainer.PropertyName.ReservedFor );
                reservedForNTP.updateLayout( CswEnumNbtLayoutType.Edit, false, TabId: cmgTab.TabId );

                CswNbtMetaDataNodeTypeProp receiptLotNTP = containerNT.getNodeTypePropByObjectClassProp( CswNbtObjClassContainer.PropertyName.ReceiptLot );
                CswNbtMetaDataNodeTypeTab firstTab = containerNT.getFirstNodeTypeTab();
                receiptLotNTP.updateLayout( CswEnumNbtLayoutType.Edit, false, TabId: firstTab.TabId );
            }

            CswNbtMetaDataObjectClass RequestMatDispOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.RequestMaterialDispenseClass );
            foreach( CswNbtMetaDataNodeType NodeType in RequestMatDispOc.getLatestVersionNodeTypes() )
            {
                CswNbtMetaDataNodeTypeTab CmgTab = NodeType.getNodeTypeTab( "Central Material Group" )
                    ?? _CswNbtSchemaModTrnsctn.MetaData.makeNewTab( NodeType, "Central Material Group", NodeType.getNextTabOrder() );

                CswNbtMetaDataNodeTypeProp RofNtp = NodeType.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestMaterialDispense.PropertyName.RecurringFrequency );
                RofNtp.updateLayout( CswEnumNbtLayoutType.Edit, true, CmgTab.TabId );
                CswNbtMetaDataNodeTypeProp NrdNtp = NodeType.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestMaterialDispense.PropertyName.NextReorderDate );
                NrdNtp.updateLayout( CswEnumNbtLayoutType.Edit, RofNtp, true );

                CswNbtMetaDataNodeTypeProp LastNtp = NrdNtp;
                foreach( string CmgTabProp in CswNbtObjClassRequestMaterialDispense.PropertyName.MLMCmgTabProps )
                {
                    CswNbtMetaDataNodeTypeProp CmgNtp = NodeType.getNodeTypePropByObjectClassProp( CmgTabProp );
                    CmgNtp.updateLayout( CswEnumNbtLayoutType.Edit, LastNtp, true );
                    LastNtp = CmgNtp;
                }

                CswNbtMetaDataNodeTypeTab ReceiveTab = NodeType.getNodeTypeTab( "Receive" )
                    ?? _CswNbtSchemaModTrnsctn.MetaData.makeNewTab( NodeType, "Receive", NodeType.getNextTabOrder() );
                foreach( string ReceiveTabProp in CswNbtObjClassRequestMaterialDispense.PropertyName.MLMReceiveTabProps )
                {
                    CswNbtMetaDataNodeTypeProp ReceiveNtp = NodeType.getNodeTypePropByObjectClassProp( ReceiveTabProp );
                    ReceiveNtp.updateLayout( CswEnumNbtLayoutType.Edit, true, ReceiveTab.TabId );
                }
            }

            //Case 28339
            //   Show Vendor.VendorType and CorporateEntity
            //   Add a filter to Material.Supplier where VendorType = 'Coporate'
            CswNbtMetaDataObjectClass vendorOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.VendorClass );
            foreach( CswNbtMetaDataNodeType vendorNT in vendorOC.getNodeTypes() )
            {
                CswNbtMetaDataNodeTypeTab firstTab = vendorNT.getFirstNodeTypeTab();
                CswNbtMetaDataNodeTypeProp vendorTypeNTP = vendorNT.getNodeTypePropByObjectClassProp( CswNbtObjClassVendor.PropertyName.VendorTypeName );
                vendorTypeNTP.updateLayout( CswEnumNbtLayoutType.Edit, true, TabId: firstTab.TabId );
                vendorTypeNTP.updateLayout( CswEnumNbtLayoutType.Add, true, TabId: firstTab.TabId );

                CswNbtMetaDataNodeTypeProp corporateEntityNTP = vendorNT.getNodeTypePropByObjectClassProp( CswNbtObjClassVendor.PropertyName.CorporateEntityName );
                corporateEntityNTP.updateLayout( CswEnumNbtLayoutType.Edit, true, TabId: firstTab.TabId );
            }

            _toggleMaterialRequestApprovalLevel( CswEnumNbtObjectClass.RequestMaterialCreateClass, false );
            _toggleMaterialRequestApprovalLevel( CswEnumNbtObjectClass.RequestMaterialDispenseClass, false );

            #endregion

            #region SDS

            foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes() )
            {
                foreach( CswNbtMetaDataNodeTypeTab Tab in ChemicalNT.getNodeTypeTabs() )
                {
                    if( Tab.TabOrder >= 3 )
                        Tab.TabOrder += 1;
                }
                CswNbtMetaDataNodeTypeTab HazardsTab = ChemicalNT.getNodeTypeTab( "Hazards" ) ?? _CswNbtSchemaModTrnsctn.MetaData.makeNewTab( ChemicalNT, "Hazards", 3 );
                _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( ChemicalNT.NodeTypeId, "Assigned SDS", HazardsTab, 1, 1 );
                _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( ChemicalNT.NodeTypeId, "View SDS", ChemicalNT.getIdentityTab(), 3, 2 );
            }

            //Show the following Container properties...
            //   View SDS
            if( _CswNbtSchemaModTrnsctn.Modules.IsModuleEnabled( CswEnumNbtModuleName.Containers ) )
            {
                foreach( CswNbtMetaDataNodeType ContainerNT in ContainerOC.getNodeTypes() )
                {
                    _CswNbtSchemaModTrnsctn.Modules.AddPropToTab( ContainerNT.NodeTypeId, "View SDS", ContainerNT.getIdentityTab(), 1, 2 );
                }
            }

            #endregion

        } // update()
コード例 #18
0
        public override void update()
        {
            // Fix DSD Picto Paths
            CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass );
            foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes() )
            {

                CswDelimitedString PictoPaths = new CswDelimitedString( '\n' )
                    {
                        "Images/cispro/DSD/512/none.gif",
                        "Images/cispro/DSD/512/e.gif",
                        "Images/cispro/DSD/512/o.gif",
                        "Images/cispro/DSD/512/f.gif",
                        "Images/cispro/DSD/512/f_plus.gif",
                        "Images/cispro/DSD/512/t.gif",
                        "Images/cispro/DSD/512/t_plus.gif",
                        "Images/cispro/DSD/512/xn.gif",
                        "Images/cispro/DSD/512/xi.gif",
                        "Images/cispro/DSD/512/c.gif",
                        "Images/cispro/DSD/512/n.gif"
                    };
                CswNbtMetaDataNodeTypeProp PictogramsNTP = ChemicalNT.getNodeTypePropByObjectClassProp( CswNbtObjClassChemical.PropertyName.Pictograms );
                PictogramsNTP.DesignNode.AttributeProperty[CswNbtFieldTypeRuleImageList.AttributeName.ImageUrls].AsMemo.Text = PictoPaths.ToString();
                PictogramsNTP.DesignNode.AttributeProperty[CswNbtFieldTypeRuleImageList.AttributeName.HeightInPixels].AsNumber.Value = 77;
                PictogramsNTP.DesignNode.AttributeProperty[CswNbtFieldTypeRuleImageList.AttributeName.WidthInPixels].AsNumber.Value = 77;
                PictogramsNTP.DesignNode.postChanges( false );

                foreach( CswNbtObjClassChemical ChemicalNode in ChemicalNT.getNodes( false, true ) )
                {
                    CswDelimitedString oldVals = ChemicalNode.Pictograms.Value;
                    CswDelimitedString newVals = new CswDelimitedString( CswNbtNodePropImageList.Delimiter );
                    foreach( string oldVal in oldVals )
                    {
                        if( oldVal.IndexOf( "/DSD/" ) >= 0 && oldVal.IndexOf( "/DSD/512" ) == 0 )
                        {
                            newVals.Add( oldVal.Replace( "/DSD/", "/DSD/512/" ) );
                        }
                        else
                        {
                            newVals.Add( oldVal );
                        }
                    }
                    ChemicalNode.Pictograms.Value = newVals;
                    ChemicalNode.postChanges( false );
                } // foreach( CswNbtObjClassChemical ChemicalNode in ChemicalNT.getNodes( false, true ) )
            } // foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes() )

            // Example DSD Print Label
            CswNbtMetaDataObjectClass ContainerOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ContainerClass );
            CswNbtMetaDataObjectClass PrintLabelOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.PrintLabelClass );
            if( null != PrintLabelOC )
            {
                CswNbtMetaDataNodeType PrintLabelNT = PrintLabelOC.FirstNodeType;
                if( null != PrintLabelNT )
                {
                    CswNbtObjClassPrintLabel DsdLabel = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( PrintLabelNT.NodeTypeId );
                    DsdLabel.LabelName.Text = "Example DSD Label";
                    if( null != ContainerOC )
                    {
                        foreach(CswNbtMetaDataNodeType ContainerNT in ContainerOC.getNodeTypes())
                        {
                            DsdLabel.NodeTypes.SelectedNodeTypeIds.Add( ContainerNT.NodeTypeId.ToString() );
                        }
                    }
                    DsdLabel.EplText.Text = @"I8,0,001
S2
OD
JF
WN
D12
ZB
q375
N
A25,15,0,2,1,1,N,""{Material}""
B25,45,0,1,3,6,40,N,""{Barcode}""
A25,80,0,2,1,1,N,""{Barcode}""
A25,130,0,2,1,1,N,""{NBTDSDB}""
GW0,160,{NBTDSDPICTOS}
GW128,160,{NBTDSDPICTOS_2}
GW256,160,{NBTDSDPICTOS_3}
P1";
                    DsdLabel.postChanges( false );
                }
            }


        } // update()
コード例 #19
0
        public static void initializeCreateMaterial(ICswResources CswResources, MaterialResponse Response, string NodeId)
        {
            if (null != CswResources)
            {
                CswNbtResources         NbtResources         = (CswNbtResources)CswResources;
                CswNbtActCreateMaterial CreateMaterialAction = new CswNbtActCreateMaterial(NbtResources);

                // Get/Create a node
                CswPrimaryKey NodePk   = CreateMaterialAction.makeTemp(NodeId);
                CswNbtNode    TempNode = NbtResources.getNode(NodePk, null);
                Response.Data.TempNode           = new CswNbtNode.Node(TempNode);
                Response.Data.TempNodeObjClassId = CswConvert.ToString(TempNode.getObjectClassId());

                // Suppliers view
                CswNbtView SupplierView = CreateMaterialAction.getMaterialSuppliersView();
                if (null != SupplierView)
                {
                    Response.Data.SuppliersView.SessionViewId = SupplierView.SessionViewId;
                }

                // CIS-53353 - Allow adding suppliers if the user has Create on any Vendor nodetype
                Response.Data.AllowSupplierAdd = false;
                CswNbtMetaDataObjectClass VendorOC = NbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.VendorClass);
                foreach (CswNbtMetaDataNodeType VendorNT in VendorOC.getNodeTypes())
                {
                    if (NbtResources.Permit.canNodeType(CswEnumNbtNodeTypePermission.Create, VendorNT))
                    {
                        Response.Data.AllowSupplierAdd = true;
                    }
                }

                //Determine the steps
                int StepNo = 1;
                MaterialResponse.WizardStep TypeAndIdentity = new MaterialResponse.WizardStep()
                {
                    StepNo   = StepNo,
                    StepName = "Choose Type and Identity"
                };
                Response.Data.Steps.Add(TypeAndIdentity);
                StepNo++;

                MaterialResponse.WizardStep AdditionalProps = new MaterialResponse.WizardStep()
                {
                    StepNo   = StepNo,
                    StepName = "Additional Properties"
                };
                Response.Data.Steps.Add(AdditionalProps);
                StepNo++;

                #region Alert wizard to active modules

                bool ContainersEnabled = NbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.Containers);
                if (ContainersEnabled)
                {
                    bool CanSize = false;
                    CswNbtMetaDataObjectClass SizeOC = NbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.SizeClass);
                    foreach (CswNbtMetaDataNodeType SizeNT in SizeOC.getNodeTypes())
                    {
                        if (NbtResources.Permit.canNodeType(CswEnumNbtNodeTypePermission.Create, SizeNT))
                        {
                            CanSize = true;
                        }
                    }
                    if (CanSize)
                    {
                        MaterialResponse.WizardStep Sizes = new MaterialResponse.WizardStep()
                        {
                            StepNo   = StepNo,
                            StepName = "Size(s)"
                        };
                        Response.Data.Steps.Add(Sizes);
                        Response.Data.ContainerLimit = CswConvert.ToInt32(NbtResources.ConfigVbls.getConfigVariableValue(CswEnumNbtConfigurationVariables.container_receipt_limit.ToString()));
                        StepNo++;
                    }
                    else
                    {
                        ContainersEnabled = false;
                    }
                }
                Response.Data.ContainersModuleEnabled = ContainersEnabled;

                bool SDSEnabled = NbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.SDS);
                if (SDSEnabled)
                {
                    MaterialResponse.WizardStep AttachSDS = new MaterialResponse.WizardStep()
                    {
                        StepNo   = StepNo,
                        StepName = "Attach SDS"
                    };
                    Response.Data.Steps.Add(AttachSDS);

                    // Permission is a separate check now because we still want to show the Attach SDS step
                    // even if the User doesn't have permission. If they don't have permission, we display
                    // a message on the client.
                    CswNbtMetaDataNodeType SDSNT = NbtResources.MetaData.getNodeType("SDS Document");
                    Response.Data.addSDSPermission = null != SDSNT && NbtResources.Permit.canNodeType(CswEnumNbtNodeTypePermission.Create, SDSNT);
                }
                Response.Data.SDSModuleEnabled = SDSEnabled;

                #endregion Alert wizard to active modules

                // Get the ChemicalObjClassId
                CswNbtMetaDataObjectClass ChemicalOC = NbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ChemicalClass);
                Response.Data.ChemicalObjClassId = CswConvert.ToString(ChemicalOC.ObjectClassId);

                // Determine Constituent NodeTypes
                CswCommaDelimitedString ConstituentNodeTypeIds = new CswCommaDelimitedString();
                foreach (CswNbtMetaDataNodeType ChemicalNT in ChemicalOC.getNodeTypes())
                {
                    CswNbtMetaDataNodeTypeProp IsConstituentNTP = ChemicalNT.getNodeTypePropByObjectClassProp(CswNbtObjClassChemical.PropertyName.IsConstituent);
                    // Yes this is a weird way to know whether a nodetype is a Constituent nodetype,
                    // but as long as this property remains servermanaged, this will work
                    if (IsConstituentNTP.HasDefaultValue() &&
                        CswEnumTristate.True == IsConstituentNTP.getDefaultValue(false).AsLogical.Checked)
                    {
                        ConstituentNodeTypeIds.Add(ChemicalNT.NodeTypeId.ToString());
                    }
                }
                Response.Data.ConstituentNodeTypeIds = ConstituentNodeTypeIds.ToString();
            }
        }