@zeedhi/zd-user-info-common 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,183 +1,230 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@zeedhi/common'), require('@zeedhi/core')) :
3
- typeof define === 'function' && define.amd ? define(['exports', '@zeedhi/common', '@zeedhi/core'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@zeedhi/zd-user-info-common"] = {}, global["@zeedhi/common"], global["@zeedhi/core"]));
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@zeedhi/common'), require('@zeedhi/core')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', '@zeedhi/common', '@zeedhi/core'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@zeedhi/zd-user-info-common"] = {}, global["@zeedhi/common"], global["@zeedhi/core"]));
5
5
  })(this, (function (exports, common, core) { 'use strict';
6
6
 
7
- class UserInfo extends common.ComponentRender {
8
- constructor(props) {
9
- super(props);
10
- /**
11
- * Props to be passed to the ZdAvatar component
12
- */
13
- this.avatarProps = {};
14
- /**
15
- * Components to be rendered on the bottom slot
16
- */
17
- this.bottomSlot = [];
18
- /**
19
- * Components to be rendered on the center slot
20
- */
21
- this.centerSlot = [];
22
- /**
23
- * Show the profile change option
24
- */
25
- this.showProfileChange = true;
26
- /**
27
- * Components to be rendered on the top slot
28
- */
29
- this.topSlot = [];
30
- /**
31
- * User name
32
- */
33
- this.user = '';
34
- /**
35
- * User image
36
- */
37
- this.userImage = '';
38
- /**
39
- * Designates if menu should close on outside-activator click.
40
- */
41
- this.closeOnClick = true;
42
- /**
43
- * Designates if menu should close when its content is clicked.
44
- */
45
- this.closeOnContentClick = true;
46
- /**
47
- * Applies position fixed to the dropdown.
48
- */
49
- this.fixed = false;
50
- /**
51
- * Components to be rendered on the menu header
52
- */
53
- this.headerSlot = [];
54
- /**
55
- * Props to be passed to the ZdImage component (rendered inside the avatar)
56
- */
57
- this.imageProps = {};
58
- /**
59
- * Offset the menu on the x-axis.
60
- */
61
- this.offsetX = false;
62
- /**
63
- * Offset the menu on the x-axis.
64
- */
65
- this.offsetY = true;
66
- /**
67
- * Designates whether menu should open on activator click.
68
- */
69
- this.openOnClick = true;
70
- /**
71
- * Designates whether menu should open on activator hover.
72
- */
73
- this.openOnHover = false;
74
- /**
75
- * Controls whether the component is visible or hidden.
76
- */
77
- this.value = false;
78
- /**
79
- * Sets the height for the dropdown.
80
- */
81
- this.height = 'auto';
82
- this.showProfileChange = this.getInitValue('showProfileChange', props.showProfileChange, this.showProfileChange);
83
- this.user = this.getInitValue('user', props.user, this.user);
84
- this.userImage = this.getInitValue('userImage', props.userImage, this.userImage);
85
- this.closeOnClick = this.getInitValue('closeOnClick', props.closeOnClick, this.closeOnClick);
86
- this.closeOnContentClick = this.getInitValue('closeOnContentClick', props.closeOnContentClick, this.closeOnContentClick);
87
- this.fixed = this.getInitValue('fixed', props.fixed, this.fixed);
88
- this.offsetX = this.getInitValue('offsetX', props.offsetX, this.offsetX);
89
- this.offsetY = this.getInitValue('offsetY', props.offsetY, this.offsetY);
90
- this.openOnClick = this.getInitValue('openOnClick', props.openOnClick, this.openOnClick);
91
- this.openOnHover = this.getInitValue('openOnHover', props.openOnHover, this.openOnHover);
92
- this.value = this.getInitValue('value', props.value, this.value);
93
- this.height = this.getInitValue('height', props.height, this.height);
94
- this.maxHeight = this.getInitValue('maxHeight', props.maxHeight, this.maxHeight);
95
- this.minHeight = this.getInitValue('minHeight', props.minHeight, this.minHeight);
96
- this.maxWidth = this.getInitValue('maxWidth', props.maxWidth, this.maxWidth);
97
- this.minWidth = this.getInitValue('minWidth', props.minWidth, this.minWidth);
98
- this.avatarProps = props.avatarProps || this.avatarProps;
99
- this.imageProps = props.imageProps || this.imageProps;
100
- this.activator = props.activator || this.getActivator();
101
- this.bottomSlot = props.bottomSlot || this.bottomSlot;
102
- this.centerSlot = props.centerSlot || this.getCenterSlot();
103
- this.topSlot = props.topSlot || this.topSlot;
104
- this.headerSlot = props.headerSlot || this.headerSlot;
105
- this.createAccessors();
106
- }
107
- getActivator() {
108
- return {
109
- name: `${this.name}_activator_tooltip`,
110
- component: 'ZdTooltip',
111
- bottom: true,
112
- label: this.user,
113
- children: [
114
- Object.assign({ name: `${this.name}_activator`, component: 'ZdAvatar', avatarSlot: [
115
- Object.assign({ name: `${this.name}_image`, component: 'ZdImage', src: this.userImage }, this.imageProps),
116
- ] }, this.avatarProps),
117
- ],
118
- };
119
- }
120
- getCenterSlot() {
121
- return [
122
- {
123
- name: `${this.name}_center_list`,
124
- component: 'ZdList',
125
- dense: true,
126
- items: [
127
- {
128
- name: `${this.name}_change_profile`,
129
- component: 'ZdListItem',
130
- title: 'USERINFO_CHANGE_PROFILE',
131
- prependIcon: 'mdi-account',
132
- cssClass: 'zd-px-2',
133
- events: {
134
- click: ({ event, element }) => this.onProfileChange(event, element),
135
- },
136
- },
137
- {
138
- name: `${this.name}_logout`,
139
- component: 'ZdListItem',
140
- title: 'USERINFO_LOGOUT',
141
- prependIcon: 'mdi-logout-variant',
142
- cssClass: 'zd-px-2',
143
- events: {
144
- click: ({ event, element }) => this.onLogoutClick(event, element),
145
- },
146
- },
147
- ],
148
- },
149
- ];
150
- }
151
- onLogoutClick(event, element) {
152
- this.callEvent('onLogoutClick', { event, element, component: this });
153
- }
154
- onProfileChange(event, element) {
155
- this.callEvent('onProfileChange', { event, element, component: this });
156
- }
157
- }
158
- core.Messages.add({
159
- 'pt-BR': {
160
- translation: {
161
- USERINFO_CHANGE_PROFILE: 'Alterar perfil',
162
- USERINFO_LOGOUT: 'Sair',
163
- },
164
- },
165
- 'en-US': {
166
- translation: {
167
- USERINFO_CHANGE_PROFILE: 'Change profile',
168
- USERINFO_LOGOUT: 'Sign out',
169
- },
170
- },
171
- 'es-ES': {
172
- translation: {
173
- USERINFO_CHANGE_PROFILE: 'Cambiar el perfil',
174
- USERINFO_LOGOUT: 'Salir',
175
- },
176
- },
177
- });
7
+ /*! *****************************************************************************
8
+ Copyright (c) Microsoft Corporation.
9
+
10
+ Permission to use, copy, modify, and/or distribute this software for any
11
+ purpose with or without fee is hereby granted.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
14
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
15
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
16
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
17
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
18
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19
+ PERFORMANCE OF THIS SOFTWARE.
20
+ ***************************************************************************** */
21
+
22
+ function __decorate(decorators, target, key, desc) {
23
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
24
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
25
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
26
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
27
+ }
178
28
 
179
- exports.UserInfo = UserInfo;
29
+ let UserInfoController = class UserInfoController {
30
+ constructor(component) {
31
+ this.component = component;
32
+ }
33
+ get showChangeProfile() {
34
+ const { changeProfile } = this.component.visibleItems;
35
+ return changeProfile || changeProfile === undefined;
36
+ }
37
+ get showLogout() {
38
+ const { logout } = this.component.visibleItems;
39
+ return logout || logout === undefined;
40
+ }
41
+ };
42
+ UserInfoController = __decorate([
43
+ core.Singleton
44
+ ], UserInfoController);
180
45
 
181
- Object.defineProperty(exports, '__esModule', { value: true });
46
+ class UserInfo extends common.ComponentRender {
47
+ constructor(props) {
48
+ super(props);
49
+ /**
50
+ * Props to be passed to the ZdAvatar component
51
+ */
52
+ this.avatarProps = {};
53
+ /**
54
+ * Components to be rendered on the bottom slot
55
+ */
56
+ this.bottomSlot = [];
57
+ /**
58
+ * Components to be rendered on the center slot
59
+ */
60
+ this.centerSlot = [];
61
+ /**
62
+ * Components to be rendered on the top slot
63
+ */
64
+ this.topSlot = [];
65
+ /**
66
+ * User name
67
+ */
68
+ this.user = '';
69
+ /**
70
+ * User image
71
+ */
72
+ this.userImage = '';
73
+ /**
74
+ * Designates if menu should close on outside-activator click.
75
+ */
76
+ this.closeOnClick = true;
77
+ /**
78
+ * Designates if menu should close when its content is clicked.
79
+ */
80
+ this.closeOnContentClick = true;
81
+ /**
82
+ * Applies position fixed to the dropdown.
83
+ */
84
+ this.fixed = false;
85
+ /**
86
+ * Components to be rendered on the menu header
87
+ */
88
+ this.headerSlot = [];
89
+ /**
90
+ * Props to be passed to the ZdImage component (rendered inside the avatar)
91
+ */
92
+ this.imageProps = {};
93
+ /**
94
+ * Offset the menu on the x-axis.
95
+ */
96
+ this.offsetX = false;
97
+ /**
98
+ * Offset the menu on the x-axis.
99
+ */
100
+ this.offsetY = true;
101
+ /**
102
+ * Designates whether menu should open on activator click.
103
+ */
104
+ this.openOnClick = true;
105
+ /**
106
+ * Designates whether menu should open on activator hover.
107
+ */
108
+ this.openOnHover = false;
109
+ /**
110
+ * Controls whether the component is visible or hidden.
111
+ */
112
+ this.value = false;
113
+ this.visibleItems = {
114
+ userName: true,
115
+ changeProfile: true,
116
+ logout: true,
117
+ };
118
+ /**
119
+ * Sets the height for the dropdown.
120
+ */
121
+ this.height = 'auto';
122
+ this.user = this.getInitValue('user', props.user, this.user);
123
+ this.userImage = this.getInitValue('userImage', props.userImage, this.userImage);
124
+ this.closeOnClick = this.getInitValue('closeOnClick', props.closeOnClick, this.closeOnClick);
125
+ this.closeOnContentClick = this.getInitValue('closeOnContentClick', props.closeOnContentClick, this.closeOnContentClick);
126
+ this.fixed = this.getInitValue('fixed', props.fixed, this.fixed);
127
+ this.offsetX = this.getInitValue('offsetX', props.offsetX, this.offsetX);
128
+ this.offsetY = this.getInitValue('offsetY', props.offsetY, this.offsetY);
129
+ this.openOnClick = this.getInitValue('openOnClick', props.openOnClick, this.openOnClick);
130
+ this.openOnHover = this.getInitValue('openOnHover', props.openOnHover, this.openOnHover);
131
+ this.value = this.getInitValue('value', props.value, this.value);
132
+ this.visibleItems = this.getInitValue('visibleItems', props.visibleItems, this.visibleItems);
133
+ this.height = this.getInitValue('height', props.height, this.height);
134
+ this.maxHeight = this.getInitValue('maxHeight', props.maxHeight, this.maxHeight);
135
+ this.minHeight = this.getInitValue('minHeight', props.minHeight, this.minHeight);
136
+ this.maxWidth = this.getInitValue('maxWidth', props.maxWidth, this.maxWidth);
137
+ this.minWidth = this.getInitValue('minWidth', props.minWidth, this.minWidth);
138
+ this.avatarProps = props.avatarProps || this.avatarProps;
139
+ this.imageProps = props.imageProps || this.imageProps;
140
+ this.activator = props.activator || this.getActivator();
141
+ this.bottomSlot = props.bottomSlot || this.bottomSlot;
142
+ this.propCenterSlot = props.centerSlot;
143
+ this.topSlot = props.topSlot || this.topSlot;
144
+ this.headerSlot = props.headerSlot || this.headerSlot;
145
+ this.createAccessors();
146
+ }
147
+ getActivator() {
148
+ return {
149
+ name: `${this.name}_activator_tooltip`,
150
+ component: 'ZdTooltip',
151
+ bottom: true,
152
+ label: this.user,
153
+ children: [
154
+ Object.assign({ name: `${this.name}_activator`, component: 'ZdAvatar', avatarSlot: [
155
+ Object.assign({ name: `${this.name}_image`, component: 'ZdImage', src: this.userImage }, this.imageProps),
156
+ ] }, this.avatarProps),
157
+ ],
158
+ };
159
+ }
160
+ getCenterSlot() {
161
+ return [
162
+ {
163
+ name: `${this.name}_center_list`,
164
+ component: 'ZdList',
165
+ dense: true,
166
+ items: [
167
+ {
168
+ name: `${this.name}_change_profile`,
169
+ component: 'ZdListItem',
170
+ title: 'USERINFO_CHANGE_PROFILE',
171
+ prependIcon: 'mdi-account',
172
+ cssClass: 'zd-px-2',
173
+ isVisible: `{{UserInfoController_${this.componentId}.showChangeProfile}}`,
174
+ events: {
175
+ click: ({ event, element }) => this.onProfileChange(event, element),
176
+ },
177
+ },
178
+ {
179
+ name: `${this.name}_logout`,
180
+ component: 'ZdListItem',
181
+ title: 'USERINFO_LOGOUT',
182
+ prependIcon: 'mdi-logout-variant',
183
+ cssClass: 'zd-px-2',
184
+ isVisible: `{{UserInfoController_${this.componentId}.showLogout}}`,
185
+ events: {
186
+ click: ({ event, element }) => this.onLogoutClick(event, element),
187
+ },
188
+ },
189
+ ],
190
+ },
191
+ ];
192
+ }
193
+ onLogoutClick(event, element) {
194
+ this.callEvent('onLogoutClick', { event, element, component: this });
195
+ }
196
+ onProfileChange(event, element) {
197
+ this.callEvent('onProfileChange', { event, element, component: this });
198
+ }
199
+ onCreated() {
200
+ super.onCreated();
201
+ core.Loader.addController(`UserInfoController_${this.componentId}`, new UserInfoController(this));
202
+ this.centerSlot = this.propCenterSlot ? this.propCenterSlot : this.getCenterSlot();
203
+ }
204
+ }
205
+ core.Messages.add({
206
+ 'pt-BR': {
207
+ translation: {
208
+ USERINFO_CHANGE_PROFILE: 'Alterar perfil',
209
+ USERINFO_LOGOUT: 'Sair',
210
+ },
211
+ },
212
+ 'en-US': {
213
+ translation: {
214
+ USERINFO_CHANGE_PROFILE: 'Change profile',
215
+ USERINFO_LOGOUT: 'Sign out',
216
+ },
217
+ },
218
+ 'es-ES': {
219
+ translation: {
220
+ USERINFO_CHANGE_PROFILE: 'Cambiar el perfil',
221
+ USERINFO_LOGOUT: 'Salir',
222
+ },
223
+ },
224
+ });
225
+
226
+ exports.UserInfo = UserInfo;
227
+
228
+ Object.defineProperty(exports, '__esModule', { value: true });
182
229
 
183
230
  }));
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@zeedhi/zd-user-info-common",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Implementation of UserInfo componente using Zeedhi Next",
5
5
  "main": "dist/user-info-common.umd.js",
6
6
  "module": "dist/user-info-common.esm.js",
7
- "typings": "types/src/index.d.ts",
7
+ "typings": "types/index.d.ts",
8
8
  "publishConfig": {
9
9
  "access": "public"
10
10
  },
@@ -23,5 +23,5 @@
23
23
  "@zeedhi/common": "*",
24
24
  "@zeedhi/core": "*"
25
25
  },
26
- "gitHead": "27e18bb3b09807d56dd5823a827f18b50b74da3c"
26
+ "gitHead": "86893708d8588386db94214e7088918371e7dd7a"
27
27
  }
@@ -0,0 +1,7 @@
1
+ import { UserInfo } from './user-info';
2
+ export declare class UserInfoController {
3
+ component: UserInfo;
4
+ constructor(component: UserInfo);
5
+ get showChangeProfile(): boolean;
6
+ get showLogout(): boolean;
7
+ }
@@ -0,0 +1,2 @@
1
+ export * from './user-info';
2
+ export * from './interfaces';
@@ -0,0 +1,27 @@
1
+ import { IComponentRender } from '@zeedhi/common';
2
+ import { IDictionary } from '@zeedhi/core';
3
+ export interface IUserInfo extends IComponentRender {
4
+ activator?: IComponentRender;
5
+ avatarProps?: IDictionary;
6
+ bottomSlot?: IComponentRender[];
7
+ centerSlot?: IComponentRender[];
8
+ closeOnClick?: boolean;
9
+ closeOnContentClick?: boolean;
10
+ fixed?: boolean;
11
+ headerSlot?: IComponentRender[];
12
+ height?: number | string;
13
+ imageProps?: IDictionary;
14
+ offsetX?: boolean;
15
+ offsetY?: boolean;
16
+ openOnClick?: boolean;
17
+ openOnHover?: boolean;
18
+ maxHeight?: number | string;
19
+ maxWidth?: number | string;
20
+ minHeight?: number | string;
21
+ minWidth?: number | string;
22
+ topSlot?: IComponentRender[];
23
+ user?: string;
24
+ userImage?: string;
25
+ value?: boolean;
26
+ visibleItems?: IDictionary<boolean>;
27
+ }
@@ -0,0 +1,134 @@
1
+ import { ComponentRender, IComponentRender } from '@zeedhi/common';
2
+ import { IDictionary } from '@zeedhi/core';
3
+ import { IUserInfo } from './interfaces';
4
+ export declare class UserInfo extends ComponentRender implements IUserInfo {
5
+ /**
6
+ * Dropdown activator
7
+ */
8
+ activator: IComponentRender;
9
+ /**
10
+ * Props to be passed to the ZdAvatar component
11
+ */
12
+ avatarProps: IDictionary;
13
+ /**
14
+ * Components to be rendered on the bottom slot
15
+ */
16
+ bottomSlot: IComponentRender[];
17
+ /**
18
+ * Components to be rendered on the center slot
19
+ */
20
+ centerSlot: IComponentRender[];
21
+ /**
22
+ * Components to be rendered on the top slot
23
+ */
24
+ topSlot: IComponentRender[];
25
+ /**
26
+ * User name
27
+ */
28
+ user: string;
29
+ /**
30
+ * User image
31
+ */
32
+ userImage: string;
33
+ /**
34
+ * Designates if menu should close on outside-activator click.
35
+ */
36
+ closeOnClick: boolean;
37
+ /**
38
+ * Designates if menu should close when its content is clicked.
39
+ */
40
+ closeOnContentClick: boolean;
41
+ /**
42
+ * Applies position fixed to the dropdown.
43
+ */
44
+ fixed: boolean;
45
+ /**
46
+ * Components to be rendered on the menu header
47
+ */
48
+ headerSlot?: IComponentRender[];
49
+ /**
50
+ * Props to be passed to the ZdImage component (rendered inside the avatar)
51
+ */
52
+ imageProps?: IDictionary;
53
+ /**
54
+ * Offset the menu on the x-axis.
55
+ */
56
+ offsetX: boolean;
57
+ /**
58
+ * Offset the menu on the x-axis.
59
+ */
60
+ offsetY: boolean;
61
+ /**
62
+ * Designates whether menu should open on activator click.
63
+ */
64
+ openOnClick: boolean;
65
+ /**
66
+ * Designates whether menu should open on activator hover.
67
+ */
68
+ openOnHover: boolean;
69
+ /**
70
+ * Controls whether the component is visible or hidden.
71
+ */
72
+ value: boolean;
73
+ visibleItems: IDictionary<boolean>;
74
+ /**
75
+ * Sets the height for the dropdown.
76
+ */
77
+ height?: number | string;
78
+ /**
79
+ * Sets the maximum height for the dropdown.
80
+ */
81
+ maxHeight?: number | string;
82
+ /**
83
+ * Sets the maximum width for the dropdown.
84
+ */
85
+ maxWidth?: number | string;
86
+ /**
87
+ * Sets the minimum height for the dropdown.
88
+ */
89
+ minHeight?: number | string;
90
+ /**
91
+ * Sets the minimum width for the dropdown.
92
+ */
93
+ minWidth?: number | string;
94
+ protected propCenterSlot?: IComponentRender[];
95
+ constructor(props: IUserInfo);
96
+ protected getActivator(): {
97
+ name: string;
98
+ component: string;
99
+ bottom: boolean;
100
+ label: string;
101
+ children: {
102
+ name: string;
103
+ component: string;
104
+ avatarSlot: ({
105
+ name: string;
106
+ component: string;
107
+ src: string;
108
+ } | {
109
+ name: string;
110
+ component: string;
111
+ src: string;
112
+ })[];
113
+ }[];
114
+ };
115
+ protected getCenterSlot(): {
116
+ name: string;
117
+ component: string;
118
+ dense: boolean;
119
+ items: {
120
+ name: string;
121
+ component: string;
122
+ title: string;
123
+ prependIcon: string;
124
+ cssClass: string;
125
+ isVisible: string;
126
+ events: {
127
+ click: ({ event, element }: any) => void;
128
+ };
129
+ }[];
130
+ }[];
131
+ onLogoutClick(event: Event, element: HTMLElement): void;
132
+ onProfileChange(event: Event, element: HTMLElement): void;
133
+ onCreated(): void;
134
+ }
@@ -1,67 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <coverage generated="1646421538554" clover="3.2.0">
3
- <project timestamp="1646421538554" name="All files">
4
- <metrics statements="55" coveredstatements="55" conditionals="14" coveredconditionals="14" methods="7" coveredmethods="7" elements="76" coveredelements="76" complexity="0" loc="55" ncloc="55" packages="1" files="2" classes="2"/>
5
- <file name="index.ts" path="/Users/zedmartins/workfolder/zeedhi/userinfo/packages/common/src/index.ts">
6
- <metrics statements="2" coveredstatements="2" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
7
- <line num="1" count="1" type="stmt"/>
8
- <line num="2" count="1" type="stmt"/>
9
- </file>
10
- <file name="user-info.ts" path="/Users/zedmartins/workfolder/zeedhi/userinfo/packages/common/src/user-info.ts">
11
- <metrics statements="53" coveredstatements="53" conditionals="14" coveredconditionals="14" methods="7" coveredmethods="7"/>
12
- <line num="1" count="1" type="stmt"/>
13
- <line num="2" count="1" type="stmt"/>
14
- <line num="5" count="1" type="stmt"/>
15
- <line num="14" count="4" type="stmt"/>
16
- <line num="19" count="4" type="stmt"/>
17
- <line num="24" count="4" type="stmt"/>
18
- <line num="29" count="4" type="stmt"/>
19
- <line num="34" count="4" type="stmt"/>
20
- <line num="39" count="4" type="stmt"/>
21
- <line num="44" count="4" type="stmt"/>
22
- <line num="49" count="4" type="stmt"/>
23
- <line num="54" count="4" type="stmt"/>
24
- <line num="59" count="4" type="stmt"/>
25
- <line num="64" count="4" type="stmt"/>
26
- <line num="69" count="4" type="stmt"/>
27
- <line num="74" count="4" type="stmt"/>
28
- <line num="79" count="4" type="stmt"/>
29
- <line num="84" count="4" type="stmt"/>
30
- <line num="89" count="4" type="stmt"/>
31
- <line num="94" count="4" type="stmt"/>
32
- <line num="99" count="4" type="stmt"/>
33
- <line num="122" count="4" type="stmt"/>
34
- <line num="123" count="4" type="stmt"/>
35
- <line num="124" count="4" type="stmt"/>
36
- <line num="125" count="4" type="stmt"/>
37
- <line num="127" count="4" type="stmt"/>
38
- <line num="128" count="4" type="stmt"/>
39
- <line num="129" count="4" type="stmt"/>
40
- <line num="130" count="4" type="stmt"/>
41
- <line num="131" count="4" type="stmt"/>
42
- <line num="132" count="4" type="stmt"/>
43
- <line num="133" count="4" type="stmt"/>
44
- <line num="134" count="4" type="stmt"/>
45
- <line num="135" count="4" type="stmt"/>
46
- <line num="136" count="4" type="stmt"/>
47
- <line num="137" count="4" type="stmt"/>
48
- <line num="138" count="4" type="stmt"/>
49
- <line num="139" count="4" type="stmt"/>
50
- <line num="141" count="4" type="cond" truecount="2" falsecount="0"/>
51
- <line num="142" count="4" type="cond" truecount="2" falsecount="0"/>
52
- <line num="143" count="4" type="cond" truecount="2" falsecount="0"/>
53
- <line num="144" count="4" type="cond" truecount="2" falsecount="0"/>
54
- <line num="145" count="4" type="cond" truecount="2" falsecount="0"/>
55
- <line num="146" count="4" type="cond" truecount="2" falsecount="0"/>
56
- <line num="147" count="4" type="cond" truecount="2" falsecount="0"/>
57
- <line num="149" count="4" type="stmt"/>
58
- <line num="153" count="3" type="stmt"/>
59
- <line num="177" count="3" type="stmt"/>
60
- <line num="190" count="1" type="stmt"/>
61
- <line num="200" count="1" type="stmt"/>
62
- <line num="209" count="1" type="stmt"/>
63
- <line num="213" count="1" type="stmt"/>
64
- <line num="217" count="1" type="stmt"/>
65
- </file>
66
- </project>
67
- </coverage>