part.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. var part_max_deep=10;
  2. var part_curr_deep=0;
  3. var part_word_array=null;
  4. function part_create_node(){
  5. let newWord=new Object();
  6. newWord.id="";
  7. newWord.spell="";
  8. newWord.real="";
  9. newWord.type="";
  10. newWord.gramma="";
  11. newWord.case="";
  12. newWord.mean="";
  13. newWord.note="";
  14. newWord.sparent="";
  15. newWord.parent_id="";
  16. newWord.part="";
  17. newWord.partmean="";
  18. newWord.bmc=0;
  19. newWord.bmt="";
  20. newWord.lock=false;
  21. newWord.rela="";
  22. newWord.parent_visible=true;
  23. newWord.child_visible=false;
  24. newWord.valid=true;
  25. newWord.firstChild=null;
  26. newWord.nextNode=null;
  27. newWord.setpart=_part_setpart;
  28. part_word_array.push(newWord);
  29. return(newWord);
  30. }
  31. function _part_setpart(value){
  32. if(value==null){
  33. return(this.part);
  34. }
  35. else{
  36. if(this.part!=value){
  37. let arrPart = value.split("+");
  38. let newParts=new Array();
  39. for(let x in arrPart){
  40. let isExist=false;
  41. let nextNode=this.firstChild;
  42. while(nextNode)
  43. {
  44. if(arrPart[x]==nextNode.real){
  45. newParts.push(nextNode.clone());
  46. isExist=true;
  47. break;
  48. }
  49. nextNode = nextNode.nextNode;
  50. }
  51. if(isExist==false){
  52. let newPart = part_create_node();
  53. newPart.id=this.id+"-"+x;
  54. newPart.spell = arrPart[x];
  55. newPart.real = arrPart[x];
  56. newPart.sparent=this.real;
  57. newPart.parent_id=this.id;
  58. newParts.push(newPart);
  59. }
  60. }
  61. let nextNode=this.firstChild;
  62. while(nextNode)
  63. {
  64. nextNode.valid=false;
  65. nextNode = nextNode.nextNode;
  66. }
  67. this.firstChild = newParts[0];
  68. for(let x =0 ; x<newParts.length-1;x++){
  69. newParts[x].nextNode = newParts[x+1];
  70. }
  71. newParts[newParts.length-1].nextNode = null;
  72. }
  73. }
  74. }
  75. function _part_clone(){
  76. let newNode = part_create_node();
  77. newNode.id=this.id;
  78. newNode.spell=this.spell;
  79. newNode.real=this.real;
  80. newNode.type=this.type;
  81. newNode.gramma=this.gramma;
  82. newNode.case=this.case;
  83. newNode.mean=this.mean;
  84. newNode.note=this.note;
  85. newNode.sparent=this.sparent;
  86. newNode.parent_id=this.parent_id;
  87. newNode.part=this.part;
  88. newNode.partmean=this.partmean;
  89. newNode.bmc=this.bmc;
  90. newNode.bmt=this.bmt;
  91. newNode.lock=this.lock;
  92. newNode.rela=this.rela;
  93. newNode.parent_visible=this.parent_visible;
  94. newNode.child_visible=this.child_visible;
  95. newWord.valid=this.valid;
  96. newWord.firstChild=this.firstChild;
  97. return(newNode);
  98. }
  99. function part_render_children(wordnode){
  100. }
  101. function word_part(strSelector){
  102. {
  103. var sWordId=strSelector.substr(1);
  104. var xAllWord = gXmlBookDataBody.getElementsByTagName("word");
  105. var wid=getWordIndex(sWordId);
  106. if(xAllWord[wid]){
  107. var wordobj=new Object();
  108. wordobj.wordid=strSelector;
  109. wordobj.element=xAllWord[wid];
  110. wordobj.val=_word_value;
  111. return(wordobj);
  112. }
  113. else{
  114. var wordobj=new Object();
  115. wordobj.wordid=strSelector;
  116. wordobj.element=null;
  117. wordobj.val=_word_value;
  118. return(wordobj);
  119. }
  120. }
  121. }
  122. function _word_value(key,value=null){
  123. if(this.element){
  124. if(value){
  125. setNodeText(this.element,key,value);
  126. }
  127. else{
  128. var output = getNodeText(this.element,key);
  129. return(output);
  130. }
  131. }
  132. else{
  133. if(!value){
  134. return("");
  135. }
  136. }
  137. }