vis.js is a dynamic, browser-based visualization library
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

173 lines
4.2 KiB

11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
  1. /**
  2. * Jake build script
  3. */
  4. var jake = require('jake'),
  5. browserify = require('browserify'),
  6. path = require('path'),
  7. fs = require('fs');
  8. require('jake-utils');
  9. // constants
  10. var VIS = './vis.js';
  11. var VIS_TMP = './vis.js.tmp';
  12. var VIS_MIN = './vis.min.js';
  13. /**
  14. * default task
  15. */
  16. desc('Execute all tasks: build all libraries');
  17. task('default', ['build', 'minify', 'test'], function () {
  18. console.log('done');
  19. });
  20. /**
  21. * build the visualization library vis.js
  22. */
  23. desc('Build the visualization library vis.js');
  24. task('build', {async: true}, function () {
  25. // concatenate and stringify the css files
  26. var result = concat({
  27. src: [
  28. './src/timeline/component/css/timeline.css',
  29. './src/timeline/component/css/panel.css',
  30. './src/timeline/component/css/groupset.css',
  31. './src/timeline/component/css/itemset.css',
  32. './src/timeline/component/css/item.css',
  33. './src/timeline/component/css/timeaxis.css',
  34. './src/timeline/component/css/currenttime.css',
  35. './src/timeline/component/css/customtime.css'
  36. ],
  37. header: '/* vis.js stylesheet */',
  38. separator: '\n'
  39. });
  40. var cssText = JSON.stringify(result.code);
  41. // concatenate the script files
  42. concat({
  43. dest: VIS_TMP,
  44. src: [
  45. './src/module/imports.js',
  46. './src/shim.js',
  47. './src/util.js',
  48. './src/events.js',
  49. './src/EventBus.js',
  50. './src/DataSet.js',
  51. './src/DataView.js',
  52. './src/timeline/TimeStep.js',
  53. './src/timeline/Stack.js',
  54. './src/timeline/Range.js',
  55. './src/timeline/Controller.js',
  56. './src/timeline/component/Component.js',
  57. './src/timeline/component/Panel.js',
  58. './src/timeline/component/RootPanel.js',
  59. './src/timeline/component/TimeAxis.js',
  60. './src/timeline/component/CurrentTime.js',
  61. './src/timeline/component/CustomTime.js',
  62. './src/timeline/component/ItemSet.js',
  63. './src/timeline/component/item/*.js',
  64. './src/timeline/component/Group.js',
  65. './src/timeline/component/GroupSet.js',
  66. './src/timeline/Timeline.js',
  67. './src/graph/dotparser.js',
  68. './src/graph/shapes.js',
  69. './src/graph/Node.js',
  70. './src/graph/Edge.js',
  71. './src/graph/Popup.js',
  72. './src/graph/Groups.js',
  73. './src/graph/Images.js',
  74. './src/graph/Cluster.js',
  75. './src/graph/Graph.js',
  76. './src/module/exports.js'
  77. ],
  78. separator: '\n',
  79. // Note: we insert the css as a string in the javascript code here
  80. // the css will be injected on load of the javascript library
  81. footer: '// inject css\n' +
  82. 'util.loadCss(' + cssText + ');\n'
  83. });
  84. // bundle the concatenated script and dependencies into one file
  85. var b = browserify();
  86. b.add(VIS_TMP);
  87. b.bundle({
  88. standalone: 'vis'
  89. }, function (err, code) {
  90. if(err) {
  91. throw err;
  92. }
  93. // add header and footer
  94. var lib = read('./src/module/header.js') + code;
  95. // write bundled file
  96. write(VIS, lib);
  97. console.log('created ' + VIS);
  98. // remove temporary file
  99. fs.unlinkSync(VIS_TMP);
  100. // update version number and stuff in the javascript files
  101. replacePlaceholders(VIS);
  102. complete();
  103. });
  104. });
  105. /**
  106. * minify the visualization library vis.js
  107. */
  108. desc('Minify the visualization library vis.js');
  109. task('minify', function () {
  110. // minify javascript
  111. minify({
  112. src: VIS,
  113. dest: VIS_MIN,
  114. header: read('./src/module/header.js')
  115. });
  116. // update version number and stuff in the javascript files
  117. replacePlaceholders(VIS_MIN);
  118. console.log('created ' + VIS_MIN);
  119. });
  120. /**
  121. * test task
  122. */
  123. desc('Test the library');
  124. task('test', ['build'], function () {
  125. // TODO: use a testing suite for testing: nodeunit, mocha, tap, ...
  126. var filelist = new jake.FileList();
  127. filelist.include([
  128. './test/**/*.js'
  129. ]);
  130. var files = filelist.toArray();
  131. files.forEach(function (file) {
  132. require('./' + file);
  133. });
  134. console.log('Executed ' + files.length + ' test files successfully');
  135. });
  136. /**
  137. * replace version, date, and name placeholders in the provided file
  138. * @param {String} filename
  139. */
  140. var replacePlaceholders = function (filename) {
  141. replace({
  142. replacements: [
  143. {pattern: '@@date', replacement: today()},
  144. {pattern: '@@version', replacement: version()}
  145. ],
  146. src: filename
  147. });
  148. };