108 lines
3.5 KiB
JavaScript
108 lines
3.5 KiB
JavaScript
|
const Polyglot = require('node-polyglot');
|
||
|
const Locale = require('locale/index');
|
||
|
|
||
|
const ACTIVE_LOCALE = window.ACTIVE_LOCALE || 'en';
|
||
|
const polyglot = new Polyglot({
|
||
|
locale: ACTIVE_LOCALE, // Needed for pluralize behaviour
|
||
|
phrases: Locale[ACTIVE_LOCALE]
|
||
|
});
|
||
|
window._t = polyglot.t.bind(polyglot);
|
||
|
|
||
|
const $ = require('jquery');
|
||
|
const _ = require('underscore');
|
||
|
const Backbone = require('backbone');
|
||
|
require('dashboard/data/backbone/sync-options');
|
||
|
const UserModel = require('dashboard/data/user-model');
|
||
|
const OrganizationModel = require('dashboard/data/organization-model');
|
||
|
const ConfigModel = require('dashboard/data/config-model');
|
||
|
const DashboardHeaderView = require('dashboard/components/dashboard-header-view');
|
||
|
const HeaderViewModel = require('dashboard/views/api-keys/header-view-model');
|
||
|
const UpgradeMessageView = require('dashboard/components/upgrade-message-view');
|
||
|
const ApiKeysPageView = require('dashboard/views/api-keys/api-keys-page-view');
|
||
|
const ApiKeysFormView = require('dashboard/views/api-keys/api-keys-form-view');
|
||
|
const StackLayoutView = require('builder/components/stack-layout/stack-layout-view');
|
||
|
const UserTablesModel = require('dashboard/data/user-tables-model');
|
||
|
const getObjectValue = require('deep-insights/util/get-object-value');
|
||
|
|
||
|
const ForbiddenAction = require('builder/data/backbone/network-interceptors/interceptors/forbidden-403');
|
||
|
const NetworkResponseInterceptor = require('builder/data/backbone/network-interceptors/interceptor');
|
||
|
NetworkResponseInterceptor.addURLPattern('api/v3');
|
||
|
NetworkResponseInterceptor.addErrorInterceptor(ForbiddenAction());
|
||
|
NetworkResponseInterceptor.start();
|
||
|
|
||
|
const configModel = new ConfigModel(
|
||
|
_.defaults(
|
||
|
{
|
||
|
base_url: window.base_url
|
||
|
},
|
||
|
window.config
|
||
|
)
|
||
|
);
|
||
|
|
||
|
if (window.trackJs) {
|
||
|
window.trackJs.configure({
|
||
|
userId: window.user_data.username
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Entry point for the new keys, bootstraps all dependency models and application.
|
||
|
*/
|
||
|
$(function () {
|
||
|
const userModel = new UserModel(window.user_data, { configModel });
|
||
|
// User has an organization
|
||
|
if (window.user_data.organization) {
|
||
|
const organization = new OrganizationModel(window.user_data, {
|
||
|
currentUserId: window.user_data.id,
|
||
|
configModel
|
||
|
});
|
||
|
organization.owner = new UserModel(getObjectValue(window.user_data, 'organization.owner'));
|
||
|
userModel.setOrganization(organization);
|
||
|
}
|
||
|
|
||
|
const headerView = new DashboardHeaderView({
|
||
|
el: $('#header'), // pre-rendered in DOM by Rails app
|
||
|
model: userModel,
|
||
|
configModel: configModel,
|
||
|
viewModel: new HeaderViewModel()
|
||
|
});
|
||
|
headerView.render();
|
||
|
|
||
|
const upgradeMessage = new UpgradeMessageView({
|
||
|
configModel: configModel,
|
||
|
userModel: userModel
|
||
|
});
|
||
|
|
||
|
$('#header').after(upgradeMessage.render().el);
|
||
|
|
||
|
const userTablesModel = new UserTablesModel(null, { userModel });
|
||
|
|
||
|
// Prefetch user tables for new api key form
|
||
|
userTablesModel.fetch();
|
||
|
|
||
|
// Debug
|
||
|
window.userTablesModel = userTablesModel;
|
||
|
|
||
|
const stackLayoutCollection = new Backbone.Collection([
|
||
|
{
|
||
|
createStackView: (stackLayoutModel) =>
|
||
|
new ApiKeysPageView({ userModel, stackLayoutModel, configModel })
|
||
|
},
|
||
|
{
|
||
|
createStackView: (stackLayoutModel, [apiKeyModel, ...other]) =>
|
||
|
new ApiKeysFormView({
|
||
|
stackLayoutModel,
|
||
|
apiKeyModel,
|
||
|
userTablesModel,
|
||
|
userModel
|
||
|
})
|
||
|
}
|
||
|
]);
|
||
|
|
||
|
const stackLayout = new StackLayoutView({
|
||
|
collection: stackLayoutCollection
|
||
|
});
|
||
|
|
||
|
$('.js-api-keys-new').append(stackLayout.render().el);
|
||
|
});
|