1import{a as w}from"./chunk-7FKBXJZZ.js";import{Bc as D,Fb as S,Na as n,Ub as u,Vb as g,Xa as v,kb as f,mb as y,ob as x,od as z,pb as T,qb as I,rb as C,sb as o,tb as a,ub as b,yc as E}from"./chunk-2MWYDMNW.js";function P(s,m){if(s&1&&(o(0,"tr")(1,"td"),u(2),a(),o(3,"td"),u(4),a()()),s&2){let e=m.$implicit;n(2),g(e.word),n(2),g(e.percentage)}}function O(s,m){s&1&&(o(0,"tr")(1,"td",9),u(2,"No hay datos disponibles"),a()())}function k(s,m){if(s&1&&(o(0,"div",1)(1,"h5",3),u(2),a(),o(3,"div",4)(4,"div",5)(5,"table",6)(6,"thead")(7,"tr")(8,"th"),u(9,"Palabra"),a(),o(10,"th"),u(11,"Porcentaje (%)"),a()()(),o(12,"tbody"),T(13,P,5,2,"tr",null,x),E(15,"slice"),f(16,O,3,0,"tr"),a()()(),o(17,"div",7),b(18,"angular-tag-cloud",8),a()()()),s&2){let e=m.$implicit,t=S();n(2),g(e.title),n(11),I(D(15,6,e.summaryData,0,10)),n(3),y(e.summaryData.length===0?16:-1),n(2),C("data",e.cloudData)("config",t.cloudOptions)("zoomOnHover",t.zoomOnHoverOptions)("font","italic bold 10px Arial, sans-serif")}}function U(s,m){s&1&&(o(0,"div",2),u(1," No hay datos de expectativas para mostrar. "),a())}var F=(()=>{class s{constructor(){this.expectativasUserCourse=[],this.summarySections=[],this.cloudOptions={width:.98,height:500,overflow:!1,realignOnResize:!0,step:.8},this.zoomOnHoverOptions={scale:1.2,transitionTime:.3,delay:0},this.colorPalette=["#0f9d58","#f4b400","#db4437"],this.stopWords=["a","al","algo","algunas","algunos","ante","antes","como","con","contra","cual","cuando","de","del","desde","donde","durante","e","el","ella","ellas","ellos","en","entre","era","erais","eramos","eran","eras","eres","es","esa","esas","ese","eses","eso","esos","esta","estaba","estabais","estabamos","estaban","estabas","estad","estada","estadas","estado","estados","estamos","estando","estar","estaremos","estara","estaran","estaras","estare","estareis","estaria","estariais","estariamos","estarian","estarias","estas","este","estemos","esto","estos","estoy","estuve","estuviera","estuvierais","estuvieramos","estuvieran","estuvieras","estuvieron","estuviese","estuvieseis","estuviesemos","estuviesen","estuvieses","estuvimos","estuviste","estuvisteis","estuvo","etc","fin","fue","fuera","fuerais","fueramos","fueran","fueras","fueron","fuese","fueseis","fuesemos","fuesen","fueses","fui","fuimos","fuiste","fuisteis","ha","habia","habiais","habiamos","habian","habias","habida","habidas","habido","habidos","habiendo","habremos","habra","habran","habras","habre","habreis","habria","habriais","habriamos","habrian","habrias","han","has","hasta","hay","haya","hayamos","hayan","hayas","he","hemos","hube","hubiera","hubierais","hubieramos","hubieran","hubieras","hubieron","hubiese","hubieseis","hubiesemos","hubiesen","hubieses","hubimos","hubiste","hubisteis","hubo","la","las","le","les","lo","los","mas","me","mi","mis","mucho","muchos","muy","nada","ni","no","nos","nosotras","nosotros","nuestra","nuestras","nuestro","nuestros","o","os","otra","otras","otro","otros","para","pero","poco","por","porque","que","quien","quienes","se","sea","seamos","sean","seas","sentid","sentida","sentidas","sentido","sentidos","ser","seremos","sera","seran","seras","sere","sereis","seria","seriais","seriamos","serian","serias","si","sin","sino","sois","somos","son","soy","su","sus","suya","suyas","suyo","suyos","tal","tambien","tanta","tantas","tanto","tantos","te","tendremos","tendra","tendran","tendras","tendre","tendreis","tendria","tendriais","tendriamos","tendrian","tendrias","tened","tenemos","tenga","tengamos","tengan","tengas","tengo","tenia","teniais","teniamos","tenian","tenias","tenida","tenidas","tenido","tenidos","teniendo","ti","tiene","tienen","tienes","todo","todos","tu","tus","tuve","tuviera","tuvierais","tuvieramos","tuvieran","tuvieras","tuvieron","tuviese","tuvieseis","tuviesemos","tuviesen","tuvieses","tuvimos","tuviste","tuvisteis","tuvo","un","una","uno","unos","vosotras","vosotros","vuestra","vuestras","vuestro","vuestros","y","ya","yo",,"bien","mas","muy","poco","siempre","tambien","tanto","todo","todos","otro","otra","algun","alguna","algunas","algunos","ningun","ninguna","ningunas","ningunos","cualquiera","cualesquiera","quienquiera","quienesquiera","quienquiera","quienesquiera","cualquiera","podria","cada","creo"],this.contextualStopWords=["aprender","curso","cursos","desarrollo","ser","capaz","poder","crear","lograr","sobre","finalizar","objetivos","aspectos","interes","interesa","quiero","profundizar","enfocarme","mejorar","manejo","uso"]}ngOnInit(){this.expectativasUserCourse.length===0&&(this.expectativasUserCourse=this.getFakeData()),this.processSummaries()}getFakeData(){return[{expectativasUserCourseId:"1",interesEnCurso:"Me interesa aprender sobre programaci\xF3n web y desarrollo frontend con Angular y React.",aspectosTecnicos:"Enfoque en HTML, CSS, JavaScript, y frameworks como Bootstrap y Tailwind.",objetivosFinalizarCurso:"Ser capaz de crear aplicaciones web responsivas y din\xE1micas desde cero.",medioConocioCurso:"Facebook",courseId:"101"},{expectativasUserCourseId:"2",interesEnCurso:"Quiero profundizar en backend con Node.js y bases de datos SQL y NoSQL.",aspectosTecnicos:"Manejo de APIs RESTful, autenticaci\xF3n con JWT, y despliegue en cloud como AWS.",objetivosFinalizarCurso:"Desarrollar un servidor completo y conectar con frontend para full-stack apps.",medioConocioCurso:"Instagram",courseId:"102"},{expectativasUserCourseId:"3",interesEnCurso:"Inter\xE9s en machine learning y data science usando Python y TensorFlow.",aspectosTecnicos:"Algoritmos de clasificaci\xF3n, regresi\xF3n, clustering, y manejo de datasets grandes.",objetivosFinalizarCurso:"Aplicar ML en proyectos reales como predicci\xF3n de precios o reconocimiento de im\xE1genes.",medioConocioCurso:"Linkedin",courseId:"103"},{expectativasUserCourseId:"4",interesEnCurso:"Aprender dise\xF1o UX/UI y herramientas como Figma y Adobe XD.",aspectosTecnicos:"Principios de usabilidad, wireframing, prototyping, y testing con usuarios.",objetivosFinalizarCurso:"Dise\xF1ar interfaces intuitivas y mejorar la experiencia del usuario en apps.",medioConocioCurso:"Web",courseId:"104"},{expectativasUserCourseId:"5",interesEnCurso:"Explorar DevOps con Docker, Kubernetes y CI/CD pipelines.",aspectosTecnicos:"Automatizaci\xF3n de despliegues, monitoreo con Prometheus y logging con ELK stack.",objetivosFinalizarCurso:"Implementar infraestructuras escalables y automatizadas en entornos cloud.",medioConocioCurso:"Recomendado",courseId:"105"},{expectativasUserCourseId:"6",interesEnCurso:"Inter\xE9s en ciberseguridad, ethical hacking y protecci\xF3n de datos.",aspectosTecnicos:"An\xE1lisis de vulnerabilidades, firewalls, encriptaci\xF3n y compliance con GDPR.",objetivosFinalizarCurso:"Identificar y mitigar riesgos de seguridad en sistemas y redes.",medioConocioCurso:"Otro",courseId:"106"},{expectativasUserCourseId:"7",interesEnCurso:"Desarrollo m\xF3vil con Flutter para iOS y Android.",aspectosTecnicos:"Widgets, state management con Provider, y integraci\xF3n con APIs.",objetivosFinalizarCurso:"Crear apps cross-platform eficientes y con buen rendimiento.",medioConocioCurso:"Facebook",courseId:"107"},{expectativasUserCourseId:"8",interesEnCurso:"Big data con Hadoop, Spark y an\xE1lisis en tiempo real.",aspectosTecnicos:"Procesamiento distribuido, ETL pipelines y visualizaci\xF3n con Tableau.",objetivosFinalizarCurso:"Manejar grandes vol\xFAmenes de data y extraer insights valiosos.",medioConocioCurso:"Linkedin",courseId:"108"},{expectativasUserCourseId:"9",interesEnCurso:"Programaci\xF3n funcional con Haskell y Scala.",aspectosTecnicos:"Inmutabilidad, higher-order functions y monads.",objetivosFinalizarCurso:"Escribir c\xF3digo m\xE1s seguro y mantenible en paradigmas funcionales.",medioConocioCurso:"Web",courseId:"109"},{expectativasUserCourseId:"10",interesEnCurso:"Internet of Things (IoT) con Raspberry Pi y Arduino.",aspectosTecnicos:"Sensores, protocolos como MQTT y integraci\xF3n con cloud services.",objetivosFinalizarCurso:"Construir dispositivos inteligentes y sistemas conectados.",medioConocioCurso:"Recomendado",courseId:"110"}]}processSummaries(){let e=[{title:"Resumen de Inter\xE9s en Curso",key:"interesEnCurso"},{title:"Resumen de Aspectos T\xE9cnicos",key:"aspectosTecnicos"},{title:"Resumen de Objetivos",key:"objetivosFinalizarCurso"}];this.summarySections=e.map(t=>{let r=this.expectativasUserCourse.map(d=>d[t.key]||""),p=this.getWordSummary(r),h=this.mapSummaryToCloudData(p);return{title:t.title,summaryData:p,cloudData:h}})}getWordSummary(e){let t=new Set([...this.stopWords,...this.contextualStopWords]);if(!e||e.length===0)return[];let d=e.join(" ").toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-z0-9]/g," ").split(/\s+/).filter(i=>i.length>2&&!t.has(i));if(d.length===0)return[];let c={};d.forEach(i=>
1{c[i]=(c[i]||0)+1});let j=Object.values(c).reduce((i,l)=>i+l,0);return Object.entries(c).map(([i,l])=>({word:i,weight:l,percentage:(l/j*100).toFixed(2)+"%"})).sort((i,l)=>l.weight-i.weight).slice(0,30)}mapSummaryToCloudData(e){if(e.length===0)return[];let t=e.length,r=Math.ceil(t*.3),p=Math.ceil(t*.4);return e.map((h,d)=>{let c;return d<r?c=this.colorPalette[0]:d<r+p?c=this.colorPalette[1]:c=this.colorPalette[2],{text:h.word,weight:h.weight,rotate:this.getCloudRotation(),color:c}})}getCloudRotation(){return Math.random()>.3?0:90}static{this.\u0275fac=function(t){return new(t||s)}}static{this.\u0275cmp=v({type:s,selectors:[["app-expectativas-curso-crm"]],inputs:{expectativasUserCourse:"expectativasUserCourse"},standalone:!1,decls:4,vars:1,consts:[[1,"container","summary-container"],[1,"section","mb-4"],[1,"alert","alert-info"],[1,"subtitle-raw"],[1,"d-flex"],[1,"table-container","mr-4"],[1,"table","table-striped","table-hover"],[1,"cloud-container"],[3,"data","config","zoomOnHover","font"],["colspan","2"]],template:function(t,r){t&1&&(o(0,"div",0),T(1,k,19,10,"div",1,x),f(3,U,2,0,"div",2),a()),t&2&&(n(),I(r.summarySections),n(2),y(r.summarySections.length===0?3:-1))},dependencies:[w,z],styles:[".d-flex[_ngcontent-%COMP%]{display:flex;align-items:flex-start;width:100%}.d-flex[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%]{flex:0 0 300px;margin-right:1.5rem}.d-flex[_ngcontent-%COMP%] .cloud-container[_ngcontent-%COMP%]{flex:1;height:500px;border:1px solid #d1d5db;border-radius:8px;padding:10px;display:flex;justify-content:center;align-items:center;overflow:hidden;background-color:#f9fafb;box-shadow:0 2px 4px #0000000d}.subtitle-raw[_ngcontent-%COMP%]{padding:15px 20px;font-size:16px;font-weight:600;color:#1f2937;background-color:#e5e7eb;border-left:4px solid #3b82f6;border-radius:4px;margin-bottom:15px;text-transform:uppercase}"],changeDetection:1})}}return s})();var W=(()=>{class s{constructor(){this.expectativasUserCourse=[]}ngOnInit(){}static{this.\u0275fac=function(t){return new(t||s)}}static{this.\u0275cmp=v({type:s,selectors:[["app-dashboard-crm-gestion"]],standalone:!1,decls:2,vars:1,consts:[[1,"container-fluid","pt-2"],[3,"expectativasUserCourse"]],template:function(t,r){t&1&&(o(0,"div",0),b(1,"app-expectativas-curso-crm",1),a()),t&2&&(n(),C("expectativasUserCourse",r.expectativasUserCourse))},dependencies:[F],encapsulation:2,changeDetection:1})}}return s})();export{W as a};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.