Files
UNITRONIX d39110b2ae Add tests, i18n updates, chat & remote fixes
Add unit tests and test helpers (5 suites, 41 tests) and test npm scripts; introduce deviceStatusPush service and WS real-time device status push integration. Fix chatRelay to acknowledge connections (send `welcome`), and apply multiple web remote/rdclient fixes (video ack/timing, keyframe refresh, SourceBuffer trimming, input focus handling) to improve FPS and control. Add new server route file (system.routes.js), new device-status service, update server.js and package.json, and modify various frontend CSS/JS/views. Update English and Polish locale files with many new widget/i18n keys and remove the Russian locale file (ru.json). Also include assorted UI/desktop-widget dashboard tweaks and documentation status updates in .github/copilot-instructions.md.
2026-03-27 00:34:12 +01:00

62 lines
2.9 KiB
HTML

<%- include('layouts/main', {
title: _('nav.organizations') || 'Organizations',
pageStyles: ['organizations'],
pageScripts: ['organizations'],
currentPage: 'organizations',
breadcrumb: [{ label: _('nav.organizations') || 'Organizations' }],
body: `
<div class="org-page">
<!-- Header -->
<div class="org-header">
<div class="org-title">
<h1>${_('organizations.title') || 'Organizations'}</h1>
<span class="org-count" id="org-count">0</span>
</div>
<div class="org-actions">
<button class="btn btn-primary btn-sm" id="create-org-btn">
<span class="material-icons">add</span>
<span class="btn-label">${_('organizations.create') || 'Create Organization'}</span>
</button>
</div>
</div>
<!-- Organization list -->
<div class="org-list" id="org-list">
<div class="loading-spinner" id="org-loading">
<div class="spinner"></div>
<p>${_('common.loading') || 'Loading...'}</p>
</div>
</div>
<!-- Create/Edit modal -->
<div class="modal-overlay" id="org-modal" style="display:none;">
<div class="modal">
<div class="modal-header">
<h3 id="org-modal-title">${_('organizations.create') || 'Create Organization'}</h3>
<button class="modal-close" id="org-modal-close">&times;</button>
</div>
<div class="modal-body">
<input type="hidden" id="org-edit-id" />
<div class="form-group">
<label>${_('organizations.name') || 'Name'}</label>
<input type="text" id="org-name" class="form-input" placeholder="ACME Corp" />
</div>
<div class="form-group">
<label>${_('organizations.slug') || 'Slug (URL-safe)'}</label>
<input type="text" id="org-slug" class="form-input" placeholder="acme-corp" />
</div>
<div class="form-group">
<label>${_('organizations.logo_url') || 'Logo URL'}</label>
<input type="text" id="org-logo-url" class="form-input" placeholder="https://..." />
</div>
</div>
<div class="modal-footer">
<button class="btn btn-secondary" id="org-modal-cancel">${_('common.cancel') || 'Cancel'}</button>
<button class="btn btn-primary" id="org-modal-save">${_('common.save') || 'Save'}</button>
</div>
</div>
</div>
</div>
`
}) %>