fix: various fixes and improvements

Co-authored-by: David Ralph <me@davidcralph.co.uk>
This commit is contained in:
alexsparkes 2022-08-16 16:38:22 +01:00
parent ff49fa6d48
commit c77a37cbb8
39 changed files with 482 additions and 125 deletions

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -26,7 +26,7 @@ export default function Items({
return ( return (
<> <>
{(type === 'all' && !onCollection) || type === 'collections' ? ( {(type === 'all' && !onCollection) || (type === 'collections' && !onCollection) ? (
<> <>
<div <div
className="collection" className="collection"

View File

@ -207,13 +207,13 @@ export default class Create extends PureComponent {
<div className="smallBanner"> <div className="smallBanner">
<div className="content"> <div className="content">
<span className="title" style={{ textTransform: 'capitalize' }}> <span className="title" style={{ textTransform: 'capitalize' }}>
{getMessage('modals.main.addons.create.metadata.create_type', { {getMessage(
type: this.state.addonMetadata.type, 'modals.main.addons.create.types.' + this.state.addonMetadata.type,
})} ) || 'marketplace'}
</span> </span>
<span className="subtitle"> <span className="subtitle">
{getMessage( {getMessage(
'modals.main.addons.create.metadata.descriptions.' + this.state.addonMetadata.type, 'modals.main.addons.create.descriptions.' + this.state.addonMetadata.type,
) || 'marketplace'} ) || 'marketplace'}
</span> </span>
</div> </div>
@ -236,7 +236,7 @@ export default class Create extends PureComponent {
<span className="subtitle"> <span className="subtitle">
<InfoTooltip <InfoTooltip
title={getMessage('modals.main.addons.create.information')} title={getMessage('modals.main.addons.create.information')}
subtitle={getMessage('modals.main.addons.create.metadata.information_subtitle')} subtitle={getMessage('modals.main.addons.create.information_subtitle')}
/> />
</span> </span>
</div> </div>

View File

@ -1,7 +1,14 @@
import variables from 'modules/variables'; import variables from 'modules/variables';
import { PureComponent } from 'react'; import { PureComponent } from 'react';
import { toast } from 'react-toastify'; import { toast } from 'react-toastify';
import { MdWifiOff, MdLocalMall, MdOutlineKeyboardArrowRight, MdRefresh } from 'react-icons/md'; import {
MdWifiOff,
MdLocalMall,
MdOutlineKeyboardArrowRight,
MdRefresh,
MdOutlineArrowForward,
MdOutlineOpenInNew,
} from 'react-icons/md';
import Item from '../Item'; import Item from '../Item';
import Items from '../Items'; import Items from '../Items';
@ -122,8 +129,12 @@ export default class Marketplace extends PureComponent {
} }
async getItems() { async getItems() {
const dataURL =
this.props.type === 'collections'
? variables.constants.MARKETPLACE_URL + '/collections'
: variables.constants.MARKETPLACE_URL + '/items/' + this.props.type;
const { data } = await ( const { data } = await (
await fetch(variables.constants.MARKETPLACE_URL + '/items/' + this.props.type, { await fetch(dataURL, {
signal: this.controller.signal, signal: this.controller.signal,
}) })
).json(); ).json();
@ -355,14 +366,46 @@ export default class Marketplace extends PureComponent {
</div> </div>
</> </>
)} )}
<Items {this.props.type === 'collections' && !this.state.collection ? (
type={this.props.type} this.state.items.map((item) => (
items={this.state.items} <>
collections={this.state.collections} {!item.news ? (
onCollection={this.state.collection} <div
toggleFunction={(input) => this.toggle('item', input)} className="collection"
collectionFunction={(input) => this.toggle('collection', input)} style={
/> item.news
? { backgroundColor: item.background_colour }
: {
backgroundImage: `linear-gradient(to left, #000, transparent, #000), url('${item.img}')`,
}
}
>
<div className="content">
<span className="title">{item.display_name}</span>
<span className="subtitle">{item.description}</span>
</div>
<button
className="nice-button"
onClick={() => this.toggle('collection', item.name)}
>
<MdOutlineArrowForward />{' '}
{this.getMessage('modals.main.marketplace.explore_collection')}
</button>
</div>
) : null}
</>
))
) : (
<Items
type={this.props.type}
items={this.state.items}
collections={this.state.collections}
onCollection={this.state.collection}
toggleFunction={(input) => this.toggle('item', input)}
collectionFunction={(input) => this.toggle('collection', input)}
/>
)}
</> </>
); );
} }

View File

@ -40,8 +40,9 @@
} }
img { img {
height: 80% !important; object-fit: cover !important;
width: auto !important; height: 50px !important;
width: 50px !important;
border-radius: 12px; border-radius: 12px;
transition: 0.5s; transition: 0.5s;
@ -407,7 +408,8 @@ p.author {
justify-content: center; justify-content: center;
} }
button.nice-button, a.nice-button{ button.nice-button,
a.nice-button {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 15px; gap: 15px;

View File

@ -191,7 +191,7 @@ h4 {
.achievements { .achievements {
margin-top: 25px; margin-top: 25px;
display: grid; display: grid;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
grid-gap: 10px; grid-gap: 10px;
} }
@ -215,7 +215,7 @@ h4 {
} }
} }
.statSection { .statSection.rightPanel {
padding: 25px; padding: 25px;
@include themed() { @include themed() {
border-radius: t($borderRadius); border-radius: t($borderRadius);

View File

@ -6,6 +6,7 @@ import { TextField } from '@mui/material';
import EventBus from 'modules/helpers/eventbus'; import EventBus from 'modules/helpers/eventbus';
import { values } from 'modules/helpers/settings/modals'; import { values } from 'modules/helpers/settings/modals';
import SettingsItem from '../SettingsItem';
export default function ExperimentalSettings() { export default function ExperimentalSettings() {
const getMessage = (text) => variables.language.getMessage(variables.languagecode, text); const getMessage = (text) => variables.language.getMessage(variables.languagecode, text);
@ -14,46 +15,50 @@ export default function ExperimentalSettings() {
return ( return (
<> <>
<h2>{getMessage('modals.main.settings.sections.experimental.title')}</h2> <span className="mainTitle">
<p>{getMessage('modals.main.settings.sections.experimental.warning')}</p> {getMessage('modals.main.settings.sections.experimental.title')}
<h3>{getMessage('modals.main.settings.sections.experimental.developer')}</h3> </span>
<Checkbox name="debug" text="Debug hotkey (Ctrl + #)" element=".other" /> <span className="subtitle">
<Slider {getMessage('modals.main.settings.sections.experimental.warning')}
title="Debug timeout" </span>
name="debugtimeout" <SettingsItem title={getMessage('modals.main.settings.sections.experimental.developer')}>
min="0" <Checkbox name="debug" text="Debug hotkey (Ctrl + #)" element=".other" />
max="5000" <Slider
default="0" title="Debug timeout"
step="100" name="debugtimeout"
marks={values('experimental')} min="0"
element=".other" max="5000"
/> default="0"
<p>Send Event</p> step="100"
<TextField marks={values('experimental')}
label={'Type'} element=".other"
value={eventType} />
onChange={(e) => setEventType(e.target.value)} <p>Send Event</p>
spellCheck={false} <TextField
varient="outlined" label={'Type'}
InputLabelProps={{ shrink: true }} value={eventType}
/> onChange={(e) => setEventType(e.target.value)}
<TextField spellCheck={false}
label={'Name'} varient="outlined"
value={eventName} InputLabelProps={{ shrink: true }}
onChange={(e) => setEventName(e.target.value)} />
spellCheck={false} <TextField
varient="outlined" label={'Name'}
InputLabelProps={{ shrink: true }} value={eventName}
/> onChange={(e) => setEventName(e.target.value)}
<br /> spellCheck={false}
varient="outlined"
InputLabelProps={{ shrink: true }}
/>
</SettingsItem>
<SettingsItem title={getMessage('modals.main.settings.sections.experimental.developer')} final={true}>
<button className="uploadbg" onClick={() => EventBus.dispatch(eventType, eventName)}> <button className="uploadbg" onClick={() => EventBus.dispatch(eventType, eventName)}>
Send Send
</button> </button>
<br />
<br />
<button className="reset" style={{ marginLeft: '0px' }} onClick={() => localStorage.clear()}> <button className="reset" style={{ marginLeft: '0px' }} onClick={() => localStorage.clear()}>
Clear LocalStorage Clear LocalStorage
</button> </button>
</SettingsItem>
</> </>
); );
} }

View File

@ -9,6 +9,23 @@ import { FaTrophy } from 'react-icons/fa';
import EventBus from 'modules/helpers/eventbus'; import EventBus from 'modules/helpers/eventbus';
import achievementsData from 'modules/helpers/settings/achievements.json'; import achievementsData from 'modules/helpers/settings/achievements.json';
import translations from 'modules/helpers/settings/achievement_translations/index';
const achievementLanguage = {
de_DE: translations.de_DE,
en_GB: translations.en_GB,
en_US: translations.en_US,
es: translations.es,
fr: translations.fr,
nl: translations.nl,
no: translations.no,
ru: translations.ru,
zh_CN: translations.zh_CN,
id_ID: translations.id_ID,
tr_TR: translations.tr_TR,
};
console.log(achievementLanguage.en_GB)
export default class Stats extends PureComponent { export default class Stats extends PureComponent {
constructor() { constructor() {
@ -19,7 +36,7 @@ export default class Stats extends PureComponent {
}; };
} }
getAchivements() { getAchievements() {
const achievements = this.state.achievements; const achievements = this.state.achievements;
achievements.forEach((achievement) => { achievements.forEach((achievement) => {
switch (achievement.condition.type) { switch (achievement.condition.type) {
@ -68,7 +85,8 @@ export default class Stats extends PureComponent {
} }
}); });
this.getAchivements(); this.getAchievements();
this.forceUpdate();
} }
componentWillUnmount() { componentWillUnmount() {
@ -99,12 +117,12 @@ export default class Stats extends PureComponent {
); );
} }
const achievementElement = (name, description) => ( const achievementElement = (key, name, description) => (
<div className="achievement"> <div className="achievement">
<FaTrophy /> <FaTrophy />
<div className="achievementContent"> <div className="achievementContent">
<span>{name}</span> <span>{name}</span>
<span className="subtitle">{description}</span> <span className="subtitle">{achievementLanguage[localStorage.getItem('language')][key]}</span>
</div> </div>
</div> </div>
); );
@ -132,9 +150,9 @@ export default class Stats extends PureComponent {
{this.getUnlockedCount()}/{this.state.achievements.length} Unlocked {this.getUnlockedCount()}/{this.state.achievements.length} Unlocked
</span> </span>
<div className="achievements"> <div className="achievements">
{this.state.achievements.map((achievement) => { {this.state.achievements.map((achievement, index) => {
if (achievement.achieved) { if (achievement.achieved) {
return achievementElement(achievement.name, achievement.description); return achievementElement(index, achievement.name, achievement.description);
} }
})} })}
</div> </div>

View File

@ -17,16 +17,33 @@ export default class TimeSettings extends PureComponent {
super(); super();
this.state = { this.state = {
timeType: localStorage.getItem('timeType') || 'digital', timeType: localStorage.getItem('timeType') || 'digital',
colour: localStorage.getItem('minuteColour') || '#ffa500', hourColour: localStorage.getItem('hourColour') || '#fff',
minuteColour: localStorage.getItem('minuteColour') || '#fff',
}; };
} }
updateColour(event) { updateHourColour(event) {
const colour = event.target.value; const hourColour = event.target.value;
this.setState({ colour }); this.setState({ hourColour });
localStorage.setItem('minuteColour', colour); localStorage.setItem('hourColour', hourColour);
} }
updateMinuteColour(event) {
const minuteColour = event.target.value;
this.setState({ minuteColour });
localStorage.setItem('minuteColour', minuteColour);
}
resetHourColour() {
localStorage.setItem('hourColour', '#fff')
}
resetMinuteColour() {
localStorage.setItem('minuteColour', '#fff')
}
render() { render() {
const getMessage = (text) => variables.language.getMessage(variables.languagecode, text); const getMessage = (text) => variables.language.getMessage(variables.languagecode, text);
@ -102,24 +119,41 @@ export default class TimeSettings extends PureComponent {
const verticalClock = ( const verticalClock = (
<> <>
<SettingsItem <SettingsItem title="Change minute text hour colour" subtitle="">
title="Change minute text colour" <div className="colourInput">
subtitle="" <input
> type="color"
<div className="colorPicker"> name="minuteColour"
<input className="minuteColour"
type="color" onChange={(event) => this.updateHourColour(event)}
name="colour" value={this.state.hourColour}
className="colour" ></input>
onChange={(event) => this.updateColour(event)} <label htmlFor={'hourColour'} className="customBackgroundHex">
value={this.state.colour} {this.state.hourColour}
></input> </label>
<label htmlFor={'colour'} className="customBackgroundHex"> </div>
{this.state.colour} <span className="link" onClick={() => this.resetHourColour()}>
</label> {getMessage('modals.main.settings.buttons.reset')}
</div> </span>
</SettingsItem> </SettingsItem>
{digitalSettings} <SettingsItem title="Change minute text minute colour" subtitle="">
<div className="colourInput">
<input
type="color"
name="minuteColour"
className="minuteColour"
onChange={(event) => this.updateMinuteColour(event)}
value={this.state.minuteColour}
></input>
<label htmlFor={'minuteColour'} className="customBackgroundHex">
{this.state.minuteColour}
</label>
</div>
<span className="link" onClick={() => this.resetMinuteColour()}>
{getMessage('modals.main.settings.buttons.reset')}
</span>
</SettingsItem>
{digitalSettings}
</> </>
); );

View File

@ -3,14 +3,14 @@ import { MdPerson } from 'react-icons/md';
export default function QuoteSkeleton() { export default function QuoteSkeleton() {
return ( return (
<div className="quoteSkeleton"> <div className="quoteSkeleton">
<span className="subtitle">"Cheese good"</span> <span className="subtitle">"Never gonna give you up"</span>
<div className="skeletonAuthor"> <div className="skeletonAuthor">
<div> <div>
<MdPerson /> <MdPerson />
</div> </div>
<div className="text"> <div className="text">
<span className="title">James May</span> <span className="title">Rick Astley</span>
<span className="subtitle">Cheese Man</span> <span className="subtitle">Music Genius</span>
</div> </div>
</div> </div>
</div> </div>

View File

@ -20,8 +20,8 @@ export default function Marketplace(props) {
<div label={getMessage('modals.main.marketplace.preset_settings')} name="preset_settings"> <div label={getMessage('modals.main.marketplace.preset_settings')} name="preset_settings">
<MarketplaceTab type="preset_settings" /> <MarketplaceTab type="preset_settings" />
</div> </div>
<div label="Collections" name="collection"> <div label="Collections" name="collections">
<MarketplaceTab type="collection" /> <MarketplaceTab type="collections" />
</div> </div>
</Tabs> </Tabs>
); );

View File

@ -16,7 +16,7 @@ export default class WelcomeModal extends PureComponent {
this.state = { this.state = {
image: './././icons/undraw_celebration.svg', image: './././icons/undraw_celebration.svg',
currentTab: 0, currentTab: 0,
finalTab: 4, finalTab: 5,
buttonText: this.getMessage('modals.welcome.buttons.next'), buttonText: this.getMessage('modals.welcome.buttons.next'),
}; };
this.images = [ this.images = [
@ -24,6 +24,7 @@ export default class WelcomeModal extends PureComponent {
'./././icons/undraw_around_the_world_modified.svg', './././icons/undraw_around_the_world_modified.svg',
'./././icons/undraw_add_files_modified.svg', './././icons/undraw_add_files_modified.svg',
'./././icons/undraw_dark_mode.svg', './././icons/undraw_dark_mode.svg',
'./././icons/undraw_making_art.svg',
'./././icons/undraw_private_data_modified.svg', './././icons/undraw_private_data_modified.svg',
'./././icons/undraw_upgrade_modified.svg', './././icons/undraw_upgrade_modified.svg',
]; ];

View File

@ -1,6 +1,15 @@
import variables from 'modules/variables'; import variables from 'modules/variables';
import { PureComponent } from 'react'; import { PureComponent } from 'react';
import { MdCloudUpload, MdAutoAwesome, MdLightMode, MdDarkMode, MdCelebration, MdOpenInNew} from 'react-icons/md'; import {
MdCloudUpload,
MdAutoAwesome,
MdLightMode,
MdDarkMode,
MdOutlineWavingHand,
MdOpenInNew,
MdOutlineWhatshot,
MdArchive,
} from 'react-icons/md';
import { FaDiscord, FaGithub } from 'react-icons/fa'; import { FaDiscord, FaGithub } from 'react-icons/fa';
import Radio from '../main/settings/Radio'; import Radio from '../main/settings/Radio';
@ -132,7 +141,9 @@ export default class WelcomeSections extends PureComponent {
<span className="link">#shareyourmue</span> <span className="link">#shareyourmue</span>
<div className="welcomeNotice"> <div className="welcomeNotice">
<div className="icon"><MdCelebration /></div> <div className="icon">
<MdOutlineWavingHand />
</div>
<div className="text"> <div className="text">
<span className="title">{this.getMessage('modals.welcome.sections.intro.title')}</span> <span className="title">{this.getMessage('modals.welcome.sections.intro.title')}</span>
<span className="subtitle"> <span className="subtitle">
@ -144,21 +155,25 @@ export default class WelcomeSections extends PureComponent {
<div className="icon"> <div className="icon">
<FaDiscord /> <FaDiscord />
</div> </div>
<div className="text"> <div className="text">
<span className="title">Join our discord</span> <span className="title">Join our Discord</span>
<span className="subtitle">Join our community</span> <span className="subtitle">Talk with the Mue community and developers</span>
</div> </div>
<button><MdOpenInNew /> Join</button> <button>
<MdOpenInNew /> Join
</button>
</div> </div>
<div className="welcomeNotice"> <div className="welcomeNotice">
<div className="icon"> <div className="icon">
<FaGithub /> <FaGithub />
</div> </div>
<div className="text"> <div className="text">
<span className="title">Contribute on Github</span> <span className="title">Contribute on GitHub</span>
<span className="subtitle">Contribute</span> <span className="subtitle">Report bugs, add features or donate</span>
</div> </div>
<button><MdOpenInNew /> Open</button> <button>
<MdOpenInNew /> Open
</button>
</div> </div>
</> </>
); );
@ -213,6 +228,25 @@ export default class WelcomeSections extends PureComponent {
</> </>
); );
const style = (
<>
<span className='mainTitle'>Choose a theme</span>
<span className="subtitle">Mue currently offers the choice between the legacy styling and the newly released modern styling.</span>
<div className="themesToggleArea">
<div className="options">
<div className={this.state.lightClass} onClick={() => this.changeTheme('light')}>
<MdArchive />
<span>Legacy</span>
</div>
<div className={this.state.darkClass} onClick={() => this.changeTheme('dark')}>
<MdOutlineWhatshot />
<span>Modern</span>
</div>
</div>
</div>
</>
)
const settings = ( const settings = (
<> <>
<span className="mainTitle"> <span className="mainTitle">
@ -340,8 +374,10 @@ export default class WelcomeSections extends PureComponent {
case 3: case 3:
return theme; return theme;
case 4: case 4:
return privacy; return style;
case 5: case 5:
return privacy;
case 6:
return final; return final;
// 0 // 0
default: default:

View File

@ -118,10 +118,12 @@ export default class Quote extends PureComponent {
`https://en.wikipedia.org/w/api.php?action=query&titles=${author}&origin=*&prop=pageimages&format=json&pithumbsize=100`, `https://en.wikipedia.org/w/api.php?action=query&titles=${author}&origin=*&prop=pageimages&format=json&pithumbsize=100`,
) )
).json(); ).json();
let authorimg, authorimglicense; let authorimg, authorimglicense;
try { try {
authorimg = authorimg =
authorimgdata.query.pages[Object.keys(authorimgdata.query.pages)[0]].thumbnail.source; authorimgdata.query.pages[Object.keys(authorimgdata.query.pages)[0]].thumbnail.source;
const authorimglicensedata = await ( const authorimglicensedata = await (
await fetch( await fetch(
`https://en.wikipedia.org/w/api.php?action=query&prop=imageinfo&iiprop=extmetadata&titles=File:${ `https://en.wikipedia.org/w/api.php?action=query&prop=imageinfo&iiprop=extmetadata&titles=File:${
@ -129,6 +131,7 @@ export default class Quote extends PureComponent {
}&origin=*&format=json`, }&origin=*&format=json`,
) )
).json(); ).json();
const license = const license =
authorimglicensedata.query.pages[Object.keys(authorimglicensedata.query.pages)[0]] authorimglicensedata.query.pages[Object.keys(authorimglicensedata.query.pages)[0]]
.imageinfo[0].extmetadata.LicenseShortName; .imageinfo[0].extmetadata.LicenseShortName;
@ -136,6 +139,7 @@ export default class Quote extends PureComponent {
authorimglicensedata.query.pages[Object.keys(authorimglicensedata.query.pages)[0]] authorimglicensedata.query.pages[Object.keys(authorimglicensedata.query.pages)[0]]
.imageinfo[0].extmetadata.Attribution || 'Unknown'; .imageinfo[0].extmetadata.Attribution || 'Unknown';
authorimglicense = `© ${photographer.value}. ${license.value}`; authorimglicense = `© ${photographer.value}. ${license.value}`;
if (license.value === 'Public domain') { if (license.value === 'Public domain') {
authorimglicense = null; authorimglicense = null;
} else if (photographer.value === 'Unknown' || !photographer) { } else if (photographer.value === 'Unknown' || !photographer) {
@ -458,7 +462,7 @@ export default class Quote extends PureComponent {
{this.state.authorOccupation !== 'Unknown' ? ( {this.state.authorOccupation !== 'Unknown' ? (
<span className="subtitle">{this.state.authorOccupation}</span> <span className="subtitle">{this.state.authorOccupation}</span>
) : null} ) : null}
<span className="author-license">{this.state.authorimglicense}</span> <span className="author-license">{this.state.authorimglicense ? this.state.authorimglicense.replace(' undefined. ', ' ') : null}</span>
</div> </div>
) : ( ) : (
<div className="author-content whileLoading" ref={this.quoteauthor}> <div className="author-content whileLoading" ref={this.quoteauthor}>

View File

@ -21,6 +21,7 @@ export default class Clock extends PureComponent {
ampm: '', ampm: '',
nowGlobal: new Date(), nowGlobal: new Date(),
minuteColour: localStorage.getItem('minuteColour'), minuteColour: localStorage.getItem('minuteColour'),
hourColour: localStorage.getItem('hourColour'),
}; };
} }
@ -189,7 +190,7 @@ export default class Clock extends PureComponent {
<> <>
<span className="new-clock clock-container"> <span className="new-clock clock-container">
{' '} {' '}
<div className="hour">{this.state.finalHour}</div>{' '} <div className="hour" style={{ color: this.state.hourColour }}>{this.state.finalHour}</div>{' '}
<div className="minute" style={{ color: this.state.minuteColour }}>{this.state.finalMinute}</div>{' '} <div className="minute" style={{ color: this.state.minuteColour }}>{this.state.finalMinute}</div>{' '}
<div className="seconds">{this.state.finalSeconds}</div>{' '} <div className="seconds">{this.state.finalSeconds}</div>{' '}
</span> </span>

View File

@ -146,8 +146,9 @@ export default class Weather extends PureComponent {
} }
render() { render() {
const weatherType = localStorage.getItem('weatherType');
const enabled = (setting) => { const enabled = (setting) => {
return localStorage.getItem(setting) === 'true' && localStorage.getItem('weatherType') >= 3; return localStorage.getItem(setting) === 'true' && weatherType >= 3;
}; };
if ( if (
@ -213,7 +214,7 @@ export default class Weather extends PureComponent {
</> </>
) : null} ) : null}
*/} */}
{localStorage.getItem('weatherType') >= 3 && ( {weatherType >= 3 && (
<span className="subtitle"> <span className="subtitle">
{variables.language.getMessage( {variables.language.getMessage(
variables.languagecode, variables.languagecode,
@ -221,13 +222,13 @@ export default class Weather extends PureComponent {
)} )}
</span> </span>
)} )}
{enabled('cloudiness') ? ( {enabled('cloudiness') || weatherType === 3 ? (
<span> <span>
<WiCloud className="weatherIcon" /> <WiCloud className="weatherIcon" />
{this.state.weather.cloudiness}% {this.state.weather.cloudiness}%
</span> </span>
) : null} ) : null}
{enabled('windspeed') ? ( {enabled('windspeed') || weatherType === 3 ? (
<span> <span>
<WiWindy className="weatherIcon" /> <WiWindy className="weatherIcon" />
{this.state.weather.wind_speed} {this.state.weather.wind_speed}
@ -242,14 +243,14 @@ export default class Weather extends PureComponent {
) : null} ) : null}
</span> </span>
) : null} ) : null}
{enabled('atmosphericpressure') ? ( {enabled('atmosphericpressure') || weatherType === 3 ? (
<span> <span>
<WiBarometer className="weatherIcon" /> <WiBarometer className="weatherIcon" />
{this.state.weather.pressure} {this.state.weather.pressure}
<span className="minmax"> hPa</span> <span className="minmax"> hPa</span>
</span> </span>
) : null} ) : null}
{enabled('weatherdescription') ? ( {enabled('weatherdescription') || weatherType === 3 ? (
<span> <span>
<div className="weatherIcon"> <div className="weatherIcon">
<WeatherIcon name={this.state.icon} /> <WeatherIcon name={this.state.icon} />
@ -257,7 +258,7 @@ export default class Weather extends PureComponent {
{this.state.weather.description} {this.state.weather.description}
</span> </span>
) : null} ) : null}
{enabled('visibility') ? ( {enabled('visibility') || weatherType === 3 ? (
<span> <span>
<MdDisabledVisible style={{ padding: '3px' }} /> <MdDisabledVisible style={{ padding: '3px' }} />
{variables.language.getMessage(variables.languagecode, 'widgets.weather.meters', { {variables.language.getMessage(variables.languagecode, 'widgets.weather.meters', {
@ -297,7 +298,7 @@ export default class Weather extends PureComponent {
</div> </div>
)} )}
</div> </div>
{expandedInfo()} {weatherType == 3 ? expandedInfo() : null}
</div> </div>
); );
} }

View File

@ -0,0 +1,8 @@
[
"Opened 10 tabs",
"Opened 39 tabs",
"Opened 100 tabs",
"Opened 305 tabs",
"Installed an add-on",
"Installed 5 add-ons"
]

View File

@ -0,0 +1,8 @@
[
"Opened 10 tabs",
"Opened 39 tabs",
"Opened 100 tabs",
"Opened 305 tabs",
"Installed an add-on",
"Installed 5 add-ons"
]

View File

@ -0,0 +1,8 @@
[
"Opened 10 tabs",
"Opened 39 tabs",
"Opened 100 tabs",
"Opened 305 tabs",
"Installed an add-on",
"Installed 5 add-ons"
]

View File

@ -0,0 +1,8 @@
[
"Opened 10 tabs",
"Opened 39 tabs",
"Opened 100 tabs",
"Opened 305 tabs",
"Installed an add-on",
"Installed 5 add-ons"
]

View File

@ -0,0 +1,8 @@
[
"Opened 10 tabs",
"Opened 39 tabs",
"Opened 100 tabs",
"Opened 305 tabs",
"Installed an add-on",
"Installed 5 add-ons"
]

View File

@ -0,0 +1,8 @@
[
"Opened 10 tabs",
"Opened 39 tabs",
"Opened 100 tabs",
"Opened 305 tabs",
"Installed an add-on",
"Installed 5 add-ons"
]

View File

@ -0,0 +1,27 @@
import de_DE from './de_DE.json';
import en_GB from './en_GB.json';
import en_US from './en_US.json';
import es from './es.json';
import fr from './fr.json';
import nl from './nl.json';
import no from './no.json';
import ru from './ru.json';
import zh_CN from './zh_CN.json';
import id_ID from './id_ID.json';
import tr_TR from './tr_TR.json';
const translations = {
de_DE,
en_GB,
en_US,
es,
fr,
nl,
no,
ru,
zh_CN,
id_ID,
tr_TR,
};
export default translations;

View File

@ -0,0 +1,8 @@
[
"Opened 10 tabs",
"Opened 39 tabs",
"Opened 100 tabs",
"Opened 305 tabs",
"Installed an add-on",
"Installed 5 add-ons"
]

View File

@ -0,0 +1,8 @@
[
"Opened 10 tabs",
"Opened 39 tabs",
"Opened 100 tabs",
"Opened 305 tabs",
"Installed an add-on",
"Installed 5 add-ons"
]

View File

@ -0,0 +1,8 @@
[
"Opened 10 tabs",
"Opened 39 tabs",
"Opened 100 tabs",
"Opened 305 tabs",
"Installed an add-on",
"Installed 5 add-ons"
]

View File

@ -0,0 +1,8 @@
[
"Opened 10 tabs",
"Opened 39 tabs",
"Opened 100 tabs",
"Opened 305 tabs",
"Installed an add-on",
"Installed 5 add-ons"
]

View File

@ -0,0 +1,8 @@
[
"Opened 10 tabs",
"Opened 39 tabs",
"Opened 100 tabs",
"Opened 305 tabs",
"Installed an add-on",
"Installed 5 add-ons"
]

View File

@ -146,6 +146,7 @@
"custom_author": "Benutzerdefinierter Autor", "custom_author": "Benutzerdefinierter Autor",
"author_img": "Show author image", "author_img": "Show author image",
"add": "Add quote", "add": "Add quote",
"source_subtitle": "Choose where to get quotes from",
"buttons": { "buttons": {
"title": "Schaltflächen", "title": "Schaltflächen",
"subtitle": "Choose which buttons to show on the quote", "subtitle": "Choose which buttons to show on the quote",
@ -527,8 +528,15 @@
"example": "Example", "example": "Example",
"other_title": "Add-on erstellen", "other_title": "Add-on erstellen",
"create_type": "Create {type} Pack", "create_type": "Create {type} Pack",
"types": {
"settings": "Preset Settings Pack",
"photos": "Photo Pack",
"quotes": "Quotes Pack"
},
"descriptions": { "descriptions": {
"settings": "", "settings": "",
"photos": "Collection of photos relating to a topic.",
"quotes": "Collection of quotes relating to a topic.",
"photo_pack": "", "photo_pack": "",
"quote_pack": "" "quote_pack": ""
}, },
@ -544,7 +552,8 @@
"name": "Name", "name": "Name",
"icon_url": "Icon URL", "icon_url": "Icon URL",
"screenshot_url": "Screenshot URL", "screenshot_url": "Screenshot URL",
"description": "Beschreibung" "description": "Beschreibung",
"example": "Download example"
}, },
"finish": { "finish": {
"title": "Fertig", "title": "Fertig",

View File

@ -527,10 +527,15 @@
"example": "Example", "example": "Example",
"other_title": "Create Add-on", "other_title": "Create Add-on",
"create_type": "Create {type} Pack", "create_type": "Create {type} Pack",
"types": {
"settings": "Preset Settings Pack",
"photos": "Photo Pack",
"quotes": "Quotes Pack"
},
"descriptions": { "descriptions": {
"settings": "", "settings": "This a shared settings ting.",
"photo_pack": "", "photos": "Collection of photos relating to a topic.",
"quote_pack": "" "quotes": "Collection of quotes relating to a topic."
}, },
"information": "Information", "information": "Information",
"information_subtitle": "For example: 1.2.3 (major update, minor update, patch update)", "information_subtitle": "For example: 1.2.3 (major update, minor update, patch update)",
@ -544,7 +549,8 @@
"name": "Name", "name": "Name",
"icon_url": "Icon URL", "icon_url": "Icon URL",
"screenshot_url": "Screenshot URL", "screenshot_url": "Screenshot URL",
"description": "Description" "description": "Description",
"example": "Download example"
}, },
"finish": { "finish": {
"title": "Finish", "title": "Finish",

View File

@ -146,6 +146,7 @@
"custom_author": "Custom author", "custom_author": "Custom author",
"author_img": "Show author image", "author_img": "Show author image",
"add": "Add quote", "add": "Add quote",
"source_subtitle": "Choose where to get quotes from",
"buttons": { "buttons": {
"title": "Buttons", "title": "Buttons",
"subtitle": "Choose which buttons to show on the quote", "subtitle": "Choose which buttons to show on the quote",
@ -526,8 +527,15 @@
"example": "Example", "example": "Example",
"other_title": "Create Add-on", "other_title": "Create Add-on",
"create_type": "Create {type} Pack", "create_type": "Create {type} Pack",
"types": {
"settings": "Preset Settings Pack",
"photos": "Photo Pack",
"quotes": "Quotes Pack"
},
"descriptions": { "descriptions": {
"settings": "", "settings": "",
"photos": "Collection of photos relating to a topic.",
"quotes": "Collection of quotes relating to a topic.",
"photo_pack": "", "photo_pack": "",
"quote_pack": "" "quote_pack": ""
}, },
@ -543,7 +551,8 @@
"name": "Name", "name": "Name",
"icon_url": "Icon URL", "icon_url": "Icon URL",
"screenshot_url": "Screenshot URL", "screenshot_url": "Screenshot URL",
"description": "Description" "description": "Description",
"example": "Download example"
}, },
"finish": { "finish": {
"title": "Finish", "title": "Finish",

View File

@ -146,6 +146,7 @@
"custom_author": "Autor personalizado", "custom_author": "Autor personalizado",
"author_img": "Show author image", "author_img": "Show author image",
"add": "Añadir cita", "add": "Añadir cita",
"source_subtitle": "Choose where to get quotes from",
"buttons": { "buttons": {
"title": "Botones", "title": "Botones",
"subtitle": "Choose which buttons to show on the quote", "subtitle": "Choose which buttons to show on the quote",
@ -526,8 +527,15 @@
"example": "Example", "example": "Example",
"other_title": "Crear complemento", "other_title": "Crear complemento",
"create_type": "Create {type} Pack", "create_type": "Create {type} Pack",
"types": {
"settings": "Preset Settings Pack",
"photos": "Photo Pack",
"quotes": "Quotes Pack"
},
"descriptions": { "descriptions": {
"settings": "", "settings": "",
"photos": "Collection of photos relating to a topic.",
"quotes": "Collection of quotes relating to a topic.",
"photo_pack": "", "photo_pack": "",
"quote_pack": "" "quote_pack": ""
}, },
@ -543,7 +551,8 @@
"name": "Nombre", "name": "Nombre",
"icon_url": "URL del icono", "icon_url": "URL del icono",
"screenshot_url": "URL de la captura de pantalla", "screenshot_url": "URL de la captura de pantalla",
"description": "Descripción" "description": "Descripción",
"example": "Download example"
}, },
"finish": { "finish": {
"title": "Acabar", "title": "Acabar",

View File

@ -146,6 +146,7 @@
"custom_author": "Auteur de devis personnalisé", "custom_author": "Auteur de devis personnalisé",
"author_img": "Show author image", "author_img": "Show author image",
"add": "Add quote", "add": "Add quote",
"source_subtitle": "Choose where to get quotes from",
"buttons": { "buttons": {
"title": "Boutons", "title": "Boutons",
"subtitle": "Choose which buttons to show on the quote", "subtitle": "Choose which buttons to show on the quote",
@ -526,8 +527,15 @@
"example": "Example", "example": "Example",
"other_title": "Create Add-on", "other_title": "Create Add-on",
"create_type": "Create {type} Pack", "create_type": "Create {type} Pack",
"types": {
"settings": "Preset Settings Pack",
"photos": "Photo Pack",
"quotes": "Quotes Pack"
},
"descriptions": { "descriptions": {
"settings": "", "settings": "",
"photos": "Collection of photos relating to a topic.",
"quotes": "Collection of quotes relating to a topic.",
"photo_pack": "", "photo_pack": "",
"quote_pack": "" "quote_pack": ""
}, },
@ -543,7 +551,8 @@
"name": "Name", "name": "Name",
"icon_url": "Icon URL", "icon_url": "Icon URL",
"screenshot_url": "Screenshot URL", "screenshot_url": "Screenshot URL",
"description": "Description" "description": "Description",
"example": "Download example"
}, },
"finish": { "finish": {
"title": "Finish", "title": "Finish",

View File

@ -146,6 +146,7 @@
"custom_author": "Penulis kustom", "custom_author": "Penulis kustom",
"author_img": "Show author image", "author_img": "Show author image",
"add": "Tambahkan kutipan", "add": "Tambahkan kutipan",
"source_subtitle": "Choose where to get quotes from",
"buttons": { "buttons": {
"title": "Aksi", "title": "Aksi",
"subtitle": "Choose which buttons to show on the quote", "subtitle": "Choose which buttons to show on the quote",
@ -526,8 +527,15 @@
"example": "Example", "example": "Example",
"other_title": "Buat Add-on", "other_title": "Buat Add-on",
"create_type": "Create {type} Pack", "create_type": "Create {type} Pack",
"types": {
"settings": "Preset Settings Pack",
"photos": "Photo Pack",
"quotes": "Quotes Pack"
},
"descriptions": { "descriptions": {
"settings": "", "settings": "",
"photos": "Collection of photos relating to a topic.",
"quotes": "Collection of quotes relating to a topic.",
"photo_pack": "", "photo_pack": "",
"quote_pack": "" "quote_pack": ""
}, },
@ -543,7 +551,8 @@
"name": "Nama", "name": "Nama",
"icon_url": "URL Ikon", "icon_url": "URL Ikon",
"screenshot_url": "URL Screenshot", "screenshot_url": "URL Screenshot",
"description": "Deskripsi" "description": "Deskripsi",
"example": "Download example"
}, },
"finish": { "finish": {
"title": "Selesai", "title": "Selesai",

View File

@ -146,6 +146,7 @@
"custom_author": "Custom author", "custom_author": "Custom author",
"author_img": "Show author image", "author_img": "Show author image",
"add": "Add quote", "add": "Add quote",
"source_subtitle": "Choose where to get quotes from",
"buttons": { "buttons": {
"title": "Buttons", "title": "Buttons",
"subtitle": "Choose which buttons to show on the quote", "subtitle": "Choose which buttons to show on the quote",
@ -526,8 +527,15 @@
"example": "Example", "example": "Example",
"other_title": "Create Add-on", "other_title": "Create Add-on",
"create_type": "Create {type} Pack", "create_type": "Create {type} Pack",
"types": {
"settings": "Preset Settings Pack",
"photos": "Photo Pack",
"quotes": "Quotes Pack"
},
"descriptions": { "descriptions": {
"settings": "", "settings": "",
"photos": "Collection of photos relating to a topic.",
"quotes": "Collection of quotes relating to a topic.",
"photo_pack": "", "photo_pack": "",
"quote_pack": "" "quote_pack": ""
}, },
@ -543,7 +551,8 @@
"name": "Name", "name": "Name",
"icon_url": "Icon URL", "icon_url": "Icon URL",
"screenshot_url": "Screenshot URL", "screenshot_url": "Screenshot URL",
"description": "Description" "description": "Description",
"example": "Download example"
}, },
"finish": { "finish": {
"title": "Finish", "title": "Finish",

View File

@ -146,6 +146,7 @@
"custom_author": "Custom author", "custom_author": "Custom author",
"author_img": "Show author image", "author_img": "Show author image",
"add": "Add quote", "add": "Add quote",
"source_subtitle": "Choose where to get quotes from",
"buttons": { "buttons": {
"title": "Buttons", "title": "Buttons",
"subtitle": "Choose which buttons to show on the quote", "subtitle": "Choose which buttons to show on the quote",
@ -526,8 +527,15 @@
"example": "Example", "example": "Example",
"other_title": "Create Add-on", "other_title": "Create Add-on",
"create_type": "Create {type} Pack", "create_type": "Create {type} Pack",
"types": {
"settings": "Preset Settings Pack",
"photos": "Photo Pack",
"quotes": "Quotes Pack"
},
"descriptions": { "descriptions": {
"settings": "", "settings": "",
"photos": "Collection of photos relating to a topic.",
"quotes": "Collection of quotes relating to a topic.",
"photo_pack": "", "photo_pack": "",
"quote_pack": "" "quote_pack": ""
}, },
@ -543,7 +551,8 @@
"name": "Name", "name": "Name",
"icon_url": "Icon URL", "icon_url": "Icon URL",
"screenshot_url": "Screenshot URL", "screenshot_url": "Screenshot URL",
"description": "Description" "description": "Description",
"example": "Download example"
}, },
"finish": { "finish": {
"title": "Finish", "title": "Finish",

View File

@ -146,6 +146,7 @@
"custom_author": "Custom author", "custom_author": "Custom author",
"author_img": "Show author image", "author_img": "Show author image",
"add": "Add quote", "add": "Add quote",
"source_subtitle": "Choose where to get quotes from",
"buttons": { "buttons": {
"title": "Buttons", "title": "Buttons",
"subtitle": "Choose which buttons to show on the quote", "subtitle": "Choose which buttons to show on the quote",
@ -526,8 +527,15 @@
"example": "Example", "example": "Example",
"other_title": "Create Add-on", "other_title": "Create Add-on",
"create_type": "Create {type} Pack", "create_type": "Create {type} Pack",
"types": {
"settings": "Preset Settings Pack",
"photos": "Photo Pack",
"quotes": "Quotes Pack"
},
"descriptions": { "descriptions": {
"settings": "", "settings": "",
"photos": "Collection of photos relating to a topic.",
"quotes": "Collection of quotes relating to a topic.",
"photo_pack": "", "photo_pack": "",
"quote_pack": "" "quote_pack": ""
}, },
@ -543,7 +551,8 @@
"name": "Name", "name": "Name",
"icon_url": "Icon URL", "icon_url": "Icon URL",
"screenshot_url": "Screenshot URL", "screenshot_url": "Screenshot URL",
"description": "Description" "description": "Description",
"example": "Download example"
}, },
"finish": { "finish": {
"title": "Finish", "title": "Finish",

View File

@ -146,6 +146,7 @@
"custom_author": "Yazar Özelleştir", "custom_author": "Yazar Özelleştir",
"author_img": "Yazar Resmini Göster", "author_img": "Yazar Resmini Göster",
"add": "Alıntı Ekle.", "add": "Alıntı Ekle.",
"source_subtitle": "Choose where to get quotes from",
"buttons": { "buttons": {
"title": "Butonlar", "title": "Butonlar",
"subtitle": "Alıntıda hangi butonların gösterileceğini seçin.", "subtitle": "Alıntıda hangi butonların gösterileceğini seçin.",
@ -526,8 +527,15 @@
"example": "Örnek", "example": "Örnek",
"other_title": "Eklenti Oluştur", "other_title": "Eklenti Oluştur",
"create_type": "{type} Paketi Oluştur", "create_type": "{type} Paketi Oluştur",
"types": {
"settings": "Preset Settings Pack",
"photos": "Photo Pack",
"quotes": "Quotes Pack"
},
"descriptions": { "descriptions": {
"settings": "", "settings": "",
"photos": "Collection of photos relating to a topic.",
"quotes": "Collection of quotes relating to a topic.",
"photo_pack": "", "photo_pack": "",
"quote_pack": "" "quote_pack": ""
}, },
@ -543,7 +551,8 @@
"name": "İsmi", "name": "İsmi",
"icon_url": "İkon URL'si ", "icon_url": "İkon URL'si ",
"screenshot_url": "Arka plan URL'si", "screenshot_url": "Arka plan URL'si",
"description": "Açıklama" "description": "Açıklama",
"example": "Download example"
}, },
"finish": { "finish": {
"title": "Bitiş", "title": "Bitiş",

View File

@ -146,6 +146,7 @@
"custom_author": "自定义出处", "custom_author": "自定义出处",
"author_img": "Show author image", "author_img": "Show author image",
"add": "继续添加名言", "add": "继续添加名言",
"source_subtitle": "Choose where to get quotes from",
"buttons": { "buttons": {
"title": "下方按钮", "title": "下方按钮",
"subtitle": "Choose which buttons to show on the quote", "subtitle": "Choose which buttons to show on the quote",
@ -526,8 +527,15 @@
"example": "Example", "example": "Example",
"other_title": "创建插件", "other_title": "创建插件",
"create_type": "Create {type} Pack", "create_type": "Create {type} Pack",
"types": {
"settings": "Preset Settings Pack",
"photos": "Photo Pack",
"quotes": "Quotes Pack"
},
"descriptions": { "descriptions": {
"settings": "", "settings": "",
"photos": "Collection of photos relating to a topic.",
"quotes": "Collection of quotes relating to a topic.",
"photo_pack": "", "photo_pack": "",
"quote_pack": "" "quote_pack": ""
}, },
@ -543,7 +551,8 @@
"name": "名称", "name": "名称",
"icon_url": "图标URL", "icon_url": "图标URL",
"screenshot_url": "示例图片URL", "screenshot_url": "示例图片URL",
"description": "描述" "description": "描述",
"example": "Download example"
}, },
"finish": { "finish": {
"title": "完成", "title": "完成",