home.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. WinJS.Navigation.navigate('/pages/babylonScene/babylonScene.html', { babylonFolder: item.data.folder, babylonFile: item.data.file });
  26. });
  27. });
  28. var onSceneFolderOpenCallback = function (rootFolder) {
  29. rootFolder.getFoldersAsync().then(function (folders) {
  30. var list = itemsList;
  31. var group = (rootFolder.name == "BabylonJS-Demos") ? "BabylonJS demos scenes" : "Your scenes"
  32. folders.forEach(function (folder) {
  33. folder.getFilesAsync().then(function (files) {
  34. for (var j in files) {
  35. var file = files[j];
  36. if (file.fileType != ".babylon") {
  37. continue;
  38. }
  39. var incremental = false;
  40. if (file.name.indexOf(".incremental.babylon") !== -1) {
  41. incremental = true;
  42. }
  43. list.push({
  44. title: folder.displayName.charAt(0).toUpperCase() + folder.displayName.slice(1),
  45. text: file.name,
  46. group: group,
  47. folder: rootFolder.name + "/" + folder.name,
  48. file: file.name
  49. });
  50. }
  51. });
  52. });
  53. });
  54. };
  55. if (itemsList.length == 0) {
  56. Windows.ApplicationModel.Package.current.installedLocation.getFolderAsync("BabylonJS-Demos").then(onSceneFolderOpenCallback);
  57. Windows.ApplicationModel.Package.current.installedLocation.getFolderAsync("addToPackage").then(onSceneFolderOpenCallback);
  58. }
  59. }
  60. });
  61. })();