├── .gitignore
├── .idea
├── .name
├── codeStyleSettings.xml
├── dictionaries
│ └── vadim.xml
├── inspectionProfiles
│ ├── Project_Default.xml
│ └── profiles_settings.xml
├── jsLibraryMappings.xml
├── misc.xml
├── modules.xml
├── pivot.iml
├── runConfigurations
│ └── Run.xml
├── scopes
│ ├── All_Source_Files.xml
│ ├── Client_Source_Files.xml
│ ├── Server_Source_Files.xml
│ └── TypeScript_Files.xml
├── vcs.xml
└── watcherTasks.xml
├── .npmignore
├── .sass-lint.yml
├── .travis.yml
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── NOTICE
├── README.md
├── assets
├── data
│ ├── wikiticker-2015-09-12-anonymous.json
│ ├── wikiticker-2015-09-12-sampled.json
│ └── wikiticker-2015-09-12-tiny.json
├── favicon
│ ├── android-chrome-144x144.png
│ ├── android-chrome-192x192.png
│ ├── android-chrome-36x36.png
│ ├── android-chrome-48x48.png
│ ├── android-chrome-72x72.png
│ ├── android-chrome-96x96.png
│ ├── apple-touch-icon-114x114.png
│ ├── apple-touch-icon-120x120.png
│ ├── apple-touch-icon-144x144.png
│ ├── apple-touch-icon-152x152.png
│ ├── apple-touch-icon-180x180.png
│ ├── apple-touch-icon-57x57.png
│ ├── apple-touch-icon-60x60.png
│ ├── apple-touch-icon-72x72.png
│ ├── apple-touch-icon-76x76.png
│ ├── apple-touch-icon-precomposed.png
│ ├── apple-touch-icon.png
│ ├── browserconfig.xml
│ ├── favicon-16x16.png
│ ├── favicon-32x32.png
│ ├── favicon-96x96.png
│ ├── favicon.ico
│ ├── manifest.json
│ ├── mstile-144x144.png
│ ├── mstile-150x150.png
│ ├── mstile-310x150.png
│ ├── mstile-310x310.png
│ ├── mstile-70x70.png
│ └── safari-pinned-tab.svg
└── fonts
│ ├── Open-Sans-600
│ ├── LICENSE.txt
│ ├── Open-Sans-600.eot
│ ├── Open-Sans-600.svg
│ ├── Open-Sans-600.ttf
│ ├── Open-Sans-600.woff
│ └── Open-Sans-600.woff2
│ └── Open-Sans-regular
│ ├── LICENSE.txt
│ ├── Open-Sans-regular.eot
│ ├── Open-Sans-regular.svg
│ ├── Open-Sans-regular.ttf
│ ├── Open-Sans-regular.woff
│ └── Open-Sans-regular.woff2
├── bin
└── pivot
├── compile
├── config-examples.yaml
├── docs
├── configuration.md
├── druid-0.9.1-lookup-migration.md
├── example
│ └── request-decoration
│ │ ├── config.yaml
│ │ ├── druid-request-decorator.js
│ │ └── result.png
├── generating-links-into-pivot.md
├── images
│ ├── compare.gif
│ ├── custom-link.png
│ ├── drag-and-drop.gif
│ └── explore.gif
├── pivot-0.9.x-migration.md
└── security.md
├── full-test
├── gulpfile.js
├── lib
└── polyfill
│ ├── drag-drop-polyfill.css
│ └── drag-drop-polyfill.min.js
├── npm-shrinkwrap.json
├── package.json
├── resources
├── data
│ ├── process-wikiticker-2015-09-12
│ └── wikiticker-2015-09-12.gz
└── logo
│ ├── pivot-logo-1024.png
│ ├── pivot-logo-128.png
│ ├── pivot-logo-32.png
│ ├── pivot-logo-512.png
│ ├── pivot-logo-64.png
│ ├── pivot-logo-800.png
│ ├── pivot-logo.svg
│ └── pngify
├── run
├── run-coverage
├── script
├── cp
├── cp-plywood
├── mkcomp
├── mkmodel
├── mv
├── prod-build
├── publish
├── update-all
└── version-bump
├── src
├── client
│ ├── _imports.scss
│ ├── applications
│ │ └── pivot-application
│ │ │ ├── collection-view-delegate
│ │ │ └── collection-view-delegate.tsx
│ │ │ ├── pivot-application.mocha.tsx
│ │ │ ├── pivot-application.scss
│ │ │ └── pivot-application.tsx
│ ├── components
│ │ ├── auto-refresh-menu
│ │ │ ├── auto-refresh-menu.mocha.tsx
│ │ │ ├── auto-refresh-menu.scss
│ │ │ └── auto-refresh-menu.tsx
│ │ ├── body-portal
│ │ │ ├── body-portal.mocha.tsx
│ │ │ ├── body-portal.scss
│ │ │ └── body-portal.tsx
│ │ ├── bubble-menu
│ │ │ ├── bubble-menu.mocha.tsx
│ │ │ ├── bubble-menu.scss
│ │ │ └── bubble-menu.tsx
│ │ ├── bucket-marks
│ │ │ ├── bucket-marks.mocha.tsx
│ │ │ ├── bucket-marks.scss
│ │ │ └── bucket-marks.tsx
│ │ ├── button-group
│ │ │ ├── button-group.mocha.tsx
│ │ │ ├── button-group.scss
│ │ │ └── button-group.tsx
│ │ ├── button
│ │ │ ├── button.mocha.tsx
│ │ │ ├── button.scss
│ │ │ └── button.tsx
│ │ ├── chart-line
│ │ │ ├── chart-line.mocha.tsx
│ │ │ ├── chart-line.scss
│ │ │ └── chart-line.tsx
│ │ ├── checkbox
│ │ │ ├── checkbox.mocha.tsx
│ │ │ ├── checkbox.scss
│ │ │ └── checkbox.tsx
│ │ ├── clearable-input
│ │ │ ├── clearable-input.mocha.tsx
│ │ │ ├── clearable-input.scss
│ │ │ └── clearable-input.tsx
│ │ ├── date-range-input
│ │ │ ├── date-range-input.mocha.tsx
│ │ │ ├── date-range-input.scss
│ │ │ └── date-range-input.tsx
│ │ ├── date-range-picker
│ │ │ ├── date-range-picker.mocha.tsx
│ │ │ ├── date-range-picker.scss
│ │ │ └── date-range-picker.tsx
│ │ ├── dimension-actions-menu
│ │ │ ├── dimension-actions-menu.mocha.tsx
│ │ │ ├── dimension-actions-menu.scss
│ │ │ └── dimension-actions-menu.tsx
│ │ ├── dimension-list-tile
│ │ │ ├── dimension-list-tile.mocha.tsx
│ │ │ ├── dimension-list-tile.scss
│ │ │ └── dimension-list-tile.tsx
│ │ ├── dimension-measure-panel
│ │ │ ├── dimension-measure-panel.mocha.tsx
│ │ │ ├── dimension-measure-panel.scss
│ │ │ └── dimension-measure-panel.tsx
│ │ ├── dimension-tile
│ │ │ ├── dimension-tile.mocha.tsx
│ │ │ ├── dimension-tile.scss
│ │ │ └── dimension-tile.tsx
│ │ ├── drop-indicator
│ │ │ ├── drop-indicator.mocha.tsx
│ │ │ ├── drop-indicator.scss
│ │ │ └── drop-indicator.tsx
│ │ ├── dropdown
│ │ │ ├── dropdown.mocha.tsx
│ │ │ ├── dropdown.scss
│ │ │ └── dropdown.tsx
│ │ ├── fancy-drag-indicator
│ │ │ ├── fancy-drag-indicator.mocha.tsx
│ │ │ ├── fancy-drag-indicator.scss
│ │ │ └── fancy-drag-indicator.tsx
│ │ ├── filter-menu
│ │ │ ├── filter-menu.mocha.tsx
│ │ │ ├── filter-menu.scss
│ │ │ └── filter-menu.tsx
│ │ ├── filter-options-dropdown
│ │ │ ├── filter-options-dropdown.mocha.tsx
│ │ │ ├── filter-options-dropdown.scss
│ │ │ └── filter-options-dropdown.tsx
│ │ ├── filter-tile
│ │ │ ├── filter-tile.mocha.tsx
│ │ │ ├── filter-tile.scss
│ │ │ └── filter-tile.tsx
│ │ ├── form-label
│ │ │ ├── form-label.mocha.tsx
│ │ │ ├── form-label.scss
│ │ │ └── form-label.tsx
│ │ ├── global-event-listener
│ │ │ ├── global-event-listener.mocha.tsx
│ │ │ └── global-event-listener.tsx
│ │ ├── golden-center
│ │ │ ├── golden-center.mocha.tsx
│ │ │ ├── golden-center.scss
│ │ │ └── golden-center.tsx
│ │ ├── grid-lines
│ │ │ ├── grid-lines.mocha.tsx
│ │ │ ├── grid-lines.scss
│ │ │ └── grid-lines.tsx
│ │ ├── highlight-string
│ │ │ ├── highlight-string.mocha.tsx
│ │ │ ├── highlight-string.scss
│ │ │ └── highlight-string.tsx
│ │ ├── highlighter
│ │ │ ├── highlighter.mocha.tsx
│ │ │ ├── highlighter.scss
│ │ │ └── highlighter.tsx
│ │ ├── hiluk-menu
│ │ │ ├── hiluk-menu.mocha.tsx
│ │ │ ├── hiluk-menu.scss
│ │ │ └── hiluk-menu.tsx
│ │ ├── hover-multi-bubble
│ │ │ ├── hover-multi-bubble.mocha.tsx
│ │ │ ├── hover-multi-bubble.scss
│ │ │ └── hover-multi-bubble.tsx
│ │ ├── immutable-dropdown
│ │ │ ├── immutable-dropdown.mocha.tsx
│ │ │ ├── immutable-dropdown.scss
│ │ │ └── immutable-dropdown.tsx
│ │ ├── immutable-input
│ │ │ ├── immutable-input.mocha.tsx
│ │ │ ├── immutable-input.scss
│ │ │ └── immutable-input.tsx
│ │ ├── immutable-list
│ │ │ ├── immutable-list.scss
│ │ │ └── immutable-list.tsx
│ │ ├── index.ts
│ │ ├── line-chart-axis
│ │ │ ├── line-chart-axis.mocha.tsx
│ │ │ ├── line-chart-axis.scss
│ │ │ └── line-chart-axis.tsx
│ │ ├── loader
│ │ │ ├── loader.mocha.tsx
│ │ │ ├── loader.scss
│ │ │ └── loader.tsx
│ │ ├── loading-bar
│ │ │ ├── loading-bar.mocha.tsx
│ │ │ ├── loading-bar.scss
│ │ │ └── loading-bar.tsx
│ │ ├── manual-fallback
│ │ │ ├── manual-fallback.mocha.tsx
│ │ │ ├── manual-fallback.scss
│ │ │ └── manual-fallback.tsx
│ │ ├── measures-tile
│ │ │ ├── measures-tile.mocha.tsx
│ │ │ ├── measures-tile.scss
│ │ │ └── measures-tile.tsx
│ │ ├── modal
│ │ │ ├── modal.mocha.tsx
│ │ │ ├── modal.scss
│ │ │ └── modal.tsx
│ │ ├── nav-list
│ │ │ ├── nav-list.mocha.tsx
│ │ │ ├── nav-list.scss
│ │ │ └── nav-list.tsx
│ │ ├── nav-logo
│ │ │ ├── nav-logo.mocha.tsx
│ │ │ ├── nav-logo.scss
│ │ │ └── nav-logo.tsx
│ │ ├── notifications
│ │ │ ├── notification-card.scss
│ │ │ ├── notification-card.tsx
│ │ │ ├── notifications.mocha.tsx
│ │ │ ├── notifications.scss
│ │ │ └── notifications.tsx
│ │ ├── number-filter-menu
│ │ │ ├── number-filter-menu.mocha.tsx
│ │ │ ├── number-filter-menu.scss
│ │ │ └── number-filter-menu.tsx
│ │ ├── number-range-picker
│ │ │ ├── number-range-picker.mocha.tsx
│ │ │ ├── number-range-picker.scss
│ │ │ └── number-range-picker.tsx
│ │ ├── pinboard-measure-tile
│ │ │ ├── pinboard-measure-tile.mocha.tsx
│ │ │ ├── pinboard-measure-tile.scss
│ │ │ └── pinboard-measure-tile.tsx
│ │ ├── pinboard-panel
│ │ │ ├── pinboard-panel.mocha.tsx
│ │ │ ├── pinboard-panel.scss
│ │ │ └── pinboard-panel.tsx
│ │ ├── preview-string-filter-menu
│ │ │ ├── preview-string-filter-menu.mocha.tsx
│ │ │ ├── preview-string-filter-menu.scss
│ │ │ └── preview-string-filter-menu.tsx
│ │ ├── query-error
│ │ │ ├── query-error.mocha.tsx
│ │ │ ├── query-error.scss
│ │ │ └── query-error.tsx
│ │ ├── range-handle
│ │ │ ├── range-handle.mocha.tsx
│ │ │ ├── range-handle.scss
│ │ │ └── range-handle.tsx
│ │ ├── resize-handle
│ │ │ ├── resize-handle.mocha.tsx
│ │ │ ├── resize-handle.scss
│ │ │ └── resize-handle.tsx
│ │ ├── router
│ │ │ ├── router.mocha.tsx
│ │ │ ├── router.scss
│ │ │ └── router.tsx
│ │ ├── scroller
│ │ │ ├── scroller.scss
│ │ │ └── scroller.tsx
│ │ ├── searchable-tile
│ │ │ ├── searchable-tile.mocha.tsx
│ │ │ ├── searchable-tile.scss
│ │ │ └── searchable-tile.tsx
│ │ ├── segment-action-buttons
│ │ │ ├── segment-action-buttons.mocha.tsx
│ │ │ ├── segment-action-buttons.scss
│ │ │ └── segment-action-buttons.tsx
│ │ ├── segment-bubble
│ │ │ ├── segment-bubble.mocha.tsx
│ │ │ ├── segment-bubble.scss
│ │ │ └── segment-bubble.tsx
│ │ ├── selectable-string-filter-menu
│ │ │ ├── selectable-string-filter-menu.mocha.tsx
│ │ │ ├── selectable-string-filter-menu.scss
│ │ │ └── selectable-string-filter-menu.tsx
│ │ ├── settings-menu
│ │ │ ├── settings-menu.mocha.tsx
│ │ │ ├── settings-menu.scss
│ │ │ └── settings-menu.tsx
│ │ ├── shpitz
│ │ │ ├── shpitz.mocha.tsx
│ │ │ ├── shpitz.scss
│ │ │ └── shpitz.tsx
│ │ ├── side-drawer
│ │ │ ├── side-drawer.mocha.tsx
│ │ │ ├── side-drawer.scss
│ │ │ └── side-drawer.tsx
│ │ ├── simple-list
│ │ │ ├── simple-list.mocha.tsx
│ │ │ ├── simple-list.scss
│ │ │ └── simple-list.tsx
│ │ ├── simple-table
│ │ │ ├── simple-table.mocha.tsx
│ │ │ ├── simple-table.scss
│ │ │ └── simple-table.tsx
│ │ ├── split-menu
│ │ │ ├── split-menu.mocha.tsx
│ │ │ ├── split-menu.scss
│ │ │ └── split-menu.tsx
│ │ ├── split-tile
│ │ │ ├── split-tile.mocha.tsx
│ │ │ ├── split-tile.scss
│ │ │ └── split-tile.tsx
│ │ ├── string-filter-menu
│ │ │ ├── string-filter-menu.mocha.tsx
│ │ │ ├── string-filter-menu.scss
│ │ │ └── string-filter-menu.tsx
│ │ ├── svg-icon
│ │ │ ├── svg-icon.mocha.tsx
│ │ │ ├── svg-icon.scss
│ │ │ └── svg-icon.tsx
│ │ ├── tile-header
│ │ │ ├── tile-header.mocha.tsx
│ │ │ ├── tile-header.scss
│ │ │ └── tile-header.tsx
│ │ ├── time-filter-menu
│ │ │ ├── time-filter-menu.mocha.tsx
│ │ │ ├── time-filter-menu.scss
│ │ │ └── time-filter-menu.tsx
│ │ ├── user-menu
│ │ │ ├── user-menu.mocha.tsx
│ │ │ ├── user-menu.scss
│ │ │ └── user-menu.tsx
│ │ ├── vertical-axis
│ │ │ ├── vertical-axis.mocha.tsx
│ │ │ ├── vertical-axis.scss
│ │ │ └── vertical-axis.tsx
│ │ ├── vis-measure-label
│ │ │ ├── vis-measure-label.mocha.tsx
│ │ │ ├── vis-measure-label.scss
│ │ │ └── vis-measure-label.tsx
│ │ ├── vis-selector-menu
│ │ │ ├── vis-selector-menu.mocha.tsx
│ │ │ ├── vis-selector-menu.scss
│ │ │ └── vis-selector-menu.tsx
│ │ └── vis-selector
│ │ │ ├── vis-selector.mocha.tsx
│ │ │ ├── vis-selector.scss
│ │ │ └── vis-selector.tsx
│ ├── config
│ │ ├── _constants.scss
│ │ └── constants.ts
│ ├── delegates
│ │ ├── immutable-form-delegate
│ │ │ └── immutable-form-delegate.tsx
│ │ ├── index.ts
│ │ └── loading-message-delegate
│ │ │ └── loading-message-delegate.tsx
│ ├── icons
│ │ ├── arrow-logo.svg
│ │ ├── caret.svg
│ │ ├── check.svg
│ │ ├── combo-logo.svg
│ │ ├── data-cubes.svg
│ │ ├── data.svg
│ │ ├── dim-boolean.svg
│ │ ├── dim-geo.svg
│ │ ├── dim-number.svg
│ │ ├── dim-set-string.svg
│ │ ├── dim-string-geo.svg
│ │ ├── dim-string.svg
│ │ ├── dim-time.svg
│ │ ├── drag-arrow.svg
│ │ ├── drag-handle.svg
│ │ ├── dragger.svg
│ │ ├── dropdown-caret.svg
│ │ ├── filter-contains.svg
│ │ ├── filter-exclude.svg
│ │ ├── filter-include.svg
│ │ ├── filter-intersection.svg
│ │ ├── filter-regex.svg
│ │ ├── filter-string.svg
│ │ ├── full-add-framed.svg
│ │ ├── full-add.svg
│ │ ├── full-back.svg
│ │ ├── full-bookmark.svg
│ │ ├── full-caret-bottom.svg
│ │ ├── full-caret-left-line.svg
│ │ ├── full-caret-left.svg
│ │ ├── full-caret-right-line.svg
│ │ ├── full-caret-right.svg
│ │ ├── full-caret-small-bottom.svg
│ │ ├── full-caret-small-left.svg
│ │ ├── full-caret-small-right.svg
│ │ ├── full-caret-small-top.svg
│ │ ├── full-caret-top.svg
│ │ ├── full-cluster.svg
│ │ ├── full-collection.svg
│ │ ├── full-cube.svg
│ │ ├── full-delete.svg
│ │ ├── full-edit.svg
│ │ ├── full-error.svg
│ │ ├── full-expand.svg
│ │ ├── full-hiluk.svg
│ │ ├── full-menu.svg
│ │ ├── full-more-compact.svg
│ │ ├── full-more-mini.svg
│ │ ├── full-more.svg
│ │ ├── full-multi.svg
│ │ ├── full-profile.svg
│ │ ├── full-refresh.svg
│ │ ├── full-remove-small.svg
│ │ ├── full-remove.svg
│ │ ├── full-search.svg
│ │ ├── full-settings.svg
│ │ ├── full-time.svg
│ │ ├── full-user.svg
│ │ ├── github.svg
│ │ ├── grid-loader.svg
│ │ ├── help.svg
│ │ ├── home.svg
│ │ ├── measures.svg
│ │ ├── menu.svg
│ │ ├── pinned.svg
│ │ ├── pivot-logo.svg
│ │ ├── preview-filter.svg
│ │ ├── preview-pin.svg
│ │ ├── preview-split.svg
│ │ ├── preview-subsplit.svg
│ │ ├── prout
│ │ ├── sort-arrow.svg
│ │ ├── split-add.svg
│ │ ├── split-replace.svg
│ │ ├── star.svg
│ │ ├── text-logo.svg
│ │ ├── to-arrow.svg
│ │ ├── vis-bar-chart.svg
│ │ ├── vis-geo.svg
│ │ ├── vis-heatmap.svg
│ │ ├── vis-line-chart.svg
│ │ ├── vis-scatter-plot.svg
│ │ ├── vis-stacked-bars.svg
│ │ ├── vis-table.svg
│ │ ├── vis-totals.svg
│ │ ├── vis-treemap.svg
│ │ └── x.svg
│ ├── modals
│ │ ├── about-modal
│ │ │ ├── about-modal.mocha.tsx
│ │ │ ├── about-modal.scss
│ │ │ └── about-modal.tsx
│ │ ├── add-collection-tile-modal
│ │ │ ├── add-collection-tile-modal.mocha.tsx
│ │ │ ├── add-collection-tile-modal.scss
│ │ │ └── add-collection-tile-modal.tsx
│ │ ├── attribute-modal
│ │ │ ├── attribute-modal.scss
│ │ │ └── attribute-modal.tsx
│ │ ├── cluster-seed-modal
│ │ │ ├── cluster-seed-modal.scss
│ │ │ └── cluster-seed-modal.tsx
│ │ ├── data-cube-filter-modal
│ │ │ ├── data-cube-filter-modal.scss
│ │ │ └── data-cube-filter-modal.tsx
│ │ ├── data-cube-seed-modal
│ │ │ ├── data-cube-seed-modal.scss
│ │ │ └── data-cube-seed-modal.tsx
│ │ ├── dimension-modal
│ │ │ ├── dimension-modal.scss
│ │ │ └── dimension-modal.tsx
│ │ ├── index.ts
│ │ ├── measure-modal
│ │ │ ├── measure-modal.scss
│ │ │ └── measure-modal.tsx
│ │ ├── name-description-modal
│ │ │ ├── name-description-modal.scss
│ │ │ └── name-description-modal.tsx
│ │ ├── raw-data-modal
│ │ │ ├── raw-data-modal.mocha.tsx
│ │ │ ├── raw-data-modal.scss
│ │ │ └── raw-data-modal.tsx
│ │ └── suggestion-modal
│ │ │ ├── suggestion-modal.scss
│ │ │ └── suggestion-modal.tsx
│ ├── pivot-entry.scss
│ ├── pivot-entry.ts
│ ├── utils
│ │ ├── ajax
│ │ │ └── ajax.ts
│ │ ├── dom-highlighter
│ │ │ └── dom-highlighter.ts
│ │ ├── dom
│ │ │ └── dom.ts
│ │ ├── download
│ │ │ ├── download.mocha.ts
│ │ │ └── download.ts
│ │ ├── drag-manager
│ │ │ └── drag-manager.ts
│ │ ├── error-monitor
│ │ │ └── error-monitor.ts
│ │ ├── function-slot
│ │ │ └── function-slot.ts
│ │ ├── local-storage
│ │ │ └── local-storage.ts
│ │ ├── pill-tile
│ │ │ └── pill-tile.ts
│ │ ├── query-runner
│ │ │ └── query-runner.ts
│ │ ├── sizing
│ │ │ ├── sizing.mocha.ts
│ │ │ └── sizing.ts
│ │ ├── styles
│ │ │ ├── _bounce.scss
│ │ │ ├── _bubble-cont.scss
│ │ │ ├── _button.scss
│ │ │ ├── _dimension-item.scss
│ │ │ ├── _empty.scss
│ │ │ ├── _form.scss
│ │ │ ├── _grid.scss
│ │ │ ├── _header-bar.scss
│ │ │ ├── _index.scss
│ │ │ ├── _indicator-field.scss
│ │ │ ├── _input.scss
│ │ │ ├── _linear-transition.scss
│ │ │ ├── _media-queries.scss
│ │ │ ├── _menu-cont.scss
│ │ │ ├── _modal-cont.scss
│ │ │ ├── _module.scss
│ │ │ ├── _overflow.scss
│ │ │ ├── _side-by-side.scss
│ │ │ ├── _variables.scss
│ │ │ └── _white-shadow.scss
│ │ ├── test-utils
│ │ │ ├── find-dom-node.ts
│ │ │ ├── get-caller-file.ts
│ │ │ ├── index.ts
│ │ │ ├── jsdom-setup.ts
│ │ │ ├── mock-react-component.mocha.ts
│ │ │ ├── mock-react-component.ts
│ │ │ ├── mock-require-ensure.ts
│ │ │ └── require-extensions.ts
│ │ └── url
│ │ │ └── url.ts
│ ├── views
│ │ ├── collection-view
│ │ │ ├── collection-header-bar
│ │ │ │ ├── collection-header-bar.mocha.tsx
│ │ │ │ ├── collection-header-bar.scss
│ │ │ │ └── collection-header-bar.tsx
│ │ │ ├── collection-overview
│ │ │ │ ├── collection-overview.scss
│ │ │ │ └── collection-overview.tsx
│ │ │ ├── collection-tile-card
│ │ │ │ ├── collection-tile-card.scss
│ │ │ │ └── collection-tile-card.tsx
│ │ │ ├── collection-tile-lightbox
│ │ │ │ ├── collection-tile-lightbox.scss
│ │ │ │ └── collection-tile-lightbox.tsx
│ │ │ ├── collection-view.scss
│ │ │ └── collection-view.tsx
│ │ ├── cube-view
│ │ │ ├── cube-header-bar
│ │ │ │ ├── cube-header-bar.mocha.tsx
│ │ │ │ ├── cube-header-bar.scss
│ │ │ │ └── cube-header-bar.tsx
│ │ │ ├── cube-view.mocha.tsx
│ │ │ ├── cube-view.scss
│ │ │ ├── cube-view.tsx
│ │ │ └── supervised-cube-header-bar
│ │ │ │ ├── supervised-cube-header-bar.scss
│ │ │ │ └── supervised-cube-header-bar.tsx
│ │ ├── home-view
│ │ │ ├── home-header-bar
│ │ │ │ ├── home-header-bar.mocha.tsx
│ │ │ │ ├── home-header-bar.scss
│ │ │ │ └── home-header-bar.tsx
│ │ │ ├── home-view.mocha.tsx
│ │ │ ├── home-view.scss
│ │ │ ├── home-view.tsx
│ │ │ └── item-card
│ │ │ │ ├── item-card.scss
│ │ │ │ └── item-card.tsx
│ │ ├── link-view
│ │ │ ├── link-header-bar
│ │ │ │ ├── link-header-bar.mocha.tsx
│ │ │ │ ├── link-header-bar.scss
│ │ │ │ └── link-header-bar.tsx
│ │ │ ├── link-view.mocha.tsx
│ │ │ ├── link-view.scss
│ │ │ └── link-view.tsx
│ │ ├── no-data-view
│ │ │ ├── no-data-header-bar
│ │ │ │ ├── no-data-header-bar.mocha.tsx
│ │ │ │ ├── no-data-header-bar.scss
│ │ │ │ └── no-data-header-bar.tsx
│ │ │ ├── no-data-view.scss
│ │ │ └── no-data-view.tsx
│ │ └── settings-view
│ │ │ ├── _layout.scss
│ │ │ ├── cluster-edit
│ │ │ ├── cluster-edit.scss
│ │ │ └── cluster-edit.tsx
│ │ │ ├── clusters
│ │ │ ├── clusters.scss
│ │ │ └── clusters.tsx
│ │ │ ├── data-cube-edit
│ │ │ ├── data-cube-edit.scss
│ │ │ └── data-cube-edit.tsx
│ │ │ ├── data-cubes
│ │ │ ├── data-cubes.scss
│ │ │ └── data-cubes.tsx
│ │ │ ├── data-table
│ │ │ ├── data-table.scss
│ │ │ └── data-table.tsx
│ │ │ ├── other
│ │ │ ├── other.scss
│ │ │ └── other.tsx
│ │ │ ├── settings-header-bar
│ │ │ ├── settings-header-bar.mocha.tsx
│ │ │ ├── settings-header-bar.scss
│ │ │ └── settings-header-bar.tsx
│ │ │ ├── settings-view.mocha.tsx
│ │ │ ├── settings-view.scss
│ │ │ └── settings-view.tsx
│ └── visualizations
│ │ ├── bar-chart
│ │ ├── bar-chart.mocha.tsx
│ │ ├── bar-chart.scss
│ │ ├── bar-chart.tsx
│ │ └── bar-coordinates.ts
│ │ ├── base-visualization
│ │ ├── base-visualization.scss
│ │ └── base-visualization.tsx
│ │ ├── geo
│ │ ├── geo.mocha.tsx
│ │ ├── geo.scss
│ │ └── geo.tsx
│ │ ├── index.tsx
│ │ ├── line-chart
│ │ ├── line-chart.mocha.tsx
│ │ ├── line-chart.scss
│ │ └── line-chart.tsx
│ │ ├── table
│ │ ├── _body.scss
│ │ ├── _header.scss
│ │ ├── _highlight-cont.scss
│ │ ├── table.mocha.tsx
│ │ ├── table.scss
│ │ └── table.tsx
│ │ └── totals
│ │ ├── totals.mocha.tsx
│ │ ├── totals.scss
│ │ └── totals.tsx
├── common
│ ├── manifests
│ │ ├── bar-chart
│ │ │ └── bar-chart.ts
│ │ ├── geo
│ │ │ └── geo.ts
│ │ ├── index.ts
│ │ ├── line-chart
│ │ │ └── line-chart.ts
│ │ ├── table
│ │ │ └── table.ts
│ │ └── totals
│ │ │ └── totals.ts
│ ├── models
│ │ ├── app-settings
│ │ │ ├── app-settings.mocha.ts
│ │ │ ├── app-settings.mock.ts
│ │ │ └── app-settings.ts
│ │ ├── clicker
│ │ │ └── clicker.ts
│ │ ├── cluster
│ │ │ ├── cluster.mocha.ts
│ │ │ └── cluster.ts
│ │ ├── collection-tile
│ │ │ ├── collection-tile.mocha.ts
│ │ │ ├── collection-tile.mock.ts
│ │ │ └── collection-tile.ts
│ │ ├── collection
│ │ │ ├── collection.mocha.ts
│ │ │ ├── collection.mock.ts
│ │ │ └── collection.ts
│ │ ├── colors
│ │ │ ├── colors.mocha.ts
│ │ │ └── colors.ts
│ │ ├── customization
│ │ │ ├── customization.mocha.ts
│ │ │ └── customization.ts
│ │ ├── data-cube
│ │ │ ├── data-cube.mocha.ts
│ │ │ ├── data-cube.mock.ts
│ │ │ └── data-cube.ts
│ │ ├── device
│ │ │ └── device.ts
│ │ ├── dimension
│ │ │ ├── dimension.mocha.ts
│ │ │ ├── dimension.mock.ts
│ │ │ └── dimension.ts
│ │ ├── drag-position
│ │ │ ├── drag-position.mocha.ts
│ │ │ └── drag-position.ts
│ │ ├── essence
│ │ │ ├── essence.mocha.ts
│ │ │ ├── essence.mock.ts
│ │ │ └── essence.ts
│ │ ├── external-view
│ │ │ ├── external-view.mocha.ts
│ │ │ └── external-view.ts
│ │ ├── filter-clause
│ │ │ ├── filter-clause.mocha.ts
│ │ │ └── filter-clause.ts
│ │ ├── filter
│ │ │ ├── filter.mocha.ts
│ │ │ └── filter.ts
│ │ ├── granularity
│ │ │ ├── granularity.mocha.ts
│ │ │ └── granularity.ts
│ │ ├── highlight
│ │ │ ├── highlight.mocha.ts
│ │ │ └── highlight.ts
│ │ ├── index.ts
│ │ ├── labels.ts
│ │ ├── list-item
│ │ │ └── list-item.ts
│ │ ├── manifest
│ │ │ └── manifest.ts
│ │ ├── measure
│ │ │ ├── measure.mocha.ts
│ │ │ └── measure.ts
│ │ ├── mocks.ts
│ │ ├── refresh-rule
│ │ │ ├── refresh-rule.mocha.ts
│ │ │ └── refresh-rule.ts
│ │ ├── sort-on
│ │ │ ├── sort-on.mocha.ts
│ │ │ ├── sort-on.mock.ts
│ │ │ └── sort-on.ts
│ │ ├── split-combine
│ │ │ ├── split-combine.mocha.ts
│ │ │ ├── split-combine.mock.ts
│ │ │ └── split-combine.ts
│ │ ├── splits
│ │ │ ├── splits.mocha.ts
│ │ │ └── splits.ts
│ │ ├── stage
│ │ │ ├── stage.mocha.ts
│ │ │ ├── stage.mock.ts
│ │ │ └── stage.ts
│ │ ├── time-tag
│ │ │ ├── time-tag.mocha.ts
│ │ │ └── time-tag.ts
│ │ ├── timekeeper
│ │ │ ├── timekeeper.mocha.ts
│ │ │ ├── timekeeper.mock.ts
│ │ │ └── timekeeper.ts
│ │ ├── user
│ │ │ └── user.ts
│ │ ├── view-supervisor
│ │ │ └── view-supervisor.ts
│ │ └── visualization-props
│ │ │ └── visualization-props.ts
│ └── utils
│ │ ├── array
│ │ └── array.ts
│ │ ├── circumstances-handler
│ │ ├── circumstances-handler.mocha.ts
│ │ └── circumstances-handler.tsx
│ │ ├── formatter
│ │ ├── formatter.mocha.ts
│ │ └── formatter.ts
│ │ ├── general
│ │ ├── general.mocha.ts
│ │ └── general.ts
│ │ ├── immutable-utils
│ │ └── immutable-utils.ts
│ │ ├── index.ts
│ │ ├── object
│ │ └── object.ts
│ │ ├── parser
│ │ └── parser.ts
│ │ ├── string
│ │ └── string.ts
│ │ ├── test-utils
│ │ ├── ensure-timezones.ts
│ │ └── index.ts
│ │ ├── time-monitor
│ │ └── time-monitor.ts
│ │ ├── time
│ │ ├── time.mocha.ts
│ │ └── time.ts
│ │ └── yaml-helper
│ │ └── yaml-helper.ts
└── server
│ ├── app.ts
│ ├── config.ts
│ ├── models
│ ├── index.ts
│ ├── server-settings
│ │ ├── server-settings.mocha.ts
│ │ └── server-settings.ts
│ └── settings-location
│ │ ├── settings-location.mocha.ts
│ │ └── settings-location.ts
│ ├── routes
│ ├── client-settings
│ │ └── client-settings.ts
│ ├── collections
│ │ └── collections.ts
│ ├── error
│ │ ├── error.mocha.ts
│ │ └── error.ts
│ ├── health
│ │ ├── health.mocha.ts
│ │ └── health.ts
│ ├── mkurl
│ │ ├── mkurl.mocha.ts
│ │ └── mkurl.ts
│ ├── pivot
│ │ ├── pivot.mocha.ts
│ │ └── pivot.ts
│ ├── plyql
│ │ ├── plyql.mocha.ts
│ │ └── plyql.ts
│ ├── plywood
│ │ ├── plywood.mocha.ts
│ │ └── plywood.ts
│ └── settings
│ │ └── settings.ts
│ ├── utils
│ ├── cluster-manager
│ │ └── cluster-manager.ts
│ ├── file-manager
│ │ └── file-manager.ts
│ ├── file
│ │ └── file.ts
│ ├── general
│ │ └── general.ts
│ ├── index.ts
│ ├── requester
│ │ └── requester.ts
│ ├── settings-manager
│ │ └── settings-manager.ts
│ ├── settings-store
│ │ └── settings-store.ts
│ └── updater
│ │ ├── updater.mocha.ts
│ │ └── updater.ts
│ ├── views.ts
│ └── www.ts
├── test
├── README.md
├── basic
│ └── cli.mocha.js
├── configs
│ ├── duplicate-measure-dimension-name.yaml
│ ├── inline-vars.yaml
│ ├── list-refresh-on-load-datasource.yaml
│ ├── one-little-datasource.yaml
│ ├── reintrospect-on-load-datasource.yaml
│ ├── reintrospect-on-load.yaml
│ ├── secure.yaml
│ ├── tracking-static.yaml
│ └── two-little-datasources.yaml
├── datazoo
│ ├── druid-introspection.js
│ └── postgres-introsection.js
├── simulate
│ ├── config-typo.mocha.js
│ ├── examples.mocha.js
│ ├── file.mocha.js
│ ├── list-refresh-on-load.mocha.js
│ ├── many-datasources.mocha.js
│ ├── reintrospect-on-load-datasource.mocha.js
│ ├── reintrospect-on-load.mocha.js
│ ├── secure.mocha.js
│ ├── tracking.mocha.js
│ └── typo.mocha.js
└── utils
│ ├── basic-string.js
│ ├── event-collector.js
│ ├── extend.js
│ ├── extract-config.js
│ └── mock-druid.js
├── travis-test
├── tsconfig.json
├── tslint.json
├── typings
├── assertion-error
│ └── assertion-error.d.ts
├── browser-filesaver
│ └── browser-filesaver.d.ts
├── clipboard
│ └── clipboard.d.ts
├── compression
│ └── compression.d.ts
├── d3
│ └── d3.d.ts
├── debug
│ └── debug.d.ts
├── form-data
│ └── form-data.d.ts
├── fs-promise
│ └── fs-promise.d.ts
├── hsts.d.ts
├── immutable.d.ts
├── jsdom
│ └── jsdom.d.ts
├── lz-string
│ └── lz-string.d.ts
├── mime
│ └── mime.d.ts
├── mocha
│ └── mocha.d.ts
├── nopt
│ └── nopt.d.ts
├── numeraljs
│ └── numeraljs.d.ts
├── react-addons-css-transition-group
│ └── react-addons-css-transition-group.d.ts
├── react-addons-test-utils
│ └── react-addons-test-utils.d.ts
├── react-dom
│ └── react-dom.d.ts
├── react
│ └── react.d.ts
├── require.d.ts
├── rewire
│ └── index.d.ts
└── sinon
│ └── sinon.d.ts
└── webstorm
└── lookfor.js
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | /.idea/workspace.xml
3 | /.idea/tasks.xml
4 | /.idea/encodings.xml
5 | /.sass-cache/
6 | /imply-pivot-*.tgz
7 | /node_modules/
8 | /build/
9 | /public/
10 | /private/
11 | /coverage/
12 | /assets/data/*-large.*
13 | /webstorm/errors
14 | /config.yaml
15 | /config-test.yaml
16 | /*.sublime-*
17 | /dont-commit-*
18 |
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | pivot
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/jsLibraryMappings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/pivot.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/runConfigurations/Run.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/scopes/All_Source_Files.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/scopes/Client_Source_Files.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/scopes/Server_Source_Files.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/scopes/TypeScript_Files.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | # === Webstorm ===
2 | /.idea/
3 | /.sass-cache/
4 | /imply-pivot-*.tgz
5 | /assets/data/*-large.*
6 | /webstorm
7 | /resources/
8 | /config.yaml
9 | /config-test.yaml
10 | /build/client
11 | *.mocha.js
12 | /private/
13 | /coverage/
14 | /script/
15 | /docs/
16 | /test/
17 | /src/
18 | /typings/
19 | /.travis.yml
20 | /travis-test
21 | /full-test
22 | /run
23 | /run-coverage
24 | /CONTRIBUTING.md
25 | /gulpfile.js
26 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - "4.0"
4 | - "6.1"
5 |
6 | script: "./travis-test"
7 |
8 | notifications:
9 | email: false
10 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # How to Contribute
2 |
3 | - Bug reports, feature requests, and any sort of feedback is very welcome.
4 | - Pull requests fixing bugs are very welcome as well.
5 | - For pull requests involving any changes to the UI, please discuss them first on the [Imply user group](https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!forum/imply-user-group).
6 |
--------------------------------------------------------------------------------
/NOTICE:
--------------------------------------------------------------------------------
1 | Pivot
2 |
3 | -------------------------------------------------------------------------------
4 |
5 | This software includes the font Open Sans, copyright (c) 2015, Google Inc.
6 | * LICENSE:
7 | * /assets/fonts/Open-Sans-regular/LICENSE.txt (Apache License 2.0)
8 | * HOMEPAGE:
9 | * https://www.google.com/fonts/specimen/Open+Sans
10 |
11 | This software includes the polyfill library ios-html5-drag-drop-shim, copyright (c) 2013 Tim Ruffles
12 | * LICENSE:
13 | * https://github.com/timruffles/ios-html5-drag-drop-shim/blob/rewrite/LICENSE (MIT)
14 | * HOMEPAGE:
15 | * https://github.com/timruffles/ios-html5-drag-drop-shim
16 |
--------------------------------------------------------------------------------
/assets/favicon/android-chrome-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/android-chrome-144x144.png
--------------------------------------------------------------------------------
/assets/favicon/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/android-chrome-192x192.png
--------------------------------------------------------------------------------
/assets/favicon/android-chrome-36x36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/android-chrome-36x36.png
--------------------------------------------------------------------------------
/assets/favicon/android-chrome-48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/android-chrome-48x48.png
--------------------------------------------------------------------------------
/assets/favicon/android-chrome-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/android-chrome-72x72.png
--------------------------------------------------------------------------------
/assets/favicon/android-chrome-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/android-chrome-96x96.png
--------------------------------------------------------------------------------
/assets/favicon/apple-touch-icon-114x114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/apple-touch-icon-114x114.png
--------------------------------------------------------------------------------
/assets/favicon/apple-touch-icon-120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/apple-touch-icon-120x120.png
--------------------------------------------------------------------------------
/assets/favicon/apple-touch-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/apple-touch-icon-144x144.png
--------------------------------------------------------------------------------
/assets/favicon/apple-touch-icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/apple-touch-icon-152x152.png
--------------------------------------------------------------------------------
/assets/favicon/apple-touch-icon-180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/apple-touch-icon-180x180.png
--------------------------------------------------------------------------------
/assets/favicon/apple-touch-icon-57x57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/apple-touch-icon-57x57.png
--------------------------------------------------------------------------------
/assets/favicon/apple-touch-icon-60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/apple-touch-icon-60x60.png
--------------------------------------------------------------------------------
/assets/favicon/apple-touch-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/apple-touch-icon-72x72.png
--------------------------------------------------------------------------------
/assets/favicon/apple-touch-icon-76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/apple-touch-icon-76x76.png
--------------------------------------------------------------------------------
/assets/favicon/apple-touch-icon-precomposed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/apple-touch-icon-precomposed.png
--------------------------------------------------------------------------------
/assets/favicon/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/apple-touch-icon.png
--------------------------------------------------------------------------------
/assets/favicon/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | #189ae0
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/assets/favicon/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/favicon-16x16.png
--------------------------------------------------------------------------------
/assets/favicon/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/favicon-32x32.png
--------------------------------------------------------------------------------
/assets/favicon/favicon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/favicon-96x96.png
--------------------------------------------------------------------------------
/assets/favicon/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/favicon.ico
--------------------------------------------------------------------------------
/assets/favicon/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Pivot",
3 | "icons": [
4 | {
5 | "src": "\/favicon\/android-chrome-36x36.png?v=3",
6 | "sizes": "36x36",
7 | "type": "image\/png",
8 | "density": 0.75
9 | },
10 | {
11 | "src": "\/favicon\/android-chrome-48x48.png?v=3",
12 | "sizes": "48x48",
13 | "type": "image\/png",
14 | "density": 1
15 | },
16 | {
17 | "src": "\/favicon\/android-chrome-72x72.png?v=3",
18 | "sizes": "72x72",
19 | "type": "image\/png",
20 | "density": 1.5
21 | },
22 | {
23 | "src": "\/favicon\/android-chrome-96x96.png?v=3",
24 | "sizes": "96x96",
25 | "type": "image\/png",
26 | "density": 2
27 | },
28 | {
29 | "src": "\/favicon\/android-chrome-144x144.png?v=3",
30 | "sizes": "144x144",
31 | "type": "image\/png",
32 | "density": 3
33 | },
34 | {
35 | "src": "\/favicon\/android-chrome-192x192.png?v=3",
36 | "sizes": "192x192",
37 | "type": "image\/png",
38 | "density": 4
39 | }
40 | ],
41 | "display": "standalone"
42 | }
43 |
--------------------------------------------------------------------------------
/assets/favicon/mstile-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/mstile-144x144.png
--------------------------------------------------------------------------------
/assets/favicon/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/mstile-150x150.png
--------------------------------------------------------------------------------
/assets/favicon/mstile-310x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/mstile-310x150.png
--------------------------------------------------------------------------------
/assets/favicon/mstile-310x310.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/mstile-310x310.png
--------------------------------------------------------------------------------
/assets/favicon/mstile-70x70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/favicon/mstile-70x70.png
--------------------------------------------------------------------------------
/assets/fonts/Open-Sans-600/Open-Sans-600.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/fonts/Open-Sans-600/Open-Sans-600.eot
--------------------------------------------------------------------------------
/assets/fonts/Open-Sans-600/Open-Sans-600.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/fonts/Open-Sans-600/Open-Sans-600.ttf
--------------------------------------------------------------------------------
/assets/fonts/Open-Sans-600/Open-Sans-600.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/fonts/Open-Sans-600/Open-Sans-600.woff
--------------------------------------------------------------------------------
/assets/fonts/Open-Sans-600/Open-Sans-600.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/fonts/Open-Sans-600/Open-Sans-600.woff2
--------------------------------------------------------------------------------
/assets/fonts/Open-Sans-regular/Open-Sans-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/fonts/Open-Sans-regular/Open-Sans-regular.eot
--------------------------------------------------------------------------------
/assets/fonts/Open-Sans-regular/Open-Sans-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/fonts/Open-Sans-regular/Open-Sans-regular.ttf
--------------------------------------------------------------------------------
/assets/fonts/Open-Sans-regular/Open-Sans-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/fonts/Open-Sans-regular/Open-Sans-regular.woff
--------------------------------------------------------------------------------
/assets/fonts/Open-Sans-regular/Open-Sans-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/assets/fonts/Open-Sans-regular/Open-Sans-regular.woff2
--------------------------------------------------------------------------------
/bin/pivot:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | /*
4 | * Copyright 2015-2016 Imply Data, Inc.
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | var path = require('path');
20 | var fs = require('fs');
21 | var lib = path.join(path.dirname(fs.realpathSync(__filename)), '../build/server/www.js');
22 |
23 | require(lib);
24 |
--------------------------------------------------------------------------------
/compile:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 |
3 | #exit 0;
4 |
5 | ./node_modules/.bin/tsc
6 | gulp client:bundle > /dev/null
7 |
--------------------------------------------------------------------------------
/docs/example/request-decoration/config.yaml:
--------------------------------------------------------------------------------
1 | # The port on which the Pivot server will listen on
2 | port: 9090
3 |
4 | clusters:
5 | - name: druid
6 | type: druid
7 | host: the.druid.host:8082 # This happens to be my Docker machine
8 |
9 | requestDecorator: './druid-request-decorator.js'
10 |
11 | # The are being read by the druidRequestDecorator
12 | decoratorOptions:
13 | myUsername: Aladdin
14 | myPassword: OpenSesame
15 |
16 |
--------------------------------------------------------------------------------
/docs/example/request-decoration/result.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/docs/example/request-decoration/result.png
--------------------------------------------------------------------------------
/docs/images/compare.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/docs/images/compare.gif
--------------------------------------------------------------------------------
/docs/images/custom-link.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/docs/images/custom-link.png
--------------------------------------------------------------------------------
/docs/images/drag-and-drop.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/docs/images/drag-and-drop.gif
--------------------------------------------------------------------------------
/docs/images/explore.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/docs/images/explore.gif
--------------------------------------------------------------------------------
/full-test:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 |
3 | ./travis-test
4 | mocha test/datazoo
5 |
--------------------------------------------------------------------------------
/lib/polyfill/drag-drop-polyfill.css:
--------------------------------------------------------------------------------
1 |
2 | .dnd-poly-drag-image {
3 | opacity: .5 !important;
4 | }
5 |
6 | .dnd-poly-drag-image.dnd-poly-snapback {
7 | transition-property: transform, -webkit-transform !important;
8 | transition-duration: 250ms !important;
9 | transition-timing-function: ease-out !important;
10 | }
11 |
--------------------------------------------------------------------------------
/resources/data/wikiticker-2015-09-12.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/resources/data/wikiticker-2015-09-12.gz
--------------------------------------------------------------------------------
/resources/logo/pivot-logo-1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/resources/logo/pivot-logo-1024.png
--------------------------------------------------------------------------------
/resources/logo/pivot-logo-128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/resources/logo/pivot-logo-128.png
--------------------------------------------------------------------------------
/resources/logo/pivot-logo-32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/resources/logo/pivot-logo-32.png
--------------------------------------------------------------------------------
/resources/logo/pivot-logo-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/resources/logo/pivot-logo-512.png
--------------------------------------------------------------------------------
/resources/logo/pivot-logo-64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/resources/logo/pivot-logo-64.png
--------------------------------------------------------------------------------
/resources/logo/pivot-logo-800.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geo-opensource/pivot/cae3b8ba7b92ea4d236c83700b9444b2dbc29b4f/resources/logo/pivot-logo-800.png
--------------------------------------------------------------------------------
/resources/logo/pngify:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 |
3 | # Force this to the working directory
4 | cd "$(dirname "$0")"
5 |
6 | if which convert > /dev/null; then
7 | echo "Converting..."
8 | else
9 | echo "Please install ImageMagic."
10 | exit 1
11 | fi
12 |
13 | # Note: Look into filters (http://www.imagemagick.org/script/command-line-options.php?#filter)
14 |
15 | rm -f ./*.png
16 |
17 | # Render the SVG into a big PNG
18 | convert -density 1200 -background none pivot-logo.svg -resize 1024x1024 pivot-logo-1024.png
19 | convert -density 1200 -background none pivot-logo.svg -resize 800x800 pivot-logo-800.png
20 |
21 | # Down size the large PNG into other sizes
22 | # Gamma correction from: http://www.4p8.com/eric.brasseur/gamma.html
23 | # Thank you to Xavier Léauté (https://github.com/xvrl) for pointing it out.
24 | convert pivot-logo-1024.png -depth 16 -gamma 0.454545 -resize 512x512 -gamma 2.2 -depth 8 pivot-logo-512.png
25 | convert pivot-logo-1024.png -depth 16 -gamma 0.454545 -resize 128x128 -gamma 2.2 -depth 8 pivot-logo-128.png
26 | convert pivot-logo-1024.png -depth 16 -gamma 0.454545 -resize 64x64 -gamma 2.2 -depth 8 pivot-logo-64.png
27 | convert pivot-logo-1024.png -depth 16 -gamma 0.454545 -resize 32x32 -gamma 2.2 -depth 8 pivot-logo-32.png
28 |
29 | echo "Done"
30 |
--------------------------------------------------------------------------------
/run:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 |
3 | # Force this to the working directory
4 | cd "$(dirname "$0")"
5 |
6 | exec ./bin/pivot --config config.yaml
7 |
--------------------------------------------------------------------------------
/run-coverage:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 |
3 | # Use a reporter that does not take a ton of height
4 | node node_modules/.bin/istanbul cover node_modules/.bin/_mocha -- --reporter progress build/**/*.mocha.js;
5 |
--------------------------------------------------------------------------------
/script/cp-plywood:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 |
3 | # This script is used to quickly 'npm install plywood@super-latest' without having to publish plywood.
4 | # Assumes /pivot and /plywood are next to each other
5 |
6 | (cd ../plywood; ./compile )
7 | cp ../plywood/package.json ./node_modules/plywood
8 | cp -r ../plywood/package ./node_modules/plywood
9 | cp -r ../plywood/build ./node_modules/plywood
10 | cp -r ../plywood/src ./node_modules/plywood
11 | cp -r ../plywood/test ./node_modules/plywood
12 |
--------------------------------------------------------------------------------
/script/prod-build:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 |
3 | npm install
4 |
5 | gulp
6 |
7 | npm prune --production
8 |
--------------------------------------------------------------------------------
/script/publish:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 |
3 | if [ `git symbolic-ref --short HEAD` != "latest" ]
4 | then
5 | echo "can not publish from a non master branch" >&2
6 | exit 1
7 | fi
8 |
9 | if [ "$(git status --porcelain)" != "" ]
10 | then
11 | echo "git status not clean!" >&2
12 | exit 1
13 | fi
14 |
15 | echo "Trying to publish..."
16 |
17 | gulp all
18 | ./travis-test
19 | script/version-bump
20 | npm publish
21 |
--------------------------------------------------------------------------------
/script/update-all:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 |
3 | brew update
4 | brew upgrade node
5 | rm -rf node_modules
6 | npm install
7 | gulp all
8 |
--------------------------------------------------------------------------------
/script/version-bump:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 |
3 | echo "Updating version..."
4 | npm version patch -m "Upgrade version to %s"
5 | git push
6 | git push --tags;
7 |
--------------------------------------------------------------------------------
/src/client/_imports.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import 'config/constants';
18 | @import 'utils/styles/index';
19 |
--------------------------------------------------------------------------------
/src/client/applications/pivot-application/pivot-application.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .pivot-application {
20 | position: absolute;
21 | top: 0;
22 | left: 0;
23 | width: 100%;
24 | height: 100%;
25 | overflow: hidden;
26 | background: $background-base;
27 |
28 | .not-implemented { display: none; }
29 |
30 | .home-view,
31 | .no-data-view,
32 | .cube-view,
33 | .link-view,
34 | .settings-view {
35 | @include pin-full;
36 | }
37 |
38 | .side-drawer-container {
39 | position: absolute;
40 | left: 0;
41 | top: 0;
42 | bottom: 0;
43 | z-index: 80;
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/client/components/auto-refresh-menu/auto-refresh-menu.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .auto-refresh-menu {
20 | .update-now-button {
21 | @extend %button-secondary;
22 | width: 100%;
23 | margin-top: 8px;
24 |
25 | svg {
26 | position: absolute;
27 | top: 5px;
28 | left: 50%;
29 | margin-left: -10px;
30 | width: 19px;
31 | }
32 | }
33 |
34 | .update-info {
35 | @extend %indicator-field;
36 | flex: 1;
37 | margin-top: 8px;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/client/components/body-portal/body-portal.mocha.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import { expect } from 'chai';
18 | import * as sinon from 'sinon';
19 | import * as React from 'react';
20 | import * as ReactDOM from 'react-dom';
21 |
22 | import * as TestUtils from 'react-addons-test-utils';
23 |
24 | import '../../utils/test-utils/index';
25 |
26 | import { $, Expression } from 'plywood';
27 | import { BodyPortal } from './body-portal';
28 |
29 | describe('BodyPortal', () => {
30 |
31 | });
32 |
--------------------------------------------------------------------------------
/src/client/components/body-portal/body-portal.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .body-portal {
20 | position: absolute;
21 |
22 | &.full-size {
23 | width: 100%;
24 | height: 100%;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/client/components/bucket-marks/bucket-marks.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .bucket-marks {
20 | pointer-events: none;
21 |
22 | line {
23 | pointer-events: none;
24 | stroke: $gray;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/client/components/chart-line/chart-line.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .chart-line {
20 | pointer-events: none;
21 |
22 | .area {
23 | stroke: none;
24 | fill: $main-time-area;
25 | fill-opacity: .9;
26 | }
27 |
28 | .line {
29 | fill: none;
30 | stroke: $main-time-line;
31 | stroke-width: 1.6px;
32 | }
33 |
34 | .singleton {
35 | fill: $main-time-line;
36 | stroke: none;
37 | }
38 |
39 | .hover {
40 | fill: $white;
41 | stroke: $main-time-line;
42 | stroke-width: 2;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/client/components/date-range-input/date-range-input.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .date-range-input {
20 | .input-field {
21 | @extend %default-input;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/client/components/dimension-measure-panel/dimension-measure-panel.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .dimension-measure-panel {
20 | @include for-small-screens {
21 | padding: 0 1px 0 0;
22 | font-size: 0.9em;
23 | }
24 |
25 | padding: $tile-margin-v $tile-margin-h;
26 |
27 | display: flex;
28 | flex-direction: column;
29 |
30 | .dimension-list-tile {
31 | margin-bottom: 1px;
32 | border-radius: $corner $corner 0 0;
33 | }
34 |
35 | .measures-tile {
36 | border-radius: 0 0 $corner $corner;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/client/components/filter-menu/filter-menu.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .filter-menu {
20 | .button-bar {
21 | margin-top: 12px;
22 |
23 | button {
24 | min-width: 70px;
25 |
26 | &:not(:last-child) {
27 | margin-right: 6px;
28 | }
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/client/components/global-event-listener/global-event-listener.mocha.tsx:
--------------------------------------------------------------------------------
1 | import { expect } from 'chai';
2 | import * as sinon from 'sinon';
3 | import * as React from 'react';
4 | import * as TestUtils from 'react-addons-test-utils';
5 | import { $, Expression } from 'plywood';
6 |
7 | import { findDOMNode } from '../../utils/test-utils/index';
8 |
9 | import { GlobalEventListener } from './global-event-listener';
10 |
11 | describe('GlobalEventListener', () => {
12 | it('adds the correct class', () => {
13 | var renderedComponent = TestUtils.renderIntoDocument(
14 |
17 | );
18 | });
19 |
20 | });
21 |
--------------------------------------------------------------------------------
/src/client/components/golden-center/golden-center.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .golden-center {
20 | & > div {
21 | margin: auto;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/client/components/grid-lines/grid-lines.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .grid-lines {
20 | line {
21 | pointer-events: none;
22 | stroke: $grid-line-color;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/client/components/highlight-string/highlight-string.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .highlight-string {
20 | .bold {
21 | border-bottom: 1px solid $text-standard;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/client/components/hiluk-menu/hiluk-menu.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .hiluk-menu {
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/src/client/components/immutable-dropdown/immutable-dropdown.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .immutable-dropdown {
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/src/client/components/immutable-input/immutable-input.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .immutable-input {
20 | @extend %default-input;
21 | }
22 |
--------------------------------------------------------------------------------
/src/client/components/line-chart-axis/line-chart-axis.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .line-chart-axis {
20 | @include pin-full;
21 |
22 | line {
23 | pointer-events: none;
24 | }
25 |
26 | line {
27 | stroke: $gray;
28 | }
29 |
30 | text {
31 | text-anchor: middle;
32 | font-size: 12px;
33 | fill: $text-medium;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/client/components/loader/loader.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | require('./loader.css');
18 |
19 | import * as React from 'react';
20 | import { SvgIcon } from '../svg-icon/svg-icon';
21 |
22 | export interface LoaderProps extends React.Props {
23 | }
24 |
25 | export interface LoaderState {
26 | }
27 |
28 | export class Loader extends React.Component {
29 | constructor() {
30 | super();
31 |
32 | }
33 |
34 | render() {
35 | return
36 |
37 |
;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/client/components/manual-fallback/manual-fallback.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .manual-fallback {
20 | text-align: center;
21 | padding: 100px 30px;
22 |
23 | .message {
24 | font-size: 20px;
25 | color: $text-medium;
26 | }
27 |
28 | ul {
29 | margin-top: 24px;
30 | }
31 |
32 | li {
33 | font-size: 14px;
34 | cursor: pointer;
35 | color: $brand;
36 | margin-bottom: 10px;
37 |
38 | &:hover {
39 | text-decoration: underline;
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/client/components/nav-logo/nav-logo.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .nav-logo {
20 | padding-right: $nav-padding;
21 | height: 60px;
22 |
23 | .logo {
24 | position: absolute;
25 | left: $nav-padding;
26 | top: 50%;
27 | transform: translate(0, -50%);
28 | height: 31px;
29 |
30 | svg {
31 | height: 100%;
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/client/components/notifications/notifications.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .notifications {
20 | }
21 |
22 | .remove-modal {
23 | .message {
24 | p {
25 | margin-bottom: 4px;
26 | }
27 |
28 | .dependency-list {
29 | background-color: $background-medium;
30 | padding: 15px 10px;
31 |
32 | p {
33 | margin-bottom: 4px;
34 | }
35 | }
36 | }
37 |
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/src/client/components/number-filter-menu/number-filter-menu.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .number-filter-menu {
20 |
21 | .side-by-side {
22 | @extend %side-by-side;
23 | }
24 |
25 | .group {
26 | flex-direction: column;
27 | }
28 |
29 | .input-top-label {
30 | @extend %input-top-label;
31 | }
32 |
33 | input {
34 | @extend %default-input;
35 |
36 | &.gray {
37 | color: $gray;
38 | }
39 | }
40 |
41 | input, .filter-options-dropdown {
42 | margin-top: 6px;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/client/components/preview-string-filter-menu/preview-string-filter-menu.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .string-filter-menu {
20 | .row {
21 | &.no-select {
22 | pointer-events: none;
23 | user-select: none;
24 | }
25 | }
26 |
27 | .matching-values-message {
28 | padding: 4px 10px;
29 | color: $text-light;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/client/components/query-error/query-error.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | $container-width: 180px;
20 | $container-height: 50px;
21 |
22 | .query-error {
23 | text-align: center;
24 |
25 | .whiteout {
26 | @include pin-full;
27 | background: $white;
28 | opacity: 0.5;
29 | }
30 |
31 | .error-container {
32 | @include center($container-width, $container-height);
33 | color: $red;
34 | text-align: left;
35 |
36 | .error {
37 | font-size: 14px;
38 | }
39 |
40 | .message {
41 | margin-top: 5px;
42 | font-size: 13px;
43 | overflow: hidden;
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/client/components/router/router.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .router {
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/src/client/components/segment-action-buttons/segment-action-buttons.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .segment-action-buttons {
20 | white-space: nowrap;
21 |
22 | .button {
23 | margin-right: 5px;
24 | }
25 |
26 | .button:last-child {
27 | margin-right: 0;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/client/components/selectable-string-filter-menu/selectable-string-filter-menu.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | $checkbox-width: 20px;
20 |
21 | .string-filter-menu {
22 | .row {
23 | height: 24px;
24 | cursor: pointer;
25 | padding: 0 $padding-compact;
26 |
27 | &:hover {
28 | background: $hover;
29 | }
30 |
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/client/components/settings-menu/settings-menu.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .settings-menu {
20 | padding: $padding-compact 0;
21 |
22 | .simple-item, .dropdown {
23 | padding: 0 $padding-compact;
24 | }
25 |
26 | .simple-item {
27 | cursor: pointer;
28 | line-height: 25px;
29 |
30 | &:hover {
31 | background: rgba($brand, 0.12);
32 | }
33 |
34 | &.selected {
35 | background: $background-light;
36 | }
37 | }
38 |
39 | .separator {
40 | height: 14px;
41 | margin-top: 8px;
42 | border-top: 1px solid $border-extra-light;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/client/components/svg-icon/svg-icon.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .svg-icon {
20 | pointer-events: none;
21 | }
22 |
--------------------------------------------------------------------------------
/src/client/components/user-menu/user-menu.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .user-menu {
20 | ul.bubble-list {
21 | li.display-name {
22 | pointer-events: none;
23 | color: $text-lighterish;
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/client/components/vertical-axis/vertical-axis.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .vertical-axis {
20 | pointer-events: none;
21 |
22 | line.border {
23 | stroke: $gray;
24 | }
25 |
26 | line.tick {
27 | stroke: $gray;
28 | }
29 |
30 | text {
31 | font-size: 12px;
32 | fill: $text-medium;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/client/components/vis-measure-label/vis-measure-label.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .vis-measure-label {
20 | pointer-events: none;
21 | white-space: nowrap;
22 | }
23 |
--------------------------------------------------------------------------------
/src/client/components/vis-selector-menu/vis-selector-menu.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | $vis-menu-padding: 16px;
20 | $vis-item-margin: 1px;
21 |
22 | .vis-selector-menu {
23 | @extend %menu-cont;
24 | z-index: 8;
25 | font-size: 0;
26 | width: ($vis-item-width + $vis-item-margin * 2) * 3 + $vis-menu-padding * 2;
27 | padding: $vis-menu-padding;
28 |
29 | .vis-item {
30 | margin: 1px;
31 | border-radius: $corner;
32 |
33 | &:hover {
34 | box-shadow: inset 0 0 0 1px $border-extra-light;
35 | }
36 |
37 | &.selected {
38 | box-shadow: inset 0 0 0 1px $border-light;
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/client/delegates/index.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | export * from './immutable-form-delegate/immutable-form-delegate';
18 | export * from './loading-message-delegate/loading-message-delegate';
19 |
--------------------------------------------------------------------------------
/src/client/icons/caret.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/check.svg:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/src/client/icons/data.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/client/icons/dim-boolean.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/dim-number.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/dim-set-string.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/dim-string.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/dim-time.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/drag-arrow.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/dragger.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/client/icons/dropdown-caret.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/filter-contains.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/filter-exclude.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/filter-include.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/filter-intersection.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/filter-regex.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-add-framed.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-add.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-back.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-bookmark.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-caret-bottom.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-caret-left-line.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-caret-left.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-caret-right-line.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-caret-right.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-caret-small-bottom.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-caret-small-left.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-caret-small-right.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-caret-small-top.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-caret-top.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-cluster.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-collection.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-cube.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-delete.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-edit.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-error.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-expand.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-menu.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-more-compact.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
18 |
--------------------------------------------------------------------------------
/src/client/icons/full-more-mini.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-more.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-profile.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-refresh.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-remove-small.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-remove.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-time.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/full-user.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/grid-loader.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/client/icons/help.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/client/icons/home.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/measures.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/client/icons/menu.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/pinned.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/preview-filter.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/preview-pin.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/preview-split.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/preview-subsplit.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/prout:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/sort-arrow.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/split-add.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/split-replace.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/star.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/to-arrow.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/client/icons/x.svg:
--------------------------------------------------------------------------------
1 |
2 |
9 |
--------------------------------------------------------------------------------
/src/client/modals/about-modal/about-modal.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .about-modal {
20 | p {
21 | margin-bottom: $form-spacing-compact;
22 | line-height: 20px;
23 |
24 | &:last-child {
25 | margin-bottom: 0;
26 | }
27 | }
28 |
29 | a {
30 | color: $brand;
31 | cursor: pointer;
32 |
33 | &:hover {
34 | text-decoration: underline;
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/client/modals/add-collection-tile-modal/add-collection-tile-modal.mocha.tsx:
--------------------------------------------------------------------------------
1 | import { expect } from 'chai';
2 | import * as sinon from 'sinon';
3 | import * as React from 'react';
4 | import * as TestUtils from 'react-addons-test-utils';
5 | import { $, Expression } from 'plywood';
6 |
7 | import { findDOMNode } from '../../utils/test-utils/index';
8 | import { TimekeeperMock } from '../../../common/models/mocks';
9 |
10 | import { AddCollectionTileModal } from './add-collection-tile-modal';
11 |
12 | describe.skip('AddCollectionTileModal', () => {
13 | it('adds the correct class', () => {
14 | var renderedComponent = TestUtils.renderIntoDocument(
15 |
21 | );
22 |
23 | expect(TestUtils.isCompositeComponent(renderedComponent), 'should be composite').to.equal(true);
24 | expect((findDOMNode(renderedComponent) as any).className, 'should contain class').to.contain('add-collection-tile-modal');
25 | });
26 |
27 | });
28 |
--------------------------------------------------------------------------------
/src/client/modals/add-collection-tile-modal/add-collection-tile-modal.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .add-collection-tile-modal {
20 | form {
21 | @extend %form;
22 | width: 100%;
23 | }
24 |
25 | .new-collection {
26 | margin: 7px 0 23px 1px;
27 | font-size: 11px;
28 | cursor: pointer;
29 | color: $brand;
30 |
31 | &:not(.disabled):hover {
32 | text-decoration: underline;
33 | }
34 |
35 | &.disabled {
36 | color: $text-light;
37 | cursor: initial;
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/client/modals/cluster-seed-modal/cluster-seed-modal.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .cluster-seed-modal {
20 | form {
21 | @extend %form;
22 | width: 100%;
23 | }
24 |
25 | .loading-bar {
26 | margin-top: 10px;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/client/modals/data-cube-filter-modal/data-cube-filter-modal.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .data-cube-filter-modal {
20 | form {
21 | @extend %form;
22 | width: 100%;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/client/modals/data-cube-seed-modal/data-cube-seed-modal.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .data-cube-seed-modal {
20 | form {
21 | @extend %form;
22 | width: 100%;
23 |
24 | .checkbox {
25 | margin-top: 25px;
26 |
27 | &.selected {
28 | .checkbox-body {
29 | background: $brand;
30 | }
31 | }
32 |
33 | .label {
34 | top: 4px;
35 | text-transform: initial;
36 | color: $text-medium;
37 | font-size: 13px;
38 | }
39 | }
40 |
41 | }
42 |
43 | .loading-bar {
44 | margin-top: 10px;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/client/modals/dimension-modal/dimension-modal.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .dimension-modal {
20 | form {
21 | @extend %form;
22 | width: 100%;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/client/modals/measure-modal/measure-modal.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .measure-modal {
20 | form {
21 | @extend %form;
22 | width: 100%;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/client/modals/name-description-modal/name-description-modal.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .name-description-modal {
20 | form {
21 | @extend %form;
22 | width: 100%;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/client/utils/function-slot/function-slot.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | export interface FunctionSlot {
18 | (...args: any[]): T;
19 | fill?: (fn: (...args: any[]) => T) => void;
20 | clear?: () => void;
21 | }
22 |
23 | export function createFunctionSlot(): FunctionSlot {
24 | var myFn: (...args: any[]) => T;
25 | var slot: FunctionSlot = (...args: any[]) => {
26 | if (myFn) return myFn.apply(this, args);
27 | return undefined;
28 | };
29 | slot.fill = (fn: (...args: any[]) => T) => { myFn = fn; };
30 | slot.clear = () => { myFn = null; };
31 | return slot;
32 | }
33 |
--------------------------------------------------------------------------------
/src/client/utils/local-storage/local-storage.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | export function get(key: string): any {
18 | try {
19 | return JSON.parse(localStorage[key]);
20 | } catch (e) {
21 | return undefined;
22 | }
23 | }
24 |
25 | export function set(key: string, value: any) {
26 | try {
27 | localStorage[key] = JSON.stringify(value);
28 | } catch (e) {}
29 | }
30 |
--------------------------------------------------------------------------------
/src/client/utils/styles/_bounce.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @mixin bounce($properties...) {
18 | $result: ();
19 | @each $property in $properties {
20 | $result: append($result, $property 0.2s cubic-bezier(.87, -.41, .19, 1.44), comma);
21 | }
22 |
23 | transition: $result;
24 | }
25 |
--------------------------------------------------------------------------------
/src/client/utils/styles/_form.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | %form {
18 | width: 448px;
19 |
20 | &.vertical {
21 | > * {
22 | display: block;
23 | }
24 | }
25 |
26 | input {
27 | @extend %default-input;
28 | }
29 |
30 | .dropdown .dropdown-label {
31 | margin-bottom: 8px;
32 | }
33 |
34 | input, .input, .checkbox {
35 | &:not(.actionable) {
36 | margin-bottom: 25px;
37 | }
38 | }
39 |
40 | .checkbox {
41 | height: 20px;
42 | width: 100%;
43 |
44 | .label {
45 | @extend %input-top-label;
46 |
47 | position: absolute;
48 | left: 25px;
49 | top: 5px;
50 | }
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/src/client/utils/styles/_indicator-field.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | %indicator-field {
18 | @include ellipsis;
19 | height: $input-height;
20 | line-height: $input-height - 2px;
21 | //border: 1px solid #dfdfdf;
22 | background: #f2f2f2;
23 | border-radius: $corner;
24 | color: #909090;
25 | text-align: center;
26 | padding-left: 8px;
27 | padding-right: 8px;
28 | }
29 |
--------------------------------------------------------------------------------
/src/client/utils/styles/_linear-transition.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @mixin linear($properties...) {
18 | $result: ();
19 | @each $property in $properties {
20 | $result: append($result, $property 0.2s, comma);
21 | }
22 |
23 | transition: $result;
24 | }
25 |
--------------------------------------------------------------------------------
/src/client/utils/styles/_media-queries.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | $small-screen: 1080px;
18 | $medium-screen: 1250px;
19 |
20 | @mixin for-large-screens {
21 | @media only screen and (min-width: $medium-screen) {
22 | @content;
23 | }
24 | }
25 |
26 | @mixin for-medium-screens {
27 | @media only screen and (max-width: $medium-screen) {
28 | @content;
29 | }
30 | }
31 |
32 | @mixin for-small-screens {
33 | @media only screen and (max-width: $small-screen) {
34 | @content;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/client/utils/styles/_menu-cont.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | %menu-cont {
18 | background: $white;
19 | border-radius: $corner;
20 | box-shadow: 0 3px 10px 0 hsla(0, 0, 0, 0.26), 0 0 3px 0 hsla(0, 0, 0, 0.16);
21 | }
22 |
--------------------------------------------------------------------------------
/src/client/utils/styles/_modal-cont.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | %modal-cont {
18 | background: #fff;
19 | border-radius: 2px;
20 | box-shadow: 0 5px 9px 0 rgba(0, 0, 0, 0.3), 0 0 5px 0 rgba(0, 0, 0, 0.2);
21 | }
22 |
--------------------------------------------------------------------------------
/src/client/utils/styles/_module.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | %module {
18 | background: $white;
19 | box-shadow: 0 1px 1px 0 rgba($black, 0.1);
20 | }
21 |
22 | %module-h-title {
23 | .title {
24 | @include pin-left($bar-title-width);
25 | padding: 12px 0 0 $padding-compact;
26 | font-size: 12px;
27 | text-transform: uppercase;
28 | color: $text-light;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/client/utils/styles/_side-by-side.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | %side-by-side {
18 | display: flex;
19 |
20 | & > * {
21 | margin-right: 5px;
22 |
23 | &:last-child {
24 | margin-right: 0;
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/client/utils/styles/_white-shadow.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | %white-shadow {
18 | &::after {
19 | @include pin-full;
20 | content: '';
21 | pointer-events: none;
22 | box-shadow: inset 0 -20px 10px -10px $white;
23 | border-radius: $corner;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/client/utils/test-utils/find-dom-node.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import * as ReactDOM from 'react-dom';
18 | import * as TestUtils from 'react-addons-test-utils';
19 | import { BodyPortal } from '../../components/body-portal/body-portal';
20 |
21 | export function findDOMNode(element: __React.Component): Element {
22 | var portal = TestUtils.scryRenderedComponentsWithType(element, BodyPortal)[0];
23 | return portal ? portal.target.childNodes[0] : ReactDOM.findDOMNode(element);
24 | }
25 |
--------------------------------------------------------------------------------
/src/client/utils/test-utils/index.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | // This needs to be required, otherwise React doesn't play nice with jsdom...
18 | var ExecutionEnvironment = require('../../../../node_modules/fbjs/lib/ExecutionEnvironment');
19 | ExecutionEnvironment.canUseDOM = true;
20 |
21 | import './jsdom-setup';
22 | import './require-extensions';
23 |
24 | import '../../../common/utils/test-utils/index';
25 |
26 | export * from './mock-require-ensure';
27 | export * from './mock-react-component';
28 | export * from './find-dom-node';
29 |
--------------------------------------------------------------------------------
/src/client/utils/test-utils/mock-require-ensure.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import { resolve, dirname } from 'path';
18 | import { getCallerFile } from './get-caller-file';
19 | import * as rewire from 'rewire';
20 |
21 | export function mockRequireEnsure(path: string): any {
22 | // Gets the absolute path based on the caller's path
23 | path = resolve(dirname(getCallerFile()), path);
24 |
25 | let mod = rewire(path);
26 |
27 | let mockedRequire = mod.__get__('require');
28 | mockedRequire.ensure = (path: any, callback: any) => callback(mockedRequire);
29 |
30 | return mod;
31 | }
32 |
--------------------------------------------------------------------------------
/src/client/utils/test-utils/require-extensions.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | require.extensions['.css'] = (module: any, filename: string) => {};
18 | require.extensions['.svg'] = (module: any, filename: string) => {
19 | module.exports = '';
20 | };
21 |
--------------------------------------------------------------------------------
/src/client/utils/url/url.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | export function replaceHash(newHash: string) {
18 | // Acts like window.location.hash = newHash but doesn't clutter the history
19 | // See http://stackoverflow.com/a/23924886/863119
20 | window.history.replaceState(undefined, undefined, newHash);
21 | }
22 |
--------------------------------------------------------------------------------
/src/client/views/collection-view/collection-header-bar/collection-header-bar.mocha.tsx:
--------------------------------------------------------------------------------
1 | import { expect } from 'chai';
2 | import * as sinon from 'sinon';
3 | import * as React from 'react';
4 | import * as TestUtils from 'react-addons-test-utils';
5 | import { $, Expression } from 'plywood';
6 |
7 | import { DataCubeMock, EssenceMock } from '../../../../common/models/mocks';
8 |
9 | import { findDOMNode } from '../../../utils/test-utils/index';
10 |
11 | import { CollectionHeaderBar } from './collection-header-bar';
12 |
13 | describe('CollectionHeaderBar', () => {
14 | it('adds the correct class', () => {
15 | var renderedComponent = TestUtils.renderIntoDocument(
16 |
22 | );
23 |
24 | expect(TestUtils.isCompositeComponent(renderedComponent), 'should be composite').to.equal(true);
25 | expect((findDOMNode(renderedComponent) as any).className, 'should contain class').to.contain('collection-header-bar');
26 | });
27 |
28 | });
29 |
--------------------------------------------------------------------------------
/src/client/views/collection-view/collection-header-bar/collection-header-bar.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../../imports';
18 |
19 | .collection-header-bar {
20 | @extend %header-bar;
21 |
22 | height: 41px;
23 |
24 | .title > input {
25 | color: $white;
26 | border: 1px solid rgba($white, 0.5);
27 | background: rgba($white, 0.2);
28 | border-radius: 2px;
29 | margin-top: -8px;
30 | padding: 4px 6px;
31 | cursor: text;
32 | width: 300px;
33 | font-size: 15px;
34 |
35 | &::selection {
36 | background: darken($brand, 10);
37 | }
38 | }
39 |
40 | .icon-button.add {
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/client/views/collection-view/collection-view.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .collection-view {
20 | @include unpin-full(0, 0, 0, 0);
21 |
22 | .main-panel {
23 | @include unpin-full(40px, 0, 0, 0);
24 | overflow: auto;
25 | }
26 |
27 | .collection-items {
28 | display: flex;
29 | width: 80%;
30 | margin: 0 auto;
31 | flex-wrap: wrap;
32 |
33 | .collection-tile-card {
34 | flex: 1 0;
35 |
36 | flex-basis: 50%;
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/client/views/cube-view/cube-header-bar/cube-header-bar.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../../imports';
18 |
19 | .cube-header-bar {
20 | @extend %header-bar;
21 |
22 | .refreshing svg {
23 | animation-name: rotate;
24 | animation-duration: 1s;
25 |
26 | @keyframes rotate {
27 | from { transform: rotate(0deg); }
28 | to { transform: rotate(360deg); }
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/client/views/cube-view/supervised-cube-header-bar/supervised-cube-header-bar.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../../imports';
18 |
19 | .supervised-cube-header-bar {
20 | @extend %header-bar;
21 |
22 | .left-bar .title {
23 | cursor: default;
24 | font-size: 14px;
25 | margin-top: 14px;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/client/views/home-view/home-header-bar/home-header-bar.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../../imports';
18 |
19 | .home-header-bar {
20 | @extend %header-bar;
21 | }
22 |
--------------------------------------------------------------------------------
/src/client/views/link-view/link-header-bar/link-header-bar.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../../imports';
18 |
19 | .link-header-bar {
20 | @extend %header-bar;
21 | background: #208b84;
22 | }
23 |
--------------------------------------------------------------------------------
/src/client/views/no-data-view/no-data-header-bar/no-data-header-bar.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../../imports';
18 |
19 | .no-data-header-bar {
20 | @extend %header-bar;
21 | }
22 |
--------------------------------------------------------------------------------
/src/client/views/no-data-view/no-data-view.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .no-data-view {
20 | @extend %empty;
21 | @import '../../utils/styles/grid';
22 |
23 | .no-data-header-bar {
24 | @include pin-top($header-height);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/client/views/settings-view/cluster-edit/cluster-edit.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../../imports';
18 |
19 | .cluster-edit {
20 | height: 100%;
21 | }
22 |
--------------------------------------------------------------------------------
/src/client/views/settings-view/clusters/clusters.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../../imports';
18 |
19 | .clusters {
20 | height: 100%;
21 | }
22 |
23 | .empty {
24 | @extend %empty;
25 | height: 100%;
26 | }
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/src/client/views/settings-view/data-cubes/data-cubes.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../../imports';
18 |
19 | .data-cubes {
20 | height: 100%;
21 | }
22 |
23 | .empty {
24 | @extend %empty;
25 | height: 100%;
26 | }
27 |
--------------------------------------------------------------------------------
/src/client/views/settings-view/other/other.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../../imports';
18 |
19 | .other {
20 | height: 100%;
21 | }
22 |
--------------------------------------------------------------------------------
/src/client/views/settings-view/settings-header-bar/settings-header-bar.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../../imports';
18 |
19 | .settings-header-bar {
20 | @extend %header-bar;
21 | }
22 |
--------------------------------------------------------------------------------
/src/client/views/settings-view/settings-view.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .settings-view {
20 | $left-panel-width: 170px;
21 | $title-bar-height: 56px;
22 |
23 | @import './layout';
24 |
25 | form {
26 | @extend %form;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/client/visualizations/base-visualization/base-visualization.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .base-visualization {
20 | @include pin-full;
21 | overflow: hidden;
22 |
23 | .internals {
24 | @include pin-full;
25 | overflow: auto;
26 | }
27 |
28 | .loader,
29 | .query-error {
30 | @include pin-full;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/client/visualizations/geo/geo.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | @import '../../imports';
18 |
19 | .geo {
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/src/client/visualizations/table/_highlight-cont.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | .highlight-cont {
18 | position: absolute;
19 | left: $space-left;
20 | right: 0;
21 | top: $header-height;
22 | bottom: 0;
23 | overflow: hidden;
24 |
25 | .highlighter {
26 | right: 0;
27 | height: $row-height + 1;
28 | margin-top: -1px;
29 | border: 1px solid $hover;
30 |
31 | &::after {
32 | @include unpin-full(-1px);
33 | content: '';
34 | border: 1px dashed $highlight-border;
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/common/manifests/geo/geo.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import { Splits, DataCube, SplitCombine, Colors, Dimension } from '../../models/index';
18 | import { Manifest, Resolve } from '../../models/manifest/manifest';
19 |
20 | function handleCircumstance(dataCube: DataCube, splits: Splits, colors: Colors, current: boolean): Resolve {
21 | return Resolve.manual(0, 'The Geo visualization is not ready, please select another visualization.', []);
22 | }
23 |
24 | export const GEO_MANIFEST = new Manifest(
25 | 'geo',
26 | 'Geo',
27 | handleCircumstance
28 | );
29 |
--------------------------------------------------------------------------------
/src/common/manifests/index.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import { Manifest } from '../models/manifest/manifest';
18 |
19 | import { TOTALS_MANIFEST } from './totals/totals';
20 | import { TABLE_MANIFEST } from './table/table';
21 | import { LINE_CHART_MANIFEST } from './line-chart/line-chart';
22 | import { BAR_CHART_MANIFEST } from './bar-chart/bar-chart';
23 | import { GEO_MANIFEST } from './geo/geo';
24 |
25 | export const MANIFESTS: Manifest[] = [
26 | TOTALS_MANIFEST,
27 | TABLE_MANIFEST,
28 | LINE_CHART_MANIFEST,
29 | BAR_CHART_MANIFEST,
30 | GEO_MANIFEST
31 | ];
32 |
--------------------------------------------------------------------------------
/src/common/manifests/totals/totals.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import { Splits, DataCube, SplitCombine, Colors, Dimension } from '../../models/index';
18 | import { Manifest, Resolve } from '../../models/manifest/manifest';
19 |
20 | function handleCircumstance(dataCube: DataCube, splits: Splits, colors: Colors, current: boolean): Resolve {
21 | if (!splits.length()) return Resolve.ready(10);
22 | return Resolve.automatic(3, { splits: Splits.EMPTY });
23 | }
24 |
25 | export const TOTALS_MANIFEST = new Manifest(
26 | 'totals',
27 | 'Totals',
28 | handleCircumstance,
29 | 'multi'
30 | );
31 |
--------------------------------------------------------------------------------
/src/common/models/collection/collection.mocha.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import { expect } from 'chai';
18 | import { testImmutableClass } from 'immutable-class-tester';
19 |
20 | import { CollectionMock } from './collection.mock';
21 | import { Collection } from './collection';
22 |
23 | describe('Collection', () => {
24 | var context = CollectionMock.getContext();
25 |
26 | it('is an immutable class', () => {
27 | testImmutableClass(Collection, [
28 | CollectionMock.testOneOnlyJS(),
29 | CollectionMock.testOneTwoJS()
30 | ], { context });
31 | });
32 |
33 | });
34 |
--------------------------------------------------------------------------------
/src/common/models/device/device.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | export type DeviceSize = 'small' | 'medium' | 'large';
18 |
19 | export class Device {
20 | static getSize(): DeviceSize {
21 | if (window.innerWidth <= 1080) return 'small';
22 | if (window.innerWidth <= 1250) return 'medium';
23 |
24 | return 'large';
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/common/models/drag-position/drag-position.mocha.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import { expect } from 'chai';
18 | import { testImmutableClass } from 'immutable-class-tester';
19 |
20 | import { $, Expression } from 'plywood';
21 | import { DragPosition } from './drag-position';
22 |
23 | describe('DragPosition', () => {
24 | it('is an immutable class', () => {
25 | testImmutableClass(DragPosition, [
26 | {
27 | insert: 0
28 | },
29 | {
30 | insert: 2
31 | },
32 | {
33 | replace: 0
34 | },
35 | {
36 | replace: 1
37 | }
38 | ]);
39 | });
40 |
41 | });
42 |
--------------------------------------------------------------------------------
/src/common/models/list-item/list-item.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | export interface ListItem {
18 | label: string;
19 | value: any;
20 | }
21 |
--------------------------------------------------------------------------------
/src/common/models/mocks.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | export * from './essence/essence.mock';
18 | export * from './timekeeper/timekeeper.mock';
19 | export * from './dimension/dimension.mock';
20 | export * from './data-cube/data-cube.mock';
21 | export * from './stage/stage.mock';
22 | export * from './sort-on/sort-on.mock';
23 |
--------------------------------------------------------------------------------
/src/common/models/split-combine/split-combine.mock.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | export class SplitCombineMock {
18 | public static get TIME_JS() {
19 | return {
20 | expression: { op: 'ref', name: 'time' },
21 | sortAction: {
22 | action: 'sort',
23 | direction: 'ascending',
24 | expression: {
25 | op: 'ref',
26 | name: 'time'
27 | }
28 | },
29 | limitAction: {
30 | action: 'limit',
31 | limit: 2
32 | }
33 | };
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/common/models/stage/stage.mocha.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import { expect } from 'chai';
18 | import { testImmutableClass } from 'immutable-class-tester';
19 |
20 | import { $, Expression } from 'plywood';
21 | import { Stage, StageJS } from './stage';
22 | import { StageMock } from './stage.mock';
23 |
24 | describe('Stage', () => {
25 | it('is an immutable class', () => {
26 | testImmutableClass(Stage, [
27 | StageMock.DEFAULT_A_JS,
28 | StageMock.DEFAULT_B_JS,
29 | StageMock.DEFAULT_C_JS
30 | ]);
31 | });
32 |
33 | });
34 |
--------------------------------------------------------------------------------
/src/common/models/timekeeper/timekeeper.mocha.ts:
--------------------------------------------------------------------------------
1 | import { expect } from 'chai';
2 | import { testImmutableClass } from 'immutable-class-tester';
3 |
4 | import { Timekeeper } from './timekeeper';
5 |
6 | describe('Timekeeper', () => {
7 | it('is an immutable class', () => {
8 | testImmutableClass(Timekeeper, [
9 | {
10 | timeTags: []
11 | },
12 | {
13 | timeTags: [
14 | { name: 'lol', time: new Date('2016-01-01T01:02:03Z'), updated: new Date('2016-01-01T01:02:03Z') }
15 | ]
16 | },
17 | {
18 | timeTags: [
19 | { name: 'lol', time: new Date('2016-01-01T01:02:03Z'), updated: new Date('2016-01-01T01:02:03Z') }
20 | ],
21 | nowOverride: new Date('2016-01-01T01:02:03Z')
22 | }
23 | ]);
24 | });
25 |
26 | it('works with now', () => {
27 | var timekeeper = Timekeeper.fromJS({
28 | timeTags: [],
29 | nowOverride: new Date('2016-01-01T01:02:03Z')
30 | });
31 |
32 | expect(timekeeper.now()).to.deep.equal(new Date('2016-01-01T01:02:03Z'));
33 | });
34 |
35 | });
36 |
--------------------------------------------------------------------------------
/src/common/models/timekeeper/timekeeper.mock.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import { Timekeeper, TimekeeperJS } from './timekeeper';
18 |
19 | export class TimekeeperMock {
20 | static fixedJS(): TimekeeperJS {
21 | return {
22 | timeTags: [],
23 | nowOverride: new Date('2016-08-08T08:08:08Z')
24 | };
25 | }
26 |
27 | static fixed() {
28 | return Timekeeper.fromJS(TimekeeperMock.fixedJS());
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/common/models/user/user.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | export interface User {
18 | id: string;
19 | email: string;
20 | displayName: string;
21 | allow: Lookup;
22 | }
23 |
--------------------------------------------------------------------------------
/src/common/models/view-supervisor/view-supervisor.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import { Essence } from '../index';
18 |
19 | export interface ViewSupervisor {
20 | cancel: () => void;
21 |
22 | getConfirmationModal?: (newEssence: Essence) => JSX.Element;
23 | save?: (newEssence: Essence) => void;
24 |
25 | title?: string;
26 |
27 | saveLabel?: string;
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/src/common/utils/array/array.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | export function move(array: any[], oldIndex: number, newIndex: number) {
18 | array.splice(newIndex, 0, array.splice(oldIndex, 1)[0]);
19 | }
20 |
21 | export function indexByAttribute(array: any[], key: string, value: string): any {
22 | if (!array || !array.length) return -1;
23 |
24 | const n = array.length;
25 | for (let i = 0; i < n; i++) {
26 | if (array[i][key] === value) return i;
27 | }
28 |
29 | return -1;
30 | }
31 |
--------------------------------------------------------------------------------
/src/common/utils/index.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | export * from './object/object';
18 | export * from './formatter/formatter';
19 | export * from './general/general';
20 | export * from './parser/parser';
21 | export * from './time/time';
22 | export * from './immutable-utils/immutable-utils';
23 | export * from './yaml-helper/yaml-helper';
24 |
--------------------------------------------------------------------------------
/src/common/utils/object/object.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | export function extend(source: any, target: any): any {
18 | for (let key in source) {
19 | target[key] = source[key];
20 | }
21 |
22 | return target;
23 | }
24 |
--------------------------------------------------------------------------------
/src/common/utils/test-utils/ensure-timezones.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | var { WallTime } = require('chronoshift');
18 | if (!WallTime.rules) {
19 | var tzData = require("chronoshift/lib/walltime/walltime-data.js");
20 | WallTime.init(tzData.rules, tzData.zones);
21 | }
22 |
--------------------------------------------------------------------------------
/src/common/utils/test-utils/index.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import './ensure-timezones';
18 |
--------------------------------------------------------------------------------
/src/server/models/index.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | export * from './server-settings/server-settings';
18 | export * from './settings-location/settings-location';
19 |
--------------------------------------------------------------------------------
/src/server/models/settings-location/settings-location.mocha.ts:
--------------------------------------------------------------------------------
1 | import { expect } from 'chai';
2 | import { testImmutableClass } from 'immutable-class-tester';
3 |
4 | import { SettingsLocation } from './settings-location';
5 |
6 | describe('SettingsLocation', () => {
7 | it('is an immutable class', () => {
8 | testImmutableClass(SettingsLocation, [
9 | {
10 | location: 'file',
11 | uri: '../private/lol.yaml'
12 | },
13 | {
14 | location: 'mysql',
15 | uri: 'mysql://root:@192.168.99.100:3306/datazoo'
16 | },
17 | {
18 | location: 'mysql',
19 | uri: 'mysql://root:@192.168.99.100:3306/datazoo',
20 | table: 'pivot_state'
21 | }
22 | ]);
23 | });
24 |
25 | describe('gets the right format', () => {
26 | it('gets yaml', () => {
27 | var settingsLocation = SettingsLocation.fromJS({
28 | location: 'file',
29 | uri: '../private/lol.yaml'
30 | });
31 |
32 | expect(settingsLocation.getFormat()).to.equal('yaml');
33 | });
34 |
35 | });
36 |
37 | });
38 |
--------------------------------------------------------------------------------
/src/server/routes/error/error.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import { Router, Request, Response } from 'express';
18 |
19 | var router = Router();
20 |
21 | router.post('/', (req: Request, res: Response) => {
22 | var message = req.body.message;
23 | if (!message || typeof message !== 'string') {
24 | res.status(400).send({
25 | error: 'Error must have a message'
26 | });
27 | } else {
28 | console.error(`Client Error: ${JSON.stringify(req.body)}`);
29 | res.send(`Error logged @ ${new Date().toISOString()}`);
30 | }
31 | });
32 |
33 | export = router;
34 |
--------------------------------------------------------------------------------
/src/server/routes/health/health.mocha.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import * as express from 'express';
18 | import * as supertest from 'supertest';
19 |
20 | import * as healthRouter from './health';
21 |
22 | var app = express();
23 |
24 | app.use('/', healthRouter);
25 |
26 | describe('health router', () => {
27 | it('gets a 200', (testComplete) => {
28 | supertest(app)
29 | .get('/')
30 | .expect(200, testComplete);
31 | });
32 |
33 | });
34 |
--------------------------------------------------------------------------------
/src/server/routes/health/health.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import { Router, Request, Response } from 'express';
18 |
19 | var router = Router();
20 |
21 | router.get('/', (req: Request, res: Response) => {
22 | res.send(`I am healthy @ ${new Date().toISOString()}`);
23 | });
24 |
25 | export = router;
26 |
--------------------------------------------------------------------------------
/src/server/utils/file/file.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import * as fs from 'fs';
18 | import * as yaml from 'js-yaml';
19 |
20 | export function loadFileSync(filepath: string, postProcess: string = null): any {
21 | var fileData = fs.readFileSync(filepath, 'utf-8');
22 | if (postProcess === 'json') {
23 | fileData = JSON.parse(fileData);
24 | } else if (postProcess === 'yaml') {
25 | fileData = yaml.safeLoad(fileData);
26 | }
27 |
28 | return fileData;
29 | }
30 |
--------------------------------------------------------------------------------
/src/server/utils/general/general.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | import * as Q from 'q';
18 | import { Request } from 'express';
19 | import { User } from '../../../common/models/index';
20 | import { GetSettingsOptions, FullSettings } from '../settings-manager/settings-manager';
21 |
22 | export interface PivotRequest extends Request {
23 | version: string;
24 | stateful: boolean;
25 | user: User;
26 | getFullSettings(opts?: GetSettingsOptions): Q.Promise;
27 | }
28 |
--------------------------------------------------------------------------------
/src/server/utils/index.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | export * from './requester/requester';
18 | export * from './settings-store/settings-store';
19 | export * from './file/file';
20 | export * from './general/general';
21 | export * from './settings-manager/settings-manager';
22 | export * from './updater/updater';
23 |
--------------------------------------------------------------------------------
/test/README.md:
--------------------------------------------------------------------------------
1 | # Tests
2 |
3 | These are end to end tests that run Pivot as a total black box. They happen to be written in JS
4 |
--------------------------------------------------------------------------------
/test/configs/duplicate-measure-dimension-name.yaml:
--------------------------------------------------------------------------------
1 | clusters:
2 | - name: druid
3 | type: druid
4 | host: dm
5 | timeout: 30000
6 |
7 | dataCubes:
8 | - name: wiki
9 | title: Wikipedia Edits
10 | engine: druid
11 | source: wikipedia
12 |
13 | dimensions:
14 | - name: language
15 | expression: $language
16 |
17 | measures:
18 | - name: language
19 |
--------------------------------------------------------------------------------
/test/configs/inline-vars.yaml:
--------------------------------------------------------------------------------
1 | dataCubes:
2 | - name: "%{DS_NAME}%"
3 | title: "%{DS_TITLE}%"
4 | engine: native
5 | source: "%{DS_SOURCE}%"
6 |
--------------------------------------------------------------------------------
/test/configs/list-refresh-on-load-datasource.yaml:
--------------------------------------------------------------------------------
1 | clusters:
2 | - name: druid
3 | type: druid
4 | host: "%{DRUID_HOST}%"
5 | version: 0.9.1
6 | sourceListRefreshOnLoad: true
7 |
8 | dataCubes:
9 | - name: wiki
10 | title: Wikipedia Edits
11 | engine: druid
12 | source: wikipedia
13 |
14 | dimensions:
15 | - name: channel
16 | expression: $channel
17 |
18 | measures:
19 | - name: count
20 |
--------------------------------------------------------------------------------
/test/configs/one-little-datasource.yaml:
--------------------------------------------------------------------------------
1 | clusters:
2 | - name: druid
3 | type: druid
4 | host: "%{DRUID_HOST}%"
5 | timeout: 30000
6 |
7 | dataCubes:
8 | - name: wiki
9 | title: Wikipedia Edits
10 | engine: druid
11 | source: wikipedia
12 |
13 | dimensions:
14 | - name: language
15 | expression: $language
16 |
17 | measures:
18 | - name: count
19 |
--------------------------------------------------------------------------------
/test/configs/reintrospect-on-load-datasource.yaml:
--------------------------------------------------------------------------------
1 | clusters:
2 | - name: druid
3 | type: druid
4 | host: "%{DRUID_HOST}%"
5 | version: 0.9.1
6 | sourceReintrospectOnLoad: true
7 |
8 | dataCubes:
9 | - name: wiki
10 | title: Wikipedia Edits
11 | engine: druid
12 | source: wikipedia
13 |
14 | dimensions:
15 | - name: channel
16 | expression: $channel
17 |
18 | measures:
19 | - name: count
20 |
--------------------------------------------------------------------------------
/test/configs/reintrospect-on-load.yaml:
--------------------------------------------------------------------------------
1 | clusters:
2 | - name: druid
3 | type: druid
4 | host: "%{DRUID_HOST}%"
5 | version: 0.9.1
6 | sourceReintrospectOnLoad: true
7 |
--------------------------------------------------------------------------------
/test/configs/secure.yaml:
--------------------------------------------------------------------------------
1 | trustProxy: always
2 | strictTransportSecurity: always
3 |
4 | dataCubes:
5 | - name: file
6 | clusterName: native
7 | source: ../../assets/data/wikiticker-2015-09-12-anonymous.json
8 |
--------------------------------------------------------------------------------
/test/configs/tracking-static.yaml:
--------------------------------------------------------------------------------
1 | trackingUrl: 'http://localhost:28090'
2 | trackingContext:
3 | service: pivot/test
4 | something: cool
5 |
6 | dataCubes:
7 | - name: wiki
8 | title: Wikipedia Static
9 | clusterName: native
10 | source: ../../assets/data/wikiticker-2015-09-12-sampled.json
11 | timeAttribute: time
12 | defaultDuration: P1D
13 |
14 | introspection: autofill-all
15 |
16 | dimensions:
17 | - name: time
18 | type: TIME
19 | kind: time
20 | formula: $time
21 |
22 | measures:
23 |
24 | - name: count
25 | title: Rows
26 | formula: $main.count()
27 |
--------------------------------------------------------------------------------
/test/configs/two-little-datasources.yaml:
--------------------------------------------------------------------------------
1 | clusters:
2 | - name: druid
3 | type: druid
4 | host: "%{DRUID_HOST}%"
5 | timeout: 30000
6 | sourceListRefreshOnLoad: true
7 | sourceReintrospectOnLoad: true
8 |
9 | dataCubes:
10 | - name: wiki
11 | title: Wikipedia Edits
12 | engine: druid
13 | source: wikipedia
14 |
15 | dimensions:
16 | - name: language
17 | expression: $language
18 |
19 | measures:
20 | - name: count
21 |
22 |
23 | - name: twitter
24 | title: Twitter
25 | engine: druid
26 | source: twitter
27 |
28 | dimensions:
29 | - name: tweet
30 | expression: $tweet
31 |
32 | measures:
33 | - name: count
34 |
--------------------------------------------------------------------------------
/test/utils/basic-string.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | const Expression = require('plywood').Expression;
18 |
19 | function basicString(thing) {
20 | return thing.name + ' ~ ' + thing.formula;
21 | }
22 |
23 | module.exports = basicString;
24 |
--------------------------------------------------------------------------------
/test/utils/extend.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | function extend(obj1, obj2) {
18 | var newObj = {};
19 | for (var k in obj1) newObj[k] = obj1[k];
20 | for (var k in obj2) newObj[k] = obj2[k];
21 | return newObj;
22 | }
23 |
24 | module.exports = extend;
25 |
--------------------------------------------------------------------------------
/test/utils/extract-config.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 Imply Data, Inc.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | function extractConfig(text) {
18 | var a = '';
20 | var ai = text.indexOf(a);
21 | var bi = text.indexOf(b);
22 | if (ai < 0 || bi < 0) return null;
23 | return JSON.parse(text.substring(ai + a.length - 1, bi + 1));
24 | }
25 |
26 | module.exports = extractConfig;
27 |
--------------------------------------------------------------------------------
/travis-test:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 |
3 | if grep -rq 'describe\.only' ./src
4 | then
5 | echo "describe.only found. Please update your test"
6 | exit 1
7 | fi
8 |
9 | if grep -rq 'it\.only' ./src
10 | then
11 | echo "it.only found. Please update your test"
12 | exit 1
13 | fi
14 |
15 | if grep -rq '\.\./client/' ./src/common
16 | then
17 | echo "'../client' reference found in common. Please update your code"
18 | exit 1
19 | fi
20 |
21 | if grep -rq '\.\./server/' ./src/common
22 | then
23 | echo "'../server' reference found in common. Please update your code"
24 | exit 1
25 | fi
26 |
27 | if grep -rq 'fsevents' ./npm-shrinkwrap.json
28 | then
29 | echo "'fsevents' reference found in npm-shrinkwrap.json. Please fix"
30 | exit 1
31 | fi
32 |
33 | export DO_LIB_CHECK=1
34 | gulp all
35 |
36 | node_modules/.bin/mocha \
37 | build/**/*.mocha.js \
38 | test/basic \
39 | test/simulate \
40 | ;
41 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "noImplicitAny": true,
4 | "noEmitOnError": true,
5 | "declaration": true,
6 | "removeComments": true,
7 | "noFallthroughCasesInSwitch": true,
8 | "noImplicitReturns": true,
9 | "strictNullChecks": false,
10 | "skipLibCheck": true,
11 | "target": "es5",
12 | "module": "commonjs",
13 | "rootDir": "src",
14 | "outDir": "build",
15 | "moduleResolution": "node",
16 | "jsx": "react"
17 | },
18 | "include": [
19 | "src/**/*.ts",
20 | "src/**/*.tsx",
21 | "typings/**/*.d.ts"
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------
/typings/assertion-error/assertion-error.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for assertion-error 1.0.0
2 | // Project: https://github.com/chaijs/assertion-error
3 | // Definitions by: Bart van der Schoor
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | declare module 'assertion-error' {
7 | class AssertionError implements Error {
8 | constructor(message: string, props?: any, ssf?: Function);
9 | name: string;
10 | message: string;
11 | showDiff: boolean;
12 | stack: string;
13 | }
14 | export = AssertionError;
15 | }
16 |
--------------------------------------------------------------------------------
/typings/browser-filesaver/browser-filesaver.d.ts:
--------------------------------------------------------------------------------
1 | declare module "browser-filesaver" {
2 | var p: any;
3 | export = p;
4 | }
5 |
--------------------------------------------------------------------------------
/typings/compression/compression.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for compression
2 | // Project: https://github.com/expressjs/compression
3 | // Definitions by: Santi Albo
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | declare module "compression" {
7 | import express = require('express');
8 |
9 | module e {
10 | interface CompressionOptions {
11 | threshold?: number;
12 | filter?: Function;
13 | }
14 | }
15 |
16 | function e(options?: e.CompressionOptions): express.RequestHandler;
17 | export = e;
18 | }
--------------------------------------------------------------------------------
/typings/debug/debug.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for debug
2 | // Project: https://github.com/visionmedia/debug
3 | // Definitions by: Seon-Wook Park
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | declare module "debug" {
7 |
8 | function d(namespace: string): d.Debugger;
9 |
10 | module d {
11 | export var log: Function;
12 |
13 | function enable(namespaces: string): void;
14 | function disable(): void;
15 |
16 | function enabled(namespace: string): boolean;
17 |
18 | export interface Debugger {
19 | (formatter: any, ...args: any[]): void;
20 |
21 | enabled: boolean;
22 | log: Function;
23 | namespace: string;
24 | }
25 | }
26 |
27 | export = d;
28 |
29 | }
30 |
31 |
--------------------------------------------------------------------------------
/typings/form-data/form-data.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for form-data
2 | // Project: https://github.com/felixge/node-form-data
3 | // Definitions by: Carlos Ballesteros Velasco
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | // Imported from: https://github.com/soywiz/typescript-node-definitions/form-data.d.ts
7 |
8 | declare module "form-data" {
9 | export class FormData {
10 | append(key: string, value: any): FormData;
11 | getHeaders(): Object;
12 | // TODO expand pipe
13 | pipe(to: any): any;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/typings/hsts.d.ts:
--------------------------------------------------------------------------------
1 | declare module "hsts" {
2 | var p: any;
3 | export = p;
4 | }
5 |
--------------------------------------------------------------------------------
/typings/immutable.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/typings/mime/mime.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for mime
2 | // Project: https://github.com/broofa/node-mime
3 | // Definitions by: Jeff Goddard
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | // Imported from: https://github.com/soywiz/typescript-node-definitions/mime.d.ts
7 |
8 | declare module "mime" {
9 | export function lookup(path: string): string;
10 | export function extension(mime: string): string;
11 | export function load(filepath: string): void;
12 | export function define(mimes: Object): void;
13 |
14 | interface Charsets {
15 | lookup(mime: string): string;
16 | }
17 |
18 | export var charsets: Charsets;
19 | }
20 |
--------------------------------------------------------------------------------
/typings/nopt/nopt.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for nopt 3.0.1
2 | // Project: https://github.com/npm/nopt
3 | // Definitions by: jbondc
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | declare module "nopt" {
7 |
8 | interface CommandData {
9 | [key: string]: string
10 | }
11 |
12 | interface TypeDefs {
13 | [key: string]: TypeInfo
14 | }
15 |
16 | interface TypeInfo {
17 | type: Object
18 | validate: (data: CommandData, k: string, val: string) => boolean
19 | }
20 |
21 | module nopt {
22 | export function clean(data: CommandData, types: FlagTypeMap, typeDefs?: TypeDefs): string
23 | export var typeDefs: TypeDefs
24 | }
25 |
26 | interface FlagTypeMap {
27 | [k: string]: Object
28 | }
29 |
30 | interface ShortFlags {
31 | [k: string]: string[]|string
32 | }
33 |
34 | function nopt(types: FlagTypeMap, shorthands?: ShortFlags, args?: string[], slice?: number): OptionsParsed
35 |
36 | interface OptionsParsed {
37 | [k: string]: any
38 | argv: {
39 | remain: string[]
40 | cooked: string[]
41 | original: string[]
42 | }
43 | }
44 |
45 | export = nopt
46 | }
--------------------------------------------------------------------------------
/typings/react-addons-css-transition-group/react-addons-css-transition-group.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for React v0.13.3
2 | // Project: http://facebook.github.io/react/
3 | // Definitions by: Vadim
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | declare module "react-addons-css-transition-group" {
7 | var v: any;
8 | export = v;
9 | }
10 |
--------------------------------------------------------------------------------
/typings/react-addons-test-utils/react-addons-test-utils.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for React v0.13.3
2 | // Project: http://facebook.github.io/react/
3 | // Definitions by: Vadim
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | declare module "react-addons-test-utils" {
7 | var v: any;
8 | export = v;
9 | }
10 |
--------------------------------------------------------------------------------
/typings/require.d.ts:
--------------------------------------------------------------------------------
1 | // from: https://github.com/TypeStrong/ts-loader/issues/146
2 | // require in webpack clashes with NodeRequire so extending it here
3 |
4 | interface NodeRequire {
5 | ensure: (paths: string[], callback: (require: (path: string) => any) => void, name?: string) => void;
6 | }
--------------------------------------------------------------------------------