···
169
169
}
170
170
171
171
.node-company {
172
172
-
fill: #784c87;
173
172
stroke: #fff;
174
173
stroke-width: 1.5;
174
174
+
}
175
175
+
176
176
+
.company-active {
177
177
+
fill: #784c87;
178
178
+
}
179
179
+
180
180
+
.company-inactive {
181
181
+
fill: #b0a0b8;
182
182
+
}
183
183
+
184
184
+
.company-unknown {
185
185
+
fill: #ff4136;
175
186
}
176
187
177
188
.node-person {
···
215
226
}
216
227
217
228
circle.root {
218
218
-
fill: #784c87 !important;
219
219
-
stroke: #784c87;
220
229
stroke-width: 3;
221
230
}
222
231
···
236
245
margin-left: 5px;
237
246
}
238
247
239
239
-
.methodology {
248
248
+
.info-panel {
240
249
position: absolute;
241
241
-
bottom: 1rem;
242
242
-
left: 1rem;
250
250
+
top: 1rem;
251
251
+
right: 1rem;
243
252
max-width: 360px;
244
253
background: rgba(255, 255, 255, 0.92);
245
254
border: 1px solid var(--pico-muted-border-color);
···
250
259
line-height: 1.35;
251
260
}
252
261
253
253
-
.methodology summary {
262
262
+
.info-panel summary {
254
263
cursor: pointer;
255
264
color: var(--pico-primary);
256
265
font-weight: 600;
···
258
267
margin-bottom: 0;
259
268
}
260
269
261
261
-
.methodology summary::-webkit-details-marker { display: none; }
262
262
-
.methodology summary::marker { content: ""; }
270
270
+
.info-panel summary::-webkit-details-marker { display: none; }
271
271
+
.info-panel summary::marker { content: ""; }
263
272
264
264
-
.methodology[open] summary { margin-bottom: 0.35rem; }
273
273
+
.info-panel[open] summary { margin-bottom: 0.5rem; }
265
274
266
266
-
.methodology small {
275
275
+
.info-panel small {
267
276
font-size: 0.78rem;
268
277
color: var(--pico-muted-color);
269
278
}
279
279
+
280
280
+
.legend {
281
281
+
display: flex;
282
282
+
flex-wrap: wrap;
283
283
+
gap: 0.5rem 0.75rem;
284
284
+
margin-bottom: 0.5rem;
285
285
+
}
286
286
+
287
287
+
.legend-item {
288
288
+
display: inline-flex;
289
289
+
align-items: center;
290
290
+
gap: 0.3rem;
291
291
+
}
292
292
+
293
293
+
.info-panel-divider {
294
294
+
border-top: 1px solid var(--pico-muted-border-color);
295
295
+
margin: 0 0 0.5rem 0;
296
296
+
}
297
297
+
298
298
+
.legend-dot {
299
299
+
display: inline-block;
300
300
+
width: 10px;
301
301
+
height: 10px;
302
302
+
border-radius: 50%;
303
303
+
border: 1.5px solid #fff;
304
304
+
}
305
305
+
306
306
+
.legend-company-active { background: #784c87; }
307
307
+
.legend-company-inactive { background: #b0a0b8; }
308
308
+
.legend-company-unknown { background: #ff4136; }
309
309
+
.legend-person { background: #89a1c9; }
270
310
</style>
271
311
<script src="main.js"></script>
272
312
</head>
···
7452
7452
interaction,
7453
7453
_Utils_ap(animation, always)));
7454
7454
};
7455
7455
-
var $author$project$Types$Company = F2(
7456
7456
-
function (a, b) {
7457
7457
-
return {$: 'Company', a: a, b: b};
7455
7455
+
var $author$project$Types$Company = F3(
7456
7456
+
function (a, b, c) {
7457
7457
+
return {$: 'Company', a: a, b: b, c: c};
7458
7458
});
7459
7459
var $author$project$Types$NodeClicked = function (a) {
7460
7460
return {$: 'NodeClicked', a: a};
7461
7461
};
7462
7462
+
var $author$project$Types$StatusUnknown = {$: 'StatusUnknown'};
7462
7463
var $elm$core$Basics$clamp = F3(
7463
7464
function (low, high, number) {
7464
7465
return (_Utils_cmp(number, low) < 0) ? low : ((_Utils_cmp(number, high) > 0) ? high : number);
7465
7466
});
7467
7467
+
var $author$project$Types$StatusActive = {$: 'StatusActive'};
7468
7468
+
var $author$project$Types$StatusInactive = {$: 'StatusInactive'};
7469
7469
+
var $author$project$Main$codeToStatus = function (code) {
7470
7470
+
if (code.$ === 'Just') {
7471
7471
+
if (code.a === 2) {
7472
7472
+
return $author$project$Types$StatusActive;
7473
7473
+
} else {
7474
7474
+
return $author$project$Types$StatusInactive;
7475
7475
+
}
7476
7476
+
} else {
7477
7477
+
return $author$project$Types$StatusInactive;
7478
7478
+
}
7479
7479
+
};
7466
7480
var $author$project$Main$httpErrorToString = F2(
7467
7481
function (url, err) {
7468
7482
switch (err.$) {
···
7649
7663
function (a, b) {
7650
7664
return {$: 'Person', a: a, b: b};
7651
7665
});
7666
7666
+
var $author$project$Types$StatusLoading = {$: 'StatusLoading'};
7652
7667
var $elm$core$Dict$filter = F2(
7653
7668
function (isGood, dict) {
7654
7669
return A3(
···
7738
7753
childIds);
7739
7754
}
7740
7755
});
7756
7756
+
var $author$project$Types$GotCompanyName = F3(
7757
7757
+
function (a, b, c) {
7758
7758
+
return {$: 'GotCompanyName', a: a, b: b, c: c};
7759
7759
+
});
7760
7760
+
var $author$project$Types$CompanyInfo = F2(
7761
7761
+
function (name, situacaoCadastral) {
7762
7762
+
return {name: name, situacaoCadastral: situacaoCadastral};
7763
7763
+
});
7764
7764
+
var $author$project$Api$companyInfoDecoder = A3(
7765
7765
+
$elm$json$Json$Decode$map2,
7766
7766
+
$author$project$Types$CompanyInfo,
7767
7767
+
A2($elm$json$Json$Decode$field, 'razao_social', $elm$json$Json$Decode$string),
7768
7768
+
$elm$json$Json$Decode$maybe(
7769
7769
+
A2($elm$json$Json$Decode$field, 'situacao_cadastral', $elm$json$Json$Decode$int)));
7770
7770
+
var $author$project$Api$fetchCompanyName = F2(
7771
7771
+
function (jsonApi, cnpj) {
7772
7772
+
var url = (A2($elm$core$String$right, 1, jsonApi) === '/') ? _Utils_ap(jsonApi, cnpj) : (jsonApi + ('/' + cnpj));
7773
7773
+
return $elm$http$Http$get(
7774
7774
+
{
7775
7775
+
expect: A2(
7776
7776
+
$elm$http$Http$expectStringResponse,
7777
7777
+
A2($author$project$Types$GotCompanyName, cnpj, url),
7778
7778
+
function (response) {
7779
7779
+
switch (response.$) {
7780
7780
+
case 'BadStatus_':
7781
7781
+
var meta = response.a;
7782
7782
+
return $elm$core$Result$Err(
7783
7783
+
$elm$http$Http$BadStatus(meta.statusCode));
7784
7784
+
case 'GoodStatus_':
7785
7785
+
var body = response.b;
7786
7786
+
var _v1 = A2($elm$json$Json$Decode$decodeString, $author$project$Api$companyInfoDecoder, body);
7787
7787
+
if (_v1.$ === 'Ok') {
7788
7788
+
var info = _v1.a;
7789
7789
+
return $elm$core$Result$Ok(info);
7790
7790
+
} else {
7791
7791
+
return $elm$core$Result$Err(
7792
7792
+
$elm$http$Http$BadBody('Could not parse company info'));
7793
7793
+
}
7794
7794
+
case 'BadUrl_':
7795
7795
+
var url_ = response.a;
7796
7796
+
return $elm$core$Result$Err(
7797
7797
+
$elm$http$Http$BadUrl(url_));
7798
7798
+
case 'Timeout_':
7799
7799
+
return $elm$core$Result$Err($elm$http$Http$Timeout);
7800
7800
+
default:
7801
7801
+
return $elm$core$Result$Err($elm$http$Http$NetworkError);
7802
7802
+
}
7803
7803
+
}),
7804
7804
+
url: url
7805
7805
+
});
7806
7806
+
});
7741
7807
var $author$project$Main$isCnpj = function (s) {
7742
7808
return $elm$core$String$length(
7743
7809
A2($elm$core$String$filter, $elm$core$Char$isAlphaNum, s)) === 14;
···
7801
7867
var accModel = _v6.a;
7802
7868
var accCmds = _v6.b;
7803
7869
var partnerName = A2($elm$core$Maybe$withDefault, rel.partnerId, rel.partnerName);
7870
7870
+
var partnerCmd = ($author$project$Main$isCnpj(rel.partnerId) && (!A2($elm$core$Dict$member, rel.partnerId, accModel.nodes))) ? A2($author$project$Api$fetchCompanyName, accModel.jsonApi, rel.partnerId) : $elm$core$Platform$Cmd$none;
7804
7871
var edge = _Utils_Tuple2(rel.cnpj, rel.partnerId);
7805
7872
var updatedEdges = A2($elm$core$Set$insert, edge, accModel.edges);
7873
7873
+
var companyCmd = ($author$project$Main$isCnpj(rel.cnpj) && (!A2($elm$core$Dict$member, rel.cnpj, accModel.nodes))) ? A2($author$project$Api$fetchCompanyName, accModel.jsonApi, rel.cnpj) : $elm$core$Platform$Cmd$none;
7806
7874
var _v1 = A2($elm$core$Dict$member, rel.partnerId, accModel.nodes) ? _Utils_Tuple2(0, 0) : A3($author$project$Main$spawnNear, rel.cnpj, rel.partnerId, accModel);
7807
7875
var p_nx = _v1.a;
7808
7876
var p_ny = _v1.b;
···
7821
7889
return existing;
7822
7890
}
7823
7891
} else {
7824
7824
-
var entity = $author$project$Main$isCnpj(rel.partnerId) ? A2($author$project$Types$Company, partnerName, rel.partnerId) : A2($author$project$Types$Person, partnerName, rel.partnerCpf);
7892
7892
+
var entity = $author$project$Main$isCnpj(rel.partnerId) ? A3($author$project$Types$Company, partnerName, rel.partnerId, $author$project$Types$StatusLoading) : A2($author$project$Types$Person, partnerName, rel.partnerCpf);
7825
7893
return {depth: depth + 1, entity: entity, error: $elm$core$Maybe$Nothing, id: rel.partnerId, vx: 0, vy: 0, x: p_nx, y: p_ny};
7826
7894
}
7827
7895
}();
···
7835
7903
return _Utils_update(
7836
7904
existing,
7837
7905
{
7838
7838
-
entity: A2($author$project$Types$Company, rel.razaoSocial, rel.cnpj)
7906
7906
+
entity: A3($author$project$Types$Company, rel.razaoSocial, rel.cnpj, $author$project$Types$StatusLoading)
7839
7907
});
7840
7908
} else {
7841
7909
return {
7842
7910
depth: depth + 1,
7843
7843
-
entity: A2($author$project$Types$Company, rel.razaoSocial, rel.cnpj),
7911
7911
+
entity: A3($author$project$Types$Company, rel.razaoSocial, rel.cnpj, $author$project$Types$StatusLoading),
7844
7912
error: $elm$core$Maybe$Nothing,
7845
7913
id: rel.cnpj,
7846
7914
vx: 0,
···
7859
7927
_Utils_update(
7860
7928
accModel,
7861
7929
{edges: updatedEdges, nodes: updatedNodes}),
7862
7862
-
accCmds);
7930
7930
+
$elm$core$Platform$Cmd$batch(
7931
7931
+
_List_fromArray(
7932
7932
+
[accCmds, companyCmd, partnerCmd])));
7863
7933
});
7864
7934
var _v0 = A3(
7865
7935
$elm$core$List$foldl,
···
9721
9791
}
9722
9792
case 'GotCompanyName':
9723
9793
var cnpj = msg.a;
9724
9724
-
var url = msg.b;
9725
9794
var result = msg.c;
9726
9795
if (result.$ === 'Ok') {
9727
9727
-
var name = result.a;
9796
9796
+
var info = result.a;
9797
9797
+
var status = $author$project$Main$codeToStatus(info.situacaoCadastral);
9728
9798
var updatedNodes = A3(
9729
9799
$elm$core$Dict$update,
9730
9800
cnpj,
···
9737
9807
var _v7 = node.entity;
9738
9808
if (_v7.$ === 'Company') {
9739
9809
var id = _v7.b;
9740
9740
-
return A2($author$project$Types$Company, name, id);
9810
9810
+
return A3($author$project$Types$Company, info.name, id, status);
9741
9811
} else {
9742
9742
-
return A2($author$project$Types$Company, name, cnpj);
9812
9812
+
return A3($author$project$Types$Company, info.name, cnpj, status);
9743
9813
}
9744
9814
}()
9745
9815
});
···
9751
9821
{nodes: updatedNodes}),
9752
9822
$elm$core$Platform$Cmd$none);
9753
9823
} else {
9754
9754
-
return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);
9824
9824
+
var updatedNodes = A3(
9825
9825
+
$elm$core$Dict$update,
9826
9826
+
cnpj,
9827
9827
+
$elm$core$Maybe$map(
9828
9828
+
function (node) {
9829
9829
+
return _Utils_update(
9830
9830
+
node,
9831
9831
+
{
9832
9832
+
entity: function () {
9833
9833
+
var _v8 = node.entity;
9834
9834
+
if (_v8.$ === 'Company') {
9835
9835
+
var name = _v8.a;
9836
9836
+
var id = _v8.b;
9837
9837
+
return A3($author$project$Types$Company, name, id, $author$project$Types$StatusUnknown);
9838
9838
+
} else {
9839
9839
+
return A3($author$project$Types$Company, cnpj, cnpj, $author$project$Types$StatusUnknown);
9840
9840
+
}
9841
9841
+
}()
9842
9842
+
});
9843
9843
+
}),
9844
9844
+
model.nodes);
9845
9845
+
return _Utils_Tuple2(
9846
9846
+
_Utils_update(
9847
9847
+
model,
9848
9848
+
{nodes: updatedNodes}),
9849
9849
+
$elm$core$Platform$Cmd$none);
9755
9850
}
9756
9851
case 'Tick':
9757
9852
return _Utils_Tuple2(
···
9787
9882
case 'InteractionMove':
9788
9883
var dx = msg.a;
9789
9884
var dy = msg.b;
9790
9790
-
var _v8 = model.dragNode;
9791
9791
-
if (_v8.$ === 'Just') {
9792
9792
-
var id = _v8.a;
9885
9885
+
var _v9 = model.dragNode;
9886
9886
+
if (_v9.$ === 'Just') {
9887
9887
+
var id = _v9.a;
9793
9888
var updatedNodes = A3(
9794
9889
$elm$core$Dict$update,
9795
9890
id,
···
9821
9916
model,
9822
9917
{dragNode: $elm$core$Maybe$Nothing, isPanning: false, startPos: $elm$core$Maybe$Nothing});
9823
9918
var isClick = function () {
9824
9824
-
var _v10 = model.startPos;
9825
9825
-
if (_v10.$ === 'Just') {
9826
9826
-
var start = _v10.a;
9919
9919
+
var _v11 = model.startPos;
9920
9920
+
if (_v11.$ === 'Just') {
9921
9921
+
var start = _v11.a;
9827
9922
var dy = y - start.y;
9828
9923
var dx = x - start.x;
9829
9924
var dist = $elm$core$Basics$sqrt((dx * dx) + (dy * dy));
···
9832
9927
return false;
9833
9928
}
9834
9929
}();
9835
9835
-
var _v9 = _Utils_Tuple2(isClick, model.dragNode);
9836
9836
-
if (_v9.a && (_v9.b.$ === 'Just')) {
9837
9837
-
var id = _v9.b.a;
9930
9930
+
var _v10 = _Utils_Tuple2(isClick, model.dragNode);
9931
9931
+
if (_v10.a && (_v10.b.$ === 'Just')) {
9932
9932
+
var id = _v10.b.a;
9838
9933
var $temp$msg = $author$project$Types$NodeClicked(id),
9839
9934
$temp$model = newModel;
9840
9935
msg = $temp$msg;
···
9869
9964
}
9870
9965
default:
9871
9966
var url = msg.a;
9872
9872
-
var _v12 = $author$project$Main$parseUrl(url);
9873
9873
-
switch (_v12.$) {
9967
9967
+
var _v13 = $author$project$Main$parseUrl(url);
9968
9968
+
switch (_v13.$) {
9874
9969
case 'CnpjRoute':
9875
9875
-
var cnpj = _v12.a;
9970
9970
+
var cnpj = _v13.a;
9876
9971
var cleanCnpj = function (s) {
9877
9972
return A2(
9878
9973
$elm$core$String$filter,
···
9916
10011
reset));
9917
10012
}
9918
10013
case 'ConnectionRoute':
9919
9919
-
var id1 = _v12.a;
9920
9920
-
var id2 = _v12.b;
10014
10014
+
var id1 = _v13.a;
10015
10015
+
var id2 = _v13.b;
9921
10016
var isSame = _Utils_eq(
9922
10017
id1,
9923
10018
A2($elm$core$String$filter, $elm$core$Char$isAlphaNum, model.connectionInput1)) && _Utils_eq(
···
10110
10205
_VirtualDom_noJavaScriptUri(url));
10111
10206
};
10112
10207
var $elm$html$Html$Attributes$id = $elm$html$Html$Attributes$stringProperty('id');
10113
10113
-
var $elm$html$Html$input = _VirtualDom_node('input');
10114
10114
-
var $elm$html$Html$label = _VirtualDom_node('label');
10115
10115
-
var $elm$html$Html$main_ = _VirtualDom_node('main');
10208
10208
+
var $elm$html$Html$details = _VirtualDom_node('details');
10209
10209
+
var $elm$html$Html$span = _VirtualDom_node('span');
10210
10210
+
var $author$project$View$legend = A2(
10211
10211
+
$elm$html$Html$div,
10212
10212
+
_List_fromArray(
10213
10213
+
[
10214
10214
+
$elm$html$Html$Attributes$class('legend')
10215
10215
+
]),
10216
10216
+
_List_fromArray(
10217
10217
+
[
10218
10218
+
A2(
10219
10219
+
$elm$html$Html$span,
10220
10220
+
_List_fromArray(
10221
10221
+
[
10222
10222
+
$elm$html$Html$Attributes$class('legend-item')
10223
10223
+
]),
10224
10224
+
_List_fromArray(
10225
10225
+
[
10226
10226
+
A2(
10227
10227
+
$elm$html$Html$span,
10228
10228
+
_List_fromArray(
10229
10229
+
[
10230
10230
+
$elm$html$Html$Attributes$class('legend-dot legend-company-active')
10231
10231
+
]),
10232
10232
+
_List_Nil),
10233
10233
+
$elm$html$Html$text('Empresa ativa')
10234
10234
+
])),
10235
10235
+
A2(
10236
10236
+
$elm$html$Html$span,
10237
10237
+
_List_fromArray(
10238
10238
+
[
10239
10239
+
$elm$html$Html$Attributes$class('legend-item')
10240
10240
+
]),
10241
10241
+
_List_fromArray(
10242
10242
+
[
10243
10243
+
A2(
10244
10244
+
$elm$html$Html$span,
10245
10245
+
_List_fromArray(
10246
10246
+
[
10247
10247
+
$elm$html$Html$Attributes$class('legend-dot legend-company-inactive')
10248
10248
+
]),
10249
10249
+
_List_Nil),
10250
10250
+
$elm$html$Html$text('Empresa inativa')
10251
10251
+
])),
10252
10252
+
A2(
10253
10253
+
$elm$html$Html$span,
10254
10254
+
_List_fromArray(
10255
10255
+
[
10256
10256
+
$elm$html$Html$Attributes$class('legend-item')
10257
10257
+
]),
10258
10258
+
_List_fromArray(
10259
10259
+
[
10260
10260
+
A2(
10261
10261
+
$elm$html$Html$span,
10262
10262
+
_List_fromArray(
10263
10263
+
[
10264
10264
+
$elm$html$Html$Attributes$class('legend-dot legend-company-unknown')
10265
10265
+
]),
10266
10266
+
_List_Nil),
10267
10267
+
$elm$html$Html$text('Empresa não encontrada')
10268
10268
+
])),
10269
10269
+
A2(
10270
10270
+
$elm$html$Html$span,
10271
10271
+
_List_fromArray(
10272
10272
+
[
10273
10273
+
$elm$html$Html$Attributes$class('legend-item')
10274
10274
+
]),
10275
10275
+
_List_fromArray(
10276
10276
+
[
10277
10277
+
A2(
10278
10278
+
$elm$html$Html$span,
10279
10279
+
_List_fromArray(
10280
10280
+
[
10281
10281
+
$elm$html$Html$Attributes$class('legend-dot legend-person')
10282
10282
+
]),
10283
10283
+
_List_Nil),
10284
10284
+
$elm$html$Html$text('Pessoa física')
10285
10285
+
]))
10286
10286
+
]));
10116
10287
var $elm$html$Html$abbr = _VirtualDom_node('abbr');
10117
10117
-
var $elm$html$Html$details = _VirtualDom_node('details');
10118
10288
var $elm$html$Html$em = _VirtualDom_node('em');
10119
10289
var $elm$html$Html$small = _VirtualDom_node('small');
10120
10120
-
var $elm$html$Html$summary = _VirtualDom_node('summary');
10121
10290
var $elm$html$Html$Attributes$title = $elm$html$Html$Attributes$stringProperty('title');
10122
10122
-
var $author$project$View$methodology = function (tab) {
10291
10291
+
var $author$project$View$methodologyText = function (tab) {
10123
10292
return A2(
10124
10124
-
$elm$html$Html$details,
10293
10293
+
$elm$html$Html$small,
10294
10294
+
_List_Nil,
10125
10295
_List_fromArray(
10126
10296
[
10127
10127
-
$elm$html$Html$Attributes$class('methodology')
10128
10128
-
]),
10129
10129
-
_List_fromArray(
10130
10130
-
[
10131
10131
-
A2(
10132
10132
-
$elm$html$Html$summary,
10133
10133
-
_List_Nil,
10134
10134
-
_List_fromArray(
10135
10135
-
[
10136
10136
-
A2(
10137
10137
-
$elm$html$Html$small,
10297
10297
+
function () {
10298
10298
+
if (tab.$ === 'CnpjTab') {
10299
10299
+
return A2(
10300
10300
+
$elm$html$Html$div,
10138
10301
_List_Nil,
10139
10302
_List_fromArray(
10140
10303
[
10141
10141
-
$elm$html$Html$text('Como funciona esta busca?')
10142
10142
-
]))
10143
10143
-
])),
10144
10144
-
A2(
10145
10145
-
$elm$html$Html$small,
10146
10146
-
_List_Nil,
10147
10147
-
_List_fromArray(
10148
10148
-
[
10149
10149
-
function () {
10150
10150
-
if (tab.$ === 'CnpjTab') {
10151
10151
-
return A2(
10152
10152
-
$elm$html$Html$div,
10153
10153
-
_List_Nil,
10304
10304
+
$elm$html$Html$text('A partir do CNPJ informado, o grafo é construído em largura ('),
10305
10305
+
A2(
10306
10306
+
$elm$html$Html$abbr,
10307
10307
+
_List_fromArray(
10308
10308
+
[
10309
10309
+
$elm$html$Html$Attributes$title('Busca em largura'),
10310
10310
+
A2($elm$html$Html$Attributes$attribute, 'aria-label', 'Busca em largura')
10311
10311
+
]),
10154
10312
_List_fromArray(
10155
10313
[
10156
10156
-
$elm$html$Html$text('A partir do CNPJ informado, o grafo é construído em largura ('),
10157
10314
A2(
10158
10158
-
$elm$html$Html$abbr,
10315
10315
+
$elm$html$Html$a,
10159
10316
_List_fromArray(
10160
10317
[
10161
10161
-
$elm$html$Html$Attributes$title('Busca em largura'),
10162
10162
-
A2($elm$html$Html$Attributes$attribute, 'aria-label', 'Busca em largura')
10318
10318
+
$elm$html$Html$Attributes$href('https://pt.wikipedia.org/wiki/Busca_em_largura'),
10319
10319
+
A2($elm$html$Html$Attributes$attribute, 'target', '_blank'),
10320
10320
+
A2($elm$html$Html$Attributes$attribute, 'rel', 'noopener noreferrer')
10163
10321
]),
10164
10322
_List_fromArray(
10165
10323
[
10166
10166
-
A2(
10167
10167
-
$elm$html$Html$a,
10168
10168
-
_List_fromArray(
10169
10169
-
[
10170
10170
-
$elm$html$Html$Attributes$href('https://pt.wikipedia.org/wiki/Busca_em_largura'),
10171
10171
-
A2($elm$html$Html$Attributes$attribute, 'target', '_blank'),
10172
10172
-
A2($elm$html$Html$Attributes$attribute, 'rel', 'noopener noreferrer')
10173
10173
-
]),
10174
10174
-
_List_fromArray(
10175
10175
-
[
10176
10176
-
$elm$html$Html$text('BFS')
10177
10177
-
]))
10178
10178
-
])),
10179
10179
-
$elm$html$Html$text('): cada empresa traz seus sócios, e cada sócio traz as empresas em que participa. A expansão automática para em '),
10180
10180
-
A2(
10181
10181
-
$elm$html$Html$em,
10182
10182
-
_List_Nil,
10183
10183
-
_List_fromArray(
10184
10184
-
[
10185
10185
-
$elm$html$Html$text('profundidade 8')
10186
10186
-
])),
10187
10187
-
$elm$html$Html$text(' ou '),
10188
10188
-
A2(
10189
10189
-
$elm$html$Html$em,
10190
10190
-
_List_Nil,
10191
10191
-
_List_fromArray(
10192
10192
-
[
10193
10193
-
$elm$html$Html$text('32 nós')
10194
10194
-
])),
10195
10195
-
$elm$html$Html$text(' — o que vier primeiro. A partir daí, clique em qualquer nó com borda destacada para expandi-lo manualmente, um nível por vez, sem novos limites.')
10196
10196
-
]));
10197
10197
-
} else {
10198
10198
-
return A2(
10199
10199
-
$elm$html$Html$div,
10324
10324
+
$elm$html$Html$text('BFS')
10325
10325
+
]))
10326
10326
+
])),
10327
10327
+
$elm$html$Html$text('): cada empresa traz seus sócios, e cada sócio traz as empresas em que participa. A expansão automática para em '),
10328
10328
+
A2(
10329
10329
+
$elm$html$Html$em,
10330
10330
+
_List_Nil,
10331
10331
+
_List_fromArray(
10332
10332
+
[
10333
10333
+
$elm$html$Html$text('profundidade 8')
10334
10334
+
])),
10335
10335
+
$elm$html$Html$text(' ou '),
10336
10336
+
A2(
10337
10337
+
$elm$html$Html$em,
10200
10338
_List_Nil,
10201
10339
_List_fromArray(
10202
10340
[
10203
10203
-
$elm$html$Html$text('A API busca o menor caminho de relação entre as duas entidades (sócio-empresa) via busca bidirecional em largura, com limite de 90 segundos. O grafo exibe apenas os nós desse caminho, sem expansão automática. Clique nos nós para explorá-los individualmente. Se não houver caminho, a busca retorna vazia; se ultrapassar 90s, retorna erro de tempo esgotado — o que não significa ausência de conexão, apenas que o cálculo demorou demais.')
10204
10204
-
]));
10205
10205
-
}
10206
10206
-
}()
10207
10207
-
]))
10341
10341
+
$elm$html$Html$text('32 nós')
10342
10342
+
])),
10343
10343
+
$elm$html$Html$text(' — o que vier primeiro. A partir daí, clique em qualquer nó com borda destacada para expandi-lo manualmente, um nível por vez, sem novos limites.')
10344
10344
+
]));
10345
10345
+
} else {
10346
10346
+
return A2(
10347
10347
+
$elm$html$Html$div,
10348
10348
+
_List_Nil,
10349
10349
+
_List_fromArray(
10350
10350
+
[
10351
10351
+
$elm$html$Html$text('A API busca o menor caminho de relação entre as duas entidades (sócio-empresa) via busca bidirecional em largura, com limite de 90 segundos. O grafo exibe apenas os nós desse caminho, sem expansão automática. Clique nos nós para explorá-los individualmente. Se não houver caminho, a busca retorna vazia; se ultrapassar 90s, retorna erro de tempo esgotado — o que não significa ausência de conexão, apenas que o cálculo demorou demais.'),
10352
10352
+
A2(
10353
10353
+
$elm$html$Html$div,
10354
10354
+
_List_fromArray(
10355
10355
+
[
10356
10356
+
$elm$html$Html$Attributes$class('info-panel-divider')
10357
10357
+
]),
10358
10358
+
_List_Nil),
10359
10359
+
$elm$html$Html$text('Para pessoas jurídicas, o identificador é o CNPJ. Para pessoas físicas, o identificador é um hash MD5 determinístico do CPF (com os dígitos redactos, tal como divulgados na fonte oficial) e do nome. Para encontrar o ID de uma pessoa, busque primeiro uma empresa da qual ela é sócia (aba CNPJ), clique no nó da pessoa para expandi-lo e copie o ID exibido no rótulo.')
10360
10360
+
]));
10361
10361
+
}
10362
10362
+
}()
10208
10363
]));
10209
10364
};
10365
10365
+
var $elm$html$Html$summary = _VirtualDom_node('summary');
10366
10366
+
var $author$project$View$infoPanel = F2(
10367
10367
+
function (tab, isEmpty) {
10368
10368
+
return A2(
10369
10369
+
$elm$html$Html$details,
10370
10370
+
_List_fromArray(
10371
10371
+
[
10372
10372
+
$elm$html$Html$Attributes$class('info-panel')
10373
10373
+
]),
10374
10374
+
_List_fromArray(
10375
10375
+
[
10376
10376
+
A2(
10377
10377
+
$elm$html$Html$summary,
10378
10378
+
_List_Nil,
10379
10379
+
_List_fromArray(
10380
10380
+
[
10381
10381
+
A2(
10382
10382
+
$elm$html$Html$small,
10383
10383
+
_List_Nil,
10384
10384
+
_List_fromArray(
10385
10385
+
[
10386
10386
+
$elm$html$Html$text('Como funciona esta busca?')
10387
10387
+
]))
10388
10388
+
])),
10389
10389
+
isEmpty ? $author$project$View$methodologyText(tab) : A2(
10390
10390
+
$elm$html$Html$div,
10391
10391
+
_List_Nil,
10392
10392
+
_List_fromArray(
10393
10393
+
[
10394
10394
+
$author$project$View$legend,
10395
10395
+
A2(
10396
10396
+
$elm$html$Html$div,
10397
10397
+
_List_fromArray(
10398
10398
+
[
10399
10399
+
$elm$html$Html$Attributes$class('info-panel-divider')
10400
10400
+
]),
10401
10401
+
_List_Nil),
10402
10402
+
$author$project$View$methodologyText(tab)
10403
10403
+
]))
10404
10404
+
]));
10405
10405
+
});
10406
10406
+
var $elm$html$Html$input = _VirtualDom_node('input');
10407
10407
+
var $elm$html$Html$label = _VirtualDom_node('label');
10408
10408
+
var $elm$html$Html$main_ = _VirtualDom_node('main');
10210
10409
var $elm$html$Html$nav = _VirtualDom_node('nav');
10211
10410
var $elm$json$Json$Decode$fail = _Json_fail;
10212
10411
var $author$project$View$onEnter = function (msg) {
···
10303
10502
var dict = _v0.a;
10304
10503
return $elm$core$Dict$size(dict);
10305
10504
};
10306
10306
-
var $elm$html$Html$span = _VirtualDom_node('span');
10307
10505
var $elm$svg$Svg$svg = $elm$svg$Svg$trustedNode('svg');
10308
10506
var $elm$svg$Svg$Attributes$transform = _VirtualDom_attribute('transform');
10309
10507
var $elm$html$Html$ul = _VirtualDom_node('ul');
···
10356
10554
});
10357
10555
var $elm$svg$Svg$a = $elm$svg$Svg$trustedNode('a');
10358
10556
var $elm$svg$Svg$circle = $elm$svg$Svg$trustedNode('circle');
10557
10557
+
var $author$project$View$companyStatusClass = function (status) {
10558
10558
+
switch (status.$) {
10559
10559
+
case 'StatusLoading':
10560
10560
+
return 'company-active';
10561
10561
+
case 'StatusActive':
10562
10562
+
return 'company-active';
10563
10563
+
case 'StatusInactive':
10564
10564
+
return 'company-inactive';
10565
10565
+
default:
10566
10566
+
return 'company-unknown';
10567
10567
+
}
10568
10568
+
};
10359
10569
var $elm$svg$Svg$Attributes$dy = _VirtualDom_attribute('dy');
10360
10570
var $author$project$Types$InteractionStart = F3(
10361
10571
function (a, b, c) {
···
10486
10696
var _v0 = function () {
10487
10697
var _v1 = node.entity;
10488
10698
if (_v1.$ === 'Company') {
10489
10489
-
return _Utils_Tuple2('node-company', 8);
10699
10699
+
var situacao = _v1.c;
10700
10700
+
return _Utils_Tuple2(
10701
10701
+
'node-company ' + $author$project$View$companyStatusClass(situacao),
10702
10702
+
8);
10490
10703
} else {
10491
10704
return _Utils_Tuple2('node-person', 5);
10492
10705
}
···
10894
11107
])) : $elm$html$Html$text('')
10895
11108
]))
10896
11109
])),
10897
10897
-
$author$project$View$methodology(model.activeTab)
11110
11110
+
A2(
11111
11111
+
$author$project$View$infoPanel,
11112
11112
+
model.activeTab,
11113
11113
+
$elm$core$Dict$isEmpty(model.nodes))
10898
11114
])),
10899
11115
A2(
10900
11116
$elm$html$Html$footer,