Git Product home page Git Product logo

calendar's Introduction

Calendar

This is the home of the Firefox OS calendar app.

Directory Structure

build/            => calendar build configuration
elements/         => lazy loaded html elements (see /shared/js/html_imports.js)
js/               => calendar application code
js/controllers/   => various utilities living between views and models
js/ext/           => dependency / external javascript libraries
js/models/        => model wrappers around indexedDB calendar data
js/provider/      => provides apis to frontend code running on the main thread
                     to send tasks to web worker. right now all of our database operations
                     run on the main thread (https://bugzil.la/701634). common pattern is to
                     send a sync operation to the worker which emits events to the
                     provider code which formats calendar data and shoves it in indexedDB
js/service/       => runs in worker and bridges communication between main thread and caldav library
js/store/         => wrappers around calendar database collections
js/utils/         => miscellaneous library code mostly for computing or storing things
                     synchronously in memory
js/views/         => javascript that manages the dom representation for the UI
                     makes calls to model and provider layers to accomplish backend tasks
                     often listens to store events for data changes and updates the UI
js/worker/        => abstraction on top of web worker api, facilitates main thread <> worker
locales/          => translations to various locales exposed via l10n
style/            => css, fonts, images, etc.
test/             => calendar test code
test/interop/     => calendar client <> server interoperability tests that use marionette
test/marionette/  => webdriver tests written with the marionette-js-runner framework
test/unit/        => javascript unit tests run in the browser via test-agent

A note about js/ext

The external libraries versioned in js/ext are populated by volo which saves their url, version, git tag, etc in package.json. Check out the documentation here for help adding, updating, and removing dependencies.

Interop Tests

We have a test suite that checks whether or not we're interoperable with a particular calendar server. In order to run the test suite against your favorite server:

  1. Add a file named config.json at apps/calendar/test/interop/<provider>/config.json. The json configuration file needs to have
  • user (username)
  • password (user password)
  • fullUrl (url for caldav server)
  • calendars (array of caldav calendar display names)
  1. Make sure that your provider is in the list of providers located at apps/calendar/test/interop/basic.js.
  2. Execute TEST_FILES=apps/calendar/test/interop/basic.js ./bin/gaia-marionette

Related material

Distribution and Customization

A calendar.json file may be specified inside of distribution/calendar.json. This will override the generated presets.js file during the build. At a minimum Google Oauth credentials should be provided for production releases. Failure to do so may result in broken calendars at some point.

You can signup for Google credentials here: https://code.google.com/apis/console/b/0/?pli=1#access

calendar's People

Contributors

vingtetun avatar lightsofapollo avatar timdream avatar etiennesegonzac avatar fabi1cazenave avatar benfrancis avatar millermedeiros avatar andreasgal avatar kevingrandon avatar justindarc avatar joneschrisg avatar evanxd avatar fabricedesre avatar michalbe avatar gregorwagner avatar rudylu avatar daleharvey avatar albertopq avatar jlebar avatar philikon avatar mounirlamouri avatar yzen avatar dominickuo avatar steveck-chung avatar samjoch avatar michaelwu avatar lmorchard avatar deanlandolt avatar rvandermeulen avatar rnowm avatar

Watchers

James Cloos avatar

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.