@kigi/components 1.41.0-alpha.10 → 1.41.0-alpha.12
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.
- package/package.json +1 -1
- package/src/components/mbg-average-customer-time/mbg-average-customer-time.html +20 -2
- package/src/components/mbg-average-customer-time/mbg-average-customer-time.scss +117 -246
- package/src/components/mbg-average-customer-time/mbg-average-customer-time.ts +166 -2
- package/src/components/mbg-store-goal/mbg-store-goal.html +25 -5
- package/src/components/mbg-store-goal/mbg-store-goal.scss +34 -3
- package/src/components/mbg-store-goal/mbg-store-goal.ts +34 -0
- package/src/index.html +1 -1
package/package.json
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
-
<div>
|
|
2
|
-
|
|
1
|
+
<div class="average-customer-time-wrapper">
|
|
2
|
+
<figure class="highcharts-figure">
|
|
3
|
+
<div class="description-container-dash">
|
|
4
|
+
<div class="mbg-h-c-tone-s-icon-dash"
|
|
5
|
+
ng-click="$ctrl.toggleShowValuesReturnCustomer(false)">
|
|
6
|
+
<i class="fa fa-lock lock-dash-store"
|
|
7
|
+
aria-hidden="true"
|
|
8
|
+
uib-tooltip="Sem permissão para visualizar"
|
|
9
|
+
tooltip-placement="left"
|
|
10
|
+
ng-if="$ctrl.isBlockValuesDashboarReturnCustomer && !$ctrl.hideValue"></i>
|
|
11
|
+
<i ng-if="!$ctrl.hideValue && $ctrl.isPermissionAverageCustomerReturnTime"
|
|
12
|
+
disable-animate
|
|
13
|
+
class="far fa-eye eye-board-target"></i>
|
|
14
|
+
<i ng-if="$ctrl.hideValue && $ctrl.isPermissionAverageCustomerReturnTime"
|
|
15
|
+
disable-animate
|
|
16
|
+
class="far fa-eye-slash eye-board-target"></i>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
<div id="container"></div>
|
|
20
|
+
</figure>
|
|
3
21
|
</div>
|
|
@@ -1,301 +1,172 @@
|
|
|
1
|
-
.
|
|
1
|
+
.average-customer-time-wrapper {}
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
.swiper-wrapper {
|
|
10
|
-
display: flex;
|
|
11
|
-
transition: transform 0.3s ease;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
.swiper-slide {
|
|
15
|
-
width: 100%;
|
|
16
|
-
flex-shrink: 0;
|
|
17
|
-
display: flex;
|
|
18
|
-
justify-content: center;
|
|
19
|
-
align-items: center;
|
|
20
|
-
box-sizing: border-box;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.swiper-slide-active {
|
|
24
|
-
display: flex;
|
|
25
|
-
justify-content: center;
|
|
26
|
-
align-items: center;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.swiper-pagination {
|
|
30
|
-
position: absolute;
|
|
31
|
-
top: 100px;
|
|
32
|
-
left: 54%;
|
|
33
|
-
transform: translateX(-50%);
|
|
34
|
-
display: flex;
|
|
35
|
-
gap: 5px;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.swiper-pagination-bullet {
|
|
39
|
-
width: 10px;
|
|
40
|
-
height: 10px;
|
|
41
|
-
background-color: #606A90;
|
|
42
|
-
border-radius: 50%;
|
|
43
|
-
opacity: 0.5;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.swiper-pagination-bullet-active {
|
|
47
|
-
background-color: #0EBCBD;
|
|
48
|
-
opacity: 1;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
.active-index {
|
|
52
|
-
display: flex;
|
|
53
|
-
justify-content: end;
|
|
54
|
-
font-size: 14px;
|
|
55
|
-
margin-top: -17px;
|
|
56
|
-
color: var(--titleColor);
|
|
3
|
+
.highcharts-figure {
|
|
4
|
+
.custom-title-container{
|
|
5
|
+
.custom-title{
|
|
6
|
+
position: relative;
|
|
7
|
+
left: -20px;
|
|
57
8
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
.line-goal {
|
|
9
|
+
}
|
|
10
|
+
.line-pay {
|
|
61
11
|
width: 100%;
|
|
62
12
|
background: #737373;
|
|
63
13
|
height: 1px;
|
|
64
14
|
opacity: 0.3;
|
|
65
15
|
|
|
66
16
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
justify-content: center;
|
|
72
|
-
align-items: center;
|
|
73
|
-
height: 100%;
|
|
17
|
+
#container {
|
|
18
|
+
border-radius: 10px;
|
|
19
|
+
background: #FFF;
|
|
20
|
+
box-shadow: 0px 2px 20px rgba(0, 0, 0, 0.05);
|
|
74
21
|
width: 100%;
|
|
75
|
-
|
|
76
|
-
left: -22px;
|
|
77
|
-
|
|
78
|
-
.dashboard-estimated {
|
|
79
|
-
|
|
80
|
-
position: relative;
|
|
81
|
-
left: 52px;
|
|
82
|
-
top: 10px;
|
|
83
|
-
height: 115px;
|
|
84
|
-
font-size: 14px;
|
|
85
|
-
color: #5f5b5b;
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
.dashboard-estimated-store {
|
|
90
|
-
|
|
91
|
-
position: relative;
|
|
92
|
-
top: 18px;
|
|
93
|
-
left: 38px;
|
|
94
|
-
height: 115px;
|
|
95
|
-
font-size: 14px;
|
|
96
|
-
color: #5f5b5b;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
.chart-container {
|
|
22
|
+
margin-left: 19px;
|
|
101
23
|
display: flex;
|
|
102
24
|
justify-content: center;
|
|
103
25
|
align-items: center;
|
|
104
|
-
width: 300px;
|
|
105
|
-
height: auto;
|
|
106
|
-
position: relative;
|
|
107
|
-
left: 10%;
|
|
108
|
-
bottom: 195px;
|
|
109
26
|
}
|
|
110
|
-
|
|
111
|
-
.opacity-dash-goal {
|
|
112
|
-
opacity: 0.5;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.goal-target {
|
|
116
|
-
position: relative;
|
|
117
|
-
top: 180px;
|
|
118
|
-
font-size: 14px;
|
|
119
|
-
color: #5f5b5b;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
.estimate-goal {
|
|
123
|
-
font-size: 14px;
|
|
124
|
-
color: #5f5b5b;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
.estimate-goal-store {
|
|
128
|
-
font-size: 14px;
|
|
129
|
-
color: #5f5b5b;
|
|
130
|
-
|
|
131
|
-
i {
|
|
132
|
-
color: #0EBCBD;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
.tooltip-inner {
|
|
136
|
-
width: 250px;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
.tooltip-chart-panel {
|
|
141
|
-
display: flex;
|
|
142
|
-
flex-direction: column;
|
|
143
|
-
position: relative;
|
|
144
|
-
background: #0EBCBD !important;
|
|
145
|
-
font-weight: bold;
|
|
146
|
-
color: #FFFFFF;
|
|
147
|
-
width: 100%;
|
|
148
|
-
height: 100%;
|
|
149
|
-
margin-right: 200px;
|
|
150
|
-
border-radius: 10px;
|
|
151
|
-
opacity: 1.0;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
.lock-permition{
|
|
156
|
-
|
|
157
|
-
.tooltip-inner {
|
|
158
|
-
background: #0EBCBD !important;
|
|
159
|
-
color: #000000 !important;
|
|
160
|
-
width: 300px;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
.goal-day {
|
|
165
|
-
display: flex;
|
|
166
|
-
justify-content: space-between;
|
|
167
|
-
align-items: end;
|
|
168
|
-
position: relative;
|
|
169
|
-
top: 170px;
|
|
170
|
-
font-size: 16px;
|
|
171
|
-
color: #5f5b5b;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
27
|
.description-container-dash {
|
|
175
|
-
flex-grow: 1;
|
|
176
28
|
color: var(--titleColor);
|
|
177
29
|
display: flex;
|
|
178
|
-
justify-content:
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
.active-index-slide{
|
|
185
|
-
position: relative;
|
|
186
|
-
top: -11px;
|
|
187
|
-
left: 95px;
|
|
188
|
-
}
|
|
30
|
+
justify-content: end;
|
|
31
|
+
position: relative;
|
|
32
|
+
top: 22px;
|
|
33
|
+
right: 12px;
|
|
34
|
+
z-index: 9999;
|
|
189
35
|
|
|
190
36
|
.mbg-h-c-tone-s-icon-dash {
|
|
191
37
|
margin-top: -10px;
|
|
192
38
|
transition: opacity 500ms ease;
|
|
193
39
|
opacity: 0.9;
|
|
194
40
|
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@media screen and (max-width: 1920px){
|
|
45
|
+
.highcharts-figure {
|
|
195
46
|
|
|
196
|
-
.
|
|
47
|
+
.line-pay {
|
|
197
48
|
position: relative;
|
|
198
|
-
|
|
49
|
+
left: -20px;
|
|
50
|
+
width: 480px;
|
|
199
51
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
52
|
+
#container {
|
|
53
|
+
border-radius: 10px;
|
|
54
|
+
background: #FFF;
|
|
55
|
+
box-shadow: 0px 2px 20px rgba(0, 0, 0, 0.05);
|
|
56
|
+
width: 504px;
|
|
57
|
+
margin-left: 19px;
|
|
205
58
|
}
|
|
59
|
+
|
|
206
60
|
}
|
|
207
61
|
|
|
208
|
-
|
|
209
|
-
0% {
|
|
210
|
-
opacity: 1;
|
|
211
|
-
}
|
|
62
|
+
}
|
|
212
63
|
|
|
213
|
-
|
|
214
|
-
|
|
64
|
+
@media screen and (max-width: 1728px){
|
|
65
|
+
.highcharts-figure {
|
|
66
|
+
.line-pay {
|
|
67
|
+
position: relative;
|
|
68
|
+
left: -20px;
|
|
69
|
+
width: 418px;
|
|
215
70
|
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
71
|
+
#container {
|
|
72
|
+
border-radius: 10px;
|
|
73
|
+
background: #FFF;
|
|
74
|
+
box-shadow: 0px 2px 20px rgba(0, 0, 0, 0.05);
|
|
75
|
+
width: 444px;
|
|
76
|
+
padding: inherit;
|
|
219
77
|
}
|
|
220
78
|
}
|
|
79
|
+
}
|
|
221
80
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
81
|
+
@media screen and (max-width: 1536px){
|
|
82
|
+
.highcharts-figure {
|
|
83
|
+
.custom-title-container{
|
|
84
|
+
.custom-title{
|
|
85
|
+
font-size: 17px;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
.line-pay {
|
|
229
89
|
position: relative;
|
|
230
|
-
|
|
90
|
+
left: -20px;
|
|
91
|
+
width: 366px;
|
|
231
92
|
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
background: #
|
|
235
|
-
|
|
236
|
-
width:
|
|
93
|
+
#container {
|
|
94
|
+
border-radius: 10px;
|
|
95
|
+
background: #FFF;
|
|
96
|
+
box-shadow: 0px 2px 20px rgba(0, 0, 0, 0.05);
|
|
97
|
+
width: 390px;
|
|
237
98
|
}
|
|
238
99
|
}
|
|
100
|
+
}
|
|
239
101
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
102
|
+
@media screen and (max-width: 1440px){
|
|
103
|
+
.highcharts-figure {
|
|
104
|
+
.custom-title-container{
|
|
105
|
+
.custom-title{
|
|
106
|
+
font-size: 16px;
|
|
107
|
+
width: 100vw;
|
|
108
|
+
}
|
|
244
109
|
}
|
|
110
|
+
|
|
111
|
+
.line-pay {
|
|
112
|
+
position: relative;
|
|
113
|
+
left: -20px;
|
|
114
|
+
width: 332px;
|
|
245
115
|
}
|
|
246
|
-
|
|
116
|
+
#container {
|
|
117
|
+
border-radius: 10px;
|
|
118
|
+
background: #FFF;
|
|
119
|
+
box-shadow: 0px 2px 20px rgba(0, 0, 0, 0.05);
|
|
120
|
+
width: 358px;
|
|
247
121
|
|
|
248
|
-
@media screen and (max-width: 1728px){
|
|
249
|
-
.description-container-dash{
|
|
250
|
-
.active-index-slide {
|
|
251
|
-
left: 108px;
|
|
252
|
-
}
|
|
253
122
|
}
|
|
254
123
|
}
|
|
124
|
+
}
|
|
255
125
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
126
|
+
@media screen and (max-width: 1366px){
|
|
127
|
+
.highcharts-figure {
|
|
128
|
+
.custom-title-container{
|
|
129
|
+
.custom-title{
|
|
130
|
+
font-size: 16px;
|
|
131
|
+
width: 100vw;
|
|
261
132
|
}
|
|
262
|
-
}
|
|
263
|
-
@media screen and (max-width: 1440px){
|
|
264
|
-
.description-container-dash{
|
|
265
|
-
.active-index-slide {
|
|
266
|
-
left: 58px;
|
|
267
133
|
}
|
|
134
|
+
|
|
135
|
+
.line-pay {
|
|
136
|
+
position: relative;
|
|
137
|
+
left: -20px;
|
|
138
|
+
width: 450px;
|
|
268
139
|
}
|
|
269
|
-
|
|
140
|
+
#container {
|
|
141
|
+
border-radius: 10px;
|
|
142
|
+
background: #FFF;
|
|
143
|
+
box-shadow: 0px 2px 20px rgba(0, 0, 0, 0.05);
|
|
144
|
+
width: 474px;
|
|
270
145
|
|
|
271
|
-
@media screen and (max-width: 1366px){
|
|
272
|
-
.description-container-dash{
|
|
273
|
-
.active-index-slide {
|
|
274
|
-
left: 125px;
|
|
275
|
-
}
|
|
276
146
|
}
|
|
277
147
|
}
|
|
148
|
+
}
|
|
278
149
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
150
|
+
@media screen and (max-width: 1024px){
|
|
151
|
+
.highcharts-figure {
|
|
152
|
+
.custom-title-container{
|
|
153
|
+
.custom-title{
|
|
154
|
+
font-size: 15px;
|
|
155
|
+
width: 100vw;
|
|
156
|
+
}
|
|
283
157
|
}
|
|
158
|
+
|
|
159
|
+
.line-pay {
|
|
160
|
+
position: relative;
|
|
161
|
+
left: -20px;
|
|
162
|
+
width: 306px;
|
|
284
163
|
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
164
|
+
#container {
|
|
165
|
+
border-radius: 10px;
|
|
166
|
+
background: #FFF;
|
|
167
|
+
box-shadow: 0px 2px 20px rgba(0, 0, 0, 0.05);
|
|
168
|
+
width: 330px;
|
|
288
169
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
justify-content: center;
|
|
292
|
-
align-items: center;
|
|
293
|
-
width: 100%;
|
|
294
|
-
height: 100%;
|
|
295
|
-
font-size: 14px;
|
|
296
|
-
color: #5f5b5b;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
297
172
|
}
|
|
298
|
-
|
|
299
|
-
.state-goal {
|
|
300
|
-
cursor: pointer;
|
|
301
|
-
}
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
import './mbg-average-customer-time.scss'
|
|
2
2
|
import template from './mbg-average-customer-time.html'
|
|
3
|
+
import Highcharts from 'highcharts'
|
|
4
|
+
import Exporting from 'highcharts/modules/exporting.js'
|
|
5
|
+
import Accessibility from 'highcharts/modules/accessibility.js'
|
|
6
|
+
|
|
7
|
+
Exporting(Highcharts)
|
|
8
|
+
Accessibility(Highcharts)
|
|
3
9
|
|
|
4
10
|
class MbgAverageCustomerTimeController {
|
|
11
|
+
private percentagesReturnCustomerTime
|
|
12
|
+
private isPermissionAverageCustomerReturnTime
|
|
13
|
+
private allowedToSee: boolean
|
|
14
|
+
private allowedCallBack: Function
|
|
15
|
+
private isBlockValuesDashboarReturnCustomer
|
|
16
|
+
private hideValue: boolean = false
|
|
17
|
+
|
|
5
18
|
constructor(
|
|
6
19
|
public $scope,
|
|
7
20
|
public $element,
|
|
@@ -11,7 +24,152 @@ class MbgAverageCustomerTimeController {
|
|
|
11
24
|
public $state,
|
|
12
25
|
) {}
|
|
13
26
|
|
|
14
|
-
async $onInit() {
|
|
27
|
+
async $onInit() {
|
|
28
|
+
this.isBlockValuesDashboarReturnCustomer =
|
|
29
|
+
!this.allowedToSee || !this.isPermissionAverageCustomerReturnTime
|
|
30
|
+
this.$scope.$watch(
|
|
31
|
+
'$ctrl.percentagesReturnCustomerTime',
|
|
32
|
+
(data) => {
|
|
33
|
+
if (data) {
|
|
34
|
+
this.configPanelPercentagesReturnCustomerTime()
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
true,
|
|
38
|
+
)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
configPanelPercentagesReturnCustomerTime() {
|
|
42
|
+
const colors = ['#F24A57', '#45BDBF', '#482F72', '#CDDA34', '#F68E2C']
|
|
43
|
+
const hasPermissionPorcentages = !this.isPermissionAverageCustomerReturnTime || this.hideValue
|
|
44
|
+
const transformedData = this.percentagesReturnCustomerTime.map((item, index) => ({
|
|
45
|
+
name: `${item.days} dias`,
|
|
46
|
+
y: parseFloat(item.percentage) > 0 ? parseFloat(item.percentage) : 0,
|
|
47
|
+
color: colors[index],
|
|
48
|
+
}))
|
|
49
|
+
|
|
50
|
+
Highcharts.chart('container', {
|
|
51
|
+
chart: {
|
|
52
|
+
type: 'pie',
|
|
53
|
+
backgroundColor: 'none',
|
|
54
|
+
events: {
|
|
55
|
+
redraw: function () {
|
|
56
|
+
const chart = this
|
|
57
|
+
const noDataText = 'Nenhum período selecionado'
|
|
58
|
+
|
|
59
|
+
if (chart.noDataLabel) {
|
|
60
|
+
chart.noDataLabel.destroy()
|
|
61
|
+
chart.noDataLabel = null
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const allDataHidden = chart.series.filter((series) =>
|
|
65
|
+
series.data.filter((point) => point.options.visible),
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
const hasDate = allDataHidden[0].data.some((option) => option.visible)
|
|
69
|
+
|
|
70
|
+
if (!hasDate) {
|
|
71
|
+
const centerX = chart.plotWidth / 2
|
|
72
|
+
const centerY = chart.plotHeight / 2
|
|
73
|
+
chart.noDataLabel = chart.renderer
|
|
74
|
+
.text(noDataText, centerX, centerY)
|
|
75
|
+
.attr({
|
|
76
|
+
zIndex: 5,
|
|
77
|
+
align: 'center',
|
|
78
|
+
})
|
|
79
|
+
.css({
|
|
80
|
+
fontSize: '20px',
|
|
81
|
+
color: '#5f5b5b',
|
|
82
|
+
textAlign: 'center',
|
|
83
|
+
})
|
|
84
|
+
.add()
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
title: {
|
|
90
|
+
text: `
|
|
91
|
+
<div class="custom-title-container">
|
|
92
|
+
<p class="custom-title">Tempo médio de retorno do cliente</p>
|
|
93
|
+
<div class="line-pay"></div>
|
|
94
|
+
</div>`,
|
|
95
|
+
useHTML: true,
|
|
96
|
+
style: {
|
|
97
|
+
fontSize: '20px',
|
|
98
|
+
color: '#5f5b5b',
|
|
99
|
+
fontWeight: 'bold',
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
|
|
103
|
+
legend: {
|
|
104
|
+
layout: 'horizontal',
|
|
105
|
+
itemDistance: 5,
|
|
106
|
+
},
|
|
107
|
+
plotOptions: {
|
|
108
|
+
pie: {
|
|
109
|
+
allowPointSelect: true,
|
|
110
|
+
cursor: 'pointer',
|
|
111
|
+
borderRadius: 8,
|
|
112
|
+
dataLabels: {
|
|
113
|
+
enabled: !hasPermissionPorcentages,
|
|
114
|
+
|
|
115
|
+
formatter: function () {
|
|
116
|
+
if (!hasPermissionPorcentages) {
|
|
117
|
+
return `<span style="color:#7B7B7B">${
|
|
118
|
+
this.point.name
|
|
119
|
+
}</span><br><span style="font-weight:bold; color:#333">(${this.y.toFixed(
|
|
120
|
+
2,
|
|
121
|
+
)}%)</span>`
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
style: {
|
|
125
|
+
fontSize: '0.9em',
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
showInLegend: true,
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
tooltip: {
|
|
132
|
+
backgroundColor: '#FFF',
|
|
133
|
+
formatter: function () {
|
|
134
|
+
if (hasPermissionPorcentages) {
|
|
135
|
+
return 'Sem permissão para visualizar'
|
|
136
|
+
}
|
|
137
|
+
return `<b>${this.point.name}</b><br>Porcentagem: ${this.y.toFixed(2)}%`
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
series: [
|
|
141
|
+
{
|
|
142
|
+
name: 'Porcentagem',
|
|
143
|
+
colorByPoint: true,
|
|
144
|
+
innerSize: '75%',
|
|
145
|
+
data: transformedData,
|
|
146
|
+
},
|
|
147
|
+
],
|
|
148
|
+
navigation: {
|
|
149
|
+
buttonOptions: {
|
|
150
|
+
enabled: false,
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
credits: {
|
|
154
|
+
enabled: false,
|
|
155
|
+
},
|
|
156
|
+
})
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
toggleShowValuesReturnCustomer() {
|
|
160
|
+
if (
|
|
161
|
+
(this.allowedToSee !== undefined && !this.allowedToSee) ||
|
|
162
|
+
!this.isPermissionAverageCustomerReturnTime
|
|
163
|
+
) {
|
|
164
|
+
if (this.allowedCallBack) {
|
|
165
|
+
this.allowedCallBack()
|
|
166
|
+
}
|
|
167
|
+
return
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
this.hideValue = !this.hideValue
|
|
171
|
+
this.configPanelPercentagesReturnCustomerTime()
|
|
172
|
+
}
|
|
15
173
|
}
|
|
16
174
|
MbgAverageCustomerTimeController['$inject'] = [
|
|
17
175
|
'$scope',
|
|
@@ -23,7 +181,13 @@ MbgAverageCustomerTimeController['$inject'] = [
|
|
|
23
181
|
]
|
|
24
182
|
|
|
25
183
|
const mbgAverageCustomerTime = {
|
|
26
|
-
bindings: {
|
|
184
|
+
bindings: {
|
|
185
|
+
percentagesReturnCustomerTime: '=?',
|
|
186
|
+
isPermissionAverageCustomerReturnTime: '=?',
|
|
187
|
+
allowedToSee: '=?',
|
|
188
|
+
allowedCallBack: '&?',
|
|
189
|
+
isBlockValuesDashboarReturnCustomer: '=?',
|
|
190
|
+
},
|
|
27
191
|
template,
|
|
28
192
|
controller: MbgAverageCustomerTimeController,
|
|
29
193
|
}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
<div ng-class="{'opacity-dash-goal': !$ctrl.isPermissionStoreGoal}"
|
|
2
2
|
class="store-goal-wrapper"
|
|
3
3
|
ng-show="$ctrl.showDashboard">
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
4
|
<div class="description-container-dash">
|
|
8
5
|
<p class="description-dash">
|
|
9
6
|
Meta do mês / {{$ctrl.currentMonthName}}
|
|
@@ -13,8 +10,6 @@
|
|
|
13
10
|
ng-show="$ctrl.estimatedPercentageGreaterThanTarget"
|
|
14
11
|
aria-hidden="true"></i>
|
|
15
12
|
</p>
|
|
16
|
-
|
|
17
|
-
|
|
18
13
|
<div class="mbg-h-c-tone-s-icon-dash"
|
|
19
14
|
ng-click="$ctrl.toggleShowValueStoreGoal(false)">
|
|
20
15
|
<i class="fa fa-lock lock-dash-store"
|
|
@@ -127,6 +122,31 @@
|
|
|
127
122
|
|
|
128
123
|
|
|
129
124
|
<div class="swiper-pagination"></div>
|
|
125
|
+
<div class="loading-indicator">
|
|
126
|
+
<svg id="loading-circle"
|
|
127
|
+
width="30"
|
|
128
|
+
height="30"
|
|
129
|
+
viewBox="0 0 100 100">
|
|
130
|
+
|
|
131
|
+
<circle cx="50"
|
|
132
|
+
cy="50"
|
|
133
|
+
r="40"
|
|
134
|
+
stroke="#E9E9E9"
|
|
135
|
+
stroke-width="8"
|
|
136
|
+
fill="none" />
|
|
137
|
+
|
|
138
|
+
<circle id="progress"
|
|
139
|
+
cx="50"
|
|
140
|
+
cy="50"
|
|
141
|
+
r="40"
|
|
142
|
+
stroke="#0ebcbd"
|
|
143
|
+
stroke-width="8"
|
|
144
|
+
stroke-dasharray="251.2"
|
|
145
|
+
stroke-dashoffset="251.2"
|
|
146
|
+
fill="none"
|
|
147
|
+
transform="rotate(-90 50 50)" />
|
|
148
|
+
</svg>
|
|
149
|
+
</div>
|
|
130
150
|
</div>
|
|
131
151
|
</div>
|
|
132
152
|
</div>
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
.store-goal-wrapper {
|
|
2
2
|
|
|
3
|
+
.loading-indicator {
|
|
4
|
+
position: absolute;
|
|
5
|
+
top: 26%;
|
|
6
|
+
left: 98%;
|
|
7
|
+
transform: translate(-50%, -50%);
|
|
8
|
+
width: 40px;
|
|
9
|
+
height: 40px;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
#loading-circle {
|
|
13
|
+
position: absolute;
|
|
14
|
+
}
|
|
15
|
+
|
|
3
16
|
.swiper {
|
|
4
17
|
width: 100%;
|
|
5
18
|
height: 100%;
|
|
@@ -29,7 +42,7 @@
|
|
|
29
42
|
.swiper-pagination {
|
|
30
43
|
position: absolute;
|
|
31
44
|
top: 100px;
|
|
32
|
-
left:
|
|
45
|
+
left: 50%;
|
|
33
46
|
transform: translateX(-50%);
|
|
34
47
|
display: flex;
|
|
35
48
|
gap: 5px;
|
|
@@ -73,10 +86,9 @@
|
|
|
73
86
|
height: 100%;
|
|
74
87
|
width: 100%;
|
|
75
88
|
position: relative;
|
|
76
|
-
left: -22px;
|
|
77
89
|
|
|
78
|
-
.dashboard-estimated {
|
|
79
90
|
|
|
91
|
+
.dashboard-estimated {
|
|
80
92
|
position: relative;
|
|
81
93
|
left: 52px;
|
|
82
94
|
top: 10px;
|
|
@@ -238,6 +250,7 @@
|
|
|
238
250
|
}
|
|
239
251
|
|
|
240
252
|
@media screen and (max-width: 1920px){
|
|
253
|
+
|
|
241
254
|
.description-container-dash{
|
|
242
255
|
.active-index-slide {
|
|
243
256
|
left: 140px;
|
|
@@ -261,6 +274,15 @@
|
|
|
261
274
|
}
|
|
262
275
|
}
|
|
263
276
|
@media screen and (max-width: 1440px){
|
|
277
|
+
.dashboard-wrapper{
|
|
278
|
+
.swiper-slide{
|
|
279
|
+
.dashboard-estimated{
|
|
280
|
+
position: relative;
|
|
281
|
+
left: 32px;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
}
|
|
264
286
|
.description-container-dash{
|
|
265
287
|
.active-index-slide {
|
|
266
288
|
left: 58px;
|
|
@@ -277,6 +299,15 @@
|
|
|
277
299
|
}
|
|
278
300
|
|
|
279
301
|
@media screen and (max-width: 1024px){
|
|
302
|
+
.dashboard-wrapper{
|
|
303
|
+
.swiper-slide{
|
|
304
|
+
.dashboard-estimated{
|
|
305
|
+
position: relative;
|
|
306
|
+
left: 24px;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
}
|
|
280
311
|
.description-container-dash{
|
|
281
312
|
.active-index-slide {
|
|
282
313
|
left: 44px;
|
|
@@ -76,9 +76,43 @@ class MbgStoreGoalController {
|
|
|
76
76
|
})
|
|
77
77
|
|
|
78
78
|
swiper.on('slideChange', () => {
|
|
79
|
+
this.startLoadingAnimation(swiper)
|
|
79
80
|
this.indexActiveSlide =
|
|
80
81
|
swiper.activeIndex === 1 ? '(mensal)' : swiper.activeIndex === 2 ? '(diário)' : ''
|
|
81
82
|
})
|
|
83
|
+
|
|
84
|
+
this.startLoadingAnimation(swiper)
|
|
85
|
+
}
|
|
86
|
+
startLoadingAnimation(swiper) {
|
|
87
|
+
const duration = 20000
|
|
88
|
+
const totalLength = 251.2
|
|
89
|
+
|
|
90
|
+
const progress = document.getElementById('progress')
|
|
91
|
+
if (!progress) return
|
|
92
|
+
|
|
93
|
+
let startTime: number | null = null
|
|
94
|
+
|
|
95
|
+
const animate = (timestamp: number) => {
|
|
96
|
+
if (!startTime) startTime = timestamp
|
|
97
|
+
const elapsed = timestamp - startTime
|
|
98
|
+
|
|
99
|
+
const progressPercentage = elapsed / duration
|
|
100
|
+
const currentOffset = totalLength * (1 - progressPercentage)
|
|
101
|
+
|
|
102
|
+
progress.style.strokeDashoffset = `${currentOffset}`
|
|
103
|
+
|
|
104
|
+
if (elapsed < duration) {
|
|
105
|
+
requestAnimationFrame(animate)
|
|
106
|
+
} else {
|
|
107
|
+
progress.style.strokeDashoffset = '0'
|
|
108
|
+
if (swiper.autoplay.running) {
|
|
109
|
+
swiper.autoplay.start()
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
progress.style.strokeDashoffset = `${totalLength}`
|
|
115
|
+
requestAnimationFrame(animate)
|
|
82
116
|
}
|
|
83
117
|
|
|
84
118
|
goalDataForTheMonthConfig() {
|
package/src/index.html
CHANGED
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
<div class="col-md-12"> -->
|
|
162
162
|
<div class=""
|
|
163
163
|
style="height: 260px">
|
|
164
|
-
<mbg-
|
|
164
|
+
<mbg-store-goal></mbg-store-goal>
|
|
165
165
|
|
|
166
166
|
<!-- <mbg-text-editor ng-model="editorJodit"
|
|
167
167
|
ng-if="testeeditorif"
|