diff --git a/src/lib/components/Share.svelte b/src/lib/components/Share.svelte index 8712427..e78d259 100644 --- a/src/lib/components/Share.svelte +++ b/src/lib/components/Share.svelte @@ -7,6 +7,7 @@ sourceFilter, sourceCategoryFilter, methodFilter, + campaignFilter, timeRangeFilter } from '../../stores/filters'; import { searchParamsFromFilters } from '../utils/share'; @@ -35,7 +36,7 @@ $sourceFilter, $sourceCategoryFilter, $methodFilter - )*/ + ) $: params = searchParamsFromFilters( $textSearchFilter, $attributionScoreFilter, @@ -44,7 +45,7 @@ $sourceFilter, $sourceCategoryFilter, $methodFilter - ); + );*/ function handleClick() { let params = searchParamsFromFilters( @@ -54,10 +55,11 @@ $platformFilter, $sourceFilter, $sourceCategoryFilter, - $methodFilter + $methodFilter, + $campaignFilter ); $page.url.searchParams.set('filters', params); - goto(`?${$page.url.searchParams.toString()}`); + //goto(`?${$page.url.searchParams.toString()}`); copyToClipBoard() }; diff --git a/src/lib/utils/share.js b/src/lib/utils/share.js index 8ec4333..8f13ced 100644 --- a/src/lib/utils/share.js +++ b/src/lib/utils/share.js @@ -1,29 +1,25 @@ -//import { base } from '$app/paths'; - -//export const baseUrl = 'https://interference2024.org'; -export const baseUrl = 'http://localhost:5137'; - export const searchParamsFromFilters = (textSearch, attributionScores, actorNations, platforms, sources, sourceCategories, - methods + methods, + campaigns ) => { const params = { ts: encodeURIComponent(textSearch), as: [attributionScores[0], attributionScores[1]].join(';'), - f: filtersToHex([actorNations, platforms, methods, sources, sourceCategories]), + f: filtersToHex([actorNations, platforms, methods, sources, sourceCategories, campaigns]), //id: caseId, }; - //return `${baseUrl}/?filters=${params.f}&${params.id}&${params.ts}&${params.as}}`; - //return `${base}?filters=${params.f}&${params.ts}&${params.as}`; return `${params.f}&${params.ts}&${params.as}`; }; export const filtersToHex = (arr) => { + console.log(arr.map((d) => d.map((d) => +d.selected).join(''))) + console.log(arr.map((d) => binaryToHex(d.map((d) => +d.selected).join(''))).join('&')) const hex = arr.map((d) => binaryToHex(d.map((d) => +d.selected).join(''))).join('&'); return hex; }; @@ -33,7 +29,7 @@ export const filtersToBin = (arr) => { return bin; }; -export const binaryToHex = (binary) => parseInt(binary , 2).toString(16).toLowerCase(); +export const binaryToHex = (binary) => parseInt(binary, 2).toString(16).toLowerCase(); export const hexToBinary = (hex) => parseInt(hex, 16).toString(2); @@ -41,7 +37,7 @@ export const binaryToBool = (binary) => binary.split('').map((d) => d === '0' ? export const parseUrl = (hash) => { const s = hash.substring(1); - const [ actorNations, platforms, methods, sources, sourceCategories, textSearch, attributionScores] = s.split('&'); + const [ actorNations, platforms, methods, sources, sourceCategories, campaigns, textSearch, attributionScores] = s.split('&'); return { actorNations: binaryToBool(hexToBinary(actorNations)), @@ -49,6 +45,7 @@ export const parseUrl = (hash) => { methods: binaryToBool(hexToBinary(methods)), sources: binaryToBool(hexToBinary(sources)), sourceCategories: binaryToBool(hexToBinary(sourceCategories)), + campaigns: binaryToBool(hexToBinary(campaigns)), textSearch: decodeURIComponent(textSearch), attributionScores: attributionScores.split(';').map((d) => +d) }; diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 2df70f2..90e12f8 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -117,6 +117,7 @@ methodFilter.applyBoolArray(urlFilters.methods); sourceFilter.applyBoolArray(urlFilters.sources); sourceCategoryFilter.applyBoolArray(urlFilters.sourceCategories); + campaignFilter.applyBoolArray(urlFilters.campaigns); $attributionScoreFilter = urlFilters.attributionScores; $textSearchFilter = urlFilters.textSearch; } diff --git a/src/stores/filters.js b/src/stores/filters.js index 300d3c3..6eb7735 100644 --- a/src/stores/filters.js +++ b/src/stores/filters.js @@ -36,6 +36,7 @@ function createInclusiveFilter() { const applyBoolArray = (arr) => { const tmpArr = [...arr].reverse(); + console.log(tmpArr) update((f) => f.reverse().map((d, i) => ({...d, selected: tmpArr[i] !== undefined ? tmpArr[i] : false})).reverse()); };