Docházkový systém s otisky prstů

Odkazy na zajímavé články ze světa Linuxu.
Zamčeno
Uživatelský avatar
xsouku04
Administrátor
Příspěvky: 8146
Registrován: pát 15. říj 2010 11:11:44
Bydliště: Brno
Kontaktovat uživatele:

Docházkový systém s otisky prstů

Příspěvek od xsouku04 »

Nejlevnější docházkový systém stojí běžně 12000 Kč i více a přitom lze snadno sestavit za cenu od 200 Kč.

Viz projekt fprint.

http://www.freedesktop.org/wiki/Software/fprint/

Seznam podporovaných zařízení není moc velký a může být problém je sehnat.


Např. firma authentec.com, která prodávala miniaturní čtečku otisků za $9.95 ve svém eshopu, jej nyní trvale zavřela protože změnila majitele.

Obrázek

Amazon zjevně využila nedostatku a udělala novou cenu $149.99 dolarů.

Zdá se, že nejlepší kopě je U.are.u 4500 Reader 70" Cable, který je funkčně shodný s mikrosoftím a má podporovaný ovladač.

Jiné čtečky jako třeba Microsoft se již nevyrábějí.

Snad je možné koupit i levnější čtečky v čínských eshopech (taky zde), kde je to levnější a poštovné do ČR zdarma. Nicméně zde zase není znám chipset, tedy těžko říci, jestli bude pod linuxem fungovat.
Uživatelský avatar
xsouku04
Administrátor
Příspěvky: 8146
Registrován: pát 15. říj 2010 11:11:44
Bydliště: Brno
Kontaktovat uživatele:

Re: Docházkový systém s otisky prstů

Příspěvek od xsouku04 »

Nakonec jsem vytvořil docházkový systém pomocí tabulky v google docs. Ale bez otisků prstů.
Jedna tabulka je pro celý rok, každý řádek jeden den a vyplňují se hodiny od do, přestávka, dovolená a pod.
Jediné, co bylo trochu problém, je obarvit celé řádky s víkendem nebo svátky, což nakonec vyřešil scirpt.
Skript obarvuje řádky na základě toho. Představují den roven "so" (sobota) nebo "ne" nebo je svátek.
Bohužel lepší řešení zatím google docs spreadcheet neumí. Bběžně umí obarvovat buňky jen na základě vlastní hodnoty, tedy nikoli celé řádky.

Kód: Vybrat vše

function colorAll() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 7;
  var endRow = sheet.getLastRow();

  for (var r = startRow; r <= endRow; r++) {
    colorRow(r);
  }
}

function colorRow(r){
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getRange(r, 1, 1, 26);

  var data = dataRange.getValues();
  var row = data[0];

  if (row[2] === "so" || row[2]=== "ne" || row[3]=== 1 /* svátek */ ) {

    dataRange.setBackgroundRGB(255, 255, 153);
  }else {
   /* dataRange.setBackgroundRGB(255, 255, 255); */
  }
if  (row[0] !== "") { // je první den v měsíci - pak jej zvýrazni a odděl?
     sheet.getRange(r, 1, 1, 3).setBackgroundRGB(153, 153, 255);
     for (var i=1; i<29; i++)  { sheet.getRange(r, i).setBorder(true,false,false,false,false,false); }
    
  }
  
  SpreadsheetApp.flush(); 
}

Skript v menu tools vyberu položku skript editor, tam tento skript vložím.
Příklad jiné hello world aplikace je zde https://developers.google.com/apps-scri ... _functions
Pak už stačí jen spustit funkci colorALL ve stejném okně.

Abych docílil vypisování dnů v týdnu a měsíců v češtině, ve File -> spredsheet settings, jsem nastavil Locale na Czech Republic. Den v týdnu vypíši pomocí funkce: =text(B10;"ddd") (datum je v B10), měsíc pomocí
=if(month(B8)<>month(B7);concat(concat(text(B8;"MMM");"-");text(B8;"MM"));""). (chci vypsat, jen když je nový měsíc)
Jelikož mám české locale, jednotlivé parametry funkcí se oddělují středníkem a ne čárkou, která znamená desetinnou čárku.

Sloupeček odpracovaných dní v měsíci obsahuje =if(month(B11)=month(B10);J10+VALUE(K11)*24;VALUE(K11)*24),
Objevil jsem totiž, že údaj čas převedu na počet hodin pomocí VALUE(cas)*24 . Dny se počítají na hodiny a minuty, ale v rámci dnů už jen hodiny s desetinným místem.
Sloupeček, co počítá počet pracovních dní v měsíci, vypadá takto. H9 je počet pracovních hodin daný den. (tedy nula o víkendu nebo svátku)
=if(month(B10)=month(B9);H9+I10;I10)

Aby se ukládalo datum poslední editace dne (řádku), přidám tento skript

Kód: Vybrat vše

/* http://webapps.stackexchange.com/questions/33372/how-can-i-automatically-set-last-updated-cell-in-row-google-docs-spreadsheets
*/


function onEdit(event)
{
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var actSht = event.source.getActiveSheet();
    var actRng = event.source.getActiveRange();

    var index = actRng.getRowIndex();
    var dateCol = actSht.getLastColumn();
    var lastCell = actSht.getRange(index,dateCol);
 //   var date = Utilities.formatDate(new Date(), "GMT+2", "dd/MM/yyyy HH:mm"); 
 // Česká republika má udjně GMT+2
  
    var date = new Date(); 

    lastCell.setValue(date);
    lastCell.setComment("Změněno: " + actRng.getA1Notation() +' uživatelem '+Session.getActiveUser());
    ss.toast('Změněno = '+ actRng.getA1Notation()+' uživatelem '+Session.getActiveUser());
}

Jakoukoli tabulku, soubor nebo obrázek v google doc, je možné zveřejnit pomocí Publich to the web. Více
http://www.bdnyc.org/2012/08/22/how-to- ... a-webpage/

Google docs umí vytvářet i jiné html na základě dat uložených v tabulkách, ale k tomu jsem zde využití zatím nenašel. https://developers.google.com/apps-script/html_service
Zamčeno