index.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. var $s, $show, basicKeys = ["text1", "textarea", "menu","select", "check1", "someInput", "numberTable", "hashTable", "checks", "radios", "ediTable"];
  2. var persons = [{ name: "Ivan",
  3. surname: "Ivanovv",
  4. age: "57",
  5. note: {value: "Buhaet", name: 'ivanovvsTextArea'},
  6. married: true},
  7. { name: "Petr",
  8. surname: "Petroff",
  9. age: "17",
  10. note: "Tyolki v golove",
  11. married: false,
  12. },
  13. { name: "Mary",
  14. surname: "Tester",
  15. married: true,
  16. note: "Ovulyashka",
  17. age: "27"} ];
  18. setTimeout(function(){
  19. $s = nbInit({
  20. text1: "txt",
  21. textarea: "txt area",
  22. // p1: "para",
  23. //menu: {0: "Main", 1: "About Us"},
  24. menu: ["Main", "About Us", 'yep'],
  25. select: {"": "--",
  26. M: "Male",
  27. F: "Female",
  28. X: "Xenomorph"},
  29. check1: true,
  30. someInput: {type: "number", placeholder: "percents", max: "100", min: "0", value: 50},
  31. numberTable: [[[1],2,[3],4,5,6],
  32. [7,8,9,10,11,12],
  33. [13,14,15,16,17,18],
  34. [19,20,21,22,23,24]],
  35. hashTable: persons,
  36. checks: [
  37. {check: {name: "first", checked: true},
  38. description: "first check"},
  39. {check: {name: "second", checked: false},
  40. description: "second check"},
  41. {check: {name: "third", checked: true},
  42. description: "third check"},
  43. ],
  44. radios: [
  45. {radio: {name: "sexism", value: "M"},
  46. description: "Male"},
  47. {radio: {name: "sexism", value: "F", checked: true},
  48. description: "Female"},
  49. {radio: {name: "racism", value: "white", checked: true},
  50. description: "White"},
  51. {radio: {name: "racism", value: "black"},
  52. description: "Black"}, ],
  53. });
  54. // $s.textarea; $s.select; $s.dzen; $s.check1; $s.note; $s.married; //just for init
  55. function btnDel(){
  56. var arr = $s.hashTable.slice(); //copy
  57. var thisLine = this.parentElement.parentElement; //current row
  58. arr.splice(thisLine.rowIndex -1,1) //cut one row
  59. $s.hashTable = arr; //set
  60. $s.btnDel = {onclick: btnDel}; //update del button handlers
  61. //document.onchange();
  62. };
  63. $s.btnDel = {onclick: btnDel};
  64. $s.addPerson = {onclick: function(){
  65. var arr = $s.hashTable.slice(); //copy
  66. arr.push(Object.assign({},arr[0])) //add new row
  67. $s.hashTable = arr; //set
  68. $s.btnDel = {onclick: btnDel}; //update del button handlers
  69. //var newLine = document.getElementById('hashTable').copy.children[0].cloneNode(true);
  70. //newLine.nbData = Object.assign({},persons[0]);
  71. //document.getElementById('hashTable').appendChild(newLine);
  72. //$s.btnDel = {onclick: btnDel};
  73. //document.onchange();
  74. }}
  75. var ediNumbers = [];
  76. function ediFunc(){
  77. if ($s.ediInput){
  78. this.innerHTML = $s.ediInput;
  79. }
  80. else {
  81. var text = this.innerHTML;
  82. this.innerHTML = "<input id='ediInput'/>";
  83. $s.ediInput = text;
  84. }
  85. }
  86. for (var i=0;i<10;i++){
  87. ediNumbers[i] = [];
  88. for (var j=0;j<10;j++){
  89. //ediNumbers[i][j] = [i*j]; //one-level lower trick; uncomment input in html
  90. //ediNumbers[i][j] = i*j; //read only table
  91. ediNumbers[i][j] = {ondblclick: ediFunc,
  92. innerHTML: i*j, //read only table
  93. }
  94. }
  95. }
  96. $s.ediTable = ediNumbers;
  97. $show = nbInit({});
  98. document.onchange();
  99. },2000);
  100. function onUpdate(){
  101. var key = this.parentElement.getElementsByClassName("key")[0].innerHTML;
  102. var value = this.parentElement.getElementsByClassName("data")[0].value;
  103. eval(key + value);
  104. }
  105. document.onchange = function(evt){
  106. //$s.state = "";
  107. //$s.state = JSON.stringify($s, null, 4);
  108. //
  109. if (evt && evt.target.className == 'data'){
  110. return;
  111. }
  112. var data = [];
  113. for (var i=0,key=basicKeys[i];i<basicKeys.length;i++,key=basicKeys[i]){
  114. data.push({key: "$s." + key + " = ", data: JSON.stringify($s[key], null, 4), update: {onclick: onUpdate}});
  115. }
  116. $show.rightColumn = data;
  117. }