MCPcopy
hub / github.com/github/awesome-copilot / initWorkflowsPage

Function initWorkflowsPage

website/src/scripts/pages/workflows.ts:156–223  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

154}
155
156export async function initWorkflowsPage(): Promise<void> {
157 const list = document.getElementById('resource-list');
158 const clearFiltersBtn = document.getElementById('clear-filters');
159 const sortSelect = document.getElementById('sort-select') as HTMLSelectElement | null;
160
161 if (!modalReady) {
162 setupModal();
163 modalReady = true;
164 }
165
166 setupResourceListHandlers(list as HTMLElement | null);
167
168 const data = await fetchData<WorkflowsData>('workflows.json');
169 if (!data || !data.items) {
170 if (list) list.innerHTML = '<div class="empty-state"><h3>Failed to load data</h3></div>';
171 return;
172 }
173
174 allItems = data.items;
175 workflowByPath = new Map(allItems.map((item) => [item.path, item]));
176
177 triggerSelectEl = document.getElementById('filter-trigger') as HTMLSelectElement | null;
178 if (triggerSelectEl) {
179 triggerSelectEl.innerHTML = '';
180 data.filters.triggers.forEach((trigger) => {
181 const option = document.createElement('option');
182 option.value = trigger;
183 option.textContent = trigger;
184 triggerSelectEl?.appendChild(option);
185 });
186 }
187
188 const initialTriggers = getQueryParamValues('trigger').filter((trigger) => data.filters.triggers.includes(trigger));
189 const initialSort = getQueryParam('sort');
190
191 if (initialTriggers.length > 0) {
192 currentFilters.triggers = initialTriggers;
193 setSelectValues(triggerSelectEl, initialTriggers);
194 }
195 if (initialSort === 'lastUpdated') {
196 currentSort = initialSort;
197 if (sortSelect) sortSelect.value = initialSort;
198 }
199
200 triggerSelectEl?.addEventListener('change', () => {
201 currentFilters.triggers = getSelectValues(triggerSelectEl);
202 applyFiltersAndRender();
203 syncUrlState();
204 });
205
206 sortSelect?.addEventListener('change', () => {
207 currentSort = sortSelect.value as WorkflowSortOption;
208 applyFiltersAndRender();
209 syncUrlState();
210 });
211
212 clearFiltersBtn?.addEventListener('click', () => {
213 currentFilters = { triggers: [] };

Callers

nothing calls this directly

Calls 11

setupModalFunction · 0.90
getQueryParamValuesFunction · 0.90
getQueryParamFunction · 0.90
setSelectValuesFunction · 0.90
getSelectValuesFunction · 0.90
clearSelectValuesFunction · 0.90
setupActionHandlersFunction · 0.90
addEventListenerMethod · 0.80
applyFiltersAndRenderFunction · 0.70
syncUrlStateFunction · 0.70

Tested by

no test coverage detected