Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
MetaGer
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
56
Issues
56
List
Boards
Labels
Service Desk
Milestones
Merge Requests
9
Merge Requests
9
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
open-source
MetaGer
Commits
941c7ce4
Commit
941c7ce4
authored
Dec 11, 2017
by
Dominik Hebeler
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '640' into 'MetaGer-Redesign'
640 See merge request
!1114
parents
d8d69b6c
a55ae129
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
537 additions
and
784 deletions
+537
-784
.gitignore
.gitignore
+2
-1
gulpfile.js
gulpfile.js
+2
-2
public/js/searchbar.js
public/js/searchbar.js
+0
-425
public/js/utility.js
public/js/utility.js
+0
-6
resources/assets/js/result-saver.js
resources/assets/js/result-saver.js
+433
-0
resources/assets/js/results.js
resources/assets/js/results.js
+0
-285
resources/assets/js/scriptResultPage.js
resources/assets/js/scriptResultPage.js
+0
-17
resources/assets/js/searchbar.js
resources/assets/js/searchbar.js
+2
-0
resources/assets/less/metager/result-page.less
resources/assets/less/metager/result-page.less
+5
-4
resources/assets/less/metager/result-saver.less
resources/assets/less/metager/result-saver.less
+46
-0
resources/assets/less/metager/result.less
resources/assets/less/metager/result.less
+1
-1
resources/views/layouts/researchandtabs.blade.php
resources/views/layouts/researchandtabs.blade.php
+16
-12
resources/views/layouts/result.blade.php
resources/views/layouts/result.blade.php
+7
-5
resources/views/layouts/resultPage.blade.php
resources/views/layouts/resultPage.blade.php
+1
-1
resources/views/metager3.blade.php
resources/views/metager3.blade.php
+22
-25
No files found.
.gitignore
View file @
941c7ce4
...
...
@@ -11,9 +11,10 @@ langfiles.zip
# The Files created by Gulp in the build process
/public/build
/public/js/lib.js
/public/js/quicktips.js
/public/js/scriptStartPage.js
/public/js/scriptResultPage.js
/public/js/searchbar.js
/public/js/utility.js
/public/css/beitritt.css
/public/css/themes/default.css
/public/css/utility.css
...
...
gulpfile.js
View file @
941c7ce4
...
...
@@ -16,8 +16,8 @@ elixir(function (mix) {
mix
.
less
(
'
metager/beitritt.less
'
,
'
public/css/beitritt.css
'
)
// js
mix
.
scripts
([
'
lib/jquery.js
'
,
'
lib/jquery-ui.min.js
'
,
'
lib/bootstrap.js
'
,
'
lib/lightslider.js
'
,
'
lib/masonry.js
'
,
'
lib/imagesloaded.js
'
,
'
lib/openpgp.min.js
'
,
'
lib/iframeResizer.min.js
'
,
'
lib/md5.js
'
],
'
public/js/lib.js
'
)
mix
.
scripts
([
'
scriptStartPage.js
'
,
'
result
s
.js
'
],
'
public/js/scriptStartPage.js
'
);
mix
.
scripts
([
'
scriptResultPage.js
'
,
'
result
s
.js
'
,
'
quicktips.js
'
],
'
public/js/scriptResultPage.js
'
);
mix
.
scripts
([
'
scriptStartPage.js
'
,
'
result
-saver
.js
'
],
'
public/js/scriptStartPage.js
'
);
mix
.
scripts
([
'
scriptResultPage.js
'
,
'
result
-saver
.js
'
,
'
quicktips.js
'
],
'
public/js/scriptResultPage.js
'
);
mix
.
scripts
([
'
searchbar.js
'
,
'
focus-creator.js
'
],
'
public/js/searchbar.js
'
);
// utility
mix
.
scripts
([
'
utility.js
'
],
'
public/js/utility.js
'
);
...
...
public/js/searchbar.js
deleted
100644 → 0
View file @
d8d69b6c
$
(
function
()
{
loadLocalStorage
();
setSearchbarActionListeners
();
});
/**
* Loads the user theme and stored settings from local storage
*/
function
loadLocalStorage
()
{
if
(
localStorage
)
{
setSettings
();
}
}
function
setSearchbarActionListeners
()
{
$
(
'
#toggleOptBtn
'
).
click
(
toggleOptionsDialog
);
}
function
setSettings
()
{
var
acceptedParams
=
[
'
autocomplete
'
,
'
key
'
,
'
lang
'
,
'
newtab
'
,
'
sprueche
'
];
for
(
var
key
in
localStorage
)
{
var
value
=
localStorage
.
getItem
(
key
);
var
accepted
=
false
;
for
(
var
i
in
acceptedParams
)
{
if
(
key
===
'
param_
'
+
acceptedParams
[
i
])
{
accepted
=
true
;
}
}
if
(
accepted
)
{
key
=
key
.
substring
(
6
);
// Check for existing hidden fields for this key
var
existing
=
$
(
'
.search-hidden input[name="
'
+
key
+
'
"]
'
);
if
(
existing
.
length
===
0
)
{
// if none exist, create a new one
$
(
'
.search-hidden
'
).
append
(
'
<input type="hidden" name="
'
+
key
+
'
" value="
'
+
value
+
'
">
'
);
}
}
}
// Change the request method to the given parameter
var
requestMethod
=
localStorage
.
getItem
(
'
request
'
);
if
(
requestMethod
!==
null
&&
(
requestMethod
===
'
GET
'
||
requestMethod
===
'
POST
'
))
{
$
(
'
#searchForm
'
).
attr
(
'
method
'
,
requestMethod
);
}
}
function
toggleOptionsDialog
()
{
var
btnMode
=
$
(
'
#toggleOptBtn
'
).
attr
(
'
data-mode
'
);
if
(
btnMode
==
'
o
'
)
{
openOptionsDialog
();
}
else
{
closeOptionsDialog
();
}
}
$
(
function
()
{
setFocusCreatorActionListeners
();
loadInitialCustomFocuses
();
loadInitialSelectedFocus
();
focusChanged
();
});
/**
* Sets all action listeners for this page
*/
function
setFocusCreatorActionListeners
()
{
$
(
'
.focusCheckbox
'
).
click
(
checkboxCheckListener
);
$
(
'
#addFocusBtn
'
).
click
(()
=>
showFocusCreateDialog
(
''
));
$
(
'
#editFocusBtn
'
).
click
(
editCurrentFocus
);
$
(
'
.save-focus-btn
'
).
click
(
saveFocus
);
$
(
'
.delete-focus-btn
'
).
click
(
deleteFocus
);
$
(
'
#focus-select
'
).
change
(
focusChanged
);
// Save Focus on clicking enter while in the focus name input
$
(
'
#focus-name
'
).
keyup
(
function
(
event
)
{
if
(
event
.
keyCode
==
13
)
{
saveFocus
();
}
});
$
(
'
#create-focus-modal
'
).
on
(
'
shown.bs.modal
'
,
function
()
{
$
(
'
#focus-name
'
).
focus
();
});
}
/**
* Loads all the custom focuses stored in local storage
*/
function
loadInitialCustomFocuses
()
{
for
(
var
key
in
localStorage
)
{
if
(
key
.
startsWith
(
'
focus_
'
))
{
var
focus
=
loadFocusById
(
key
);
addFocus
(
focus
.
name
);
}
}
}
function
loadInitialSelectedFocus
()
{
setFocus
(
getFocusInUrl
());
}
/**
* Shows the focus create dialog
* If an id is given it will try to load a focus for the given id
*/
function
showFocusCreateDialog
(
id
)
{
if
(
id
===
undefined
)
{
id
=
''
;
}
document
.
getElementById
(
'
original-id
'
).
value
=
id
;
$
(
'
#create-focus-modal
'
).
modal
(
'
show
'
);
var
storedFocus
=
loadFocusById
(
id
);
var
focus
=
{};
// Try to load a focus for the given id
$
(
'
#focus-name
'
).
val
(
''
);
uncheckAll
();
if
(
storedFocus
!==
null
)
{
try
{
focus
=
JSON
.
parse
(
localStorage
.
getItem
(
id
));
$
(
'
#focus-name
'
).
val
(
focus
.
name
);
for
(
var
key
in
focus
)
{
if
(
key
.
startsWith
(
'
engine_
'
))
{
$
(
'
.focusCheckbox[name=
'
+
key
+
'
]
'
).
prop
(
'
checked
'
,
true
);
}
}
}
catch
(
ex
)
{
console
.
error
(
ex
);
}
}
toggleDeleteButton
();
}
/**
* Shows the focus create dialog for a given id
*/
function
showFocusEditDialog
(
id
)
{
showFocusCreateDialog
(
id
);
}
function
getCurrentFocus
()
{
return
document
.
getElementById
(
'
focus-select
'
).
value
;
}
/**
* Shows an edit dialog for the current selected focus
*/
function
editCurrentFocus
()
{
var
currentFocus
=
getCurrentFocus
();
showFocusEditDialog
(
currentFocus
);
}
/**
* Shows/Hides the delete button if (no) checkboxes are selected
*/
function
toggleDeleteButton
()
{
if
(
atLeastOneChecked
())
{
$
(
'
.delete-focus-btn
'
).
show
();
}
else
{
$
(
'
.delete-focus-btn
'
).
hide
();
}
}
/**
* Save the current Focus
* Listens for save button
*/
function
saveFocus
()
{
/* Vorprüfungen */
// Falls keine Suchmaschine ausgewählt wurde
if
(
!
atLeastOneChecked
())
{
switch
(
document
.
documentElement
.
lang
)
{
case
'
en
'
:
alert
(
'
Please select at least 1 search engine.
'
);
break
;
case
'
es
'
:
alert
(
'
Por favor, seleccione al menos un motor de búsqueda.
'
);
break
;
default
:
alert
(
'
Bitte mindestens 1 Suchmaschine auswählen.
'
);
break
;
}
return
;
}
// Falls der Name zu kurz ist oder ungültige Zeichen enthält
var
name
=
document
.
getElementById
(
'
focus-name
'
).
value
;
if
(
!
isValidName
(
name
))
{
switch
(
document
.
documentElement
.
lang
)
{
case
'
en
'
:
alert
(
'
No characters other than a-z, A-Z, 0-9, ä, ö, ü, ß, -, _ allowed, at least 1 character
'
);
break
;
case
'
es
'
:
alert
(
'
Por favor, introduzca un nombre válido
'
);
break
;
default
:
alert
(
'
Bitte gültigen Namen eingeben:
\n
* Keine Sonderzeichen
\n
* Mindestens 1 Buchstabe
\n
'
);
break
;
}
return
;
}
// Liest die original-id des aktuellen fokus-dialogs (gesetzt wenn man einen Fokus bearbeitet)
var
oldId
=
document
.
getElementById
(
'
original-id
'
).
value
;
var
id
=
getIdFromName
(
name
);
var
overwrite
=
true
;
// Wenn bereits ein Fokus mit dem Namen existiert, man diesen aber nicht editiert sondern gerade einen Neuen erstellt
if
(
alreadyInUse
(
name
)
&&
oldId
!==
id
)
{
// Fragt den Nutzer ob er den Fokus überschreiben möchte
if
(
!
confirm
(
'
Name bereits genutzt
\n
überschreiben?
'
))
{
// Falls nicht wird das Speichern abgebrochen
return
;
}
// Ansonsten wird der andere Fokus gelöscht
deleteFocusById
(
id
);
}
/* Fokus speichern */
var
focus
=
{};
// Ausgewählte Suchmaschinen lesen und zu Fokus hinzufügen
$
(
'
input[type=checkbox]:checked
'
).
each
(
function
(
el
)
{
focus
[
$
(
this
).
attr
(
'
name
'
)]
=
$
(
this
).
val
();
});
// Name setzen
focus
[
'
name
'
]
=
name
;
// Alte Version des Fokus löschen (aus localStorage und von der Webseite, falls eine existiert)
if
(
oldId
!==
''
)
{
localStorage
.
removeItem
(
oldId
);
removeFocusById
(
oldId
);
}
// Neue Version des Fokus hinzufügen (zu localStorage und der Webseite)
localStorage
.
setItem
(
id
,
JSON
.
stringify
(
focus
));
addFocus
(
name
);
setFocus
(
id
);
// Fokus-Formular verbergen
$
(
'
#create-focus-modal
'
).
modal
(
'
hide
'
);
}
/**
* Delete current Focus
* Listens for delete button
*/
function
deleteFocusById
(
id
)
{
localStorage
.
removeItem
(
id
);
removeFocusById
(
id
);
$
(
'
#focus-select
'
).
change
();
}
/**
* Delete current Focus
* Listens for delete button
*/
function
deleteFocus
()
{
var
oldId
=
document
.
getElementById
(
'
original-id
'
).
value
;
deleteFocusById
(
oldId
);
$
(
'
#create-focus-modal
'
).
modal
(
'
hide
'
);
$
(
'
#focus-select
'
).
change
();
}
/**
* Is the name valid (in terms of characters)?
*/
function
isValidName
(
name
)
{
// no Characters other then a-z, A-Z, 0-9, ä, ö, ü, ß, -, _ allowed
// at least 1 character
return
/^
[
a-zA-Z0-9äöüß
\-
_
]
+$/
.
test
(
name
);
}
/**
* Is at least one focus selected?
*/
function
atLeastOneChecked
()
{
return
$
(
'
.focusCheckbox:checked
'
).
length
>
0
;
}
/**
* Is there already a focus with this name?
*/
function
alreadyInUse
(
name
)
{
return
localStorage
.
hasOwnProperty
(
getIdFromName
(
name
));
}
/**
* Adds an option to the focus selector
*/
function
addFocus
(
name
)
{
var
id
=
getIdFromName
(
name
);
$
(
'
#focus-select
'
).
append
(
'
<option value="
'
+
id
+
'
" style="font-family: FontAwesome, sans-serif;">
'
+
name
+
'
</option>
'
);
}
/**
* Remove the focuses html-elements
*/
function
removeFocus
(
name
)
{
removeFocusById
(
getIdFromName
(
name
));
}
/**
* Remove the focuses html-elements
*/
function
removeFocusById
(
id
)
{
if
(
id
==
''
)
{
return
;
}
$
(
'
#focus-select option[value="
'
+
id
+
'
"]
'
).
remove
();
}
/**
* Turns a name into an id
* Converts special characters and spaces
*/
function
getIdFromName
(
name
)
{
name
=
name
.
toLowerCase
();
name
=
name
.
split
(
'
'
).
join
(
'
_
'
);
name
=
name
.
split
(
'
ä
'
).
join
(
'
ae
'
);
name
=
name
.
split
(
'
ö
'
).
join
(
'
oe
'
);
name
=
name
.
split
(
'
ü
'
).
join
(
'
ue
'
);
return
'
focus_
'
+
name
;
}
/**
* Loads the focus object for the given id from local storage
*/
function
loadFocusById
(
id
)
{
return
JSON
.
parse
(
localStorage
.
getItem
(
id
));
}
/**
* Unchecks all focuses from the focus creator dialog
*/
function
uncheckAll
()
{
$
(
'
.focusCheckbox
'
).
prop
(
'
checked
'
,
false
);
}
/**
* Sets the selected focus to default
*/
function
setFocusToDefault
()
{
setFocus
(
DEFAULT_FOCUS
);
}
/**
* Sets the selected focus
* @param {String} focusID The id of the focus, without #
*/
function
setFocus
(
focusID
)
{
$
(
'
#focus-select option[value="
'
+
focusID
+
'
"]
'
).
prop
(
'
selected
'
,
true
);
$
(
'
#focus-select
'
).
change
();
}
function
focusChanged
()
{
var
selectedFocus
=
getCurrentFocus
();
if
(
focusIsEditable
(
selectedFocus
))
{
enableEditFocusBtn
();
}
else
{
disableEditFocusBtn
();
}
loadFocusForSearch
(
selectedFocus
);
}
function
focusIsEditable
(
focus
)
{
if
(
focus
.
startsWith
(
'
focus_
'
))
{
return
true
;
}
else
{
return
false
;
}
}
function
enableEditFocusBtn
()
{
$
(
'
#editFocusBtn
'
).
removeClass
(
'
disabled
'
).
click
(
editCurrentFocus
);
}
function
disableEditFocusBtn
()
{
$
(
'
#editFocusBtn
'
).
addClass
(
'
disabled
'
).
off
(
'
click
'
);
}
function
loadFocusForSearch
(
focus
)
{
var
focus
=
loadFocusById
(
focus
);
clearCustomSearch
();
for
(
var
key
in
focus
)
{
if
(
key
.
startsWith
(
'
engine_
'
)
&&
focus
[
key
]
==
'
on
'
)
{
addSumaToCustomSearch
(
key
);
}
}
}
function
clearCustomSearch
()
{
$
(
'
.search-custom-hidden
'
).
empty
();
}
function
addSumaToCustomSearch
(
sumaId
)
{
$
(
'
.search-custom-hidden
'
).
append
(
'
<input type="hidden" name="
'
+
sumaId
+
'
" value="on">
'
);
}
function
getFocusInUrl
()
{
var
url
=
window
.
location
;
var
focReg
=
/focus=
(
focus_
\w
+
)
/
.
exec
(
url
);
if
(
focReg
&&
focReg
[
1
])
{
return
focReg
[
1
];
}
}
function
openOptionsDialog
()
{
$
(
'
#toggleOptBtn
'
).
html
(
'
<i class="fa fa-chevron-up" aria-hidden="true"></i>
'
);
$
(
'
#toggleOptBtn
'
).
attr
(
'
data-mode
'
,
'
c
'
);
$
(
'
.search-option-frame
'
).
removeClass
(
'
hide
'
);
}
function
closeOptionsDialog
()
{
$
(
'
#toggleOptBtn
'
).
html
(
'
<i class="fa fa-sliders" aria-hidden="true"></i>
'
);
$
(
'
#toggleOptBtn
'
).
attr
(
'
data-mode
'
,
'
o
'
);
$
(
'
.search-option-frame
'
).
addClass
(
'
hide
'
);
}
function
checkboxCheckListener
(
event
)
{
toggleDeleteButton
();
var
elem
=
event
.
target
;
if
(
elem
.
name
)
{
if
(
elem
.
checked
)
{
setCheckedForAllWithName
(
elem
.
name
,
true
);
}
else
{
setCheckedForAllWithName
(
elem
.
name
,
false
);
}
}
}
function
setCheckedForAllWithName
(
name
,
checked
)
{
$
(
'
.focusCheckbox[name=
'
+
name
+
'
]
'
).
prop
(
'
checked
'
,
checked
);
}
//# sourceMappingURL=searchbar.js.map
public/js/utility.js
deleted
100644 → 0
View file @
d8d69b6c
$
(
document
).
ready
(
function
()
{
$
(
'
.js-only
'
).
removeClass
(
'
js-only
'
);
$
(
'
.no-js
'
).
addClass
(
'
hide
'
);
});
//# sourceMappingURL=utility.js.map
resources/assets/js/result-saver.js
0 → 100644
View file @
941c7ce4
/**
* All results are stored in the global object 'results'
*/
results
=
new
Results
();
$
(
document
).
ready
(
function
()
{
// Add all saved results
results
.
loadAllResults
();
// Sort all results
results
.
sortResults
();
// Update the visualization
results
.
updateResultPageInterface
();
});
/**
* Load all saved results and sort them
* @param {String} sort The type of sorting function to call for these results
*/
function
Results
()
{
if
(
!
localStorage
)
return
;
this
.
prefix
=
'
result_
'
;
this
.
sort
=
'
chronological
'
;
this
.
results
=
[];
}
/**
* Adds a result to the list of results
* @param {Result} result The result to add
*/
Results
.
prototype
.
addResult
=
function
(
result
)
{
if
(
this
.
results
.
every
(
function
(
val
)
{
return
val
.
hash
!==
result
.
hash
;
}))
{
this
.
results
.
push
(
result
);
}
};
/**
* Sorts all results according to the sort-type given with this.sort
*/
Results
.
prototype
.
sortResults
=
function
()
{
if
(
this
.
sort
===
undefined
)
this
.
sort
=
'
chronological
'
;
switch
(
this
.
sort
)
{
case
'
chronological
'
:
this
.
results
.
sort
(
function
(
a
,
b
)
{
if
(
a
.
added
>
b
.
added
)
return
-
1
;
if
(
a
.
added
<
b
.
added
)
return
1
;
return
0
;
});
break
;
case
'
rank
'
:
this
.
results
.
sort
(
function
(
a
,
b
)
{
if
(
a
.
rank
>
b
.
rank
)
return
-
1
;
if
(
a
.
rank
<
b
.
rank
)
return
1
;
return
0
;
});
break
;
case
'
alphabetical
'
:
// by hostname
this
.
results
.
sort
(
function
(
a
,
b
)
{
if
(
b
.
hostname
>
a
.
hostname
)
return
-
1
;
if
(
b
.
hostname
<
a
.
hostname
)
return
1
;
return
0
;
});
break
;
}
return
this
;
};
/**
* Load all Results from localstorage
*/
Results
.
prototype
.
loadAllResults
=
function
()
{
// Iterate over all keys in the localstorage
for
(
var
i
=
0
;
i
<
localStorage
.
length
;
i
++
)
{
// If the key starts with the prefix used for saved results
var
key
=
localStorage
.
key
(
i
);
if
(
key
.
indexOf
(
this
.
prefix
)
===
0
)
{
// Remove the prefix
key
=
key
.
substr
(
this
.
prefix
.
length
);
// Create the result for this key by loading it from localstorage
var
tmpResult
=
new
Result
(
undefined
,
undefined
,
undefined
,
undefined
,
undefined
,
undefined
,
undefined
,
undefined
,
key
);
// Add the result to the list of results
this
.
results
.
push
(
tmpResult
);
}
}
};
/**
* Delete all results from localstorage
*/
Results
.
prototype
.
deleteAllResults
=
function
()
{
this
.
results
=
[];
var
keys
=
[];
// Save all keys starting with the prefix used for saved results into the keys array
for
(
var
i
=
0
;
i
<
localStorage
.
length
;
i
++
)
{
if
(
localStorage
.
key
(
i
).
indexOf
(
this
.
prefix
)
===
0
)
{
var
key
=
localStorage
.
key
(
i
);
keys
.
push
(
key
);
}
}
// Remove all keys saved in the keys array from localstorage
$
.
each
(
keys
,
function
(
index
,
value
)
{
localStorage
.
removeItem
(
value
);
});
};
/**
* Update the result page to match the available results
*/
Results
.
prototype
.
updateResultPageInterface
=
function
()
{
if
(
this
.
results
.
length
===
0
)
{
// If there are no saved-results left, remove the savedFoki element
$
(
'
#savedFoki
'
).
remove
();
return
;
}
if
(
$
(
'
#savedFoki
'
).
length
===
0
)
{
// If there is no savedFoki element yet, create it
var
tabPanel
=
$
(
'
\
<div id="savedFoki">
\
</div>
\
'
);
$
(
'
#additions-container
'
).
append
(
tabPanel
);
}
else
{
// If there already is a savedFoki element, get it
$
(
'
#savedFoki
'
).
html
(
''
);
var
tabPanel
=
$
(
'
#savedFoki
'
);
}
// Add the full savedFoki element to the tabPanel
this
.
addToContainer
(
tabPanel
);
};
/**
* Create the savedFoki element and all of its content,
* including the saver-options element and all saved results available
* @param {HTML-Element} container The element to add the saved-results to
*/
Results
.
prototype
.
addToContainer
=
function
(
container
)
{
// Create the saver-options element, which is a bar containing
// options for filtering, sorting and deleting all results
var
options
=
$
(
'
\
<div id="saver-options">
\
<div class="saver-option saver-option-filter">
\
<input class="form-control" type="text" placeholder=" Filtern">
\
</div>
\
<div class="saver-option saver-option-sort">
\
<select class="form-control" style="font-family: FontAwesome, sans-serif;">
\
<option value="chronological" style="font-family: FontAwesome, sans-serif;"> Chronologisch</option>
\
<option value="rank" style="font-family: FontAwesome, sans-serif;"> MetaGer-Ranking</option>
\
<option value="alphabetical" style="font-family: FontAwesome, sans-serif;"> Alphabetisch (Hostname)</option>
\
</select>
\
</div>
\
<div class="saver-option saver-option-delete">
\
<button class="btn btn-danger btn-md" id="saver-options-delete-btn">
\
<i class="fa fa-trash-o" aria-hidden="true"></i>
\
<span class="hidden-xs">Ergebnisse</span> löschen</button>
\
</div>
\
</div>
\
'
);
// Set the initial value for the sorting select, based on this.sort
$
(
options
).
find
(
'
select
'
).
val
(
this
.
sort
);
// Add the saver-options element to the given container
$
(
container
).
append
(
options
);
/* ~~~ Filter ~~~ */
// When the user is done typing into the filter input field,
// Filter all results, only showing ones that contain the filer
$
(
options
).
find
(
'
input
'
).
keyup
(
function
()
{
// Get the entered filter
var
search
=
$
(
this
).
val
();
// Hide all results that do not contain the entered filter
$
(
'
#savedFoki .saved-result-content
'
).
each
(
function
(
index
,
value
)
{
// check for filter in all of the elements html-content
var
html
=
$
(
this
).
html
();