{"version":3,"file":"useAdvancedParamInit-cIePytMB.mjs","names":[],"sources":["../src/components/composable/route/useAdvancedParamInit.ts"],"sourcesContent":["import { RubriquageFilter } from \"@/stores/class/rubrique/rubriquageFilter\";\nimport { useOrgaComputed } from \"../useOrgaComputed\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useSimplePageParam } from './useSimplePageParam';\nimport { useRubriquesFilterParam } from './useRubriquesFilterParam';\nimport { computed, nextTick, onMounted, Ref, ref, watch } from \"vue\";\nimport dayjs from \"dayjs\";\n\nimport { RouteProps } from \"./types\";\nimport { EmissionGroup, groupsApi } from \"../../../api/groupsApi\";\nimport { useRights } from \"../useRights\";\n\nexport const useAdvancedParamInit = (props: RouteProps, isEmission: boolean) => {\n\n  const { searchPattern,organisationId, searchMinSize, paginateFirst, initSearchPattern, initOrga} = useSimplePageParam(props, false, true);\n  const { isEditRights, isPodcastmaker } = useOrgaComputed();\n  const { stringifyRubriquesFilter } = useRubriquesFilterParam();\n\n  const filterStore  = useFilterStore();\n  const authStore  = useAuthStore();\n  const { canValidatePodcast } = useRights();\n\n  const isInit = ref(false);\n  const monetisable = ref(\"UNDEFINED\");// UNDEFINED, YES, NO\n  const fromDate: Ref<string|undefined> = ref(undefined);\n  const toDate: Ref<string|undefined> = ref(undefined);\n  const includeHidden = ref(false);\n  const sort = ref(\"DATE\"); // SCORE, DATE, POPULARITY, NAME, LAST_PODCAST_DESC\n  const validity = ref(\"true\"); \n  const iabId: Ref<number|undefined> = ref(undefined);\n  const rubriqueFilter: Ref<Array<RubriquageFilter>> = ref([]);\n  const beneficiaries = ref<string[]|null>(null);\n  const emissionGroups = ref<EmissionGroup[]|null>(null);\n\n  const organisationRight = computed(() => isEditRights(organisationId.value));\n  const organisation = computed(() => organisationId.value ?? filterStore.filterOrgaId);\n  const rubriquesFilterArrayIds = computed(() => {\n    const allRubriquageId: Array<number> = [];\n    const noRubriquageId: Array<number> = [];\n    const rubriqueId: Array<number> = [];\n    for(const filter of rubriqueFilter.value){\n      if (-1 === filter.rubriqueId) {\n        noRubriquageId.push(filter.rubriquageId);\n      } else if (0 === filter.rubriqueId) {\n        allRubriquageId.push(filter.rubriquageId);\n      } else {\n        rubriqueId.push(filter.rubriqueId);\n      }\n    }\n    return {\n      rubriquageId: allRubriquageId,\n      rubriqueId: rubriqueId,\n      noRubriquageId: noRubriquageId\n    }\n  });\n\n  watch(() => props.routeQuery, initSearchPattern);\n  watch(() => props.routeMonetisable, initMonetisable);\n  watch(() => props.routeSort, initSort);\n  watch(() => props.routeIncludeHidden, initIncludeHidden);\n  watch(() => props.routeValidity, initValidity);\n  watch(() => props.routeFrom, initFromDate);\n  watch(() => props.routeTo, initToDate);\n  watch(() => props.routeIab, () => {iabId.value = props.routeIab;});\n  watch(() => props.routeOrga, initOrga);\n  watch(() => props.routeRubriques, initRubriquageFilter);\n  watch(() => props.routeBeneficiaries, initBeneficiariesFilter);\n  watch(() => props.routeEmissionGroups, initEmissionGroups);\n  watch(organisationId, () => {\n    if (!isInit.value) {\n      return;\n    }\n    rubriqueFilter.value = [];\n  });\n\n  onMounted(() => {\n    initAdvancedParams();\n  })\n\n  function initAdvancedParams(){\n    iabId.value = filterStore.filterIab?.id ?? props.routeIab;\n    initRubriquageFilter();\n    initIncludeHidden();\n    initValidity();\n    initMonetisable();\n    initSort();\n    initFromDate();\n    initToDate();\n    initBeneficiariesFilter();\n    initEmissionGroups();\n    nextTick(() => {\n      isInit.value = true;\n    });\n  }\n\n  function initFromDate(){\n    if(dayjs(props.routeFrom).isValid()){\n      fromDate.value = props.routeFrom;\n    }\n  }\n\n  function initToDate(){\n    if(dayjs(props.routeTo).isValid()){\n      toDate.value = props.routeTo;\n    }\n  }\n\n  function initMonetisable(){\n    if([\"YES\", \"NO\"].includes(props.routeMonetisable)){\n      monetisable.value = props.routeMonetisable;\n    }else{\n      monetisable.value = \"UNDEFINED\";\n    }\n  }\n\n  function initSort(){\n    if([\"SCORE\", \"POPULARITY\", \"NAME\", \"DATE_ASC\"].includes(props.routeSort)){\n      sort.value = props.routeSort;\n    }else{\n      sort.value = isEmission ? \"LAST_PODCAST_DESC\" : \"DATE\";\n    }\n  }\n\n  function initIncludeHidden(){\n    includeHidden.value = undefined !== organisation.value && organisationRight.value && \"false\"!==props.routeIncludeHidden;\n  }\n\n  function initValidity() {\n    const cantDisplay = isPodcastmaker.value || isEmission || !includeHidden.value || !canValidatePodcast();\n    if(cantDisplay){\n      validity.value = \"true\";\n    }else{\n      validity.value = props.routeValidity;\n    }\n  }\n\n  function initRubriquageFilter(){\n    if(props.routeRubriques === stringifyRubriquesFilter(rubriqueFilter.value)){\n      return\n    }\n    const rubriqueFilterToUpdate = [];\n    if(props.routeRubriques?.trim().length){\n      const arrayFilter = props.routeRubriques.split(\",\");\n      for(const filter of arrayFilter){\n        const rubriqueFilter = filter.split(\":\");\n        rubriqueFilterToUpdate.push({\n          rubriquageId:  parseInt(rubriqueFilter[0]),\n          rubriqueId:  parseInt(rubriqueFilter[1]),\n          nameRubriquage: \"\",\n          nameRubrique: \"\",\n        })\n      }\n    }\n    rubriqueFilter.value = rubriqueFilterToUpdate;\n  }\n\n  function initBeneficiariesFilter() {\n    const data = props.routeBeneficiaries;\n    // No beneficiaries\n    if (\n      data === undefined ||\n      data === null ||\n      data.length === 0\n    ) {\n      beneficiaries.value = null;\n      return;\n    }\n\n    // No changes\n    if(beneficiaries.value && data === beneficiaries.value){\n      return;\n    }\n\n    beneficiaries.value = data;\n  }\n\n  async function initEmissionGroups(): Promise<void> {\n    const data = props.routeEmissionGroups;\n    // No groups\n    if (\n      data === undefined ||\n      data === null ||\n      data.length === 0\n    ) {\n      emissionGroups.value = null;\n      return;\n    }\n\n    // No changes\n    if(emissionGroups.value && data === emissionGroups.value.map(g => g.groupId)){\n      return;\n    }\n\n    const groups = await groupsApi.getAllById(data);\n\n    emissionGroups.value = Object.values(groups);\n  }\n\n  return {\n    organisationId,\n    searchPattern,\n    monetisable,\n    iabId,\n    sort,\n    includeHidden,\n    fromDate,\n    toDate,\n    rubriqueFilter,\n    searchMinSize,\n    paginateFirst,\n    validity,\n    rubriquesFilterArrayIds,\n    isInit,\n    beneficiaries,\n    emissionGroups\n  };\n}\n"],"mappings":";;;;;;;;AAaA,IAAa,wBAAwB,OAAmB,eAAwB;CAE9E,MAAM,EAAE,eAAc,gBAAgB,eAAe,eAAe,mBAAmB,aAAY,mBAAmB,OAAO,OAAO,IAAI;CACxI,MAAM,EAAE,cAAc,mBAAmB,gBAAgB;CACzD,MAAM,EAAE,6BAA6B,wBAAwB;CAE7D,MAAM,cAAe,eAAe;CACjB,aAAa;CAChC,MAAM,EAAE,uBAAuB,UAAU;CAEzC,MAAM,SAAS,IAAI,KAAK;CACxB,MAAM,cAAc,IAAI,WAAW;CACnC,MAAM,WAAkC,IAAI,KAAA,CAAS;CACrD,MAAM,SAAgC,IAAI,KAAA,CAAS;CACnD,MAAM,gBAAgB,IAAI,KAAK;CAC/B,MAAM,OAAO,IAAI,MAAM;CACvB,MAAM,WAAW,IAAI,MAAM;CAC3B,MAAM,QAA+B,IAAI,KAAA,CAAS;CAClD,MAAM,iBAA+C,IAAI,CAAC,CAAC;CAC3D,MAAM,gBAAgB,IAAmB,IAAI;CAC7C,MAAM,iBAAiB,IAA0B,IAAI;CAErD,MAAM,oBAAoB,eAAe,aAAa,eAAe,KAAK,CAAC;CAC3E,MAAM,eAAe,eAAe,eAAe,SAAS,YAAY,YAAY;CACpF,MAAM,0BAA0B,eAAe;EAC7C,MAAM,kBAAiC,CAAC;EACxC,MAAM,iBAAgC,CAAC;EACvC,MAAM,aAA4B,CAAC;EACnC,KAAI,MAAM,UAAU,eAAe,OACjC,IAAI,OAAO,OAAO,YAChB,eAAe,KAAK,OAAO,YAAY;OAClC,IAAI,MAAM,OAAO,YACtB,gBAAgB,KAAK,OAAO,YAAY;OAExC,WAAW,KAAK,OAAO,UAAU;EAGrC,OAAO;GACL,cAAc;GACF;GACI;EAClB;CACF,CAAC;CAED,YAAY,MAAM,YAAY,iBAAiB;CAC/C,YAAY,MAAM,kBAAkB,eAAe;CACnD,YAAY,MAAM,WAAW,QAAQ;CACrC,YAAY,MAAM,oBAAoB,iBAAiB;CACvD,YAAY,MAAM,eAAe,YAAY;CAC7C,YAAY,MAAM,WAAW,YAAY;CACzC,YAAY,MAAM,SAAS,UAAU;CACrC,YAAY,MAAM,gBAAgB;EAAC,MAAM,QAAQ,MAAM;CAAS,CAAC;CACjE,YAAY,MAAM,WAAW,QAAQ;CACrC,YAAY,MAAM,gBAAgB,oBAAoB;CACtD,YAAY,MAAM,oBAAoB,uBAAuB;CAC7D,YAAY,MAAM,qBAAqB,kBAAkB;CACzD,MAAM,sBAAsB;EAC1B,IAAI,CAAC,OAAO,OACV;EAEF,eAAe,QAAQ,CAAC;CAC1B,CAAC;CAED,gBAAgB;EACd,mBAAmB;CACrB,CAAC;CAED,SAAS,qBAAoB;EAC3B,MAAM,QAAQ,YAAY,WAAW,MAAM,MAAM;EACjD,qBAAqB;EACrB,kBAAkB;EAClB,aAAa;EACb,gBAAgB;EAChB,SAAS;EACT,aAAa;EACb,WAAW;EACX,wBAAwB;EACxB,mBAAmB;EACnB,eAAe;GACb,OAAO,QAAQ;EACjB,CAAC;CACH;CAEA,SAAS,eAAc;EACrB,IAAG,MAAM,MAAM,SAAS,EAAE,QAAQ,GAChC,SAAS,QAAQ,MAAM;CAE3B;CAEA,SAAS,aAAY;EACnB,IAAG,MAAM,MAAM,OAAO,EAAE,QAAQ,GAC9B,OAAO,QAAQ,MAAM;CAEzB;CAEA,SAAS,kBAAiB;EACxB,IAAG,CAAC,OAAO,IAAI,EAAE,SAAS,MAAM,gBAAgB,GAC9C,YAAY,QAAQ,MAAM;OAE1B,YAAY,QAAQ;CAExB;CAEA,SAAS,WAAU;EACjB,IAAG;GAAC;GAAS;GAAc;GAAQ;EAAU,EAAE,SAAS,MAAM,SAAS,GACrE,KAAK,QAAQ,MAAM;OAEnB,KAAK,QAAQ,aAAa,sBAAsB;CAEpD;CAEA,SAAS,oBAAmB;EAC1B,cAAc,QAAQ,KAAA,MAAc,aAAa,SAAS,kBAAkB,SAAS,YAAU,MAAM;CACvG;CAEA,SAAS,eAAe;EAEtB,IADoB,eAAe,SAAS,cAAc,CAAC,cAAc,SAAS,CAAC,mBAAmB,GAEpG,SAAS,QAAQ;OAEjB,SAAS,QAAQ,MAAM;CAE3B;CAEA,SAAS,uBAAsB;EAC7B,IAAG,MAAM,mBAAmB,yBAAyB,eAAe,KAAK,GACvE;EAEF,MAAM,yBAAyB,CAAC;EAChC,IAAG,MAAM,gBAAgB,KAAK,EAAE,QAAO;GACrC,MAAM,cAAc,MAAM,eAAe,MAAM,GAAG;GAClD,KAAI,MAAM,UAAU,aAAY;IAC9B,MAAM,iBAAiB,OAAO,MAAM,GAAG;IACvC,uBAAuB,KAAK;KAC1B,cAAe,SAAS,eAAe,EAAE;KACzC,YAAa,SAAS,eAAe,EAAE;KACvC,gBAAgB;KAChB,cAAc;IAChB,CAAC;GACH;EACF;EACA,eAAe,QAAQ;CACzB;CAEA,SAAS,0BAA0B;EACjC,MAAM,OAAO,MAAM;EAEnB,IACE,SAAS,KAAA,KACT,SAAS,QACT,KAAK,WAAW,GAChB;GACA,cAAc,QAAQ;GACtB;EACF;EAGA,IAAG,cAAc,SAAS,SAAS,cAAc,OAC/C;EAGF,cAAc,QAAQ;CACxB;CAEA,eAAe,qBAAoC;EACjD,MAAM,OAAO,MAAM;EAEnB,IACE,SAAS,KAAA,KACT,SAAS,QACT,KAAK,WAAW,GAChB;GACA,eAAe,QAAQ;GACvB;EACF;EAGA,IAAG,eAAe,SAAS,SAAS,eAAe,MAAM,KAAI,MAAK,EAAE,OAAO,GACzE;EAGF,MAAM,SAAS,MAAM,UAAU,WAAW,IAAI;EAE9C,eAAe,QAAQ,OAAO,OAAO,MAAM;CAC7C;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}