diff --git a/js/lattice/Lattice.js b/js/lattice/Lattice.js index 410ce53f4270ddda4d4c601951b02f9b0254f1a8..3dff20a136a3341e7e12aa63c50017839f8387ab 100644 --- a/js/lattice/Lattice.js +++ b/js/lattice/Lattice.js @@ -15,6 +15,7 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre cellType: "cube", connectionType: "gik", + latticeType: "willGik", partType: null, denseCellsMin: null, @@ -28,7 +29,8 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre __initialize: function(){ - this.listenTo(this, "change:partType", this._updatePartType); + //todo change latticeType + this.listenTo(this, "change:partType change:latticeType", this._updatePartType); this.listenTo(this, "change:cellType change:connectionType", function(){ this._updateLatticeType();//pass no params }); @@ -53,17 +55,35 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre _setToDefaultsSilently: function(){ var newCellType = this.get("cellType"); var newConnectionType = this.get("connectionType"); + if (newConnectionType == this.previous("connectionType")){ - newConnectionType = _.keys(plist["allConnectionTypes"][newCellType])[0]; + newConnectionType = _.keys(plist.allLattices[newCellType].connection)[0]; this.set("connectionType", newConnectionType, {silent:true}); } - var partType = _.keys(plist["allPartTypes"][newCellType][newConnectionType])[0]; - this.set("partType", partType, {silent:true}); - appState.set("materialClass", plist.allMaterialTypes[newCellType][newConnectionType]); + + var newLatticeType = this.get("latticeType"); + if (newLatticeType === this.previous("latticeType")){ + newLatticeType = _.keys(plist.allLattices[newCellType].connection[newConnectionType].type)[0]; + this.set("latticeType", newLatticeType, {silent:true}); + } + + var latticeData = this._getLatticePlistData(); + + var newPartType = null; + if (latticeData.parts) newPartType = _.keys(latticeData.parts)[0]; + this.set("partType", newPartType, {silent:true}); + + var newMaterialClass = (latticeData.materialClasses || plist.allMaterialClasses)[0]; + appState.set("materialClass", newMaterialClass); + }, + + _getLatticePlistData: function(){ + return plist.allLattices[this.get("cellType")].connection[this.get("connectionType")].type[this.get("latticeType")]; }, _setDefaultCellMode: function(){//if no part associated with this lattice type - if (!plist["allPartTypes"][this.get("cellType")][this.get("connectionType")]){ + var latticeData = this._getLatticePlistData(); + if (latticeData.parts === null){ var currentMode = appState.get("cellMode"); if (currentMode == "cell" || currentMode == "supercell") return; appState.set("cellMode", "cell"); @@ -73,7 +93,7 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre _getSubclassForLatticeType: function(){ var cellType = this.get("cellType"); var connectionType = this.get("connectionType"); - var subclass = plist.allLatticeSubclasses[cellType][connectionType]; + var subclass = plist.allLattices[cellType].connection[connectionType].subclass; if (subclass === undefined){ console.warn("unrecognized cell type " + cellType); return null; diff --git a/js/menus/templates/LatticeMenuView.html b/js/menus/templates/LatticeMenuView.html index 9b3c6d2430c7782a99a99cb1ff022b2361d23dd7..6e218f2ab529a617771fa7b261c9d122d345054a 100644 --- a/js/menus/templates/LatticeMenuView.html +++ b/js/menus/templates/LatticeMenuView.html @@ -1,18 +1,27 @@ Cell Type: <div class="btn-group"> - <button data-toggle="dropdown" class="btn dropdown-toggle" type="button"><%= allCellTypes[cellType] %><span class="caret"></span></button> + <button data-toggle="dropdown" class="btn dropdown-toggle" type="button"><%= allLattices[cellType].name %><span class="caret"></span></button> <ul role="menu" class="dropdown-menu"> - <% _.each(_.keys(allCellTypes), function(key){ %> - <li><a class="lattice dropdownSelector" data-property="cellType" data-value="<%= key %>" href="#"><%= allCellTypes[key] %></a></li> + <% _.each(allLattices, function(cellTypeData, key){ %> + <li><a class="lattice dropdownSelector" data-property="cellType" data-value="<%= key %>" href="#"><%= cellTypeData.name %></a></li> <% }); %> </ul> </div><br/><br/> Cell Connection: <div class="btn-group"> - <button data-toggle="dropdown" class="btn dropdown-toggle" type="button"><%= allConnectionTypes[cellType][connectionType] %>-Connected<span class="caret"></span></button> + <button data-toggle="dropdown" class="btn dropdown-toggle" type="button"><%= allLattices[cellType].connection[connectionType].name %>-Connected<span class="caret"></span></button> <ul role="menu" class="dropdown-menu"> - <% _.each(_.keys(allConnectionTypes[cellType]), function(key){ %> - <li><a class="lattice dropdownSelector" data-property="connectionType" data-value="<%= key %>" href="#"><%= allConnectionTypes[cellType][key] %></a></li> + <% _.each(allLattices[cellType].connection, function(connectionTypeData, key){ %> + <li><a class="lattice dropdownSelector" data-property="connectionType" data-value="<%= key %>" href="#"><%= connectionTypeData.name %></a></li> + <% }); %> + </ul> + </div><br/><br/> +Type: + <div class="btn-group"> + <button data-toggle="dropdown" class="btn dropdown-toggle" type="button"><%= allLattices[cellType].connection[connectionType].type[latticeType].name %><span class="caret"></span></button> + <ul role="menu" class="dropdown-menu"> + <% _.each(allLattices[cellType].connection[connectionType].type, function(latticeTypeData, key){ %> + <li><a class="lattice dropdownSelector" data-property="latticeType" data-value="<%= key %>" href="#"><%= latticeTypeData.name %></a></li> <% }); %> </ul> </div><br/><br/> diff --git a/js/menus/templates/MenuWrapperView.html b/js/menus/templates/MenuWrapperView.html index a95e01baab382276977edd6015f61531a62de18c..2ce0aa289e4cedfcc33720560e0f12c558207307 100644 --- a/js/menus/templates/MenuWrapperView.html +++ b/js/menus/templates/MenuWrapperView.html @@ -1,6 +1,6 @@ <ul class="nav nav-tabs nav-justified"> <% _.each(allMenus[currentNav].tabs, function(tabName, key){ - if (key == "part" && !(allPartTypes[cellType][connectionType])) return; %> + if (key == "part" && allLattices[cellType].connection[connectionType].type[latticeType].parts === null) return; %> <li role="presentation" class="menuWrapperTab" data-name="<%= key %>"><a href="#"><%= tabName %></a></li> <% }); %> </ul> \ No newline at end of file diff --git a/js/menus/templates/Ribbon.html b/js/menus/templates/Ribbon.html index af3b1b241f52c2782d1a6d89ccbd6b419513965e..ae57ffba2782da88c22506e7a1926f86946afa99 100644 --- a/js/menus/templates/Ribbon.html +++ b/js/menus/templates/Ribbon.html @@ -3,7 +3,7 @@ <div class="btn-group"> <a data-type="supercell" class="btn btn-primary btn-ribbon ribbonCellMode<% if (cellMode == "supercell"){ %> ribbon-selected<% } %>" href="#"><img data-type="supercell" src="assets/imgs/super-sm.png"></a> <a data-type="cell" class="btn btn-primary btn-ribbon ribbonCellMode<% if (cellMode == "cell"){ %> ribbon-selected<% } %>" href="#"><img data-type="cell" src="assets/imgs/cell-sm.png"></a> - <% if (allPartTypes[cellType][connectionType]){ %> + <% if (allLattices[cellType].connection[connectionType].type[latticeType].parts){ %> <a data-type="part" class="btn btn-primary btn-ribbon ribbonCellMode<% if (cellMode == "part"){ %> ribbon-selected<% } %>" href="#"><img data-type="part" src="assets/imgs/part-sm.png"></a> <% } %> <!--<a data-type="beam" class="btn btn-primary btn-ribbon ribbonCellMode<% if (cellMode == "beam"){ %> ribbon-selected<% } %>" href="#">Beam</a>-->