function PowerPanel(type) {
this.setType(type);
}
PowerPanel.prototype.NIGHT_POWER = 0;
PowerPanel.typeList = {
"typeOne": 1,
"typeTwo": 2,
"typeThree": 3,
"typeFour": 4,
"typeFive": 5
};
PowerPanel.prototype.setType = function(type) {
if (!(type in PowerPanel.typeList)) {
throw new PowerPanelException("Неправильный тип панели");
}
this._type = PowerPanel.typeList[type];
};
function PowerPanelException(message) {
this.name = "PowerPanelException";
this.message = message;
}
function generator(name, conditions) {
var objects = [];
for (var key in conditions) {
for (var i = 0; i < conditions[key]; i++) {
objects.push(new name(key));
}
}
return objects;
}
var conditionsForPwrSt = {
"typeOne": 4,
"typeTwo": 0,
"typeThree": 2,
"typeFour": 1,
"typeFive": 2
};
var panels = generator("PowerPanel", conditionsForPwrSt);
console.log(panels);
ZnVuY3Rpb24gUG93ZXJQYW5lbCh0eXBlKSB7CiAgICB0aGlzLnNldFR5cGUodHlwZSk7Cn0KClBvd2VyUGFuZWwucHJvdG90eXBlLk5JR0hUX1BPV0VSID0gMDsKClBvd2VyUGFuZWwudHlwZUxpc3QgPSB7CiAgICAidHlwZU9uZSI6ICAgMSwKICAgICJ0eXBlVHdvIjogICAyLAogICAgInR5cGVUaHJlZSI6IDMsCiAgICAidHlwZUZvdXIiOiAgNCwKICAgICJ0eXBlRml2ZSI6ICA1Cn07CgpQb3dlclBhbmVsLnByb3RvdHlwZS5zZXRUeXBlID0gZnVuY3Rpb24odHlwZSkgewogICAgaWYgKCEodHlwZSBpbiBQb3dlclBhbmVsLnR5cGVMaXN0KSkgewogICAgICAgIHRocm93IG5ldyBQb3dlclBhbmVsRXhjZXB0aW9uKCLQndC10L/RgNCw0LLQuNC70YzQvdGL0Lkg0YLQuNC/INC/0LDQvdC10LvQuCIpOwogICAgfQogICAgdGhpcy5fdHlwZSA9IFBvd2VyUGFuZWwudHlwZUxpc3RbdHlwZV07Cn07CgpmdW5jdGlvbiBQb3dlclBhbmVsRXhjZXB0aW9uKG1lc3NhZ2UpIHsKICAgIHRoaXMubmFtZSAgICA9ICJQb3dlclBhbmVsRXhjZXB0aW9uIjsKICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7Cn0KCmZ1bmN0aW9uIGdlbmVyYXRvcihuYW1lLCBjb25kaXRpb25zKSB7CiAgICB2YXIgb2JqZWN0cyA9IFtdOwogICAgZm9yICh2YXIga2V5IGluIGNvbmRpdGlvbnMpIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbmRpdGlvbnNba2V5XTsgaSsrKSB7CiAgICAgICAgICAgIG9iamVjdHMucHVzaChuZXcgbmFtZShrZXkpKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gb2JqZWN0czsKfQoKdmFyIGNvbmRpdGlvbnNGb3JQd3JTdCA9IHsKICAgICJ0eXBlT25lIjogICA0LAogICAgInR5cGVUd28iOiAgIDAsCiAgICAidHlwZVRocmVlIjogMiwKICAgICJ0eXBlRm91ciI6ICAxLAogICAgInR5cGVGaXZlIjogIDIKfTsKdmFyIHBhbmVscyA9IGdlbmVyYXRvcigiUG93ZXJQYW5lbCIsIGNvbmRpdGlvbnNGb3JQd3JTdCk7CmNvbnNvbGUubG9nKHBhbmVscyk7