Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • master
1 result

Target

Select target project
  • iso/DBS-Project
1 result
Select Git revision
  • master
  • patch-1
2 results
Show changes
Commits on Source (7)
Showing
with 14150 additions and 0 deletions
"text";"text"
"#holdthefloor";"#NoBillNoBreak"
"#UTCaucus";"#UtahCaucus"
"#Racine";"#Wausau"
"#MakeAmericaGreatAgain";"#ImWithYouhttps"
"#Trump";"#Clinton"
"#NeverHillary";"#MAGA"
"#NoBillNoBreak";"#holdthefloor"
"#OpeningCeremony";"#Rio2016"
"#WesternTuesday";"#TrumpTrain"
"#MakeAmericaGreatAgain";"#LESM"
"#ECONOMY";"#MakeAmericaGreatAgain"
"#Trump2016";"#ArizonaPrimary"
"#TrumpTrainhttps";"#Trump2016"
"#UT";"#AZ"
"#VoteTrumpSC";"#MakeAmericaGreatAgain"
"#INPrimary";"#VoteTrumphttps"
"#NHPolitics";"#Trump2016"
"#DEPrimary";"#RIPrimaryhttps"
"#NYPrimary";"#GOP"
"#Srebrenica";"#NeverForget"
"#UtahCaucus";"#UTCaucus"
"#NaturalBorn";"#MaryBrigidMcManamon"
"#MAGAhttps";"#Trump2016"
"#NeverHillary";"#ElectionDay"
"#AZPrimary";"#AmericanSamoa"
"#TheTonightShow";"#TheDonald"
"#CA4Trump";"#NeverDems"
"#With_Cruz_you_lose";"#trump2016"
"#CommonLaw";"#MaryBrigidMcManamon"
"#Trump2016";"#NASCAR"
"#EauClaire";"#TrumpTrain"
"#primary";"#Trump2016"
"#MakeAmericaGreatAgain";"#TrumpTrain"
"#Wisconsin";"#MakeAmericaGreatAgain"
"#Hillary2016";"#BlackMenForBernie"
"#TrumpNV";"#Trump2016"
"#MakeAmericaGreatAgain";"#UTCaucus"
"#Trump2016https";"#VoteTrump"
"#CTPrimary";"#RIPrimaryhttps"
"#BlackMenForBernie";"#Hillary2016"
"#MakeAmericaGreatAgain";"#VotersSpeak"
"#HillaryOnGMA";"#TBT"
"#ImWithHer";"#FeelTheBern"
"#MakeAmericaGreatAgain";"#UtahCaucus"
"#IACaucus";"#CaucusForTrumphttps"
"#ISIS";"#DebateNight"
"#NoBillNoBreak";"#gunviolence"
"#VoteTrump";"#SuperTuesday"
"#Trump2016";"#TrumpTrainhttps"
"#AlwaysTrump";"#TrumpTrain"
"#MaryBrigidMcManamon";"#TedCruz"
"#Debates2016";"#slipping"
"#RIPrimaryhttps";"#DEPrimary"
"#makeamericagreatagain";"#WeWantTrump"
"#TrumpPence16";"#DebateNight"
"#AZPrimary";"#ArizonaPrimary"
"#Trump2016";"#TrumpNV"
"#Trump2016";"#primary"
"#slipping";"#Polls"
"#KansasCaucus";"#MakeAmericaGreatAgain"
"#Mexico";"#Jobs"
"#brexit";"#MAGA"
"#Rio2016";"#OpeningCeremony"
"#PrimaryDay";"#POTUS"
"#Trump2016https";"#MakeAmericaGreatAgain"
"#DebateNight";"#TrumpPence16"
"#LoveTrumpsHate";"#DemsInPhilly"
"#RIP";"#JuanGabriel"
"#NewHampshire";"#FITN"
"#Carrier";"#Ford"
"#ImWithHer";"#enough"
"#Trump2016";"#MeetTheTrumps"
"#MeetTheTrumps";"#Trump2016"
"#NoBillNoBreak";"#sitin"
"#UtahPrimary";"#Utah4Trump"
"#debatenight";"#Benghazi"
"#PrimaryDay";"#iVoted"
"#Jobs";"#Mexico"
"#AmericanSamoa";"#AZPrimary"
"#Elkhart";"#MakeAmericaGreatAgain"
"#VoteTrump";"#UTCaucus"
"#USA";"#MakeAmericaGreatAgain"
"#DebateNight";"#MAGA"
"#Utah4Trump";"#Utah"
"#VoteTrumpNY";"#MakeAmericaGreatAgain"
"#Politician";"#FAIL"
"#DemConvention";"#DemsInPhilly"
"#DisarmHate";"#sitin"
"#VoteTrump";"#UtahCaucus"
"#Trump2016";"#MAGA"
"#MichaelBrown";"#MothersoftheMovement"
"#ORPrimary";"#VoteTrump"
"#sitin";"#gunviolence"
"#DebateNight";"#ImWithYou"
"#Trump2016";"#ImWithYou"
"#ArizonaPrimary";"#AZPrimary"
"#DemsInPhilly";"#LoveTrumpsHate"
"#FoxNews";"#MichaelMoore"
"#Trump2016";"#NewYorkValues"
"#FITN";"#NHPrimary"
"#gunviolence";"#NoBillNoBreak"
"#Benghazi";"#Debates2016"
"#FoxNews";"#MakeAmericaGreatAgain"
"#Trump";"#Ford"
"#AZPrimary";"#MakeAmericaGreatAgain"
"#TrumpIsWithYou";"#RNCinCLE"
"#Trump2016";"#VoteTrump"
"#WeAreBernie";"#makeamericagreatagain"
"#DivoDeJuarez";"#JuanGabriel"
"#INPrimary";"#MakeAmericaGreatAgain"
"#NeverHillary";"#SCOTUS"
"#SCOTUS";"#NeverHillary"
"#VoterRegistrationDay";"#MakeAmericaGreatAgain"
"#TrumpPence16";"#AmericaFirst"
"#ArizonaPrimary";"#Trump2016"
"#IowaCaucus";"#VoteTrump"
"#AZ";"#UT"
"#trump2016";"#MakeAmericaGreatAgain"
"#VoteTrump";"#NYPrimary"
"#MDPrimary";"#RIPrimaryhttps"
"#makeamericagreatagain";"#trump"
"#Teachers4Trump";"#CA4Trump"
"#Trump2016";"#CrookedHillary"
"#MyTeacherIsWeird";"#FallonTonight"
"#Trump2016";"#RTM2016"
"#NeilCavuto";"#Fox"
"#gunviolence";"#sitin"
"#MakeAmericaGreatAgain";"#LoneStarState"
"#ImWithYou";"#TrumpTrain"
"#NASCAR";"#Trump2016"
"#sitin";"#NoBillNoBreak"
"#OpeningCeremony";"#TeamUSA"
"#Trump2016";"#FITN"
"#GOPDebate";"#TrumpTrain"
"#Trump2016";"#IACaucus"
"#Trump2016";"#AlwaysTrump"
"#CAPrimary";"#MakeAmericaGreatAgain"
"#Ford";"#Trump"
"#MAGA";"#LESM"
"#MAGA";"#TrumpTrain"
"#Jobs";"#Carrier"
"#NewYorkValues";"#NYPrimary"
"#TrumpWaikiki";"#Mahalo"
"#Utah4Trump";"#TrumpCountry"
"#Rubio";"#Bush"
"#GOP";"#NYPrimary"
"#ROGERAILES";"#MichaelMoore"
"#JimmyFallon";"#TheDonald"
"#Trump2016";"#MakeAmericaGreatAgain"
"#INPrimary";"#VoteTrump"
"#SCPrimary";"#MakeAmericaGreatAgain"
"#SB50";"#GOPDebate"
"#Debates2016";"#NationalVoterRegistrationDay"
"#SB50";"#SuperBowlSunday"
"#SuperTuesday";"#Trump2016"
"#MakeAmericaGreatAgain";"#SuperTuesday"
"#Mexico";"#Carrier"
"#AZPrimary";"#VoteTrump"
"#VoteTrumpNV";"#BikersForTrump"
"#Trump2016";"#WesternTuesday"
"#FITN";"#NHPolitics"
"#ImWithYou";"#LawandOrder"
"#ElectionDay";"#DefendtheSecond"
"#ClintonKaine";"#ImWithHer"
"#Trump2016";"#RNC"
"#POTUS";"#MakeAmericaGreatAgain"
"#MakeAmericaGreatAgain";"#Elkhart"
"#TrumpWon";"#MAGA"
"#MakeAmericaGreatAgain";"#KansasCaucus"
"#NYPrimary";"#Trump2016"
"#ADA";"#CripTheVote"
"#Statehood";"#WashingtonDC"
"#MDPrimary";"#CTPrimary"
"#VoteTrumpNY";"#POTUS"
"#TedCruz";"#CommonLaw"
"#VoteTrumpNH";"#FITN"
"#Debates2016";"#Polls"
"#RTM2016";"#Trump2016"
"#ADA";"#imwithher"
"#IAPolitics";"#VoteTrump"
"#CommonLaw";"#NaturalBorn"
"#CrookedHillary";"#Trump2016"
"#VoterFraud";"#MSM"
"#Trump";"#Carrier"
"#Trump2016";"#NYPrimaryTickets"
"#AmericaFirst";"#MakeAmericaGreatAgain"
"#RIPrimaryhttps";"#PAPrimary"
"#AmericanSamoa";"#UTCaucus"
"#MichaelMoore";"#ROGERAILES"
"#Debates2016";"#MAGA"
"#DemsInPhilly";"#NATO"
"#AlwaysTrump";"#Trump2016"
"#VoteTrumpNH";"#MakeAmericaGreatAgain"
"#AmericanSamoa";"#UtahCaucus"
"#RNCinCLE";"#TrumpIsWithYou"
"#LESM";"#Trump2016"
"#IACaucus";"#Trump2016"
"#NoBillNoBreak";"#AsLongAsItTakes"
"#PAPrimary";"#DEPrimary"
"#LaborDay";"#AmericaFirst"
"#Polls";"#Debates2016"
"#FITN";"#Trump2016"
"#WIPrimary";"#MakeAmericaGreatAgain"
"#KenLangone";"#Fox"
"#AmericaFirst";"#GOPConvention"
"#makeamericagreatagain";"#WeAreBernie"
"#LoneStarState";"#SuperTuesday"
"#UtahCaucus";"#AZPrimary"
"#MaryBrigidMcManamon";"#CommonLaw"
"#VoteTrumphttps";"#PAPrimary"
"#Trump2016";"#presidenttrump"
"#AmericaFirst";"#MAGA"
"#Trump2016";"#MakeAmericaGreatAgain@Snapchat"
"#BuildTheWall";"#Hannity"
"#Mexico";"#Ford"
"#ImWithHer";"#ClintonKaine"
"#ImWithYou";"#AmericaFirst"
"#TrumpTrain";"#Trump2016"
"#sitin";"#EndGunViolence"
"#MakeAmericaGreatAgain";"#Trump2016"
"#AmericaFirst";"#ImWithYou"
"#debatenight";"#Debates2016"
"#Filibuster";"#OrlandoUnited"
"#Carrier";"#Mexico"
"#UTCaucus";"#AZPrimary"
"#MakeAmericaGreatAgain";"#CAPrimary"
"#MAGA";"#Debates2016"
"#TrumpTrainhttps";"#NYPrimary"
"#Trump2016";"#IAPolitics"
"#Carrier";"#Jobs"
"#Jobs";"#Ford"
"#WeAreBernie";"#WeWantTrump"
"#MakeAmericaGreatAgain";"#VoterRegistrationDay"
"#DisarmHate";"#EndGunViolence"
"#Trump2016";"#WIPrimary"
"#RNC";"#Trump2016"
"#EndGunViolence";"#DisarmHate"
"#MAGA";"#AmericaFirst"
"#FAIL";"#Politician"
"#FITN";"#NewHampshire"
"#DemsInPhilly";"#ImWithHer"
"#MakeAmericaGreatAgain";"#AZPrimary"
"#NATO";"#StandTogether"
"#With_Cruz_you_lose";"#MakeAmericaGreatAgain"
"#TrumpMovement";"#MAGA"
"#Benghazi";"#debatenight"
"#IAPolitics";"#IACaucus"
"#ChangeAgents";"#MothersoftheMovement"
"#WesternTuesday";"#Trump2016"
"#RIPrimary";"#VoteTrump"
"#SuperTuesday";"#LoneStarState"
"#Utah";"#Mormon"
"#VoteTrumpSC";"#SCPrimary"
"#Wausau";"#Racine"
"#IAPolitics";"#FITN"
"#MakeAmericaGreatAgain";"#VoteTrumpNY"
"#Trump2016";"#POTUS"
"#Women4Ttump";"#Trump2016"
"#MAGA";"#Trump2016"
"#MothersoftheMovement";"#MichaelBrown"
"#RNCinCLE";"#MakeAmericaGreatAgain"
"#MAGA";"#DebateNight"
"#Clinton";"#Trump"
"#Trump";"#Mexico"
"#Orlando";"#StoptheHate"
"#gunviolence";"#AsLongAsItTakes"
"#NevadaCaucus";"#VoteTrumpNV"
"#ChangeAgents";"#MichaelBrown"
"#Wausau";"#EauClaire"
"#StrongerTogether";"#DemsinPhilly"
"#Trump2016";"#SCPrimary"
"#MakeAmericaGreatAgain";"#With_Cruz_you_lose"
"#Trump";"#Jobs"
"#DefendtheSecond";"#NeverHillary"
"#GOPConvention";"#AmericaFirst"
"#jenniferrubin";"#MattSchlapp"
"#ElectionDay";"#NeverHillary"
"#RNCinCLE";"#GOPConvention"
"#ROGERAILES";"#FoxNews"
"#Hannity";"#Trump2016"
"#CTPrimary";"#MDPrimary"
"#TrumpPence16";"#TheDonald"
"#UtahPrimary";"#TrumpCountry"
"#TeamTrump";"#MaitnerStrong"
"#NewYorkValues";"#Trump2016"
"#Trump2016";"#INPrimary"
"#TrumpTrain";"#AmericaFirst"
"#ImWithYou";"#DebateNight"
"#MakeAmericaGreatAgain";"#AmericaFirst"
"#Trump2016";"#FoxNews"
"#AmericaFirst";"#TrumpPence16"
"#ImWithYou";"#Trump2016"
"#TrumpCountry";"#Mormon"
"#Filibuster";"#Enough"
"#Trump2016";"#ICYMI"
"#MakeAmericaGreatAgainhttps";"#Trump2016"
"#DEPrimary";"#MDPrimary"
"#Utah4Trump";"#UtahPrimary"
"#MAKEAMERICAGREATAGAIN";"#ObamaCare"
"#GOPConvention";"#RNCinCLE"
"#MAGA";"#NeverHillary"
"#SuperSaturday";"#Trump2016"
"#BlackMenForBernie";"#BlacksForTrump"
"#ArizonaPrimary";"#UTCaucus"
"#presidenttrump";"#primary"
"#DEPrimary";"#CTPrimary"
"#ICYMI";"#trump2016"
"#NewHampshire";"#VoteTrumpNH"
"#WeAreBernie";"#trump"
"#ArizonaPrimary";"#UtahCaucus"
"#WCS16";"#ImWithYou"
"#NoBillNoBreak";"#goodtrouble"
"#Hillary2016";"#BlacksForTrump"
"#Jonas";"#NewYork"
"#Racine";"#TrumpTrain"
"#TeamUSA";"#OpeningCeremony"
"#VoteTrump";"#AZPrimary"
"#MSM";"#VoterFraud"
"#sitin";"#AsLongAsItTakes"
"#GOP";"#jenniferrubin"
"#Elkhart";"#POTUS"
"#trump2016";"#ICYMI"
"#Jonas";"#NewYorkValues"
"#AsLongAsItTakes";"#NoMoreSilence"
"#StandTogether";"#NATO"
"#Trump2016";"#VoteTrumpSC"
"#Cruz";"#MaryBrigidMcManamon"
"#TPP";"#Debates2016"
"#SCPrimary";"#VoteTrumpSC"
"#Trump2016";"#ECONOMY"
"#EauClaire";"#Wausau"
"#MakeAmericaGreatAgain";"#RNCinCLE"
"#VoteTrump";"#IowaCaucus"
"#StoptheHate";"#Orlando"
"#TrumpTrain";"#Wausau"
"#VoteTrump";"#Trump2016"
"#UtahPrimary";"#Utah"
"#UtahCaucus";"#MakeAmericaGreatAgain"
"#CommonLaw";"#TedCruz"
"#RNCinCLE";"#AmericaFirst"
"#LGBT";"#Pulse"
"#DivoDeJuarez";"#RIP"
"#FITN";"#VoteTrump"
"#CrookedHillary";"#ImWithYou"
"#VotersSpeak";"#MakeAmericaGreatAgain"
"#TheTonightShow";"#TrumpPence16"
"#jenniferrubin";"#GOP"
"#TeamUSA";"#Rio2016"
"#Trump2016https";"#MakeYoutubeGreatAgain"
"#Utah";"#Utah4Trump"
"#MakeAmericaGreatAgain";"#StopCommonCore"
"#IACaucus";"#VoteTrump"
"#MakeAmericaGreatAgain@Snapchat";"#Trump2016"
"#MakeAmericaGreatAgain";"#IACaucus"
"#TBT";"#HillaryOnGMA"
"#AsLongAsItTakes";"#gunviolence"
"#UTCaucus";"#MakeAmericaGreatAgain"
"#VoteTrump";"#AmericanSamoa"
"#Mormon";"#TrumpCountry"
"#presidenttrump";"#Trump2016"
"#MakeAmericaGreatAgain";"#FITN"
"#JimmyFallon";"#TheTonightShow"
"#VoteTrumpNH";"#NewHampshire"
"#HillaryClinton";"#Prince"
"#NYPrimary";"#NewYorkValues"
"#FeelTheBern";"#ImWithHer"
"#TrumpTrain";"#AlwaysTrump"
"#Ford";"#Jobs"
"#NeverHillary";"#DefendtheSecond"
"#AsLongAsItTakes";"#sitin"
"#NHPrimary";"#VoteTrumpNH"
"#POTUS";"#Elkhart"
"#IACaucus";"#GOPDebate"
"#Ford";"#Mexico"
"#Wisconsin";"#TrumpTrain"
"#VoteTrumphttps";"#INPrimary"
"#TrumpTrain";"#EauClaire"
"#AlwaysTrump";"#MAGA"
"#TrumpTrain";"#MakeAmericaGreatAgain"
"#IAPolitics";"#Trump2016"
"#WIPrimaryhttps";"#VoteTrump"
"#TrumpTrain";"#WesternTuesday"
"#BikersForTrump";"#VoteTrumpNV"
"#NaturalBorn";"#TedCruz"
"#LawandOrder";"#ImWithYou"
"#LeadRight2016";"#AmericaFirst"
"#NYPrimary";"#VoteTrump"
"#TedCruz";"#MaryBrigidMcManamon"
"#LESM";"#MAGA"
"#Trump2016";"#SuperTuesday"
"#RIPrimaryhttps";"#MDPrimary"
"#AmericaFirst";"#Trump2016"
"#RIPrimaryhttps";"#CTPrimary"
"#AmericaFirst";"#DebateNight"
"#Trump2016";"#NHPolitics"
"#TrumpTrain";"#MAGA"
"#OrlandoUnited";"#Enough"
"#WashingtonDC";"#Statehood"
"#AsLongAsItTakes";"#NoBillNoBreak"
"#UTCaucus";"#VoteTrump"
"#VoteTrump2016";"#TrumpTrain"
"#LESM";"#MakeAmericaGreatAgain"
"#MakeAmericaGreatAgainTickets";"#Trump2016"
"#TrumpTrain";"#GOPDebate"
"#MakeAmericaGreatAgain";"#GOPDebate"
"#DavidCameron";"#WH"
"#POTUS";"#VoteTrumpNY"
"#Mahalo";"#TrumpWaikiki"
"#Teachers4Trump";"#NeverDems"
"#GIBill";"#veterans"
"#IACaucus";"#MakeAmericaGreatAgain"
"#MAGA";"#TRUMP2016"
"#MaitnerStrong";"#TeamTrump"
"#MAGA";"#TBT"
"#UtahCaucus";"#VoteTrump"
"#WIPrimary";"#Trump2016"
"#FITN";"#MakeAmericaGreatAgain"
"#MakeAmericaGreatAgain";"#ImWithYou"
"#VoteTrump";"#NASCAR"
"#DebateNight";"#ISIS"
"#TrumpTrain";"#ImWithYou"
"#VoteTrumpNV";"#Trump2016"
"#ImWithHer";"#DemConvention"
"#Trump2016";"#MAGAhttps"
"#Pulse";"#LGBT"
"#WeWantTrump";"#makeamericagreatagain"
"#POTUS";"#Trump2016"
"#FITN";"#IACaucus"
"#MakeAmericaGreatAgain";"#NewDay"
"#VoteTrump";"#ArizonaPrimary"
"#IACaucus";"#FITN"
"#MAGA";"#TrumpPence16"
"#StopCommonCore";"#MakeAmericaGreatAgain"
"#TrumpCountry";"#UtahPrimary"
"#NoMoreSilence";"#AsLongAsItTakes"
"#MDPrimary";"#PAPrimary"
"#MakeAmericaGreatAgain";"#VoteTrump"
"#Mormon";"#Utah"
"#Trump2016https";"#UTCaucus"
"#WH";"#DavidCameron"
"#ImWithYouhttps";"#MakeAmericaGreatAgain"
"#Utah4Trump";"#Mormon"
"#Hannity";"#BuildTheWall"
"#Trump2016https";"#UtahCaucus"
"#RNCinCLE";"#TrumpPence2016"
"#CTPrimary";"#PAPrimary"
"#MakeAmericaGreatAgain";"#TrumpTrainhttps"
"#Trump2016";"#Hannity"
"#MakeAmericaGreatAgain";"#TrumpIsWithYou"
"#enough";"#ImWithHer"
"#UtahCaucus";"#AmericanSamoa"
"#MichaelBrown";"#ChangeAgents"
"#Jobs";"#Trump"
"#MakeAmericaGreatAgain";"#VoteTrumphttps"
"#Enough";"#Filibuster"
"#NewYorkValues";"#NewYork"
"#MAGA";"#ImWithYou"
"#Trump2016";"#MakeAmericaGreatAgainhttps"
"#ImWithYou";"#VoteTrump"
"#AmericaFirst";"#Debates2016"
"#RNCinCLEhttps";"#AmericaFirst"
"#NewYorkValues";"#VoteTrump"
"#VoteTrump";"#MakeAmericaGreatAgain"
"#UTCaucus";"#AmericanSamoa"
"#PrimaryDay";"#Trump2016"
"#Mexico";"#Trump"
"#VoteTrump";"#IACaucus"
"#RIP";"#DivoDeJuarez"
"#DEPrimary";"#PAPrimary"
"#NYPrimaryTickets";"#Trump2016"
"#LaurenceTribe";"#TedCruz"
"#trump";"#WeWantTrump"
"#NeverDems";"#Teachers4Trump"
"#VoteTrump";"#FITN"
"#PrimaryDay";"#VoteTrumpNY"
"#ImWithYou";"#MAGA"
"#GOPDebate";"#SuperBowlSunday"
"#Trump2016";"#SuperSaturday"
"#SuperBowlSunday";"#GOPDebate"
"#Utah";"#UtahPrimary"
"#AZPrimary";"#UTCaucus"
"#VoteTrump";"#WIPrimaryhttps"
"#sitin";"#DisarmHate"
"#Ford";"#Carrier"
"#AZPrimary";"#UtahCaucus"
"#NewDay";"#MakeAmericaGreatAgain"
"#TheTonightShow";"#JimmyFallon"
"#Prince";"#HillaryClinton"
"#AmericaFirst";"#RNCinCLEhttps"
"#NYPrimary";"#TrumpTrainhttps"
"#NationalVoterRegistrationDay";"#Debates2016"
"#NewYork";"#NewYorkValues"
"#iVoted";"#PrimaryDay"
"#EndCommonCore";"#Trump2016"
"#Debates2016";"#AmericaFirst"
"#PAPrimary";"#VoteTrumphttps"
"#MakeAmericaGreatAgain";"#Trump2016Tickets"
"#Trump2016";"#NYPrimary"
"#MAGAhttps";"#WIPrimary"
"#JimmyFallon";"#TrumpPence16"
"#CaucusForTrumphttps";"#IACaucus"
"#imwithher";"#ADA"
"#ImWithYou";"#MakeAmericaGreatAgain"
"#TrumpCountry";"#Utah4Trump"
"#MattSchlapp";"#jenniferrubin"
"#DemConvention";"#ImWithHer"
"#MAGA";"#AlwaysTrump"
"#GOPDebate";"#MakeAmericaGreatAgain"
"#TrumpTrain";"#Racine"
"#EauClaire";"#Racine"
"#Trump2016";"#LESM"
"#MakeAmericaGreatAgain";"#ArizonaPrimary"
"#IACaucus";"#CaucusForTrump"
"#ImWithYou";"#CrookedHillary"
"#primary";"#presidenttrump"
"#NeilCavuto";"#KenLangone"
"#WeWantTrump";"#WeAreBernie"
"#POTUS";"#PrimaryDay"
"#Trump2016";"#TrumpTrain"
"#DemsinPhilly";"#DNCinPHL"
"#VoteTrump";"#NewYorkValues"
"#VoteTrump";"#ImWithYou"
"#DemsInPhilly";"#DemConvention"
"#AmericaFirst";"#LeadRight2016"
"#UTCaucus";"#ArizonaPrimary"
"#GOPDebate";"#IACaucus"
"#Trump2016";"#Women4Ttump"
"#AmericaFirst";"#RNCinCLE"
"#PAPrimary";"#RIPrimaryhttps"
"#CripTheVote";"#ADA"
"#Colbert";"#LSSC"
"#CrookedHillary";"#TrumpPence16"
"#UtahCaucus";"#ArizonaPrimary"
"#DefendtheSecond";"#ElectionDay"
"#KansasCaucus";"#Trump2016"
"#Trump2016";"#PrimaryDay"
"#NATO";"#DemsInPhilly"
"#UtahPrimary";"#Mormon"
"#MDPrimary";"#DEPrimary"
"#gunviolence";"#NoMoreSilence"
"#TrumpPence16";"#JimmyFallon"
"#NoMoreSilence";"#gunviolence"
"#CaucusForTrump";"#IACaucus"
"#TrumpPence2016";"#NeverHillary"
"#TedCruz";"#NaturalBorn"
"#ImWithYou";"#WCS16"
"#Bush";"#Rubio"
"#MakeAmericaGreatAgain";"#Trump2016https"
"#WIPrimary";"#VoteTrumpWI"
"#NewYorkValues";"#Jonas"
"#WeWantTrump";"#trump"
"#VoteTrump";"#RIPrimary"
"#MichaelMoore";"#FoxNews"
"#TrumpPence16";"#CrookedHillary"
"#trump2016";"#With_Cruz_you_lose"
"#TrumpTrain";"#VoteTrump2016"
"#AmericaFirst";"#TrumpTrain"
"#GOP";"#MattSchlapp"
"#UtahCaucus";"#Trump2016https"
"#Hannity";"#MAKEAMERICAGREATAGAIN"
"#PAPrimary";"#CTPrimary"
"#TBT";"#MAGA"
"#Debates2016";"#debatenight"
"#TheDonald";"#TheTonightShow"
"#TRUMP2016";"#MAGA"
"#VoteTrumpNV";"#NevadaCaucus"
"#MakeAmericaGreatAgain";"#Wisconsin"
"#VoteTrump";"#IAPolitics"
"#Trump2016";"#EndCommonCore"
"#TrumpTrain";"#Wisconsin"
"#MakeAmericaGreatAgain";"#VoteTrumpSC"
"#NoMoreSilence";"#sitin"
"#MakeAmericaGreatAgain";"#ECONOMY"
"#UTCaucus";"#Trump2016https"
"#NaturalBorn";"#CommonLaw"
"#MAGA";"#TrumpWon"
"#TedCruz";"#LaurenceTribe"
"#TheDonald";"#JimmyFallon"
"#TrumpCountry";"#Utah"
"#trump";"#makeamericagreatagain"
"#Mormon";"#UtahPrimary"
"#MakeAmericaGreatAgain";"#SCPrimary"
"#NHPolitics";"#FITN"
"#ArizonaPrimary";"#AmericanSamoa"
"#NoMoreSilence";"#holdthefloor"
"#TrumpPence16";"#MAGA"
"#MaryBrigidMcManamon";"#NaturalBorn"
"#NoMoreSilence";"#NoBillNoBreak"
"#OrlandoUnited";"#Filibuster"
"#PAPrimary";"#MDPrimary"
"#campaignfinance";"#CitizensUnited"
"#Fox";"#KenLangone"
"#Trump2016";"#VoteTrumpNV"
"#VoteTrumpNVhttps";"#NevadaCaucus"
"#MakeAmericaGreatAgain";"#INPrimary"
"#VoteTrumphttps";"#MakeAmericaGreatAgain"
"#DebateNight";"#AmericaFirst"
"#TrumpPence16";"#TheTonightShow"
"#CitizensUnited";"#campaignfinance"
"#MakeAmericaGreatAgain";"#trump2016"
"#AmericanSamoa";"#VoteTrump"
"#Trump2016";"#MakeAmericaGreatAgainTickets"
"#Rio2016";"#TeamUSA"
"#MakeAmericaGreatAgain";"#FoxNews"
"#NeverHillary";"#TrumpPence2016"
"#NeverCruz";"#LyingTed"
"#AmericaFirst";"#LaborDay"
"#Trump2016";"#AmericaFirst"
"#NewYork";"#Jonas"
"#VoteTrumpNY";"#PrimaryDay"
"#sitin";"#NoMoreSilence"
"#ECONOMY";"#Trump2016"
"#MAGA";"#TrumpMovement"
"#DNCinPHL";"#DemsinPhilly"
"#EndGunViolence";"#sitin"
"#TrumpTrainhttps";"#MakeAmericaGreatAgain"
"#Debates2016";"#TPP"
"#Enough";"#OrlandoUnited"
"#VoteTrumpSC";"#Trump2016"
"#TrumpIsWithYou";"#MakeAmericaGreatAgain"
"#MakeAmericaGreatAgain";"#USA"
"#MothersoftheMovement";"#ChangeAgents"
"#Polls";"#slipping"
"#ArizonaPrimary";"#VoteTrump"
"#ImWithHer";"#DemsInPhilly"
"#goodtrouble";"#NoBillNoBreak"
"#slipping";"#Debates2016"
"#SCPrimary";"#Trump2016"
"#CA4Trump";"#Teachers4Trump"
"#Wausau";"#TrumpTrain"
"#WIPrimary";"#MAGAhttps"
"#GOPDebate";"#SB50"
"#SuperBowlSunday";"#SB50"
"#Trump2016";"#WattersWorld"
"#SuperTuesday";"#MakeAmericaGreatAgain"
"#MattSchlapp";"#GOP"
"#DemsinPhilly";"#StrongerTogether"
"#imwithher";"#CripTheVote"
"#NeverDems";"#CA4Trump"
"#NHPrimary";"#FITN"
"#Fox";"#NeilCavuto"
"#holdthefloor";"#NoMoreSilence"
"#Carrier";"#Trump"
"#JuanGabriel";"#RIP"
"#MakeAmericaGreatAgain";"#WIPrimary"
"#Trump2016";"#AZPrimary"
"#NevadaCaucus";"#VoteTrumpNVhttps"
"#MaryBrigidMcManamon";"#Cruz"
"#NeverForget";"#Srebrenica"
"#MakeAmericaGreatAgain";"#VoteTrumpNH"
"#LyingTed";"#NeverCruz"
"#MakeAmericaGreatAgain";"#POTUS"
"#WattersWorld";"#Trump2016"
"#NoBillNoBreak";"#NoMoreSilence"
"#Trump2016";"#VoteTrumpNY"
"#VoteTrump";"#Trump2016https"
"#CripTheVote";"#imwithher"
"#ObamaCare";"#MAKEAMERICAGREATAGAIN"
"#veterans";"#GIBill"
"#BlacksForTrump";"#Hillary2016"
"#AmericanSamoa";"#ArizonaPrimary"
"#JuanGabriel";"#DivoDeJuarez"
"#FoxNews";"#Trump2016"
"#MakeYoutubeGreatAgain";"#Trump2016https"
"#LSSC";"#Colbert"
"#SuperTuesday";"#VoteTrump"
"#trump";"#WeAreBernie"
"#VoteTrumpWI";"#WIPrimary"
"#BlacksForTrump";"#BlackMenForBernie"
"#AZPrimary";"#Trump2016"
"#Trump2016";"#KansasCaucus"
"#taxplan";"#smallbiz"
"#VoteTrump";"#INPrimary"
"#INPrimary";"#Trump2016"
"#Racine";"#EauClaire"
"#FITN";"#VoteTrumpNH"
"#ArizonaPrimary";"#MakeAmericaGreatAgain"
"#FoxNews";"#ROGERAILES"
"#FallonTonight";"#MyTeacherIsWeird"
"#Debates2016";"#Benghazi"
"#LoneStarState";"#MakeAmericaGreatAgain"
"#KenLangone";"#NeilCavuto"
"#VoteTrump";"#ORPrimary"
"#VoteTrumpNY";"#Trump2016"
"#IACaucus";"#IAPolitics"
"#Utah";"#TrumpCountry"
"#FITN";"#IAPolitics"
"#ICYMI";"#Trump2016"
"#VoteTrumpNH";"#NHPrimary"
"#CTPrimary";"#DEPrimary"
"#MAKEAMERICAGREATAGAIN";"#Hannity"
"#TrumpPence2016";"#RNCinCLE"
"#Mormon";"#Utah4Trump"
"#NASCAR";"#VoteTrump"
"#MAGA";"#brexit"
"#TheDonald";"#TrumpPence16"
"#Trump2016Tickets";"#MakeAmericaGreatAgain"
"#smallbiz";"#taxplan"
\ No newline at end of file
public class CoordinateTripel {
private String textCoordinate;
private double retweetCoordinate;
private double favoriteCoordinate;
/**
* Diese Klasse dient nur zur Speicherung der im Konstruktor
* angegebenen Koordinaten.
* @param textCoordinate gibt den Hashtag-Text wieder
* @param retweetCoordinate gibt die aufaddierten Retweets wieder
* @param favoriteCoordinate gibt die aufaddierten Favorits wieder
*/
public CoordinateTripel(String textCoordinate, double retweetCoordinate, double favoriteCoordinate){
this.textCoordinate = textCoordinate;
this.retweetCoordinate = retweetCoordinate;
this.favoriteCoordinate = favoriteCoordinate;
}
/**
* Getter und Setter
*/
public String getTextCoordinate() {
return textCoordinate;
}
public void setTextCoordinate(String textCoordinate) {
this.textCoordinate = textCoordinate;
}
public double getRetweetCoordinate() {
return retweetCoordinate;
}
public void setRetweetCoordinate(double retweetCoordinate) {
this.retweetCoordinate = retweetCoordinate;
}
public double getFavoriteCoordinate() {
return favoriteCoordinate;
}
public void setFavoriteCoordinate(double favoriteCoordinate) {
this.favoriteCoordinate = favoriteCoordinate;
}
}
import java.sql.*;
import java.util.ArrayList;
public class DatabaseConnector {
public ArrayList<CoordinateTripel> makeCoordinates() {
ArrayList<CoordinateTripel> tripels = new ArrayList<CoordinateTripel>();
Connection connect = null;
Statement statet = null;
try {
/**
* stelle eine Verbindung zur postgre-Datenbank her
*/
Class.forName("org.postgresql.Driver");
connect = DriverManager.getConnection("jdbc:postgresql://agdbs-edu01.imp.fu-berlin.de/BernieIsMyLover", "student", "password");
statet = connect.createStatement();
/**
* SQL-Anfrage, die die Summe der Retweets und Favorits eines Joins der has-Tabelle mit Tweet wiedergibt,
* nach den hashtag-texten gruppiert
*/
ResultSet result = statet.executeQuery("SELECT SUM(T.\"retweetCount\") AS rtcount, SUM(T.\"favoriteCount\") AS fvtcount, H.hashtag " +
" FROM \"Tweet\" T JOIN has H ON H.\"ID\" = T.\"ID\" " +
" GROUP BY hashtag");
/**
* Füge einen hashtag nach dem anderen in Form eines CoordinateTripels in eine Liste ein
*/
while ( result.next() ) {
String text = result.getString("hashtag");
int retweets = result.getInt("rtcount");
int favorites = result.getInt("fvtcount");
tripels.add(new CoordinateTripel(text, retweets, favorites));
}
/**
* schließe Verbindung
*/
result.close();
statet.close();
connect.close();
} catch(Exception e){
e.printStackTrace();
System.err.println(e.getClass().getName()+": "+e.getMessage());
System.exit(0);
}
/**
* gib Liste zurück
*/
return tripels;
}
}
text; favoriteCoordinate; retweetCoordinate; clusterID
#CoastGuardDay; 35595; 10741; 0
#DisarmHate; 31231; 25916; 0
#Rio2016; 35693; 10719; 0
#VoterFraud; 36501; 14214; 0
#MakeAmericaGreatAgainhttps; 29922; 9302; 0
#NHPrimary; 41886; 13648; 0
#MSM; 36501; 14214; 0
#SuperSaturday; 33932; 10508; 0
#AZPrimary; 32721; 10742; 0
#TrumpPence16https; 33408; 18434; 0
#DemConvention; 35768; 10859; 0
#SCOTUS; 34419; 15999; 0
#LoveTrumpsHate; 37806; 17409; 0
#OpeningCeremony; 35693; 10719; 0
#VoteTrumphttps; 32158; 11235; 0
#TrumpTrainhttps; 31772; 10646; 0
#MakeAmericaSafeAgain; 30751; 9303; 0
#TeamUSA; 35693; 10719; 0
#VoteTrump2016; 31377; 9889; 0
#AlwaysTrump; 32742; 10146; 0
#FlashbackFriday; 32212; 16769; 0
#TrumpPence2016; 38871; 11177; 0
#VoteTrumpNH; 41123; 14943; 0
#VoteTrumpNV; 39146; 12363; 0
#BrexitVote; 35255; 17038; 0
#SecondAmendment; 12162; 6718; 1
#RNCInCLE; 5747; 4334; 1
#MattSchlapp; 5205; 1416; 1
#LoneStarState; 4696; 1463; 1
#HillaryClinton; 1238; 568; 1
#StandTogether; 3179; 1689; 1
#IowaCaucus; 7961; 3311; 1
#AmericaFIRST; 11674; 3876; 1
#Caribbean; 674; 312; 1
#APAHM; 3681; 1294; 1
#CitizensUnited; 6146; 3262; 1
#NetNeutrality; 2235; 954; 1
#WeWantTrump; 3369; 950; 1
#CommonLaw; 2351; 801; 1
#election2016; 3708; 2119; 1
#SmallBizWeek; 905; 495; 1
#Mormon; 9960; 3390; 1
#HillaryKaine2016; 12850; 5971; 1
#Ford; 4889; 1896; 1
#MakeYoutubeGreatAgain; 8650; 3249; 1
#SouthCarolina; 4780; 1631; 1
#Trump4Vets; 13269; 5249; 1
#smallbiz; 9567; 3915; 1
#KhizrKhan; 11269; 6827; 1
#CaucusForTrumphttps; 6913; 2951; 1
#RNCINCLE; 1749; 1295; 1
#NeilCavuto; 6168; 1841; 1
#TedCruz; 4481; 1555; 1
#CommonCore; 6729; 2271; 1
#JuanGabriel; 991; 381; 1
#TitleIX; 8580; 2467; 1
#NoLoyalty; 7223; 2341; 1
#extremevetting; 7551; 4484; 1
#Trump2016Tickets; 7225; 2380; 1
#trump; 3369; 950; 1
#RosanellEaton; 1648; 903; 1
#NYPrimaryTickets; 7872; 2743; 1
#WestVirginia; 928; 358; 1
#MothersDay; 1936; 767; 1
#OpioidAwarenessWeek; 5353; 2116; 1
#Iowa; 3788; 1236; 1
#veterans; 1215; 471; 1
#Pulse; 1452; 444; 1
#MorningJoe; 5995; 1634; 1
#BlackMenForBernie; 10727; 4626; 1
#USMC2016; 3687; 1103; 1
#TrumpDallas; 13227; 4469; 1
#TrumpCountry; 9960; 3390; 1
#enough; 4151; 1904; 1
#Racine; 14266; 4767; 1
#WHCD; 7550; 3054; 1
#RobotRubio; 10759; 4585; 1
#StoptheHate; 9087; 5555; 1
#ORPrimary; 7292; 2886; 1
#SuperBowlSunday; 9113; 2328; 1
#sitin; 10860; 4433; 1
#Hillary2016; 10727; 4626; 1
#LSSC; 7543; 2758; 1
#ROGERAILES; 4601; 1690; 1
#iRegistered; 3206; 1235; 1
#UnderstandSlavery; 1916; 866; 1
#OrlandoUnited; 5782; 2452; 1
#WattersWorld; 13081; 4044; 1
#LaudatoSi; 975; 381; 1
#NaturalBorn; 2351; 801; 1
#Trump360; 7706; 2773; 1
#Prince; 1238; 568; 1
#GoodTrouble; 12170; 5689; 1
#TrumpLV; 6110; 2532; 1
#CTPrimary; 11128; 4806; 1
#WCS16; 13527; 4087; 1
#InternationalNursesDay; 4674; 1995; 1
#EndCommonCore; 11832; 4411; 1
#MaryBrigidMcManamon; 4712; 1677; 1
#DemocraticSitIn; 9485; 3016; 1
#NASCAR; 9205; 3361; 1
#ClintonKaine; 6579; 2664; 1
#Mexico; 4889; 1896; 1
#TrumpSupporters; 7806; 2812; 1
#CBNNews; 2955; 1027; 1
#MothersoftheMovement; 1096; 594; 1
#WIBackHer; 6959; 1945; 1
#MSPrimary; 9389; 3087; 1
#VoterRegistrationDay; 6963; 2953; 1
#NewYork; 2299; 741; 1
#Ted; 5782; 2221; 1
#MaitnerStrong; 6412; 2044; 1
#DNCinPHL; 684; 274; 1
#gunviolence; 7947; 3589; 1
#Clinton; 11435; 5530; 1
#LeadRight2016; 9207; 2966; 1
#Srebrenica; 753; 447; 1
#trump2016; 14405; 3858; 1
#TeacherAppreciationDay; 7744; 3340; 1
#Donald; 8926; 2387; 1
#Diwali; 1710; 833; 1
#ChangeAgents; 1096; 594; 1
#Jobs; 4889; 1896; 1
#polls; 13376; 5587; 1
#DACA; 1163; 482; 1
#StopGunViolence; 11916; 5709; 1
#BikersForTrump; 6718; 2496; 1
#SayHerName; 896; 478; 1
#NewDay; 7340; 2242; 1
#FNS; 11825; 3034; 1
#ThankAVet; 11030; 3879; 1
#MadeInAmerica; 1982; 818; 1
#Laurence; 3291; 1229; 1
#DEPrimary; 11128; 4806; 1
#AIPAC2016; 9704; 3488; 1
#HillaryOnGMA; 977; 499; 1
#ActOnClimate; 3739; 2753; 1
#WATCH; 4769; 1826; 1
#MSNBCTownhall; 8943; 3677; 1
#ADA; 1293; 452; 1
#Wausau; 14266; 4767; 1
#goodtrouble; 12285; 5417; 1
#ThanksObama; 2446; 1202; 1
#MikePence; 2975; 3037; 1
#MoreInCommon; 1180; 386; 1
#YUGE; 2572; 828; 1
#Carrier; 4889; 1896; 1
#VirWINia; 5617; 1887; 1
#CNN; 10608; 3066; 1
#SB50; 9113; 2328; 1
#DemsInPHL; 11997; 3801; 1
#Debate; 1946; 1523; 1
#RIP; 991; 381; 1
#WorldRefugeeDay; 5728; 2049; 1
#Jonas; 2299; 741; 1
#JohnRyder; 13719; 4877; 1
#GOPdebate; 5582; 3397; 1
#WeTrumpHate; 2716; 1092; 1
#LAflood; 1475; 670; 1
#Rubio; 4010; 1680; 1
#NeverForget; 753; 447; 1
#RepMikeKelly; 8630; 2286; 1
#MayDay; 5371; 2214; 1
#GunViolence; 6220; 2532; 1
#FAIL; 7230; 4894; 1
#Decision2016; 4893; 1913; 1
#HRC4PA; 1110; 599; 1
#YouthDay; 4279; 2058; 1
#AIDSFreeGeneration; 2528; 955; 1
#UtahPrimary; 9960; 3390; 1
#KansasCaucus; 7255; 1763; 1
#Mahalo; 8753; 2639; 1
#FightForFamilies; 6119; 3013; 1
#MyTeacherIsWeird; 10484; 2515; 1
#MemorialDay; 7532; 3046; 1
#DavidCameron; 1826; 683; 1
#StopCommonCore; 12250; 4320; 1
#With_Cruz_you_lose; 2571; 703; 1
#NPS100; 9026; 3339; 1
#GPLFers; 5989; 2414; 1
#LibrarianOfCongress; 1652; 634; 1
#TrumpinEverett; 7882; 2273; 1
#NHPolitics; 9941; 4002; 1
#VoteTrumpNVhttps; 8828; 3020; 1
#TurnUpToVote; 11025; 7110; 1
#EarthDay; 2834; 1439; 1
#HispanicHeritageMonth; 2384; 1407; 1
#LGBT; 4547; 1759; 1
#MakeAmericaGreatAgain@Snapchat; 10388; 3312; 1
#RollCallVote; 9545; 2520; 1
#jenniferrubin; 5205; 1416; 1
#FallonTonight; 10484; 2515; 1
#Elkhart; 10283; 3124; 1
#womancard; 3476; 1870; 1
#vaticanwalls; 9912; 5392; 1
#WHD; 1702; 691; 1
#TrumpIsWithYou; 13024; 3779; 1
#Orlando; 2311; 1542; 1
#LittleMarco; 13353; 4545; 1
#TrumpYourself; 11447; 6085; 1
#makersandtakers; 1111; 516; 1
#NotOneMore; 2964; 1062; 1
#VoteTrumpWI; 13887; 4862; 1
#TPP; 13196; 5045; 1
#Excellent; 3157; 940; 1
#HarveyPitt; 2799; 695; 1
#MAGAhttps; 11943; 4044; 1
#MichaelBrown; 1096; 594; 1
#TrumpWaikiki; 8753; 2639; 1
#GoldenGlobe; 6188; 1714; 1
#AmericaGreatAgain; 3459; 941; 1
#IAPolitics; 5773; 1901; 1
#WashingtonDC; 728; 378; 1
#Fox; 6168; 1841; 1
#Teachers4Trump; 9309; 2561; 1
#FeelTheBern; 1217; 476; 1
#LaurenceTribe; 2130; 754; 1
#NoMoreSilence; 11100; 4741; 1
#TBThttps; 4443; 2015; 1
#NewHampshire; 6116; 2602; 1
#Wimbledon; 11611; 3707; 1
#MDPrimary; 11128; 4806; 1
#UNGA; 4935; 2448; 1
#HillaryOnCNN; 1426; 837; 1
#SallyRideDay; 6575; 2977; 1
#fairandbalancedmyass; 4672; 1687; 1
#WH; 1826; 683; 1
#DemPlatform; 8147; 3785; 1
#OHHillYes; 2017; 564; 1
#TrumpNV; 4457; 1622; 1
#VoteTrumpNC; 7946; 2728; 1
#AsLongAsItTakes; 7947; 3589; 1
#HaileyPuckett; 6445; 1962; 1
#DivoDeJuarez; 991; 381; 1
#MichaelMoore; 4601; 1690; 1
#INDPrimary; 13689; 3934; 1
#GO; 6801; 2047; 1
#Greta; 7863; 2754; 1
#Trump4President; 2625; 686; 1
#Enjoy; 10737; 2482; 1
#Brexit; 1451; 1283; 1
#CripTheVote; 1293; 452; 1
#Statehood; 728; 378; 1
#Arizona; 7981; 2933; 1
#BlackWomensEqualPay; 5523; 2513; 1
#GIBill; 1215; 471; 1
#Politician; 7230; 4894; 1
#RIPrimary; 8469; 2769; 1
#Filibuster; 4965; 2117; 1
#Olmstead; 2425; 715; 1
#Bush; 4010; 1680; 1
#EstoyConElla; 2072; 1006; 1
#iVoted; 4350; 1581; 1
#EauClaire; 14266; 4767; 1
#OnTheRecord; 9675; 2857; 1
#makeamericagreatagain; 3369; 950; 1
#IranDeal; 3458; 1089; 1
#laurencetribe; 1943; 639; 1
#LightweightSenatorMarcoRubio; 11708; 4922; 1
#FirstInPOTUS; 1540; 513; 1
#CreatorsAskHRC; 5516; 1921; 1
#NABJNAHJ16; 5765; 1713; 1
#HistoryMade; 5685; 1347; 1
#MadeForHistory; 1322; 521; 1
#MakeAmericaGreatAgainTickets; 7116; 2893; 1
#RogerStone; 7299; 2728; 1
#Cruz; 2361; 876; 1
#ShesWithUs; 1752; 869; 1
#HoustonFlood; 2993; 1231; 1
#WeAreBernie; 3369; 950; 1
#AmericanSamoa; 8750; 2973; 1
#CruzFraud; 10184; 6228; 1
#BlacksForTrump; 10727; 4626; 1
#taxplan; 8126; 3355; 1
#campaignfinance; 4153; 2443; 1
#SouthCarolinaPrimary; 3990; 1256; 1
#UPUPUP; 8936; 2831; 1
#CA4Trump; 9309; 2561; 1
#DeclareYourAmbition; 2652; 1464; 1
#VoteTrumpVT; 4965; 1559; 1
#VotersSpeak; 8877; 3585; 1
#RIPrimaryhttps; 11128; 4806; 1
#fixdemocracyfirst); 583; 317; 1
#Colbert; 4719; 1635; 1
#RNC; 3340; 1075; 1
#brexit; 13633; 5213; 1
#EastVillage; 1226; 552; 1
#Enough; 4965; 2117; 1
#ArmyBDay; 2744; 882; 1
#imwithyou; 10923; 4685; 1
#EndGunViolence; 2913; 844; 1
#KenLangone; 6168; 1841; 1
#voteTrump; 8649; 2201; 1
#NAACP107; 3691; 3034; 1
#MeetTheTrumps; 13313; 3058; 1
#UAW; 1412; 837; 1
#Turkey; 5451; 2603; 1
#MakeAmericaGreatAgainWatch; 12596; 5777; 1
#Charleston9; 3522; 1450; 1
#NeverDems; 9309; 2561; 1
#VoteTrumpMA; 6273; 2128; 1
#holdthefloor; 3153; 1152; 1
#ECONOMY; 4256; 1651; 1
#Women4Ttump; 8317; 3173; 1
#SaveElephants; 1359; 541; 1
#ugpride2016; 1572; 638; 1
#JuntosSePuede; 2557; 1014; 1
#imwithher; 1293; 452; 1
#KentuckyDerby; 4576; 1772; 1
#MegynKellyPresents; 6371; 1423; 1
#Utah4Trump; 9960; 3390; 1
#NVcaucus; 9193; 2106; 1
#VoteTrumpIL; 8357; 2634; 1
#DebateNight; 755436; 367087; 2
#debatenight; 612778; 363020; 2
#MAGA; 1220960; 426343; 2
#Trump2016; 3410805; 1200797; 2
#SCPrimary; 40572; 17556; 2
#Frozen; 62473; 26094; 2
#DDay; 41913; 16809; 2
#NewYorkValues; 75997; 25947; 2
#ImWithYou; 1015305; 371621; 2
#GOPDebate; 214831; 77543; 2
#NeverTrump; 47837; 16113; 2
#SheWon; 72288; 21180; 2
#INPrimary; 133066; 48025; 2
#RNCinCLE; 511766; 238639; 2
#ICYMI; 54728; 23370; 2
#ImWithHer; 158924; 52168; 2
#NBCNewsForum; 48238; 24699; 2
#SuperTuesday; 283887; 98610; 2
#VoteTrump; 623108; 216620; 2
#NYPrimary; 75453; 25566; 2
#NeverHillary; 110009; 38421; 2
#TrumpWon; 69829; 26816; 2
#RiggedSystem; 78550; 40507; 2
#Trump2016https; 277707; 101118; 2
#CrookedHillary; 328929; 141810; 2
#NationalVoterRegistrationDay; 41258; 27555; 2
#Imwithyou; 53939; 20561; 2
#ImWithYouhttps; 83152; 32428; 2
#Trump; 60453; 20738; 2
#Debates2016; 310728; 154973; 2
#LyingTed; 42159; 16101; 2
#TBT; 49987; 16606; 2
#StrongerTogether; 43362; 18491; 2
#IACaucus; 71648; 28963; 2
#LESM; 132517; 43642; 2
#FITN; 145416; 48915; 2
#WheresHillary; 62133; 27723; 2
#Obamacare; 79907; 33017; 2
#AmericaFirst; 1148627; 405552; 2
#StandWithLouisiana; 45253; 17551; 2
#MakeAmericaGreatAgain; 2624619; 917605; 2
#TrumpTrain; 368147; 120335; 2
#CincoDeMayo; 115107; 82653; 2
#Brussels; 45696; 17560; 2
#TrumpPence16; 525664; 171366; 2
#CaucusForTrump; 54347; 18928; 2
#WIPrimary; 130969; 46174; 2
#DemsInPhilly; 369246; 136660; 2
#DNC; 49552; 16484; 2
#POTUS; 109849; 38806; 2
#NoBillNoBreak; 55560; 25884; 2
#Benghazi; 56562; 30921; 2
#GOPConvention; 84256; 18578; 2
#VoteTrumpSC; 68924; 27673; 2
#RNCinCLEhttps; 47497; 16629; 2
#TeamTrump; 25923; 8263; 3
#CommanderInChiefForum; 23543; 9687; 3
#PrimaryDay; 27979; 11934; 3
#Hannity; 26030; 7618; 3
#WomanCard; 28180; 12529; 3
#NeverCruz; 25288; 10252; 3
#DemsinPhilly; 23356; 10626; 3
#GOPinCLE; 26046; 7182; 3
#WeMadeHistory; 27915; 12708; 3
#PhilandoCastile; 25057; 10433; 3
#LaborDay; 27247; 10177; 3
#TerenceCrutcher; 24955; 12204; 3
#LawandOrder; 28433; 10015; 3
#WORK; 26644; 5713; 3
#ArmedForcesDay; 28920; 10199; 3
#SOTU; 24315; 9395; 3
#NevadaCaucus; 24738; 7918; 3
#NATO; 28727; 9887; 3
#MDW; 27640; 10998; 3
#PurpleHeartDay; 20909; 7416; 4
#GOP; 16541; 5995; 4
#dtmag; 20114; 6045; 4
#CAPrimary; 19771; 6448; 4
#ArizonaPrimary; 16783; 5398; 4
#FoxNews; 16130; 5602; 4
#MakeAmericaSafeAgainhttps; 16937; 7060; 4
#ElectionDay; 15524; 7523; 4
#DefendtheSecond; 15524; 7523; 4
#StanleyCup; 22250; 7340; 4
#VoteTrumpNY; 21659; 8652; 4
#USA; 18600; 5085; 4
#DonaldTrump; 18157; 6925; 4
#Polls; 18329; 7925; 4
#TheTonightShow; 15449; 4411; 4
#WomensEqualityDay; 15633; 8122; 4
#MAKEAMERICAGREATAGAIN; 21961; 7130; 4
#ObamaCare; 22498; 8431; 4
#RestoreTheVRA; 15986; 6363; 4
#PAPrimary; 20535; 8009; 4
#Mediafraud; 14973; 5676; 4
#WIPrimaryhttps; 13843; 5500; 4
#VoteTrumpMI; 19970; 6807; 4
#TheDonald; 15449; 4411; 4
#presidenttrump; 14309; 5356; 4
#RTM2016; 14847; 4296; 4
#ALConvention2016; 20610; 6355; 4
#RNCwithBernie; 15660; 7034; 4
#WOMEN4TRUMP; 14329; 5128; 4
#JimmyFallon; 15449; 4411; 4
#DemsinPHL; 14709; 10489; 4
#TRUMP2016; 13763; 6895; 4
#primary; 14309; 5356; 4
#ISIS; 15499; 6680; 4
#BuildTheWall; 15416; 4254; 4
#NYCPride; 15834; 4812; 4
#AZ; 15391; 4530; 4
#Wisconsin; 19235; 6610; 4
#Indiana; 14767; 4837; 4
#slipping; 18329; 7925; 4
#ImWithHernandez; 20705; 6131; 4
#UtahCaucus; 17404; 5770; 4
#WakeUpAmerica; 21868; 8009; 4
#TrumpMovement; 17418; 7632; 4
#UTCaucus; 17404; 5770; 4
#debate; 21098; 12899; 4
#Utah; 21800; 6903; 4
#WISCONSIN; 12965; 6653; 4
#WesternTuesday; 21909; 7099; 4
#UT; 15391; 4530; 4
#TRUMP; 15287; 4187; 4
#media; 17312; 5298; 4
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Arrays;
public class kMeansAlgo {
private ArrayList<CoordinateTripel> coordinateTripels;
private int k;
public kMeansAlgo(ArrayList<CoordinateTripel> coordinateTripels, int k) {
this.coordinateTripels = coordinateTripels;
this.k = k;
}
/**
* Methode zum Erstellen des neuen CSV-files
*/
public void write(ArrayList<CoordinateTripel>[] clusterArray) {
try {
/**
* initialisiere Writer
*/
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("clusters.csv"), "Cp1252"));
System.out.println(clusterArray.length);
writer.write("text; favoriteCoordinate; retweetCoordinate; clusterID" + System.getProperty("line.separator"));
/**
* iteriere über die Listen des Arrays
* und innerhalb dieser Iteration über die Elemente
* der Listen.
*/
int i = 0;
for(ArrayList<CoordinateTripel> cluster : clusterArray) {
for (CoordinateTripel coordinateTripel : cluster) {
String oneEntry = coordinateTripel.getTextCoordinate() + "; "+ (int)(coordinateTripel.getFavoriteCoordinate()) + "; "+ (int)(coordinateTripel.getRetweetCoordinate()) + "; "+ i;
writer.write(oneEntry + System.getProperty("line.separator") );
}
i++;
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* tatsächlicher k-Means-Algorithmus
*/
public ArrayList<CoordinateTripel>[] algorithm() {
/**
* initialisiere zwei Arrays der Länge k in denen die aktuellen
* und die neuen Cluster gespeichert werden, sowie ein
* Array von Listen, in dem die Cluster gespeichert werden
*/
CoordinateTripel[] clusterCenters = new CoordinateTripel[k];
CoordinateTripel[] newCenters = new CoordinateTripel[k];
ArrayList<CoordinateTripel>[] clusterArray = new ArrayList[k];
/**
* wähle k Hastags zufällig als erste Clustercenter aus, um
* leere Cluster zu vermeiden
*/
for (int i = 0; i < clusterCenters.length; i++) {
clusterCenters[i] = coordinateTripels.get((int)(Math.random()*coordinateTripels.size()));
}
/**
* das Array von neuen Clustercentern wird mit 0 in allen
* Koordinaten initialisiert
*/
for (int i = 0; i < clusterCenters.length; i++) {
newCenters[i] = new CoordinateTripel("", 0, 0);
}
/**
* zähle wie viele Iterationen man schon hat und notiere,
* ob man sich in der ersten Iterationen befindet
*/
int iterations = 0;
boolean firstIteration = true;
int differences = 1000;
/**
* Schleifeninhalt wird so oft ausgeführt, bis es keine Unterschiede
* in den Clustern mehr gibt
*/
while (differences > 0){
System.out.println(iterations);
/**
* erstelle ein neues Array von Listen, in dem die neuen Cluster
* gespeichert werden, um sie mit den aktuellen Clustern vergleichen
* zu können
*/
ArrayList<CoordinateTripel>[] tempClusterArray = new ArrayList[k];
for (int i = 0; i < tempClusterArray.length; i++) {
tempClusterArray[i] = new ArrayList<CoordinateTripel>();
}
/**
* füge die Tripel nacheinander in die Liste hinzu, dessen
* Index im clusterCenter-Array auf das nächste Center zeigt
*/
for (CoordinateTripel tripel : coordinateTripels) {
tempClusterArray[getClosestIndex(tripel, clusterCenters)].add(tripel);
}
/***
* falls man sich nicht in der ersten Iteration befindet, werden
* die aktuellen Clustercenter durch die neuen Center abgelöst
* und man zählt die Unterschiede der aktuellen mit den neuen
* Clustern
*/
if(!firstIteration) {
clusterCenters = newCenters;
differences = getDifferences(tempClusterArray, clusterArray);
} else {
firstIteration = false;
}
/**
* löse die aktuellen durch die neuen Ckuster ab und mache aus
* ihnen neue Clustercenter
*/
clusterArray = tempClusterArray;
newCenters = makeClusterCenters(tempClusterArray);
iterations++;
}
/**
* Abschließend werden die letzten Clustercenter an ihre jeweiligen
* Listen angehängt
*/
int j = 0;
for (ArrayList<CoordinateTripel> tripelArrayList : clusterArray) {
tripelArrayList.add(clusterCenters[j]);
j++;
}
return clusterArray;
}
public CoordinateTripel[] makeClusterCenters(ArrayList<CoordinateTripel>[] clusterArray) {
CoordinateTripel[] centers = new CoordinateTripel[k];
int j = 0;
/**
* Summiere die Retweets und Favorites der Tripel eines Clusters
* und teile diese Summen durch die Anzahl der Tripel
*/
for (ArrayList<CoordinateTripel> cluster : clusterArray) {
int i = 0;
CoordinateTripel sum = new CoordinateTripel("", 0, 0);
for (CoordinateTripel coordinateTripel : cluster) {
sum = coordinateAddition(sum, coordinateTripel);
i++;
}
/**
* Sonderfall: falls Cluster leer ist, werden die
* Koordinaten des Centers auf 0 gesetzt
*/
if(i == 0){
centers[j] = new CoordinateTripel("", 0, 0);
} else {
centers[j] = coordinateDivision(sum, i);
}
j++;
}
return centers;
}
private int getDifferences(ArrayList<CoordinateTripel>[] tripelArray1, ArrayList<CoordinateTripel>[] tripelArray2) {
int differences = 0;
/**
* Falls die größe zweier Listen am selben Index in den verschiedenen Arrays unterschiedliche
* Länge haben, gibt es schonmal so viele Unterschiede, wie die Differenz beträgt.
* Enthält dann noch die kleinere Liste Elemente, die die größere nicht enthält,
* gibt es pro solchem Element einen Unterschied mehr
*/
for (int i = 0; i < tripelArray1.length; i++){
if(tripelArray1[i].size() <= tripelArray2[i].size()) {
differences = differences + (tripelArray2[i].size() - tripelArray1[i].size());
for (int j = 0; j < tripelArray1[i].size(); j++){
if(!tripelArray2[i].contains(tripelArray1[i].get(j))){
differences++;
}
}
} else {
differences = differences + (tripelArray1[i].size() - tripelArray2[i].size());
for (int j = 0; j < tripelArray2[i].size(); j++){
if(!tripelArray1[i].contains(tripelArray2[i].get(j))){
differences++;
}
}
}
}
return differences;
}
private int getClosestIndex(CoordinateTripel tripel, CoordinateTripel[] clusterCenters) {
double minimumDistance = getDistance(tripel, clusterCenters[0]);
int i = 0;
int k = 0;
/**
* iteriere über das Array der Center und merke dabei den Index
* des Centers mit dem kleinsten Unterschied zum gegebenen Punkt
*/
for (CoordinateTripel clusterCenter : clusterCenters) {
if (getDistance(tripel, clusterCenter) < minimumDistance) {
minimumDistance = getDistance(tripel, clusterCenter);
k = i;
}
i++;
}
return k;
}
private double getDistance(CoordinateTripel tripel1, CoordinateTripel tripel2) {
/**
* Der Unterschied ist die Addition aus der Differenz der Retweets und der Differenz
* der Favorits
*/
double rtSub = Math.abs(tripel1.getRetweetCoordinate() - tripel2.getRetweetCoordinate());
double fvtSub = Math.abs(tripel1.getFavoriteCoordinate() - tripel2.getFavoriteCoordinate());
return rtSub + fvtSub;
}
/**
* Hilfsmethode, die die einzelnen Koordinaten eines Tripels
* durch eine Ganzzahl teilt
*/
private CoordinateTripel coordinateDivision(CoordinateTripel sum, int i) {
double rtDivided = sum.getRetweetCoordinate() / i;
double fvtDivided = sum.getFavoriteCoordinate() / i;
return new CoordinateTripel("", rtDivided, fvtDivided);
}
/**
* Hilfsmethode, die die Koordinaten zweier Tripel aufaddiert
*/
private CoordinateTripel coordinateAddition(CoordinateTripel coordinateTripelA, CoordinateTripel coordinateTripelB) {
double rtAdded = coordinateTripelA.getRetweetCoordinate() + coordinateTripelB.getRetweetCoordinate();
double fvtAdded = coordinateTripelA.getFavoriteCoordinate() + coordinateTripelB.getFavoriteCoordinate();
return new CoordinateTripel("", rtAdded, fvtAdded);
}
}
\ No newline at end of file
import java.util.ArrayList;
public class kMeansMain {
public static void main(String[] args){
/**
* initialisiere k, die Verbidung zur Datenbank, sowie den kMeans-Algorithmus
*/
int k = 5;
DatabaseConnector connector = new DatabaseConnector();
ArrayList<CoordinateTripel> finishedCoordinates = connector.makeCoordinates();
kMeansAlgo algo = new kMeansAlgo(finishedCoordinates, k);
ArrayList<CoordinateTripel>[] finishedClusters = algo.algorithm();
/**
* Ausgabe der Cluster, das letzte Element eines Clusters ist das Center
*/
int i = 1;
for (ArrayList<CoordinateTripel> finishedCluster : finishedClusters) {
CoordinateTripel clustercenter = finishedCluster.get(finishedCluster.size()-1);
finishedCluster.remove(finishedCluster.size()-1);
System.out.println("Cluster #" + i + ":");
System.out.println(" Cluster-Center: RetweetKoordinate " + clustercenter.getRetweetCoordinate() +" FavoriteKoordinate " + clustercenter.getFavoriteCoordinate());
for (CoordinateTripel tripel : finishedCluster) {
System.out.println(" Hashtag: \"" + tripel.getTextCoordinate() + "\"; RetweetKoordinate: " + tripel.getRetweetCoordinate() +"; FavoriteKoordinate: " + tripel.getFavoriteCoordinate());
}
i++;
}
/**
* Schreibe die fertige Cluster OHNE Center in eine CSV
*/
algo.write(finishedClusters);
}
}
Die Idee war ähnlich wie die Übung 3 Aufgabe4 flot zu benutzen um die Graphen darzustellen.
Leider ist es uns nicht gelungen aus unserer Csv Datei Hashtags_Aufgabe5_fertig.csv die nötigen Daten für Javacript vorzubereiten wesegen der folgende Code nur Aufgabe 4 wiederspiegelt die wir aber mit Excell schöner darstellt bekommen haben
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Aufgabe5</title>
</head> <body>
<div id="barchart"
style="width:6000px; height:400px">
</div>
<div id="flot-placeholder" style="width:550px;height:300px;margin:0 auto"></div>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.js"> </script>
<script>
var daten = [[1,"01.Jan"],[2,"02"],[3,"03"],[4,"04"],[5,"05"],[6,"06"],[7,"07"],[8,"08"],[9,"09"],[10,"10"],[11,"11"],[12,"12"],[13,"13"],[14,"14"],[15,"15"],[16,"16"],[17,"17"],[18,"18"],[19,"19"],[20,"20"],[21,"21"],[22,"22"],[23,"23"],[24,"24"],[25,"25"],[26,"26"],[27,"27"],[28,"28"],[29,"29"],[30,"30"],[31,"31"],[32,"01.Feb"],[33,"02"],[34,"03"],[35,"04"],[36,"05"],[37,"06"],[38,"07"],[39,"08"],[40,"09"],[41,"10"],[42,"11"],[43,"12"],[44,"13"],[45,"14"],[46,"15"],[47,"16"],[48,"17"],[49,"18"],[50,"19"],[51,"20"],[52,"21"],[53,"22"],[54,"23"],[55,"24"],[56,"25"],[57,"26"],[58,"27"],[59,"28"],[60,"29"],[61,"01.Maer"],[62,"02"],[63,"03"],[64,"04"],[65,"05"],[66,"06"],[67,"07"],[68,"08"],[69,"09"],[70,"10"],[71,"11"],[72,"12"],[73,"13"],[74,"14"],[75,"15"],[76,"16"],[77,"17"],[78,"18"],[79,"19"],[80,"20"],[81,"21"],[82,"22"],[83,"23"],[84,"24"],[85,"25"],[86,"26"],[87,"27"],[88,"28"],[89,"29"],[90,"30"],[91,"31"],[92,"01.Apr"],[93,"02"],[94,"03"],[95,"04"],[96,"05"],[97,"06"],[98,"07"],[99,"08"],[100,"09"],[101,"10"],[102,"11"],[103,"12"],[104,"13"],[105,"14"],[106,"15"],[107,"16"],[108,"17"],[109,"18"],[110,"19"],[111,"20"],[112,"21"],[113,"22"],[114,"23"],[115,"24"],[116,"25"],[117,"26"],[118,"27"],[119,"28"],[120,"29"],[121,"30"],[122,"01.Mai"],[123,"02"],[124,"03"],[125,"04"],[126,"05"],[127,"06"],[128,"07"],[129,"08"],[130,"09"],[131,"10"],[132,"11"],[133,"12"],[134,"13"],[135,"14"],[136,"15"],[137,"16"],[138,"17"],[139,"18"],[140,"19"],[141,"20"],[142,"21"],[143,"22"],[144,"23"],[145,"24"],[146,"25"],[147,"26"],[148,"27"],[149,"28"],[150,"29"],[151,"30"],[152,"31"],[153,"01.Jun"],[154,"02"],[155,"03"],[156,"04"],[157,"05"],[158,"06"],[159,"07"],[160,"08"],[161,"09"],[162,"10"],[163,"11"],[164,"12"],[165,"13"],[166,"14"],[167,"15"],[168,"16"],[169,"17"],[170,"18"],[171,"19"],[172,"20"],[173,"21"],[174,"22"],[175,"23"],[176,"24"],[177,"25"],[178,"26"],[179,"27"],[180,"28"],[181,"29"],[182,"30"],[183,"01.Jul"],[184,"02"],[185,"03"],[186,"04"],[187,"05"],[188,"06"],[189,"07"],[190,"08"],[191,"09"],[192,"10"],[193,"11"],[194,"12"],[195,"13"],[196,"14"],[197,"15"],[198,"16"],[199,"17"],[200,"18"],[201,"19"],[202,"20"],[203,"21"],[204,"22"],[205,"23"],[206,"24"],[207,"25"],[208,"26"],[209,"27"],[210,"28"],[211,"29"],[212,"30"],[213,"31"],[214,"01.Aug"],[215,"02"],[216,"03"],[217,"04"],[218,"05"],[219,"06"],[220,"07"],[221,"08"],[222,"09"],[223,"10"],[224,"11"],[225,"12"],[226,"13"],[227,"14"],[228,"15"],[229,"16"],[230,"17"],[231,"18"],[232,"19"],[233,"20"],[234,"21"],[235,"22"],[236,"23"],[237,"24"],[238,"25"],[239,"26"],[240,"27"],[241,"28"],[242,"29"],[243,"30"],[244,"31"],[245,"01.Sep"],[246,"02"],[247,"03"],[248,"04"],[249,"05"],[250,"06"],[251,"07"],[252,"08"],[253,"09"],[254,"10"],[255,"11"],[256,"12"],[257,"13"],[258,"14"],[259,"15"],[260,"16"],[261,"17"],[262,"18"],[263,"19"],[264,"20"],[265,"21"],[266,"22"],[267,"23"],[268,"24"],[269,"25"],[270,"26"],[271,"27"],[272,"28"],[273,"29"],[274,"30"],[275,"01.Okt"],[276,"02.Okt"],[277,"03.Okt"],[278,"04.Okt"],[279,"05.Okt"],[280,"06.Okt"],[281,"07.Okt"],[282,"08.Okt"],[283,"09.Okt"],[284,"10.Okt"],[285,"11.Okt"],[286,"12.Okt"],[287,"13.Okt"],[288,"14.Okt"],[289,"15.Okt"],[290,"16.Okt"],[291,"17.Okt"],[292,"18.Okt"],[293,"19.Okt"],[294,"20.Okt"],[295,"21.Okt"],[296,"22.Okt"],[297,"23.Okt"],[298,"24.Okt"],[299,"25.Okt"],[300,"26.Okt"],[301,"27.Okt"],[302,"28.Okt"],[303,"29.Okt"],[304,"30.Okt"],[305,"31.Okt"],[306,"01.Nov"],[307,"02.Nov"],[308,"03.Nov"],[309,"04.Nov"],[310,"05.Nov"],[311,"06.Nov"],[312,"07.Nov"],[313,"08.Nov"],[314,"09.Nov"],[315,"10.Nov"],[316,"11.Nov"],[317,"12.Nov"],[318,"13.Nov"],[319,"14.Nov"],[320,"15.Nov"],[321,"16.Nov"],[322,"17.Nov"],[323,"18.Nov"],[324,"19.Nov"],[325,"20.Nov"],[326,"21.Nov"],[327,"22.Nov"],[328,"23.Nov"],[329,"24.Nov"],[330,"25.Nov"],[331,"26.Nov"],[332,"27.Nov"],[333,"28.Nov"],[334,"29.Nov"],[335,"30.Nov"],[336,"01.Dez"],[337,"02.Dez"],[338,"03.Dez"],[339,"04.Dez"],[340,"05.Dez"],[341,"06.Dez"],[342,"07.Dez"],[343,"08.Dez"],[344,"09.Dez"],[345,"10.Dez"],[346,"11.Dez"],[347,"12.Dez"],[348,"13.Dez"],[349,"14.Dez"],[350,"15.Dez"],[351,"16.Dez"],[352,"17.Dez"],[353,"18.Dez"],[354,"19.Dez"],[355,"20.Dez"],[356,"21.Dez"],[357,"22.Dez"],[358,"23.Dez"],[359,"24.Dez"],[360,"25.Dez"],[361,"26.Dez"],[362,"27.Dez"],[363,"28.Dez"],[364,"29.Dez"],[365,"30.Dez"]];
var aufgabe4 = [[05,1],[06,3],[08,5],[09,1],[11,8],[12,4],[13,15],[14,5],[15,2],[16,2],[17,1],[18,4],[19,5],[20,11],[21,6],[22,23],[23,9],[24,7],[25,22],[26,12],[27,2],[28,10],[29,12],[30,5],[31,4],[01+31,1],[02+31,3],[03+31,6],[04+31,2],[05+31,10],[06+31,7],[07+31,12],[08+31,5],[09+31,11],[10+31,2],[11+31,4],[12+31,4],[13+31,11],[14+31,4],[15+31,3],[16+31,10],[17+31,10],[18+31,6],[19+31,12],[20+31,6],[21+31,3],[22+31,5],[23+31,20],[24+31,5],[25+31,10],[26+31,10],[27+31,7],[28+31,8],[29+31,8],[01+31+29,17],[02+31+29,19],[03+31+29,8],[04+31+29,11],[05+31+29,15],[06+31+29,7],[07+31+29,1],[08+31+29,3],[09+31+29,10],[11+31+29,9],[12+31+29,8],[14+31+29,5],[15+31+29,9],[16+31+29,13],[18+31+29,6],[19+31+29,20],[20+31+29,10],[22+31+29,18],[23+31+29,6],[24+31+29,4],[25+31+29,1],[26+31+29,1],[28+31+29,2],[29+31+29,2],[30+31+29,6],[31+31+29,6],[01+31+29+31,2],[02+31+29+31,7],[03+31+29+31,14],[04+31+29+31,9],[05+31+29+31,9],[08+31+29+31,4],[09+31+29+31,5],[10+31+29+31,4],[11+31+29+31,5],[12+31+29+31,9],[13+31+29+31,2],[14+31+29+31,5],[15+31+29+31,2],[16+31+29+31,11],[17+31+29+31,7],[18+31+29+31,3],[19+31+29+31,25],[20+31+29+31,9],[21+31+29+31,6],[22+31+29+31,8],[23+31+29+31,10],[24+31+29+31,2],[25+31+29+31,6],[26+31+29+31,18],[27+31+29+31,11],[28+31+29+31,3],[29+31+29+31,8],[30+31+29+31,5],[01+31+29+31+30,10],[02+31+29+31+30,9],[03+31+29+31+30,17],[04+31+29+31+30,1],[05+31+29+31+30,4],[06+31+29+31+30,3],[07+31+29+31+30,1],[08+31+29+31+30,2],[09+31+29+31+30,3],[10+31+29+31+30,9],[11+31+29+31+30,6],[12+31+29+31+30,3],[13+31+29+31+30,2],[15+31+29+31+30,2],[16+31+29+31+30,4],[17+31+29+31+30,2],[18+31+29+31+30,9],[19+31+29+31+30,1],[20+31+29+31+30,10],[21+31+29+31+30,3],[22+31+29+31+30,3],[25+31+29+31+30,7],[26+31+29+31+30,6],[27+31+29+31+30,5],[28+31+29+31+30,2],[30+31+29+31+30,3],[31+31+29+31+30,2],[01+31+29+31+30+31,2],[02+31+29+31+30+31,11],[03+31+29+31+30+31,6],[04+31+29+31+30+31,5],[05+31+29+31+30+31,1],[06+31+29+31+30+31,2],[07+31+29+31+30+31,2],[08+31+29+31+30+31,12],[09+31+29+31+30+31,1],[10+31+29+31+30+31,5],[11+31+29+31+30+31,8],[13+31+29+31+30+31,1],[14+31+29+31+30+31,3],[15+31+29+31+30+31,8],[16+31+29+31+30+31,2],[17+31+29+31+30+31,7],[18+31+29+31+30+31,8],[19+31+29+31+30+31,6],[20+31+29+31+30+31,1],[21+31+29+31+30+31,2],[22+31+29+31+30+31,4],[23+31+29+31+30+31,28],[24+31+29+31+30+31,5],[25+31+29+31+30+31,2],[26+31+29+31+30+31,9],[27+31+29+31+30+31,5],[28+31+29+31+30+31,6],[29+31+29+31+30+31,3],[30+31+29+31+30+31,2],[01+31+29+31+30+31+30,7],[02+31+29+31+30+31+30,9],[04+31+29+31+30+31+30,2],[05+31+29+31+30+31+30,2],[07+31+29+31+30+31+30,7],[08+31+29+31+30+31+30,1],[09+31+29+31+30+31+30,2],[11+31+29+31+30+31+30,3],[12+31+29+31+30+31+30,8],[13+31+29+31+30+31+30,9],[14+31+29+31+30+31+30,6],[15+31+29+31+30+31+30,2],[16+31+29+31+30+31+30,5],[18+31+29+31+30+31+30,6],[19+31+29+31+30+31+30,11],[20+31+29+31+30+31+30,17],[21+31+29+31+30+31+30,32],[22+31+29+31+30+31+30,17],[23+31+29+31+30+31+30,9],[25+31+29+31+30+31+30,14],[26+31+29+31+30+31+30,50],[27+31+29+31+30+31+30,21],[28+31+29+31+30+31+30,16],[29+31+29+31+30+31+30,5],[30+31+29+31+30+31+30,9],[31+31+29+31+30+31+30,2],[01+31+29+31+30+31+30+31,6],[02+31+29+31+30+31+30+31,10],[03+31+29+31+30+31+30+31,5],[04+31+29+31+30+31+30+31,4],[05+31+29+31+30+31+30+31,4],[06+31+29+31+30+31+30+31,11],[07+31+29+31+30+31+30+31,5],[08+31+29+31+30+31+30+31,5],[09+31+29+31+30+31+30+31,8],[10+31+29+31+30+31+30+31,5],[11+31+29+31+30+31+30+31,1],[12+31+29+31+30+31+30+31,4],[13+31+29+31+30+31+30+31,3],[15+31+29+31+30+31+30+31,2],[16+31+29+31+30+31+30+31,1],[17+31+29+31+30+31+30+31,12],[18+31+29+31+30+31+30+31,1],[19+31+29+31+30+31+30+31,5],[20+31+29+31+30+31+30+31,7],[22+31+29+31+30+31+30+31,3],[23+31+29+31+30+31+30+31,4],[24+31+29+31+30+31+30+31,8],[25+31+29+31+30+31+30+31,7],[26+31+29+31+30+31+30+31,10],[27+31+29+31+30+31+30+31,6],[28+31+29+31+30+31+30+31,5],[29+31+29+31+30+31+30+31,4],[30+31+29+31+30+31+30+31,4],[31+31+29+31+30+31+30+31,3],[01+31+29+31+30+31+30+31+31,11],[02+31+29+31+30+31+30+31+31,3],[05+31+29+31+30+31+30+31+31,6],[06+31+29+31+30+31+30+31+31,5],[07+31+29+31+30+31+30+31+31,6],[08+31+29+31+30+31+30+31+31,17],[09+31+29+31+30+31+30+31+31,6],[10+31+29+31+30+31+30+31+31,1],[13+31+29+31+30+31+30+31+31,6],[14+31+29+31+30+31+30+31+31,3],[15+31+29+31+30+31+30+31+31,9],[16+31+29+31+30+31+30+31+31,8],[18+31+29+31+30+31+30+31+31,1],[20+31+29+31+30+31+30+31+31,8],[21+31+29+31+30+31+30+31+31,1],[22+31+29+31+30+31+30+31+31,4],[23+31+29+31+30+31+30+31+31,4],[24+31+29+31+30+31+30+31+31,4],[25+31+29+31+30+31+30+31+31,1],[26+31+29+31+30+31+30+31+31,14],[27+31+29+31+30+31+30+31+31,101]];
var hashtags = [["hallo",22],["christian",3]];
function formatdatum(tupel){
return [tupel[1],tupel[0]]
};
function compareHashtag(tupel,string){
if(tupel[0] == string)
{return [tupel[1],1]}
};
function checkArray(array,strings){
var ausgabe = [[3,100]];
for (let i of array){
if(array[i][0] == strings){
}
}
return ausgabe;
};
var datenquelle = [ { data:aufgabe4 , color: "#0066ff" } ];
var optionen2 = { series: { bars: { show:true } }, bars: { align: "center", barWidth: 0.25 }, xaxis: { ticks:daten} }
$(function () {
$.plot($("#barchart"), datenquelle, optionen2 ); });
</script>
</body>
</html>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Metrik</title>
</head> <body>
<!-- START SIGMA IMPORTS -->
<script src="../src/sigma.core.js"></script>
<script src="../src/conrad.js"></script>
<script src="../src/utils/sigma.utils.js"></script>
<script src="../src/utils/sigma.polyfills.js"></script>
<script src="../src/sigma.settings.js"></script>
<script src="../src/classes/sigma.classes.dispatcher.js"></script>
<script src="../src/classes/sigma.classes.configurable.js"></script>
<script src="../src/classes/sigma.classes.graph.js"></script>
<script src="../src/classes/sigma.classes.camera.js"></script>
<script src="../src/classes/sigma.classes.quad.js"></script>
<script src="../src/classes/sigma.classes.edgequad.js"></script>
<script src="../src/captors/sigma.captors.mouse.js"></script>
<script src="../src/captors/sigma.captors.touch.js"></script>
<script src="../src/renderers/sigma.renderers.canvas.js"></script>
<script src="../src/renderers/sigma.renderers.webgl.js"></script>
<script src="../src/renderers/sigma.renderers.svg.js"></script>
<script src="../src/renderers/sigma.renderers.def.js"></script>
<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script>
<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script>
<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script>
<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script>
<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script>
<script src="../src/renderers/svg/sigma.svg.utils.js"></script>
<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script>
<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script>
<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script>
<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script>
<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script>
<script src="../src/middlewares/sigma.middlewares.rescale.js"></script>
<script src="../src/middlewares/sigma.middlewares.copy.js"></script>
<script src="../src/misc/sigma.misc.animation.js"></script>
<script src="../src/misc/sigma.misc.bindEvents.js"></script>
<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script>
<script src="../src/misc/sigma.misc.drawHovers.js"></script>
<!-- END SIGMA IMPORTS -->
<script src="../plugins/sigma.parsers.json/sigma.parsers.json.js"></script>
<div id="container">
<style>
#graph-container {
top: 0;
bottom: 0;
left: 0;
right: 0;
position: absolute;
}
</style>
<div id="graph-container"></div>
</div>
<script>
/**
* Dieses Skript wurde mit dem Beispiel aus der Sigmajs Biblothek gebaut. Wir können eine json Datei importieren die dann zu einem Graphen wird.
*/
sigma.parsers.json('data/convertcsvcluster.json', {
container: 'graph-container'
});
</script>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Netzwerk</title>
</head> <body>
<!-- START SIGMA IMPORTS -->
<script src="../src/sigma.core.js"></script>
<script src="../src/conrad.js"></script>
<script src="../src/utils/sigma.utils.js"></script>
<script src="../src/utils/sigma.polyfills.js"></script>
<script src="../src/sigma.settings.js"></script>
<script src="../src/classes/sigma.classes.dispatcher.js"></script>
<script src="../src/classes/sigma.classes.configurable.js"></script>
<script src="../src/classes/sigma.classes.graph.js"></script>
<script src="../src/classes/sigma.classes.camera.js"></script>
<script src="../src/classes/sigma.classes.quad.js"></script>
<script src="../src/classes/sigma.classes.edgequad.js"></script>
<script src="../src/captors/sigma.captors.mouse.js"></script>
<script src="../src/captors/sigma.captors.touch.js"></script>
<script src="../src/renderers/sigma.renderers.canvas.js"></script>
<script src="../src/renderers/sigma.renderers.webgl.js"></script>
<script src="../src/renderers/sigma.renderers.svg.js"></script>
<script src="../src/renderers/sigma.renderers.def.js"></script>
<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script>
<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script>
<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script>
<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script>
<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script>
<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script>
<script src="../src/renderers/svg/sigma.svg.utils.js"></script>
<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script>
<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script>
<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script>
<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script>
<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script>
<script src="../src/middlewares/sigma.middlewares.rescale.js"></script>
<script src="../src/middlewares/sigma.middlewares.copy.js"></script>
<script src="../src/misc/sigma.misc.animation.js"></script>
<script src="../src/misc/sigma.misc.bindEvents.js"></script>
<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script>
<script src="../src/misc/sigma.misc.drawHovers.js"></script>
<!-- END SIGMA IMPORTS -->
<script src="../plugins/sigma.parsers.json/sigma.parsers.json.js"></script>
<div id="container">
<style>
#graph-container {
top: 0;
bottom: 0;
left: 0;
right: 0;
position: absolute;
}
</style>
<div id="graph-container"></div>
</div>
<script>
/**
* Dieses Skript wurde mit dem Beispiel aus der Sigmajs Biblothek gebaut. Wir können eine json Datei importieren die dann zu einem Graphen wird.
*/
sigma.parsers.json('data/convertcsvclusterTweetedWith.json', {
container: 'graph-container'
});
</script>
</html>
node_modules/*
build/*
*.tgz
*.log
*.swp
.DS_Store
build/*
!build/sigma.require.js
!build/sigma.min.js
!build/plugins/*
test/*
node_modules/*
examples/*
Gruntfile.js
CHANGELOG.md
.travis.yml
.gitignore
*.tgz
*.log
language: node_js
before_script:
- npm install -g grunt-cli
## sigma.js - changelog:
#### 1.2.0 - release (Nov 3, 2016)
- Added the [layout.noverlap](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.layout.noverlap) plugin (thanks to [@apitts](https://github.com/apitts)).
- Added the [renderers.edgeDot](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.renderers.edgeDots) plugin (thanks to [@jotunacorn](https://github.com/jotunacorn)).
- Fixed `sigma.require.js` so that Webpack & node.js can require the library.
- Fixed camera zoom weird behavior on retina displays (thanks to [@robindemourat](https://github.com/robindemourat)).
#### 1.1.0 - release (Feb 17, 2016)
- Added the SVG renderer.
- Added the `minArrowSize` setting (thanks to [@ssidorchick](https://github.com/ssidorchick)).
- Added an edge quadtree and support for edge events (thanks to [@sheymann](https://github.com/sheymann)).
- Fixed [#362](https://github.com/jacomyal/sigma.js/issues/362): Nodes and edges can now have a number id.
- Added the [renderers.snapshot](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.renderers.snapshot) plugin.
- Fixed [#403](https://github.com/jacomyal/sigma.js/issues/403): renderer string container polymorphism.
- Added an event dispatched when instance is killed.
- Added low-level Barnes-Hut optimization to the [layout.forceAltas2](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.layout.forceAtlas2) plugin (thanks to [@jacomyma](https://github.com/jacomyma)).
- Added the `mouseWheelEnabled` setting.
- Added an option to skip quadtree indexation when refreshing an instance.
- Added `defaultEdgeType` and `defaultNodeType` settings.
- Added a `isDragging` flag in click event.
- Added some features to the [layout.forceAltas2](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.layout.forceAtlas2) plugin.
- Fixed resizing related issues.
- Added the [SVG exporter](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.exporters.svg) plugin.
- Fixed some SVG-related bugs (thanks to [@qinfchen](https://github.com/qinfchen)).
- Added the [A*](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.pathfinding.astar) plugin (thanks to [@A----](https://github.com/A----)).
- Changed the `singleHover` setting to default to `true`.
- Added the [cypher](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.parsers.cypher) plugin (thanks to [@sim51](https://github.com/sim51)).
- Added the [parallel edges](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.renderers.parallelEdges) plugin (thanks to [@3ch01c](https://github.com/3ch01c)).
- Added HDPI screens support (thanks to [@mdamien](https://github.com/mdamien)).
- Fixed a ForceAtlas2 bug related to the `ajustSizes` setting (thanks to [@rangeonnicolas](https://github.com/rangeonnicolas)).
- Improved `sigma.webgl.nodes.fast` implementaton.
- Added some alternatives to `sigma.webgl.edges.def`.
- Various optimizations.
#### 1.0.3 - release (August 22, 2014)
- Fixed [#186](https://github.com/jacomyal/sigma.js/issues/186): NPM sigma package
- New helper `sigma.utils.zoomTo` (thanks to [@josemazo](https://github.com/josemazo))
- Fixed [#241](https://github.com/jacomyal/sigma.js/issues/241): Improved canvas renderer
- Fixed [#244](https://github.com/jacomyal/sigma.js/issues/244): (min|max)(Node|Edge)Size as strings or numbers
- Cross available in the customShapes plugin (thanks to [@csweaver](https://github.com/csweaver))
- [Relative size](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.plugins.relativeSize) plugin (thanks to [@tsdaemon](https://github.com/tsdaemon))
- Fixed y positions from sigma.parsers.gexf (thanks to [@totetmatt](https://github.com/totetmatt))
- Fixed lag problem for the dragNodes plugin on Firefox (thanks to [@apitts](https://github.com/apitts))
- Added the `singleHover` settings (thanks to [@patrickmarabeas](https://github.com/patrickmarabeas))
- Improved dragNodes behaviours with several hovered nodes (thanks to [@patrickmarabeas](https://github.com/patrickmarabeas))
- Added self-loops rendering for curved edges (thanks to [@ssidorchick](https://github.com/ssidorchick))
- Updated gexfParser.js version
- [HITS statistics computation](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.statistics.HITS) plugin (thanks to [@mef](https://github.com/mef))
- Fixed [#299](https://github.com/jacomyal/sigma.js/issues/299): Fixed `npm build`
- Fixed [#332](https://github.com/jacomyal/sigma.js/issues/332): Fixed grunt tasks for building plugins
- Fixed [#347](https://github.com/jacomyal/sigma.js/issues/347): Added polymorphism for the autoRescale setting
- Fixed build for Force-Atlas 2 plugin (thanks to [@luca](https://github.com/luca))
- Fixed some typos (thanks to [@Tal-Daniel](https://github.com/Tal-Daniel))
- [Custom edge shapes](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.renderers.customEdgeShapes) plugin (thanks to [@sheymann](https://github.com/sheymann))
- [Filter API](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.plugins.filter) plugin (thanks to [@sheymann](https://github.com/sheymann))
- Right-click support (thanks to [@sheymann](https://github.com/sheymann))
- Event data now always dispatched by sigma.core (thanks to [@sheymann](https://github.com/sheymann))
- Added the `attachBefore` method to `sigma.classes.graph` (thanks to [@sheymann](https://github.com/sheymann))
- Fixed buggy behaviour with the dragNodes plugin when container is offset (thanks to [@Pie21](https://github.com/Pie21))
- Updated NPM dev dependencies
- Fixed a leak in `sigma.classes.graph` (details at [#340](https://github.com/jacomyal/sigma.js/issues/340))
- **WebGL based Force-Atlas 2**
#### 1.0.2 - release (April 2, 2014)
- Added Canvas curved edge renderer
- Fully refactored examples
- Fixed [#211](https://github.com/jacomyal/sigma.js/issues/211): Added default camera getter
- Fixes on ForceAtlas2 API (thanks to [@adkatrit](https://github.com/adkatrit))
- Added Canvas curved arrows edge renderer (thanks to [@ssidorchick](https://github.com/ssidorchick))
- Fixed [#220](https://github.com/jacomyal/sigma.js/issues/220): WebGL edges batch rendering fixed
- Fixed [#175](https://github.com/jacomyal/sigma.js/issues/175): Disable setAutoSettings in ForceAtlas2
- Fixed some minor typos (thanks to [@anirvan](https://github.com/anirvan))
- Added the `sigma.plugins.dragNodes` plugin for the Canvas renderer (thanks to [@josemazo](https://github.com/josemazo))
- Fixed `gjslint.py does not exist` error (thanks to [@jeroencoumans](https://github.com/jeroencoumans))
- Made it easier to build for newbies by not requiring global `grunt-cli` (thanks to [@eins78](https://github.com/eins78))
- Some minor changes on docs and GEXF parser (thanks to [@Yomguithereal](https://github.com/Yomguithereal))
- Added current version number as `sigma.version`
- Fixed [#236](https://github.com/jacomyal/sigma.js/issues/236): Implemented `kill` renderers method
#### 1.0.1 - release (February 26, 2014)
- Custom node shapes and images plug-in (thanks to [@rpeleg1970](https://github.com/rpeleg1970))
- Fixed [#189](https://github.com/jacomyal/sigma.js/issues/189): Added doubleClick events
- Fixed [#183](https://github.com/jacomyal/sigma.js/issues/183): Avoid using `for in` to iterate over arrays (thanks to [@cdevienne](https://github.com/cdevienne))
- Added `http-server` dependency (thanks to [@oncletom](https://github.com/oncletom))
- Minor fix in LICENSE.txt (thanks to [@gdi2290](https://github.com/gdi2290))
- Added `"hidden"` nodes and edges support
- Fixed typo in `sigma.instances` method (thanks to [@juanpastas](https://github.com/juanpastas))
- Fixed ForceAtlas2 stopForceAtlas2 method
- Improved captors
- Plus some minor and various fixes...
#### 1.0.0 - release (January 30, 2014)
- Finalization:
* Closed issues related to the initial version that were not relevant in this new version
* Fixed some bugs in the new version related to both versions
* Added more plugins and code samples, to solve some actual use-cases
* Fixed a lot of bugs for the release
#### 1.0.0 - draft (November 27, 2013)
- Full new version of sigma from scratch, including old features:
* ForceAtlas2 plugin
* GEXF parser
* Canvas renderer
- ...and some new features:
* WebGL renderer
* Touch support
- Also added some unit tests (main classes, core API, ...).
- Architecture fully rewritten
## sigma.js - how to contribute:
As an open-source project that is maintained by people who cannot work on it on a daily basis, contributions are very welcome! But there are some rules to follow, to prevent maintainers to spend too much time on irrelevant or invalid contributions.
#### Opening a ticket
First, here are some basic rules:
- Make sure your bug or question has not been addressed in another ticket yet.
- If your ticket is related to a bug you've met, please add a simple use-case to help the maintainers reproduce the bug.
##### A word about labels
We use three labels to estimate the time a ticket will take us to solve:
- **cake**: This issue will probably take only some minutes to solve.
- **steak**: This issue will probably take around one or two hours to solve.
- **snake**: This issue will probably take more than two hours to solve.
#### Submitting a pull-request
##### What can be submitted
First, sigma has been designed as a tool. Since two network visualization applications will have different features and interactions if they are developed by different people or for different use cases, the potentially needed features are countless.
So, sigma aims to make it possible for developers to implement the features they need for their applications through its API, but should not contain itself these features.
So, basically:
- If your feature can be implemented with sigma, then you can submit it as a plugin, to help other people use it easily.
- If for some reason you needed to modify sigma to implement your feature, you can submit these modifications to improve sigma.
But:
- If you submit new features in sigma that can be developed as plugins, they will probably not be accepted.
##### Some basic rules
If you submit modifications to sigma, please ensure that:
1. the unit tests still pass
2. your code respect JSHint and ClosureLint rules
3. you cleaned your code from commented lines, logs, alerts or other debugging related code.
You can check these rules by running `grunt` in sigma's directory from your command line.
Also, if you submit a plugin, please add an example that shows how the plugins works and what it does.
var fs = require('fs');
module.exports = function(grunt) {
var coreJsFiles = [
// Core:
'src/sigma.core.js',
// Utils:
'src/conrad.js',
'src/utils/sigma.utils.js',
'src/utils/sigma.polyfills.js',
// Main classes:
'src/sigma.settings.js',
'src/classes/sigma.classes.dispatcher.js',
'src/classes/sigma.classes.configurable.js',
'src/classes/sigma.classes.graph.js',
'src/classes/sigma.classes.camera.js',
'src/classes/sigma.classes.quad.js',
'src/classes/sigma.classes.edgequad.js',
// Captors:
'src/captors/sigma.captors.mouse.js',
'src/captors/sigma.captors.touch.js',
// Renderers:
'src/renderers/sigma.renderers.canvas.js',
'src/renderers/sigma.renderers.webgl.js',
'src/renderers/sigma.renderers.svg.js',
'src/renderers/sigma.renderers.def.js',
// Sub functions per engine:
'src/renderers/webgl/sigma.webgl.nodes.def.js',
'src/renderers/webgl/sigma.webgl.nodes.fast.js',
'src/renderers/webgl/sigma.webgl.edges.def.js',
'src/renderers/webgl/sigma.webgl.edges.fast.js',
'src/renderers/webgl/sigma.webgl.edges.arrow.js',
'src/renderers/canvas/sigma.canvas.labels.def.js',
'src/renderers/canvas/sigma.canvas.hovers.def.js',
'src/renderers/canvas/sigma.canvas.nodes.def.js',
'src/renderers/canvas/sigma.canvas.edges.def.js',
'src/renderers/canvas/sigma.canvas.edges.dotCurve.js',
'src/renderers/canvas/sigma.canvas.edges.arrow.js',
'src/renderers/canvas/sigma.canvas.edges.dotCurvedArrow.js',
'src/renderers/canvas/sigma.canvas.edgehovers.def.js',
'src/renderers/canvas/sigma.canvas.edgehovers.curve.js',
'src/renderers/canvas/sigma.canvas.edgehovers.arrow.js',
'src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js',
'src/renderers/canvas/sigma.canvas.extremities.def.js',
'src/renderers/svg/sigma.svg.utils.js',
'src/renderers/svg/sigma.svg.nodes.def.js',
'src/renderers/svg/sigma.svg.edges.def.js',
'src/renderers/svg/sigma.svg.edges.curve.js',
'src/renderers/svg/sigma.svg.labels.def.js',
'src/renderers/svg/sigma.svg.hovers.def.js',
// Middlewares:
'src/middlewares/sigma.middlewares.rescale.js',
'src/middlewares/sigma.middlewares.copy.js',
// Miscellaneous:
'src/misc/sigma.misc.animation.js',
'src/misc/sigma.misc.bindEvents.js',
'src/misc/sigma.misc.bindDOMEvents.js',
'src/misc/sigma.misc.drawHovers.js'
];
var npmJsFiles = coreJsFiles.slice(0);
npmJsFiles.splice(2, 0, 'src/sigma.export.js');
var plugins = [
'exporters.svg',
'layout.forceAtlas2',
'layout.noverlap',
'neo4j.cypher',
'parsers.gexf',
'parsers.json',
'pathfinding.astar',
'plugins.animate',
'plugins.dragNodes',
'plugins.filter',
'plugins.neighborhoods',
'plugins.relativeSize',
'renderers.customEdgeShapes',
'renderers.customShapes',
'renderers.edgeDots',
'renderers.edgeLabels',
'renderers.parallelEdges',
'renderers.snapshot',
'statistics.HITS'
];
var pluginFiles = [],
subGrunts = {};
plugins.forEach(function(p) {
var dir = 'plugins/sigma.' + p + '/';
if (fs.existsSync(dir + 'Gruntfile.js'))
subGrunts[p] = {
gruntfile: dir + 'Gruntfile.js'
};
else
pluginFiles.push(dir + '**/*.js');
});
// Project configuration:
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
grunt: subGrunts,
closureLint: {
app: {
closureLinterPath: '/usr/local/bin',
command: 'gjslint',
src: coreJsFiles,
options: {
stdout: true,
strict: true,
opt: '--disable 6,13'
}
}
},
jshint: {
all: coreJsFiles,
options: {
'-W055': true,
'-W040': true,
'-W064': true
}
},
qunit: {
all: {
options: {
urls: [
'./test/unit.html'
]
}
}
},
uglify: {
prod: {
files: {
'build/sigma.min.js': coreJsFiles
},
options: {
banner: '/* sigma.js - <%= pkg.description %> - Version: <%= pkg.version %> - Author: Alexis Jacomy, Sciences-Po Médialab - License: MIT */\n'
}
},
plugins: {
files: pluginFiles.reduce(function(res, path) {
var dest = 'build/' + path.replace(/\/\*\*\/\*\.js$/, '.min.js');
res[dest] = path;
return res;
}, {})
}
},
concat: {
options: {
separator: '\n'
},
dist: {
src: coreJsFiles,
dest: 'build/sigma.js'
},
require: {
src: npmJsFiles,
dest: 'build/sigma.require.js'
}
},
sed: {
version: {
recursive: true,
path: 'examples/',
pattern: /<!-- START SIGMA IMPORTS -->[\s\S]*<!-- END SIGMA IMPORTS -->/g,
replacement: ['<!-- START SIGMA IMPORTS -->'].concat(coreJsFiles.map(function(path) {
return '<script src="../' + path + '"></script>';
}).concat('<!-- END SIGMA IMPORTS -->')).join('\n')
}
},
zip: {
release: {
dest: 'build/release-v<%= pkg.version %>.zip',
src: [
'README.md',
'build/sigma.min.js',
'build/plugins/*.min.js'
],
router: function(filepath) {
return filepath.replace(/build\//, '');
}
}
}
});
require('load-grunt-tasks')(grunt);
// By default, will check lint, hint, test and minify:
grunt.registerTask('default', ['closureLint', 'jshint', 'qunit', 'sed', 'grunt', 'uglify']);
grunt.registerTask('release', ['closureLint', 'jshint', 'qunit', 'sed', 'grunt', 'uglify', 'zip']);
grunt.registerTask('npmPrePublish', ['uglify:plugins', 'grunt', 'concat:require']);
grunt.registerTask('build', ['uglify', 'grunt', 'concat:require']);
grunt.registerTask('test', ['qunit']);
// For travis-ci.org, only launch tests:
grunt.registerTask('travis', ['qunit']);
};
Copyright (C) 2013-2014, Alexis Jacomy, http://sigmajs.org
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
[![Build Status](https://travis-ci.org/jacomyal/sigma.js.svg)](https://travis-ci.org/jacomyal/sigma.js)
sigma.js - v1.2.0
=================
Sigma is a JavaScript library dedicated to graph drawing, mainly developed by [@jacomyal](https://github.com/jacomyal) and [@Yomguithereal](https://github.com/Yomguithereal).
### Resources
[The website](http://sigmajs.org) provides a global overview of the project, and the documentation is available in the [Github Wiki](https://github.com/jacomyal/sigma.js/wiki).
Also, the `plugins` and `examples` directories contain various use-cases that might help you understand how to use sigma.
### How to use it
To use it, clone the repository:
```
git clone git@github.com:jacomyal/sigma.js.git
```
To build the code:
- Install [Node.js](http://nodejs.org/).
- Install [gjslint](https://developers.google.com/closure/utilities/docs/linter_howto?hl=en).
- Use `npm install` to install sigma development dependencies.
- Use `npm run build` to minify the code with [Uglify](https://github.com/mishoo/UglifyJS). The minified file `sigma.min.js` will then be accessible in the `build/` folder.
Also, you can customize the build by adding or removing files from the `coreJsFiles` array in `Gruntfile.js` before applying the grunt task.
### Contributing
You can contribute by submitting [issues tickets](http://github.com/jacomyal/sigma.js/issues) and proposing [pull requests](http://github.com/jacomyal/sigma.js/pulls). Make sure that tests and linting pass before submitting any pull request by running the command `grunt`.
The whole source code is validated by the [Google Closure Linter](https://developers.google.com/closure/utilities/) and [JSHint](http://www.jshint.com/), and the comments are written in [JSDoc](http://en.wikipedia.org/wiki/JSDoc) (tags description is available [here](https://developers.google.com/closure/compiler/docs/js-for-compiler)).