From 6761d22fa8bd5a2d7f104d32bbac5e8e709ffc65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Severin=20M=C3=BCnger?= Date: Sun, 15 Sep 2013 01:55:17 +0200 Subject: [PATCH] Added Progress Control --- examples/widgetapp/widget.coffee | 19 ++++-- .../progressbar/wsf_progress_control.e | 59 +++++++++++++++++++ .../progressbar/wsf_progresssource.e | 16 +++++ library/server/wsf_html/wsf_html-safe.ecf | 1 + 4 files changed, 90 insertions(+), 5 deletions(-) create mode 100644 library/server/wsf_html/webcontrol/progressbar/wsf_progress_control.e create mode 100644 library/server/wsf_html/webcontrol/progressbar/wsf_progresssource.e diff --git a/examples/widgetapp/widget.coffee b/examples/widgetapp/widget.coffee index 5e652bfb..b570e09e 100644 --- a/examples/widgetapp/widget.coffee +++ b/examples/widgetapp/widget.coffee @@ -96,6 +96,7 @@ class WSF_BUTTON_CONTROL extends WSF_CONTROL @$el.click (e)-> e.preventDefault() self.click() + click: ()-> if window.states[@control_name]['callback_click'] trigger_callback(@control_name, 'click') @@ -247,16 +248,24 @@ class WSF_CHECKBOX_LIST_CONTROL extends WSF_CONTROL result.push(subc.checked_value) return result +class WSF_PROGRESS_CONTROL extends WSF_CONTROL + + update: (state)-> + if state.progress? + window.states[@control_name]['progress'] = state.progress + $('#' + @control_name).children('.progress-bar').attr('aria-valuenow', state.progress).width(state.progress + '%') + #map class name to effective class typemap = - "WSF_BUTTON_CONTROL":WSF_BUTTON_CONTROL - "WSF_INPUT_CONTROL":WSF_INPUT_CONTROL - "WSF_TEXTAREA_CONTROL":WSF_TEXTAREA_CONTROL - "WSF_AUTOCOMPLETE_CONTROL":WSF_AUTOCOMPLETE_CONTROL - "WSF_CHECKBOX_CONTROL":WSF_CHECKBOX_CONTROL + "WSF_BUTTON_CONTROL": WSF_BUTTON_CONTROL + "WSF_INPUT_CONTROL": WSF_INPUT_CONTROL + "WSF_TEXTAREA_CONTROL": WSF_TEXTAREA_CONTROL + "WSF_AUTOCOMPLETE_CONTROL": WSF_AUTOCOMPLETE_CONTROL + "WSF_CHECKBOX_CONTROL": WSF_CHECKBOX_CONTROL "WSF_FORM_ELEMENT_CONTROL": WSF_FORM_ELEMENT_CONTROL "WSF_HTML_CONTROL": WSF_HTML_CONTROL "WSF_CHECKBOX_LIST_CONTROL": WSF_CHECKBOX_LIST_CONTROL + "WSF_PROGRESS_CONTROL": WSF_PROGRESS_CONTROL #create a js class for each control for name,state of window.states diff --git a/library/server/wsf_html/webcontrol/progressbar/wsf_progress_control.e b/library/server/wsf_html/webcontrol/progressbar/wsf_progress_control.e new file mode 100644 index 00000000..f41fe96b --- /dev/null +++ b/library/server/wsf_html/webcontrol/progressbar/wsf_progress_control.e @@ -0,0 +1,59 @@ +note + description: "Summary description for {WSF_PROGRESS_CONTROL}." + author: "" + date: "$Date$" + revision: "$Revision$" + +class + WSF_PROGRESS_CONTROL + +inherit + + WSF_CONTROL + +create + make_progress + +feature {NONE} -- Initialization + + make_progress (n: STRING; p: WSF_PROGRESSSOURCE) + do + make_control (n, "div") + add_class ("progress") + progress_source := p + end + +feature -- State handling + + set_state (new_state: JSON_OBJECT) + do + end + + state: JSON_OBJECT + do + create Result.make + Result.put (create {JSON_NUMBER}.make_integer (progress_source.progress), "progress") + end + +feature -- Event handling + + handle_callback (cname: STRING; event: STRING) + do + if cname.is_equal (control_name) and event.is_equal ("progress_fetch") then + state_changes.put (create {JSON_NUMBER}.make_integer (progress_source.progress), create {JSON_STRING}.make_json ("progress")) + end + end + +feature -- Rendering + + render: STRING + do + Result := render_tag_with_tagname ("div", "", "role=%"progressbar%" aria-valuenow=%"" + progress_source.progress.out + "%" aria-valuemin=%"0%" aria-valuemax=%"100%" style=%"width: " + progress_source.progress.out + "%%;%"", "progress-bar") + Result := render_tag (Result, "") + end + +feature + + progress_source: WSF_PROGRESSSOURCE + +end diff --git a/library/server/wsf_html/webcontrol/progressbar/wsf_progresssource.e b/library/server/wsf_html/webcontrol/progressbar/wsf_progresssource.e new file mode 100644 index 00000000..e581b1dd --- /dev/null +++ b/library/server/wsf_html/webcontrol/progressbar/wsf_progresssource.e @@ -0,0 +1,16 @@ +note + description: "Summary description for {WSF_PROGRESSSOURCE}." + author: "" + date: "$Date$" + revision: "$Revision$" + +deferred class + WSF_PROGRESSSOURCE + +feature + + progress: INTEGER + deferred + end + +end diff --git a/library/server/wsf_html/wsf_html-safe.ecf b/library/server/wsf_html/wsf_html-safe.ecf index 35670474..5de37699 100644 --- a/library/server/wsf_html/wsf_html-safe.ecf +++ b/library/server/wsf_html/wsf_html-safe.ecf @@ -25,6 +25,7 @@ +