week.htm 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <title></title>
  4. <link href="../../lib/ligerUI/skins/Aqua/css/ligerui-all.css" rel="stylesheet" type="text/css" />
  5. <script src="../../lib/jquery/jquery-1.5.2.min.js" type="text/javascript"></script>
  6. <script src="../../lib/ligerUI/js/core/base.js" type="text/javascript"></script>
  7. <script src="../../lib/ligerUI/js/plugins/ligerGrid.js" type="text/javascript"></script>
  8. <script src="../../lib/ligerUI/js/plugins/ligerDialog.js" type="text/javascript"></script>
  9. <script src="../../lib/ligerUI/js/plugins/ligerComboBox.js" type="text/javascript"></script>
  10. <script src="../../lib/ligerUI/js/plugins/ligerSpinner.js" type="text/javascript"></script>
  11. <script src="../../lib/ligerUI/js/plugins/ligerResizable.js" type="text/javascript"></script>
  12. <script src="../../lib/ligerUI/js/plugins/ligerDrag.js" type="text/javascript"></script>
  13. <style type="text/css">
  14. #worktypeGrid
  15. {
  16. text-align: right;
  17. margin: 5px;
  18. background: white;
  19. }
  20. .l-button
  21. {
  22. float: right;
  23. margin-right: 10px;
  24. }
  25. table
  26. {
  27. font-size: 12px;
  28. }
  29. </style>
  30. </head>
  31. <body style="padding: 6px; overflow: hidden;">
  32. <div id="maingrid" style="margin: 0; padding: 0">
  33. </div>
  34. <div id="worktypeGrid" style="display: none">
  35. </div>
  36. <script type="text/javascript">
  37. $.ligerDefaults.Grid.mouseoverRowCssClass = null;
  38. //扩展一个 多行文本框 的编辑器
  39. $.ligerDefaults.Grid.editors['textarea'] = {
  40. create: function (container, editParm)
  41. {
  42. var input = $("<textarea class='l-textarea' />");
  43. container.append(input);
  44. return input;
  45. },
  46. getValue: function (input, editParm)
  47. {
  48. return input.val();
  49. },
  50. setValue: function (input, value, editParm)
  51. {
  52. input.val(value);
  53. },
  54. resize: function (input, width, height, editParm)
  55. {
  56. var column = editParm.column;
  57. if (column.editor.width) input.width(column.editor.width);
  58. else input.width(width);
  59. if (column.editor.height) input.height(column.editor.height);
  60. else input.height(height);
  61. }
  62. };
  63. var worktypes = [
  64. { id: 1, name: '行政', descript: '' },
  65. { id: 2, name: '市场', descript: '' },
  66. { id: 3, name: '销售', descript: '' },
  67. { id: 4, name: '研发', descript: '', children: [
  68. { id: 101, name: 'JAVA', descript: '' },
  69. { id: 102, name: 'Web UI', descript: '' },
  70. { id: 103, name: '.NET', descript: '' }
  71. ]
  72. }
  73. ];
  74. function getWorkType(id, arr)
  75. {
  76. arr = arr || worktypes;
  77. for (var i in arr)
  78. {
  79. var o = arr[i];
  80. if (o.id == id)
  81. return o.name;
  82. if (o.children)
  83. {
  84. var name = getWorkType(id, o.children);
  85. if (name) return name;
  86. }
  87. }
  88. }
  89. var win = null;
  90. function openWin()
  91. {
  92. if (!win)
  93. {
  94. win = $.ligerDialog({ modal: true, showMax: true, showToggle: true, isResize: true, isDrag: true, title: '选择负责工作类型',
  95. target: $("#worktypeGrid"),
  96. width: 600, height: 300
  97. , buttons: [
  98. { text: '确定', onclick: function ()
  99. {
  100. ok(wgrid.getSelected());
  101. }
  102. }, { text: '取消', onclick: function ()
  103. {
  104. cancel();
  105. }
  106. }
  107. ]
  108. });
  109. }
  110. win.show();
  111. return win;
  112. }
  113. function ok(selected)
  114. {
  115. grid.updateRow(grid.getSelected(), { worktype: selected.id });
  116. grid.endEdit();
  117. win.hide();
  118. }
  119. function cancel()
  120. {
  121. win.hide();
  122. }
  123. var dayEditor = { type: 'spinner', minValue: 0, maxValue: 24 };
  124. var totalSummary = {
  125. align: 'right',
  126. render: function (e)
  127. {
  128. return e.sum.toFixed(0);
  129. }
  130. };
  131. var worktypeEditor = { type: 'combobox', ext: function (record)
  132. {
  133. var options = {
  134. onBeforeOpen: function ()
  135. {
  136. openWin();
  137. return false;
  138. },
  139. render: function ()
  140. {
  141. return getWorkType(record.worktype);
  142. }
  143. };
  144. return options;
  145. }
  146. };
  147. var data = [
  148. { worktype: 1, d1: 0, d2: 0, d3: 0, d4: 0, d5: 0, d6: 0, d7: 0, d8: 0 },
  149. { worktype: 1, d1: 0, d2: 0, d3: 0, d4: 0, d5: 0, d6: 0, d7: 0, d8: 0 },
  150. { worktype: 1, d1: 0, d2: 0, d3: 0, d4: 0, d5: 0, d6: 0, d7: 0, d8: 0 },
  151. { worktype: 1, d1: 0, d2: 0, d3: 0, d4: 0, d5: 0, d6: 0, d7: 0, d8: 0 },
  152. { worktype: 1, d1: 0, d2: 0, d3: 0, d4: 0, d5: 0, d6: 0, d7: 0, d8: 0 },
  153. { worktype: 1, d1: 0, d2: 0, d3: 0, d4: 0, d5: 0, d6: 0, d7: 0, d8: 0 }
  154. ];
  155. var grid = $("#maingrid").ligerGrid({
  156. columns: [
  157. { display: '负责工作类型', name: 'worktype', width: 80, editor: worktypeEditor, render: function (record)
  158. {
  159. return getWorkType(record.worktype);
  160. }
  161. },
  162. { display: '工作描述', name: 'descript', width: 180, editor: { type: 'textarea', height: 100} },
  163. { display: '工作时间', columns: [
  164. { display: '星期一', name: 'd1', width: 80, align: 'right', editor: dayEditor, totalSummary: totalSummary },
  165. { display: '星期二', name: 'd2', width: 80, align: 'right', editor: dayEditor, totalSummary: totalSummary },
  166. { display: '星期三', name: 'd3', width: 80, align: 'right', editor: dayEditor, totalSummary: totalSummary },
  167. { display: '星期四', name: 'd4', width: 80, align: 'right', editor: dayEditor, totalSummary: totalSummary },
  168. { display: '星期五', name: 'd5', width: 80, align: 'right', editor: dayEditor, totalSummary: totalSummary },
  169. { display: '星期六', name: 'd6', width: 80, align: 'right', editor: dayEditor, totalSummary: totalSummary },
  170. { display: '星期七', name: 'd7', width: 80, align: 'right', editor: dayEditor, totalSummary: totalSummary },
  171. { display: '星期日', name: 'd8', width: 80, align: 'right', editor: dayEditor, totalSummary: totalSummary }
  172. ]
  173. },
  174. { display: '汇总', align: 'right', render: function (record)
  175. {
  176. var total = 0;
  177. for (var i = 1; i <= 8; i++)
  178. {
  179. total += record['d' + i];
  180. }
  181. if (!total) return "0";
  182. return total;
  183. }
  184. }
  185. ],
  186. data: { Rows: data },
  187. height: '96%', rownumbers: true, enabledEdit: true
  188. });
  189. var wgrid = $("#worktypeGrid").ligerGrid({
  190. columns: [
  191. { display: '负责工作类型', align: 'left', name: 'name', width: 200 },
  192. { display: '负责工作类型描述', name: 'descript', width: 300 }
  193. ],
  194. data: { Rows: worktypes },
  195. inWindow: false,
  196. height: 280, width: 550,
  197. tree: { columnName: 'name' }
  198. });
  199. wgrid.bind('dblClickRow', function (record)
  200. {
  201. ok(record);
  202. });
  203. wgrid.bind('resize', function (e)
  204. {
  205. this.setHeight(e.height - 10);
  206. });
  207. </script>
  208. </body>
  209. </html>