XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

EARSystem

【ASP】耳间,网页端的情绪智能推荐系统

公开
关注 0 Fork 0 Star 0
UTF-8
(() => {
    const form=document.getElementById('preferences-form'), blocked=document.getElementById('blocked-places');
    let placeIds=[];
    function render(){blocked.innerHTML=placeIds.length?placeIds.map(id=>'<button type="button" class="blocked-chip" data-unblock="'+id+'">地点 '+id.slice(0,8)+' ×</button>').join(''):'<span class="muted small">没有屏蔽地点</span>';}
    blocked.addEventListener('click',e=>{const b=e.target.closest('[data-unblock]');if(b){placeIds=placeIds.filter(x=>x!==b.dataset.unblock);render();}});
    EAR.api('/api/preferences').then(p=>{
        form.elements.budget.value=p.budget??'';form.elements.radiusMeters.value=p.radiusMeters;
        form.querySelectorAll('[name="favoriteCategories"]').forEach(x=>{x.checked=p.favoriteCategories.includes(x.value);});
        form.querySelectorAll('[name="blockedCategories"]').forEach(x=>{x.checked=p.blockedCategories.includes(x.value);});
        placeIds=p.blockedPlaces;render();
    }).catch(error=>EAR.status(form,error.message,true));
    form.addEventListener('submit',async e=>{
        e.preventDefault();EAR.busy(form,true);
        const p={budget:form.elements.budget.value?Number(form.elements.budget.value):null,radiusMeters:Number(form.elements.radiusMeters.value),blockedPlaces:placeIds,
            favoriteCategories:[...form.querySelectorAll('[name="favoriteCategories"]:checked')].map(x=>x.value),
            blockedCategories:[...form.querySelectorAll('[name="blockedCategories"]:checked')].map(x=>x.value)};
        try{await EAR.api('/api/preferences','PUT',p);EAR.status(form,'偏好已保存。');EAR.toast('偏好已保存');}
        catch(error){EAR.status(form,error.message,true);}finally{EAR.busy(form,false);}
    });
})();