aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-ui/app/scripts/models/graph/nodes/base-common-node.ts
blob: e1957e61aa5bb33d5e1656860f9fa00d8711982b (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
67
68
69
70
71
72
73
/*-
 * ============LICENSE_START=======================================================
 * SDC
 * ================================================================================
 * Copyright (C) 2017 AT&T 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=========================================================
 */
/**
 * Created by obarda on 6/29/2016.
 */
/// <reference path="../../../references"/>

module Sdc.Models.Graph {
    'use strict';

    export abstract class CommonNodeBase {

        public displayName:string;
        public name:string;
        public img:string;
        public certified:boolean;
        public isGroup:boolean;
        public imagesPath: string;
        public isDraggable: boolean; //we need to to manage manually the dragging on the graph inside groups (ucpe-cp is not draggable)

        //cytoscape fields
        public id:string;
        public type:string; //type is for the edge edition extension, by type we put the green plus icon in position
        public isSdcElement:boolean; //this fields is in order to filter sdc elements from all extensions elements
        public classes: string;
        public parent: string;
        public allowConnection: boolean; //this is for egeEdition extension in order to decide if connection to a node is available

        constructor() {

            this.imagesPath = Services.AngularJSBridge.getAngularConfig().imagesPath;
            this.type = "basic-node";
            this.isSdcElement = true;
            this.isDraggable = true;
            this.allowConnection = true;
        }

        public updateNameForDisplay =() => {
            let context = document.createElement("canvas").getContext("2d");
            context.font = "13px Arial";

            if (63 < context.measureText(this.name).width) {
                let newLen = this.name.length - 3;
                let newName = this.name.substring(0, newLen);

                while (60 < (context.measureText(newName).width)) {
                    newName = newName.substring(0, (--newLen));
                }
                this.displayName =  newName + '...';
                return;
            }

            this.displayName = this.name;
        };
    }
}