refactor: move to new material icons library

This commit is contained in:
Fabio Di Stasio 2023-04-17 18:02:15 +02:00
parent 8d5fbf600f
commit 3f1ea87194
16 changed files with 82 additions and 127 deletions

11
package-lock.json generated
View File

@ -11,6 +11,7 @@
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@electron/remote": "~2.0.1", "@electron/remote": "~2.0.1",
"@mdi/font": "~7.2.96",
"@vueuse/core": "~8.7.5", "@vueuse/core": "~8.7.5",
"electron-log": "~4.4.1", "electron-log": "~4.4.1",
"electron-store": "~8.1.0", "electron-store": "~8.1.0",
@ -2106,6 +2107,11 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/@mdi/font": {
"version": "7.2.96",
"resolved": "https://registry.npmjs.org/@mdi/font/-/font-7.2.96.tgz",
"integrity": "sha512-e//lmkmpFUMZKhmCY9zdjRe4zNXfbOIJnn6xveHbaV2kSw5aJ5dLXUxcRt1Gxfi7ZYpFLUWlkG2MGSFAiqAu7w=="
},
"node_modules/@nodelib/fs.scandir": { "node_modules/@nodelib/fs.scandir": {
"version": "2.1.5", "version": "2.1.5",
"dev": true, "dev": true,
@ -14934,6 +14940,11 @@
"version": "2.0.4", "version": "2.0.4",
"dev": true "dev": true
}, },
"@mdi/font": {
"version": "7.2.96",
"resolved": "https://registry.npmjs.org/@mdi/font/-/font-7.2.96.tgz",
"integrity": "sha512-e//lmkmpFUMZKhmCY9zdjRe4zNXfbOIJnn6xveHbaV2kSw5aJ5dLXUxcRt1Gxfi7ZYpFLUWlkG2MGSFAiqAu7w=="
},
"@nodelib/fs.scandir": { "@nodelib/fs.scandir": {
"version": "2.1.5", "version": "2.1.5",
"dev": true, "dev": true,

View File

@ -97,6 +97,7 @@
}, },
"dependencies": { "dependencies": {
"@electron/remote": "~2.0.1", "@electron/remote": "~2.0.1",
"@mdi/font": "~7.2.96",
"@vueuse/core": "~8.7.5", "@vueuse/core": "~8.7.5",
"electron-log": "~4.4.1", "electron-log": "~4.4.1",
"electron-store": "~8.1.0", "electron-store": "~8.1.0",

View File

@ -10,9 +10,9 @@
<transition name="fade"> <transition name="fade">
<i <i
v-if="clientStatus === 1" v-if="clientStatus === 1"
class="material-icons running" class="mdi mdi-play running"
:title="t('message.running')" :title="t('message.running')"
>play_arrow</i> />
</transition> </transition>
</div> </div>
<div <div
@ -24,9 +24,9 @@
<transition name="fade"> <transition name="fade">
<i <i
v-if="serverStatus === 1" v-if="serverStatus === 1"
class="material-icons running" class="mdi mdi-play running"
:title="t('message.running')" :title="t('message.running')"
>play_arrow</i> />
</transition> </transition>
</div> </div>
</nav> </nav>
@ -35,7 +35,7 @@
:title="t('word.settings')" :title="t('word.settings')"
@click="isSettingModal=true" @click="isSettingModal=true"
> >
<i class="material-icons">settings</i> <i class="mdi mdi-cog" />
</div> </div>
<ModalSettings v-if="isSettingModal" @hide-settings="isSettingModal=false" /> <ModalSettings v-if="isSettingModal" @hide-settings="isSettingModal=false" />
</header> </header>

View File

@ -144,13 +144,13 @@
</fieldset> </fieldset>
<div class="buttons"> <div class="buttons">
<div v-if="running === 0" class="button-wrap"> <div v-if="running === 0" class="button-wrap">
<i class="material-icons white">play_arrow</i> <i class="mdi mdi-play white" />
<button class="confirm" type="submit"> <button class="confirm" type="submit">
{{ t('word.start') }} {{ t('word.start') }}
</button> </button>
</div> </div>
<div v-if="running !== 0 && params.stepTest" class="button-wrap"> <div v-if="running !== 0 && params.stepTest" class="button-wrap">
<i class="material-icons white">message</i> <i class="mdi mdi-message white" />
<button <button
class="confirm" class="confirm"
:title="t('message.sendMessages')" :title="t('message.sendMessages')"
@ -160,7 +160,7 @@
</button> </button>
</div> </div>
<div v-if="running !== 0" class="button-wrap"> <div v-if="running !== 0" class="button-wrap">
<i class="material-icons white">stop</i> <i class="mdi mdi-stop white" />
<button class="stop" @click.prevent="stopTest"> <button class="stop" @click.prevent="stopTest">
{{ t('word.stop') }} {{ t('word.stop') }}
</button> </button>
@ -187,7 +187,7 @@ import { ref, computed, Ref, onBeforeUnmount } from 'vue';
import { storeToRefs } from 'pinia'; import { storeToRefs } from 'pinia';
import Console from './BaseConsole.vue'; import Console from './BaseConsole.vue';
import Hosts from './ClientTabHosts.vue'; import Hosts from './ClientTabHosts.vue';
import Messages from './ClientMessages.vue'; import Messages from './ClientTabMessages.vue';
import NewHost from './ModalNewHost.vue'; import NewHost from './ModalNewHost.vue';
import NewMessage from './ModalNewMessage.vue'; import NewMessage from './ModalNewMessage.vue';
import EditMessage from './ModalEditMessage.vue'; import EditMessage from './ModalEditMessage.vue';

View File

@ -5,14 +5,17 @@
class="box-100" class="box-100"
> >
<h3> <h3>
<span class="toggle-select"><i class="material-icons" @click="toggleCheck(checkStatus)">{{ checkIcon(checkStatus) <span class="toggle-select"><i
}}</i></span><span> class="mdi"
:class="[checkIcon(checkStatus)]"
@click="toggleCheck(checkStatus)"
/></span><span>
{{ t('word.host', 2) }}</span> {{ t('word.host', 2) }}</span>
</h3> </h3>
<div class="tools-box"> <div class="tools-box">
<div class="round-button green-bg" @click="showAdd"> <div class="round-button green-bg" @click="showAdd">
<span>{{ t('message.addHost') }}</span> <span>{{ t('message.addHost') }}</span>
<i class="material-icons">add</i> <i class="mdi mdi-plus" />
</div> </div>
</div> </div>
<ul id="hostList"> <ul id="hostList">
@ -27,10 +30,10 @@
<span>{{ host.host }}:{{ host.port }}</span> <span>{{ host.host }}:{{ host.port }}</span>
</label> </label>
<i <i
class="material-icons deleteHost" class="mdi mdi-close deleteHost"
:title="t('message.deleteHost', {host: `${host.host}:${host.port}`})" :title="t('message.deleteHost', {host: `${host.host}:${host.port}`})"
@click="deleteHost(index)" @click="deleteHost(index)"
>clear</i> />
</li> </li>
</ul> </ul>
</div> </div>
@ -83,11 +86,11 @@ const deleteHost = (value: number) => {
const checkIcon = (status: number) => { const checkIcon = (status: number) => {
switch (status) { switch (status) {
case 0: case 0:
return 'check_box_outline_blank'; return 'mdi-checkbox-blank-outline';
case 1: case 1:
return 'indeterminate_check_box'; return 'mdi-minus-box';
case 2: case 2:
return 'check_box'; return 'mdi-checkbox-marked';
} }
}; };

View File

@ -4,11 +4,17 @@
ref="root" ref="root"
class="box-100" class="box-100"
> >
<h3><span class="toggle-select"><i class="material-icons" @click="toggleCheck(checkStatus)">{{ checkIcon(checkStatus) }}</i></span><span>{{ t('word.message', 2) }}</span></h3> <h3>
<span class="toggle-select"><i
class="mdi"
:class="[checkIcon(checkStatus)]"
@click="toggleCheck(checkStatus)"
/></span><span>{{ t('word.message', 2) }}</span>
</h3>
<div class="tools-box"> <div class="tools-box">
<div class="round-button green-bg" @click="showAdd"> <div class="round-button green-bg" @click="showAdd">
<span>{{ t('message.addMessage') }}</span> <span>{{ t('message.addMessage') }}</span>
<i class="material-icons">add</i> <i class="mdi mdi-plus" />
</div> </div>
</div> </div>
<ul id="messageList"> <ul id="messageList">
@ -24,15 +30,15 @@
<span>{{ truncate(message.name, 25, '...') }}</span> <span>{{ truncate(message.name, 25, '...') }}</span>
</label> </label>
<i <i
class="material-icons editMessage" class="mdi mdi-pencil editMessage"
:title="t('message.editMessage', { message: message.name })" :title="t('message.editMessage', { message: message.name })"
@click="showEdit(index)" @click="showEdit(index)"
>edit</i> />
<i <i
class="material-icons deleteMessage" class="mdi mdi-close deleteMessage"
:title="t('message.deleteMessage', { message: message.name })" :title="t('message.deleteMessage', { message: message.name })"
@click="deleteMessage(index)" @click="deleteMessage(index)"
>clear</i> />
</li> </li>
</ul> </ul>
</div> </div>
@ -99,11 +105,11 @@ const deleteMessage = (index: number) => {
const checkIcon = (status: number) => { const checkIcon = (status: number) => {
switch (status) { switch (status) {
case 0: case 0:
return 'check_box_outline_blank'; return 'mdi-checkbox-blank-outline';
case 1: case 1:
return 'indeterminate_check_box'; return 'mdi-minus-box';
case 2: case 2:
return 'check_box'; return 'mdi-checkbox-marked';
} }
}; };

View File

@ -14,7 +14,7 @@
<tr v-for="(report, index) in reports" :key="index"> <tr v-for="(report, index) in reports" :key="index">
<td>{{ report.host }}</td> <td>{{ report.host }}</td>
<td>{{ report.sockets }}</td> <td>{{ report.sockets }}</td>
<td><span :title="t('word.sent', 2)">{{ report.messages.toLocaleString() }}</span> <i class="material-icons">import_export</i><span :title="t('word.received', 2)">{{ report.received }}</span></td> <td><span :title="t('word.sent', 2)">{{ report.messages.toLocaleString() }}</span><i class="mdi mdi-swap-vertical" /><span :title="t('word.received', 2)">{{ report.received }}</span></td>
<td><span :title="t('word.sent', 2)">{{ report.data.toLocaleString() }} B</span></td> <td><span :title="t('word.sent', 2)">{{ report.data.toLocaleString() }} B</span></td>
</tr> </tr>
</tbody> </tbody>
@ -22,7 +22,7 @@
<tr> <tr>
<td>{{ t('word.total', 2) }}</td> <td>{{ t('word.total', 2) }}</td>
<td>{{ totSockets }}</td> <td>{{ totSockets }}</td>
<td><span :title="t('word.sent', 2)">{{ totMessages.toLocaleString() }}</span> <i class="material-icons">import_export</i><span :title="t('word.received', 2)">{{ totReceived.toLocaleString() }}</span></td> <td><span :title="t('word.sent', 2)">{{ totMessages.toLocaleString() }}</span><i class="mdi mdi-swap-vertical" /><span :title="t('word.received', 2)">{{ totReceived.toLocaleString() }}</span></td>
<td><span :title="t('word.sent', 2)">{{ totData.toLocaleString() }} B</span></td> <td><span :title="t('word.sent', 2)">{{ totData.toLocaleString() }} B</span></td>
</tr> </tr>
</tfoot> </tfoot>

View File

@ -52,13 +52,13 @@
</fieldset> </fieldset>
<div class="buttons"> <div class="buttons">
<div v-if="running === 0" class="button-wrap"> <div v-if="running === 0" class="button-wrap">
<i class="material-icons white">play_arrow</i> <i class="mdi mdi-play white" />
<button class="confirm" type="submit"> <button class="confirm" type="submit">
{{ t('word.start') }} {{ t('word.start') }}
</button> </button>
</div> </div>
<div v-if="running === 1" class="button-wrap"> <div v-if="running === 1" class="button-wrap">
<i class="material-icons white">stop</i> <i class="mdi mdi-stop white" />
<button class="stop" @click="stopServer"> <button class="stop" @click="stopServer">
{{ t('word.stop') }} {{ t('word.stop') }}
</button> </button>

View File

@ -4,11 +4,17 @@
ref="root" ref="root"
class="box-100" class="box-100"
> >
<h3><span class="toggle-select"><i class="material-icons" @click="toggleCheck(checkStatus)">{{ checkIcon(checkStatus) }}</i></span><span>{{ t('word.port', 2) }}</span></h3> <h3>
<span class="toggle-select"><i
class="mdi"
:class="[checkIcon(checkStatus)]"
@click="toggleCheck(checkStatus)"
/></span><span>{{ t('word.port', 2) }}</span>
</h3>
<div class="tools-box"> <div class="tools-box">
<div class="round-button green-bg" @click="showAdd"> <div class="round-button green-bg" @click="showAdd">
<span>{{ t('message.addPort') }}</span> <span>{{ t('message.addPort') }}</span>
<i class="material-icons">add</i> <i class="mdi mdi-plus" />
</div> </div>
</div> </div>
<ul id="portList"> <ul id="portList">
@ -23,10 +29,10 @@
<span>{{ port.port }}</span> <span>{{ port.port }}</span>
</label> </label>
<i <i
class="material-icons deletePort" class="mdi mdi-close deletePort"
:title="`Elimina porta ${port.port}`" :title="`Elimina porta ${port.port}`"
@click="deletePort(index)" @click="deletePort(index)"
>clear</i> />
</li> </li>
</ul> </ul>
</div> </div>
@ -79,11 +85,11 @@ const deletePort = (value: number) => {
const checkIcon = (status: number) => { const checkIcon = (status: number) => {
switch (status) { switch (status) {
case 0: case 0:
return 'check_box_outline_blank'; return 'mdi-checkbox-blank-outline';
case 1: case 1:
return 'indeterminate_check_box'; return 'mdi-minus-box';
case 2: case 2:
return 'check_box'; return 'mdi-checkbox-marked';
} }
}; };

View File

@ -29,7 +29,7 @@
</table> </table>
<div class="buttons"> <div class="buttons">
<div class="button-wrap"> <div class="button-wrap">
<i class="material-icons">replay</i> <i class="mdi mdi-replay" />
<button <button
class="save" class="save"
:title="t('message.resetReceivedData')" :title="t('message.resetReceivedData')"

View File

@ -2,6 +2,7 @@
import { ipcRenderer } from 'electron'; import { ipcRenderer } from 'electron';
import { createApp } from 'vue'; import { createApp } from 'vue';
import { createPinia } from 'pinia'; import { createPinia } from 'pinia';
import '@mdi/font/css/materialdesignicons.css';
import '@/css/reset.css'; import '@/css/reset.css';
import '@/scss/main.scss'; import '@/scss/main.scss';

View File

@ -1,19 +1,6 @@
/* stylelint-disable block-no-empty */ /* stylelint-disable block-no-empty */
/* stylelint-disable selector-class-pattern */ /* stylelint-disable selector-class-pattern */
/* stylelint-disable selector-id-pattern */ /* stylelint-disable selector-id-pattern */
@font-face {
font-family: "Material Icons";
font-style: normal;
font-weight: 400;
src: url("@/fonts/MaterialIcons-Regular.eot"); /* For IE6-8 */
src:
local("Material Icons"),
local("MaterialIcons-Regular"),
url("@/fonts/MaterialIcons-Regular.woff2") format("woff2"),
url("@/fonts/MaterialIcons-Regular.woff") format("woff"),
url("@/fonts/MaterialIcons-Regular.ttf") format("truetype");
}
@font-face { @font-face {
font-family: "Roboto Regular"; font-family: "Roboto Regular";
font-style: normal; font-style: normal;
@ -28,32 +15,6 @@
src: url("@/fonts/RobotoMono-Regular.ttf") format("truetype"); src: url("@/fonts/RobotoMono-Regular.ttf") format("truetype");
} }
.material-icons {
font-family: "Material Icons";
font-style: normal;
font-weight: normal;
font-size: 14px;
display: inline-flex;
vertical-align: middle;
text-decoration: inherit;
margin-right: 2px;
text-align: center;
line-height: 1;
text-transform: initial;
/* Support for all WebKit browsers. */
-webkit-font-smoothing: antialiased;
/* Support for Safari and Chrome. */
text-rendering: optimizelegibility;
/* Support for Firefox. */
-moz-osx-font-smoothing: grayscale;
/* Support for IE. */
font-feature-settings: "liga";
}
/* Generale */ /* Generale */
* { * {
@ -174,7 +135,7 @@ label {
margin-bottom: 10px; margin-bottom: 10px;
} }
#header .material-icons { #header .mdi {
font-size: 24px; font-size: 24px;
margin-top: -2px; margin-top: -2px;
} }
@ -374,9 +335,9 @@ label {
transition: opacity 0.2s; transition: opacity 0.2s;
} }
#hostBox .round-button .material-icons, #hostBox .round-button .mdi,
#portBox .round-button .material-icons, #portBox .round-button .mdi,
#messageBox .round-button .material-icons { #messageBox .round-button .mdi {
font-size: 16px; font-size: 16px;
height: 16px; height: 16px;
margin: 0; margin: 0;
@ -628,7 +589,7 @@ fieldset:not(:disabled) #messageList li:hover .editMessage {
margin: 20px 5px; margin: 20px 5px;
} }
.button-wrap .material-icons { .button-wrap .mdi {
position: absolute; position: absolute;
top: 11px; top: 11px;
left: 8px; left: 8px;
@ -701,7 +662,7 @@ input[type="submit"] {
width: max-content; width: max-content;
} }
.button-wrap .material-icons.white { .button-wrap .mdi.white {
color: #fff; color: #fff;
} }
@ -768,7 +729,7 @@ fieldset:disabled .checkbox {
position: relative; position: relative;
} }
.toggle-select .material-icons { .toggle-select .mdi {
font-size: 18px; font-size: 18px;
color: #1565c0; color: #1565c0;
z-index: 1; z-index: 1;
@ -796,7 +757,7 @@ fieldset:disabled .checkbox {
min-width: 14px; min-width: 14px;
background: #ebebeb; background: #ebebeb;
margin-right: 5px; margin-right: 5px;
border: 2px solid #1565c0; border: 2px solid #1565c0cc;
border-radius: 2px; border-radius: 2px;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
@ -808,50 +769,16 @@ fieldset:disabled .checkbox {
} }
.checkbox input:checked + .checkbox-block { .checkbox input:checked + .checkbox-block {
background: #1565c0; background: transparent;
} }
.checkbox input:checked + .checkbox-block::before { .checkbox input:checked + .checkbox-block::before {
content: "done"; content: "\F0132";
display: block; display: inline-block;
font-family: "Material Icons"; color: #1565c0;
color: #fcfcfc; font: normal normal normal 18px/1 "Material Design Icons";
font-size: 14px; text-rendering: auto;
line-height: inherit;
/* Support for all WebKit browsers. */
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
border: 2px solid transparent;
/* Support for Safari and Chrome. */
text-rendering: optimizelegibility;
/* Support for Firefox. */
-moz-osx-font-smoothing: grayscale;
/* Support for IE. */
font-feature-settings: "liga";
}
/* TABLET PORTRAIT */
@media only screen and (min-width: 768px) {
/* 768px-HEADER */
/* 768px-MAIN */
/* 768px-FOOTER */
}
/* TABLET LANDSCAPE & NETBOOK */
@media only screen and (min-width: 1024px) {
/* 1024px-HEADER */
/* 1024px-MAIN */
/* SIDEBAR */
/* 1024px-FOOTER */
}
/* DESKTOP */
@media only screen and (min-width: 1200px) {
} }