step1_view.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one or more
  3. * contributor license agreements. See the NOTICE file distributed with this
  4. * work for additional information regarding copyright ownership. The ASF
  5. * licenses this file to you under the Apache License, Version 2.0 (the
  6. * "License"); you may not use this file except in compliance with the License.
  7. * You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  13. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  14. * License for the specific language governing permissions and limitations under
  15. * the License.
  16. */
  17. var App = require('app');
  18. App.WizardStep1View = Em.View.extend({
  19. templateName: require('templates/wizard/step1'),
  20. stacks: function () {
  21. var stacks = [];
  22. this.get('controller.content.stacks').forEach(function (stack) {
  23. stacks.pushObject(Em.Object.create({
  24. name: stack.get('name').replace('-', ' '),
  25. isSelected: stack.get('isSelected')
  26. }));
  27. });
  28. return stacks;
  29. }.property('controller.content.stacks.@each.isSelected'),
  30. isAddOSDisabled: true,
  31. localRepositories: [],
  32. defaultRepositories: [],
  33. refreshRepositoryInfo: function () {
  34. var selectedStack = this.get('controller.content.stacks').findProperty('isSelected', true);
  35. var localRepos = [];
  36. var defaultRepos = [];
  37. if (selectedStack && selectedStack.operatingSystems) {
  38. selectedStack.operatingSystems.forEach(function (os) {
  39. if (os.baseUrl !== os.defaultBaseUrl) {
  40. localRepos.push($.extend({}, os));
  41. } else {
  42. defaultRepos.push($.extend({}, os));
  43. }
  44. });
  45. }
  46. this.set('localRepositories', localRepos);
  47. this.set('defaultRepositories', defaultRepos);
  48. this.set('isAddOSDisabled', defaultRepos.get('length') < 1);
  49. }.observes('controller.content.stacks.@each.isSelected', 'controller.content.stacks.@each.operatingSystems.@each.baseUrl'),
  50. stackRadioButton: Ember.Checkbox.extend({
  51. tagName: 'input',
  52. attributeBindings: [ 'type', 'checked' ],
  53. checked: function () {
  54. return this.get('content.isSelected');
  55. }.property('content.isSelected'),
  56. type: 'radio',
  57. click: function () {
  58. this.get('controller.content.stacks').setEach('isSelected', false);
  59. this.get('controller.content.stacks').findProperty('name', this.get('content.name').replace(' ', '-')).set('isSelected', true);
  60. }
  61. }),
  62. removeLocalRepository: function (event) {
  63. var localRepo = event.context;
  64. var selectedStack = this.get('controller.content.stacks').findProperty('isSelected', true);
  65. var cos = selectedStack.operatingSystems.findProperty('osType', localRepo.osType);
  66. cos.baseUrl = cos.defaultBaseUrl;
  67. this.refreshRepositoryInfo();
  68. },
  69. addLocalRepository: function () {
  70. var self = this;
  71. var defaultRepos = self.get('defaultRepositories');
  72. var selectedStack = this.get('controller.content.stacks').findProperty('isSelected', true);
  73. App.ModalPopup.show({
  74. // classNames: ['big-modal'],
  75. classNames: [ 'sixty-percent-width-modal' ],
  76. header: "Add Local Repository",
  77. primary: 'Add',
  78. secondary: 'Cancel',
  79. onPrimary: function () {
  80. var error = null;
  81. var childViews = this.get('childViews');
  82. if (childViews && childViews.get('length') > 0) {
  83. var childView = childViews.objectAt(0);
  84. if (childView) {
  85. if (childView.get('enteredUrl')) {
  86. if (childView.get('selectedOS').baseUrl !== childView.get('enteredUrl') && childView.get('selectedOS').defaultBaseUrl !== childView.get('enteredUrl')) {
  87. var selectedStack = self.get('controller.content.stacks').findProperty('isSelected', true);
  88. var cos = selectedStack.operatingSystems.findProperty('osType', childView.get('selectedOS').osType);
  89. cos.baseUrl = childView.get('enteredUrl');
  90. self.refreshRepositoryInfo();
  91. this.hide();
  92. } else {
  93. error = Em.I18n.t('installer.step1.advancedRepo.localRepo.error.modifyUrl');
  94. }
  95. } else {
  96. error = Em.I18n.t('installer.step1.advancedRepo.localRepo.error.noUrl')
  97. }
  98. if (!childView.get('isDestroyed') && !childView.get('isDestroying') && childView.get('isVisible'))
  99. childView.set('errorMessage', error);
  100. }
  101. }
  102. },
  103. onSecondary: function () {
  104. this.hide();
  105. },
  106. bodyClass: Ember.View.extend({
  107. templateName: require('templates/wizard/step1_addLocalRepository'),
  108. controller: self.get('controller'),
  109. stackName: selectedStack.get('name'),
  110. selectedOS: defaultRepos.objectAt(0),
  111. enteredUrl: defaultRepos.objectAt(0).baseUrl,
  112. oses: defaultRepos,
  113. errorMessage: null,
  114. selectOS: function (event) {
  115. var os = event.context;
  116. this.set('selectedOS', os);
  117. this.set('enteredUrl', os.baseUrl);
  118. }
  119. })
  120. });
  121. }
  122. });