ZDDC/archive/js/init.js
ZDDC c95f07966d feat(tools,build): in-flight HTML-tool reworks and build-infra updates
Bundles a stretch of in-progress work across the SPA tools so the
tree returns to a coherent shippable state ahead of cutting a new
zddc-server stable image:

- landing: substantial rework of the project picker (sortable/filterable
  table, presets refactor, ?projects= filter, ?v= channel propagation,
  loading/error states)
- archive: presets cleanup, source.js refactor, filtering/url-state
  alignment with the landing page
- mdedit: file-system module split, resizer, file-tree improvements,
  base/toc styling tweaks
- transmittal/classifier: small template touch-ups for shared chrome
- shared: build-lib.sh helpers, new favicon.svg
- bootstrap, build.sh: pick up the channel-aware install/track zip
  generation
- tests: new landing.spec.js, expanded archive/mdedit/build-label specs
- docs: CLAUDE.md picks up the zddc-server section and freshens the
  alpha-build exception note
- regenerated artifacts: install.zip, track-{alpha,beta,stable}.zip,
  *_alpha.html — these are produced by `sh build.sh` and per project
  convention are committed alongside the source changes

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 12:52:27 -05:00

45 lines
1.6 KiB
JavaScript

/**
* ZDDC Archive - Initialization
* Sets up window.app and window.app.modules before other modules run.
* Must be the first JS file in the build.
*/
(function() {
'use strict';
window.app = {
sourceMode: null,
directories: [],
groupingFolders: [],
transmittalFolders: [],
files: [],
filteredFiles: [],
selectedFiles: new Set(),
isScanning: false,
scanProgress: '',
columnFilters: { trackingNumber: '', title: '', revisions: '' },
columnFilterASTs: { trackingNumber: null, title: null, revisions: null },
groupingFilter: '',
transmittalFilter: '',
enabledFolderTypes: new Set(['issued', 'received']),
sortField: 'trackingNumber',
sortDirection: 'asc',
selectedGroupingFolders: new Set(),
selectedTransmittalFolders: new Set(),
collapsedDateGroups: new Set(),
collapsedGroupingFolders: new Set(),
selectAllGroupingFolders: true,
selectAllTransmittals: true,
availableModifiers: new Set(),
selectedModifiers: new Set(),
showSelectedOnly: false,
projectFilter: new Set(), // URL-derived; controls what gets SCANNED
visibleProjects: new Set(), // dropdown-derived; controls VISIBILITY of already-scanned data
availableProjects: [], // populated by autoConnectHttpSource from server's ProjectInfo[]
isMultiProject: false, // true when ?projects= is set OR server returns ProjectInfo
FOLDER_TYPE_NAMES: ['issued', 'received', 'mdl', 'incoming'],
ARCHIVE_STAGE_NAME: 'archive',
modules: {}
};
})();