Git Product home page Git Product logo

ftui's Introduction

knowthelist

Knowthelist - the awesome party music player

  • Easy to use for all party guests
  • Quick search for tracks in collection
  • Two players with separate playlists
  • Mixer with fader, 3 channel EQ and gain
  • Auto fader and auto gain
  • Trackanalyser search for song start/end and gain setting
  • Auto DJ function with multiple filters for random play
  • Monitor player for pre listen tracks (via 2nd sound card e.g. USB)
  • ... more details can be found on the Wiki

Runs under Linux, MacOS and Windows

Needed packages for building:

Build:

MacOS X:

Knowthelist works well on MacOS X.

  • OSX 10.6.8 is tested and known to work

It can be compiled to a .app bundle, suitable for placing in /Applications. Compiling is incredibly easy using Homebrew. Just run this command:

$ cp ./dist/knowthelist.rb /usr/local/Library/Formula
$ brew install knowthelist

And you're done. An icon for "knowthelist" should now be in your main OSX Applications list, ready to launch.

Windows:

A prebuilt package for windows is available in the release section on this page. The only prerequisite is a installed GStreamer runtime. But if you what to build Knowthelist on Windows for your self, you can do this like this:

Build dynamic version to debug project:

  • Install gstreamer-x86 runtime & devel
  • Install Qt5 MinGW incl. QtCreator Due to different exception handling versions (SJLJ, DWARF) of used MinGW comiler for GStreamer and Qt5, it is neccessary to use an own version of taglib. To get this, do this:
  • Get CMake and install
  • Get taglib and unzip
  • Open CMake GUI, select taglib folder, press Configure and build taglib
  • Add the taglib bin path (e.g. C:\Program Files (x86)\taglib-1.9.1\bin) to PATH variable into the QtCreator project build enviroment settings
  • Add the GStreamer bin path (e.g. C:\gstreamer\1.0\x86\bin) to PATH variable into the QtCreator project build enviroment settings
  • Rename libtag.dll and libstdc++-6.dll in GStreamer bin path to _libtag.dll and _libstdc++-6.dll
  • Build and run knowthelist project within QtCreator (Ctrl-R)

Build static version for release:

  • Install gstreamer-x86 runtime & devel
  • Build a Qt static environment
  • Build knowthelist via QtCreator (qmake, build release)
  • Copy all dll files of the gstreamer's bin folder (e.g. C:\gstreamer\1.0\x86\bin) into the target folder together with knowthelist.exe
  • Copy all dll files of the gstreamer's plugin folder (e.g. C:\gstreamer\1.0\x86\lib\gstreamer-1.0) into an new folder named 'plugin' in parallel to knowthelist.exe.
  • Run knowthelist.exe

Install packages:

Prebuilt packages for Linux can be found here: http://opendesktop.org/content/show.php/Knowthelist?content=165335

Debian:

Knowthelist is available in Jessie and sid archive

Ubuntu:

$ sudo add-apt-repository "deb http://ppa.launchpad.net/mstephan-r/ppa/ubuntu trusty main "
$ sudo apt update
$ sudo apt install knowthelist

Versions:

  • 2.3 (2014-09): Qt5 compatibility and usage of GStreamer 1.x
  • 2.2 (2014-08): Support for stored lists
  • 2.1 (2014-05): First public version; removed qt3support
  • 2.0 (2011) : Qt-only + gstreamer version for multiple OS support
  • 1.x (2005) : Only for KDE Linux with arts sound framework

ftui's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ftui's Issues

Loading speed / cache

Hi

First of all many thanks for this great UI for Fhem.
I searched and tried a lot. But this one really is easy to use, with straight forward, clear display.
Currently I'm using building a site for mobile phone using the menu.html example with toolbar and separate views.
With use of ftui I am able to structure the site very well by extensive use of ftui-content component and lots of icons.
This all works very well.

Although, with growing site I noticed some side effects:
Loading speed decreases with every menu item I add.
Of course I noticed that whole huge content of the site is being loaded at once.
During handling with the site this of course is good because no site loading occurs when e.g. clicking a button.

But with my Firefox and Android browser I also noticed that it seems files are not cached. A http GET for same icon (or http file) is being repeated for every occurence of this icon (or http file) on the site. I can easily test this by setting up a simple site with only 5 icons. It will send 5 http GET with attribute "no-cache".
In Firefox I can see them with its debugging feature.

Does this no-cache happen by purpose ?
Or do you know a reason ? Or maybe I'm missing something?
Would it be possible to activate caching for icons and html ?
I tried to search the js but couldn't find a starting point...

Of course this doesn't matter at all if you have a display just for the purpose of smart home.
I am using the site just with my mobile phone. There the browser often will reload the site.

How I have it structured:

  • A lamp is just a ftui-content line in a lamp view - using one common file="lamp.html" plus name="myRoomXX".
  • lamp.html creates the view-item with [text]={{name}} plus button and icon
  • So, 20 lamps will "call" same lamp.html making look all equal and easy to change.
  • In this case ftui loads 20x lamp.html plus 20x lamp.svg (instead of 1x html + 1x svg)
  • Each access lasts ~20..30ms which is >1sec just for those lamps.
  • Then there is windows, weather, thermostates, ... ;-)

Any ideas are very appretiated.
Best regards, Torsten

<header> breaks layout in knob component

Usaing a header tag with a knob component breaks the layout, the header will overlap the component above.

image

  <ftui-tab-view id="View1">

      <ftui-grid-tile row="1" col="10" height="2" width="2" shape="round" color="primary">
        <ftui-clock format="ee" class="size-5"></ftui-clock>
        <ftui-clock format="DD" class="size-8"></ftui-clock>
      </ftui-grid-tile>

      <ftui-grid-tile row="1" col="8" height="2" width="2" shape="round" color="primary">
        <ftui-clock format="ee" class="size-5"></ftui-clock>
        <ftui-clock format="DD" class="size-8"></ftui-clock>
      </ftui-grid-tile>

      <ftui-grid-tile row="3" col="8" height="2" width="2" shape="round">
        <header>Bad</header>
        <ftui-knob [value]="TempBad:temperature | round(1)" width="120" offset-y="10" type="handle" min="16" max="25"
          unit="°C" readonly has-value-text></ftui-knob>
      </ftui-grid-tile>

      <ftui-grid-tile row="3" col="10" height="2" width="2" shape="round">
        <!--header>Luftfeuchte</header>-->
        <ftui-knob [value]="HumiBad:humidity | round(1)" width="120" offset-y="10" type="handle" min="40" max="100"
          unit="%" readonly has-value-text></ftui-knob>
      </ftui-grid-tile>

    </ftui-tab-view>

Browser: Chrome 86.0.4240.198 and 87.0.4280.88 and Firefox 81.0.2 and 83.0

Weather - same BAS-Icon for SHOWERS and LIGHT_SHOWERS

in weather.map.js same icon for rain and light rain:

Regenschauer: 'LIGHT_SHOWERS',
Regen: 'SHOWERS',
[...]
LIGHT_SHOWERS:'./icons/weather/bas/bas_partly-cloudy-day-rain.svg',
SHOWERS:'./icons/weather/bas/bas_partly-cloudy-day-rain.svg',

should be updated to:

LIGHT_SHOWERS:'./icons/weather/bas/bas_partly-cloudy-day-rain.svg',
SHOWERS:'./icons/weather/bas/bas_rain.svg',

strange chart drawing in Firefox

Using the chart control I get some strange chart in Firefox (@MacOS Ventura):
01

When I open it in Chrome it shows like normal:
02

Do you have any idea how to fix that or what could be the reason?

popup-close - button closes all open popups

If you have opened popup1 and within this popup1 you open another popup2.
In this popup2 you have an button with popup-close functionality.

You would expect by clicking on this button on popup2, that only popup2 closes, but instead popup2 and popup1 are closing simultaneously.
An Improvment would be to ab an id to the popupclose button e.g.

Close

Image refresh not working

Hi,

first of all thanks for the library! Its a great way to create UIs for fhem.

I am having issues with refreshing images based on state changes though, it only seems to work with intervals.

The below code doesn't work, Zeltraum.Kamera is an IPCAM device and I'd expect it to refresh when a new snapshot is made..

<ftui-image src="http://homebridge.local/fhem/images/Zeltraum.Kamera_snapshot.jpg" [refresh]="Zeltraum.Kamera:state:time" nocache>

What am I missing? The image does update when I use an interval. I also noticed that I get errors when I don't supply a full URL for the image, even though the image is available relative to the HTML page.

Trying this on Safari, iOS and MacOS with the latest git version of ftui.

Thanks for any pointers!

Docker quits with message "exec user process caused: exec format error"

The docker container does not load, in Portainer I see this error message in the log file:
standard_init_linux.go:219: exec user process caused: exec format error

The docker-compose.yml is:

fhem.tablet: container_name: FHEM.Tablet image: knowthelist/ftui:latest ports: - 8079:80 volumes: - ./fhem.tablet/index.html:/usr/share/nginx/html/index.html networks: - internal

Docker is running on an Intel 64bit based Host with Debian running.

visibility: hidden vs. display: none for tab-views

Hi Mario,

I already have a first question. ;)

Currently the tab widgets uses visibility: hidden to hide a view.
This works fine when used in the grid system, as elements which use the same columns/rows are layered above each other.

But if you try to use this without the grid system, the elements still reserve the space on the screen, as hidden: invisible only hides them, but doesn't set the size to zero.
So I would like to ask it this can be changed to display: none.

I already tested your sample files with this fix and they still render the same way.

Regards,
Tobias

Label/Legend in chart component

Using the label with the following code <ftui-chart-data label="(Min: $min °C / Max: $max °C)" color="gray"> works fine as label
grafik
but the same code is also used while hovering the chart data but the $functions are not resolved.
grafik

Docker error

when I start the docker, I become an error:

standard_init_linux.go:219: exec user process caused: exec format error

ftui tries to get chart-data from wrong file

today, on the 01.02.2023 i try to see the chart-data of the last days.

So i click the navigator to move date to 27.01.2023, but i dont get any data.
With fhem global.verbose = 5 i get the log entries:

2023.02.01 21:39:16 4: WEB_192.168.64.2_55640 GET /fhem/?cmd=get+FileLog_Bewegung_MDIR_O_4F96CF+-+-+**2023-01-27**_00%3A00%3A00+**2023-01-28**_00%3A00%3A00+4%3Atrigger_cnt&asyncCmd=0&fwcsrf=csrf_355115176078942&XHR=1; BUFLEN:0
2023.02.01 21:39:16 5: Cmd: >get FileLog_Bewegung_MDIR_O_4F96CF - - 2023-01-27_00:00:00 2023-01-28_00:00:00 4:trigger_cnt<
2023.02.01 21:39:16 4: FileLog_Bewegung_MDIR_O_4F96CF get: **Input file** ./log/Bewegung_MDIR_O_4F96CF-**2023-02**.log, from:**2023-01-27**_00:00:00  to:**2023-01-28**_00:00:00
2023.02.01 21:39:16 4: FileLog_Bewegung_MDIR_O_4F96CF get: line 1, regexp:trigger_cnt, col:3, output lines:0

The problem seems to be
get: Input file ./log/Bewegung_MDIR_O_4F96CF-2023-02.log, from:2023-01-27_00:00:00 to:2023-01-28_00:00:00

ftui tries to read the chart-data from 2023-01-27 to 2023-01-28 from the file *2023-02.log.
That means ftui chooses the wrong logfile.

Messed up charts due to missing "now" value

Hi,

when using charts, especially with "stepped" for on/off switches theres an issue where the "now" point somehow isn't in the diagram and the graph gets rendered wrong. See the below screenshot for an idea about what I mean. The yellow should be a big block all the way to the right, as the light is still "on" when the screenshot is taken.

The only special settings of the graphs are stepped and point-radius=0

Bildschirmfoto 2024-04-10 um 15 51 48

Tested in Safari on iOS and MacOS as well as Firefox on MacOS

Thanks for ftui, it's great!

Can you add Color gradient "cold-hot" for Labels?

It would be nice to use the color gradient cold-hot also for labels, in general I would like to have the option to use hexcolorcodes in the color attribut, then i could build with map or step my own color gradient.

responsive grid width and height interchanged

if the grid is using the "response" tag, the grid-tile attributes "width" and "height" are interchanged.

See grid.component.js -> configResponseGrid

currently there is:

tile.style['grid-row'] = 'span ' + tile.getAttribute('width');
tile.style['grid-column'] = 'span ' + tile.getAttribute('height');

but it should be:

tile.style['grid-row'] = 'span ' + tile.getAttribute('height');
tile.style['grid-column'] = 'span ' + tile.getAttribute('width');

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.