{"version":3,"sources":["js/control_quanta_tree.js"],"names":["globalAsp","global_selectFiredFromCode","control_quanta_tree","asp","hidePopupOnNextDllClick","changeMade","add_load_fired","dynatreeChildrenProperty","json","$","hidJson","val","LoadJson","chkSelectAllState","chkSelectAll","prop","allNodesSelected","NodesAndChildrenAreSelected","selectAllNodesIfNoneSelected","UnSelectAllNodes","divDynatree","dynatree","children","persist","checkbox","selectMode","debugLevel","fx","height","duration","onPostInit","isReloading","isError","onPostInitEvent","onSelect","flag","node","treeForReporting","onSelectEvent","onClick","event","onClickEvent","onCreate","nodeSpan","data","key","attr","onRender","isDraggable","hasChildren","dragTarget","parent","addClass","title","draggable","addClasses","connectToSortable","helper","appendTo","start","stop","removeClass","disableSelection","RemakeJson","error","noneSelectedText","ddlDynatree","text","lblSelectionValue","Sys","Application","add_load","sender","arg","pce","$find","popupExtenderID","isAlwaysOpen","show","add_hidden","validate","click","hidePopup","hypValider","searchInput","SearchChanged","bFiltreAuto","on","updMain","find","css","evt","preventDefault","Search","change","ChkSelectAllChanged","mousedown","mouseover","tooltipVal","Tip","BGCOLOR","FONTCOLOR","tree","visit","TreeVisitPostInit","redraw","AllVisibleAndSelectableNodesSelected","autoPostback","SelectedChangedPostback","TreeVisitChkSelectAllChanged","__doPostBack","myClientId","getEventTargetType","getChildren","toggleExpand","toggleSelect","enabled","TreeVisitInspectSelection","unselectable","isSelected","hasClassNode","select","AddOrRemoveDisabledStatus","expand","addClassNode","tooltip","startExpanded","visitParents","removeClassNode","timeoutID","clearTimeout","setTimeout","intervalSearch","searchValue","toLowerCase","TreeVisitSearchChanged","matchesSearch","searchString","trim","words","split","containsAllWords","stringToSearchIn","stringArray","i","length","indexOf","nodeArrayObj","callback","getParent","className","replace","AllChildrenCheckedOrNoChildren","result","JSON","parse","SetIconProperty","SetUnselectedTooltipProperty","tooltipOnUnselectableNodes","e","arrayOfChildren","value","icon","dynObj","dynatreeToJsObj","ConvertNodesToObjArray","getRoot","stringify","UpdateSelectionString","ConvertNodeToObj","obj","hideCheckbox","nodes","nodesObjArray","push","selectionString","allNodesUnselected","TreeVisitUpdateSelectionString","parentNodes","replaceAllSelectedWithText","allSelectedText","substr","lastIndexOf","factorizeSelection"],"mappings":"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","file":"control_quanta_tree.js","sourcesContent":["/*Ce fichier n'est présent qu'une unique fois sur la page quelque soit le nombre de control_dynatree d'inclus*/\r\n\r\nvar global_selectFiredFromCode = false;//utilisé par les events qui fire l'event par le code\r\n\r\n\r\nfunction control_quanta_tree(asp) {\r\n asp.hidePopupOnNextDllClick = false;\r\n asp.changeMade = false;//on track s'il y a eu changement de sélection pour fire ou non un postback\r\n asp.add_load_fired = false;\r\n asp.dynatreeChildrenProperty = null;\r\n\r\n var json = $(\"#\" + asp.hidJson).val();//contient l'arbre à charger\r\n if (json != \"\" && json != \"[]\") {\r\n LoadJson(asp, json);\r\n\r\n //Si chkAll unchecked et que tout est selected, unselectAll\r\n var chkSelectAllState = $(\"#\" + asp.chkSelectAll).prop('checked');\r\n var allNodesSelected = NodesAndChildrenAreSelected(asp.dynatreeChildrenProperty)\r\n\r\n if (!chkSelectAllState && allNodesSelected && asp.selectAllNodesIfNoneSelected) {\r\n UnSelectAllNodes(asp, asp.dynatreeChildrenProperty);\r\n }\r\n\r\n\r\n //Créer le dynatree avec les options; voir doc : http://wwwendt.de/tech/dynatree/doc/dynatree-doc.html\r\n $(\"#\" + asp.divDynatree).dynatree({\r\n children: asp.dynatreeChildrenProperty, //liste des éléments de l'arbre\r\n persist: false, //état save avec cookie\r\n checkbox: true, //afficher checkboxes\r\n selectMode: asp.selectMode, // 1:single, 2:multi, 3:multi-hier\r\n debugLevel: 0, //pas de sotie console\r\n fx: { height: \"toggle\", duration: 200 }, //type d'animation et durée\r\n onPostInit: function (isReloading, isError) {//après initialisation\r\n onPostInitEvent(asp);\r\n },\r\n onSelect: function (flag, node) { //event quand checked ou unchecked\r\n if (asp.treeForReporting) return;\r\n onSelectEvent(asp, node);\r\n },\r\n onClick: function (node, event) {\r\n if (asp.treeForReporting) return;\r\n onClickEvent(asp, node, event);\r\n },\r\n onCreate: function (node, nodeSpan) {\r\n if (asp.treeForReporting && node.data.key != \"\") {\r\n $(nodeSpan).attr(\"data-module\", node.data.key);\r\n }\r\n\r\n },\r\n onRender: function (node, nodeSpan) {\r\n if (asp.isDraggable && !node.hasChildren()) {\r\n var dragTarget = $(nodeSpan).parent(\"li\");\r\n dragTarget.addClass(\"draggableDynatreeItem\");\r\n dragTarget.attr(\"data-itemkey\", node.data.key);\r\n dragTarget.attr(\"data-itemvalue\", node.data.title);\r\n\r\n dragTarget.draggable({\r\n addClasses: false,\r\n connectToSortable: '.sortableList',\r\n helper: function () {\r\n //return $(this).clone().wrapAll(\"li\").addClass(\"draggableItemMoving\");\r\n return $('
  • ' + node.data.title + '
  • ');\r\n },\r\n appendTo: 'body',\r\n start: function () {\r\n $(\".itemsDropZoneWrapper\").addClass(\"drawingPanel_drop_active\");\r\n },\r\n stop: function () {\r\n $(\".itemsDropZoneWrapper\").removeClass(\"drawingPanel_drop_active drawingPanel_drop_hover\");\r\n }\r\n }).disableSelection();\r\n }\r\n }\r\n });\r\n\r\n RemakeJson(asp);\r\n }\r\n else {\r\n var error = asp.noneSelectedText;\r\n $(\"#\" + asp.ddlDynatree + \" option:first\").text(error);//dropdown\r\n $(\"#\" + asp.lblSelectionValue).text(error);//label\r\n }\r\n\r\n //La popup n'est accessible seulement dans cet event, qui fire après cette fonction\r\n //L'enregistrement de cet event n'est pas clear par les update\r\n Sys.Application.add_load(function (sender, arg) {\r\n //if (asp.add_load_fired || arg._isPartialLoad) return;//deja fired ou partial\r\n if (asp.add_load_fired) return;\r\n asp.add_load_fired = true;\r\n\r\n var pce = $find(asp.popupExtenderID);\r\n if (pce != null) {\r\n\r\n if (asp.isAlwaysOpen) {\r\n pce.show();\r\n } else {\r\n pce.add_hidden(function () {\r\n //console.log(\"add_hidden\");\r\n asp.hidePopupOnNextDllClick = false;\r\n validate(asp);\r\n });\r\n\r\n //drop down\r\n $(\"#\" + asp.ddlDynatree).click(function () {\r\n //console.log(\"click\");\r\n //popup panel\r\n if (asp.hidePopupOnNextDllClick) {\r\n pce.hidePopup();//fire add_hidden\r\n } else {//on vient d'ouvrir la popup, on la masque on prochain click\r\n asp.hidePopupOnNextDllClick = true;\r\n //focus pour afficher par dessus la dropdown\r\n //setTimeout(function () { $(\"#\" + asp.pnlMain).focus(); }, 0);\r\n\r\n }\r\n });\r\n\r\n //Bouton valider\r\n $(\"#\" + asp.hypValider).click(function () {\r\n pce.hidePopup();//fire add_hidden\r\n });\r\n }\r\n }\r\n\r\n\r\n if ( $(\"#\" + asp.searchInput).val() ) {\r\n SearchChanged({ data: asp });\r\n }\r\n });\r\n\r\n //Add bouton de validation du filtre\r\n if (!asp.bFiltreAuto) {\r\n //un peu de place\r\n $(\"#\" + asp.updMain).find(\".inputFiltre\").css(\"width\", \"80%\");\r\n\r\n //show\r\n $(\"#\" + asp.updMain).find(\".btnValidateFiltre\").css(\"display\", \"inline-block\");\r\n\r\n //click event\r\n $(\"#\" + asp.updMain).find(\".btnValidateFiltre\").click(function (evt) {\r\n evt.preventDefault(); //pas de validation de form, merci\r\n Search(asp)();\r\n });\r\n }\r\n else {\r\n //Applique le filtre on changement d'input\r\n $(\"#\" + asp.searchInput).on('keyup', asp, SearchChanged);\r\n }\r\n \r\n\r\n //Tout sélectionner\r\n $(\"#\" + asp.chkSelectAll).change(function () {\r\n ChkSelectAllChanged(asp);\r\n });\r\n\r\n //Ne pas ouvrir dropdown au click\r\n $(\"#\" + asp.ddlDynatree).mousedown(function () {\r\n return false;\r\n });\r\n\r\n //Tooltip old\r\n $(\"#\" + asp.ddlDynatree).mouseover(function () {\r\n var tooltipVal = $(\"#\" + asp.ddlDynatree + \" option:first\").text();\r\n Tip(tooltipVal, BGCOLOR, '#F7F7F7', FONTCOLOR, '#000000');\r\n });\r\n\r\n //Tooltip Bootstrap\r\n //$(\"#\" + asp.ddlDynatree).tooltip({\r\n // placement : \"auto top\",\r\n // trigger : \"focus\"\r\n //});\r\n}\r\n\r\nfunction onPostInitEvent(asp) {\r\n //On parcourt l'arbre\r\n var tree = $(\"#\" + asp.divDynatree).dynatree(\"getTree\");\r\n globalAsp = asp;//argument pour tree.visit()\r\n tree.visit(TreeVisitPostInit, false);\r\n tree.redraw();//car on a modifié la property node.data.addClass dans TreeVisit \r\n\r\n ////Draggable\r\n ////if (asp.isDraggable) {\r\n\r\n //// $(\".draggableDynatreeItem\").draggable({\r\n //// addClasses: false,\r\n //// connectToSortable: '.sortableList',\r\n //// helper: function () {\r\n //// return $(this).clone().addClass(\"draggableItemMoving\");\r\n //// },\r\n //// appendTo: 'body'\r\n //// }).disableSelection();\r\n ////}\r\n}\r\n\r\nfunction onSelectEvent(asp, node) {\r\n //node.select() ne fire pas l'event sur les enfants\r\n\r\n asp.changeMade = true;//autorise les postback\r\n\r\n if (global_selectFiredFromCode) return;//On ignore les select fired par le code\r\n //console.log(node.data.title);\r\n\r\n AllVisibleAndSelectableNodesSelected(asp);//met à jour asp.allVisibleAndSelectableNodesSelected et l'ui\r\n\r\n //Update json field\r\n RemakeJson(asp);\r\n}\r\n\r\nfunction validate(asp) {\r\n if (asp.autoPostback && asp.changeMade) SelectedChangedPostback(asp);\r\n}\r\n\r\nfunction ChkSelectAllChanged(asp) {\r\n //Si on décoche, on décoche tout les nodes\r\n //Si on coche, on coche seulement les nodes visibles (et feuilles non visibles si mode MultiHier(3))\r\n\r\n\r\n //On parcourt l'arbre\r\n global_selectFiredFromCode = true;\r\n asp.chkSelectAllState = $(\"#\" + asp.chkSelectAll).prop('checked');\r\n globalAsp = asp;//argument pour tree.visit()\r\n var tree = $(\"#\" + asp.divDynatree).dynatree(\"getTree\");\r\n tree.visit(TreeVisitChkSelectAllChanged, false);\r\n tree.redraw();\r\n global_selectFiredFromCode = false;\r\n\r\n //Update json field\r\n RemakeJson(asp);\r\n}\r\n\r\n//effectue un postback serveur quand la sélection a été modifiée\r\n//Fire l'event quand l'user ferme le panel\r\nfunction SelectedChangedPostback(asp) {\r\n //console.log(\"__doPostBack\");\r\n //On passe en arg1 le client id de l'update panel, et en arg2 le client id du control originant le postback\r\n __doPostBack(asp.updMain, asp.myClientId);\r\n}\r\n\r\nfunction onClickEvent(asp, node, event) {\r\n //Clic sur un label\r\n if (node.getEventTargetType(event) == \"title\") {\r\n if (node.getChildren() != null) { //Si enfants : expand/collapse\r\n node.toggleExpand();\r\n } else {//Si c'est une feuille select/unselect\r\n node.toggleSelect();\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n//Vrai si tous les nodes visibles and seletable sont checked\r\n//Résultat dans asp.allVisibleAndSelectableNodesSelected\r\nfunction AllVisibleAndSelectableNodesSelected(asp) {\r\n //On ne fait rien si le control et disabled\r\n if (!asp.enabled) return;\r\n\r\n asp.allNodesSelected = true;//on met à true et on parcourt jusqu'à en trouver un unselected\r\n globalAsp = asp;//argument pour tree.visit()\r\n var tree = $(\"#\" + asp.divDynatree).dynatree(\"getTree\");\r\n tree.visit(TreeVisitInspectSelection, false);\r\n tree.redraw();\r\n $(\"#\" + asp.chkSelectAll).attr('checked', asp.allNodesSelected);//update ui\r\n}\r\n\r\nfunction TreeVisitInspectSelection(node) {\r\n var asp = globalAsp;\r\n\r\n if (!node.data.unselectable && !node.isSelected() && !hasClassNode(node, \"hiddenNode\")) {\r\n asp.allNodesSelected = false;\r\n return false;//on arrete le parcourt\r\n }\r\n}\r\n\r\nfunction TreeVisitChkSelectAllChanged(node) {\r\n var asp = globalAsp;//set avant l'appel à tree.visit()\r\n\r\n if (!asp.chkSelectAllState) {//Si on décoche, on décoche tout les nodes\r\n node.select(false);\r\n } else {//Si on coche, on coche seulement les nodes visibles (il peuvent ne pas avoir la classe displayedNode)\r\n if (!hasClassNode(node, \"hiddenNode\")) {\r\n if (asp.selectMode == 2 || !node.hasChildren())//feuilles si mode MultiHier(3) ou pas d'enfants\r\n node.select(true);\r\n }\r\n \r\n }\r\n}\r\n\r\nfunction TreeVisitPostInit(node) {\r\n var asp = globalAsp;//set avant l'appel à tree.visit()\r\n\r\n AddOrRemoveDisabledStatus(node);\r\n \r\n if (asp.treeForReporting) {\r\n node.expand(true);\r\n\r\n if (node.data.key != \"\") {\r\n addClassNode(node, \"moduleItem2\");\r\n addClassNode(node, \"draggableItem2\");\r\n node.data.tooltip = node.data.key;\r\n }\r\n //node.toggleExpand();\r\n }\r\n\r\n if (asp.startExpanded) {\r\n node.expand(true);\r\n }\r\n}\r\n\r\nfunction AddOrRemoveDisabledStatus(node) {\r\n //Application des classes disabled\r\n if (node.data.unselectable) {//node disabled\r\n addClassNode(node, \"disabled\");\r\n\r\n if (node.isSelected()) {//node selected\r\n addClassNode(node, \"disabledChecked\");\r\n\r\n //set parents as partial disabled\r\n node.visitParents(function (parent) {\r\n if(parent.data.unselectable)\r\n addClassNode(parent, \"disabledPartial\");\r\n }, false);\r\n }\r\n else {//node unselected\r\n addClassNode(node, \"disabledUnchecked\");\r\n }\r\n }\r\n else {//node enabled\r\n removeClassNode(node, \"disabled\");\r\n removeClassNode(node, \"disabledUnchecked\");\r\n removeClassNode(node, \"disabledChecked\");\r\n removeClassNode(node, \"disabledPartial\");\r\n }\r\n}\r\n\r\n//#region Recherche\r\nvar globalAsp;//variable utilisée pour passage d'argument à tree.visit()\r\n\r\n\r\nvar timeoutID = null;\r\nfunction SearchChanged(evt) {\r\n var asp = evt.data;//passé en argument\r\n\r\n if (timeoutID != null) clearTimeout(timeoutID);\r\n var timeoutID = setTimeout(Search(asp), asp.intervalSearch)\r\n}\r\n\r\nfunction Search(asp) {\r\n\r\n return function () {\r\n var tree = $(\"#\" + asp.divDynatree).dynatree(\"getTree\");\r\n var searchValue = $(\"#\" + asp.searchInput).val().toLowerCase();\r\n\r\n //On parcourt l'arbre\r\n asp.searchValue = searchValue;\r\n globalAsp = asp;//argument pour tree.visit()\r\n var tree = $(\"#\" + asp.divDynatree).dynatree(\"getTree\");\r\n tree.visit(TreeVisitSearchChanged, false);\r\n tree.redraw();//car on a modifié la property node.data.addClass dans TreeVisit\r\n\r\n AllVisibleAndSelectableNodesSelected(asp);//met à jour asp.allVisibleAndSelectableNodesSelected et l'ui\r\n };\r\n}\r\n\r\nfunction TreeVisitSearchChanged(node) {\r\n var asp = globalAsp;//set avant l'appel à tree.visit()\r\n\r\n if (asp.searchValue != \"\") {\r\n //Expand tous les nodes\r\n node.expand(true);\r\n\r\n //On masque tous les nodes\r\n removeClassNode(node, \"displayedNode\");\r\n addClassNode(node, \"hiddenNode\");\r\n\r\n //On display les matched nodes et leur parents\r\n if (matchesSearch(node, asp.searchValue)) {\r\n removeClassNode(node, \"hiddenNode\");\r\n addClassNode(node, \"displayedNode\");\r\n\r\n visitParents(node, function (node) {\r\n removeClassNode(node, \"hiddenNode\");\r\n addClassNode(node, \"displayedNode\");\r\n });\r\n }\r\n }\r\n else {\r\n //Recherche vide, collapse et display all\r\n node.expand(false);\r\n removeClassNode(node, \"hiddenNode\");\r\n addClassNode(node, \"displayedNode\");\r\n }\r\n}\r\n\r\n//Retourne vrai si le node match la recherche\r\n//Vrai si champ de recherche vide\r\nfunction matchesSearch(node, searchString) {\r\n\r\n if (searchString.trim() == \"\") return true;\r\n var words = searchString.split(\" \");\r\n return containsAllWords(node.data.title.toLowerCase(), words)\r\n}\r\n\r\n//retourne vrai si stringToSearchIn contient toutes les chaines de stringArray\r\nfunction containsAllWords(stringToSearchIn, stringArray) {\r\n for (var i = 0; i < stringArray.length; i++) {\r\n if (stringToSearchIn.indexOf(stringArray[i]) < 0)\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n//#endregion\r\n\r\n//#region Utilitaire\r\n\r\n//Déselection tous les noeuds de l'objet json\r\nfunction UnSelectAllNodes(asp, nodeArrayObj) {\r\n if (typeof (nodeArrayObj) === \"undefined\") return;\r\n\r\n for (var i = 0; i < nodeArrayObj.length; i++) {\r\n nodeArrayObj[i].select = false;\r\n\r\n if (typeof (nodeArrayObj[i].children) !== \"undefined\" && nodeArrayObj[i].children !== null && nodeArrayObj[i].children.length > 0)\r\n UnSelectAllNodes(asp, nodeArrayObj[i].children);\r\n }\r\n}\r\n\r\n//Vrai si tous les noeuds sont selected ou pas de noeuds\r\nfunction NodesAndChildrenAreSelected(nodeArrayObj) {\r\n if (typeof (nodeArrayObj) == \"undefined\") return true;\r\n\r\n for (var i = 0; i < nodeArrayObj.length; i++) {\r\n if (!nodeArrayObj[i].select)\r\n return false;\r\n\r\n if (!NodesAndChildrenAreSelected(nodeArrayObj[i].children))\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction visitParents(node, callback) {\r\n if (node == null) return;\r\n\r\n var parent = node.getParent();\r\n if (parent != null) {\r\n callback(node);\r\n visitParents(parent, callback);\r\n }\r\n}\r\n\r\nfunction hasClassNode(node, className) {\r\n return (node.data.addClass.indexOf(className) >= 0);\r\n}\r\n\r\nfunction addClassNode(node, className) {\r\n if (node.data.addClass == null) node.data.addClass = \"\";\r\n if (!hasClassNode(node, className)) node.data.addClass = node.data.addClass.trim() + \" \" + className;\r\n}\r\n\r\nfunction removeClassNode(node, className) {\r\n if (node.data.addClass == null) node.data.addClass = \"\";\r\n if (hasClassNode(node, className)) node.data.addClass = node.data.addClass.replace(className, \"\").trim();\r\n}\r\n\r\nfunction AllChildrenCheckedOrNoChildren(node){\r\n var result = true;\r\n var children = node.getChildren();\r\n\r\n if (children == null){//pas d'enfants\r\n result = true;\r\n }else{\r\n for (var i = 0; i < children.length; i++) {\r\n if (!children[i].isSelected()){\r\n result= false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n//#endregion\r\n\r\n//#region Json\r\nfunction LoadJson(asp, json) {\r\n try{\r\n asp.dynatreeChildrenProperty = JSON.parse(json);\r\n //console.log(asp.dynatreeChildrenProperty);\r\n SetIconProperty(asp.dynatreeChildrenProperty, false);//ajoute une property icon à false\r\n SetUnselectedTooltipProperty(asp.dynatreeChildrenProperty, asp.tooltipOnUnselectableNodes);//ajoute une property tooltip\r\n } catch (e) {\r\n asp.dynatreeChildrenProperty = [];\r\n }\r\n}\r\n\r\nfunction SetIconProperty(arrayOfChildren, value) {\r\n for (var i = 0; i < arrayOfChildren.length; i++) {\r\n arrayOfChildren[i].icon = value;\r\n if (arrayOfChildren[i].children != null)\r\n SetIconProperty(arrayOfChildren[i].children, value);\r\n }\r\n}\r\n\r\nfunction SetUnselectedTooltipProperty(arrayOfChildren, value) {\r\n if (value.trim() == \"\") return;\r\n\r\n for (var i = 0; i < arrayOfChildren.length; i++) {\r\n if (arrayOfChildren[i].unselectable)\r\n arrayOfChildren[i].tooltip = value;\r\n\r\n if (arrayOfChildren[i].children != null)\r\n SetUnselectedTooltipProperty(arrayOfChildren[i].children, value);\r\n }\r\n}\r\n\r\n//Appellé à chaque fois que l'état du tree change (en particulier la sélection)\r\nfunction RemakeJson(asp) {\r\n var dynObj = $(\"#\" + asp.divDynatree);\r\n if (dynObj.length == 0) return;\r\n\r\n var tree = dynObj.dynatree(\"getTree\");\r\n var dynatreeToJsObj = ConvertNodesToObjArray(asp, tree.getRoot().getChildren());\r\n //console.log(dynatreeToJsObj);\r\n\r\n $(\"#\" + asp.hidJson).val(JSON.stringify(dynatreeToJsObj)).change();\r\n UpdateSelectionString(asp);\r\n}\r\n\r\nfunction ConvertNodeToObj(asp, node) {\r\n var obj = {\r\n key: node.data.key,\r\n title: node.data.title,\r\n select: node.isSelected(),\r\n unselectable: node.data.unselectable,\r\n hideCheckbox: node.data.hideCheckbox,\r\n children: ConvertNodesToObjArray(asp, node.getChildren())\r\n };\r\n\r\n //Delete property ayant leur valeur par defaut pour optimiser la taille du field dans la page\r\n if (!obj.unselectable) delete obj.unselectable;\r\n if (!obj.hideCheckbox) delete obj.hideCheckbox;\r\n if (obj.children.length == 0) delete obj.children;\r\n\r\n return obj;\r\n}\r\n\r\nfunction ConvertNodesToObjArray(asp, nodes) {\r\n var nodesObjArray = [];\r\n\r\n if (nodes != null) {\r\n for (var i = 0; i < nodes.length; i++)\r\n nodesObjArray.push(ConvertNodeToObj(asp, nodes[i]));\r\n }\r\n return nodesObjArray;\r\n}\r\n//#endregion\r\n\r\n//#region Selection String\r\nfunction UpdateSelectionString(asp) {\r\n\r\n asp.selectionString = \"\";\r\n asp.allNodesUnselected = true;//update par TreeVisitUpdateSelectionString\r\n asp.allNodesSelected = true;//update par TreeVisitUpdateSelectionString\r\n globalAsp = asp;//argument pour tree.visit()\r\n var tree = $(\"#\" + asp.divDynatree).dynatree(\"getTree\");\r\n tree.visit(TreeVisitUpdateSelectionString, false);\r\n tree.redraw();\r\n\r\n //Si tout est déselectionné et que le mode est selectAllNodesIfNoneSelected\r\n if (asp.selectAllNodesIfNoneSelected && asp.allNodesUnselected) {\r\n asp.selectionString = \"\";\r\n\r\n //on select tout les parents\r\n var parentNodes = tree.getRoot().getChildren();\r\n if (parentNodes != null) {\r\n for (var i = 0; i < parentNodes.length; i++) {\r\n asp.selectionString += parentNodes[i].data.title + \"; \";\r\n }\r\n }\r\n }\r\n\r\n //Si on doit replacer par \"Tout\"\r\n if (asp.replaceAllSelectedWithText && (asp.allNodesSelected || (asp.selectAllNodesIfNoneSelected && asp.allNodesUnselected))) {\r\n asp.selectionString = asp.allSelectedText;\r\n }\r\n\r\n //Si rien n'est select et que l'on remplace pas \"rien par tout\"\r\n if (!asp.selectAllNodesIfNoneSelected && asp.allNodesUnselected) {\r\n asp.selectionString = asp.noneSelectedText;\r\n }\r\n\r\n\r\n //Supprime dernier séparateur\r\n if (asp.selectionString.indexOf(\"; \") > 0)\r\n asp.selectionString = asp.selectionString.substr(0, asp.selectionString.lastIndexOf(\"; \"));\r\n\r\n //Max chars\r\n var maxCaracters = 200;\r\n if (asp.selectionString.length >= maxCaracters)\r\n asp.selectionString = asp.selectionString.substr(0, maxCaracters) + \"...\";\r\n\r\n\r\n $(\"#\" + asp.ddlDynatree + \" option:first\").text(asp.selectionString);//dropdown\r\n $(\"#\" + asp.lblSelectionValue).text(asp.selectionString);//label\r\n $(\"#\" + asp.ddlDynatree).attr(\"title\", asp.selectionString);//tooltip\r\n}\r\n\r\nfunction TreeVisitUpdateSelectionString(node) {\r\n var asp = globalAsp;\r\n\r\n var parent = node.getParent();\r\n //le node \"root\" est non null mais sa valeur data.title est null\r\n\r\n //Update asp.allNodesUnselected\r\n if (node.isSelected()) asp.allNodesUnselected = false;\r\n\r\n //Update asp.allNodesSelected\r\n if (!node.isSelected()) asp.allNodesSelected = false;\r\n\r\n if (!asp.factorizeSelection) {\r\n //C'est le mode \"normal\" : on affiche chaque noeud sélectionné\r\n\r\n if (node != null && node.isSelected())\r\n asp.selectionString += node.data.title + \"; \";\r\n }\r\n else {\r\n //Mode \"factorisé\" : Si tous les fils d'un parent checked alors on les replace par ce parent\r\n\r\n //Skip si null, ou non selected, ou parent selected\r\n if (node == null || !node.isSelected() || (parent != null && parent.data.title != null && parent.isSelected())) {\r\n }\r\n else {\r\n //ajouter si tous les enfants selected ou pas d'enfants\r\n if (AllChildrenCheckedOrNoChildren(node)) {\r\n asp.selectionString += node.data.title + \"; \";\r\n }\r\n }\r\n }\r\n \r\n}\r\n//#endregion"]}