Skip to content

Instantly share code, notes, and snippets.

@ramrrr
Last active December 20, 2015 08:59
Show Gist options
  • Select an option

  • Save ramrrr/6104168 to your computer and use it in GitHub Desktop.

Select an option

Save ramrrr/6104168 to your computer and use it in GitHub Desktop.
Error message:
<div class="container-fluid left-padded">
<div class="container-fluid">
<span class="heimdall-tip"><img alt="" src="/static/img/icon_hint_text.png"/>
{{t composer.recipient.hint}}
{{view.controller}}
</span>
<h1> {{t composer.event.summary}}</h1>
{{#if testSuccess}}
<div data-default-delete="#" id="defaultConfigDelete"
class="alert alert-warning fade in hidden">
<button type="button" class="close" data-dismiss="alert">&times;</button>
Test send success to whatever
</div>
{{/if}}
<div class="row-fluid form-inline">
<div class="span2"> <label > Alert Name </label> </div>
<div class="span2"><label > Recipients</label> </div>
<div class="span8"><label > Actions Available</label> </div>
</div>
{{#each alert in model.alerts}}
<div class="row-fluid form-inline">
<div class="span2">
<h2><a {{action toggleAlerts}}><i {{bindAttr
class="controller.alertsExpanded:icon-minus-sign:icon-plus-sign"}}></i> {{alert.name}}</a> </h2>
</div>
<div class="span2"><label class="">{{alert.totalCount}}</label></div>
<div class="span8">
<button class="icon-pencil" {{action edit alert}}></button>
<img src="/static/img/icon_TestSend.png" {{action setAlertModal alert}}>
<button class="icon-remove" {{action removeSelectedAlert alert}}></button>
</div>
</div>
<div {{bindAttr class=":send-element controller.alertsExpanded::collapse controller.alertsExpanded:in:"}}>
<div class="control-group">
<label class="control-label">Schedule</label>
<div class="controls">
{{view UI.DatePickerView valueBinding="alert.scheduledDate"}}
<div class="input-append bootstrap-timepicker-component">
{{view UI.TimePicker class="timepicker-default input-small" timeBinding="alert.scheduledDate"}}
<span class="add-on"><i class="icon-time"></i></span>
</div>
</div>
</div>
<div class="control-group">
<label class="control-label">Channels(count):</label>
<div class="controls">
{{# each channel in alert.channels}}
{{view App.ChannelIconView channelBinding=channel}}
{{/each}}
</div>
</div>
</div>
</div>
{{/each}}
</div>
</div>
<!--Test Send-->
{{#view UI.ModalView name="testSend" activeModalBinding="activeModal"}}
<div class="modal-header">
<button type="button" class="close"
{{action setModal "none"}} aria-hidden="true">?</button>
{{t event.summary.test.send.modal.header tagName="h3"}}
</div>
<div class="modal-body">
<div class="row-fluid">&nbsp;</div>
<div class="row-fluid form-inline">
<div class="span1"></div>
<div class="span11">
{{view Ember.Checkbox checkedBinding="testSendVoice"}}
<label>Voice </label>
</div>
</div>
<div class="row-fluid">&nbsp;</div>
<div class="row-fluid form-inline">
<div class="span1"></div>
<div class="span11">
{{view Ember.Checkbox checkedBinding="testSendSms"}}
<label class="form-inline" style="margin-bottom:4px;">SMS </label>
{{view view.parentView.voiceCountryCodeInput}}
</div>
</div>
<div class="row-fluid">&nbsp;</div>
<div class="row-fluid">&nbsp;</div>
<div class="row-fluid">&nbsp;</div>
</div>
<div class="modal-footer">
<button class="btn btn-primary" {{action sendTestAlert currentAlert}}>Send Test</button>
<button class="btn" {{action setModal "none"}}>CANCEL</button>
</div>
{{/view}}
<div class="menubar sendwizard">
{{view App.RootMenuView}}
<div class="container-fluid">
<div class="row-fluid">
<div class="span8">
<h4>{{ t send.direct.menu}}</h4>
</div>
<div class="pull-right form form-inline">
<label class="rightAlgnControlLbl control-label">{{t composer.mode}}:</label>
{{view Ember.Select contentBinding="simulationOptions"
optionValuePath="content.state"
optionLabelPath="content.name"
valueBinding="simulation"
class="input-small"}}
</div>
</div>
<div class="row-fluid form form-inline">
<div class="span12">
<label class="required">Event name:</label>
{{#if composing}}
{{view Ember.TextField valueBinding="name" class="x-large"}}
{{else}}
{{name}}
{{/if}}
</div>
</div>
<div class="row-fluid">
<div class="pull-right">
{{#if simulation}}
<span class="alert-access-mode">Training</span>
<img src="/static/img/icon_TrainingMode.png">
{{else}}
<span class="alert-access-mode">Live</span>
<img src="/static/img/icon_LiveMode.png">
{{/if}}
</div>
</div>
{{#if composing}}
<div class="bottom">
<ul class="nav nav-tabs">
{{#each alert in alerts}}
{{/each}}
<li><a {{action addAlert}} href="#">+ Add alert</a> </li>
</ul>
</div>
{{/if}}
</div>
</div>
{{#if composing}}
<div class="container-fluid">
{{render "eventAlert" activeAlert}} digi
<div class="form-actions">
<div class="btn-toolbar pull-right">
<button class="btn btn-primary" {{action verify}}>{{t composer.event.verify}}</button>
</div>
</div>
</div>
{{else}}
<div class="form-horizontal">
{{view App.AlertTabView alertBinding="alert"}}
<div class="form-actions">
<div class="btn-toolbar pull-right">
<button class="btn btn-primary" {{action sendAlert}}>{{t composer.event.send}}</button>
<button class="btn btn-primary" {{action cancelAlert}}>{{t common.cancel}}</button>
</div>
</div>
</div>
{{/if}}
<!-- Recipient info -->
<div>
{{#view UI.ModalView name="confirmDeleteAlert" activeModalBinding="activeModal"}}
<div class="modal-header">
<button type="button" class="close"
{{action setModal "none"}} aria-hidden="true">×</button>
{{t common.delete.header tagName="h3" nameBinding="alertToDelete.name"}}
</div>
<div class="modal-body">
{{t common.delete.confirm nameBinding="alertToDelete.name"}}
</div>
<div class="modal-footer">
<button class="btn" {{action setModal "none"}}>{{t common.no}}</button>
<button class="btn btn-primary" {{action confirmedRemoveAlert alertToDelete}}>{{t common.yes}}</button>
</div>
{{/view}}
</div>
<!-- Clear all alerts-->
<div>
{{#view UI.ModalView name="confirmDeleteAllAlert" activeModalBinding="activeModal"}}
<div class="modal-header">
<button type="button" class="close"
{{action setModal "none"}} aria-hidden="true">×</button>
Delete
</div>
<div class="modal-body">
{{t composer.all.alerts.delete.warning}}
</div>
<div class="modal-footer">
<button class="btn" {{action setModal "none"}}>{{t common.no}}</button>
<button class="btn btn-primary" {{action confirmedRemoveAllAlert}}>{{t common.yes}}</button>
</div>
{{/view}}
</div>
var App = require("core/App");
var HasModal = require("core/HasModal")
var Alert = require("./Alert");
var AlertController = require("./EventAlertController")
require("./AlertTabView")
require("./AlertSummaryView")
require("./ChannelIconView")
require("core/ui/TimePicker")
require("core/RootMenuView")
require("core/ui/DatePickerView")
require("admin/User")
require("admin/Organization")
function alertBoundValue(defaultValue) {
var values = {}
return function(key, value) {
if (!values[this.get("model")]) {
values[this.get("model")] = defaultValue;
}
if (arguments.length === 1) {
return values[this.get("model")];
} else {
values[this.get("model")] = value
return value;
}
}.property("model");
}
module.exports = App.EventController = Ember.ObjectController.extend(HasModal, {
composing: true,
currentAlert: null,
testSendVoice: false,
testSendSms: false,
testSuccess:false,
onContentChange: function() {
if (this.get("model.alerts.length") == 0) {
this.addAlert();
this.set("testSuccess",false) ;
}
}.observes("model"),
addAlert: function() {
// Calculate the next index to use.
var alertIndex = this.get("model.alerts")
// Get all alert names
.getEach("name")
// Get names matching Alert digits
.filter(function(name) { return /Alert (\d+)/.test(name)})
// Convert the alert name to a number
.map(function(name) { return parseInt(name.match(/Alert (\d+)/)[1]) })
// Get the max alert number + 1
.reduce(function(a, b) { return Math.max(a, b) + 1}, 1);
var alert = Alert.createRecord({
name: "Alert " + (alertIndex)
});
this.get("model.alerts").pushObject(alert);
alert.set("simulation", this.get("simuluation"));
this.selectAlert(alert) ;
},
renameAlert: function(alert) {
this.set("editAlert", alert);
},
saveAlertName: function() {
this.set("editAlert", null);
},
removeAlert: function(alert) {
if (this.get("model.alerts.length") > 1) {
this.set("alertToDelete", alert);
this.set("activeModal", "confirmDeleteAlert");
}
},
removeSelectedAlert: function(alert) {
this.set("alertToDelete", alert);
this.set("activeModal", "confirmDeleteAlert");
},
confirmedRemoveAlert: function(alert) {
this.set("activeModal", "none");
if (this.get("model.alerts.length") > 1) {
this.get("model.alerts").removeObject(alert);
if (this.get("activeAlert") == alert) {
this.selectAlert(this.get("model.alerts").objectAt(0));
}
}
},
cancelAlert:function(){
this.set("activeModal", "confirmDeleteAllAlert");
},
confirmedRemoveAllAlert:function(){
history.go(0);
},
singleAlert: function() {
return this.get("model.alerts.length") < 2;
}.property("model.alerts.length"),
activeAlert: function() {
return this.get("model.alerts").objectAt(0);
}.property("model.alerts"),
selectAlert:function(alert){
this.set("activeAlert", alert);
this.set("editAlert", null);
},
simulation: function(key, value) {
if (arguments.length === 1) {
return this.get("model.alerts").everyProperty("simulation")
} else {
this.get("model.alerts").setEach("simulation", value)
return value;
}
}.property("model.alerts.@each.simulation"),
simulationOptions: [
{state: false, name: Ember.I18n.t("composer.mode.live")},
{state: true, name: Ember.I18n.t("composer.mode.training")}
],
alertsExpanded: alertBoundValue(true),
toggleAlerts: function() {
this.set("alertsExpanded", !this.get("alertsExpanded"))
},
// Verify
verify: function() {
var self = this;
this.get("model").validate(function(ok) {
// Leave composing if the validation was ok
self.set("composing", !ok);
});
},
edit: function(alert) {
this.set("composing", true);
this.selectAlert(alert) ;
},
sendAlert: function() {
this.get("model.alerts").forEach(function(alert) {
alert.get("recipients").pushObjects(alert.get("draftRecipients").toArray());
})
$.ajax({
url:App.get("baseUrl") + "/sendDirect/ajax",
type:"POST",
data:JSON.stringify(this.get("model").serialize()),
contentType:"application/json; charset=utf-8",
dataType:"json",
success: function(data, textStatus, jqXHR) {
window.location = App.get("baseUrl") + "/monitor/status/event/" + data
}
}).fail(function(data) {
// TODO
});
} ,
setAlertModal: function(alert){
this.set('currentAlert',alert)
this.setModal('testSend')
},
sendTestAlert: function(currentAlert) {
this.setModal('none');
var data = { voiceChannel: currentAlert.getChannel(VoiceChannel).serialize(), testSendVoice: this.get("testSendVoice"), voiceAddress: currentAlert.get("testVoicePhone")}
alert(data);
$.ajax({
url:App.get("baseUrl") + "/sendDirect/testSend",
type:"POST",
data: data,
contentType:"application/json; charset=utf-8",
dataType:"json",
success: function(data, textStatus, jqXHR) {
this.set("testSuccess",true) ;
}
}).fail(function(data) {
// TODO
});
},
getChannel : function(type) {
return this.get("channel").find(function(coffee) {
return c instanceof type;
});
}
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment