index.html 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <!DOCTYPE html>
  2. <html lang="zh-cn">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>sqlite数据库测试</title>
  6. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  7. <script src="https://cdn.bootcss.com/sql.js/0.5.0/js/sql-optimized.js"></script>
  8. <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
  9. </head>
  10. <body>
  11. <style>
  12. body {
  13. margin: 0;
  14. padding: 0;
  15. color: darkslateblue;
  16. background-color: papayawhip;
  17. font-family: "Al Bayan";
  18. font-size: 20px;
  19. }
  20. input {border-color: darkslateblue;
  21. height: 40px;
  22. width: 200px;
  23. }
  24. button {
  25. color: darkslateblue;
  26. background-color: lavender;
  27. height: 40px;
  28. width: 80px;
  29. font-size: larger;
  30. }
  31. </style>
  32. <br>
  33. <div id="container">
  34. <div id="header" style="background-color:#FFA500;">
  35. <h1 style="margin-bottom:0;">Chinese Hand Writing</h1></div>
  36. <div id="content" style="background-color:#EEEEEE;float:left;" style="text-align:center">
  37. </div>
  38. <div id="footer" style="background-color:#FFA500;clear:both;text-align:center;">
  39. </div>
  40. </div>
  41. <script></script>
  42. <div class="" style=" text-align:center;">
  43. <h1>汉字手写</h1>
  44. <input type="text" id="key" value="重庆大学">
  45. <button onclick=query()>检索</button>
  46. <div id="screen">
  47. <div id="row0"></div>
  48. <div id="row1"></div>
  49. <div id="row2"></div>
  50. <div id="row3"></div>
  51. <div id="row4"></div>
  52. <div id="row5"></div>
  53. <div id="row6"></div>
  54. <div id="row7"></div>
  55. <div id="row8"></div>
  56. <div id="row9"></div>
  57. </div>
  58. </div>
  59. <script>
  60. function query() {
  61. var key = document.getElementById('key').value;
  62. // alert(key);
  63. for(let i=0;i<10;i++)
  64. $('#row'+i).empty();
  65. axios.get("database/chinese.db", {responseType: 'arraybuffer'})
  66. .then(function (response) {
  67. let db = new window.SQL.Database(new Uint8Array(response.data));
  68. // 执行查询
  69. for (let i=0;i<key.length;i++){
  70. let sql="SELECT * FROM chinese WHERE font='"+key[i]+"'";
  71. let r = db.exec(sql);
  72. console.log(sql)
  73. // 解析数据
  74. let obj = dbToObj(r);
  75. for(let j=0;j<obj.length;j++)
  76. {
  77. $('#row'+j).append('<img width="100" height="100" src=res/'+obj[j].font+"_"+obj[j].time+"_"+obj[j].author+'_'+obj[j].type+'.png>');
  78. }
  79. }
  80. })
  81. .catch(function (error) {
  82. console.info(error);
  83. });
  84. // 方法传入两个数组,第一个数组为key,第二个数组对应位置为value,此方法在Python中为zip()函数。
  85. const ArraytoObj = (keys = [], values = []) =>
  86. {
  87. if (keys.length === 0 || values.length === 0) return {};
  88. const len = keys.length > values.length ? values.length : keys.length;
  89. const obj = {};
  90. for (let i = 0; i < len; ++i) {
  91. obj[keys[i]] = values[i]
  92. }
  93. return obj;
  94. }
  95. ;
  96. // 转驼峰表示:func.camel('USER_ROLE',true) => UserRole
  97. // 转驼峰表示:func.camel('USER_ROLE',false) => userRole
  98. const camel = (str, firstUpper = false) =>
  99. {
  100. let ret = str.toLowerCase();
  101. ret = ret.replace(/_([\w+])/g, function (all, letter) {
  102. return letter.toUpperCase();
  103. });
  104. if (firstUpper) {
  105. ret = ret.replace(/\b(\w)(\w*)/g, function ($0, $1, $2) {
  106. return $1.toUpperCase() + $2;
  107. });
  108. }
  109. return ret;
  110. }
  111. ;
  112. // 把数组里面的所有转化为驼峰命名
  113. const camelArr = (arrs = []) =>
  114. {
  115. let _arrs = [];
  116. arrs.map(function (item) {
  117. _arrs.push(camel(item));
  118. });
  119. return _arrs;
  120. }
  121. ;
  122. // 读取数据库
  123. // 1.把columns转化为驼峰;
  124. // 2.把columns和values进行组合;
  125. const dbToObj = (_data = {}) =>
  126. {
  127. let _res = [];
  128. _data.map(function (item) {
  129. let _columns = camelArr(item.columns);
  130. item.values.map(function (values) {
  131. _res.push(ArraytoObj(_columns, values));
  132. });
  133. });
  134. return _res;
  135. }
  136. ;
  137. }
  138. </script>
  139. </body>
  140. </html>