cib data filter
Этот коммит содержится в:
родитель
8153b70726
Коммит
510b30dde8
@ -1,5 +1,5 @@
|
|||||||
<script>
|
<script>
|
||||||
import { highlightPolarization } from '../stores/filters';
|
import { highlightPolarization, highlightCib } from '../stores/filters';
|
||||||
|
|
||||||
import Checkbox from './Checkbox.svelte';
|
import Checkbox from './Checkbox.svelte';
|
||||||
|
|
||||||
@ -8,6 +8,9 @@
|
|||||||
case 'polarization':
|
case 'polarization':
|
||||||
$highlightPolarization = !$highlightPolarization;
|
$highlightPolarization = !$highlightPolarization;
|
||||||
break;
|
break;
|
||||||
|
case 'cib':
|
||||||
|
$highlightCib = !$highlightCib;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@ -20,6 +23,13 @@
|
|||||||
<span>Polarization data filter</span>
|
<span>Polarization data filter</span>
|
||||||
</Checkbox>
|
</Checkbox>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<Checkbox id="checkboxpanel-checkbox-cib"
|
||||||
|
checked={$highlightCib}
|
||||||
|
on:click={() => handleClick('cib')}>
|
||||||
|
<span>CIB data filter</span>
|
||||||
|
</Checkbox>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
@ -12,7 +12,8 @@
|
|||||||
selectAllFilters,
|
selectAllFilters,
|
||||||
contextData,
|
contextData,
|
||||||
originalTimeDomain,
|
originalTimeDomain,
|
||||||
highlightPolarization } from '../stores/filters';
|
highlightPolarization,
|
||||||
|
highlightCib } from '../stores/filters';
|
||||||
import { timeScale, attributionScoreScale } from '../stores/scales';
|
import { timeScale, attributionScoreScale } from '../stores/scales';
|
||||||
|
|
||||||
import Dropdown from './Dropdown.svelte';
|
import Dropdown from './Dropdown.svelte';
|
||||||
@ -35,6 +36,7 @@
|
|||||||
selectAllFilters();
|
selectAllFilters();
|
||||||
contextData.unselectAll();
|
contextData.unselectAll();
|
||||||
$highlightPolarization = false;
|
$highlightPolarization = false;
|
||||||
|
$highlightCib = false;
|
||||||
if ($originalTimeDomain) {
|
if ($originalTimeDomain) {
|
||||||
$timeScale.domain($originalTimeDomain);
|
$timeScale.domain($originalTimeDomain);
|
||||||
$timeScale = $timeScale;
|
$timeScale = $timeScale;
|
||||||
|
|||||||
@ -11,7 +11,8 @@
|
|||||||
textSearchFilter,
|
textSearchFilter,
|
||||||
originalTimeDomain,
|
originalTimeDomain,
|
||||||
contextData,
|
contextData,
|
||||||
highlightPolarization } from '../stores/filters';
|
highlightPolarization,
|
||||||
|
highlightCib } from '../stores/filters';
|
||||||
import { urlFromFilters } from '../utils/share';
|
import { urlFromFilters } from '../utils/share';
|
||||||
|
|
||||||
import Icon from 'svelte-awesome';
|
import Icon from 'svelte-awesome';
|
||||||
@ -39,7 +40,8 @@
|
|||||||
$textSearchFilter,
|
$textSearchFilter,
|
||||||
$contextData,
|
$contextData,
|
||||||
caseId,
|
caseId,
|
||||||
$highlightPolarization);
|
$highlightPolarization,
|
||||||
|
$highlightCib);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="share">
|
<div class="share">
|
||||||
|
|||||||
@ -6,7 +6,11 @@
|
|||||||
import { sortConsistently } from '../utils/misc';
|
import { sortConsistently } from '../utils/misc';
|
||||||
import { hovered as eHovered, selected as eSelected } from '../stores/eventSelections';
|
import { hovered as eHovered, selected as eSelected } from '../stores/eventSelections';
|
||||||
import { hovered as cHovered } from '../stores/centroidSelections';
|
import { hovered as cHovered } from '../stores/centroidSelections';
|
||||||
import { disinformantNationFilter, selectAllFilters, unselectAllFilters, highlightPolarization } from '../stores/filters';
|
import {
|
||||||
|
disinformantNationFilter,
|
||||||
|
selectAllFilters,
|
||||||
|
unselectAllFilters,
|
||||||
|
highlightPolarization } from '../stores/filters';
|
||||||
|
|
||||||
import SourceLink from './SourceLink.svelte';
|
import SourceLink from './SourceLink.svelte';
|
||||||
import Centroid from './Centroid.svelte';
|
import Centroid from './Centroid.svelte';
|
||||||
|
|||||||
@ -37,13 +37,15 @@
|
|||||||
contextData,
|
contextData,
|
||||||
caseIdFilter,
|
caseIdFilter,
|
||||||
tagFilter,
|
tagFilter,
|
||||||
highlightPolarization } from '../stores/filters';
|
highlightPolarization,
|
||||||
|
highlightCib } from '../stores/filters';
|
||||||
import {
|
import {
|
||||||
haveOverlap,
|
haveOverlap,
|
||||||
withinRange,
|
withinRange,
|
||||||
includesTextSearch,
|
includesTextSearch,
|
||||||
isCaseId,
|
isCaseId,
|
||||||
showPolarization,
|
showPolarization,
|
||||||
|
showCib,
|
||||||
preloadImages } from '../utils/misc';
|
preloadImages } from '../utils/misc';
|
||||||
import { selected } from '../stores/eventSelections';
|
import { selected } from '../stores/eventSelections';
|
||||||
import { drawWrapper } from '../stores/elements';
|
import { drawWrapper } from '../stores/elements';
|
||||||
@ -143,6 +145,7 @@
|
|||||||
$textSearchFilter = urlFilters.textSearch;
|
$textSearchFilter = urlFilters.textSearch;
|
||||||
$caseIdFilter = urlFilters.caseId;
|
$caseIdFilter = urlFilters.caseId;
|
||||||
$highlightPolarization = urlFilters.highlightPolarization;
|
$highlightPolarization = urlFilters.highlightPolarization;
|
||||||
|
$highlightCib = urlFilters.highlightCib;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -150,6 +153,7 @@
|
|||||||
$: setScales(data, $width, $minDim, $maxDim, $panelHeight, $margin);
|
$: setScales(data, $width, $minDim, $maxDim, $panelHeight, $margin);
|
||||||
|
|
||||||
$: if (data) {
|
$: if (data) {
|
||||||
|
console.log(data.filter((d) => d.cib.hasCib));
|
||||||
// calculate scaled data points
|
// calculate scaled data points
|
||||||
const scaledData = data.map((d) => ({
|
const scaledData = data.map((d) => ({
|
||||||
...d,
|
...d,
|
||||||
@ -214,6 +218,7 @@
|
|||||||
&& withinRange($attributionScoreFilter, d.attributionScore)
|
&& withinRange($attributionScoreFilter, d.attributionScore)
|
||||||
&& isCaseId($caseIdFilter, d.id)
|
&& isCaseId($caseIdFilter, d.id)
|
||||||
&& showPolarization($highlightPolarization, d.polarization)
|
&& showPolarization($highlightPolarization, d.polarization)
|
||||||
|
&& showCib($highlightCib, d.cib)
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -96,3 +96,5 @@ export const originalTimeDomain = writable(null);
|
|||||||
export const caseIdFilter = writable();
|
export const caseIdFilter = writable();
|
||||||
|
|
||||||
export const highlightPolarization = writable(false);
|
export const highlightPolarization = writable(false);
|
||||||
|
|
||||||
|
export const highlightCib = writable(false);
|
||||||
|
|||||||
@ -60,6 +60,12 @@ export const showPolarization = (filter, polarization) => {
|
|||||||
return(polarization.fulfills10Articles || polarization.fulfills25Percent);
|
return(polarization.fulfills10Articles || polarization.fulfills25Percent);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// check, if cib data can be shown
|
||||||
|
export const showCib = (filter, cib) => {
|
||||||
|
if (!filter) return(true);
|
||||||
|
return(cib.hasCib);
|
||||||
|
};
|
||||||
|
|
||||||
// extract filter items from data
|
// extract filter items from data
|
||||||
export const extractFilterCategories = (data, name) =>
|
export const extractFilterCategories = (data, name) =>
|
||||||
uniq(data.map((d) => d[name]).flat());
|
uniq(data.map((d) => d[name]).flat());
|
||||||
|
|||||||
@ -11,13 +11,14 @@ export const urlFromFilters = (disinformantNations,
|
|||||||
textSearch,
|
textSearch,
|
||||||
contextData,
|
contextData,
|
||||||
caseId = '',
|
caseId = '',
|
||||||
highlightPolarization) => {
|
highlightPolarization,
|
||||||
|
highlightCib) => {
|
||||||
const params = {
|
const params = {
|
||||||
ts: encodeURIComponent(textSearch),
|
ts: encodeURIComponent(textSearch),
|
||||||
as: [attributionScores[0], attributionScores[1]].join(';'),
|
as: [attributionScores[0], attributionScores[1]].join(';'),
|
||||||
f: filtersToHex([disinformantNations, platforms, methods, sources, sourceCategories, tags, contextData]),
|
f: filtersToHex([disinformantNations, platforms, methods, sources, sourceCategories, tags, contextData]),
|
||||||
id: caseId,
|
id: caseId,
|
||||||
bool: filtersToBin([highlightPolarization])
|
bool: filtersToBin([highlightPolarization, highlightCib])
|
||||||
};
|
};
|
||||||
|
|
||||||
return `${baseUrl}/#${params.f}-${params.id}-${params.ts}-${params.as}-${params.bool}`;
|
return `${baseUrl}/#${params.f}-${params.id}-${params.ts}-${params.as}-${params.bool}`;
|
||||||
@ -56,6 +57,7 @@ export const parseUrl = (hash) => {
|
|||||||
caseId: caseId === '' ? undefined : +caseId,
|
caseId: caseId === '' ? undefined : +caseId,
|
||||||
textSearch: decodeURIComponent(textSearch),
|
textSearch: decodeURIComponent(textSearch),
|
||||||
attributionScores: attributionScores.split(';').map((d) => +d),
|
attributionScores: attributionScores.split(';').map((d) => +d),
|
||||||
highlightPolarization: boolArray[0]
|
highlightPolarization: boolArray[0],
|
||||||
|
highlightCib: boolArray[1]
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Загрузка…
x
Ссылка в новой задаче
Block a user