Merge branch 'master' into fix/URL-migrations

This commit is contained in:
Kalila L 2020-09-23 18:56:50 -04:00
commit a50918b723
46 changed files with 148157 additions and 1002 deletions

View file

@ -148,7 +148,7 @@ Windows.ScrollingWindow {
}
function canAddToWorld(path) {
var supportedExtensions = [/\.fbx\b/i, /\.obj\b/i, /\.jpg\b/i, /\.png\b/i, /\.gltf\b/i];
var supportedExtensions = [/\.fbx\b/i, /\.obj\b/i, /\.jpg\b/i, /\.png\b/i, /\.gltf\b/i, /\.glb\b/i];
if (selectedItemCount > 1) {
return false;

View file

@ -148,7 +148,7 @@ Rectangle {
}
function canAddToWorld(path) {
var supportedExtensions = [/\.fbx\b/i, /\.obj\b/i, /\.jpg\b/i, /\.png\b/i, /\.gltf\b/i];
var supportedExtensions = [/\.fbx\b/i, /\.obj\b/i, /\.jpg\b/i, /\.png\b/i, /\.gltf\b/i, /\.glb\b/i];
if (selectedItemCount > 1) {
return false;

View file

@ -7,7 +7,7 @@ logfile_maxbytes=0
pidfile=/var/run/supervisord.pid
[program:domain-server]
command=/opt/vircadia/domain-server
command=/opt/vircadia/domain-server --get-temp-name
autorestart=unexpected
directory=/opt/vircadia

View file

@ -160,7 +160,7 @@
return elContent;
}
// For any URLs present, unless they are already identified within
// an `a` element, linkify them.
function _linkifyUrls(matches, $el) {
@ -181,47 +181,53 @@
case ext == "JPG":
case ext == "GIF":
case ext == "JPEG":
elContent = elContent.replace(this, "<br/><img src='" + this
+ "'class=\"responsive z-depth-2\"><br/><a href=\"javascript:gotoClipboard('" + this + "');\" target='_blank'>" + this
+ "</a><a onclick=\"gotoExternalURL('" + this
+ "');return false;\"href=\"" + this
+ "\">&#x1F4F2;</a>");
var replaceWith = "<br/>";
replaceWith += "<img src='" + this + "'class=\"responsive z-depth-2\"><br/>";
replaceWith += "<a onclick=\"gotoClipboard('" + this + "');return false;\" href=\"" + this + "\" target=\"_blank\">" + this + "</a>";
replaceWith += "<a onclick=\"gotoExternalURL('" + this + "');return false;\"href=\"" + this + "\">&#x1F4F2;</a>";
elContent = elContent.replace(this, replaceWith);
break;
case ext == "iframe":
elContent = elContent.replace(this, "<br/><iframe class=\"z-depth-2\" src='" + this
+ "'width=\"440\" height=\"248\" frameborder=\"0\"></iframe>");
var replaceWith = "<br/>";
replaceWith += "<iframe class=\"z-depth-2\" src='" + this;
replaceWith += "'width=\"440\" height=\"248\" frameborder=\"0\"></iframe>";
elContent = elContent.replace(this, replaceWith);
break;
case ext == "webm":
elContent = elContent.replace(this, "<br/><video controls class=\"z-depth-2 responsive\"><source src='" + this
+ "' type='video/" + ext + "'></video><br/><a href=\"javascript:gotoClipboard('" + this
+ "');\">" + this
+ "</a><a onclick=\"gotoExternalURL('" + this
+ "');return false;\"href=\"" + this
+ "\">&#x1F4F2;</a>");
var replaceWith = "<br/>";
replaceWith += "<video controls class=\"z-depth-2 responsive\"><source src='" + this;
replaceWith += "' type='video/" + ext + "'></video>";
replaceWith += "<br/>";
replaceWith += "<a onclick=\"gotoClipboard('" + this + "');return false;\" href=\"" + this + "\">" + this + "</a>";
replaceWith += "<a onclick=\"gotoExternalURL('" + this + "');return false;\"href=\"" + this + "\">&#x1F4F2;</a>";
elContent = elContent.replace(this, replaceWith);
break;
case protocol === "HIFI":
case protocol === "hifi":
elContent = elContent.replace(this, "<br/><a href=\"javascript:gotoHiFi('" + this + "');\">" + this + "</a>");
break;
case !!this.match(/(https?:\/\/)?(www\.)?(youtube\.com\/watch\?v=|youtu\.be\/)([^& \n<]+)(?:[^ \n<]+)?/g):
case !!this.match(/(https?:\/\/)?(www\.)?(youtube\.com\/watch\?v=|youtu\.be\/)([^& \n<]+)(?:[^ \n<]+)?/g):
var youtubeMatch = this.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/);
if (youtubeMatch && youtubeMatch[2].length == 11) {
elContent = "<br/><iframe class=\"z-depth-2\" width='420' height='236' src='https://www.youtube.com/embed/" + youtubeMatch[2]
+ "' frameborder='0'></iframe><br/><a href=\"javascript:gotoURL('" + this
+ "');\">" + this
+ "</a><a onclick=\"gotoExternalURL('" + this
+ "');return false;\"href=\"" + this
+ "\">&#x1F4F2;</a>";
var replaceWith = "<br/>";
replaceWith += "<iframe class=\"z-depth-2\" width='420' height='236' src='https://www.youtube.com/embed/" + youtubeMatch[2] + "' frameborder='0'></iframe>";
replaceWith += "<br/>";
replaceWith += "<a onclick=\"gotoExternalURL('" + this + "');return false;\" href=\"" + this + "\">" + this + "</a>";
replaceWith += "<a onclick=\"gotoExternalURL('" + this + "');return false;\" href=\"" + this + "\">&#x1F4F2;</a>";
elContent = replaceWith;
break;
}
// else fall through to default
default:
elContent = elContent.replace(this, "<br/><a onclick=\"gotoURL('" + this
+ "');return false;\" href=\"" + this
+ "\">" + this
+ "</a><a onclick=\"gotoExternalURL('" + this
+ "');return false;\"href=\"" + this
+ "\">&#x1F4F2;</a>");
var replaceWith = "<br/>";
replaceWith += "<a onclick=\"gotoURL('" + this + "');return false;\" href=\"" + this + "\">" + this + "</a>";
replaceWith += "<a onclick=\"gotoExternalURL('" + this + "');return false;\"href=\"" + this + "\">&#x1F4F2;</a>";
elContent = elContent.replace(this, replaceWith);
break;
}

View file

@ -1,178 +0,0 @@
<!--
// addLocation.html
//
// Created by Darlingnotin in 2019.
// Copyright 2019 Darlingnotin
//
// Distributed under the ISC license.
// See the accompanying file LICENSE or https://opensource.org/licenses/ISC
-->
<!DOCTYPE html>
<html>
<head>
<title>Explore</title>
<link href="bootstrap.min.css" rel="stylesheet">
<style>
.myButton {
box-shadow: 3px 4px 0px 0px #899599;
background: linear-gradient(to bottom, #ededed 5%, #bab1ba 100%);
background-color: #ededed;
border-radius: 15px;
border: 1px solid #d6bcd6;
display: inline-block;
cursor: pointer;
color: #3a8a9e;
font-family: Arial;
font-size: 17px;
padding: 2px 19px;
text-decoration: none;
text-shadow: 0px 1px 0px #e1e2ed;
}
.myButton:hover {
background: linear-gradient(to bottom, #bab1ba 5%, #ededed 100%);
background-color: #bab1ba;
}
.myButton:active {
position: relative;
top: 1px;
}
.myButtonB {
box-shadow: 3px 4px 0px 0px #899599;
background: linear-gradient(to bottom, #ededed 5%, #bab1ba 100%);
background-color: #ededed;
border-radius: 15px;
border: 1px solid #d6bcd6;
display: inline-block;
cursor: pointer;
color: #3a8a9e;
font-family: Arial;
font-size: 17px;
padding: 2px 19px;
text-decoration: none;
text-shadow: 0px 1px 0px #e1e2ed;
position: absolute;
right: 0;
}
.myButtonB:hover {
background: linear-gradient(to bottom, #bab1ba 5%, #ededed 100%);
background-color: #bab1ba;
}
.myButtonB:active {
position: relative;
top: 1px;
}
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td,
th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #EFEFEF;
}
input[type=text],
select {
width: 450px;
padding: 12px 20px;
margin: 8px 0;
display: inline-block;
border: 1px solid #dddddd;
border-radius: 4px;
box-sizing: border-box;
}
</style>
</head>
<body onload="retrieveInformation()">
<h1>Add Location</h1><br>
<h3>Location List Provider URL</h3>
<select id="javascriptURL">
</select>
<h3>Domain Name</h3>
<input type="text" id="domainName" placeholder="Enter Domain Name here">
<h3>Owner</h3>
<input type="text" id="owner" placeholder="Enter Owner here">
<h3>Port</h3>
<input type="text" id="port" placeholder="Enter Port here (default 40102)"><br><br>
<button class="myButton" onclick="addLocation()">Add</button>
<script>
var retrievePortInformationResponse;
var metaverseProviderList = [];
function retrieveInformation() {
var readyEvent = {
"action": "retrievePortInformation",
};
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
}
function addToSelect() {
for (let i = 0; i < metaverseProviderList.length; i++) {
var x = document.getElementById("javascriptURL");
var option = document.createElement("option");
option.text = metaverseProviderList[i];
x.add(option);
}
}
function addLocation() {
var domainName = document.getElementById("domainName").value;
if (domainName == "") {
domainName = "Enter domain name";
}
var owner = document.getElementById("owner").value;
if (owner == "") {
owner = "Enter owner of domain";
}
var port = document.getElementById("port").value;
var javascriptURL = document.getElementById("javascriptURL").value;
if (port == "") {
port = 40102;
}
var readyEvent = {
"action": "addLocation",
"domainName": domainName,
"owner": owner,
"Port": port,
"script": javascriptURL
};
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
}
EventBridge.scriptEventReceived.connect(function (message) {
var messageData = JSON.parse(message);
if (messageData.action == "retrievePortInformationResponse") {
retrievePortInformationResponse = messageData.goToAddresses;
for (let i = 0; i < retrievePortInformationResponse.length; i++) {
metaverseProvider = retrievePortInformationResponse[i].split("/")[2].split(":")[0];
metaverseProviderList[metaverseProviderList.length] = "https://" + metaverseProvider + "/interim/d-goto/app/decentralizedGoToServerScript.js";
}
addToSelect();
}
});
</script>
</bodyonload="retrieveAddressList()">
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,59 +1,3 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 50 50"
style="enable-background:new 0 0 50 50;"
xml:space="preserve"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="explore-a.svg"><metadata
id="metadata18"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs16" /><sodipodi:namedview
pagecolor="#ff0000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1062"
inkscape:window-height="481"
id="namedview14"
showgrid="false"
inkscape:zoom="4.72"
inkscape:cx="29.375221"
inkscape:cy="25"
inkscape:window-x="759"
inkscape:window-y="32"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" /><style
type="text/css"
id="style3">
.st0{fill:#FFFFFF;}
</style><g
id="Layer_2" /><g
style="display:inline;fill:#aaccff;stroke:#000000"
id="g5138"
transform="matrix(0.09456523,0,0,0.09456523,5.5165215,5.1539559)"><path
id="path5124"
d="m 209,15 a 195,195 0 1 0 2,0 z"
inkscape:connector-curvature="0"
style="fill:#aaccff;stroke-width:26" /><path
id="path5126"
d="M 210,15 V 405 M 405,210 H 15 M 59,90 a 260,260 0 0 0 302,0 m 0,240 A 260,260 0 0 0 59,330 M 195,20 a 250,250 0 0 0 0,382 m 30,0 a 250,250 0 0 0 0,-382"
inkscape:connector-curvature="0"
style="fill:#aaccff;stroke-width:18" /></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24">
<path d="M17.9,17.39C17.64,16.59 16.89,16 16,16H15V13A1,1 0 0,0 14,12H8V10H10A1,1 0 0,0 11,9V7H13A2,2 0 0,0 15,5V4.59C17.93,5.77 20,8.64 20,12C20,14.08 19.2,15.97 17.9,17.39M11,19.93C7.05,19.44 4,16.08 4,12C4,11.38 4.08,10.78 4.21,10.21L9,15V16A2,2 0 0,0 11,18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" />
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 437 B

View file

@ -1,59 +1,3 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 50 50"
style="enable-background:new 0 0 50 50;"
xml:space="preserve"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="explore-a.svg"><metadata
id="metadata18"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs16" /><sodipodi:namedview
pagecolor="#ff0000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1062"
inkscape:window-height="481"
id="namedview14"
showgrid="false"
inkscape:zoom="4.72"
inkscape:cx="29.375221"
inkscape:cy="25"
inkscape:window-x="759"
inkscape:window-y="32"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" /><style
type="text/css"
id="style3">
.st0{fill:#FFFFFF;}
</style><g
id="Layer_2" /><g
style="display:inline;fill:#aaccff;stroke:#FFFFFF"
id="g5138"
transform="matrix(0.09456523,0,0,0.09456523,5.5165215,5.1539559)"><path
id="path5124"
d="m 209,15 a 195,195 0 1 0 2,0 z"
inkscape:connector-curvature="0"
style="fill:#aaccff;stroke-width:26" /><path
id="path5126"
d="M 210,15 V 405 M 405,210 H 15 M 59,90 a 260,260 0 0 0 302,0 m 0,240 A 260,260 0 0 0 59,330 M 195,20 a 250,250 0 0 0 0,382 m 30,0 a 250,250 0 0 0 0,-382"
inkscape:connector-curvature="0"
style="fill:#aaccff;stroke-width:18" /></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24">
<path fill="#ffffff" d="M17.9,17.39C17.64,16.59 16.89,16 16,16H15V13A1,1 0 0,0 14,12H8V10H10A1,1 0 0,0 11,9V7H13A2,2 0 0,0 15,5V4.59C17.93,5.77 20,8.64 20,12C20,14.08 19.2,15.97 17.9,17.39M11,19.93C7.05,19.44 4,16.08 4,12C4,11.38 4.08,10.78 4.21,10.21L9,15V16A2,2 0 0,0 11,18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" />
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 451 B

View file

@ -1,212 +1,568 @@
<!--
// explore.html
//
// Created by Darlingnotin in 2019.
// Copyright 2019 Darlingnotin
//
// Distributed under the ISC license.
// See the accompanying file LICENSE or https://opensource.org/licenses/ISC
-->
<!DOCTYPE html>
<html>
<head>
<title>Explore</title>
<link href="bootstrap.min.css" rel="stylesheet">
<link href="../libraries/materialdesignicons/css/materialdesignicons.min.css" rel="stylesheet" />
<link href="../libraries/vuetify/vuetify-v2.3.9.min.css" rel="stylesheet" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">
<style>
.myButton {
box-shadow: 3px 4px 0px 0px #899599;
background: linear-gradient(to bottom, #ededed 5%, #bab1ba 100%);
background-color: #ededed;
border-radius: 15px;
border: 1px solid #d6bcd6;
display: inline-block;
cursor: pointer;
color: #3a8a9e;
font-family: Arial;
font-size: 17px;
padding: 2px 19px;
text-decoration: none;
text-shadow: 0px 1px 0px #e1e2ed;
html {
overflow: hidden;
background: black;
}
.myButton:hover {
background: linear-gradient(to bottom, #bab1ba 5%, #ededed 100%);
background-color: #bab1ba;
}
.myButton:active {
position: relative;
top: 1px;
}
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td,
th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #EFEFEF;
}
input[type=text],
select {
width: 100%;
padding: 12px 20px;
margin: 8px 0;
display: inline-block;
border: 1px solid #dddddd;
border-radius: 4px;
box-sizing: border-box;
#component-templates {
display: none;
}
</style>
<!--<script src="js/TestEventBridge.js"></script>-->
</head>
<body>
<div id="component-templates">
<div id="add-location-template">
<v-dialog v-model="dialog" fullscreen hide-overlay transition="dialog-bottom-transition">
<template v-slot:activator="{ on, attrs }">
<v-btn color="grey darken-3" class="ml-5" v-show="permission" value="animations" v-bind="attrs" v-on="on" fab small>
<v-icon color="purple">mdi-map-plus</v-icon>
</v-btn>
</template>
<v-card>
<v-toolbar dark color="purple">
<v-btn icon dark @click="closeDialog();">
<v-icon>mdi-close</v-icon>
</v-btn>
<v-toolbar-title>Add Location</v-toolbar-title>
<v-spacer></v-spacer>
<v-toolbar-items>
<v-btn dark text @click="addLocation()">Save</v-btn>
</v-toolbar-items>
</v-toolbar>
<v-card-text>
<v-container>
<v-form ref="form"
v-model="valid"
lazy-validation>
<v-row>
<v-col cols="12" sm="6" md="4">
<v-text-field v-model="domainName" :rules="domainNameRules" label="Domain Display Name *" required hint="This is the name that shows on the listing" persistent-hint></v-text-field>
</v-col>
<v-col cols="12" sm="6" md="4">
<v-text-field v-model="owner" :rules="ownerRules" label="Owner *" hint="Owner name to show in listing" required persistent-hint></v-text-field>
</v-col>
<v-col cols="12">
<v-text-field v-model="port" :rules="portRules" label="Port *" hint="Domain server port number (default 40102)" required persistent-hint></v-text-field>
</v-col>
<v-col cols="12">
<v-select v-model="locationProvider" :rules="locationProviderRules" :items="locationProviders"
label="Location Provider *" required persistent-hint hint="The location provider to use when adding domain."></v-select>
</v-col>
</v-row>
</v-form>
</v-container>
<small>*indicates required field</small>
</v-card-text>
<v-card-text>
When you add a location, you are actually creating a location beacon wherever you are currently standing. By default this will show up as a red cube.
If you need to amend the details of your listing at a later date, simply open the Create app in your domain, find the entity with the name "Explore Marker (Your domain name)"
and modify its userData values.
You can also hide the marker easily by toggling the entity's visibility. It will still function when hidden.
</v-card-text>
</v-card>
</v-dialog>
</div>
<div id="add-bookmark-template"></div>
<div id="explore-template">
<div>
<v-container fluid class="pa-0">
<v-data-iterator :items="items"
:items-per-page.sync="itemsPerPage"
:page.sync="page"
:search="visit"
:sort-by="sortBy"
:sort-desc="sortDesc"
:loading="loading"
@page-count="pageCount = $event"
hide-default-footer>
<template v-slot:header>
<v-row dense>
<v-text-field v-model="visit" clearable
flat
solo-inverted
hide-details
label="Visit"
class="pb-3"
append-icon="mdi-location-enter"
v-on:keyup.enter="visitIconCallback"
@click:append="visitIconCallback">
<body onload="retrieveAddressList()">
</v-text-field>
</v-row>
</template>
<h3>Explore</h3>
<button class="myButton" onclick="navigateBack()">< Back</button>
<button class="myButton" onclick="navigateHome()">Home</button>
<button class="myButton" onclick="navigateForward()">Forward ></button>
<template v-slot:default="props">
<v-row dense>
<v-col v-for="item in props.items"
:key="item.name"
cols="12"
sm="6"
md="4"
lg="3">
<v-hover
v-slot:default="{ hover }"
>
<v-card
@click.native="openLocation(item['Visit'])"
:color="hover ? 'grey darken-3' : 'grey darken-4'"
>
<!--<v-card-title class="headline">{{ item["Domain Name"] }}</v-card-title>-->
<div class="d-flex flex-no-wrap justify-space-between">
<div>
<v-card-title class="text-h6 d-block text-truncate pa-2" v-text="item['Domain Name']" style="max-width: 400px;"></v-card-title>
<v-card-subtitle class="pa-2 d-block text-truncate" style="max-width: 400px;" v-text="item.Owner"></v-card-subtitle>
</div>
<div style="text-align: right;">
<v-card-title align-right class="align-right" v-text="item['People']"></v-card-title>
</div>
</div>
</v-card>
</hover>
</v-col>
</v-row>
</template>
<input type="text" id="domainAddressInput" placeholder="Type domain address here">
<template v-slot:footer>
<v-footer absolute dense class="font-weight-medium " color="black">
<v-col class="text-center pa-0"
cols="12">
<v-pagination v-model="page"
color="purple"
:total-visible="8"
:length="pageCount"
prev-icon="mdi-menu-left"
next-icon="mdi-menu-right"></v-pagination>
</v-col>
<button class="myButton" onclick="myDomainAddressInputGoTo()">Visit</button>
<p id="showData"></p>
</v-footer>
</template>
</v-data-iterator>
</v-container>
</div>
</div>
<div id="bookmarks-template">
<div>
<v-container fluid class="pa-0">
<v-data-iterator :items="items"
:items-per-page.sync="itemsPerPage"
:page.sync="page"
:search="search"
:sort-by="sortBy"
:sort-desc="sortDesc"
:loading="loading"
@page-count="pageCount = $event"
hide-default-footer>
<template v-slot:header>
<v-row dense>
<v-col cols="12"
sm="6"
md="4"
lg="3">
<v-text-field v-model="search"
clearable
flat
solo-inverted
hide-details
label="Search"
class="pb-3"></v-text-field>
</v-col>
</v-row>
</template>
<p id="addLocation"></p>
<template v-slot:default="props">
<v-row dense>
<v-col v-for="item in props.items"
:key="item.name"
cols="12"
sm="6"
md="4"
lg="3">
<v-card hover @click.native="openLocation(item['location'])">
<div class="d-flex flex-no-wrap justify-space-between">
<div>
<v-card-title class="text-h6 d-block text-truncate pa-2" v-text="item['name']" style="max-width: 400px;"></v-card-title>
</div>
</div>
</v-card>
</v-col>
</v-row>
</template>
<template v-slot:footer>
<v-footer absolute dense class="font-weight-medium " color="black">
<v-col class="text-center pa-0"
cols="12">
<v-pagination v-model="page"
color="purple"
:total-visible="8"
:length="pageCount"
prev-icon="mdi-menu-left"
next-icon="mdi-menu-right"></v-pagination>
</v-col>
</v-footer>
</template>
</v-data-iterator>
</v-container>
</div>
</div>
<div id="events-template">
<div>events from template</div>
</div>
<div id="settings-template">
<div>settings from template</div>
</div>
</div>
<div id="app">
<v-app>
<div>
<v-app-bar dense>
<v-toolbar-title>Explore</v-toolbar-title>
<v-spacer></v-spacer>
<v-tooltip bottom>
<template v-slot:activator="{ on, attrs }">
<v-btn v-bind="attrs" v-on="on" color="grey darken-3" class="mx-1" v-show="isHomeSet" value="animations" fab small @click="navigateHome()">
<v-icon color="purple">mdi-home</v-icon>
</v-btn>
</template>
<span>Go Home</span>
</v-tooltip>
<v-tooltip bottom>
<template v-slot:activator="{ on, attrs }">
<v-btn v-bind="attrs" v-on="on" color="grey darken-3" class="mx-1" value="animations" fab small @click="navigateBack()">
<v-icon color="purple">mdi-arrow-left-bold</v-icon>
</v-btn>
</template>
<span>Go Back</span>
</v-tooltip>
<v-tooltip bottom>
<template v-slot:activator="{ on, attrs }">
<v-btn v-bind="attrs" v-on="on" color="grey darken-3" class="mx-1" value="animations" fab small @click="navigateForward()">
<v-icon color="purple">mdi-arrow-right-bold</v-icon>
</v-btn>
</template>
<span>Go Forward</span>
</v-tooltip>
<!--<v-btn value="animations" fab small>
<v-icon color="purple">mdi-map-marker-plus</v-icon>
</v-btn>-->
<add-location ref="addLocation" :permission="permission"></add-location>
</v-app-bar>
</div>
<v-main>
<v-container>
<router-view></router-view>
</v-container>
</v-main>
<v-bottom-navigation grow color="purple lighten-1" shift v-model="activeItem">
<v-btn value="explore" :to="{ path: '/'}">
<span>Explore</span>
<v-icon>mdi-map-search-outline</v-icon>
</v-btn>
<!--<v-btn value="bookmarks" :to="{ path: '/bookmarks'}">
<span>Bookmarks</span>
<v-icon>mdi-map-marker</v-icon>
</v-btn>-->
<!--<v-btn value="events" :to="{ path: '/events'}" >
<span>Events</span>
<v-icon>mdi-calendar-month</v-icon>
</v-btn>-->
<!--<v-btn value="settings" :to="{ path: '/settings'}">
<span>Settings</span>
<v-icon>mdi-cog</v-icon>
</v-btn>-->
</v-bottom-navigation>
</v-app>
</div>
<script src="../libraries/vue/vue.min.js"></script>
<script src="../libraries/vue-router/vue-router.js"></script>
<script src="../libraries/vuetify/vuetify-v2.3.9.js"></script>
<script>
var exploreComponent = null;
var locationData = null;
function getAddressListData(component) {
exploreComponent = component;
function myDomainAddressInputGoTo() {
var vircadiaUrl = document.getElementById("domainAddressInput").value;
if (vircadiaUrl !== "") {
var readyEvent = {
"action": "goToUrl",
"visit": vircadiaUrl,
};
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
if (locationData != null) {
exploreComponent.updateData(locationData);
return;
}
}
function navigateBack() {
var readyEvent = {
"action": "navigateBack"
}
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
}
function navigateHome() {
var readyEvent = {
"action": "navigateHome"
}
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
}
function navigateForward() {
var readyEvent = {
"action": "navigateForward"
}
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
}
function navigateTo(url) {
var readyEvent = {
"action": "goToUrl",
"visit": url,
};
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
}
function retrieveAddressList() {
var readyEvent = {
"action": "requestAddressList",
};
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
}
EventBridge.scriptEventReceived.connect(function (message) {
var messageData = JSON.parse(message);
if (messageData.action == "addressList") {
myAddress = messageData.myAddress;
createTableFromJSON();
if (messageData.permission) {
document.getElementById("addLocation").innerHTML = "<button class=\"myButton\" onclick=\"window.location.href = 'addLocation.html';\">Add Location To Explore</button>";
var bookmarksComponent = null;
var bookmarksData = null;
function getBookmarkListData(component) {
bookmarksComponent = component;
if (bookmarksData != null) {
bookmarksComponent.updateData(bookmarksData);
return;
}
var readyEvent = {
"action": "requestBookmarksList",
};
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
}
var addLocationComponent = null;
var addLocationData = null;
function getAddLocationData(component) {
addLocationComponent = component;
if (addLocationData != null) {
addLocationComponent.updateData(addLocationData);
return;
}
var readyEvent = {
"action": "retrievePortInformation",
};
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
}
const Explore = {
data() {
return {
loading: true,
visit: '',
filter: {},
sortDesc: true,
page: 1,
pageCount: 0,
itemsPerPage: 6,
sortBy: 'People',
items: [],
}
},
template: document.getElementById("explore-template").innerHTML,
created() {
this.fetchData();
},
methods: {
openLocation(url) {
var readyEvent = {
"action": "goToUrl",
"visit": url,
};
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
},
visitIconCallback() {
if (this.visit !== "") {
this.openLocation(this.visit);
}
},
fetchData() {
this.error = this.post = null;
this.loading = true;
getAddressListData(this);
},
updateData(data) {
this.items = data;
this.loading = false;
}
}
};
const Bookmarks =
{
data() {
return {
loading: true,
search: '',
visit: '',
filter: {},
sortDesc: true,
page: 1,
pageCount: 0,
itemsPerPage: 6,
sortBy: 'name',
items: [], //testLocationData,
}
},
template: document.getElementById("bookmarks-template").innerHTML,
created() {
this.fetchData();
},
methods: {
openLocation(url) {
var readyEvent = {
"action": "goToUrl",
"visit": url,
};
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
},
fetchData() {
this.error = this.post = null;
this.loading = true;
getBookmarkListData(this);
},
updateData(data) {
this.items = data;
this.loading = false;
}
}
};
const Events = { template: document.getElementById("events-template").innerHTML };
const Settings = { template: document.getElementById("settings-template").innerHTML }
const AddLocation = {
data() {
return {
valid: true,
//permission: false,
dialog: false,
domainName: "",
domainNameRules: [
v => !!v || 'Domain Display Name is required',
],
owner: "",
ownerRules: [
v => !!v || 'Owner is required',
],
port: "40102",
portRules: [
v => !!v || 'Port is required',
v => /^[0-9]{1,5}$/.test(v) || 'Must be a valid port number'
],
locationProvider: "",
locationProviderRules: [
v => !!v || 'Location Provider is required',
],
locationProviders: []
}
},
watch: {
dialog: function (val) {
if (val) {
this.opening();
}
},
},
props: {
permission: false
},
template: document.getElementById("add-location-template").innerHTML,
methods: {
opening() {
getAddLocationData(this);
},
updateData(data) {
this.locationProviders = data;
this.locationProvider = data[0];
},
addLocation() {
if (this.$refs.form.validate()) {
var readyEvent = {
"action": "addLocation",
"domainName": this.domainName,
"owner": this.owner,
"Port": this.port,
"script": this.locationProvider
};
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
this.closeDialog();
}
},
closeDialog() {
this.domainName = "";
this.owner = "";
this.port = "40102";
this.locationProvider = "Current";
this.dialog = false;
this.$refs.form.resetValidation();
}
}
}
const routes = [
{ path: '/', component: Explore },
{ path: '/bookmarks', component: Bookmarks },
{ path: '/events', component: Events },
{ path: '/settings', component: Settings }
];
const router = new VueRouter({ routes });
const vm = new Vue({
router,
el: '#app',
data: {
activeItem: string = 'explore',
permission: false,
isHomeSet: false,
},
vuetify: new Vuetify({
theme: {
dark: true,
},
}),
components: {
'add-location': AddLocation
},
methods: {
navigateHome() {
var readyEvent = {
"action": "navigateHome"
}
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
},
navigateBack() {
var readyEvent = {
"action": "navigateBack"
}
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
},
navigateForward() {
var readyEvent = {
"action": "navigateForward"
}
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
}
},
created: function () {
const self = this;
EventBridge.scriptEventReceived.connect(function (message) {
var messageData = JSON.parse(message);
if (messageData.action == "addressListv2") {
self.permission = messageData.permission;
locationData = messageData.myAddress;
exploreComponent.updateData(locationData);
self.isHomeSet = messageData.isHomeSet;
}
if (messageData.action == "bookmarksList") {
bookmarksData = messageData.bookmarks;
bookmarksComponent.updateData(bookmarksData);
}
if (messageData.action == "retrievePortInformationResponse") {
addLocationData = messageData.goToAddresses;
for (let i = 0; i < addLocationData.length; i++) {
var metaverseProvider = addLocationData[i].split("/")[2].split(":")[0];
addLocationData[i] = "https://" + metaverseProvider + "/interim/d-goto/app/decentralizedGoToServerScript.js";
}
addLocationComponent.updateData(addLocationData);
}
});
}
});
var myAddress = [{}];
function createTableFromJSON() {
var col = [];
for (var i = 0; i < myAddress.length; i++) {
for (var key in myAddress[i]) {
if (col.indexOf(key) === -1) {
col.push(key);
}
}
}
var table = document.createElement("table");
table.setAttribute('id', 'domains');
table.setAttribute('class', 'table table-striped sampleTable domains');
var thead = table.createTHead();
//var tr = table.insertRow(-1);
for (var i = 0; i < col.length; i++) {
var th = document.createElement("th");
if (col[i] === 'People') th.setAttribute('data-sortas', 'numeric');
th.innerHTML = col[i];
thead.appendChild(th);
}
var tbdy = document.createElement('tbody');
for (var i = 0; i < myAddress.length; i++) {
tr = table.insertRow(-1);
for (var j = 0; j < col.length; j++) {
var tabCell = tr.insertCell(-1);
if (j == 2) {
var url = "<input id=\"Button\" class=\"myButton\" type=\"button\" onclick=\"navigateTo('" + myAddress[i][col[j]] + "')\" value=\"Visit\" />";
tabCell.innerHTML = url;
} else {
tabCell.innerHTML = myAddress[i][col[j]];
}
}
}
var divContainer = document.getElementById("showData");
divContainer.innerHTML = "";
divContainer.appendChild(table);
$("#domains").fancyTable({
sortColumn: 3, // column number for initial sorting
sortOrder: 'desc', // 'desc', 'descending', 'asc', 'ascending', -1 (descending) and 1 (ascending)
sortable: true,
pagination: true, // default: false
perPage: 7,
searchable: true,
globalSearch: true,
globalSearchExcludeColumns: [3] // exclude column 2 & 5
});
}
</script>
<script src="jquery.min.js"></script>
<script src="bootstrap.min.js"></script>
<script src="fancyTable.js"></script>
</body>
</html>

View file

@ -74,9 +74,10 @@
permission = Entities.canRez()
var readyEvent = {
"action": "addressList",
"action": "addressListv2",
"myAddress": children,
"permission": permission
"permission": permission,
"isHomeSet": LocationBookmarks.getHomeLocationAddress().length > 0
};
tablet.emitScriptEvent(JSON.stringify(readyEvent));

View file

@ -1,260 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
viewBox="0 0 50 200.1"
style="enable-background:new 0 0 50 200.1;"
xml:space="preserve"
id="svg125"
sodipodi:docname="Explore.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"><metadata
id="metadata131"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs129" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview127"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="5.6568542"
inkscape:cx="18.340874"
inkscape:cy="67.670896"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="layer6"><sodipodi:guide
position="14.125,99.999998"
orientation="0,1"
id="guide204"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="-85.689885,150"
orientation="0,1"
id="guide206"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="-93.693885,49.999999"
orientation="0,1"
id="guide208"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="-93.458473,0"
orientation="0,1"
id="guide210"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="-62.619531,200"
orientation="0,1"
id="guide212"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="20.995787,157.79945"
orientation="0,1"
id="guide214"
inkscape:locked="false" /><sodipodi:guide
position="22.746663,107.80388"
orientation="0,1"
id="guide216"
inkscape:locked="false" /><sodipodi:guide
position="22.776089,57.704999"
orientation="0,1"
id="guide218"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="20.716236,7.5989999"
orientation="0,1"
id="guide220"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="13.21875,164.20312"
orientation="0,1"
id="guide230"
inkscape:locked="false" /><sodipodi:guide
position="18.292969,164.20703"
orientation="0,1"
id="guide5167"
inkscape:locked="false" /><sodipodi:guide
position="19.776893,114.21984"
orientation="0,1"
id="guide5169"
inkscape:locked="false" /><sodipodi:guide
position="18.473165,64.114696"
orientation="0,1"
id="guide5171"
inkscape:locked="false" /><sodipodi:guide
position="18.649941,14.009553"
orientation="0,1"
id="guide5173"
inkscape:locked="false" /></sodipodi:namedview>
<style
type="text/css"
id="style10">
.st0{fill:#414042;}
.st1{fill:#FFFFFF;}
.st2{fill:#1E1E1E;}
.st3{fill:#333333;}
</style>
<g
id="Layer_3">
</g>
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Base"
style="display:inline"><g
id="Layer_2">
<g
id="g16">
<g
id="g14">
<path
class="st0"
d="m 50.1,146.1 c 0,2.2 -1.8,4 -4,4 h -42 c -2.2,0 -4,-1.8 -4,-4 v -42 c 0,-2.2 1.8,-4 4,-4 h 42 c 2.2,0 4,1.8 4,4 z"
id="path12"
inkscape:connector-curvature="0"
style="fill:#414042" />
</g>
</g>
<g
id="g22">
<g
id="g20">
<path
class="st0"
d="m 50,196.1 c 0,2.2 -1.8,4 -4,4 H 4 c -2.2,0 -4,-1.8 -4,-4 v -42 c 0,-2.2 1.8,-4 4,-4 h 42 c 2.2,0 4,1.8 4,4 z"
id="path18"
inkscape:connector-curvature="0"
style="fill:#414042" />
</g>
</g>
<g
id="g28">
<g
id="g26">
<path
class="st1"
d="m 50,46 c 0,2.2 -1.8,4 -4,4 H 4 C 1.8,50 0,48.2 0,46 V 4 C 0,1.8 1.8,0 4,0 h 42 c 2.2,0 4,1.8 4,4 z"
id="path24"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
</g>
</g>
<g
id="g32">
<path
class="st2"
d="m 50,96.1 c 0,2.2 -1.8,4 -4,4 H 4 c -2.2,0 -4,-1.8 -4,-4 v -42 c 0,-2.2 1.8,-4 4,-4 h 42 c 2.2,0 4,1.8 4,4 z"
id="path30"
inkscape:connector-curvature="0"
style="fill:#1e1e1e" />
</g>
</g></g><g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="Text"
style="display:none"
sodipodi:insensitive="true" /><g
inkscape:groupmode="layer"
id="layer6"
inkscape:label="World"
style="display:inline"><g
style="fill:#aaccff;stroke:#000000"
id="g5138"
transform="matrix(0.06304349,0,0,0.06304349,11.1413,6.36036)"><path
id="path5124"
d="m 209,15 a 195,195 0 1 0 2,0 z"
inkscape:connector-curvature="0"
style="stroke-width:26;fill:#aaccff" /><path
id="path5126"
d="M 210,15 V 405 M 405,210 H 15 M 59,90 a 260,260 0 0 0 302,0 m 0,240 A 260,260 0 0 0 59,330 M 195,20 a 250,250 0 0 0 0,382 m 30,0 a 250,250 0 0 0 0,-382"
inkscape:connector-curvature="0"
style="stroke-width:18;fill:#aaccff" /></g><g
transform="matrix(0.06304349,0,0,0.06304349,11.1413,56.347551)"
id="g5155"
style="fill:#aaccff;stroke:#000000"><path
style="fill:#aaccff;stroke-width:26"
inkscape:connector-curvature="0"
d="m 209,15 a 195,195 0 1 0 2,0 z"
id="path5151" /><path
style="fill:#aaccff;stroke-width:18"
inkscape:connector-curvature="0"
d="M 210,15 V 405 M 405,210 H 15 M 59,90 a 260,260 0 0 0 302,0 m 0,240 A 260,260 0 0 0 59,330 M 195,20 a 250,250 0 0 0 0,382 m 30,0 a 250,250 0 0 0 0,-382"
id="path5153" /></g><g
style="fill:#aaccff;stroke:#000000"
id="g5161"
transform="matrix(0.06304349,0,0,0.06304349,12.025183,106.4527)"><path
id="path5157"
d="m 209,15 a 195,195 0 1 0 2,0 z"
inkscape:connector-curvature="0"
style="fill:#aaccff;stroke-width:26" /><path
id="path5159"
d="M 210,15 V 405 M 405,210 H 15 M 59,90 a 260,260 0 0 0 302,0 m 0,240 A 260,260 0 0 0 59,330 M 195,20 a 250,250 0 0 0 0,382 m 30,0 a 250,250 0 0 0 0,-382"
inkscape:connector-curvature="0"
style="fill:#aaccff;stroke-width:18" /></g><g
transform="matrix(0.06304349,0,0,0.06304349,12.025183,156.55784)"
id="g5190"
style="fill:#aaccff;stroke:#000000"><path
style="fill:#aaccff;stroke-width:26"
inkscape:connector-curvature="0"
d="m 209,15 a 195,195 0 1 0 2,0 z"
id="path5186" /><path
style="fill:#aaccff;stroke-width:18"
inkscape:connector-curvature="0"
d="M 210,15 V 405 M 405,210 H 15 M 59,90 a 260,260 0 0 0 302,0 m 0,240 A 260,260 0 0 0 59,330 M 195,20 a 250,250 0 0 0 0,382 m 30,0 a 250,250 0 0 0 0,-382"
id="path5188" /></g></g><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:53.33333206px;line-height:1.5;font-family:Verdana;-inkscape-font-specification:Verdana;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="3.625"
y="42.300552"
id="text236"><tspan
sodipodi:role="line"
id="tspan234"
x="3.625"
y="97.624832" /></text>
<path
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.22626972px;line-height:1.5;font-family:Verdana;-inkscape-font-specification:Verdana;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.31582576"
d="m 30.032087,35.765146 c -0.941155,0 -1.679424,0.297877 -2.214236,0.897073 -0.534805,0.59633 -0.803088,1.408963 -0.803088,2.438204 0,1.020642 0.268283,1.831959 0.803088,2.434022 0.534812,0.599197 1.273081,0.899166 2.214236,0.899166 0.943776,0 1.683255,-0.299969 2.218061,-0.899166 0.534805,-0.602063 0.801179,-1.41338 0.801179,-2.434022 0,-1.029241 -0.267577,-1.841874 -0.805004,-2.438204 -0.537428,-0.599196 -1.275703,-0.897073 -2.214236,-0.897073 z M 4.6754597,35.896884 v 6.404989 H 8.9108061 V 41.06186 H 6.1783862 v -1.582951 h 2.535472 v -1.237921 h -2.535472 v -1.104092 h 2.7324199 v -1.240012 z m 4.8950284,0 2.0344959,3.178447 -2.0765627,3.226542 h 1.6673697 l 1.284944,-2.107813 1.261999,2.107813 h 1.747679 l -2.076563,-3.291366 2.044056,-3.113623 h -1.671192 l -1.254351,1.996984 -1.218021,-1.996984 z m 6.7612579,0 v 6.404989 h 1.508663 v -2.086901 h 0.940763 c 0.427322,0 0.78312,-0.06337 1.068875,-0.19238 0.288377,-0.129014 0.550647,-0.320664 0.783969,-0.572957 0.170406,-0.186354 0.300229,-0.415605 0.391986,-0.687967 0.09175,-0.275228 0.137672,-0.55601 0.137672,-0.842708 0,-0.369839 -0.06155,-0.687681 -0.187386,-0.951442 C 20.853071,36.703757 20.673012,36.488432 20.437067,36.319282 20.240449,36.178801 20.01327,36.074426 19.756353,36.00562 19.502058,35.93395 19.187858,35.896884 18.81559,35.896884 Z m 5.898892,0 v 6.404989 H 26.4526 V 41.06186 h -2.7133 v -5.164976 z m 11.96987,0 v 6.404989 h 1.501016 v -2.348287 h 0.696013 l 1.59662,2.348287 h 1.845202 l -1.954193,-2.745594 c 0.372269,-0.197819 0.657391,-0.44417 0.856629,-0.742334 0.201861,-0.298166 0.302115,-0.685411 0.302115,-1.15846 0,-0.344036 -0.06395,-0.628763 -0.195036,-0.855253 -0.128457,-0.229358 -0.303703,-0.414972 -0.523913,-0.558321 -0.217597,-0.143348 -0.450791,-0.237199 -0.699839,-0.280205 -0.249056,-0.04301 -0.546916,-0.06483 -0.892962,-0.06483 z m 6.306174,0 v 6.404989 h 4.235349 V 41.06186 h -2.732419 v -1.582951 h 2.537381 v -1.237921 h -2.537381 v -1.104092 h 2.732419 v -1.240012 z m -10.47077,1.074817 c 0.18876,0 0.370017,0.03969 0.543047,0.1171 0.175645,0.07741 0.329031,0.202285 0.462731,0.374303 0.131078,0.166285 0.238053,0.385016 0.31932,0.65451 0.08127,0.269496 0.12238,0.594454 0.12238,0.978628 0,0.358371 -0.03627,0.672267 -0.107079,0.938896 -0.07075,0.263762 -0.180163,0.493012 -0.326977,0.687967 -0.131079,0.172017 -0.283263,0.299526 -0.458907,0.382668 -0.175644,0.08027 -0.360513,0.119192 -0.554515,0.119192 -0.193995,0 -0.378864,-0.03892 -0.554516,-0.119192 -0.175644,-0.08027 -0.32974,-0.205152 -0.460818,-0.374304 -0.131078,-0.169152 -0.23614,-0.387881 -0.317415,-0.654509 -0.07864,-0.269495 -0.118547,-0.59523 -0.118547,-0.976537 0,-0.372706 0.04113,-0.697664 0.122372,-0.978627 0.0839,-0.28383 0.190155,-0.506505 0.32124,-0.667055 0.141565,-0.172019 0.296865,-0.29558 0.464644,-0.370124 0.170402,-0.07454 0.351665,-0.112916 0.54304,-0.112916 z m 5.665612,0.104557 h 0.546865 c 0.180896,0 0.339799,0.0052 0.476121,0.01673 0.136327,0.0086 0.255325,0.03568 0.357565,0.08155 0.146807,0.06594 0.251382,0.157162 0.311677,0.27184 0.06026,0.114679 0.08987,0.251394 0.08987,0.411944 0,0.18062 -0.02473,0.326001 -0.07457,0.434946 -0.04719,0.106078 -0.122675,0.203875 -0.227537,0.292751 -0.110113,0.09175 -0.246664,0.149848 -0.4092,0.175651 -0.162536,0.0258 -0.36495,0.03974 -0.606141,0.03974 H 35.70153 Z m -17.861115,0.01673 h 0.260049 c 0.249052,0 0.449062,0.0039 0.598493,0.01255 0.149431,0.0058 0.301612,0.04411 0.458909,0.112918 0.117972,0.05161 0.222541,0.142051 0.311676,0.273932 0.08914,0.129013 0.133847,0.283602 0.133847,0.464221 0,0.183485 -0.02236,0.34148 -0.06693,0.470494 -0.04193,0.126146 -0.111421,0.234466 -0.208421,0.326208 -0.112729,0.103209 -0.252883,0.172614 -0.420667,0.207018 -0.165161,0.0344 -0.375994,0.05019 -0.632911,0.05019 h -0.434052 z"
id="text240"
inkscape:connector-curvature="0" /><path
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.22626972px;line-height:1.5;font-family:Verdana;-inkscape-font-specification:Verdana;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.31582576"
d="m 30.03125,85.759766 c -0.941155,0 -1.678079,0.297288 -2.212891,0.896484 -0.534805,0.59633 -0.802734,1.408259 -0.802734,2.4375 0,1.020642 0.267929,1.833484 0.802734,2.435547 0.534812,0.599197 1.271736,0.898437 2.212891,0.898437 0.943776,0 1.683944,-0.29924 2.21875,-0.898437 0.534805,-0.602063 0.800781,-1.414905 0.800781,-2.435547 0,-1.029241 -0.26726,-1.84117 -0.804687,-2.4375 -0.537428,-0.599196 -1.276311,-0.896484 -2.214844,-0.896484 z M 4.6757812,85.890625 v 6.40625 h 4.234375 V 91.056641 H 6.1777344 V 89.472656 H 8.7128906 V 88.234375 H 6.1777344 v -1.103516 h 2.7324218 v -1.240234 z m 4.8945313,0 2.0351565,3.179687 -2.0761721,3.226563 h 1.6660151 l 1.285157,-2.109375 1.261719,2.109375 h 1.748046 l -2.076172,-3.292969 2.042969,-3.113281 h -1.669922 l -1.253906,1.998047 -1.21875,-1.998047 z m 6.7617185,0 v 6.40625 h 1.507813 v -2.087891 h 0.941406 c 0.427322,0 0.782604,-0.0624 1.068359,-0.191406 0.288377,-0.129014 0.551835,-0.321926 0.785157,-0.574219 0.170406,-0.186354 0.298868,-0.415138 0.390625,-0.6875 0.09175,-0.275228 0.138672,-0.555099 0.138671,-0.841797 0,-0.369838 -0.06166,-0.689363 -0.1875,-0.953124 C 20.853345,86.697176 20.673445,86.483603 20.4375,86.314453 20.240882,86.173972 20.012776,86.068806 19.755859,86 19.501564,85.92833 19.188674,85.890625 18.816406,85.890625 Z m 5.898438,0 v 6.40625 h 4.222656 v -1.240234 h -2.712891 v -5.166016 z m 11.970703,0 v 6.40625 h 1.5 v -2.349609 h 0.697266 l 1.595703,2.349609 h 1.845703 l -1.955078,-2.746094 c 0.372269,-0.197819 0.658183,-0.444023 0.857422,-0.742187 0.201861,-0.298166 0.300781,-0.685154 0.300781,-1.158203 0,-0.344036 -0.06227,-0.628979 -0.19336,-0.855469 -0.128457,-0.229358 -0.30518,-0.415245 -0.52539,-0.558594 -0.217597,-0.143348 -0.450171,-0.238244 -0.699219,-0.28125 -0.249056,-0.04301 -0.546532,-0.06445 -0.892578,-0.06445 z m 6.304687,0 v 6.40625 h 4.236329 v -1.240234 h -2.732422 v -1.583985 h 2.537109 v -1.238281 h -2.537109 v -1.103516 h 2.732422 v -1.240234 z m -10.470703,1.076172 c 0.18876,0 0.369939,0.03978 0.542969,0.117187 0.175645,0.07741 0.329191,0.201029 0.462891,0.373047 0.131078,0.166285 0.239045,0.384803 0.320312,0.654297 0.08127,0.269496 0.121094,0.594342 0.121094,0.978516 0,0.358371 -0.03466,0.672824 -0.105469,0.939453 -0.07075,0.263762 -0.181311,0.492545 -0.328125,0.6875 -0.131079,0.172017 -0.28334,0.29967 -0.458984,0.382812 -0.175644,0.08027 -0.360686,0.119141 -0.554688,0.119141 -0.193995,0 -0.379035,-0.03887 -0.554687,-0.119141 -0.175644,-0.08027 -0.327907,-0.203894 -0.458985,-0.373047 -0.131078,-0.169151 -0.237084,-0.389621 -0.318359,-0.65625 -0.07864,-0.269495 -0.119141,-0.595255 -0.119141,-0.976562 0,-0.372706 0.04181,-0.697553 0.123047,-0.978516 0.0839,-0.28383 0.189228,-0.505465 0.320313,-0.666015 0.141565,-0.172019 0.297065,-0.29655 0.464844,-0.371094 0.170401,-0.07454 0.351593,-0.111328 0.542968,-0.111328 z m 5.666016,0.103515 h 0.546875 c 0.180896,0 0.34024,0.006 0.476562,0.01758 0.136327,0.0086 0.255182,0.03421 0.357422,0.08008 0.146807,0.06594 0.252205,0.158759 0.3125,0.273437 0.06026,0.114679 0.08984,0.25156 0.08984,0.41211 0,0.18062 -0.02633,0.324648 -0.07617,0.433593 -0.04719,0.106078 -0.1217,0.204093 -0.226562,0.292969 -0.110113,0.09175 -0.247621,0.149978 -0.410157,0.175781 -0.162536,0.0258 -0.364277,0.03906 -0.605468,0.03906 H 35.70117 Z m -17.861328,0.01758 h 0.259765 c 0.249052,0 0.450179,0.0031 0.59961,0.01172 0.149431,0.0058 0.301687,0.04447 0.458984,0.113282 0.117972,0.05161 0.221412,0.141556 0.310547,0.273437 0.08914,0.129013 0.134766,0.284225 0.134766,0.464844 0,0.183485 -0.02184,0.341689 -0.06641,0.470703 -0.04193,0.126146 -0.111984,0.23443 -0.208984,0.326172 -0.112729,0.103209 -0.252138,0.172627 -0.419922,0.207031 -0.165161,0.0344 -0.375895,0.04883 -0.632812,0.04883 h -0.435547 z"
id="path4755"
inkscape:connector-curvature="0" /><path
inkscape:connector-curvature="0"
id="path4758"
d="m 30.03125,135.8579 c -0.941155,0 -1.678079,0.29729 -2.212891,0.89648 -0.534805,0.59633 -0.802734,1.40826 -0.802734,2.4375 0,1.02064 0.267929,1.83349 0.802734,2.43555 0.534812,0.5992 1.271736,0.89844 2.212891,0.89844 0.943776,0 1.683944,-0.29924 2.21875,-0.89844 0.534805,-0.60206 0.800781,-1.41491 0.800781,-2.43555 0,-1.02924 -0.26726,-1.84117 -0.804687,-2.4375 -0.537428,-0.59919 -1.276311,-0.89648 -2.214844,-0.89648 z m -25.3554688,0.13086 v 6.40625 h 4.234375 v -1.24024 H 6.1777344 v -1.58398 h 2.5351562 v -1.23828 H 6.1777344 v -1.10352 h 2.7324218 v -1.24023 z m 4.8945313,0 2.0351565,3.17968 -2.0761721,3.22657 h 1.6660151 l 1.285157,-2.10938 1.261719,2.10938 h 1.748046 l -2.076172,-3.29297 2.042969,-3.11328 h -1.669922 l -1.253906,1.99804 -1.21875,-1.99804 z m 6.7617185,0 v 6.40625 h 1.507813 v -2.08789 h 0.941406 c 0.427322,0 0.782604,-0.0624 1.068359,-0.19141 0.288377,-0.12901 0.551835,-0.32193 0.785157,-0.57422 0.170406,-0.18635 0.298868,-0.41514 0.390625,-0.6875 0.09175,-0.27523 0.138672,-0.5551 0.138671,-0.8418 0,-0.36983 -0.06166,-0.68936 -0.1875,-0.95312 -0.123217,-0.26376 -0.303117,-0.47734 -0.539062,-0.64649 -0.196618,-0.14048 -0.424724,-0.24564 -0.681641,-0.31445 -0.254295,-0.0717 -0.567185,-0.10937 -0.939453,-0.10937 z m 5.898438,0 v 6.40625 h 4.222656 v -1.24024 h -2.712891 v -5.16601 z m 11.970703,0 v 6.40625 h 1.5 v -2.34961 h 0.697266 l 1.595703,2.34961 h 1.845703 l -1.955078,-2.7461 c 0.372269,-0.19782 0.658183,-0.44402 0.857422,-0.74218 0.201861,-0.29817 0.300781,-0.68516 0.300781,-1.15821 0,-0.34403 -0.06227,-0.62898 -0.19336,-0.85547 -0.128457,-0.22935 -0.30518,-0.41524 -0.52539,-0.55859 -0.217597,-0.14335 -0.450171,-0.23824 -0.699219,-0.28125 -0.249056,-0.043 -0.546532,-0.0644 -0.892578,-0.0644 z m 6.304687,0 v 6.40625 h 4.236329 v -1.24024 h -2.732422 v -1.58398 h 2.537109 v -1.23828 h -2.537109 v -1.10352 h 2.732422 v -1.24023 z m -10.470703,1.07617 c 0.18876,0 0.369939,0.0398 0.542969,0.11719 0.175645,0.0774 0.329191,0.20102 0.462891,0.37304 0.131078,0.16629 0.239045,0.38481 0.320312,0.6543 0.08127,0.2695 0.121094,0.59434 0.121094,0.97852 0,0.35837 -0.03466,0.67282 -0.105469,0.93945 -0.07075,0.26376 -0.181311,0.49254 -0.328125,0.6875 -0.131079,0.17202 -0.28334,0.29967 -0.458984,0.38281 -0.175644,0.0803 -0.360686,0.11914 -0.554688,0.11914 -0.193995,0 -0.379035,-0.0389 -0.554687,-0.11914 -0.175644,-0.0803 -0.327907,-0.20389 -0.458985,-0.37305 -0.131078,-0.16915 -0.237084,-0.38962 -0.318359,-0.65625 -0.07864,-0.26949 -0.119141,-0.59525 -0.119141,-0.97656 0,-0.3727 0.04181,-0.69755 0.123047,-0.97851 0.0839,-0.28383 0.189228,-0.50547 0.320313,-0.66602 0.141565,-0.17202 0.297065,-0.29655 0.464844,-0.37109 0.170401,-0.0745 0.351593,-0.11133 0.542968,-0.11133 z m 5.666016,0.10351 h 0.546875 c 0.180896,0 0.34024,0.006 0.476562,0.0176 0.136327,0.009 0.255182,0.0342 0.357422,0.0801 0.146807,0.0659 0.252205,0.15876 0.3125,0.27344 0.06026,0.11468 0.08984,0.25156 0.08984,0.41211 0,0.18062 -0.02633,0.32465 -0.07617,0.43359 -0.04719,0.10608 -0.1217,0.2041 -0.226562,0.29297 -0.110113,0.0917 -0.247621,0.14998 -0.410157,0.17578 -0.162536,0.0258 -0.364277,0.0391 -0.605468,0.0391 H 35.70117 Z m -17.861328,0.0176 h 0.259765 c 0.249052,0 0.450179,0.003 0.59961,0.0117 0.149431,0.006 0.301687,0.0445 0.458984,0.11329 0.117972,0.0516 0.221412,0.14155 0.310547,0.27343 0.08914,0.12902 0.134766,0.28423 0.134766,0.46485 0,0.18348 -0.02184,0.34169 -0.06641,0.4707 -0.04193,0.12615 -0.111984,0.23443 -0.208984,0.32617 -0.112729,0.10321 -0.252138,0.17263 -0.419922,0.20703 -0.165161,0.0344 -0.375895,0.0488 -0.632812,0.0488 h -0.435547 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.22626972px;line-height:1.5;font-family:Verdana;-inkscape-font-specification:Verdana;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.31582576" /><path
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.22626972px;line-height:1.5;font-family:Verdana;-inkscape-font-specification:Verdana;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.31582576"
d="m 30.03125,185.9639 c -0.941155,0 -1.678079,0.29729 -2.212891,0.89648 -0.534805,0.59633 -0.802734,1.40826 -0.802734,2.4375 0,1.02064 0.267929,1.83349 0.802734,2.43555 0.534812,0.5992 1.271736,0.89844 2.212891,0.89844 0.943776,0 1.683944,-0.29924 2.21875,-0.89844 0.534805,-0.60206 0.800781,-1.41491 0.800781,-2.43555 0,-1.02924 -0.26726,-1.84117 -0.804687,-2.4375 -0.537428,-0.59919 -1.276311,-0.89648 -2.214844,-0.89648 z m -25.3554688,0.13086 v 6.40625 h 4.234375 v -1.24024 H 6.1777344 v -1.58398 h 2.5351562 v -1.23828 H 6.1777344 v -1.10352 h 2.7324218 v -1.24023 z m 4.8945313,0 2.0351565,3.17968 -2.0761721,3.22657 h 1.6660151 l 1.285157,-2.10938 1.261719,2.10938 h 1.748046 l -2.076172,-3.29297 2.042969,-3.11328 h -1.669922 l -1.253906,1.99804 -1.21875,-1.99804 z m 6.7617185,0 v 6.40625 h 1.507813 v -2.08789 h 0.941406 c 0.427322,0 0.782604,-0.0624 1.068359,-0.19141 0.288377,-0.12901 0.551835,-0.32193 0.785157,-0.57422 0.170406,-0.18635 0.298868,-0.41514 0.390625,-0.6875 0.09175,-0.27523 0.138672,-0.5551 0.138671,-0.8418 0,-0.36983 -0.06166,-0.68936 -0.1875,-0.95312 -0.123217,-0.26376 -0.303117,-0.47734 -0.539062,-0.64649 -0.196618,-0.14048 -0.424724,-0.24564 -0.681641,-0.31445 -0.254295,-0.0717 -0.567185,-0.10937 -0.939453,-0.10937 z m 5.898438,0 v 6.40625 h 4.222656 v -1.24024 h -2.712891 v -5.16601 z m 11.970703,0 v 6.40625 h 1.5 v -2.34961 h 0.697266 l 1.595703,2.34961 h 1.845703 l -1.955078,-2.7461 c 0.372269,-0.19782 0.658183,-0.44402 0.857422,-0.74218 0.201861,-0.29817 0.300781,-0.68516 0.300781,-1.15821 0,-0.34403 -0.06227,-0.62898 -0.19336,-0.85547 -0.128457,-0.22935 -0.30518,-0.41524 -0.52539,-0.55859 -0.217597,-0.14335 -0.450171,-0.23824 -0.699219,-0.28125 -0.249056,-0.043 -0.546532,-0.0644 -0.892578,-0.0644 z m 6.304687,0 v 6.40625 h 4.236329 v -1.24024 h -2.732422 v -1.58398 h 2.537109 v -1.23828 h -2.537109 v -1.10352 h 2.732422 v -1.24023 z m -10.470703,1.07617 c 0.18876,0 0.369939,0.0398 0.542969,0.11719 0.175645,0.0774 0.329191,0.20102 0.462891,0.37304 0.131078,0.16629 0.239045,0.38481 0.320312,0.6543 0.08127,0.2695 0.121094,0.59434 0.121094,0.97852 0,0.35837 -0.03466,0.67282 -0.105469,0.93945 -0.07075,0.26376 -0.181311,0.49254 -0.328125,0.6875 -0.131079,0.17202 -0.28334,0.29967 -0.458984,0.38281 -0.175644,0.0803 -0.360686,0.11914 -0.554688,0.11914 -0.193995,0 -0.379035,-0.0389 -0.554687,-0.11914 -0.175644,-0.0803 -0.327907,-0.20389 -0.458985,-0.37305 -0.131078,-0.16915 -0.237084,-0.38962 -0.318359,-0.65625 -0.07864,-0.26949 -0.119141,-0.59525 -0.119141,-0.97656 0,-0.3727 0.04181,-0.69755 0.123047,-0.97851 0.0839,-0.28383 0.189228,-0.50547 0.320313,-0.66602 0.141565,-0.17202 0.297065,-0.29655 0.464844,-0.37109 0.170401,-0.0745 0.351593,-0.11133 0.542968,-0.11133 z m 5.666016,0.10351 h 0.546875 c 0.180896,0 0.34024,0.006 0.476562,0.0176 0.136327,0.009 0.255182,0.0342 0.357422,0.0801 0.146807,0.0659 0.252205,0.15876 0.3125,0.27344 0.06026,0.11468 0.08984,0.25156 0.08984,0.41211 0,0.18062 -0.02633,0.32465 -0.07617,0.43359 -0.04719,0.10608 -0.1217,0.2041 -0.226562,0.29297 -0.110113,0.0917 -0.247621,0.14998 -0.410157,0.17578 -0.162536,0.0258 -0.364277,0.0391 -0.605468,0.0391 H 35.70117 Z m -17.861328,0.0176 h 0.259765 c 0.249052,0 0.450179,0.003 0.59961,0.0117 0.149431,0.006 0.301687,0.0445 0.458984,0.11329 0.117972,0.0516 0.221412,0.14155 0.310547,0.27343 0.08914,0.12902 0.134766,0.28423 0.134766,0.46485 0,0.18348 -0.02184,0.34169 -0.06641,0.4707 -0.04193,0.12615 -0.111984,0.23443 -0.208984,0.32617 -0.112729,0.10321 -0.252138,0.17263 -0.419922,0.20703 -0.165161,0.0344 -0.375895,0.0488 -0.632812,0.0488 h -0.435547 z"
id="path4760"
inkscape:connector-curvature="0" /></svg>

Before

Width:  |  Height:  |  Size: 24 KiB

View file

@ -1,217 +0,0 @@
/*!
* jQuery fancyTable plugin
* https://github.com/myspace-nu
*
* Copyright 2018 Johan Johansson
* Released under the MIT license
*/
(function($) {
$.fn.fancyTable = function(options) {
var settings = $.extend({
inputStyle: "",
inputPlaceholder: "Search...",
pagination: false,
paginationClass: "btn btn-light",
paginationClassActive: "active",
pagClosest: 3,
perPage: 10,
sortable: true,
searchable: true,
onInit: function(){ },
onUpdate: function(){ },
testing: false
}, options);
var instance = this;
this.settings = settings;
this.tableUpdate = function (elm) {
elm.fancyTable.matches = 0;
$(elm).find("tbody tr").each(function() {
var n=0;
var match = true;
var globalMatch = false;
$(this).find("td").each(function() {
if(!settings.globalSearch && elm.fancyTable.searchArr[n] && !(new RegExp(elm.fancyTable.searchArr[n],"i").test($(this).html()))){
match = false;
} else if(settings.globalSearch && (!elm.fancyTable.search || (new RegExp(elm.fancyTable.search,"i").test($(this).html())))){
if(!Array.isArray(settings.globalSearchExcludeColumns) || !settings.globalSearchExcludeColumns.includes(n+1)){
globalMatch = true;
}
}
n++;
});
if((settings.globalSearch && globalMatch) || (!settings.globalSearch && match)){
elm.fancyTable.matches++
if(!settings.pagination || (elm.fancyTable.matches>(elm.fancyTable.perPage*(elm.fancyTable.page-1)) && elm.fancyTable.matches<=(elm.fancyTable.perPage*elm.fancyTable.page))){
$(this).show();
} else {
$(this).hide();
}
} else {
$(this).hide();
}
});
elm.fancyTable.pages = Math.ceil(elm.fancyTable.matches/elm.fancyTable.perPage);
if(settings.pagination){
var paginationElement = (elm.fancyTable.paginationElement) ? $(elm.fancyTable.paginationElement) : $(elm).find(".pag");
paginationElement.empty();
for(var n=1; n<=elm.fancyTable.pages; n++){
if(n==1 || (n>(elm.fancyTable.page-(settings.pagClosest+1)) && n<(elm.fancyTable.page+(settings.pagClosest+1))) || n==elm.fancyTable.pages){
var a = $("<a>",{
html:n,
"data-n": n,
style:"margin:0.2em",
class:settings.paginationClass+" "+((n==elm.fancyTable.page)?settings.paginationClassActive:"")
}).css("cursor","pointer").bind("click",function(){
elm.fancyTable.page = $(this).data("n");
instance.tableUpdate(elm);
});
if(n==elm.fancyTable.pages && elm.fancyTable.page<(elm.fancyTable.pages-settings.pagClosest-1)){
paginationElement.append($("<span>...</span>"));
}
paginationElement.append(a);
if(n==1 && elm.fancyTable.page>settings.pagClosest+2){
paginationElement.append($("<span>...</span>"));
}
}
}
}
settings.onUpdate.call(this,elm);
};
this.reinit = function(elm){
$(this).each(function(){
$(this).find("th a").contents().unwrap();
$(this).find("tr.fancySearchRow").remove();
});
$(this).fancyTable(this.settings);
};
this.tableSort = function (elm) {
if(typeof elm.fancyTable.sortColumn !== "undefined" && elm.fancyTable.sortColumn < elm.fancyTable.nColumns){
$(elm).find("thead th div.sortArrow").each(function(){
$(this).remove();
});
var sortArrow = $("<div>",{"class":"sortArrow"}).css({"margin":"0.1em","display":"inline-block","width":0,"height":0,"border-left":"0.4em solid transparent","border-right":"0.4em solid transparent"});
sortArrow.css(
(elm.fancyTable.sortOrder>0) ?
{"border-top":"0.4em solid #000"} :
{"border-bottom":"0.4em solid #000"}
);
$(elm).find("thead th a").eq(elm.fancyTable.sortColumn).append(sortArrow);
var rows = $(elm).find("tbody tr").toArray().sort(
function(a, b) {
var stra = $(a).find("td").eq(elm.fancyTable.sortColumn).html();
var strb = $(b).find("td").eq(elm.fancyTable.sortColumn).html();
if(elm.fancyTable.sortAs[elm.fancyTable.sortColumn] == 'numeric'){
return((elm.fancyTable.sortOrder>0) ? parseFloat(stra)-parseFloat(strb) : parseFloat(strb)-parseFloat(stra));
} else {
return((stra<strb)?-elm.fancyTable.sortOrder:(stra>strb)?elm.fancyTable.sortOrder:0);
}
}
);
$(elm).find("tbody").empty().append(rows);
}
};
this.each(function() {
if($(this).prop("tagName")!=="TABLE"){
console.warn("fancyTable: Element is not a table.");
return true;
}
var elm = this;
elm.fancyTable = {
nColumns: $(elm).find("td").first().parent().find("td").length,
nRows : $(this).find("tbody tr").length,
perPage : settings.perPage,
page : 1,
pages : 0,
matches : 0,
searchArr : [],
search : "",
sortColumn : settings.sortColumn,
sortOrder : (typeof settings.sortOrder === "undefined") ? 1 : (new RegExp("desc","i").test(settings.sortOrder) || settings.sortOrder == -1) ? -1 : 1,
sortAs:[], // undefined or numeric
paginationElement : settings.paginationElement
};
if($(elm).find("tbody").length==0){
var content = $(elm).html();
$(elm).empty();
$(elm).append("<tbody>").append($(content));
}
if($(elm).find("thead").length==0){
$(elm).prepend($("<thead>"));
// Maybe add generated headers at some point
//var c=$(elm).find("tr").first().find("td").length;
//for(var n=0; n<c; n++){
// $(elm).find("thead").append($("<th></th>"));
//}
}
if(settings.sortable){
var n=0;
$(elm).find("thead th").each(function() {
elm.fancyTable.sortAs.push(($(this).data('sortas')=='numeric')?'numeric':'');
var content = $(this).html();
var a = $("<a>",{
html:content,
"data-n": n,
class:""
}).css("cursor","pointer").bind("click",function(){
if(elm.fancyTable.sortColumn == $(this).data("n")){
elm.fancyTable.sortOrder=-elm.fancyTable.sortOrder;
} else {
elm.fancyTable.sortOrder=1;
}
elm.fancyTable.sortColumn = $(this).data("n");
instance.tableSort(elm);
instance.tableUpdate(elm);
});
$(this).empty();
$(this).append(a);
n++;
});
}
if(settings.searchable){
var searchHeader = $("<tr>").addClass("fancySearchRow");
if(settings.globalSearch){
var searchField = $("<input>",{
"placeholder": settings.inputPlaceholder,
style:"width:100%;"+settings.inputStyle
}).bind("change paste keyup",function(){
elm.fancyTable.search = $(this).val();
elm.fancyTable.page = 1;
instance.tableUpdate(elm);
});
var th = $("<th>",{ style:"padding:2px;" }).attr("colspan",elm.fancyTable.nColumns);
$(searchField).appendTo($(th));
$(th).appendTo($(searchHeader));
} else {
var n=0;
$(elm).find("td").first().parent().find("td").each(function() {
elm.fancyTable.searchArr.push("");
var searchField = $("<input>",{
"data-n": n,
"placeholder": settings.inputPlaceholder,
style:"width:100%;"+settings.inputStyle
}).bind("change paste keyup",function(){
elm.fancyTable.searchArr[$(this).data("n")] = $(this).val();
elm.fancyTable.page = 1;
instance.tableUpdate(elm);
});
var th = $("<th>",{ style:"padding:2px;" });
$(searchField).appendTo($(th));
$(th).appendTo($(searchHeader));
n++;
});
}
searchHeader.appendTo($(elm).find("thead"));
}
// Sort
instance.tableSort(elm);
if(settings.pagination && !settings.paginationElement){
$(elm).find("tfoot").remove();
$(elm).append($("<tfoot><tr></tr></tfoot>"));
$(elm).find("tfoot tr").append($("<td class='pag'></td>",{ }).attr("colspan",elm.fancyTable.nColumns));
}
instance.tableUpdate(elm);
settings.onInit.call(this,elm);
});
return this;
};
}(jQuery));

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,25 @@
> *Note:* Please use the main [MaterialDesign](https://github.com/Templarian/MaterialDesign/issues) repo to report issues. This repo is for distribution of the Webfont files only.
# Webfont - Material Design Icons
Webfont distribution for the [Material Design Icons](https://materialdesignicons.com).
```
npm install @mdi/font
```
> Package built with [@mdi/font-build](https://github.com/Templarian/MaterialDesign-Font-Build).
## Related Packages
[NPM @MDI Organization](https://npmjs.com/org/mdi)
- JavaScript/Typescript: [MaterialDesign-JS](https://github.com/Templarian/MaterialDesign-JS)
- SVG: [MaterialDesign-SVG](https://github.com/Templarian/MaterialDesign-SVG)
- Font-Build [MaterialDesign-Font-Build](https://github.com/Templarian/MaterialDesign-Font-Build)
- Desktop Font: [MaterialDesign-Font](https://github.com/Templarian/MaterialDesign-Font)
## Learn More
- [MaterialDesignIcons.com](https://materialdesignicons.com)
- https://github.com/Templarian/MaterialDesign

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,97 @@
Copyright (c) 2014, Austin Andrews (http://materialdesignicons.com/),
with Reserved Font Name Material Design Icons.
Copyright (c) 2014, Google (http://www.google.com/design/)
uses the license at https://github.com/google/material-design-icons/blob/master/LICENSE
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View file

@ -0,0 +1,28 @@
{
"name": "@mdi/font",
"version": "5.5.55",
"description": "Dist for Material Design Webfont. This includes the Stock and Community icons in a single webfont collection.",
"style": "css/materialdesignicons.css",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://github.com/Templarian/MaterialDesign-Webfont.git"
},
"keywords": [
"material",
"design",
"icons",
"webfont"
],
"author": {
"name": "Austin Andrews",
"web": "http://twitter.com/templarian"
},
"license": "(OFL-1.1 AND MIT)",
"bugs": {
"url": "https://github.com/Templarian/MaterialDesign/issues"
},
"homepage": "https://materialdesignicons.com"
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,27 @@
// From Font Awesome
.#{$mdi-css-prefix}-spin:before {
-webkit-animation: #{$mdi-css-prefix}-spin 2s infinite linear;
animation: #{$mdi-css-prefix}-spin 2s infinite linear;
}
@-webkit-keyframes #{$mdi-css-prefix}-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@keyframes #{$mdi-css-prefix}-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}

View file

@ -0,0 +1,10 @@
.#{$mdi-css-prefix}:before,
.#{$mdi-css-prefix}-set {
display: inline-block;
font: normal normal normal #{$mdi-font-size-base}/1 '#{$mdi-font-name}'; // shortening font declaration
font-size: inherit; // can't have font-size inherit on line above, so need to override
text-rendering: auto; // optimizelegibility throws things off #1094
line-height: inherit;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}

View file

@ -0,0 +1,65 @@
$mdi-sizes: 18 24 36 48 !default;
@each $mdi-size in $mdi-sizes {
.#{$mdi-css-prefix}-#{$mdi-size}px {
&.#{$mdi-css-prefix}-set,
&.#{$mdi-css-prefix}:before {
font-size: $mdi-size * 1px;
}
}
}
.#{$mdi-css-prefix}-dark {
&:before {
color: rgba(0, 0, 0, 0.54);
}
&.#{$mdi-css-prefix}-inactive:before {
color: rgba(0, 0, 0, 0.26);
}
}
.#{$mdi-css-prefix}-light {
&:before {
color: rgba(255, 255, 255, 1);
}
&.#{$mdi-css-prefix}-inactive:before {
color: rgba(255, 255, 255, 0.3);
}
}
$mdi-degrees: 45 90 135 180 225 270 315 !default;
@each $mdi-degree in $mdi-degrees {
.#{$mdi-css-prefix}-rotate-#{$mdi-degree}{
&:before {
-webkit-transform: rotate(#{$mdi-degree}deg);
-ms-transform: rotate(#{$mdi-degree}deg);
transform: rotate(#{$mdi-degree}deg);
}
/*
// Not included in production
&.#{$mdi-css-prefix}-flip-h:before {
-webkit-transform: scaleX(-1) rotate(#{$mdi-degree}deg);
transform: scaleX(-1) rotate(#{$mdi-degree}deg);
filter: FlipH;
-ms-filter: "FlipH";
}
&.#{$mdi-css-prefix}-flip-v:before {
-webkit-transform: scaleY(-1) rotate(#{$mdi-degree}deg);
-ms-transform: rotate(#{$mdi-degree}deg);
transform: scaleY(-1) rotate(#{$mdi-degree}deg);
filter: FlipV;
-ms-filter: "FlipV";
}
*/
}
}
.#{$mdi-css-prefix}-flip-h:before {
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
filter: FlipH;
-ms-filter: "FlipH";
}
.#{$mdi-css-prefix}-flip-v:before {
-webkit-transform: scaleY(-1);
transform: scaleY(-1);
filter: FlipV;
-ms-filter: "FlipV";
}

View file

@ -0,0 +1,20 @@
@function char($character-code) {
@if function-exists("selector-append") {
@return unquote("\"\\#{$character-code}\"");
}
@if "\\#{'x'}" == "\\x" {
@return str-slice("\x", 1, 1) + $character-code;
}
@else {
@return #{"\"\\"}#{$character-code + "\""};
}
}
@function mdi($name) {
@if map-has-key($mdi-icons, $name) == false {
@warn "Icon #{$name} not found.";
@return "";
}
@return char(map-get($mdi-icons, $name));
}

View file

@ -0,0 +1,10 @@
@each $key, $value in $mdi-icons {
.#{$mdi-css-prefix}-#{$key}::before {
content: char($value);
}
}
.#{$mdi-css-prefix}-blank::before {
content: "\F68C";
visibility: hidden;
}

View file

@ -0,0 +1,10 @@
@font-face {
font-family: '#{$mdi-font-name}';
src: url('#{$mdi-font-path}/#{$mdi-filename}-webfont.eot?v=#{$mdi-version}');
src: url('#{$mdi-font-path}/#{$mdi-filename}-webfont.eot?#iefix&v=#{$mdi-version}') format('embedded-opentype'),
url('#{$mdi-font-path}/#{$mdi-filename}-webfont.woff2?v=#{$mdi-version}') format('woff2'),
url('#{$mdi-font-path}/#{$mdi-filename}-webfont.woff?v=#{$mdi-version}') format('woff'),
url('#{$mdi-font-path}/#{$mdi-filename}-webfont.ttf?v=#{$mdi-version}') format('truetype');
font-weight: normal;
font-style: normal;
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,8 @@
/* MaterialDesignIcons.com */
@import "variables";
@import "functions";
@import "path";
@import "core";
@import "icons";
@import "extras";
@import "animated";

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

@ -183,7 +183,7 @@ Controller.mousePressEvent.connect(function (event) {
for (var i = 0; i < notificationList.length; i++) {
if (overlay === notificationList[i].id) {
Overlays.deleteOverlay(notificationList[i].id)
Messages.sendMessage(MAIN_CHAT_APP_CHANNEL, JSON.stringify({
Messages.sendLocalMessage(MAIN_CHAT_APP_CHANNEL, JSON.stringify({
type: "ShowChatWindow",
}));
}