- <script type="text/javascript">
- <!--
- var userGroup;
- var CanAddDeleteComponent;
-
-
- var setting = {
- // async: {
- // enable: true,
- // url: '<%= Url.Action("GetTree") %>',
- // autoParam: ["id", "pId", "name=n", "level=lv"],
- // otherParam: { "productId": '1' }
- //// otherParam: { "otherParam": "zTreeAsyncTest" },
- //// dataFilter: filter
- // },
- view: {
- addHoverDom: addHoverDom,
- removeHoverDom: removeHoverDom,
- selectedMulti: false
- },
- // check: {
- // enable: true
- // },
- edit: {
- enable: true,
- editNameSelectAll: true,
- //showRenameBtn: setRenameBtn,
- showRenameBtn: false,
- showRemoveBtn: setRemoveBtn
- },
- data: {
- simpleData: {
- enable: true
- }
- },
- callback: {
- beforeDrag: beforeDrag,
- beforeEditName: beforeEditName,
- beforeRemove: beforeRemove,
- beforeRename: beforeRename,
- onRemove: onRemove,
- onRename: onRename
- }
- };
-
-
- // var zNodes = [
- // { id: 1, pId: 0, name: "Parent Node 1", open: true },
- // { id: 11, pId: 1, name: "2nd Level 1-1", open: true },
- // { id: 111, pId: 11, name: "3nd Level 1-1-1" },
- // { id: 112, pId: 11, name: "3nd Level 1-1-2" },
- // { id: 12, pId: 1, name: "2nd Level 1-2" },
- // { id: 121, pId: 12, name: "3nd Level 1-1-1" },
- // { id: 122, pId: 12, name: "3nd Level 1-1-2" },
- // { id: 13, pId: 1, name: "2nd Level 1-3" }
- // ];
-
-
- function filter(treeId, parentNode, childNodes) {
- if (!childNodes) return null;
- for (var i = 0, l = childNodes.length; i < l; i++) {
- childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');
- }
- return childNodes;
- }
-
-
- var log, className = "dark";
- function beforeDrag(treeId, treeNodes) {
- return false;
- }
- function beforeEditName(treeId, treeNode) {
- className = (className === "dark" ? "":"dark");
- showLog("[ "+getTime()+" beforeEditName ] " + treeNode.name);
- var zTree = $.fn.zTree.getZTreeObj("treeDemo");
- zTree.selectNode(treeNode);
- return confirm("Edit Node -- " + treeNode.name + "?");
- }
-
-
- function beforeRemove(treeId, treeNode) {
- className = (className === "dark" ? "" : "dark");
- showLog("[ " + getTime() + " beforeRemove ] " + treeNode.name);
- var zTree = $.fn.zTree.getZTreeObj("treeDemo");
- zTree.selectNode(treeNode);
- //confirm("Are you sure to DELETE node -- " + treeNode.name + " ?")
-
-
- var canDelete;
- $.ajax({
- url: '<%=Url.Action("CanDeleteTreeNode")%>',
- type: 'POST',
- async: false,
- data: { productId: $('#ProductsDropDownList').val(), treenodeId: treeNode.id },
- success: function (data) {
- if (data == "0") {
- alert("Node is NOT allowed to delete since there is product definition for the node.");
- canDelete=false;
- } else {
- canDelete = true;
- }
- }
- });
-
-
- return canDelete;
- }
-
-
- function onRemove(e, treeId, treeNode) {
- showLog("[ " + getTime() + " onRemove ] " + treeNode.name);
- }
- function beforeRename(treeId, treeNode, newName) {
- className = (className === "dark" ? "" : "dark");
- showLog("[ " + getTime() + " beforeRename ] " + treeNode.name);
- if (newName.length == 0) {
- alert("Name cannot be blank.");
- var zTree = $.fn.zTree.getZTreeObj("treeDemo");
- setTimeout(function () { zTree.editName(treeNode) }, 10);
- return false;
- }
- return true;
- }
- function onRename(e, treeId, treeNode) {
- showLog("[ " + getTime() + " onRename ] " + treeNode.name);
- }
- function showLog(str) {
- if (!log) log = $("#log");
- log.append("<li class='" + className + "'>" + str + "</li>");
- if (log.children("li").length > 8) {
- log.get(0).removeChild(log.children("li")[0]);
- }
- }
- function getTime() {
- var now = new Date(),
- h = now.getHours(),
- m = now.getMinutes(),
- s = now.getSeconds(),
- ms = now.getMilliseconds();
- return (h + ":" + m + ":" + s + " " + ms);
- }
-
-
- var newCount = 1;
- function addHoverDom(treeId, treeNode) {
- if (treeNode.level == 1) {
- if (CanAddDeleteComponent == "True") {
- var sObj = $("#" + treeNode.tId + "_span");
- if (treeNode.editNameFlag || $("#addBtn_" + treeNode.id).length > 0) return;
- var addStr = "<span class='button add' id='addBtn_" + treeNode.id
- + "' title='add node' onfocus='this.blur();'></span>";
- sObj.after(addStr);
- var btn = $("#addBtn_" + treeNode.id);
- if (btn) btn.bind("click", function () {
- //$("#lbl_ParentName").innerText = treeNode.name;
- $("#MarketsDropDownListNew").attr("value", $("#MarketsDropDownList").val());
-
-
- $("#NewDialog").dialog({
- resizable: false,
- width: 500,
- modal: true,
- buttons: {
- "Confirm": function () {
-
-
- if ($("#txt_NewNodeName").val() == "") {
- alert("Please input the New Node Name.");
- } else {
- var adddedname = $("#txt_NewNodeName").val();
- var newTree = $.fn.zTree.getZTreeObj("treeDemo");
-
-
- var Nodes = newTree.getNodes();
- var act = newTree.transformToArray(Nodes);
-
-
- for (var i = 0; i < act.length; i++) {
-
-
- if (act[i].name == adddedname)
- { alert('duplicate node name!'); return false; }
- }
-
-
-
-
- if ($("#MarketsDropDownListNew").val() != $("#MarketsDropDownList").val() && $("#MarketsDropDownListNew").val() != "General") {
-
-
- $.ajax({
- url: '<%=Url.Action("AddNewComponent")%>',
- type: 'POST',
- async: false,
- data: 'productId=' + $('#ProductsDropDownList').val() + '&marketName=' + $("#MarketsDropDownListNew").val() + '&id=' + RndNum(8) + '&pId=' + treeNode.id + '&name=' + $("#txt_NewNodeName").val() + '&brandname=' + $("#txt_brand").val() + '&productname=' + $("#HiddenTXTProduct").val(),
- success: function (data) {
- if (data == "fail") {
- alert("Adding component failed!");
- }
- else if (data == "isnew") {
- alert("Please save first for this is a new brand or product!");
- }
- else if (data == "exist") {
- alert("The component has already exsited!");
- }
- }
- });
-
-
- } else {
- newCount++;
- var zTree = $.fn.zTree.getZTreeObj("treeDemo");
- if ($("#chk_OwnProduct").is(':checked')) {
- //zTree.addNodes(treeNode, { id: (100 + newCount), pId: treeNode.id, name: $("#txt_NewNodeName").val(), marketName: $("#MarketsDropDownListNew").val() });
- zTree.addNodes(treeNode, { id: RndNum(8), pId: treeNode.id, name: GetNodeName($("#txt_NewNodeName").val(), $("#MarketsDropDownListNew").val()), marketName: $("#MarketsDropDownListNew").val() });
- // zTree.addNodes(treeNode, { id: (100 + newCount), pId: treeNode.id, name: "new node" + (newCount++), marketName: $("#MarketsDropDownListNew").val() });
- } else {
- zTree.addNodes(treeNode, { id: RndNum(8), pId: treeNode.id, name: $("#txt_NewNodeName").val(), marketName: "General" });
- }
-
-
- $("#txt_NewNodeName").attr("value", '');
- // $(this).dialog("close");
- // return false;
- }
- $(this).dialog("close");
- return false;
- }
- },
- Cancel: function () {
- $(this).dialog("close");
- }
- }
- });
- });
- }
- }
- };
- function removeHoverDom(treeId, treeNode) {
- $("#addBtn_" + treeNode.id).unbind().remove();
- };
- function selectAll() {
- var zTree = $.fn.zTree.getZTreeObj("treeDemo");
- zTree.setting.edit.editNameSelectAll = $("#selectAll").attr("checked");
- }
-
-
- $(document).ready(function () {
- userGroup = $('#HIddenUsergroup').val();
- //$("#CanAddDeleteComponent").attr("value", '<%=ViewBag.AddDeleteLocalComponent %>');
- CanAddDeleteComponent = '<%=ViewBag.AddDeleteLocalComponent %>';
- // $.fn.zTree.init($("#treeDemo"), setting, zNodes);
- // $.fn.zTree.init($("#treeDemo"), setting);
- // $("#selectAll").bind("click", selectAll);
- });
-
-
- function setRemoveBtn(treeId, treeNode) {
- // return !treeNode.isParent;
- var showButton = false;
- if (treeNode.level == 2) {
- showButton = true;
- }else{
- showButton = false;
- }
- //show button for admin
- if (treeNode.level == 2) {
- if (userGroup != "SuperUser" && treeNode.marketName == "General") {
- showButton = false;
- }
-
-
- if (CanAddDeleteComponent != "True") {
- showButton = false;
- }
- }
-
-
- return showButton;
- }
-
-
- function setRenameBtn(treeId, treeNode) {
- //return !treeNode.isParent;
- var showButton = false;
- if (treeNode.level == 2) {
- showButton = true;
- }else{
- showButton = false;
- }
- //show button for admin
- if (treeNode.level == 2) {
- if (userGroup != "SuperUser" && treeNode.marketName == "General") {
- return false;
- }
- }
-
-
- return showButton;
- }
-
-
-
-
- function GetNodeRandomId() {
- var date = new Date();
- var times1970 = date.getTime();
- var NodeRandomId = parseInt(date.getDate() + date.getHours() + date.getMinutes() + date.getSeconds());
- return RndNum(4);
- }
-
-
- function RndNum(n) {
- var rnd = "";
- for (var i = 0; i < n; i++)
- rnd += Math.floor(Math.random() * 10);
- return rnd;
- }
-
-
- function GetNodeName(name, marketname) {
- if (marketname == "General") {
- return name
- }
- return name + '(' + marketname + ')'
- }
- //-->
- </script>
- <script type="text/javascript">
- $("#SaveTree").click(function () {
-
-
- //var IsNewProduct = false;
- if ($('#txt_brand').val() == "") {
- alert("Please enter brand for the product.");
- return false;
- }
-
-
- if ($("#txt_product").val() == "") {
- alert("Please enter product for the brand.");
- return false;
- }
-
-
- var newTree = $.fn.zTree.getZTreeObj("treeDemo");
- if (newTree==null) {
- alert("Please click New first.");
- return false;
- }
- var Nodes = newTree.getNodes();
- var act = newTree.transformToArray(Nodes);
-
-
- var postdata = new Array();
-
-
- for (var i = 0; i < act.length; i++) {
- if (!act[i].pId && typeof (act[i].pId) != "undefined") {
- act[i].pId = 0;
- }
-
-
- postdata[i] = { id: act[i].id, pId: act[i].pId, name: act[i].name, level: act[i].level, marketName: act[i].marketName };
- }
-
-
- var postData = $.toJSON(postdata);
- $("#HiddenTreeInfo_Json").attr("value", postData);
-
-
- // $.ajax({
- // url: '<%= Url.Action("SaveTree") %>',
- // type: 'POST',
- // // dataType: 'json',
- // data: 'TreeNodes=' + postData,
- // success: function (data) {
- // alert(data.Msg);
- // }
- // });
-
-
- $(document.forms[0]).ajaxSubmit({
- url: '<%= Url.Action("SaveTree")%>',
- success: function (data) {
- alert(data.Msg);
- if (data.Result == "1") {
- $(document.forms[0]).submit();
- }
- }
- });
- });
- </script>
- [HttpPost]
- public JsonResult SaveTree(ComponentIndexModel model, string TreeNodes)
- {
-
-
- try
- {
- string brandname = model.TXTbrand;
- int productId;
-
-
- ComponentManageProxy component = new ComponentManageProxy();
- IBrandRepository<BrandRow> _BrandRepository = new BrandRepository<BrandRow>();
- BrandRow row = _BrandRepository.GetBrandByName(brandname);
-
-
- if (row == null)
- {
-
-
- row = new BrandRow();
-
-
- row.BrandName = brandname;
-
-
- row.UniqueID = Guid.NewGuid();
- row.BrandType = model.ProductType ? 1 : 0;
-
-
- _BrandRepository.AddBrand(row);
-
-
- }
-
-
-
-
- ProductRepository<ProductRow> _ProductRepository = new ProductRepository<ProductRow>();
-
-
- if (model.hidden_product != null)
- {
- ProductRow _row = _ProductRepository.GetProductByName(model.hidden_product);
- if (_row == null)
- {
- _row = new ProductRow();
- _row.UniqueID = Guid.NewGuid();
- _row.ProductName = model.hidden_product;
- _row.ComponentTreeID = Guid.NewGuid();
- _row.BrandName = brandname;
- _ProductRepository.AddProduct(_row);
- _row = _ProductRepository.GetProductByUniqueID(_row.UniqueID);
-
-
- productId = _row.ID;
- }
- else
- {
- //productId = int.Parse(model.Product);
- productId = _row.ID;
- if (productId.ToString() != model.Product)
- {
- return Json(new
- {
- Msg = "The product is already exsit.",
- Result = "2",
- });
- }
- }
- }
- else
- {
- productId = int.Parse(model.Product);
- }
-
-
- //component.DeleteTree(productId);
-
-
- ProductManage Producttarget = new ProductManage(_ProductRepository);
- ProductRow _Product = _ProductRepository.GetProductByID(productId);
- //component.GetAllComponentNodes(_Product.ComponentTreeID);
-
-
- IComponentRepository<ComponentRowwithMultipleLCA> _ComponentBackupRepo = new ComponentRepository<ComponentRowwithMultipleLCA>();
- IComponentTreeNodeRepository<ComponentTree> _NodeBackupRepo = new ComponentTreeNodeRepository<ComponentTree>();
- IComponentTreeNodeCompoundRepository<ComponentTreeCompound> _TreeBackupRepo = new ComponentTreeCompoundRepository<ComponentTreeCompound>();
-
-
-
-
- IList<ComponentTreeCompound> _TreeBackupList = _TreeBackupRepo.GetAllComponentNodes(_Product.ComponentTreeID);
- JavaScriptSerializer jss = new JavaScriptSerializer();
- List<array> nodelist = new List<array>();
- IList<ComponentTreeCompound> _MarketSpecificNodeList;
- if (model.Market == "General") _MarketSpecificNodeList = _TreeBackupList.Where(x => (x.Level == 3 && x.MarketName != "General" && (x.Name != null && x.Name != String.Empty))).ToList();
- else _MarketSpecificNodeList = _TreeBackupList.Where(x => (x.Level == 3 && (x.MarketName != "General" && x.MarketName != model.Market && (x.Name != null && x.Name != String.Empty)))).ToList();
-
-
- //nodelist = jss.Deserialize(TreeNodes, typeof(List<array>)) as List<array>;
- nodelist = jss.Deserialize(model.TreeInfo_Json, typeof(List<array>)) as List<array>;
-
-
- foreach (var node in nodelist)
- {
-
-
- if (_TreeBackupList.Count == 0)
- {
- //if (node.level == 2)
- //{
- //inserttodb()
- ComponentRowwithMultipleLCA componentRow = new ComponentRowwithMultipleLCA();
-
-
- componentRow.UniqueID = Guid.NewGuid();
- componentRow.AssignedID = node.id;
- componentRow.ComponentName = GetNameWithoutMarket(node.name);
- componentRow.MarketName = (node.marketName == null || node.marketName == "") ? "General" : node.marketName;
- if (node.level == 0) { componentRow.Description = "root"; }
-
-
- //component.AddComponentTreeNode(componentRow, _ParentUniqueID, _RootID, level);
- component.AddCompoment(componentRow, productId, node.pId, node.level + 1);
- }
- else
- {
- if (node.level != 2)
- {
- if (node.level == 1)
- {
-
-
- IList<ComponentTreeCompound> _nodeEnum = _MarketSpecificNodeList.Where(i => (i.PId == node.id && i.RootID == _Product.ComponentTreeID)).ToList();
- foreach (ComponentTreeCompound o in _nodeEnum)
- {
- ComponentTreeCompound obj1 = o;
- //UpdateModel;
- ComponentRowwithMultipleLCA __row = _ComponentBackupRepo.FindComponentByUniqueID(obj1.UniqueID);
- __row.ComponentName = node.name;
- //_ComponentBackupRepo.UpdateComponent(__row);
- _MarketSpecificNodeList.Remove(obj1);
- ComponentTreeCompound _MarketSpecificnode = _TreeBackupList.First(i => (i.Sid == obj1.Sid && i.RootID == _Product.ComponentTreeID));
- _TreeBackupList.Remove(_MarketSpecificnode);
-
-
- }
- }
- ComponentTreeCompound _node = _TreeBackupList.First(i => (i.Sid == node.id && i.RootID == _Product.ComponentTreeID));
- _TreeBackupList.Remove(_node);
- }
- if (node.level == 2)
- {
- IList<ComponentTreeCompound> _nodeEnum = _TreeBackupList.Where(i => (i.Sid == node.id && i.RootID == _Product.ComponentTreeID)).ToList();
- if (_nodeEnum.Count >= 1)
- {
- ComponentTreeCompound obj1 = _nodeEnum.First();
- //UpdateModel;
- ComponentRowwithMultipleLCA __row = _ComponentBackupRepo.FindComponentByUniqueID(obj1.UniqueID);
- __row.ComponentName = node.name;
- //_ComponentBackupRepo.UpdateComponent(__row);
- _TreeBackupList.Remove(obj1);
- }
-
-
- else
- {
- ComponentRowwithMultipleLCA componentRow = new ComponentRowwithMultipleLCA();
-
-
- componentRow.UniqueID = Guid.NewGuid();
- componentRow.AssignedID = node.id;
- componentRow.ComponentName = GetNameWithoutMarket(node.name);
- componentRow.MarketName = (node.marketName == null || node.marketName == "") ? "General" : node.marketName;
- if (node.level == 0) { componentRow.Description = "root"; }
-
-
- component.AddCompoment(componentRow, productId, node.pId, node.level + 1);
- }
- }
- }
-
-
-
-
- }
-
-
-
-
-
-
-
-
- foreach (ComponentTreeCompound ob in _TreeBackupList)
- {
- //delete
- _NodeBackupRepo.DeleteComponentTreeNodeByComponentUniqueID(ob.TreeNodeUniqueID);
- _ComponentBackupRepo.DeleteComponent(ob.UniqueID);
-
-
- }
-
-
- return Json(new
- {
- Msg = "The hierachy definition was saved.",
- Result = "1",
- });
- }
- catch (Exception e)
- {
- return Json(new
- {
- Msg = "The hierachy definition was saved unsucessful. " + e.Message,
- Result = "0",
- });
- }
-
-
- }
|