Change parameter type
This commit is contained in:
@@ -180,13 +180,21 @@ class WSF_CONTROL
|
||||
process_actions: (actions)->
|
||||
for action in actions
|
||||
try
|
||||
fn = eval(action.type)
|
||||
fn(action)
|
||||
fn = null
|
||||
#Check if action exists in class then check global
|
||||
if @[action.type]?
|
||||
fn = @[action.type]
|
||||
fn.call(@, action)
|
||||
else
|
||||
fn = eval(action.type)
|
||||
fn(action)
|
||||
catch e
|
||||
console.log "Failed preforming action #{action.type}"
|
||||
|
||||
process_update: (new_states)->
|
||||
try
|
||||
if new_states.actions?
|
||||
@process_actions(new_states.actions)
|
||||
if new_states[@control_name]?
|
||||
@update(new_states[@control_name])
|
||||
for control in @controls
|
||||
@@ -289,8 +297,6 @@ class WSF_PAGE_CONTROL extends WSF_CONTROL
|
||||
@load_subcontrols()
|
||||
|
||||
process_update: (new_states)->
|
||||
if new_states.actions?
|
||||
@process_actions(new_states.actions)
|
||||
for control in @controls
|
||||
if control?
|
||||
control.process_update(new_states)
|
||||
@@ -361,6 +367,50 @@ class WSF_INPUT_CONTROL extends WSF_CONTROL
|
||||
@$el.val(state.text)
|
||||
|
||||
class WSF_FILE_CONTROL extends WSF_CONTROL
|
||||
constructor: ()->
|
||||
super
|
||||
@uploading = false
|
||||
start_upload: ()->
|
||||
if @uploading
|
||||
return
|
||||
@uploading = true
|
||||
@$el.hide()
|
||||
@progressbar = $ """<div class="progress"><div rstyle="width: 10%;" class="progress-bar"></div></div>"""
|
||||
@$el.parent().append(@progressbar)
|
||||
|
||||
formData = new FormData();
|
||||
action = @callback_url
|
||||
control_name: @control_name
|
||||
event: "uploadfile"
|
||||
event_parameter: ""
|
||||
file = @$el[0].files[0];
|
||||
formData.append('our-file', file)
|
||||
formData.append('state', JSON.stringify(@get_context_state()))
|
||||
@sendXHRequest(formData, action)
|
||||
|
||||
sendXHRequest: (formData, uri)->
|
||||
#Get an XMLHttpRequest instance
|
||||
xhr = new XMLHttpRequest();
|
||||
self = @
|
||||
onprogressHandler = (evt)->
|
||||
percent = evt.loaded/evt.total*100
|
||||
self.progressbar.find('.progress-bar').css {'width':percent+"%"}
|
||||
onloadHandler = (evt)->
|
||||
alert "DONE"
|
||||
xhr.upload.addEventListener('progress', onprogressHandler, false);
|
||||
xhr.upload.addEventListener('load', onloadHandler, false);
|
||||
|
||||
###Set up events
|
||||
xhr.upload.addEventListener('loadstart', onloadstartHandler, false);
|
||||
|
||||
|
||||
xhr.addEventListener('readystatechange', onreadystatechangeHandler, false);
|
||||
###
|
||||
#Set up request
|
||||
xhr.open('POST', uri, true);
|
||||
#Fire!
|
||||
xhr.send(formData);
|
||||
|
||||
attach_events: ()->
|
||||
super
|
||||
self = @
|
||||
|
||||
@@ -298,8 +298,14 @@ WSF_CONTROL = (function() {
|
||||
for (_i = 0, _len = actions.length; _i < _len; _i++) {
|
||||
action = actions[_i];
|
||||
try {
|
||||
fn = eval(action.type);
|
||||
_results.push(fn(action));
|
||||
fn = null;
|
||||
if (this[action.type] != null) {
|
||||
fn = this[action.type];
|
||||
_results.push(fn.call(this, action));
|
||||
} else {
|
||||
fn = eval(action.type);
|
||||
_results.push(fn(action));
|
||||
}
|
||||
} catch (e) {
|
||||
_results.push(console.log("Failed preforming action " + action.type));
|
||||
}
|
||||
@@ -310,6 +316,9 @@ WSF_CONTROL = (function() {
|
||||
WSF_CONTROL.prototype.process_update = function(new_states) {
|
||||
var control, _i, _len, _ref;
|
||||
try {
|
||||
if (new_states.actions != null) {
|
||||
this.process_actions(new_states.actions);
|
||||
}
|
||||
if (new_states[this.control_name] != null) {
|
||||
this.update(new_states[this.control_name]);
|
||||
_ref = this.controls;
|
||||
@@ -453,9 +462,6 @@ WSF_PAGE_CONTROL = (function(_super) {
|
||||
|
||||
WSF_PAGE_CONTROL.prototype.process_update = function(new_states) {
|
||||
var control, _i, _len, _ref;
|
||||
if (new_states.actions != null) {
|
||||
this.process_actions(new_states.actions);
|
||||
}
|
||||
_ref = this.controls;
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
control = _ref[_i];
|
||||
@@ -601,9 +607,58 @@ WSF_FILE_CONTROL = (function(_super) {
|
||||
__extends(WSF_FILE_CONTROL, _super);
|
||||
|
||||
function WSF_FILE_CONTROL() {
|
||||
return WSF_FILE_CONTROL.__super__.constructor.apply(this, arguments);
|
||||
WSF_FILE_CONTROL.__super__.constructor.apply(this, arguments);
|
||||
this.uploading = false;
|
||||
}
|
||||
|
||||
WSF_FILE_CONTROL.prototype.start_upload = function() {
|
||||
var action, file, formData;
|
||||
if (this.uploading) {
|
||||
return;
|
||||
}
|
||||
this.uploading = true;
|
||||
this.$el.hide();
|
||||
this.progressbar = $("<div class=\"progress\"><div rstyle=\"width: 10%;\" class=\"progress-bar\"></div></div>");
|
||||
this.$el.parent().append(this.progressbar);
|
||||
formData = new FormData();
|
||||
action = this.callback_url({
|
||||
control_name: this.control_name,
|
||||
event: "uploadfile",
|
||||
event_parameter: ""
|
||||
});
|
||||
file = this.$el[0].files[0];
|
||||
formData.append('our-file', file);
|
||||
formData.append('state', JSON.stringify(this.get_context_state()));
|
||||
return this.sendXHRequest(formData, action);
|
||||
};
|
||||
|
||||
WSF_FILE_CONTROL.prototype.sendXHRequest = function(formData, uri) {
|
||||
var onloadHandler, onprogressHandler, self, xhr;
|
||||
xhr = new XMLHttpRequest();
|
||||
self = this;
|
||||
onprogressHandler = function(evt) {
|
||||
var percent;
|
||||
percent = evt.loaded / evt.total * 100;
|
||||
return self.progressbar.find('.progress-bar').css({
|
||||
'width': percent + "%"
|
||||
});
|
||||
};
|
||||
onloadHandler = function(evt) {
|
||||
return alert("DONE");
|
||||
};
|
||||
xhr.upload.addEventListener('progress', onprogressHandler, false);
|
||||
xhr.upload.addEventListener('load', onloadHandler, false);
|
||||
/*Set up events
|
||||
xhr.upload.addEventListener('loadstart', onloadstartHandler, false);
|
||||
|
||||
|
||||
xhr.addEventListener('readystatechange', onreadystatechangeHandler, false);
|
||||
*/
|
||||
|
||||
xhr.open('POST', uri, true);
|
||||
return xhr.send(formData);
|
||||
};
|
||||
|
||||
WSF_FILE_CONTROL.prototype.attach_events = function() {
|
||||
var self;
|
||||
WSF_FILE_CONTROL.__super__.attach_events.apply(this, arguments);
|
||||
|
||||
@@ -100,6 +100,7 @@ feature
|
||||
do
|
||||
form.validate
|
||||
if form.is_valid then
|
||||
filebox.start_upload
|
||||
--progress.set_progress ((textbox1.text.to_integer_64 / textbox2.text.to_integer_64 * 100).ceiling)
|
||||
text := textbox1.text + " + " + textbox2.text + " = " + (textbox1.text.to_integer_64 + textbox2.text.to_integer_64).out
|
||||
text.append ("<ul>")
|
||||
|
||||
Reference in New Issue
Block a user