home.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. (function () {
  2. "use strict";
  3. var itemsList = new WinJS.Binding.List();
  4. function getGroupKey(dataItem){
  5. return dataItem.group;
  6. }
  7. function getGroupData(dataItem){
  8. return {
  9. title: dataItem.group
  10. };
  11. }
  12. var groupedItemsList = itemsList.createGrouped(getGroupKey, getGroupData);
  13. WinJS.Namespace.define("home.babylonScenes", {
  14. groupedItemsList: groupedItemsList
  15. });
  16. WinJS.Namespace.define("home.userScenes", {
  17. data: new WinJS.Binding.List()
  18. });
  19. WinJS.UI.Pages.define("/pages/home/home.html", {
  20. // This function is called whenever a user navigates to this page. It
  21. // populates the page elements with the app's data.
  22. ready: function (element, options) {
  23. element.querySelector("#babylonScenesListView").addEventListener("iteminvoked", function (event) {
  24. event.detail.itemPromise.done(function (item) {
  25. if (!item.data.file) {
  26. WinJS.Navigation.navigate('/pages/sandbox/sandbox.html');
  27. return;
  28. }
  29. WinJS.Navigation.navigate('/pages/babylonScene/babylonScene.html', { babylonFolder: item.data.folder, babylonFile: item.data.file });
  30. });
  31. });
  32. var className = "ListItem";
  33. var onSceneFolderOpenCallback = function (rootFolder) {
  34. rootFolder.getFoldersAsync().then(function (folders) {
  35. var list = itemsList;
  36. var group = (rootFolder.name == "BabylonJS-Demos") ? "BabylonJS demos scenes" : "Your scenes"
  37. folders.forEach(function (folder) {
  38. folder.getFilesAsync().then(function (files) {
  39. for (var j in files) {
  40. var file = files[j];
  41. if (file.fileType != ".babylon") {
  42. continue;
  43. }
  44. var incremental = false;
  45. if (file.name.indexOf(".incremental.babylon") !== -1) {
  46. incremental = true;
  47. }
  48. list.push({
  49. title: folder.displayName.charAt(0).toUpperCase() + folder.displayName.slice(1),
  50. text: file.name,
  51. group: group,
  52. folder: rootFolder.name + "/" + folder.name,
  53. file: file.name,
  54. className: className
  55. });
  56. }
  57. });
  58. });
  59. });
  60. };
  61. if (itemsList.length == 0) {
  62. itemsList.push({
  63. title: "Sandbox",
  64. text: "BabylonJS Sandbox",
  65. group: "Sandbox",
  66. folder: null,
  67. file: null,
  68. className: className + " sandbox"
  69. });
  70. Windows.ApplicationModel.Package.current.installedLocation.getFolderAsync("BabylonJS-Demos").then(onSceneFolderOpenCallback);
  71. Windows.ApplicationModel.Package.current.installedLocation.getFolderAsync("addToPackage").then(onSceneFolderOpenCallback);
  72. }
  73. }
  74. });
  75. })();