* limitations under the License.\r
  */\r
 var vm = avalon.define({\r
-    $id: "tmDetailController",\r
-    templateId: "",\r
-    templateData: [\r
+    $id : "tmDetailController",\r
+    templateId : "",\r
+    globalNodesData: {},\r
+    templateData : [\r
         {href: "#topology", name: "Topology", value: true},\r
         {href: "#nodes", name: "Nodes", value: false}\r
     ],\r
             success: function (resp) {\r
                 if (resp) {\r
                     vm.nodesTab.nodesDetail.nodesTemplateDetailData = [];\r
+                    var nodesTempData = [];\r
                     for (var i = 0; i < resp.length; i++) {\r
                         //generate node table display data\r
                         var nodeTemplate = topoUtil.generateNodeTemplate(resp[i]);\r
-                        vm.nodesTab.nodesList.nodesData.push(nodeTemplate);\r
+                        nodesTempData.push(nodeTemplate);\r
                     }\r
+                    vm.globalNodesData[vm.templateId] = nodesTempData;\r
                     vm.nodesTab.nodesDetail.nodesTemplateDetailData = resp;\r
                     //generate topology graph display data\r
-                    vm.topologyTab.topoTemplateData = topoUtil.generateTopoTemplate(vm.nodesTab.nodesList.nodesData.$model);\r
+                    vm.topologyTab.topoTemplateData = topoUtil.generateTopoTemplate(vm.globalNodesData[vm.templateId]);\r
                     //initialize topology data\r
                     topoUtil.initTopoData(vm.topologyTab.topoTemplateData.$model);\r
                     //vm.nodesTab.nodesList.$initNodesTable();\r
             }\r
         });\r
     },\r
-    $initNodesData: function () {\r
-        $.ajax({\r
-            type: "GET",\r
-            url: vm.$restUrl.queryNodeTemplateUrl,\r
-            success: function (resp) {\r
-                if (resp) {\r
-                    vm.nodesTab.nodesDetail.nodesTemplateDetailData = [];\r
-                    for (var i = 0; i < resp.length; i++) {\r
-                        //generate node table display data\r
-                        var nodeTemplate = topoUtil.generateNodeTemplate(resp[i]);\r
-                        vm.nodesTab.nodesList.nodesData.push(nodeTemplate);\r
-                    }\r
-                    vm.nodesTab.nodesDetail.nodesTemplateDetailData = resp;\r
-                    //generate topology graph display data\r
-                    //vm.topologyTab.topoTemplateData = topoUtil.generateTopoTemplate(vm.nodesTab.nodesList.nodesData.$model);\r
-                    //initialize topology data\r
-                    //topoUtil.initTopoData(vm.topologyTab.topoTemplateData.$model);\r
-                    vm.nodesTab.nodesList.$initNodesTable();\r
-                }\r
-            },\r
-            error: function () {\r
-                commonUtil.showMessage($.i18n.prop("nfv-topology-iui-message-error"), "danger");\r
-            }\r
-        });\r
-    },\r
     topologyTab: {\r
         topology: "topology.html",\r
         vnfTip: $.i18n.prop("nfv-topology-iui-vnf-tip"),\r
                 {"mData": "version", name: $.i18n.prop("nfv-template-iui-field-version")},\r
                 {"mData": "csarid", name: "packageID", "bVisible": false},\r
                 {"mData": "type", name: $.i18n.prop("nfv-template-iui-field-type")},\r
-                //{"mData": "inputs", name: $.i18n.prop("nfv-template-iui-field-inputs"),"fnRender" : tmDetailUtil.inputsRender},\r
-                //{"mData": "outputs", name: $.i18n.prop("nfv-template-iui-field-outputs"),"fnRender" : tmDetailUtil.outputsRender},\r
-                //{"mData": "operations", name: $.i18n.prop("nfv-template-iui-field-operations")}\r
             ]\r
         },\r
         $initNfvNodesTab: function () {\r
                     tr.removeClass('shown');\r
                 }\r
                 else {\r
-                    table.fnOpen(tr[0], vm.nodesTab.nodesList.$format_Detail(), 'details');\r
+                    table.fnOpen(tr[0], vm.nodesTab.nodesList.$format_Detail(table,tr[0]), 'details');\r
                     tr.addClass('shown');\r
                 }\r
             });\r
         },\r
-\r
+        $initNodesData: function (tempId) {\r
+            $.ajax({\r
+                type: "GET",\r
+                //url: vm.$restUrl.queryNodeTemplateUrl,\r
+                url: "/openoapi/catalog/v1/servicetemplates/" + tempId + "/nodetemplates",\r
+                success: function (resp) {\r
+                    if (resp) {\r
+                        vm.nodesTab.nodesDetail.templatesNodesDetailData[tempId] = [];\r
+                        var nodesTempData = [];\r
+                        for (var i = 0; i < resp.length; i++) {\r
+                            //generate node table display data\r
+                            var nodeTemplate = topoUtil.generateNodeTemplate(resp[i]);\r
+                            nodesTempData.push(nodeTemplate);\r
+                        }\r
+                        vm.nodesTab.nodesList.nodesData[tempId] = nodesTempData;\r
+                        vm.nodesTab.nodesDetail.templatesNodesDetailData[tempId] = resp;\r
+                        //generate topology graph display data\r
+                        //vm.topologyTab.topoTemplateData = topoUtil.generateTopoTemplate(vm.nodesTab.nodesList.nodesData.$model);\r
+                        //initialize topology data\r
+                        //topoUtil.initTopoData(vm.topologyTab.topoTemplateData.$model);\r
+                        vm.nodesTab.nodesList.$initNodesTable(tempId);\r
+                    }\r
+                },\r
+                error: function () {\r
+                    commonUtil.showMessage($.i18n.prop("nfv-topology-iui-message-error"), "danger");\r
+                }\r
+            });\r
+        },\r
         //nodes list table\r
         nodesList: {\r
-            nodesData: [],\r
+            nodesData: {},\r
+            tempId:"",\r
             $nodesTabDataId: "ict_nodes_table",\r
             $nodesTabFields: {// table columns\r
                 table: [\r
                     }\r
                 ]\r
             },\r
-            $initNodesTable: function () {\r
+            $initNodesTable: function (tempId) {\r
                 var setting = {};\r
                 setting.language = vm.$language;\r
                 setting.paginate = true;\r
                 setting.info = true;\r
                 //setting.sort = true;\r
                 setting.columns = vm.nodesTab.nodesList.$nodesTabFields.table;\r
-                setting.restUrl = vm.$restUrl.queryNodeTemplateUrl;\r
-                setting.tableId = vm.nodesTab.nodesList.$nodesTabDataId;\r
+                setting.restUrl = "/openoapi/catalog/v1/servicetemplates/" + tempId + "/nodetemplates";\r
+                setting.tableId = vm.nodesTab.nodesList.$nodesTabDataId + "_" + tempId;\r
                 //serverPageTable.initTableWithData(setting,vm.nodesTab.nodesList.$nodesTabDataId + '_div',vm.nodesTab.nodesList.nodesData.$model);\r
-                serverPageTable.initTableWithoutLib(setting, {}, vm.nodesTab.nodesList.$nodesTabDataId + '_div');\r
+                serverPageTable.initTableWithoutLib(setting, {}, setting.tableId + '_div');\r
             },\r
-            $format_Detail: function () {\r
-                var sOut = '<div class="row-fluid" data-name="table_zone"><div class="col-xs-12" id="ict_nodes_table_div"></div></div>'\r
-                vm.$initNodesData();\r
+            $format_Detail: function (oTable, nTr) {\r
+                var aData = oTable.fnGetData(nTr);\r
+                var tempId = aData.serviceTemplateId;\r
+                vm.nodesTab.nodesList.tempId = tempId;\r
+                var tableId = "ict_nodes_table" + "_" + tempId + "_div";\r
+                var sOut = '<div class="row-fluid" data-name="table_zone"><div class="col-xs-12" id="'+tableId+'"></div></div>'\r
+                vm.nodesTab.$initNodesData(tempId);\r
                 return sOut;\r
             },\r
         },\r
         //Nodes Details\r
         nodesDetail: {\r
             nodesTemplateDetailData: [],\r
+            templatesNodesDetailData:[],\r
             detailTitle: "",\r
             isShow: "none",\r
             detailIndex: 0,\r
                     isActive: false\r
                 }\r
             ],\r
-            $showDetails: function (isShow, nodetypeid, nodetypename) {\r
+            $showDetails: function (isShow, nodetypeid, nodetypename,tempId) {\r
                 vm.nodesTab.nodesDetail.isShow = isShow;\r
                 if (isShow == "block") {\r
                     vm.nodesTab.nodesDetail.detailTitle = nodetypename + " " + $.i18n.prop("nfv-templateDetail-nodesTab-iui-title-nodeDetail"),\r
                         $('#' + vm.nodesTab.nodesDetail.detailData[0].id).click();\r
                     vm.nodesTab.nodesDetail.detailData[0].isActive = true;\r
-                    vm.nodesTab.nodesDetail.$initNodeDetailTable(nodetypeid);\r
+                    vm.nodesTab.nodesDetail.$initNodeDetailTable(nodetypeid,tempId);\r
                 }\r
             },\r
             detailCondChange: function (index) {\r
                 }\r
                 vm.nodesTab.nodesDetail.detailData[index].isActive = true;\r
             },\r
-            $tableFields: {// table columns\r
+            $tableFields : {// table columns\r
                 general: [\r
                     {\r
                         "mData": "key",\r
                     }\r
                 ]\r
             },\r
-            $initNodeDetailTable: function (nodetemplateid) {\r
-                var data = topoUtil.getCurrentDetailData(vm.nodesTab.nodesDetail.nodesTemplateDetailData.$model, nodetemplateid);\r
+            $initNodeDetailTable: function (nodetemplateid,tempId) {\r
+                var data = topoUtil.getCurrentDetailData(vm.nodesTab.nodesList.nodesData[tempId], nodetemplateid);\r
                 //initialize three tables of nodedetail\r
                 $.each(vm.nodesTab.nodesDetail.$tableFields, function (key, value) {\r
                     var setting = {};\r