aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt/odlux/apps/networkMapApp/src/services/mapImagesService.ts
blob: 30714b82a459cd4abb12ee2e980b3276d350b5d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/**
 * ============LICENSE_START========================================================================
 * ONAP : ccsdk feature sdnr wt odlux
 * =================================================================================================
 * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property. All rights reserved.
 * =================================================================================================
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 * ============LICENSE_END==========================================================================
 */

import * as mapboxgl from 'mapbox-gl';
import apartment from '../../icons/apartment.png';
import datacenter from '../../icons/datacenter.png';
import factory from '../../icons/factory.png';
import lamp from '../../icons/lamp.png';
import datacenterred from '../../icons/datacenterred.png';
import factoryred from '../../icons/factoryred.png';
import lampred from '../../icons/lampred.png';


type ImagesLoaded = (allImagesLoaded: boolean) => void;
type MapImages = {name: string, url: string}

export const Images : MapImages[]  = [
    {name: 'data-center', url: datacenter}, 
    {name: 'house', url: apartment}, 
    {name: 'factory', url: factory},
    {name: 'lamp', url: lamp},
    {name: 'data-center-red', url: datacenterred}, 
    {name: 'factory-red', url: factoryred},
    {name: 'lamp-red', url: lampred},
] ;

export const addImages = (map: mapboxgl.Map, callback?: ImagesLoaded) =>{

    Images.forEach(image => {
       
        map.loadImage(
            image.url,
            function (error: any, img: any) {
                if (error) throw error;
                map.addImage(image.name, img);
                allImagesLoaded(map, callback);
            });
    });
}

const allImagesLoaded = (map: mapboxgl.Map, callback?: ImagesLoaded) =>{

    const loadedImages = Images.map(image =>{
        return map.hasImage(image.name);
    });

    const allImagesLoaded = loadedImages.filter(el => !el);
    if(allImagesLoaded.length===0){
        callback && callback(true);
    }
}