Jump to content

M.Ammar

uniGUI Subscriber
  • Posts

    191
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by M.Ammar

  1. On 9/4/2023 at 4:11 PM, Hayri ASLAN said:

    Hello

    Google map works. Did you check the demo?

    I'll check how to add images as layer

     

    Thank you for reply,

    - you are correct google maps are working it was error in the Key,

    - i was trying a deferent solution by adding the floor plan layer by importing a KML file,

    i had some success on making the example work on the Demos\Desktop\GoogleMaps project using the UniHTMLFrame, but i need this to be working on the unimap component because i need all the other functions available

    can you help me, here is the example:

    <!DOCTYPE html>
    <html>
      <head>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
        <meta charset="utf-8">
        <title>KML Click Capture Sample</title>
        <style>
          html, body {
            height: 370px;
            padding: 0;
            margin: 0;
            }
          #map {
           height: 360px;
           width: 300px;
           overflow: hidden;
           float: left;
           border: thin solid #333;
           }
          #capture {
           height: 360px;
           width: 480px;
           overflow: hidden;
           float: left;
           background-color: #ECECFB;
           border: thin solid #333;
           border-left: none;
           }
        </style>
      </head>
      <body>
        <div id="map"></div>
        <div id="capture"></div>
        <script>
          var map;
          var src = 'https://developers.google.com/maps/documentation/javascript/examples/kml/westcampus.kml';
    
          function initMap() {
            map = new google.maps.Map(document.getElementById('map'), {
              center: new google.maps.LatLng(-19.257753, 146.823688),
              zoom: 2,
              mapTypeId: 'terrain'
            });
    
            var kmlLayer = new google.maps.KmlLayer(src, {
              suppressInfoWindows: true,
              preserveViewport: false,
              map: map
            });
            kmlLayer.addListener('click', function(event) {
              var content = event.featureData.infoWindowHtml;
              var testimonial = document.getElementById('capture');
              testimonial.innerHTML = content;
            });
          }
        </script>
        <script async
        src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY_HERE&callback=initMap">
        </script>
      </body>
    </html>

     

    The example is from google and it is working fine but i removed my API Key : in YOUR_API_KEY_HERE

    Can the same idea work with the UniMap?

    best regards

     

  2. Hi, 

    Regarding Tunimap i have 2 questions,

    1- i have been using TuniMap with OSM layer because google never worked for me "empty page" although i set up UniMapKeys in servermodule like the demo and the same key is working for another ASP.net project with no issue.

    2- how can i add a very large floor plan layer (1200m * 900m) on certain location, can i use Png file and how can i do it? as i cannot Drow over 1000 irregular shape

    currently testing with V 1.90.0.1568

    regards

     

     

  3. On 3/17/2021 at 11:05 PM, SISBLU Software said:

    Solved (USING IIS)

    I had to PUT ALL my private DLLs in the folder: SysWOW64

    Unigui did not accept DLLs in the application folder (EXE or DLL)

    hi I am facing the same issue with windows server 2022, I have done this many times before in 2016 no problem, can you explain what did you do exactly ??

    Regards

  4. hi,

    I have deferent scenario to add to irigsoft post,

    I got  2 external Ip address from the service provider.

    First Ip Address say 65.14.25.63 this is the router address. 

    and 2nd is 65.14.25.64 this is used at the domain name hosting (GoDaddy for example ) DNS settings to point to the application server

    the service provider will route(redirect) any requests coming to the application server to your router address (63)  )

     I think this next step is what missing for you >>

    You have to configure the router to route(redirect) any requested coming for IP(64) to your application server internal IP address (192.168.100.5)  for example

    Note: this setup running the 2 applications on IIS hosting .

     

     

  5. hi snow

    I don't know if this will help you but try it.

    - I had to make a frame that have more components than that depend on the user selection I create from 500 up to 1800 unipanel that have labels and other controls ,

    running this at one go take up to 50 sec sometimes,

    I tested with uniTimer and created the panels in patches each time no more than 200 panel and now it takes 19 sec that is 60% faster.

    - another note that surprised me and I cannot explain that documentation and other posts say to create(self) is faster but with testing create(uniParentPanel) saved me one sec.

    - lastly try to redesign your frame, removing even one repeating label make deferent at these high numbers

    regards

     

  6. Hi @Fred Montier

    I agree with what you said, but you seem to misunderstand the target I seek in responsiveness, first of all the Sencha Touch for me is totally useless because of RTL issues

    so the only solution for me if I wanted to use UniGui is to use the Desktop edition, I am aware that it will never be a prefect solution But it is the only one I have as a single developer with minimum JS, HTML and CSS knowledge,

    that's why I recommended for him to use the mobile version, we are not asking for much , a third party developer did what we want using only a Hint Property while the UniGui Teem cannot do it for many years, is it much to ask ??

    maybe it is not good for you, but good enough for others

    Regards

     

  7. HI, @rencarnacion I have seen it but I cannot test it to be sure, and I agree with you, if uniGui cannot make a built-in responsiveness feature like this one as promised in 2019 roadmap , I think this will be an alternative solution, I can pay a reasonable fee extra for the license only if it is included as built-in and supported by uniGui.

    Edit My Suggestion instead of the -useless form me -  Sencha Touch in the uniGUI Complete - Professional Edition make another edition with responsiveness 

    Regards

  8. 39 minutes ago, Sherzod said:
    
    function store.load(sender, records, successful, operation, eOpts)
    {
        Ext.defer(function() {
            ajaxRequest(sender, '_load', [])
        }, 20);
    }
    
    procedure TMainForm.UniDBGrid1AjaxEvent(Sender: TComponent; EventName: string;
      Params: TUniStrings);
    begin
      if EventName = '_load' then
        RestoreSelection
    
    end;

     

     

    I really don't know how to thanks you enough for this one

    • Like 1
  9. Hi, 

    the mobile edition is more suitable for touch  and phone size, But I learned the hard way that is is not Good if your language is RTL it has so many issues, or at least the last time I used it ,

    now I use only the desktop edition and try to make it fit for mobile But it is not the same user experience, I have been waiting for 2 years now for a responsiveness and I hope it will be the solution for using only the desktop Edition.

    if your language not RTL I defiantly recommend using it for mobile , it is double work in the GUI but it worth it.

    regards

  10. 17 hours ago, mhmda said:

    Easy, then call your button from the js code (at load event as shown in picture like this:)

    
    MainForm.mybutton.fireEvent('click',MainForm.mybutton);

    Remember for security issue the button should be visible otherwise it will not work (at design time) in order to hide it @ runtime then use UniEvents->beforeInit and set hidden to true:

    
    function beforeInit(sender, config)
    {
      config.hidden=true;
    }

    OR

    Put your button on UniHiddenPanel 🙂

    thanks again for your help I am learning a lot from you 🙂

    it has the same outcome,  I noticed that the selection is resorted successfully in the grid but it is not visibly selected, if edited again all old selection is modified correctly, the only issue is that only one selection is Visible

    I Modified one of the demos to explain.

    first select more than one record then click edit button , change category and click again you will see the issue

    GridMultiSelect - Checkbox.rar

  11. 3 hours ago, mhmda said:

    image.png.489c98d7e6ef7ee7836668472b99378c.png

    This is a client-side code and it happens after loading data 😉

    thank you mohamed for your help 

    procedure TfrmReptTransactionManagment.UniDBGridListAjaxEvent(
       Sender: TComponent; EventName: string; Params: TUniStrings);
    begin
       if EventName = 'load' then
          RestoreSelection();
    end;

    it correctly call the restore procedure as you expected, but for some reason it is not working, but if I called by UniButton it works and I restore all selections.

    regards 

  12. Hi Sherzod

    I found one old topic that you have provided a solution and it is working but I have 2 issues

    procedure TfrmReptTransactionManagment.RestoreSelection();
    var
       DBGridJSName: string;
       I: Integer;
    begin
       DBGridJSName := UniDBGridList.JSName;
       for I := 0 to SelectionList.Count - 1 do
       begin
          DBGridJSName := UniDBGridList.JSName;
          UniSession.AddJS(DBGridJSName + '.getSelectionModel().select(' + DBGridJSName + '.getStore().data.indexOfKey(' + SelectionList[I] + '), true)');
       end;
    end;

    1- calling this restore directly after the post action don't work I think because the grid in refresh, I had to use a button to call it after the post, is there is another way to call it after the grid refreshed?

    2- I need to unselect any other selected rows before restoring the selection.

    Regards

  13. 4 hours ago, Sherzod said:

    Hello,

    Do you mean an insert operation, or also an edit?

    Hi

    No Insert Operation in this Form, All Edit but I post values to the data source Via Looping Selected Rows  

       try
          FDQry.DisableControls;
          for I := 0 to UniDBGridList.SelectedRows.Count - 1 do
          begin
             FDQry.Bookmark := UniDBGridList.SelectedRows[I];
             FDQry.Edit;
             FDQrydeedTyName.AsString := UniCBDeedTyName.Text;
             FDQry.Post;
          end;
       finally
          FDQry.EnableControls;
          UniDBGridList.Refresh;
       end;

    so It Causes the selection to be at the last Selected Row after refreshing Grid

     

  14. 19 minutes ago, Sherzod said:

    Thanks for the testcase.

    Yes you are right. 

    Okay. Let's take into account the width of the icon.

    tWidth += 30;

    
    function store.nodeappend(sender, node, index, eOpts)
    {
        var _this=this;
        this.treePanel.getItem(node).el.on('mouseover', function() {
            textMetrics = new Ext.util.TextMetrics();
            tWidth      = textMetrics.getWidth(node.data.text);
            tWidth     += 30;
            if (tWidth > _this.treePanel.getWidth()) {
                _this.treePanel.getItem(node).el.dom.setAttribute('data-qtip', node.data.text);
            }
        });
        
        this.treePanel.getItem(node).el.on('mouseout', function() {
            _this.treePanel.getItem(node).el.dom.setAttribute('data-qtip', '');
        });
    }

     

    Thanks Sherzod 

    Working Perfect for English,

    Note: For Arabic I had to add 130 not 30.

    Regards

    • Like 1
  15. 13 hours ago, Sherzod said:

    Can you try this approach?

    
    function store.nodeappend(sender, node, index, eOpts)
    {
        var _this=this;
        this.treePanel.getItem(node).el.on('mouseover', function() {
            textMetrics = new Ext.util.TextMetrics();
            tWidth      = textMetrics.getWidth(node.data.text);
            if (tWidth > _this.treePanel.getWidth()) {
                _this.treePanel.getItem(node).el.dom.setAttribute('data-qtip', node.data.text);
            }
        });
        
        this.treePanel.getItem(node).el.on('mouseout', function() {
            _this.treePanel.getItem(node).el.dom.setAttribute('data-qtip', '');
        });
    }

     

    Hi
    I have tested this and I didn't Work.

    regards 

×
×
  • Create New...