gautrais há 7 anos atrás
pai
commit
aef47058c9
2 ficheiros alterados com 26 adições e 4 exclusões
  1. 12 3
      client/js/jq.js
  2. 14 1
      client/js/ui_filepicker.js

+ 12 - 3
client/js/jq.js

@@ -297,7 +297,7 @@ class HTMLBuilder {
     }
    *
    */
-  static file(data={}, props={})
+  static file(data={}, props={}, onchange=undefined)
   {
       /*<form action="#">
         <div class="file-field input-field">
@@ -313,6 +313,7 @@ class HTMLBuilder {
       setDef(data, "btnLabel", "Ouvrir")
       setDef(props, "form", {})
       setDef(props, "btnDiv", {})
+
       var form = HTMLBuilder.elem('form', props.form);
         var wrapperDiv= HTMLBuilder.div({class: _row_class+_inline_fields});
 
@@ -321,10 +322,14 @@ class HTMLBuilder {
                 wrapperDiv.append(HTMLBuilder.div({class:_col_class()+_inline_fields},
                  HTMLBuilder.p(data.placeholder)));
             }
-            var fileDiv = HTMLBuilder.div(mc(props.fileDiv, _file_input_class+_col_class()))
+            var fileDiv = HTMLBuilder.div(mc(props.fileDiv, _file_input_class+_col_class(11)))
                 var btnDiv= HTMLBuilder.div({class: "btn "});
                     btnDiv.append(HTMLBuilder.span({}, data.btnLabel));
                     btnDiv.append(HTMLBuilder.input('file', {id: data.id+"_f"}));
+                    btnDiv.find("input").on('change', function(){
+                        $('#'+data.id+"_fp").val($( this ).
+                                val().replace(/C:\\fakepath\\/i, ''))
+                    });
                 fileDiv.append(btnDiv);
 
                 var textDiv = HTMLBuilder.div({class: _file_path_wrapper_class});
@@ -333,8 +338,12 @@ class HTMLBuilder {
                                 );
                 fileDiv.append(textDiv);
             wrapperDiv.append(fileDiv);
-            wrapperDiv.append(HTMLBuilder.iconButton('cloud_upload', {class: _col_class()+_inline_fields}));
+            wrapperDiv.append(HTMLBuilder.iconButton('cloud_upload',
+                        {class: _col_class(1)+_inline_fields, onclick: onclick}));
         form.append(wrapperDiv);
+
     return form;
   }
+
+
 }

+ 14 - 1
client/js/ui_filepicker.js

@@ -1,6 +1,8 @@
 class UIFilePicker extends UIElement {
   init()
   {
+      var idfp = this.elemId+"_fp";
+      var t=this;
       var size=(this.size)?this.size:12;
       var r = HTMLBuilder.rootElemDiv(size);
       var nsize=12;
@@ -8,9 +10,20 @@ class UIFilePicker extends UIElement {
       var x = HTMLBuilder.file({ id: this.elemId, placeholder: this.placeholder });
       r.append(x);
       doFac(r,this);
-
       this.root.append(r);
   }
+
+  getJson()
+  {
+      return $("#"+this.elemId+"_f").val().replace(/C:\\fakepath\\/i, '');
+  }
+
+  setValue(e)
+  {
+      var idfp = this.elemId+"_fp";
+      $('#'+idfp).val(e);
+  }
+
 }
 
 registerUiClass("file", UIFilePicker);