PageRenderTime 28ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/modules/tools/gfi/themes/list.js

https://bitbucket.org/nicjen/lgv
JavaScript | 162 lines | 149 code | 7 blank | 6 comment | 24 complexity | 534e171f286059e17f63e5c22d8a91f1 MD5 | raw file
  1. define(function (require) {
  2. var Backbone = require("backbone"),
  3. DefaultThemeView = require("modules/tools/gfi/themes/default/view"),
  4. DefaultTheme = require("modules/tools/gfi/themes/default/model"),
  5. TableThemeView = require("modules/tools/gfi/themes/table/view"),
  6. TableTheme = require("modules/tools/gfi/themes/table/model"),
  7. ReisezeitenThemeView = require("modules/tools/gfi/themes/reisezeiten/view"),
  8. ReisezeitenTheme = require("modules/tools/gfi/themes/reisezeiten/model"),
  9. SolaratlasThemeView = require("modules/tools/gfi/themes/solaratlas/view"),
  10. SolaratlasTheme = require("modules/tools/gfi/themes/solaratlas/model"),
  11. TrinkwasserThemeView = require("modules/tools/gfi/themes/trinkwasser/view"),
  12. TrinkwasserTheme = require("modules/tools/gfi/themes/trinkwasser/model"),
  13. MietenspiegelThemeView = require("modules/tools/gfi/themes/mietenspiegel/view"),
  14. MietenspiegelTheme = require("modules/tools/gfi/themes/mietenspiegel/model"),
  15. SgvOnlineTheme = require("modules/tools/gfi/themes/sgvonline/model"),
  16. SgvOnlineThemeView = require("modules/tools/gfi/themes/sgvonline/view"),
  17. VerkehrsStaerkenTheme = require("modules/tools/gfi/themes/verkehrsstaerken/model"),
  18. VerkehrsStaerkenThemeView = require("modules/tools/gfi/themes/verkehrsstaerken/view"),
  19. SchulInfoTheme = require("modules/tools/gfi/themes/schulinfo/model"),
  20. SchulInfoThemeView = require("modules/tools/gfi/themes/schulinfo/view"),
  21. VerkehrsStaerkenRadTheme = require("modules/tools/gfi/themes/verkehrsstaerken_rad/model"),
  22. VerkehrsStaerkenRadThemeView = require("modules/tools/gfi/themes/verkehrsstaerken_rad/view"),
  23. ItGbmTheme = require("modules/tools/gfi/themes/itgbm/model"),
  24. ItGbmThemeView = require("modules/tools/gfi/themes/itgbm/view"),
  25. FlaecheninfoTheme = require("modules/tools/gfi/themes/flaecheninfo/model"),
  26. FlaecheninfoThemeView = require("modules/tools/gfi/themes/flaecheninfo/view"),
  27. ThemeList;
  28. ThemeList = Backbone.Collection.extend({
  29. model: function (attrs, options) {
  30. if (attrs.gfiTheme === "table") {
  31. return new TableTheme(attrs, options);
  32. }
  33. else if (attrs.gfiTheme === "reisezeiten") {
  34. return new ReisezeitenTheme(attrs, options);
  35. }
  36. else if (attrs.gfiTheme === "solaratlas") {
  37. return new SolaratlasTheme(attrs, options);
  38. }
  39. else if (attrs.gfiTheme === "trinkwasser") {
  40. return new TrinkwasserTheme(attrs, options);
  41. }
  42. else if (attrs.gfiTheme === "mietenspiegel") {
  43. return new MietenspiegelTheme(attrs, options);
  44. }
  45. else if (attrs.gfiTheme === "sgvonline") {
  46. return new SgvOnlineTheme(attrs, options);
  47. }
  48. else if (attrs.gfiTheme === "verkehrsstaerken") {
  49. return new VerkehrsStaerkenTheme(attrs, options);
  50. }
  51. else if (attrs.gfiTheme === "schulinfo") {
  52. return new SchulInfoTheme(attrs, options);
  53. }
  54. else if (attrs.gfiTheme === "verkehrsstaerken_rad") {
  55. return new VerkehrsStaerkenRadTheme(attrs, options);
  56. }
  57. else if (attrs.gfiTheme === "itgbm") {
  58. return new ItGbmTheme(attrs, options);
  59. }
  60. else if (attrs.gfiTheme === "flaecheninfo") {
  61. return new FlaecheninfoTheme(attrs, options);
  62. }
  63. else {
  64. return new DefaultTheme(attrs, options);
  65. }
  66. },
  67. initialize: function () {
  68. this.listenTo(this, {
  69. "reset": function () {
  70. this.forEach(function (model) {
  71. model.requestFeatureInfos();
  72. });
  73. },
  74. "change:isReady": function () {
  75. if (_.contains(this.pluck("isReady"), false) === false) {
  76. // Wenn alle Model ihre GFI abgefragt und bearbeitet haben
  77. // WMS Layer die beim Klickpunkt keine GFIs haben
  78. var removeModels = this.filter(function (model) {
  79. return model.get("gfiContent") === undefined;
  80. });
  81. this.remove(removeModels);
  82. this.forEach(this.addView, this);
  83. // listener in modules/tools/gfi/model.js
  84. this.trigger("isReady");
  85. }
  86. }
  87. });
  88. },
  89. addView: function (model) {
  90. switch (model.get("gfiTheme")) {
  91. case "table": {
  92. new TableThemeView({model: model});
  93. break;
  94. }
  95. case "reisezeiten": {
  96. new ReisezeitenThemeView({model: model});
  97. break;
  98. }
  99. case "solaratlas": {
  100. new SolaratlasThemeView({model: model});
  101. break;
  102. }
  103. case "trinkwasser": {
  104. new TrinkwasserThemeView({model: model});
  105. break;
  106. }
  107. case "mietenspiegel": {
  108. new MietenspiegelThemeView({model: model});
  109. break;
  110. }
  111. case "sgvonline": {
  112. new SgvOnlineThemeView({model: model});
  113. break;
  114. }
  115. case "verkehrsstaerken": {
  116. new VerkehrsStaerkenThemeView({model: model});
  117. break;
  118. }
  119. case "schulinfo": {
  120. new SchulInfoThemeView({model: model});
  121. break;
  122. }
  123. case "verkehrsstaerken_rad": {
  124. new VerkehrsStaerkenRadThemeView({model: model});
  125. break;
  126. }
  127. case "itgbm": {
  128. new ItGbmThemeView({model: model});
  129. break;
  130. }
  131. case "flaecheninfo": {
  132. new FlaecheninfoThemeView({model: model});
  133. break;
  134. }
  135. default: {
  136. new DefaultThemeView({model: model});
  137. }
  138. }
  139. },
  140. appendTheme: function (value) {
  141. this.setAllInVisible();
  142. this.at(value).setIsVisible(true);
  143. Radio.trigger("MouseHover", "hide");
  144. },
  145. /**
  146. * Setzt visibility aller Themes auf false
  147. */
  148. setAllInVisible: function () {
  149. this.forEach(function (model) {
  150. model.setIsVisible(false);
  151. });
  152. }
  153. });
  154. return ThemeList;
  155. });