Histórico da Página
| HTML |
|---|
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', Arial, sans-serif;
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
min-height: 100vh;
padding: 20px;
}
.release-notes-wrapper {
max-width: 1400px;
margin: 0 auto;
background: white;
border-radius: 12px;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);
overflow: hidden;
}
.header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 30px 40px;
border-radius: 0;
margin-bottom: 0;
position: relative;
overflow: hidden;
}
.header::before {
content: '';
position: absolute;
top: -50%;
right: -10%;
width: 500px;
height: 500px;
background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%);
border-radius: 50%;
}
.header h1 {
margin: 0;
font-size: 32px;
font-weight: 600;
}
.metadata {
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
padding: 20px 40px;
border-bottom: 1px solid #dee2e6;
display: flex;
align-items: center;
gap: 30px;
flex-wrap: wrap;
}
.metadata-item {
display: flex;
align-items: center;
gap: 10px;
}
.metadata-item strong {
color: #495057;
font-weight: 600;
}
.metadata-item span {
color: #0A2333;
background: white;
padding: 6px 14px;
border-radius: 6px;
font-weight: 600;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}
.doc-link {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 10px 20px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
text-decoration: none;
border-radius: 8px;
font-weight: 600;
font-size: 14px;
transition: all 0.3s ease;
box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);
margin-left: auto;
}
.doc-link:hover {
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);
}
.doc-link:active {
transform: translateY(0);
}
#widget-container {
padding: 0;
min-height: 700px;
background: #ffffff;
}
.message-box {
padding: 40px;
text-align: center;
background: linear-gradient(135deg, #fff3cd 0%, #ffe69c 100%);
margin: 30px;
border-radius: 10px;
border-left: 5px solid #ffc107;
box-shadow: 0 4px 12px rgba(255, 193, 7, 0.2);
}
.message-box.error {
background: linear-gradient(135deg, #fee 0%, #fcc 100%);
border-left-color: #dc3545;
box-shadow: 0 4px 12px rgba(220, 53, 69, 0.2);
}
.message-box h2 {
color: #856404;
margin-bottom: 15px;
font-size: 24px;
}
.message-box.error h2 {
color: #721c24;
}
.message-box p {
color: #856404;
font-size: 16px;
line-height: 1.6;
}
.message-box.error p {
color: #721c24;
}
.message-icon {
font-size: 48px;
margin-bottom: 15px;
display: block;
}
iframe {
border: none;
width: 100%;
height: 800px;
display: block;
}
.loading {
text-align: center;
padding: 60px 20px;
color: #6c757d;
font-size: 18px;
}
.loading::before {
content: '';
display: block;
width: 50px;
height: 50px;
margin: 0 auto 20px;
border: 4px solid #e9ecef;
border-top-color: #667eea;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
@media (max-width: 768px) {
body {
padding: 10px;
}
.header {
padding: 20px;
}
.header h1 {
font-size: 24px;
}
.metadata {
padding: 15px 20px;
flex-direction: column;
align-items: flex-start;
}
.doc-link {
margin-left: 0;
margin-top: 10px;
width: 100%;
justify-content: center;
}
}
</style>
</head>
<body>
<div class="release-notes-wrapper">
<div class="header">
<h1 id="page-title">Dicionário de Dados</h1>
</div>
<div class="metadata">
<div class="metadata-item">
<strong>Versão:</strong>
<span id="version-display">Carregando...</span>
</div>
<div class="metadata-item">
<strong>Última atualização:</strong>
<span id="last-update">-</span>
</div>
<a href="#" id="doc-link" class="doc-link" target="_blank" style="display: none;">
<span>📄</span>
<span>Abrir no Google Docs</span>
</a>
</div>
<div id="widget-container">
<div class="loading">Carregando documento...</div>
</div>
</div>
<script>
(function() {
// Mapeamento de versões para Documentarquivos IDsno doDrive (Google Docs e arquivosou .txt)
// Gerado automaticamente a partir da pasta: 141aJRhZeYZca4QCBnou6-00WzRLkBYbs
// Data: 2025-12-16 22:24:12
// Total: 6279 versões (2 Google Docs + 60 arquivos .txt - todos funcionando!)
const versionToDocIdversionToFile = {
'12.1.2411': { // Google Docs (2)id: '1Lv47Us2UXm2UP0JjtfGFiOcVXW9cwSjS', type: 'txt' },
'12.1.25032411.141': { id: '13QaSU_lP1_haWnOYl7UjPvsKfi3AaPdKwciYHrceEt4'12KVuystA1cYiy8KyStDkuRZ6Y_bnd7vp', type: 'txt' },
'12.1.25112411.2': '1gLo16QDT99iGdaoKyFHBW1n5jF-gt-awBjnSQrBZa3c',
{ id: '131kP3__usmuXsh-IWJX1pf2oQkHIVgd2', type: 'txt' },
// Arquivos .txt (60) - funcionando diretamente no Widget Connector'12.1.2411.3': { id: '1rEiaQCivt3ypEuSSJjhcJwLWb8hWzTYC', type: 'txt' },
'12.1.2503'2411.4': { id: '16LxCYWkutU4Di6sYfjlLIPd7SBbWTJdA', type: '1BRsJyHOHQNOEpAfIm5ndOn6z_0gffbaFtxt' },
'12.1.25032411.155': '12ejZuDikegyaH2n16n2Hpas1Z3VEjc5e'{ id: '1ITodeqjUDPH-T6Ve5LbNRoTfPMHa9EU9', type: 'txt' },
'12.1.2503.16'2411.6': { id: '1eoIz5qr6Yk_leeayK8kpAfGsZkZgm1_k', type: '15BkT50wXw7kJccfw4iRB-LVGQyTzQVf1txt' },
'12.1.2503.17'2411.7': { id: '1NTabmPduDgwOhs2yiXaUKdE5XgDgIDP5', type: '1L4FUKbDjnAs29rK0ymfMgRVJPPVtzYdWtxt' },
'12.1.25032411.188': '1LNSFua5jsEw9m2D4X7lBVsbk6qXsG3cm'{ id: '1BO4TvdfDZIziAHo_RVTRQ_Ylt4ESBp4u', type: 'txt' },
'12.1.2507'2411.9': { id: '1pT42y90cnf2UY2gK5k035jEFVkIs7s-n1LUxDVYRwO7DuFkPOWzBD6YCf58wJDNJl',
type: 'txt' },
'12.1.25072411.110': { id: '1lo7KiRJGWYJFfH-Xqv-dvNcRoIy6ecj3'1HOmWcuLGW-iDEEeQmdSDCN8eRbYHzbdr', type: 'txt' },
'12.1.2507.2'2411.11': { id: '1po-iUP-p9KNqQAufsuMra5So1vBqjzTo', type: '1xe9L8cCurcXIw5tzxe4H9KNzFgpIObA1txt' },
'12.1.2507.3'2411.12': { id: '10Ef2MFpKsGIfpmhoswv5ys6D2A4bvzUM', type: '1P9jEM2cgtUkyfdK5bsKlSvFCk_SqpMqUtxt' },
'12.1.25072411.413': { id: '12Qk7mEnEe2iIsE-nFUUGOmbt_t8rwjn-'1lQpU7EYwf2kwpv3gZ-yUCnpQcCmXe4kd', type: 'txt' },
'12.1.25072411.514': { id: '1ljgI7Re2mT3yv7TgnZLOZv_n0vzzJTxF'1OskDxjRPa6XFa-Bgue-Xk86kLEy_I0Yl', type: 'txt' },
'12.1.2507.6'2411.15': { id: '1bNHh5VsjJNzaaeHcgpD7xrxn0NsXvP4T', type: '1lwblHVXZUKF8qgdajVB2Va41fxpJkZ9Xtxt' },
'12.1.25072411.716': { id: '1LWO9GFD8iO6HQEJn1jUAT3g_wBybP1EdZ2AZSsDNLQeSMMOPAqyJTZf2sXv8x5ic', type: 'txt' },
'12.1.2507.8'2411.17': { id: '1ogZ3JPrQ_J40345zZTQCL5Uv7TOt741y', type: '1bhB3Pig68EAvmXGoUptLYnJPEnGW4fVrtxt' },
'12.1.2507.92503': '1shjpLbeGfQmrV6DMtm4EuIvqdhHTuEIy{ id: '1AkBtHsIAFcGZ5OyBYNi5KXeAr5ssm_x6',
type: 'txt' },
'12.1.2507.10'2503.1': { id: '12Ke9OpqKA4R_UYWNr6XP9k9-ukjYm_KH', type: '1wU40XkkEMRqw4Ieanf5QrkBz8SwqISzjtxt' },
'12.1.2507.11'2503.2': { id: '1R8hPo8IEZlPxIqjyVqluyNN1JffkrNXZ', type: '1goM3M1WCXvtdx46fY7ZmeeDtwpnvbld5txt' },
'12.1.2507.12'2503.3': { id: '1TL4ythCv_84avpzIeSHjB3Cgxf7_zcgA', type: '15r-G5LdQpPn9gcktkpYVPQS1exs6Io8ttxt' },
'12.1.25072503.134': { id: '1xVHx0mjDewGUVwIGR8GWqTMqX1R_Cj211NkcD1TAnRYxiKcJIVQ9jZ6Psq9SDmMx8',
type: 'txt' },
'12.1.25072503.145': { '1uFblMZhJaYPFrGKtFCC9bAa-2xxtXmiid: '1WH6uqDCBJ8zK8_gRf8DpSiFuivfbUED_', type: 'txt' },
'12.1.2507.15'2503.6': { id: '1rksaNy4Kv-tq55VD7VS2ckoKoGZNNaXe', type: '1vNN6ONnbq1ApNJy6uzGW_hZ27HvhW7Ddtxt' },
'12.1.2507.16'2503.7': { id: '1pUz-j2eWuQrbhJu62nHSiyIzWC-REX2r', type: '1g27jhn6ZEliSZhAJ7Co9FUFLtNBfqVHHtxt' },
'12.1.25072503.178': { id: '1LkwBvxVy_oykf3gEAwlf2eRn0NMiMnL1'1yFXKrIkbEfwUwmYVDe07_QlXt9UVG62y', type: 'txt' },
'12.1.2507.18'2503.9': { id: '1mO80nVEasIRDJ2i9mrRyPM8ObylNDw4T', type: '1he66XmpG6YhgKlxtMv3xik6KccuMKLeStxt' },
'12.1.2511'2503.10': { id: '1VETVn5z5GzD03D1CQpvmmM4Dn0DCH3op', type: '1gPiO2P_mF0wpLX-2g5oFBqi4QS630wKM'txt' },
'12.1.2511.1'2503.11': { id: '1yTTeMu43Q3sBaimMM6cQTvNmD6EkG9VE', type: '1yv4EZZKrfPgI-RWggMfBANtx6dL8owhAtxt' },
'12.1.25112503.312': { id: '14Zd-Npn6VGioc1wsokDL4vfPRVzhb-AY'10tvn9fo-QqXelPRSrb6inuulUQr7vf9g', type: 'txt' },
'12.1.25112503.413': { '1VjoqjmjqCokx4Kv5QDTDa9wZsF1QwICYid: '1Pq1LsXO6SbXr16an401_FKp3yKlfhKx_',
type: 'txt' },
'12.1.25112503.514': { '1evpMFJmgDUFX__dC6W83LZqKQXjmy88s'id: '1pXbF0em-a6e0GYqOMNcbHPGpOOM09VX0', type: 'txt' },
'12.1.2511.6': '1_e3AgOsc9Oqy-JoZhus-zyU-961karvw'2503.15': { id: '1wNBB4tvAaKOC2JLvkTzbxiIyTOgxpEjm', type: 'txt' },
'12.1.25112503.716': { id: '19TKZ4fYof03H0pdzldQnV7_ZYjxowkNr'13mOmXGZ9HaZob2Df6t27osRxWfV138_v', type: 'txt' },
'12.1.2511.82507': { id: '12ivR5sJUwVwcRJr0Q1WdEk0hszYS2UDuOM9vE1_aHBT_y4JwlnTd4KngjkH74oxR',
type: 'txt' },
'12.1.2511.9'2507.1': { id: '1AyMLAxejP2heuLdXWjHKXeWAkSPkVB0f', type: '1Exio4F5z2lo6HnEnLpkDquuu8HUiD3C-txt' },
'12.1.2511.10'2507.2': { id: '1OA878i2Izd3BiwZ0m1UR_mEXgCoxZOyh', type: '1NRs4aZct5OVmSiXDPgMmUw9iFURlC6Odtxt' },
'12.1.2511.11'2507.3': { id: '133AZhy4WixraizeKsqSf6DvJLXyt3h2c', type: '1AAOtpmIahaHaYYUtUFL3OJGJ07dTKLU_txt' },
'12.1.2511.12'2507.4': { id: '1n7D6J02XoWPOQzIj9sPXKo9FTdiKgFcL', type: '1c19qwsUQdWb_H58qcamAQ6Fz9Bwg78Bstxt' },
'12.1.25112507.135': '1CS-VXZJLzPSBjov0r4JVAcTPE5daaE4M'{ id: '1TjukYrLbIi1Uc6adUTLrIvwSP-7LLv7V', type: 'txt' },
'12.1.25112507.146': { id: '1dei-4_gijuPsGzSQKZpIh9DMCYJ2pw8j'16HpmgtvM0WhxN8sr-PiMwNzzKDLocaz1', type: 'txt' },
'12.1.2511.15'2507.7': { id: '1iHJlFXGQMyS-qq6FMj-Ip4n2xLrMjtZA', type: '1qDv9Zm_0CJiKl6iJBzxVxwFCoHNZBky4txt' },
'12.1.2511.16'2507.8': { id: '1EzYgb0Cvha1FB5iX5pZ8I5nh4M8gFnxM', type: '1H51vcp3ierWZE0XB1QEtzUnm0J-0uEVptxt' },
'12.1.25112507.179': { id: '1OwFzjD6j4_OlDi9x7f5xqqoBo_eKY1rd'1rr_KlDuyyZpKlrOJeaXN-xy3AKlx-Cbu', type: 'txt' },
'12.1.2511.18'2507.10': { id: '1pptApgNcLAhk5fNIgq8a-onq-vSNWs3n', type: '1iaMmEP6yDzHR4oTM_SjM2obkaUz1zrBAtxt' },
'12.1.26032507.111': { id: '19iieXcJNDoIM8lp09Zd1STmDXQJDoOH5xMx3qzOd44c-faD22AWepfTCt_k1y7jR', type: 'txt' },
'12.1.2603.2'2507.12': { id: '1BRHWVWAIlhWbTqyIui7VXcqvvLm7l33D', type: '1DFR1cWRUVm3PsPQsVbuJySIjxMIy085Ltxt' },
'12.1.26032507.313': { '1PLCl8hhtuvnW8Q9WDug9NH9F_qO-CUoqid: '19aARCX-cSPA9QIeAxZIW5XxPNXZ3DrMr',
type: 'txt' },
'12.1.26032507.414': { '1qFmELYGulpQizNrXFBCpHdcLOSC5LrsZ'id: '1Kb0f1ijpnPyFLdkHKzHadRvS3FenqIqL', type: 'txt' },
'12.1.2603.5'2511': { id: '14k_1KZwT66qJGnV6mbnEw3bjV-YW7e24', type: '1Q8ZSMOooNeSgmfdEucEsRO6P8z370enZtxt' },
'12.1.26032511.61': { '1P5-nq151raX-NhYufnTRrZMZyeAKsSp2',id: '1OvmZgFOtOoWNVk2zyq1XhFNibCz6pJEc', type: 'txt' },
'12.1.26032511.72': '1VfNdP7lRvi37ZKSOzX1KyEp6dK_t0I-N{ id: '1rV53pygU6L6Ms6x3TU6-syUVsoF6bRs7',
type: 'txt' },
'12.1.26032511.83': { id: '1pxJPuMKfOWXrkwS7zzmm1WxDLhvrFSwdV2Fj1IDs_3i_GerA44ZiVHB6n7KSog8O', type: 'txt' },
'12.1.26032511.94': { id: '1evoXM_3WvL4SGVkwB8EYgwXuD6E4Asmw'1lM65BjCZEzqWcTuP2E9aWaKvORK_nxL5', type: 'txt' },
'12.1.26032511.105': { id: '18tytubaH1oywQoWyAycMM-qMq_347CHb''1SiFQs7kQFV9lgodbrigees8erNiSg54P', type: 'txt' },
'12.1.2603.11'2511.6': { id: '1mhhHU3KgpUKHVZ6JFFY2qdDkKYF1_uQ5', type: '1ORyeFI8qYQynt20Ud66XLKewYQoVdLA6txt' },
'12.1.26032511.127': '1gDfH7fyZSUGl90ikqO3yXsZGm_EXC4PW' { id: '1yHtTXT2B0ZiTRHnBdbkqQkyEm0epeKhT', type: 'txt' },
'12.1.2607.1'2511.8': { id: '1gx-1Al9ZOW6jUTwxWrp9HciFn5jZi3d8', type: '1ruRPs4fBJrKpLoECMGh0X5Ca4Bc_hfPbtxt' },
'12.1.2607.22603': '1njYTB38Ts6_dAZKvkqdvdQcPx99HTRml'{ id: '1VavQf3Ydp_ig_LlgUU-qSgKchZNuMB6P', type: 'txt' },
'12.12.2607.32411': { '1uQR-2_JLet0Cyo7K6XaClDaXqxBu7udV'id: '1WyGG5rBNM2Uoy_j1W9DyrwFC3Oj63CJx', type: 'txt' },
'12.12.26072411.416': '1G41yiKUzoWgIrbQATlhYntb73FSH9U76' { id: '121oW6Mq_ivk2lT9wfORwVhpmkTk84lWL', type: 'txt' },
'12.12.2607.5'2411.17': { id: '1TImPbeVuRiv2fbPV9DpdIAIuJIN3jIM6', type: '1_BfY0poM0AeAFy39vK-XZmBhEafIzzBf'txt' },
'12.12.2607.6'2503': { id: '1cm7WuMWrQYjGDdeMdmdAqIFX5ugROaHY1cIup3Z-F7J4NE9MMoFUj7CLcbpmLOQP6',
type: 'txt' },
};
'12.2.2503.11': { id: '1mfmpLR7h0ruGo397tQCtHpYcSCwpqn4N', type: 'txt' },
// Função para extrair versão do título "Dicionário de Dados 12.1.2503.14" '12.2.2503.12': { id: '1O_-1CnuKhm1XAtnVMmsb9ovSBVGWA-6G', type: 'txt' },
'12.2.2503.13': { id: '1bwgAgWYzWRFn2E8L_2Y_xokPepLEIF6_', type: 'txt' },
'12.2.2503.15': { id: '1vIy-eE4UtDvI0Vv7BXPZvyucO2su6KkL', type: 'txt' },
'12.2.2507': { id: '1OGqnrdwMc0j6zwaRhMPNGG8bkuO-kECb', type: 'txt' },
'12.2.2507.4': { id: '1I2PJINB0z4HWlcxDTiq-I9skmO0A9zc8', type: 'txt' },
'12.2.2507.5': { id: '19kiRv3tBFyUSHnGwyvjvGMBhC5EzToXx', type: 'txt' },
'12.2.2507.6': { id: '1L_Jw3GMjz7F_OaNZr_lzcJHRKGW76gbN', type: 'txt' },
'12.2.2507.7': { id: '1ZDyVikOavwwz5rCByx1_s9PyF2czY_BF', type: 'txt' },
'12.2.2507.8': { id: '1cLJ_BPltcqHslEP1Lim0iUMUBPBQrYPz', type: 'txt' },
'12.2.2507.9': { id: '13Er9lyxm4HmPPCd3JNymTvX_Dl4-mdlj', type: 'txt' },
'12.2.2511': { id: '1eGYnJ1I820VGvUwrpuMvWCWqlgiiWvkg', type: 'txt' },
'12.2.2511.1': { id: '1jIW7ElN9zpUw4B-9z98O1pkpyKWXS9vW', type: 'txt' },
'12.2.2511.2': { id: '1MCI-twulc3CVz8rfeoJNF-gXrx_B_QBy', type: 'txt' },
'12.2.2511.3': { id: '1u49828qMI0OtX129cMPD-zysUGof4msV', type: 'txt' },
};
// Função para extrair versão do título "Dicionário de Dados 12.1.2503.14"
function getPageVersion() {
const versionPattern = /(\d+\.\d+\.\d+(?:\.\d+)?)/;
// Método 1: Título da página (Confluence)
const selectors = [
'h1#title-text',
'.page-title',
'h1',
'[data-page-title]'
];
for (const selector of selectors) {
const element = document.querySelector(selector);
if (element) {
function getPageVersion() {
const text = element.textContent.trim();
const versionPatternmatch = /(\d+\.\d+\.\d+(?:\.\d+)?)/;
text.match(versionPattern);
if (match) {
// Métodoreturn 1: Título da página (Confluence)
match[1];
const selectors = [}
'h1#title-text',
}
}
'.page-title',
'h1',
// Método 2: Meta tags
'[data-page-title]'
const metaTitle = document.querySelector('meta[property="og:title"], meta[name="title"]');
];
if (metaTitle) {
const titleText = for (const selector of selectors) {metaTitle.getAttribute('content') || '';
const elementmatch = documenttitleText.querySelectormatch(selectorversionPattern);
if (elementmatch) {
const text = element.textContent.trim();
return match[1];
}
const match = text.match(versionPattern);
}
if (match) {
// Método 3: document.title
return match[1];
const titleMatch = document.title.match(versionPattern);
if (titleMatch) }{
}return titleMatch[1];
}
// Método 24: MetaURL tags(fallback)
const metaTitleurlParams = document.querySelector('meta[property="og:title"], meta[name="title"]' new URLSearchParams(window.location.search);
if (metaTitle) {const titleParam = urlParams.get('title');
const titleText = metaTitle.getAttribute('content') || '';if (titleParam) {
const match = titleTextdecodeURIComponent(titleParam).match(versionPattern);
if (match) {
return match[1];
}
}
// Método 3: document.title
return null;
}
const titleMatch = document.title.match(versionPattern);
// if (titleMatch) {Obter versão
const version return titleMatch[1]= getPageVersion();
const container }= document.getElementById('widget-container');
if (!version) {
// Método 4: URL (fallback)
container.innerHTML = `
const urlParams = new URLSearchParams(window.location.search);
<div class="message-box error">
const titleParam = urlParams.get('title');
<span if (titleParam) {
class="message-icon">❌</span>
const match<h2>Versão = decodeURIComponent(titleParam).match(versionPattern);não identificada</h2>
if (match) {
<p>Certifique-se de que o título da página contém a versão no formato:<br>
return match[1];
<strong>"Dicionário de Dados 12.1.2503.14"</strong></p>
}
}</div>
`;
return null;
}
// ObterAtualizar versãodisplay
const versiondocument.getElementById('version-display').textContent = getPageVersion()version;
const container = document.getElementById('widgetpage-containertitle');
.textContent = `Dicionário de Dados ${version}`;
document.getElementById('last-update').textContent = if (!version) {new Date().toLocaleString('pt-BR');
container.innerHTML = `
// Obter arquivo (Google Doc ou .txt) para a versão
<div class="message-box error">
const fileEntry = versionToFile[version];
<span class="message-icon">❌</span>
if (!fileEntry) {
<h2>Versãocontainer.innerHTML não= identificada</h2>`
<p>Certifique-se de que o título da página contém a versão no formato:<br>
<div class="message-box">
<span class="message-icon">📋</span>
<strong>"Dicionário de Dados 12.1.2503.14"</strong></p>
<h2>Release Notes ainda não foi expedido para essa <versão</div>h2>
`;
<p>O Release Notes para a versão <strong>${version}</strong> ainda não foi return;expedido.<br>
}
Aguarde a expedição ou verifique se a versão está correta.</p>
// Atualizar display
document.getElementById('version-display').textContent = version; </div>
document.getElementById('page-title').textContent = `Dicionário de Dados ${version}`;
document.getElementById('last-update').textContent = new Date().toLocaleString('pt-BR') return;
}
// Obter Document ID
const docIdfileId = versionToDocId[version]fileEntry.id;
const fileType = fileEntry.type; // 'doc' | if (!docId) {'txt' | 'file'
container.innerHTML = `
// Construir URLs corretas por tipo
<div class="message-box">
const openUrl = (fileType === 'doc')
<span class="message-icon">📋</span>
? `https://docs.google.com/document/d/${fileId}/edit?usp=sharing`
: `https://drive.google.com/file/d/${fileId}/view?usp=sharing`;
<h2>Release Notes ainda não
foi expedido para essa versão</h2>
const previewUrl = (fileType === 'doc')
<p>O Release Notes para a versão <strong>${version}</strong> ainda não foi expedido.<br>? `https://docs.google.com/document/d/${fileId}/preview`
Aguarde a expedição ou verifique se a versão está correta.</p>: `https://drive.google.com/file/d/${fileId}/preview`;
</div>
// Adicionar link para `;abrir documento
const docLink return= document.getElementById('doc-link');
}if (docLink) {
docLink.href = openUrl;
// Construir URL do Google Doc
// Ajustar texto do link conforme tipo
const googleDocUrl = `https://docs.google.com/document/d/${docId}/edit?usp=sharing`;
const previewUrllabelSpan = `https://docs.google.com/document/d/${docId}/preview`docLink.querySelector('span:last-child');
if (labelSpan) {
// Adicionar link para abrir documento
labelSpan.textContent = const docLink (fileType === document.getElementById('doc-link');
? 'Abrir no Google Docs' : 'Abrir no if (docLink) {Google Drive';
docLink.href = googleDocUrl;}
docLink.style.display = 'inline-flex';
}
// Verificar se está em modo de edição (Confluence)
if (window.location.href.includes('editpage.action') || window.location.href.includes('edit')) {
// Modo de edição: mostrar código do macro Widget Connector
const widgetCode = `<ac:structured-macro ac:name="widget" ac:schema-version="1">
<ac:parameter ac:name="url">${googleDocUrlopenUrl}</ac:parameter>
<ac:parameter ac:name="width">100%</ac:parameter>
<ac:parameter ac:name="height">800</ac:parameter>
</ac:structured-macro>`;
container.innerHTML = `
<div style="padding: 30px 40px;">
<div style="background: #f4f5f7; padding: 20px; border-radius: 8px; margin-bottom: 15px;">
<h3 style="margin-bottom: 15px; color: #495057;">📋 Código do Widget Connector:</h3>
<pre style="background: white; padding: 15px; border-radius: 5px; overflow-x: auto; font-size: 13px; border: 1px solid #dee2e6;">${widgetCode}</pre>
</div>
<p style="color: #6c757d; font-size: 14px;">
💡 <strong>Instruções:</strong> Copie o código acima e cole no editor do Confluence usando o macro "Widget Connector".
</p>
</div>
`;
} else {
// Modo de visualização: usar iframe
const iframe = document.createElement('iframe');
iframe.src = previewUrl;
iframe.width = '100%';
iframe.height = '800';
iframe.allow = 'fullscreen';
iframe.title = `Dicionário de Dados ${version}`;
container.innerHTML = '';
container.appendChild(iframe);
}
})();
</script>
</body>
</html>
|
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas