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.

181 lines
4.4 KiB

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