Jump to content

leons

uniGUI Subscriber
  • Posts

    55
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by leons

  1. Hi 

    I have the following problem. I use a Microfocus ODBC driver for Cobol flles. In design time when I connect with Firedac I can scroll through the rows and every time when I'm at the end of the grid the new data is automatically selected. In runtime I only see the first 50 rows and at the end the grid no new rows are fetched. The same issue with a DB2 ODBC driver.

    Does anyone have a solution / idea how to fix this?

    regards

    Leon 

  2. Hi Erich,

    Do you want to acces the files without the interaction of the user?
    I don’t think this is possible because it would be a real security issue.  It is against the concept of any browser. You have to use an agent on the user machine.

    Regards 

    Leon

  3. Hi 

    I've got this example from the forum. You have to set up the application in Azure.

     

                             UniSession.Log('Got Code - see if we can get an token...');
                             http:=TNetHTTPClient.Create(Self);
                             params:=Tstringlist.Create;
                             params.Add('code=' + UniMainmodule.AzureAuthCode);
                             params.Add('client_id=' + C_client_id_Az);
    //                         params.Add('client_secret=' + UriEncode(C_client_secret_Az));
                             params.Add('client_secret=' + C_client_secret_Az);
                             params.Add('scope=' + C_scope_Az);
                             params.Add('redirect_uri=' + C_redirect_uri_Az);
                             params.Add('grant_type=authorization_code');

                             Lresponse:=http.Post('https://login.microsoftonline.com/organizations/oauth2/v2.0/token', params);
                             UniSession.Log(Lresponse.ContentAsString());

                             if Lresponse.StatusText = 'OK' then
                             begin
                                  token:=GetSimpleValue(Lresponse.ContentAsString, 'access_token');
                                  GToken:=stringreplace (token,'"','',[rfreplaceall]);;
                                  UniSession.Log(Lresponse.ContentAsString);
                                  aMsg:=Lresponse.ContentAsString;


                                    //set username
                                   UniSession.Log('getuserInfo');
                                   lresponse := http.get ('https://graph.microsoft.com/v1.0/me',nil,[TNetHeader.Create('Authorization','Bearer ' + gtoken)]);
                                   if lresponse.StatusText='OK' then
                                   begin
                                     UniSession.Log(Lresponse.ContentAsString);
                                     unimainmodule.AUserName := stringreplace (GetSimpleValue (lresponse.ContentAsString,'mail'),'"','',[rfreplaceall]);
                                     unimainmodule.LoginType := 2;
                                   end;

                                    //


                                  Handled:=True;
                             end;

                            Except on E : exception do  unimainmodule.logintype := 0; // catch all unwanted exception here !

    It worked for me...

    Regards

    Leon

     

     

    logindemo.zip

    • Thanks 1
  4. +1

    Big thanks to @stevewong

    Just tried the Azure demo. It's a good starting point. I played with this a while ago and implemented it with javascript. I'm no very familiar with javascript possibilities (addjs...) and unigui. So at some point I got stucked. In the demo there is an issue when you login again after an succesful login. Then the callback situation is different. 

     

  5. Hi

    Is this possible to integrate with UniMap as Custom Maplayer? Targomo creates a layer on Maps.

    https://targomo.com/developers/libraries/javascript/code_example/googlemaps_polygons/

    Example HTML

    <!DOCTYPE html>
    <html>

    <head>
        <!--  Include google maps api -->
        <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&key=__your_google_api_key__"
            type="text/javascript"></script>
        <!--  Include targomo googlemaps full build -->
        <script src="https://releases.targomo.com/googlemaps/latest-full.min.js" type="text/javascript"></script>

        <style>
            html,
            body {
                width: 100%;
                height: 100%;
                margin: 0;
            }

            #map {
                width: 100%;
                height: calc(100% - 15px);
            }

            #attribution {
                width: 100%;
                height: 15px;
            }

            #attribution>a {
                float: right;
                font-size: 11px;
                line-height: 15px;
                padding: 0px 5px;
            }
        </style>
    </head>

    <body>
        <!--  where the map will live  -->
        <div id="map"></div>
        <div id="attribution"><a href='https://www.openstreetmap.org/copyright' target='_blank'>&copy; OpenStreetMap contributors</a> <a href='https://targomo.com/developers/resources/attribution/' target='_blank'>&copy; Targomo</a></div>

        <script>
            async function initMap() {
                // create targomo client
                const client = new tgm.TargomoClient('westcentraleurope', '__targomo_key_here__');

                // Coordinates to center the map
                const myLatlng = new google.maps.LatLng(52.36, 4.88);

                // define the map
                const map = new google.maps.Map(document.getElementById("map"), {
                    zoom: 11,
                    center: myLatlng,
                    mapTypeId: google.maps.MapTypeId.ROAD
                });

                // init the first marker
                const marker = new google.maps.Marker({
                    position: myLatlng,
                    map: map
                });

                // polygons time rings
                const travelTimes = [300, 600, 900, 1200, 1500, 1800];

                // you need to define some options for the polygon service
                const options = {
                    travelType: 'bike',
                    travelEdgeWeights: travelTimes,
                    maxEdgeWeight: 1800,
                    edgeWeight: 'time',
                    serializer: 'json'
                };

                // define the starting point
                const sources = [{ id: 0, lat: myLatlng.lat(), lng: myLatlng.lng() }];

                // define the polygon overlay
                const layer = new tgm.googlemaps.TgmGoogleMapsPolygonOverlay(map, {
                    strokeWidth: 20
                });

                // get the polygons
                const polygons = await client.polygons.fetch(sources, options);
                // calculate bounding box for polygons
                const bounds = polygons.getMaxBounds();
                // add polygons to overlay
                layer.setData(polygons);
                // zoom to the polygon bounds
                map.fitBounds(new google.maps.LatLngBounds(bounds.southWest, bounds.northEast), 0);
            }

            google.maps.event.addDomListener(window, 'load', initMap);
        </script>
    </body>

    </html>

    Regards

    Leon

     

     

     

    • Like 1
×
×
  • Create New...